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

Commit e570501b authored by Charles Chen's avatar Charles Chen Committed by Automerger Merge Worker
Browse files

Merge "Revert "Fix testRegisterComponentCallbacksOnWindowContext flaky"" into...

Merge "Revert "Fix testRegisterComponentCallbacksOnWindowContext flaky"" into tm-dev am: bf10e8cc am: c68f420b

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



Change-Id: I3f30f39d03b4af3fcea373aa43c8777529f32d39
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 495d05a4 c68f420b
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -165,11 +165,10 @@ public abstract class WindowProviderService extends Service implements WindowPro
        }
    }

    // Suppress the lint because ths is overridden from Context.
    @SuppressLint("OnNameExpected")
    @Override
    @Nullable
    public Object getSystemService(@NonNull String name) {
    // Suppress the lint because ths is overridden from Context.
    public @Nullable Object getSystemService(@NonNull String name) {
        if (WINDOW_SERVICE.equals(name)) {
            return mWindowManager;
        }
+4 −4
Original line number Diff line number Diff line
@@ -91,6 +91,7 @@ public class WindowTokenClient extends IWindowToken.Stub {
            throw new IllegalStateException("Context is already attached.");
        }
        mContextRef = new WeakReference<>(context);
        mConfiguration.setTo(context.getResources().getConfiguration());
        mShouldDumpConfigForIme = Build.IS_DEBUGGABLE
                && context instanceof AbstractInputMethodService;
    }
@@ -111,8 +112,7 @@ public class WindowTokenClient extends IWindowToken.Stub {
            if (configuration == null) {
                return false;
            }
            mHandler.runWithScissors(() -> onConfigurationChanged(configuration, displayId,
                    false /* shouldReportConfigChange */), 0 /* timeout */);
            onConfigurationChanged(configuration, displayId, false /* shouldReportConfigChange */);
            mAttachToWindowContainer = true;
            return true;
        } catch (RemoteException e) {
@@ -137,8 +137,8 @@ public class WindowTokenClient extends IWindowToken.Stub {
            if (configuration == null) {
                return false;
            }
            mHandler.runWithScissors(() -> onConfigurationChanged(configuration, displayId,
                    false /* shouldReportConfigChange */), 0 /* timeout */);
            mHandler.post(() -> onConfigurationChanged(configuration, displayId,
                    false /* shouldReportConfigChange */));
            mAttachToWindowContainer = true;
            return true;
        } catch (RemoteException e) {
+2 −9
Original line number Diff line number Diff line
@@ -637,20 +637,13 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> {
    }

    void registerConfigurationChangeListener(ConfigurationContainerListener listener) {
        registerConfigurationChangeListener(listener, true /* shouldDispatchConfig */);
    }

    void registerConfigurationChangeListener(ConfigurationContainerListener listener,
            boolean shouldDispatchConfig) {
        if (mChangeListeners.contains(listener)) {
            return;
        }
        mChangeListeners.add(listener);
        if (shouldDispatchConfig) {
        listener.onRequestedOverrideConfigurationChanged(mResolvedOverrideConfiguration);
        listener.onMergedOverrideConfigurationChanged(mMergedOverrideConfiguration);
    }
    }

    void unregisterConfigurationChangeListener(ConfigurationContainerListener listener) {
        mChangeListeners.remove(listener);
+2 −9
Original line number Diff line number Diff line
@@ -3747,21 +3747,14 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
    }

    void registerWindowContainerListener(WindowContainerListener listener) {
        registerWindowContainerListener(listener, true /* shouldPropConfig */);
    }

    void registerWindowContainerListener(WindowContainerListener listener,
            boolean shouldDispatchConfig) {
        if (mListeners.contains(listener)) {
            return;
        }
        mListeners.add(listener);
        // Also register to ConfigurationChangeListener to receive configuration changes.
        registerConfigurationChangeListener(listener, shouldDispatchConfig);
        if (shouldDispatchConfig) {
        registerConfigurationChangeListener(listener);
        listener.onDisplayChanged(getDisplayContent());
    }
    }

    void unregisterWindowContainerListener(WindowContainerListener listener) {
        mListeners.remove(listener);
+3 −20
Original line number Diff line number Diff line
@@ -68,16 +68,6 @@ class WindowContextListenerController {
    @VisibleForTesting
    final ArrayMap<IBinder, WindowContextListenerImpl> mListeners = new ArrayMap<>();

    /**
     * @see #registerWindowContainerListener(IBinder, WindowContainer, int, int, Bundle, boolean)
     */
    void registerWindowContainerListener(@NonNull IBinder clientToken,
            @NonNull WindowContainer<?> container, int ownerUid, @WindowType int type,
            @Nullable Bundle options) {
        registerWindowContainerListener(clientToken, container, ownerUid, type, options,
                true /* shouDispatchConfigWhenRegistering */);
    }

    /**
     * Registers the listener to a {@code container} which is associated with
     * a {@code clientToken}, which is a {@link android.window.WindowContext} representation. If the
@@ -90,18 +80,15 @@ class WindowContextListenerController {
     * @param ownerUid the caller UID
     * @param type the window type
     * @param options a bundle used to pass window-related options.
     * @param shouDispatchConfigWhenRegistering {@code true} to indicate the current
     *                {@code container}'s config will dispatch to the client side when
     *                registering the {@link WindowContextListenerImpl}
     */
    void registerWindowContainerListener(@NonNull IBinder clientToken,
            @NonNull WindowContainer<?> container, int ownerUid, @WindowType int type,
            @Nullable Bundle options, boolean shouDispatchConfigWhenRegistering) {
            @Nullable Bundle options) {
        WindowContextListenerImpl listener = mListeners.get(clientToken);
        if (listener == null) {
            listener = new WindowContextListenerImpl(clientToken, container, ownerUid, type,
                    options);
            listener.register(shouDispatchConfigWhenRegistering);
            listener.register();
        } else {
            listener.updateContainer(container);
        }
@@ -241,16 +228,12 @@ class WindowContextListenerController {
        }

        private void register() {
            register(true /* shouldDispatchConfig */);
        }

        private void register(boolean shouldDispatchConfig) {
            final IBinder token = mClientToken.asBinder();
            if (mDeathRecipient == null) {
                throw new IllegalStateException("Invalid client token: " + token);
            }
            mListeners.putIfAbsent(token, this);
            mContainer.registerWindowContainerListener(this, shouldDispatchConfig);
            mContainer.registerWindowContainerListener(this);
        }

        private void unregister() {
Loading