Skylark: Expose runfiles provider to targets

--
MOS_MIGRATED_REVID=96606040
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java
index 0650a12..3bfdd27 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java
@@ -38,6 +38,12 @@
 
   private final NestedSet<PackageSpecification> visibility;
 
+  // Accessors for Skylark
+  private static final String DATA_RUNFILES_FIELD = "data_runfiles";
+  private static final String DEFAULT_RUNFILES_FIELD = "default_runfiles";
+  private static final String LABEL_FIELD = "label";
+  private static final String FILES_FIELD = "files";
+
   AbstractConfiguredTarget(Target target,
                            BuildConfiguration configuration) {
     this.target = target;
@@ -88,15 +94,22 @@
 
   @Override
   public Object getValue(String name) {
-    if (name.equals("label")) {
-      return getLabel();
-    } else if (name.equals("files")) {
-      // A shortcut for files to build in Skylark. FileConfiguredTarget and RunleConfiguredTarget
-      // always has FileProvider and Error- and PackageGroupConfiguredTarget-s shouldn't be
-      // accessible in Skylark.
-      return SkylarkNestedSet.of(Artifact.class, getProvider(FileProvider.class).getFilesToBuild());
+    switch (name) {
+      case LABEL_FIELD:
+        return getLabel();
+      case FILES_FIELD:
+        // A shortcut for files to build in Skylark. FileConfiguredTarget and RunleConfiguredTarget
+        // always has FileProvider and Error- and PackageGroupConfiguredTarget-s shouldn't be
+        // accessible in Skylark.
+        return SkylarkNestedSet.of(
+            Artifact.class, getProvider(FileProvider.class).getFilesToBuild());
+      case DEFAULT_RUNFILES_FIELD:
+        return RunfilesProvider.DEFAULT_RUNFILES.apply(this);
+      case DATA_RUNFILES_FIELD:
+        return RunfilesProvider.DATA_RUNFILES.apply(this);
+      default:
+        return get(name);
     }
-    return get(name);
   }
 
   @Override
@@ -106,6 +119,6 @@
 
   @Override
   public ImmutableCollection<String> getKeys() {
-    return ImmutableList.of("label", "files");
+    return ImmutableList.of("data_runfiles", "default_runfiles", "label", "files");
   }
 }