Revision caca14c5f95684526f0c825721913ed932b480d6 authored by tonihei on 03 January 2019, 14:54:22 UTC, committed by Andrew Lewis on 19 February 2019, 08:56:30 UTC
Passing the player through MediaSource.prepare is only needed for the AdsLoader
and complicates other usages of MediaSource. Providing the player directly to
the AdsLoader is also in line with the usage pattern of PlayerView and other
components.

Also rename methods to start/stop to better reflect their usage.

PiperOrigin-RevId: 227682112
1 parent de39925
Raw File
javadoc_combined.gradle
// Copyright (C) 2017 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
apply from: "${buildscript.sourceFile.parentFile}/javadoc_util.gradle"

class CombinedJavadocPlugin implements Plugin<Project> {

  static final String TASK_NAME = "generateCombinedJavadoc"

  @Override
  void apply(Project project) {
    project.gradle.projectsEvaluated {
      Set<Project> libraryModules = getLibraryModules(project)
      if (!libraryModules.isEmpty()) {
        project.task(TASK_NAME, type: Javadoc) {
          description = "Generates combined Javadoc."
          title = "ExoPlayer library"
          source = libraryModules.generateJavadoc.source
          classpath = project.files([])
          destinationDir = project.file("$project.buildDir/docs/javadoc")
          options {
            links "https://docs.oracle.com/javase/7/docs/api/",
                "https://developer.android.com/reference"
            encoding = "UTF-8"
          }
          exclude "**/BuildConfig.java"
          exclude "**/R.java"
          doFirst {
            libraryModules.each { libraryModule ->
              libraryModule.android.libraryVariants.all { variant ->
                def name = variant.buildType.name
                if (name == "release") {
                  classpath +=
                      libraryModule.project.files(
                          variant.javaCompile.classpath.files,
                          libraryModule.project.android.getBootClasspath())
                }
              }
            }
          }
          doLast {
            libraryModules.each { libraryModule ->
              project.copy {
                from "${libraryModule.projectDir}/src/main/javadoc"
                into "${project.buildDir}/docs/javadoc"
              }
            }
            project.fixJavadoc()
          }
        }
      }
    }
  }

  // Returns Android library modules that declare a generateJavadoc task.
  private static Set<Project> getLibraryModules(Project project) {
    project.subprojects.findAll {
      it.plugins.findPlugin("com.android.library") &&
      it.tasks.findByName("generateJavadoc")
    }
  }

}

apply plugin: CombinedJavadocPlugin
back to top