diff options
| author | 2019-10-12 21:14:58 +0000 | |
|---|---|---|
| committer | 2019-10-12 21:14:58 +0000 | |
| commit | eefabdd021c82fb9cdbcfe6bef250e4e7d3bdf92 (patch) | |
| tree | d45de5f4dbe3e37d00fafc4b325870a35bcb3c09 | |
| parent | 295e970001e742552d8f04237ecda04ab42835df (diff) | |
| parent | 3198da4283b42443a43a78c424303bb272a86e42 (diff) | |
Merge "Make Task have type ActivityRecord children (55/n)"
14 files changed, 49 insertions, 73 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 74762494e61d..16e617c626db 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -1253,7 +1253,7 @@ final class ActivityRecord extends AppWindowToken { boolean setOccludesParent(boolean occludesParent) { final boolean changed = super.setOccludesParent(occludesParent); - if (changed) { + if (changed && task != null) { if (!occludesParent) { getActivityStack().convertActivityToTranslucent(this); } @@ -3542,7 +3542,7 @@ final class ActivityRecord extends AppWindowToken { super.resolveOverrideConfiguration(newParentConfiguration); // If the activity has override bounds, the relative configuration (e.g. screen size, // layout) needs to be resolved according to the bounds. - if (!matchParentBounds()) { + if (task != null && !matchParentBounds()) { task.computeConfigResourceOverrides(getResolvedOverrideConfiguration(), newParentConfiguration); } diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java index a261341cfa53..80a295d8f0ad 100644 --- a/services/core/java/com/android/server/wm/AppWindowToken.java +++ b/services/core/java/com/android/server/wm/AppWindowToken.java @@ -1420,7 +1420,7 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree mReparenting = true; getParent().removeChild(this); - task.addChild(this, position); + task.addChild((ActivityRecord) this, position); mReparenting = false; diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index a181c1837af7..c5e9edb7727e 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -58,7 +58,7 @@ import com.android.internal.annotations.VisibleForTesting; import java.io.PrintWriter; import java.util.function.Consumer; -class Task extends WindowContainer<AppWindowToken> implements ConfigurationContainerListener{ +class Task extends WindowContainer<ActivityRecord> implements ConfigurationContainerListener{ static final String TAG = TAG_WITH_CLASS_NAME ? "Task" : TAG_WM; // TODO: Track parent marks like this in WindowContainer. @@ -170,14 +170,14 @@ class Task extends WindowContainer<AppWindowToken> implements ConfigurationConta } @Override - void addChild(AppWindowToken wtoken, int position) { + void addChild(ActivityRecord child, int position) { position = getAdjustedAddPosition(position); - super.addChild(wtoken, position); + super.addChild(child, position); mDeferRemoval = false; } @Override - void positionChildAt(int position, AppWindowToken child, boolean includingParents) { + void positionChildAt(int position, ActivityRecord child, boolean includingParents) { position = getAdjustedAddPosition(position); super.positionChildAt(position, child, includingParents); mDeferRemoval = false; @@ -279,13 +279,13 @@ class Task extends WindowContainer<AppWindowToken> implements ConfigurationConta } @Override - void removeChild(AppWindowToken token) { - if (!mChildren.contains(token)) { + void removeChild(ActivityRecord child) { + if (!mChildren.contains(child)) { Slog.e(TAG, "removeChild: token=" + this + " not found."); return; } - super.removeChild(token); + super.removeChild(child); if (mChildren.isEmpty()) { EventLog.writeEvent(WM_TASK_REMOVED, mTaskId, "removeAppToken: last token"); @@ -674,18 +674,18 @@ class Task extends WindowContainer<AppWindowToken> implements ConfigurationConta return null; } - void positionChildAtTop(AppWindowToken aToken) { - positionChildAt(aToken, POSITION_TOP); + void positionChildAtTop(ActivityRecord child) { + positionChildAt(child, POSITION_TOP); } - void positionChildAt(AppWindowToken aToken, int position) { - if (aToken == null) { + void positionChildAt(ActivityRecord child, int position) { + if (child == null) { Slog.w(TAG_WM, "Attempted to position of non-existing app"); return; } - positionChildAt(position, aToken, false /* includeParents */); + positionChildAt(position, child, false /* includeParents */); } void forceWindowsScaleable(boolean force) { 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 77fbdcf8ff52..d43fe63c04d1 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java @@ -215,23 +215,6 @@ class ActivityTestsBase extends SystemServiceTestsBase { return this; } - static Pair<Intent, ActivityInfo> createIntentAndActivityInfo() { - // TODO: Look into consolidating with dup. code in build() method below. - final int id = sCurrentActivityId++; - final ComponentName component = ComponentName.createRelative( - DEFAULT_COMPONENT_PACKAGE_NAME, DEFAULT_COMPONENT_CLASS_NAME + id); - - final Intent intent = new Intent(); - intent.setComponent(component); - - final ActivityInfo aInfo = new ActivityInfo(); - aInfo.applicationInfo = new ApplicationInfo(); - aInfo.applicationInfo.packageName = component.getPackageName(); - aInfo.applicationInfo.targetSdkVersion = Build.VERSION_CODES.CUR_DEVELOPMENT; - aInfo.packageName = component.getPackageName(); - return new Pair<>(intent, aInfo); - } - ActivityRecord build() { if (mComponent == null) { final int id = sCurrentActivityId++; @@ -249,6 +232,7 @@ class ActivityTestsBase extends SystemServiceTestsBase { intent.setComponent(mComponent); final ActivityInfo aInfo = new ActivityInfo(); aInfo.applicationInfo = new ApplicationInfo(); + aInfo.applicationInfo.targetSdkVersion = Build.VERSION_CODES.CUR_DEVELOPMENT; aInfo.applicationInfo.packageName = mComponent.getPackageName(); aInfo.applicationInfo.uid = mUid; aInfo.packageName = mComponent.getPackageName(); diff --git a/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java index 650a911f4a20..b174251d5ecf 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppChangeTransitionTests.java @@ -57,7 +57,7 @@ public class AppChangeTransitionTests extends WindowTestsBase { private TaskStack mStack; private Task mTask; - private AppWindowToken mToken; + private ActivityRecord mToken; public void setUpOnDisplay(DisplayContent dc) { mStack = createTaskStackOnDisplay(WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_STANDARD, dc); diff --git a/services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java index 605d52045d50..14939cccda1b 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppTransitionControllerTest.java @@ -101,10 +101,10 @@ public class AppTransitionControllerTest extends WindowTestsBase { @Test @FlakyTest(bugId = 131005232) public void testTransitWithinTask() { - final AppWindowToken opening = createAppWindowToken(mDisplayContent, + final ActivityRecord opening = createAppWindowToken(mDisplayContent, WINDOWING_MODE_FREEFORM, ACTIVITY_TYPE_STANDARD); opening.setOccludesParent(false); - final AppWindowToken closing = createAppWindowToken(mDisplayContent, + final ActivityRecord closing = createAppWindowToken(mDisplayContent, WINDOWING_MODE_FREEFORM, ACTIVITY_TYPE_STANDARD); closing.setOccludesParent(false); final Task task = opening.getTask(); diff --git a/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java index 72d9bd0aaf8a..9d53676e05e4 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java @@ -159,7 +159,7 @@ public class AppTransitionTests extends WindowTestsBase { final TaskStack stack1 = createTaskStackOnDisplay(dc1); final Task task1 = createTaskInStack(stack1, 0 /* userId */); - final AppWindowToken token1 = + final ActivityRecord token1 = WindowTestUtils.createTestAppWindowToken(dc1); task1.addChild(token1, 0); diff --git a/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java b/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java index 26617355cfbf..b4c978facdf5 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenTests.java @@ -77,7 +77,7 @@ public class AppWindowTokenTests extends WindowTestsBase { TaskStack mStack; Task mTask; - AppWindowToken mToken; + ActivityRecord mToken; private final String mPackageName = getInstrumentation().getTargetContext().getPackageName(); @@ -410,7 +410,7 @@ public class AppWindowTokenTests extends WindowTestsBase { } private AppWindowToken createTestAppWindowTokenForGivenTask(Task task) { - final AppWindowToken appToken = + final ActivityRecord appToken = WindowTestUtils.createTestAppWindowToken(mDisplayContent); task.addChild(appToken, 0); waitUntilHandlersIdle(); diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java index 2ba3cbdadad4..f12c349ffd85 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java @@ -241,7 +241,7 @@ public class DisplayContentTests extends WindowTestsBase { assertEquals(dc, stack.getDisplayContent()); final Task task = createTaskInStack(stack, 0 /* userId */); - final AppWindowToken token = WindowTestUtils.createTestAppWindowToken(dc); + final ActivityRecord token = WindowTestUtils.createTestAppWindowToken(dc); task.addChild(token, 0); assertEquals(dc, task.getDisplayContent()); assertEquals(dc, token.getDisplayContent()); @@ -313,7 +313,7 @@ public class DisplayContentTests extends WindowTestsBase { // Add stack with activity. final TaskStack stack0 = createTaskStackOnDisplay(dc0); final Task task0 = createTaskInStack(stack0, 0 /* userId */); - final AppWindowToken token = + final ActivityRecord token = WindowTestUtils.createTestAppWindowToken(dc0); task0.addChild(token, 0); dc0.configureDisplayPolicy(); @@ -321,7 +321,7 @@ public class DisplayContentTests extends WindowTestsBase { final TaskStack stack1 = createTaskStackOnDisplay(dc1); final Task task1 = createTaskInStack(stack1, 0 /* userId */); - final AppWindowToken token1 = + final ActivityRecord token1 = WindowTestUtils.createTestAppWindowToken(dc0); task1.addChild(token1, 0); dc1.configureDisplayPolicy(); @@ -682,16 +682,15 @@ public class DisplayContentTests extends WindowTestsBase { // is appWin & null on the other display. mDisplayContent.setInputMethodWindowLocked(mImeWindow); newDisplay.setInputMethodWindowLocked(null); - assertTrue("appWin should be IME target window", - appWin.equals(mDisplayContent.mInputMethodTarget)); + assertEquals("appWin should be IME target window", + appWin, mDisplayContent.mInputMethodTarget); assertNull("newDisplay Ime target: ", newDisplay.mInputMethodTarget); // Switch input method window on new display & make sure the input method target also // switched as expected. newDisplay.setInputMethodWindowLocked(mImeWindow); mDisplayContent.setInputMethodWindowLocked(null); - assertTrue("appWin1 should be IME target window", - appWin1.equals(newDisplay.mInputMethodTarget)); + assertEquals("appWin1 should be IME target window", appWin1, newDisplay.mInputMethodTarget); assertNull("default display Ime target: ", mDisplayContent.mInputMethodTarget); } diff --git a/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java index 304df22bfd7b..452e06fc881b 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java @@ -96,7 +96,7 @@ public class DragDropControllerTests extends WindowTestsBase { * Creates a window state which can be used as a drop target. */ private WindowState createDropTargetWindow(String name, int ownerId) { - final AppWindowToken token = WindowTestUtils.createTestAppWindowToken( + final ActivityRecord token = WindowTestUtils.createTestAppWindowToken( mDisplayContent); final TaskStack stack = createTaskStackOnDisplay( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, mDisplayContent); diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskStackContainersTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskStackContainersTests.java index 92ddb35afd04..eef680be9410 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskStackContainersTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskStackContainersTests.java @@ -54,7 +54,7 @@ public class TaskStackContainersTests extends WindowTestsBase { // Stack should contain visible app window to be considered visible. final Task pinnedTask = createTaskInStack(mPinnedStack, 0 /* userId */); assertFalse(mPinnedStack.isVisible()); - final AppWindowToken pinnedApp = + final ActivityRecord pinnedApp = WindowTestUtils.createTestAppWindowToken(mDisplayContent); pinnedTask.addChild(pinnedApp, 0 /* addPos */); assertTrue(mPinnedStack.isVisible()); diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java index 2eb6ea4dfee9..d045073b5f78 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskStackTests.java @@ -68,13 +68,13 @@ public class TaskStackTests extends WindowTestsBase { public void testClosingAppDifferentStackOrientation() { final TaskStack stack = createTaskStackOnDisplay(mDisplayContent); final Task task1 = createTaskInStack(stack, 0 /* userId */); - AppWindowToken appWindowToken1 = + ActivityRecord appWindowToken1 = WindowTestUtils.createTestAppWindowToken(mDisplayContent); task1.addChild(appWindowToken1, 0); appWindowToken1.setOrientation(SCREEN_ORIENTATION_LANDSCAPE); final Task task2 = createTaskInStack(stack, 1 /* userId */); - AppWindowToken appWindowToken2 = + ActivityRecord appWindowToken2 = WindowTestUtils.createTestAppWindowToken(mDisplayContent); task2.addChild(appWindowToken2, 0); appWindowToken2.setOrientation(SCREEN_ORIENTATION_PORTRAIT); @@ -88,13 +88,13 @@ public class TaskStackTests extends WindowTestsBase { public void testMoveTaskToBackDifferentStackOrientation() { final TaskStack stack = createTaskStackOnDisplay(mDisplayContent); final Task task1 = createTaskInStack(stack, 0 /* userId */); - AppWindowToken appWindowToken1 = + ActivityRecord appWindowToken1 = WindowTestUtils.createTestAppWindowToken(mDisplayContent); task1.addChild(appWindowToken1, 0); appWindowToken1.setOrientation(SCREEN_ORIENTATION_LANDSCAPE); final Task task2 = createTaskInStack(stack, 1 /* userId */); - AppWindowToken appWindowToken2 = + ActivityRecord appWindowToken2 = WindowTestUtils.createTestAppWindowToken(mDisplayContent); task2.addChild(appWindowToken2, 0); appWindowToken2.setOrientation(SCREEN_ORIENTATION_PORTRAIT); diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestUtils.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestUtils.java index c627c1938438..f44c969b442b 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowTestUtils.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestUtils.java @@ -19,17 +19,11 @@ package com.android.server.wm; import static android.app.AppOpsManager.OP_NONE; import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE; -import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock; -import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; -import static com.android.server.wm.ActivityTestsBase.ActivityBuilder.createIntentAndActivityInfo; import static com.android.server.wm.WindowContainer.POSITION_TOP; import android.app.ActivityManager; -import android.content.Intent; -import android.content.pm.ActivityInfo; import android.os.IBinder; -import android.util.Pair; import android.view.IWindow; import android.view.WindowManager; @@ -51,23 +45,22 @@ class WindowTestUtils { } /** Creates an {@link AppWindowToken} and adds it to the specified {@link Task}. */ - static AppWindowToken createAppWindowTokenInTask(DisplayContent dc, Task task) { - final AppWindowToken newToken = createTestAppWindowToken(dc); + static ActivityRecord createAppWindowTokenInTask(DisplayContent dc, Task task) { + final ActivityRecord newToken = createTestAppWindowToken(dc); task.addChild(newToken, POSITION_TOP); return newToken; } - static AppWindowToken createTestAppWindowToken(DisplayContent dc) { + static ActivityRecord createTestAppWindowToken(DisplayContent dc) { synchronized (dc.mWmService.mGlobalLock) { - Pair<Intent, ActivityInfo> pair = createIntentAndActivityInfo(); - final AppWindowToken token = new AppWindowToken(dc.mWmService, - dc.mWmService.mAtmService, new ActivityRecord.Token(pair.first), pair.second, - null, pair.first, dc); - token.setOccludesParent(true); - token.setHidden(false); - token.hiddenRequested = false; - spyOn(token); - return token; + final ActivityRecord r = + new ActivityTestsBase.ActivityBuilder(dc.mWmService.mAtmService) + .build(); + r.onDisplayChanged(dc); + r.setOccludesParent(true); + r.setHidden(false); + r.hiddenRequested = false; + return r; } } diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java index 4c4b21e49165..1fce46c69b7a 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java @@ -204,15 +204,15 @@ class WindowTestsBase extends SystemServiceTestsBase { } } - AppWindowToken createAppWindowToken(DisplayContent dc, int windowingMode, int activityType) { + ActivityRecord createAppWindowToken(DisplayContent dc, int windowingMode, int activityType) { return createTestAppWindowToken(dc, windowingMode, activityType); } - AppWindowToken createTestAppWindowToken(DisplayContent dc, int + ActivityRecord createTestAppWindowToken(DisplayContent dc, int windowingMode, int activityType) { final TaskStack stack = createTaskStackOnDisplay(windowingMode, activityType, dc); final Task task = createTaskInStack(stack, 0 /* userId */); - final AppWindowToken appWindowToken = + final ActivityRecord appWindowToken = WindowTestUtils.createTestAppWindowToken(dc); task.addChild(appWindowToken, 0); return appWindowToken; @@ -244,7 +244,7 @@ class WindowTestsBase extends SystemServiceTestsBase { WindowState createAppWindow(Task task, int type, String name) { synchronized (mWm.mGlobalLock) { - final AppWindowToken token = WindowTestUtils.createTestAppWindowToken(mDisplayContent); + final ActivityRecord token = WindowTestUtils.createTestAppWindowToken(mDisplayContent); task.addChild(token, 0); return createWindow(null, type, token, name); } |