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

Commit 7ba8e26c authored by Charles Chen's avatar Charles Chen
Browse files

Fix WindowContextTests

Previously, window token assigns last config to mLastReportedConfiguration
directly, which makes it share the same reference with getConfiguration(),
and blocks all config changes request to clients.

This CL uses Configuration#setTo instead.

fixes: 152227175
Bug: 150251036
Test: atest WindowContextTests

Change-Id: I44143aa558f223eb301e28f2e9110bfd66eac636
parent 1a46294f
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -67,13 +67,11 @@ public class WindowTokenClient extends IWindowToken.Stub {
        }
        final int currentDisplayId = context.getDisplayId();
        final boolean displayChanged = newDisplayId != currentDisplayId;
        final Configuration config = new Configuration(context.getResources()
                .getConfiguration());
        final boolean configChanged = config.isOtherSeqNewer(newConfig)
                && config.updateFrom(newConfig) != 0;
        final Configuration config = context.getResources().getConfiguration();
        final boolean configChanged = config.diff(newConfig) != 0;
        if (displayChanged || configChanged) {
            // TODO(ag/9789103): update resource manager logic to track non-activity tokens
            mResourcesManager.updateResourcesForActivity(this, config, newDisplayId,
            mResourcesManager.updateResourcesForActivity(this, newConfig, newDisplayId,
                    displayChanged);
        }
        if (displayChanged) {
+5 −2
Original line number Diff line number Diff line
@@ -422,14 +422,17 @@ class WindowToken extends WindowContainer<WindowState> {
        if (!shouldReportToClient()) {
            return;
        }
        if (mLastReportedConfig == null) {
            mLastReportedConfig = new Configuration();
        }
        final Configuration config = getConfiguration();
        final int displayId = getDisplayContent().getDisplayId();
        if (config.equals(mLastReportedConfig) && displayId == mLastReportedDisplay) {
        if (config.diff(mLastReportedConfig) == 0 && displayId == mLastReportedDisplay) {
            // No changes since last reported time.
            return;
        }

        mLastReportedConfig = config;
        mLastReportedConfig.setTo(config);
        mLastReportedDisplay = displayId;

        IWindowToken windowTokenClient = IWindowToken.Stub.asInterface(token);