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

Commit 1da7174a authored by Riddle Hsu's avatar Riddle Hsu
Browse files

Remove unused parameters of global config update

Remove the parameters because:
 starting is always null.
 deferResume is always false.

Some update methods return whether the top activity is relaunched by
the config change. But there is no one check that. All callers check
whether the config is changed. So the legacy UpdateConfigurationResult
can be removed. This avoids confusing about different meaning of the
returned boolean from the methods with the same name.

Bug: 258618073
Bug: 364879728
Flag: EXEMPT remove dead code
Test: ActivityTaskManagerServiceTests# \
      testPackageConfigUpdate_locales_successfullyApplied

Change-Id: I68ec1ea49815234c6225ed37192645fa0a441e3c
parent f43be0ca
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -871,7 +871,8 @@ class ActivityStarter {
                    ProtoLog.v(WM_DEBUG_CONFIGURATION,
                                "Updating to new configuration after starting activity.");

                    mService.updateConfigurationLocked(mRequest.globalConfig, null, false);
                    mService.updateConfigurationLocked(mRequest.globalConfig,
                            false /* initLocale */);
                }

                // The original options may have additional info about metrics. The mOptions is not
+20 −52
Original line number Diff line number Diff line
@@ -518,16 +518,6 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {

    private final WindowStyleCache<ActivityRecord.WindowStyle> mWindowStyleCache =
            new WindowStyleCache<>(ActivityRecord.WindowStyle::new);
    final UpdateConfigurationResult mTmpUpdateConfigurationResult =
            new UpdateConfigurationResult();

    // TODO(b/258618073): Remove this and make the related methods return whether config is changed.
    static final class UpdateConfigurationResult {
        // Configuration changes that were updated.
        int changes;
        // If the activity was relaunched to match the new configuration.
        boolean activityRelaunched;
    }

    /** Current sequencing integer of the configuration, for skipping old configurations. */
    private int mConfigurationSeq;
@@ -991,7 +981,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
            mWindowManager.mRoot.onSettingsRetrieved();
            // This happens before any activities are started, so we can change global configuration
            // in-place.
            updateConfigurationLocked(configuration, null, true);
            updateConfigurationLocked(configuration, true /* initLocale */);
            final Configuration globalConfig = getGlobalConfiguration();
            ProtoLog.v(WM_DEBUG_CONFIGURATION, "Initial config: %s", globalConfig);

@@ -4328,9 +4318,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
                if (values != null) {
                    Settings.System.clearConfiguration(values);
                }
                updateConfigurationLocked(values, null, false, false /* persistent */,
                        UserHandle.USER_NULL, false /* deferResume */);
                return mTmpUpdateConfigurationResult.changes != 0;
                return updateConfigurationLocked(values, false /* initLocale */);
            } finally {
                Binder.restoreCallingIdentity(origId);
            }
@@ -5014,16 +5002,10 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
                : new Configuration();
    }

    boolean updateConfigurationLocked(Configuration values, ActivityRecord starting,
            boolean initLocale) {
        return updateConfigurationLocked(values, starting, initLocale, false /* deferResume */);
    }

    boolean updateConfigurationLocked(Configuration values, ActivityRecord starting,
            boolean initLocale, boolean deferResume) {
    boolean updateConfigurationLocked(@NonNull Configuration values, boolean initLocale) {
        // pass UserHandle.USER_NULL as userId because we don't persist configuration for any user
        return updateConfigurationLocked(values, starting, initLocale, false /* persistent */,
                UserHandle.USER_NULL, deferResume);
        return updateConfigurationLocked(values, initLocale, false /* persistent */,
                UserHandle.USER_NULL);
    }

    public void updatePersistentConfiguration(Configuration values, @UserIdInt int userId) {
@@ -5033,8 +5015,8 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
                // Window configuration is unrelated to persistent configuration (e.g. font scale,
                // locale). Unset it to avoid affecting the current display configuration.
                values.windowConfiguration.setToDefaults();
                updateConfigurationLocked(values, null, false, true, userId,
                        false /* deferResume */);
                updateConfigurationLocked(values, false /* initLocale */, true /* persistent */,
                        userId);
            }
        } finally {
            Binder.restoreCallingIdentity(origId);
@@ -5044,34 +5026,24 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
    /**
     * Do either or both things: (1) change the current configuration, and (2)
     * make sure the given activity is running with the (now) current
     * configuration.  Returns true if the activity has been left running, or
     * false if <var>starting</var> is being destroyed to match the new
     * configuration.
     * configuration.  Returns true if the configuration is updated.
     *
     * @param userId is only used when persistent parameter is set to true to persist configuration
     *               for that particular user
     */
    boolean updateConfigurationLocked(Configuration values, ActivityRecord starting,
            boolean initLocale, boolean persistent, int userId, boolean deferResume) {
        int changes = 0;
        boolean kept = true;
    boolean updateConfigurationLocked(@NonNull Configuration values, boolean initLocale,
            boolean persistent, @UserIdInt int userId) {
        final int changes;

        deferWindowLayout();
        try {
            if (values != null) {
            changes = updateGlobalConfigurationWithTransition(
                    values, initLocale, persistent, userId);
                mTmpUpdateConfigurationResult.changes = changes;
            }

            if (!deferResume) {
                kept = ensureConfigAndVisibilityAfterUpdate(starting, changes);
            }
            ensureConfigAndVisibilityAfterUpdate(null /* starting */, changes);
        } finally {
            continueWindowLayout();
        }
        mTmpUpdateConfigurationResult.activityRelaunched = !kept;
        return kept;
        return changes != 0;
    }

    /** This is mainly to handle changes in locale, font scale/weight, uiMode, asset paths. */
@@ -5871,11 +5843,10 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
    }

    /** Applies latest configuration and/or visibility updates if needed. */
    boolean ensureConfigAndVisibilityAfterUpdate(ActivityRecord starting, int changes) {
    void ensureConfigAndVisibilityAfterUpdate(@Nullable ActivityRecord starting, int changes) {
        if (starting == null && mTaskSupervisor.isRootVisibilityUpdateDeferred()) {
            return true;
            return;
        }
        boolean kept = true;
        final Task mainRootTask = mRootWindowContainer.getTopDisplayFocusedRootTask();
        // mainRootTask is null during startup.
        if (mainRootTask != null) {
@@ -5887,14 +5858,12 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
            }

            if (starting != null) {
                kept = starting.ensureActivityConfiguration();
                starting.ensureActivityConfiguration();
                // And we need to make sure at this point that all other activities
                // are made visible with the correct configuration.
                mRootWindowContainer.ensureActivitiesVisible(starting);
            }
        }

        return kept;
    }

    void scheduleAppGcsLocked() {
@@ -7641,9 +7610,8 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
                final int currentUserId = mAmInternal.getCurrentUserId();
                Settings.System.adjustConfigurationForUser(mContext.getContentResolver(),
                        configuration, currentUserId, Settings.System.canWrite(mContext));
                updateConfigurationLocked(configuration, null /* starting */,
                        false /* initLocale */, false /* persistent */, currentUserId,
                        false /* deferResume */);
                updateConfigurationLocked(configuration, false /* initLocale */,
                        false /* persistent */, currentUserId);
            }
        }

