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

Commit ef528767 authored by Winson Chung's avatar Winson Chung
Browse files

Defer listening on widget host until after the state transition ends

Bug: 140246642
Change-Id: I4532e4298f04ff5c6dea04ccda89320995cadb80
parent 13c1c2cd
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -157,6 +157,6 @@ public abstract class BaseRecentsActivity extends BaseDraggingActivity {
    public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) {
        super.dump(prefix, fd, writer, args);
        writer.println(prefix + "Misc:");
        dumpMisc(writer);
        dumpMisc(prefix + "\t", writer);
    }
}
+9 −8
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@ import android.content.Intent;
import android.content.res.Configuration;
import android.view.ContextThemeWrapper;

import androidx.annotation.IntDef;

import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
import com.android.launcher3.logging.StatsLogManager;
import com.android.launcher3.logging.StatsLogUtils;
@@ -44,8 +46,6 @@ import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.util.ArrayList;

import androidx.annotation.IntDef;

public abstract class BaseActivity extends Activity
        implements UserEventDelegate, LogStateProvider, ActivityContext {

@@ -265,12 +265,13 @@ public abstract class BaseActivity extends Activity
        }
    }

    protected void dumpMisc(PrintWriter writer) {
        writer.println(" deviceProfile isTransposed=" + getDeviceProfile().isVerticalBarLayout());
        writer.println(" orientation=" + getResources().getConfiguration().orientation);
        writer.println(" mSystemUiController: " + mSystemUiController);
        writer.println(" mActivityFlags: " + mActivityFlags);
        writer.println(" mForceInvisible: " + mForceInvisible);
    protected void dumpMisc(String prefix, PrintWriter writer) {
        writer.println(prefix + "deviceProfile isTransposed="
                + getDeviceProfile().isVerticalBarLayout());
        writer.println(prefix + "orientation=" + getResources().getConfiguration().orientation);
        writer.println(prefix + "mSystemUiController: " + mSystemUiController);
        writer.println(prefix + "mActivityFlags: " + mActivityFlags);
        writer.println(prefix + "mForceInvisible: " + mForceInvisible);
    }

    public static <T extends BaseActivity> T fromContext(Context context) {
+14 −7
Original line number Diff line number Diff line
@@ -945,8 +945,7 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,

    }

    protected void onStateSet(LauncherState state) {
        getAppWidgetHost().setResumed(state == LauncherState.NORMAL);
    public void onStateSetStart(LauncherState state) {
        if (mDeferredResumePending) {
            handleDeferredResume();
        }
@@ -955,6 +954,12 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
        }
    }

    public void onStateSetEnd(LauncherState state) {
        getAppWidgetHost().setResumed(state == LauncherState.NORMAL);
        getWorkspace().setClipChildren(!state.disablePageClipping);
        finishAutoCancelActionMode();
    }

    @Override
    protected void onResume() {
        RaceConditionTracker.onEvent(ON_RESUME_EVT, ENTER);
@@ -2467,14 +2472,16 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
        }

        writer.println(prefix + "Misc:");
        writer.print(prefix + "\tmWorkspaceLoading=" + mWorkspaceLoading);
        writer.print(" mPendingRequestArgs=" + mPendingRequestArgs);
        writer.println(" mPendingActivityResult=" + mPendingActivityResult);
        writer.println(" mRotationHelper: " + mRotationHelper);
        dumpMisc(prefix + "\t", writer);
        writer.println(prefix + "\tmWorkspaceLoading=" + mWorkspaceLoading);
        writer.println(prefix + "\tmPendingRequestArgs=" + mPendingRequestArgs
                + " mPendingActivityResult=" + mPendingActivityResult);
        writer.println(prefix + "\tmRotationHelper: " + mRotationHelper);
        writer.println(prefix + "\tmAppWidgetHost.isListening: " + mAppWidgetHost.isListening());

        // Extra logging for b/116853349
        mDragLayer.dump(prefix, writer);
        mStateManager.dump(prefix, writer);
        dumpMisc(writer);

        try {
            FileLog.flushAll(writer);
+4 −0
Original line number Diff line number Diff line
@@ -105,6 +105,10 @@ public class LauncherAppWidgetHost extends AppWidgetHost {
        super.stopListening();
    }

    public boolean isListening() {
        return (mFlags & FLAG_LISTENING) != 0;
    }

    /**
     * Updates the resumed state of the host.
     * When a host is not resumed, it defers calls to startListening until host is resumed again.
+3 −4
Original line number Diff line number Diff line
@@ -136,7 +136,7 @@ public class LauncherStateManager {
    }

    public void dump(String prefix, PrintWriter writer) {
        writer.println(prefix + "LauncherState");
        writer.println(prefix + "LauncherState:");
        writer.println(prefix + "\tmLastStableState:" + mLastStableState);
        writer.println(prefix + "\tmCurrentStableState:" + mCurrentStableState);
        writer.println(prefix + "\tmState:" + mState);
@@ -418,7 +418,7 @@ public class LauncherStateManager {
                    " @ " + Log.getStackTraceString(new Throwable()));
        }
        mState.onStateEnabled(mLauncher);
        mLauncher.onStateSet(mState);
        mLauncher.onStateSetStart(mState);

        if (state.disablePageClipping) {
            // Only disable clipping if needed, otherwise leave it as previous value.
@@ -444,8 +444,7 @@ public class LauncherStateManager {
        }

        state.onStateTransitionEnd(mLauncher);
        mLauncher.getWorkspace().setClipChildren(!state.disablePageClipping);
        mLauncher.finishAutoCancelActionMode();
        mLauncher.onStateSetEnd(state);

        if (state == NORMAL) {
            setRestState(null);
Loading