aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-09-29 18:44:50 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-09-30 08:13:32 +0000
commit23d6f632981c1e4b02336dea4ee8fc9ac2379ec1 (patch)
treee4582d124bd7c2bcc3417759284148f21446e483 /src/main/java/com
parent13a73e420acf83d888e86dea4d726f5c59587858 (diff)
Export idl_import_root to Android Studio, so that we know the packages of new AIDL files in relation to their location.
-- MOS_MIGRATED_REVID=134687843
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdlHelper.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkApiProvider.java9
5 files changed, 36 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
index 1b747b9f9d..a6c84893e5 100644
--- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
@@ -522,6 +522,10 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
builder.setJavaPackage(androidIdeInfoProvider.getJavaPackage());
}
+ String idlImportRoot = androidIdeInfoProvider.getIdlImportRoot();
+ if (idlImportRoot != null) {
+ builder.setIdlImportRoot(idlImportRoot);
+ }
boolean hasIdlSources = !androidIdeInfoProvider.getIdlSrcs().isEmpty();
builder.setHasIdlSources(hasIdlSources);
if (hasIdlSources) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
index 82885b6915..b99ee50373 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
@@ -260,6 +260,7 @@ public class AndroidCommon {
.setIdlSourceJar(idlHelper.getIdlSourceJar())
.setResourceJar(resourceJar)
.setAar(aar)
+ .addIdlImportRoot(idlHelper.getIdlImportRoot())
.addIdlParcelables(idlHelper.getIdlParcelables())
.addIdlSrcs(idlHelper.getIdlSources())
.addIdlGeneratedJavaFiles(idlHelper.getIdlGeneratedJavaSources())
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java
index 2f0836dea3..c73eb96137 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java
@@ -131,6 +131,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider {
private Artifact idlSourceJar = null;
private OutputJar resourceJar = null;
private String javaPackage = null;
+ private String idlImportRoot = null;
private final Set<SourceDirectory> resourceDirs = new LinkedHashSet<>();
private final Set<SourceDirectory> assetDirs = new LinkedHashSet<>();
private final Set<SourceDirectory> idlDirs = new LinkedHashSet<>();
@@ -143,6 +144,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider {
public AndroidIdeInfoProvider build() {
return new AndroidIdeInfoProvider(
javaPackage,
+ idlImportRoot,
manifest,
generatedManifest,
apk,
@@ -209,6 +211,11 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider {
return this;
}
+ public Builder addIdlImportRoot(String idlImportRoot) {
+ this.idlImportRoot = idlImportRoot;
+ return this;
+ }
+
/**
* Add "idl_srcs" contents.
*/
@@ -290,6 +297,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider {
}
private final String javaPackage;
+ private final String idlImportRoot;
private final Artifact manifest;
private final Artifact generatedManifest;
private final Artifact signedApk;
@@ -307,6 +315,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider {
AndroidIdeInfoProvider(
String javaPackage,
+ String idlImportRoot,
@Nullable Artifact manifest,
@Nullable Artifact generatedManifest,
@Nullable Artifact signedApk,
@@ -322,6 +331,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider {
ImmutableCollection<Artifact> idlGeneratedJavaFiles,
ImmutableCollection<Artifact> apksUnderTest) {
this.javaPackage = javaPackage;
+ this.idlImportRoot = idlImportRoot;
this.manifest = manifest;
this.generatedManifest = generatedManifest;
this.signedApk = signedApk;
@@ -363,6 +373,11 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider {
return this.definesAndroidResources;
}
+ @Nullable
+ public String getIdlImportRoot() {
+ return idlImportRoot;
+ }
+
/** Returns the direct debug key signed apk, if there is one. */
@Nullable
public Artifact getSignedApk() {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdlHelper.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdlHelper.java
index 8a8f96349b..f27cb736a7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdlHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdlHelper.java
@@ -105,6 +105,13 @@ public class AndroidIdlHelper {
}
/**
+ * Returns the root directory under which idl_srcs and idl_parcelables are located in this rule.
+ */
+ public String getIdlImportRoot() {
+ return hasExplicitlySpecifiedIdlImportRoot(ruleContext) ? getIdlImportRoot(ruleContext) : null;
+ }
+
+ /**
* Returns the raw (non-processed) idl_srcs, not including parcelable marker files.
*/
public Collection<Artifact> getIdlSources() {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkApiProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkApiProvider.java
index 6bf1d0f177..4caceeee3b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkApiProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkApiProvider.java
@@ -170,6 +170,15 @@ public class AndroidSkylarkApiProvider extends SkylarkApiProvider {
)
public class IdlInfo {
@SkylarkCallable(
+ name = "import_root",
+ structField = true,
+ allowReturnNones = true,
+ doc = "Returns the root of IDL packages if not the java root."
+ )
+ public String getImportRoot() {
+ return getIdeInfoProvider().getIdlImportRoot();
+ }
+ @SkylarkCallable(
name = "sources",
structField = true,
doc = "Returns a list of IDL files."