+3 −7
Original line number Diff line number Diff line
@@ -6287,9 +6287,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
                mDisplayId));

        Settings.System.clearConfiguration(values);
        updateDisplayOverrideConfigurationLocked(values, null /* starting */,
        return updateDisplayOverrideConfigurationLocked(values, null /* starting */,
                false /* deferResume */);
        return mAtmService.mTmpUpdateConfigurationResult.changes != 0;
    }

    /**
@@ -6300,7 +6299,6 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
            ActivityRecord starting, boolean deferResume) {

        int changes = 0;
        boolean kept = true;

        mAtmService.deferWindowLayout();
        try {
@@ -6315,18 +6313,16 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
                } else {
                    changes = performDisplayOverrideConfigUpdate(values);
                }
                mAtmService.mTmpUpdateConfigurationResult.changes = changes;
            }

            if (!deferResume) {
                kept = mAtmService.ensureConfigAndVisibilityAfterUpdate(starting, changes);
                mAtmService.ensureConfigAndVisibilityAfterUpdate(starting, changes);
            }
        } finally {
            mAtmService.continueWindowLayout();
        }

        mAtmService.mTmpUpdateConfigurationResult.activityRelaunched = !kept;
        return kept;
        return changes != 0;
    }

    int performDisplayOverrideConfigUpdate(Configuration values) {
+1 −2
Original line number Diff line number Diff line
@@ -528,8 +528,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
            if (displayContent.isDefaultDisplay) {
                final Configuration newConfig = mWmService.computeNewConfiguration(
                        displayContent.getDisplayId());
                mWmService.mAtmService.updateConfigurationLocked(newConfig, null /* starting */,
                        false /* initLocale */);
                mWmService.mAtmService.updateConfigurationLocked(newConfig, false /* initLocale */);
            }
        }
    }
+13 −3
Original line number Diff line number Diff line
@@ -64,7 +64,6 @@ import android.annotation.Nullable;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.TaskDescription;
import android.app.ActivityThread;
import android.app.HandoffActivityData;
import android.app.HandoffFailureCode;
import android.app.IApplicationThread;
@@ -988,9 +987,20 @@ public class ActivityTaskManagerServiceTests extends WindowTestsBase {

    @Test
    public void testPackageConfigUpdate_locales_successfullyApplied() {
        Configuration config = mAtm.getGlobalConfiguration();
        registerTestTransitionPlayer();
        addNewDisplayContentAt(DisplayContent.POSITION_TOP);
        final DisplayContent dc0 = mRootWindowContainer.getChildAt(0);
        final DisplayContent dc1 = mRootWindowContainer.getChildAt(1);
        dc0.setLastHasContent();
        dc1.setLastHasContent();
        final Configuration config = new Configuration();
        config.setLocales(LocaleList.forLanguageTags("en-XC"));
        mAtm.updateGlobalConfigurationLocked(config, true, true, DEFAULT_USER_ID);
        mAtm.updateConfigurationLocked(config, true /* initLocale */, true /* persistent */,
                DEFAULT_USER_ID);

        assertTrue(dc0.inTransition());
        assertTrue(dc1.inTransition());

        mAtm.mProcessMap.put(Binder.getCallingPid(), createWindowProcessController(
                DEFAULT_PACKAGE_NAME, DEFAULT_USER_ID));