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
This commit is contained in:
Matthew Fritze
2016-12-20 09:37:21 -08:00
parent ad5ccad461
commit 9955db6360
9 changed files with 19 additions and 24 deletions

View File

@@ -329,7 +329,7 @@ public class SettingsActivity extends SettingsDrawerActivity
}
MenuInflater inflater = getMenuInflater();
if (mSearchFeatureProvider.isEnabled()) {
if (mSearchFeatureProvider.isEnabled(this)) {
mSearchFeatureProvider.setUpSearchMenu(menu, this);
return true;
}
@@ -405,7 +405,7 @@ public class SettingsActivity extends SettingsDrawerActivity
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 @@ public class SettingsActivity extends SettingsDrawerActivity
@Deprecated
@Override
public boolean onQueryTextSubmit(String query) {
if (mSearchFeatureProvider.isEnabled()) {
if (mSearchFeatureProvider.isEnabled(this)) {
return false;
}
mSearchQuery = query;
@@ -1109,7 +1109,7 @@ public class SettingsActivity extends SettingsDrawerActivity
@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);

View File

@@ -81,7 +81,7 @@ public abstract class FeatureFactory {
public abstract EnterprisePrivacyFeatureProvider getEnterprisePrivacyFeatureProvider(
Context context);
public abstract SearchFeatureProvider getSearchFeatureProvider(Context context);
public abstract SearchFeatureProvider getSearchFeatureProvider();
public abstract SurveyFeatureProvider getSurveyFeatureProvider(Context context);

View File

@@ -104,9 +104,9 @@ public class FeatureFactoryImpl extends FeatureFactory {
}
@Override
public SearchFeatureProvider getSearchFeatureProvider(Context context) {
public SearchFeatureProvider getSearchFeatureProvider() {
if (mSearchFeatureProvider == null) {
mSearchFeatureProvider = new SearchFeatureProviderImpl(context);
mSearchFeatureProvider = new SearchFeatureProviderImpl();
}
return mSearchFeatureProvider;
}

View File

@@ -27,7 +27,7 @@ public interface SearchFeatureProvider {
/**
* @return true to use the new version of search
*/
boolean isEnabled();
boolean isEnabled(Context context);
/**
* Inserts the Menu items into Settings activity.

View File

@@ -31,16 +31,11 @@ import com.android.settings.applications.PackageManagerWrapperImpl;
* 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 @@ public class SearchFeatureProviderImpl implements SearchFeatureProvider {
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 @@ public class SearchFeatureProviderImpl implements SearchFeatureProvider {
@Override
public void updateIndex(Context context) {
if (isEnabled()) {
if (isEnabled(context)) {
getIndexingManager(context).update();
} else {
Index.getInstance(context).update();

View File

@@ -66,7 +66,7 @@ public class SearchFragment extends InstrumentedFragment implements
public void onAttach(Context context) {
super.onAttach(context);
mSearchFeatureProvider = FeatureFactory.getFactory(context)
.getSearchFeatureProvider(context);
.getSearchFeatureProvider();
}
@Override

View File

@@ -124,7 +124,7 @@ public class DashboardFeatureProviderImplTest {
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);

View File

@@ -61,7 +61,7 @@ public class SearchFeatureProviderImplTest {
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 @@ public class SearchFeatureProviderImplTest {
@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 @@ public class SearchFeatureProviderImplTest {
@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));

View File

@@ -116,7 +116,7 @@ public class FakeFeatureFactory extends FeatureFactory {
}
@Override
public SearchFeatureProvider getSearchFeatureProvider(Context context) {
public SearchFeatureProvider getSearchFeatureProvider() {
return searchFeatureProvider;
}