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

Commit 3868b389 authored by Andrii Kulian's avatar Andrii Kulian Committed by Android (Google) Code Review
Browse files

Merge "Add Configuration param to onMovedToDisplay"

parents 29f38e15 2c32a11a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -3673,7 +3673,7 @@ package android.app {
    method public void onLowMemory();
    method public boolean onMenuItemSelected(int, android.view.MenuItem);
    method public boolean onMenuOpened(int, android.view.Menu);
    method public void onMovedToDisplay(int);
    method public void onMovedToDisplay(int, android.content.res.Configuration);
    method public void onMultiWindowModeChanged(boolean);
    method public boolean onNavigateUp();
    method public boolean onNavigateUpFromChild(android.app.Activity);
@@ -45490,7 +45490,7 @@ package android.view {
    method public boolean onKeyUp(int, android.view.KeyEvent);
    method protected void onLayout(boolean, int, int, int, int);
    method protected void onMeasure(int, int);
    method public void onMovedToDisplay(int);
    method public void onMovedToDisplay(int, android.content.res.Configuration);
    method protected void onOverScrolled(int, int, boolean, boolean);
    method public void onPointerCaptureChange(boolean);
    method public void onPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+2 −2
Original line number Diff line number Diff line
@@ -3799,7 +3799,7 @@ package android.app {
    method public void onLowMemory();
    method public boolean onMenuItemSelected(int, android.view.MenuItem);
    method public boolean onMenuOpened(int, android.view.Menu);
    method public void onMovedToDisplay(int);
    method public void onMovedToDisplay(int, android.content.res.Configuration);
    method public void onMultiWindowModeChanged(boolean);
    method public boolean onNavigateUp();
    method public boolean onNavigateUpFromChild(android.app.Activity);
@@ -48945,7 +48945,7 @@ package android.view {
    method public boolean onKeyUp(int, android.view.KeyEvent);
    method protected void onLayout(boolean, int, int, int, int);
    method protected void onMeasure(int, int);
    method public void onMovedToDisplay(int);
    method public void onMovedToDisplay(int, android.content.res.Configuration);
    method protected void onOverScrolled(int, int, boolean, boolean);
    method public void onPointerCaptureChange(boolean);
    method public void onPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+2 −2
Original line number Diff line number Diff line
@@ -3675,7 +3675,7 @@ package android.app {
    method public void onLowMemory();
    method public boolean onMenuItemSelected(int, android.view.MenuItem);
    method public boolean onMenuOpened(int, android.view.Menu);
    method public void onMovedToDisplay(int);
    method public void onMovedToDisplay(int, android.content.res.Configuration);
    method public void onMultiWindowModeChanged(boolean);
    method public boolean onNavigateUp();
    method public boolean onNavigateUpFromChild(android.app.Activity);
@@ -45865,7 +45865,7 @@ package android.view {
    method public boolean onKeyUp(int, android.view.KeyEvent);
    method protected void onLayout(boolean, int, int, int, int);
    method protected void onMeasure(int, int);
    method public void onMovedToDisplay(int);
    method public void onMovedToDisplay(int, android.content.res.Configuration);
    method protected void onOverScrolled(int, int, boolean, boolean);
    method public void onPointerCaptureChange(boolean);
    method public void onPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
+11 −6
Original line number Diff line number Diff line
@@ -1990,27 +1990,32 @@ public class Activity extends ContextThemeWrapper
        }
    }

    void dispatchMovedToDisplay(int displayId) {
    void dispatchMovedToDisplay(int displayId, Configuration config) {
        updateDisplay(displayId);
        onMovedToDisplay(displayId);
        onMovedToDisplay(displayId, config);
    }

    /**
     * Called by the system when the activity is moved from one display to another without
     * recreation. This means that this activity is declared to handle all changes to configuration
     * that happened when it was switched to another display, so it wasn't destroyed and created
     * again. This call will be followed by {@link #onConfigurationChanged(Configuration)} if the
     * applied configuration actually changed.
     * again.
     *
     * <p>This call will be followed by {@link #onConfigurationChanged(Configuration)} if the
     * applied configuration actually changed. It is up to app developer to choose whether to handle
     * the change in this method or in the following {@link #onConfigurationChanged(Configuration)}
     * call.
     *
     * <p>Use this callback to track changes to the displays if some activity functionality relies
     * on an association with some display properties.
     *
     * @param displayId The id of the display to which activity was moved.
     * @param config Configuration of the activity resources on new display after move.
     *
     * @see #onConfigurationChanged(Configuration)
     * @see View#onMovedToDisplay(int)
     * @see View#onMovedToDisplay(int, Configuration)
     */
    public void onMovedToDisplay(int displayId) {
    public void onMovedToDisplay(int displayId, Configuration config) {
    }

    /**
+24 −18
Original line number Diff line number Diff line
@@ -4801,16 +4801,18 @@ public final class ActivityThread {
     *                      {@link ActivityClientRecord#overrideConfig}.
     * @param displayId The id of the display where the Activity currently resides.
     * @param movedToDifferentDisplay Indicates if the activity was moved to different display.
     * @return {@link Configuration} instance sent to client, null if not sent.
     */
    private void performConfigurationChangedForActivity(ActivityClientRecord r,
    private Configuration performConfigurationChangedForActivity(ActivityClientRecord r,
            Configuration newBaseConfig, int displayId, boolean movedToDifferentDisplay) {
        r.tmpConfig.setTo(newBaseConfig);
        if (r.overrideConfig != null) {
            r.tmpConfig.updateFrom(r.overrideConfig);
        }
        performActivityConfigurationChanged(r.activity, r.tmpConfig, r.overrideConfig, displayId,
                movedToDifferentDisplay);
        final Configuration reportedConfig = performActivityConfigurationChanged(r.activity,
                r.tmpConfig, r.overrideConfig, displayId, movedToDifferentDisplay);
        freeTextLayoutCachesIfNeeded(r.activity.mCurrentConfig.diff(r.tmpConfig));
        return reportedConfig;
    }

    /**
@@ -4864,9 +4866,11 @@ public final class ActivityThread {
     *                         ActivityManager.
     * @param displayId Id of the display where activity currently resides.
     * @param movedToDifferentDisplay Indicates if the activity was moved to different display.
     * @return Configuration sent to client, null if no changes and not moved to different display.
     */
    private void performActivityConfigurationChanged(Activity activity, Configuration newConfig,
            Configuration amOverrideConfig, int displayId, boolean movedToDifferentDisplay) {
    private Configuration performActivityConfigurationChanged(Activity activity,
            Configuration newConfig, Configuration amOverrideConfig, int displayId,
            boolean movedToDifferentDisplay) {
        if (activity == null) {
            throw new IllegalArgumentException("No activity provided.");
        }
@@ -4897,7 +4901,7 @@ public final class ActivityThread {
        }
        if (!shouldChangeConfig && !movedToDifferentDisplay) {
            // Nothing significant, don't proceed with updating and reporting.
            return;
            return null;
        }

        // Propagate the configuration change to ResourcesManager and Activity.
@@ -4920,22 +4924,22 @@ public final class ActivityThread {
        activity.mConfigChangeFlags = 0;
        activity.mCurrentConfig = new Configuration(newConfig);

        // Apply the ContextThemeWrapper override if necessary.
        // NOTE: Make sure the configurations are not modified, as they are treated as immutable
        // in many places.
        final Configuration configToReport = createNewConfigAndUpdateIfNotNull(newConfig,
                contextThemeWrapperOverrideConfig);

        if (!REPORT_TO_ACTIVITY) {
            // Not configured to report to activity.
            return;
            return configToReport;
        }

        if (movedToDifferentDisplay) {
            activity.dispatchMovedToDisplay(displayId);
            activity.dispatchMovedToDisplay(displayId, configToReport);
        }

        if (shouldChangeConfig) {
            // Apply the ContextThemeWrapper override if necessary.
            // NOTE: Make sure the configurations are not modified, as they are treated as immutable
            // in many places.
            final Configuration configToReport = createNewConfigAndUpdateIfNotNull(
                    newConfig, contextThemeWrapperOverrideConfig);

            activity.mCalled = false;
            activity.onConfigurationChanged(configToReport);
            if (!activity.mCalled) {
@@ -4943,6 +4947,8 @@ public final class ActivityThread {
                                " did not call through to super.onConfigurationChanged()");
            }
        }

        return configToReport;
    }

    public final void applyConfigurationToResources(Configuration config) {
@@ -5115,10 +5121,10 @@ public final class ActivityThread {
                    + r.activityInfo.name + ", displayId=" + displayId
                    + ", config=" + data.overrideConfig);

            performConfigurationChangedForActivity(r, mCompatConfiguration, displayId,
                    true /* movedToDifferentDisplay */);
            final Configuration reportedConfig = performConfigurationChangedForActivity(r,
                    mCompatConfiguration, displayId, true /* movedToDifferentDisplay */);
            if (viewRoot != null) {
                viewRoot.onMovedToDisplay(displayId);
                viewRoot.onMovedToDisplay(displayId, reportedConfig);
            }
        } else {
            if (DEBUG_CONFIGURATION) Slog.v(TAG, "Handle activity config changed: "
@@ -5128,7 +5134,7 @@ public final class ActivityThread {
        // Notify the ViewRootImpl instance about configuration changes. It may have initiated this
        // update to make sure that resources are updated before updating itself.
        if (viewRoot != null) {
            viewRoot.updateConfiguration();
            viewRoot.updateConfiguration(displayId);
        }
        mSomeActivitiesChanged = true;
    }
Loading