Cleanup a.t.TestGrouping

TestGrouping is not part of the API but is used by classes that are and
so will need to be included in the static library we ship as part of the
SDK. As that library will be built directly from the source (as opposed
to android.jar which is built from stubs) developers will be able to see
classes and methods that are hidden and so not present in the stubs.

This change makes TestGrouping and its members as inaccessible as
possible. Unused methods and fields were removed and the TestGrouping
class was simplified by passing the ClassLoader into the constructor,
initializing the classLoader, making the classLoader field final,
and removing the setClassLoader(ClassLoader) method.

Bug: 30188076
Test: make checkbuild
Change-Id: Ie0545b1a61b74cdbc78667417f360b5197e2e128
diff --git a/test-runner/src/android/test/suitebuilder/TestGrouping.java b/test-runner/src/android/test/suitebuilder/TestGrouping.java
index a2b94ff..307afb5 100644
--- a/test-runner/src/android/test/suitebuilder/TestGrouping.java
+++ b/test-runner/src/android/test/suitebuilder/TestGrouping.java
@@ -44,23 +44,23 @@
  * 
  * {@hide} Not needed for 1.0 SDK.
  */
-public class TestGrouping {
+class TestGrouping {
 
     private static final String LOG_TAG = "TestGrouping";
 
-    SortedSet<Class<? extends TestCase>> testCaseClasses;
+    private final SortedSet<Class<? extends TestCase>> testCaseClasses;
 
-    public static final Comparator<Class<? extends TestCase>> SORT_BY_SIMPLE_NAME
+    static final Comparator<Class<? extends TestCase>> SORT_BY_SIMPLE_NAME
             = new SortBySimpleName();
 
-    public static final Comparator<Class<? extends TestCase>> SORT_BY_FULLY_QUALIFIED_NAME
+    static final Comparator<Class<? extends TestCase>> SORT_BY_FULLY_QUALIFIED_NAME
             = new SortByFullyQualifiedName();
 
-    protected String firstIncludedPackage = null;
-    private ClassLoader classLoader;
+    private final ClassLoader classLoader;
 
-    public TestGrouping(Comparator<Class<? extends TestCase>> comparator) {
+    TestGrouping(Comparator<Class<? extends TestCase>> comparator, ClassLoader classLoader) {
         testCaseClasses = new TreeSet<Class<? extends TestCase>>(comparator);
+        this.classLoader = classLoader;
     }
 
     /**
@@ -77,15 +77,11 @@
         return testMethods;
     }
 
-    protected List<Method> getTestMethods(Class<? extends TestCase> testCaseClass) {
+    private List<Method> getTestMethods(Class<? extends TestCase> testCaseClass) {
         List<Method> methods = Arrays.asList(testCaseClass.getMethods());
         return select(methods, new TestMethodPredicate());
     }
 
-    SortedSet<Class<? extends TestCase>> getTestCaseClasses() {
-        return testCaseClasses;
-    }
-
     public boolean equals(Object o) {
         if (this == o) {
             return true;
@@ -110,9 +106,8 @@
      * or in a sub-package.
      *
      * @param packageNames Names of packages to add.
-     * @return The {@link TestGrouping} for method chaining.
      */
-    public TestGrouping addPackagesRecursive(String... packageNames) {
+    void addPackagesRecursive(String... packageNames) {
         for (String packageName : packageNames) {
             List<Class<? extends TestCase>> addedClasses = testCaseClassesInPackage(packageName);
             if (addedClasses.isEmpty()) {
@@ -120,11 +115,7 @@
                         + "' could not be found or has no tests");
             }
             testCaseClasses.addAll(addedClasses);
-            if (firstIncludedPackage == null) {
-                firstIncludedPackage = packageName;
-            }
         }
-        return this;
     }
 
     /**
@@ -132,21 +123,11 @@
      * specified.
      *
      * @param packageNames Names of packages to remove.
-     * @return The {@link TestGrouping} for method chaining.
      */
-    public TestGrouping removePackagesRecursive(String... packageNames) {
+    void removePackagesRecursive(String... packageNames) {
         for (String packageName : packageNames) {
             testCaseClasses.removeAll(testCaseClassesInPackage(packageName));
         }
-        return this;
-    }
-
-    /**
-     * @return The first package name passed to {@link #addPackagesRecursive(String[])}, or null
-     *         if that method was never called.
-     */
-    public String getFirstIncludedPackage() {
-        return firstIncludedPackage;
     }
 
     private List<Class<? extends TestCase>> testCaseClassesInPackage(String packageName) {
@@ -176,10 +157,6 @@
         return selectedItems;
     }
 
-    public void setClassLoader(ClassLoader classLoader) {
-        this.classLoader = classLoader;
-    }
-
     /**
      * Sort classes by their simple names (i.e. without the package prefix), using
      * their packages to sort classes with the same name.
diff --git a/test-runner/src/android/test/suitebuilder/TestSuiteBuilder.java b/test-runner/src/android/test/suitebuilder/TestSuiteBuilder.java
index cf6936b..6158e0c 100644
--- a/test-runner/src/android/test/suitebuilder/TestSuiteBuilder.java
+++ b/test-runner/src/android/test/suitebuilder/TestSuiteBuilder.java
@@ -44,8 +44,7 @@
 @Deprecated
 public class TestSuiteBuilder {
 
-    private Context context;
-    private final TestGrouping testGrouping = new TestGrouping(SORT_BY_FULLY_QUALIFIED_NAME);
+    private final TestGrouping testGrouping;
     private final Set<Predicate<TestMethod>> predicates = new HashSet<Predicate<TestMethod>>();
     private List<TestCase> testCases;
     private TestSuite rootSuite;
@@ -67,7 +66,7 @@
 
     public TestSuiteBuilder(String name, ClassLoader classLoader) {
         this.suiteName = name;
-        this.testGrouping.setClassLoader(classLoader);
+        this.testGrouping = new TestGrouping(SORT_BY_FULLY_QUALIFIED_NAME, classLoader);
         this.testCases = new ArrayList<>();
         addRequirements(REJECT_SUPPRESSED);
     }
@@ -244,15 +243,6 @@
         }
     }
 
-    /**
-     * @return the test package that represents the packages that were included for our test suite.
-     *
-     * {@hide} Not needed for 1.0 SDK.
-     */
-    protected TestGrouping getTestGrouping() {
-        return testGrouping;
-    }
-
     private boolean satisfiesAllPredicates(TestMethod test) {
         for (Predicate<TestMethod> predicate : predicates) {
             if (!predicate.apply(test)) {
diff --git a/test-runner/tests/src/android/test/suitebuilder/TestGroupingTest.java b/test-runner/tests/src/android/test/suitebuilder/TestGroupingTest.java
index f4477d1..972bfb4 100644
--- a/test-runner/tests/src/android/test/suitebuilder/TestGroupingTest.java
+++ b/test-runner/tests/src/android/test/suitebuilder/TestGroupingTest.java
@@ -30,7 +30,7 @@
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        mGrouping = new TestGrouping(TestGrouping.SORT_BY_SIMPLE_NAME);
+        mGrouping = new TestGrouping(TestGrouping.SORT_BY_SIMPLE_NAME, getClass().getClassLoader());
     }
 
     /**