Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dfd802da authored by Jason Chiu's avatar Jason Chiu
Browse files

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
parent dd61b6bb
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -119,6 +119,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements

    private SplitControllerCallbackAdapter mSplitControllerAdapter;
    private SplitInfoCallback mCallback;
    private boolean mAllowUpdateSuggestion = true;

    /** A listener receiving homepage loaded events. */
    public interface HomepageLoadedListener {
@@ -155,15 +156,18 @@ public class SettingsHomepageActivity extends FragmentActivity implements
     * to avoid the flicker caused by the suggestion suddenly appearing/disappearing.
     */
    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) {
            return;
        }
        Log.i(TAG, "showHomepageWithSuggestion: " + showSuggestion);
        final View homepageView = mHomepageView;
        mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE);
        mTwoPaneSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE);
        mHomepageView = null;

        mLoadedListeners.forEach(listener -> listener.onHomepageLoaded());
        mLoadedListeners.clear();
        homepageView.setVisibility(View.VISIBLE);
@@ -278,6 +282,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements
    @Override
    protected void onStop() {
        super.onStop();
        mAllowUpdateSuggestion = true;
        if (mSplitControllerAdapter != null && mCallback != null) {
            mSplitControllerAdapter.removeSplitListener(mCallback);
            mCallback = null;
+13 −0
Original line number Diff line number Diff line
@@ -167,6 +167,19 @@ public class SettingsHomepageActivityTest {
        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
    public void onStart_isNotDebuggable_shouldHideSystemOverlay() {
        ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", false);