Make the suggestion view dismissible
The suggestion view could just be operated once to eliminate flicker. When the suggestion is completed, there was no way to dismiss it unless users kill Settings. This patch allows updating the view's visibility after the activity is stopped. When the activity restarts, the view can be updated. Fix: 294153594 Test: robotest Change-Id: Idc3aada3bff001d603bf2f7737f70f2880f6cc35
This commit is contained in:
@@ -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);
|
||||||
@@ -278,6 +282,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;
|
||||||
|
@@ -167,6 +167,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);
|
||||||
|
Reference in New Issue
Block a user