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

Commit 4febde82 authored by Andrii Kulian's avatar Andrii Kulian Committed by Automerger Merge Worker
Browse files

Merge "Notify split controller about activity configuration change" into...

Merge "Notify split controller about activity configuration change" into sc-v2-dev am: b1d8c0c3 am: 5dda0d2b

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15379178

Change-Id: I0a3443478d083bf0bd50ea8104c78daf3938686c
parents 0d16767c 5dda0d2b
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -1518,6 +1518,17 @@ public class Activity extends ContextThemeWrapper
        getApplication().dispatchActivityPostDestroyed(this);
    }

    private void dispatchActivityConfigurationChanged() {
        getApplication().dispatchActivityConfigurationChanged(this);
        Object[] callbacks = collectActivityLifecycleCallbacks();
        if (callbacks != null) {
            for (int i = 0; i < callbacks.length; i++) {
                ((Application.ActivityLifecycleCallbacks) callbacks[i])
                        .onActivityConfigurationChanged(this);
            }
        }
    }

    private Object[] collectActivityLifecycleCallbacks() {
        Object[] callbacks = null;
        synchronized (mActivityLifecycleCallbacks) {
@@ -2944,6 +2955,8 @@ public class Activity extends ContextThemeWrapper
            // view changes from above.
            mActionBar.onConfigurationChanged(newConfig);
        }

        dispatchActivityConfigurationChanged();
    }

    /**
+17 −0
Original line number Diff line number Diff line
@@ -205,6 +205,13 @@ public class Application extends ContextWrapper implements ComponentCallbacks2 {
         */
        default void onActivityPostDestroyed(@NonNull Activity activity) {
        }

        /**
         * Called when the Activity configuration was changed.
         * @hide
         */
        default void onActivityConfigurationChanged(@NonNull Activity activity) {
        }
    }

    /**
@@ -554,6 +561,16 @@ public class Application extends ContextWrapper implements ComponentCallbacks2 {
        }
    }

    /* package */ void dispatchActivityConfigurationChanged(@NonNull Activity activity) {
        Object[] callbacks = collectActivityLifecycleCallbacks();
        if (callbacks != null) {
            for (int i = 0; i < callbacks.length; i++) {
                ((ActivityLifecycleCallbacks) callbacks[i]).onActivityConfigurationChanged(
                        activity);
            }
        }
    }

    @UnsupportedAppUsage
    private Object[] collectActivityLifecycleCallbacks() {
        Object[] callbacks = null;
+23 −0
Original line number Diff line number Diff line
@@ -212,6 +212,20 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
        updateCallbackIfNecessary();
    }

    private void onActivityConfigurationChanged(@NonNull Activity activity) {
        final TaskFragmentContainer currentContainer = getContainerWithActivity(
                activity.getActivityToken());

        if (currentContainer != null) {
            // Changes to activities in controllers are handled in
            // onTaskFragmentParentInfoChanged
            return;
        }

        // Check if activity requires a placeholder
        launchPlaceholderIfNecessary(activity);
    }

    /**
     * Returns a container that this activity is registered with. An activity can only belong to one
     * container, or no container at all.
@@ -545,6 +559,10 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen

        @Override
        public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
        }

        @Override
        public void onActivityPostCreated(Activity activity, Bundle savedInstanceState) {
            // Calling after Activity#onCreate is complete to allow the app launch something
            // first. In case of a configured placeholder activity we want to make sure
            // that we don't launch it if an activity itself already requested something to be
@@ -575,5 +593,10 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
        @Override
        public void onActivityDestroyed(Activity activity) {
        }

        @Override
        public void onActivityConfigurationChanged(Activity activity) {
            SplitController.this.onActivityConfigurationChanged(activity);
        }
    }
}