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:
@@ -329,7 +329,7 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
}
|
}
|
||||||
|
|
||||||
MenuInflater inflater = getMenuInflater();
|
MenuInflater inflater = getMenuInflater();
|
||||||
if (mSearchFeatureProvider.isEnabled()) {
|
if (mSearchFeatureProvider.isEnabled(this)) {
|
||||||
mSearchFeatureProvider.setUpSearchMenu(menu, this);
|
mSearchFeatureProvider.setUpSearchMenu(menu, this);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -405,7 +405,7 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
final FeatureFactory factory = FeatureFactory.getFactory(this);
|
final FeatureFactory factory = FeatureFactory.getFactory(this);
|
||||||
|
|
||||||
mDashboardFeatureProvider = factory.getDashboardFeatureProvider(this);
|
mDashboardFeatureProvider = factory.getDashboardFeatureProvider(this);
|
||||||
mSearchFeatureProvider = factory.getSearchFeatureProvider(this);
|
mSearchFeatureProvider = factory.getSearchFeatureProvider();
|
||||||
|
|
||||||
// Should happen before any call to getIntent()
|
// Should happen before any call to getIntent()
|
||||||
getMetaData();
|
getMetaData();
|
||||||
@@ -1097,7 +1097,7 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
@Override
|
@Override
|
||||||
public boolean onQueryTextSubmit(String query) {
|
public boolean onQueryTextSubmit(String query) {
|
||||||
if (mSearchFeatureProvider.isEnabled()) {
|
if (mSearchFeatureProvider.isEnabled(this)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
mSearchQuery = query;
|
mSearchQuery = query;
|
||||||
@@ -1109,7 +1109,7 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
@Override
|
@Override
|
||||||
public boolean onQueryTextChange(String newText) {
|
public boolean onQueryTextChange(String newText) {
|
||||||
mSearchQuery = newText;
|
mSearchQuery = newText;
|
||||||
if (mSearchFeatureProvider.isEnabled() || mSearchResultsFragment == null) {
|
if (mSearchFeatureProvider.isEnabled(this) || mSearchResultsFragment == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return mSearchResultsFragment.onQueryTextChange(newText);
|
return mSearchResultsFragment.onQueryTextChange(newText);
|
||||||
|
@@ -81,7 +81,7 @@ public abstract class FeatureFactory {
|
|||||||
public abstract EnterprisePrivacyFeatureProvider getEnterprisePrivacyFeatureProvider(
|
public abstract EnterprisePrivacyFeatureProvider getEnterprisePrivacyFeatureProvider(
|
||||||
Context context);
|
Context context);
|
||||||
|
|
||||||
public abstract SearchFeatureProvider getSearchFeatureProvider(Context context);
|
public abstract SearchFeatureProvider getSearchFeatureProvider();
|
||||||
|
|
||||||
public abstract SurveyFeatureProvider getSurveyFeatureProvider(Context context);
|
public abstract SurveyFeatureProvider getSurveyFeatureProvider(Context context);
|
||||||
|
|
||||||
|
@@ -104,9 +104,9 @@ public class FeatureFactoryImpl extends FeatureFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SearchFeatureProvider getSearchFeatureProvider(Context context) {
|
public SearchFeatureProvider getSearchFeatureProvider() {
|
||||||
if (mSearchFeatureProvider == null) {
|
if (mSearchFeatureProvider == null) {
|
||||||
mSearchFeatureProvider = new SearchFeatureProviderImpl(context);
|
mSearchFeatureProvider = new SearchFeatureProviderImpl();
|
||||||
}
|
}
|
||||||
return mSearchFeatureProvider;
|
return mSearchFeatureProvider;
|
||||||
}
|
}
|
||||||
|
@@ -27,7 +27,7 @@ public interface SearchFeatureProvider {
|
|||||||
/**
|
/**
|
||||||
* @return true to use the new version of search
|
* @return true to use the new version of search
|
||||||
*/
|
*/
|
||||||
boolean isEnabled();
|
boolean isEnabled(Context context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inserts the Menu items into Settings activity.
|
* Inserts the Menu items into Settings activity.
|
||||||
|
@@ -31,16 +31,11 @@ import com.android.settings.applications.PackageManagerWrapperImpl;
|
|||||||
* FeatureProvider for the refactored search code.
|
* FeatureProvider for the refactored search code.
|
||||||
*/
|
*/
|
||||||
public class SearchFeatureProviderImpl implements SearchFeatureProvider {
|
public class SearchFeatureProviderImpl implements SearchFeatureProvider {
|
||||||
protected Context mContext;
|
|
||||||
|
|
||||||
private DatabaseIndexingManager mDatabaseIndexingManager;
|
private DatabaseIndexingManager mDatabaseIndexingManager;
|
||||||
|
|
||||||
public SearchFeatureProviderImpl(Context context) {
|
|
||||||
mContext = context;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnabled() {
|
public boolean isEnabled(Context context) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,7 +44,7 @@ public class SearchFeatureProviderImpl implements SearchFeatureProvider {
|
|||||||
if (menu == null || activity == null) {
|
if (menu == null || activity == null) {
|
||||||
return;
|
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)
|
MenuItem menuItem = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, menuTitle)
|
||||||
.setIcon(R.drawable.abc_ic_search_api_material)
|
.setIcon(R.drawable.abc_ic_search_api_material)
|
||||||
.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||||
@@ -86,7 +81,7 @@ public class SearchFeatureProviderImpl implements SearchFeatureProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateIndex(Context context) {
|
public void updateIndex(Context context) {
|
||||||
if (isEnabled()) {
|
if (isEnabled(context)) {
|
||||||
getIndexingManager(context).update();
|
getIndexingManager(context).update();
|
||||||
} else {
|
} else {
|
||||||
Index.getInstance(context).update();
|
Index.getInstance(context).update();
|
||||||
|
@@ -66,7 +66,7 @@ public class SearchFragment extends InstrumentedFragment implements
|
|||||||
public void onAttach(Context context) {
|
public void onAttach(Context context) {
|
||||||
super.onAttach(context);
|
super.onAttach(context);
|
||||||
mSearchFeatureProvider = FeatureFactory.getFactory(context)
|
mSearchFeatureProvider = FeatureFactory.getFactory(context)
|
||||||
.getSearchFeatureProvider(context);
|
.getSearchFeatureProvider();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -124,7 +124,7 @@ public class DashboardFeatureProviderImplTest {
|
|||||||
tile.intent = new Intent();
|
tile.intent = new Intent();
|
||||||
tile.intent.setComponent(new ComponentName("pkg", "class"));
|
tile.intent.setComponent(new ComponentName("pkg", "class"));
|
||||||
|
|
||||||
when(mActivity.getApplicationContext().getSystemService(Context.USER_SERVICE))
|
when(mActivity.getSystemService(Context.USER_SERVICE))
|
||||||
.thenReturn(mUserManager);
|
.thenReturn(mUserManager);
|
||||||
|
|
||||||
mImpl.bindPreferenceToTile(mActivity, preference, tile, "123", Preference.DEFAULT_ORDER);
|
mImpl.bindPreferenceToTile(mActivity, preference, tile, "123", Preference.DEFAULT_ORDER);
|
||||||
|
@@ -61,7 +61,7 @@ public class SearchFeatureProviderImplTest {
|
|||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mActivity = Robolectric.buildActivity(Activity.class).create().visible().get();
|
mActivity = Robolectric.buildActivity(Activity.class).create().visible().get();
|
||||||
mProvider = new SearchFeatureProviderImpl(mActivity);
|
mProvider = new SearchFeatureProviderImpl();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -78,8 +78,8 @@ public class SearchFeatureProviderImplTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateIndexNewSearch_UsesDatabaseIndexingManager() {
|
public void testUpdateIndexNewSearch_UsesDatabaseIndexingManager() {
|
||||||
mProvider = spy(new SearchFeatureProviderImpl(mActivity));
|
mProvider = spy(new SearchFeatureProviderImpl());
|
||||||
when(mProvider.isEnabled()).thenReturn(true);
|
when(mProvider.isEnabled(mActivity)).thenReturn(true);
|
||||||
|
|
||||||
mProvider.updateIndex(mActivity);
|
mProvider.updateIndex(mActivity);
|
||||||
verify(mProvider).getIndexingManager(any(Context.class));
|
verify(mProvider).getIndexingManager(any(Context.class));
|
||||||
@@ -87,8 +87,8 @@ public class SearchFeatureProviderImplTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateIndexNewSearch_UsesIndex() {
|
public void testUpdateIndexNewSearch_UsesIndex() {
|
||||||
mProvider = spy(new SearchFeatureProviderImpl(mActivity));
|
mProvider = spy(new SearchFeatureProviderImpl());
|
||||||
when(mProvider.isEnabled()).thenReturn(false);
|
when(mProvider.isEnabled(mActivity)).thenReturn(false);
|
||||||
|
|
||||||
mProvider.updateIndex(mActivity);
|
mProvider.updateIndex(mActivity);
|
||||||
verify(mProvider, never()).getIndexingManager(any(Context.class));
|
verify(mProvider, never()).getIndexingManager(any(Context.class));
|
||||||
|
@@ -116,7 +116,7 @@ public class FakeFeatureFactory extends FeatureFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SearchFeatureProvider getSearchFeatureProvider(Context context) {
|
public SearchFeatureProvider getSearchFeatureProvider() {
|
||||||
return searchFeatureProvider;
|
return searchFeatureProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user