SearchFeatureProvider's context field is removed

SearchFeatureProvider was holding on to a context and
outlived the SettingsActivity, thus leaking the activity.
The context was passed into most methods, and thus it
makes more sense to pass it in to every method.

Bug: 33677967
Test: Run MakeSettingsRoboTests
Change-Id: Ia82f30e7e0b83587b4baeef28e81da6b8e4303fe
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index aa76517..cc203f7 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -329,7 +329,7 @@
         }
 
         MenuInflater inflater = getMenuInflater();
-        if (mSearchFeatureProvider.isEnabled()) {
+        if (mSearchFeatureProvider.isEnabled(this)) {
             mSearchFeatureProvider.setUpSearchMenu(menu, this);
             return true;
         }
@@ -405,7 +405,7 @@
         final FeatureFactory factory = FeatureFactory.getFactory(this);
 
         mDashboardFeatureProvider = factory.getDashboardFeatureProvider(this);
-        mSearchFeatureProvider = factory.getSearchFeatureProvider(this);
+        mSearchFeatureProvider = factory.getSearchFeatureProvider();
 
         // Should happen before any call to getIntent()
         getMetaData();
@@ -1097,7 +1097,7 @@
     @Deprecated
     @Override
     public boolean onQueryTextSubmit(String query) {
-        if (mSearchFeatureProvider.isEnabled()) {
+        if (mSearchFeatureProvider.isEnabled(this)) {
             return false;
         }
         mSearchQuery = query;
@@ -1109,7 +1109,7 @@
     @Override
     public boolean onQueryTextChange(String newText) {
         mSearchQuery = newText;
-        if (mSearchFeatureProvider.isEnabled() || mSearchResultsFragment == null) {
+        if (mSearchFeatureProvider.isEnabled(this) || mSearchResultsFragment == null) {
             return false;
         }
         return mSearchResultsFragment.onQueryTextChange(newText);
diff --git a/src/com/android/settings/overlay/FeatureFactory.java b/src/com/android/settings/overlay/FeatureFactory.java
index 364d5ed..0b8ee8e 100644
--- a/src/com/android/settings/overlay/FeatureFactory.java
+++ b/src/com/android/settings/overlay/FeatureFactory.java
@@ -81,7 +81,7 @@
     public abstract EnterprisePrivacyFeatureProvider getEnterprisePrivacyFeatureProvider(
             Context context);
 
-    public abstract SearchFeatureProvider getSearchFeatureProvider(Context context);
+    public abstract SearchFeatureProvider getSearchFeatureProvider();
 
     public abstract SurveyFeatureProvider getSurveyFeatureProvider(Context context);
 
diff --git a/src/com/android/settings/overlay/FeatureFactoryImpl.java b/src/com/android/settings/overlay/FeatureFactoryImpl.java
index 2aa9b34..c2d5d79 100644
--- a/src/com/android/settings/overlay/FeatureFactoryImpl.java
+++ b/src/com/android/settings/overlay/FeatureFactoryImpl.java
@@ -104,9 +104,9 @@
     }
 
     @Override
-    public SearchFeatureProvider getSearchFeatureProvider(Context context) {
+    public SearchFeatureProvider getSearchFeatureProvider() {
         if (mSearchFeatureProvider == null) {
-            mSearchFeatureProvider = new SearchFeatureProviderImpl(context);
+            mSearchFeatureProvider = new SearchFeatureProviderImpl();
         }
         return mSearchFeatureProvider;
     }
diff --git a/src/com/android/settings/search2/SearchFeatureProvider.java b/src/com/android/settings/search2/SearchFeatureProvider.java
index ad26eae..8a616a7 100644
--- a/src/com/android/settings/search2/SearchFeatureProvider.java
+++ b/src/com/android/settings/search2/SearchFeatureProvider.java
@@ -27,7 +27,7 @@
     /**
      * @return true to use the new version of search
      */
-    boolean isEnabled();
+    boolean isEnabled(Context context);
 
     /**
      * Inserts the Menu items into Settings activity.
diff --git a/src/com/android/settings/search2/SearchFeatureProviderImpl.java b/src/com/android/settings/search2/SearchFeatureProviderImpl.java
index e2d25ad..acb90b7 100644
--- a/src/com/android/settings/search2/SearchFeatureProviderImpl.java
+++ b/src/com/android/settings/search2/SearchFeatureProviderImpl.java
@@ -31,16 +31,11 @@
  * FeatureProvider for the refactored search code.
  */
 public class SearchFeatureProviderImpl implements SearchFeatureProvider {
-    protected Context mContext;
 
     private DatabaseIndexingManager mDatabaseIndexingManager;
 
-    public SearchFeatureProviderImpl(Context context) {
-        mContext = context;
-    }
-
     @Override
-    public boolean isEnabled() {
+    public boolean isEnabled(Context context) {
         return false;
     }
 
@@ -49,7 +44,7 @@
         if (menu == null || activity == null) {
             return;
         }
-        String menuTitle = mContext.getString(R.string.search_menu);
+        String menuTitle = activity.getString(R.string.search_menu);
         MenuItem menuItem = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, menuTitle)
                 .setIcon(R.drawable.abc_ic_search_api_material)
                 .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@@ -86,7 +81,7 @@
 
     @Override
     public void updateIndex(Context context) {
-        if (isEnabled()) {
+        if (isEnabled(context)) {
             getIndexingManager(context).update();
         } else {
             Index.getInstance(context).update();
diff --git a/src/com/android/settings/search2/SearchFragment.java b/src/com/android/settings/search2/SearchFragment.java
index fca52e9..1a4e6dc 100644
--- a/src/com/android/settings/search2/SearchFragment.java
+++ b/src/com/android/settings/search2/SearchFragment.java
@@ -66,7 +66,7 @@
     public void onAttach(Context context) {
         super.onAttach(context);
         mSearchFeatureProvider = FeatureFactory.getFactory(context)
-                .getSearchFeatureProvider(context);
+                .getSearchFeatureProvider();
     }
 
     @Override
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
index 3ffd059..e4a988f 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
@@ -124,7 +124,7 @@
         tile.intent = new Intent();
         tile.intent.setComponent(new ComponentName("pkg", "class"));
 
-        when(mActivity.getApplicationContext().getSystemService(Context.USER_SERVICE))
+        when(mActivity.getSystemService(Context.USER_SERVICE))
                 .thenReturn(mUserManager);
 
         mImpl.bindPreferenceToTile(mActivity, preference, tile, "123", Preference.DEFAULT_ORDER);
diff --git a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
index d9e2dd6..c0b1b3d 100644
--- a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
@@ -61,7 +61,7 @@
     public void setUp() {
         MockitoAnnotations.initMocks(this);
         mActivity = Robolectric.buildActivity(Activity.class).create().visible().get();
-        mProvider = new SearchFeatureProviderImpl(mActivity);
+        mProvider = new SearchFeatureProviderImpl();
     }
 
     @Test
@@ -78,8 +78,8 @@
 
     @Test
     public void testUpdateIndexNewSearch_UsesDatabaseIndexingManager() {
-        mProvider = spy(new SearchFeatureProviderImpl(mActivity));
-        when(mProvider.isEnabled()).thenReturn(true);
+        mProvider = spy(new SearchFeatureProviderImpl());
+        when(mProvider.isEnabled(mActivity)).thenReturn(true);
 
         mProvider.updateIndex(mActivity);
         verify(mProvider).getIndexingManager(any(Context.class));
@@ -87,8 +87,8 @@
 
     @Test
     public void testUpdateIndexNewSearch_UsesIndex() {
-        mProvider = spy(new SearchFeatureProviderImpl(mActivity));
-        when(mProvider.isEnabled()).thenReturn(false);
+        mProvider = spy(new SearchFeatureProviderImpl());
+        when(mProvider.isEnabled(mActivity)).thenReturn(false);
 
         mProvider.updateIndex(mActivity);
         verify(mProvider, never()).getIndexingManager(any(Context.class));
diff --git a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
index a9c1764..1625f35 100644
--- a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
+++ b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
@@ -116,7 +116,7 @@
     }
 
     @Override
-    public SearchFeatureProvider getSearchFeatureProvider(Context context) {
+    public SearchFeatureProvider getSearchFeatureProvider() {
         return searchFeatureProvider;
     }