Dialer: Remove the remainder of DialerVariants

Change-Id: I6ce026531f7b49c044bcc0f8763448a276a7ce5b
diff --git a/Android.mk b/Android.mk
index 1fb4981..970eba5 100644
--- a/Android.mk
+++ b/Android.mk
@@ -140,8 +140,6 @@
 
 LOCAL_SRC_FILES := \
 	$(call all-java-files-under, $(BASE_DIR)/dialer/rootcomponentgenerator) \
-        $(BASE_DIR)/dialer/inject/DialerRootComponent.java \
-        $(BASE_DIR)/dialer/inject/DialerVariant.java \
         $(BASE_DIR)/dialer/inject/HasRootComponent.java \
         $(BASE_DIR)/dialer/inject/IncludeInDialerRoot.java \
         $(BASE_DIR)/dialer/inject/RootComponentGeneratorMetadata.java
diff --git a/java/com/android/dialer/inject/DialerRootComponent.java b/java/com/android/dialer/inject/DialerRootComponent.java
deleted file mode 100644
index e508e17..0000000
--- a/java/com/android/dialer/inject/DialerRootComponent.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2018 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
- */
-
-package com.android.dialer.inject;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Annotates the place with this annotation when a RootComponent is needed.
- *
- * <p>Usually users put this annotation on application class that is root of dependencies (the last
- * thing to compile). The annotation processor will figure out what it needs to generate a variant
- * root through dependencies.
- *
- * <p>Example:
- *
- * <pre>
- * <code>
- * @DialerRootComponent(variant = DialerVariant.DIALER_AOSP)
- * public class RootDialerAosp {}
- * </code>
- * </pre>
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.SOURCE)
-public @interface DialerRootComponent {
-  DialerVariant variant();
-
-  Class<?> injectClass() default Object.class;
-}
diff --git a/java/com/android/dialer/inject/DialerVariant.java b/java/com/android/dialer/inject/DialerVariant.java
deleted file mode 100644
index 2e5794f..0000000
--- a/java/com/android/dialer/inject/DialerVariant.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2018 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
- */
-
-package com.android.dialer.inject;
-
-/** Represents all dialer variants. */
-public enum DialerVariant {
-  // AOSP Dialer variants
-  DIALER_AOSP("DialerAosp"),
-  DIALER_AOSP_ESPRESSO("DialerAospEspresso"),
-  DIALER_ROBOLECTRIC("DialerRobolectric"),
-
-
-
-  // TEST variant will be used in situations where we need create in-test application class which
-  // doesn't belong to any variants listed above
-  DIALER_TEST("DialerTest"),
-  // Just for sample code in inject/demo.
-  DIALER_DEMO("DialerDemo");
-
-  private final String variant;
-
-  DialerVariant(String variant) {
-    this.variant = variant;
-  }
-
-  @Override
-  public String toString() {
-    return variant;
-  }
-}
diff --git a/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java b/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java
deleted file mode 100644
index 8a82f86..0000000
--- a/java/com/android/dialer/rootcomponentgenerator/RootComponentGeneratingStep.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright (C) 2018 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
- */
-
-package com.android.dialer.rootcomponentgenerator;
-
-import static com.google.auto.common.AnnotationMirrors.getAnnotationValue;
-import static com.google.auto.common.MoreElements.getAnnotationMirror;
-import static com.google.auto.common.MoreElements.isAnnotationPresent;
-import static javax.tools.Diagnostic.Kind.ERROR;
-
-import com.android.dialer.inject.DialerRootComponent;
-import com.android.dialer.inject.DialerVariant;
-import com.android.dialer.inject.IncludeInDialerRoot;
-import com.android.dialer.inject.RootComponentGeneratorMetadata;
-import com.google.auto.common.BasicAnnotationProcessor.ProcessingStep;
-import com.google.auto.common.MoreElements;
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.SetMultimap;
-import com.squareup.javapoet.AnnotationSpec;
-import com.squareup.javapoet.ClassName;
-import com.squareup.javapoet.MethodSpec;
-import com.squareup.javapoet.TypeSpec;
-import dagger.Component;
-import java.lang.annotation.Annotation;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import javax.annotation.processing.ProcessingEnvironment;
-import javax.inject.Singleton;
-import javax.lang.model.element.AnnotationMirror;
-import javax.lang.model.element.Element;
-import javax.lang.model.element.Modifier;
-import javax.lang.model.element.PackageElement;
-import javax.lang.model.element.TypeElement;
-import javax.lang.model.type.TypeMirror;
-
-/**
- * Generates root component for a java type annotated with {@link DialerRootComponent}.
- *
- * <p>If users use {@link GenerateTestDaggerApp} along with RootComponentGenerator, there's an
- * optional method that they can use to inject instance in the test.
- *
- * <p>Example:
- *
- * <p>
- *
- * <pre>
- * <code>
- * @Inject SomeThing someThing;
- * @Before
- * public void setUp() {
- * ...
- * TestApplication application = (TestApplication) RuntimeEnvironment.application;
- * TestComponent component = (TestComponent) application.component();
- * component.inject(this);
- * ...
- * }
- * </code>
- * </pre>
- */
-final class RootComponentGeneratingStep implements ProcessingStep {
-
-  private final ProcessingEnvironment processingEnv;
-
-  public RootComponentGeneratingStep(ProcessingEnvironment processingEnv) {
-    this.processingEnv = processingEnv;
-  }
-
-  @Override
-  public Set<? extends Class<? extends Annotation>> annotations() {
-    return ImmutableSet.of(DialerRootComponent.class, IncludeInDialerRoot.class);
-  }
-
-  @Override
-  public Set<? extends Element> process(
-      SetMultimap<Class<? extends Annotation>, Element> elementsByAnnotation) {
-    for (Element element : elementsByAnnotation.get(DialerRootComponent.class)) {
-      // defer root components to the next round. Annotation processor cannot detect metadata files
-      // generated in the same round and the metadata is accessible in the next round.
-      if (shouldDeferRootComponent(elementsByAnnotation)) {
-        return elementsByAnnotation.get(DialerRootComponent.class);
-      } else {
-        generateRootComponent(MoreElements.asType(element));
-      }
-    }
-    return Collections.emptySet();
-  }
-
-  private boolean shouldDeferRootComponent(
-      SetMultimap<Class<? extends Annotation>, Element> elementsByAnnotation) {
-    return elementsByAnnotation.containsKey(IncludeInDialerRoot.class);
-  }
-
-  /**
-   * Generates a root component.
-   *
-   * @param rootElement the annotated type with {@link DialerRootComponent} used in annotation
-   *     processor.
-   */
-  private void generateRootComponent(TypeElement rootElement) {
-    DialerRootComponent dialerRootComponent = rootElement.getAnnotation(DialerRootComponent.class);
-    List<TypeElement> componentList = generateComponentList();
-    DialerVariant dialerVariant = dialerRootComponent.variant();
-    TypeSpec.Builder rootComponentClassBuilder =
-        TypeSpec.interfaceBuilder(dialerVariant.toString())
-            .addModifiers(Modifier.PUBLIC)
-            .addAnnotation(Singleton.class);
-    for (TypeElement componentWithSuperInterface : componentList) {
-      rootComponentClassBuilder.addSuperinterface(ClassName.get(componentWithSuperInterface));
-    }
-    AnnotationSpec.Builder componentAnnotation = AnnotationSpec.builder(Component.class);
-    rootComponentClassBuilder.addAnnotation(componentAnnotation.build());
-
-    AnnotationMirror dialerRootComponentMirror =
-        getAnnotationMirror(rootElement, DialerRootComponent.class).get();
-
-    TypeMirror annotatedTestClass =
-        (TypeMirror) getAnnotationValue(dialerRootComponentMirror, "injectClass").getValue();
-
-    rootComponentClassBuilder.addMethod(generateInjectMethod(annotatedTestClass));
-
-    TypeSpec rootComponentClass = rootComponentClassBuilder.build();
-    RootComponentUtils.writeJavaFile(
-        processingEnv, ClassName.get(rootElement).packageName(), rootComponentClass);
-  }
-
-  private List<TypeElement> generateComponentList() {
-    List<TypeElement> list = new ArrayList<>();
-    extractInfoFromMetadata(IncludeInDialerRoot.class, list::add);
-    return list;
-  }
-
-  private void extractInfoFromMetadata(
-      Class<? extends Annotation> annotation, MetadataProcessor metadataProcessor) {
-    PackageElement cachePackage =
-        processingEnv.getElementUtils().getPackageElement(RootComponentUtils.METADATA_PACKAGE_NAME);
-    if (cachePackage == null) {
-      processingEnv
-          .getMessager()
-          .printMessage(
-              ERROR,
-              "Metadata haven't been generated! do you forget to add modules "
-                  + "or components in dependency of dialer root?");
-      return;
-    }
-    for (Element element : cachePackage.getEnclosedElements()) {
-      Optional<AnnotationMirror> metadataAnnotation =
-          getAnnotationMirror(element, RootComponentGeneratorMetadata.class);
-      if (isAnnotationPresent(element, RootComponentGeneratorMetadata.class)
-          && getAnnotationValue(metadataAnnotation.get(), "tag")
-              .getValue()
-              .equals(annotation.getSimpleName())) {
-        TypeMirror annotatedClass =
-            (TypeMirror) getAnnotationValue(metadataAnnotation.get(), "annotatedClass").getValue();
-        TypeElement annotatedElement =
-            processingEnv.getElementUtils().getTypeElement(annotatedClass.toString());
-        metadataProcessor.process(annotatedElement);
-      }
-    }
-  }
-
-  private MethodSpec generateInjectMethod(TypeMirror testClassTypeMirror) {
-    return MethodSpec.methodBuilder("inject")
-        .addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
-        .returns(void.class)
-        .addParameter(ClassName.get(testClassTypeMirror), "clazz")
-        .build();
-  }
-
-  private interface MetadataProcessor {
-    void process(TypeElement typeElement);
-  }
-}
diff --git a/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java b/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java
index e5086aa..84d1961 100644
--- a/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java
+++ b/java/com/android/dialer/rootcomponentgenerator/RootComponentProcessor.java
@@ -29,7 +29,7 @@
   @Override
   protected Iterable<? extends ProcessingStep> initSteps() {
     return ImmutableList.of(
-        new MetadataGeneratingStep(processingEnv), new RootComponentGeneratingStep(processingEnv));
+        new MetadataGeneratingStep(processingEnv));
   }
 
   @Override