From 31acb3f1bd7f6c18d45e4439b753948a826ba3a9 Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Tue, 20 Nov 2018 15:23:55 -0800 Subject: [PATCH] Removed RootWindowContainerController/Listener files (41/n). A step towards merge RootWindowContainer and RootActivityContainer classes. Bug: 80414790 Test: Existing tests pass Change-Id: I58333f3867d9ab128cc113921fd4296df5f0928f --- .../server/wm/RootActivityContainer.java | 22 +++++---- .../server/wm/RootWindowContainer.java | 23 ++++++---- .../wm/RootWindowContainerController.java | 46 ------------------- .../wm/RootWindowContainerListener.java | 26 ----------- .../android/server/wm/ActivityTestsBase.java | 3 +- 5 files changed, 27 insertions(+), 93 deletions(-) delete mode 100644 services/core/java/com/android/server/wm/RootWindowContainerController.java delete mode 100644 services/core/java/com/android/server/wm/RootWindowContainerListener.java diff --git a/services/core/java/com/android/server/wm/RootActivityContainer.java b/services/core/java/com/android/server/wm/RootActivityContainer.java index bdfbc1495b30b..4dd48c46b8917 100644 --- a/services/core/java/com/android/server/wm/RootActivityContainer.java +++ b/services/core/java/com/android/server/wm/RootActivityContainer.java @@ -129,8 +129,8 @@ import java.util.Set; * TODO: This class is mostly temporary to separate things out of ActivityStackSupervisor.java. The * intention is to have this merged with RootWindowContainer.java as part of unifying the hierarchy. */ -class RootActivityContainer extends ConfigurationContainer implements - DisplayManager.DisplayListener, RootWindowContainerListener { +class RootActivityContainer extends ConfigurationContainer + implements DisplayManager.DisplayListener { private static final String TAG = TAG_WITH_CLASS_NAME ? "RootActivityContainer" : TAG_ATM; static final String TAG_TASKS = TAG + POSTFIX_TASKS; @@ -162,7 +162,8 @@ class RootActivityContainer extends ConfigurationContainer implements WindowManagerService mWindowManager; DisplayManager mDisplayManager; private DisplayManagerInternal mDisplayManagerInternal; - private RootWindowContainerController mWindowContainerController; + // TODO: Remove after object merge with RootWindowContainer. + private RootWindowContainer mRootWindowContainer; /** * List of displays which contain activities, sorted by z-order. @@ -224,13 +225,14 @@ class RootActivityContainer extends ConfigurationContainer implements } @VisibleForTesting - void setWindowContainerController(RootWindowContainerController controller) { - mWindowContainerController = controller; + void setWindowContainer(RootWindowContainer container) { + mRootWindowContainer = container; + mRootWindowContainer.setRootActivityContainer(this); } void setWindowManager(WindowManagerService wm) { mWindowManager = wm; - setWindowContainerController(new RootWindowContainerController(this)); + setWindowContainer(mWindowManager.mRoot); mDisplayManager = mService.mContext.getSystemService(DisplayManager.class); mDisplayManager.registerDisplayListener(this, mService.mH); mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class); @@ -1251,8 +1253,8 @@ class RootActivityContainer extends ConfigurationContainer implements return null; } - @Override - public void onChildPositionChanged(DisplayWindowController childController, int position) { + // TODO: remove after object merge with RootWindowContainer + void onChildPositionChanged(DisplayWindowController childController, int position) { // Assume AM lock is held from positionChildAt of controller in each hierarchy. final ActivityDisplay display = getActivityDisplay(childController.getDisplayId()); if (display != null) { @@ -1279,8 +1281,8 @@ class RootActivityContainer extends ConfigurationContainer implements @VisibleForTesting void addChild(ActivityDisplay activityDisplay, int position) { positionChildAt(activityDisplay, position); - mWindowContainerController.positionChildAt( - activityDisplay.getWindowContainerController(), position); + mRootWindowContainer.positionChildAt(position, + activityDisplay.getWindowContainerController().mContainer); } void removeChild(ActivityDisplay activityDisplay) { diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index b483fd3bc6420..08b3a2fb814a6 100644 --- a/services/core/java/com/android/server/wm/RootWindowContainer.java +++ b/services/core/java/com/android/server/wm/RootWindowContainer.java @@ -82,12 +82,16 @@ import java.util.ArrayList; import java.util.function.Consumer; /** Root {@link WindowContainer} for the device. */ -class RootWindowContainer extends WindowContainer { +class RootWindowContainer extends WindowContainer + implements ConfigurationContainerListener { private static final String TAG = TAG_WITH_CLASS_NAME ? "RootWindowContainer" : TAG_WM; private static final int SET_SCREEN_BRIGHTNESS_OVERRIDE = 1; private static final int SET_USER_ACTIVITY_TIMEOUT = 2; + // TODO: Remove after object merge with RootActivityContainer. + private RootActivityContainer mRootActivityContainer; + private Object mLastWindowFreezeSource = null; private Session mHoldScreen = null; private float mScreenBrightness = -1; @@ -145,6 +149,13 @@ class RootWindowContainer extends WindowContainer { mHandler = new MyHandler(service.mH.getLooper()); } + void setRootActivityContainer(RootActivityContainer container) { + mRootActivityContainer = container; + if (container != null) { + container.registerConfigurationChangeListener(this); + } + } + boolean updateFocusedWindowLocked(int mode, boolean updateInputWindows) { boolean changed = false; int topFocusedDisplayId = INVALID_DISPLAY; @@ -1015,9 +1026,8 @@ class RootWindowContainer extends WindowContainer { @Override void positionChildAt(int position, DisplayContent child, boolean includingParents) { super.positionChildAt(position, child, includingParents); - final RootWindowContainerController controller = getController(); - if (controller != null) { - controller.onChildPositionChanged(child, position); + if (mRootActivityContainer != null) { + mRootActivityContainer.onChildPositionChanged(child.getController(), position); } } @@ -1026,11 +1036,6 @@ class RootWindowContainer extends WindowContainer { super.positionChildAt(position, child, false /* includingParents */); } - @Override - RootWindowContainerController getController() { - return (RootWindowContainerController) super.getController(); - } - @Override void scheduleAnimation() { mService.scheduleAnimationLocked(); diff --git a/services/core/java/com/android/server/wm/RootWindowContainerController.java b/services/core/java/com/android/server/wm/RootWindowContainerController.java deleted file mode 100644 index 11762201852b8..0000000000000 --- a/services/core/java/com/android/server/wm/RootWindowContainerController.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server.wm; - -/** - * Controller for the root container. This is created by activity manager to link activity - * stack supervisor to the root window container they use in window manager. - */ -public class RootWindowContainerController - extends WindowContainerController { - - public RootWindowContainerController(RootWindowContainerListener listener) { - super(listener, WindowManagerService.getInstance()); - synchronized (mGlobalLock) { - mRoot.setController(this); - } - } - - void onChildPositionChanged(DisplayContent child, int position) { - // This callback invokes to AM directly so here assumes AM lock is held. If there is another - // path called only with WM lock, it should change to use handler to post or move outside of - // WM lock with adding AM lock. - mListener.onChildPositionChanged(child.getController(), position); - } - - /** Move the display to the given position. */ - public void positionChildAt(DisplayWindowController child, int position) { - synchronized (mGlobalLock) { - mContainer.positionChildAt(position, child.mContainer); - } - } -} diff --git a/services/core/java/com/android/server/wm/RootWindowContainerListener.java b/services/core/java/com/android/server/wm/RootWindowContainerListener.java deleted file mode 100644 index f413e3f7c2ea0..0000000000000 --- a/services/core/java/com/android/server/wm/RootWindowContainerListener.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server.wm; - -/** - * Interface used by the creator of {@link RootWindowContainerController} to notify the changes to - * the display container in activity manager. - */ -public interface RootWindowContainerListener extends WindowContainerListener { - /** Called when the z-order of display is changed. */ - void onChildPositionChanged(DisplayWindowController childController, int position); -} diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java index 4fc73bc201b3f..784981d48f760 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java @@ -410,8 +410,7 @@ class ActivityTestsBase { void initRootActivityContainerMocks(WindowManagerService wm) { spyOn(mRootActivityContainer); - mRootActivityContainer.setWindowContainerController( - mock(RootWindowContainerController.class)); + mRootActivityContainer.setWindowContainer(mock(RootWindowContainer.class)); mRootActivityContainer.mWindowManager = wm; mRootActivityContainer.mDisplayManager = (DisplayManager) mContext.getSystemService(Context.DISPLAY_SERVICE);