Merge "Make the suggestion view dismissible" into main

This commit is contained in:
Jason Chiu
2023-12-21 06:23:33 +00:00
committed by Android (Google) Code Review
2 changed files with 22 additions and 4 deletions

View File

@@ -119,6 +119,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements
private SplitControllerCallbackAdapter mSplitControllerAdapter; private SplitControllerCallbackAdapter mSplitControllerAdapter;
private SplitInfoCallback mCallback; private SplitInfoCallback mCallback;
private boolean mAllowUpdateSuggestion = true;
/** A listener receiving homepage loaded events. */ /** A listener receiving homepage loaded events. */
public interface HomepageLoadedListener { public interface HomepageLoadedListener {
@@ -155,15 +156,18 @@ public class SettingsHomepageActivity extends FragmentActivity implements
* to avoid the flicker caused by the suggestion suddenly appearing/disappearing. * to avoid the flicker caused by the suggestion suddenly appearing/disappearing.
*/ */
public void showHomepageWithSuggestion(boolean showSuggestion) { public void showHomepageWithSuggestion(boolean showSuggestion) {
if (mAllowUpdateSuggestion) {
Log.i(TAG, "showHomepageWithSuggestion: " + showSuggestion);
mAllowUpdateSuggestion = false;
mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE);
mTwoPaneSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE);
}
if (mHomepageView == null) { if (mHomepageView == null) {
return; return;
} }
Log.i(TAG, "showHomepageWithSuggestion: " + showSuggestion);
final View homepageView = mHomepageView; final View homepageView = mHomepageView;
mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE);
mTwoPaneSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE);
mHomepageView = null; mHomepageView = null;
mLoadedListeners.forEach(listener -> listener.onHomepageLoaded()); mLoadedListeners.forEach(listener -> listener.onHomepageLoaded());
mLoadedListeners.clear(); mLoadedListeners.clear();
homepageView.setVisibility(View.VISIBLE); homepageView.setVisibility(View.VISIBLE);
@@ -284,6 +288,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements
@Override @Override
protected void onStop() { protected void onStop() {
super.onStop(); super.onStop();
mAllowUpdateSuggestion = true;
if (mSplitControllerAdapter != null && mCallback != null) { if (mSplitControllerAdapter != null && mCallback != null) {
mSplitControllerAdapter.removeSplitListener(mCallback); mSplitControllerAdapter.removeSplitListener(mCallback);
mCallback = null; mCallback = null;

View File

@@ -168,6 +168,19 @@ public class SettingsHomepageActivityTest {
assertThat(suggestionTile.getVisibility()).isEqualTo(View.GONE); assertThat(suggestionTile.getVisibility()).isEqualTo(View.GONE);
} }
@Test
public void showHomepageWithSuggestion_callAfterOnStop_shouldUpdateVisibility() {
final SettingsHomepageActivity activity = Robolectric.buildActivity(
SettingsHomepageActivity.class).create().get();
final View suggestionTile = activity.findViewById(R.id.suggestion_content);
activity.showHomepageWithSuggestion(true);
activity.onStop();
activity.showHomepageWithSuggestion(false);
assertThat(suggestionTile.getVisibility()).isEqualTo(View.GONE);
}
@Test @Test
public void onStart_isNotDebuggable_shouldHideSystemOverlay() { public void onStart_isNotDebuggable_shouldHideSystemOverlay() {
ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", false); ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", false);