OSDN Git Service

Merge "Add unit tests for 180 degree rotation"
authorAndrii Kulian <akulian@google.com>
Tue, 17 Jan 2017 19:31:55 +0000 (19:31 +0000)
committerAndroid (Google) Code Review <android-gerrit@google.com>
Tue, 17 Jan 2017 19:32:00 +0000 (19:32 +0000)
1  2 
services/core/java/com/android/server/am/ActivityStackSupervisor.java
services/core/java/com/android/server/am/ActivityStarter.java
services/core/java/com/android/server/wm/WindowManagerService.java
services/tests/servicestests/src/com/android/server/wm/WindowTestsBase.java

@@@ -242,42 -212,37 +242,74 @@@ class WindowTestsBase 
                      EMPTY /* overrideConfig*/, RESIZE_MODE_UNRESIZEABLE, false /* homeTask*/,
                      false /* isOnTopLauncher */, true /* toTop*/, true /* showForAllUsers */);
          }
 +
 +        @Override
 +        TestTask createTask(int taskId, TaskStack stack, int userId, Rect bounds,
 +                Configuration overrideConfig, int resizeMode, boolean homeTask,
 +                boolean isOnTopLauncher) {
 +            return new TestTask(taskId, stack, userId, mService, bounds, overrideConfig,
 +                    isOnTopLauncher, resizeMode, homeTask, this);
 +        }
 +    }
 +
 +    class TestAppWindowContainerController extends AppWindowContainerController {
 +
 +        final IApplicationToken mToken;
 +
 +        TestAppWindowContainerController(TestTaskWindowContainerController taskController) {
 +            this(taskController, new TestIApplicationToken());
 +        }
 +
 +        TestAppWindowContainerController(TestTaskWindowContainerController taskController,
 +                IApplicationToken token) {
 +            super(taskController, token, null /* listener */, 0 /* index */,
 +                    SCREEN_ORIENTATION_UNSPECIFIED, true /* fullscreen */,
 +                    true /* showForAllUsers */, 0 /* configChanges */, false /* voiceInteraction */,
 +                    false /* launchTaskBehind */, false /* alwaysFocusable */,
 +                    0 /* targetSdkVersion */, 0 /* rotationAnimationHint */,
 +                    0 /* inputDispatchingTimeoutNanos */, sWm);
 +            mToken = token;
 +        }
 +    }
 +
 +    class TestIApplicationToken implements IApplicationToken {
 +
 +        private final Binder mBinder = new Binder();
 +        @Override
 +        public IBinder asBinder() {
 +            return mBinder;
 +        }
      }
+     /** Used to track resize reports. */
+     class TestWindowState extends WindowState {
+         boolean resizeReported;
+         TestWindowState(WindowManager.LayoutParams attrs, WindowToken token) {
+             super(sWm, mMockSession, mIWindow, token, null, OP_NONE, 0, attrs, 0, 0);
+         }
+         @Override
+         void reportResized() {
+             super.reportResized();
+             resizeReported = true;
+         }
+         @Override
+         public boolean isGoneForLayoutLw() {
+             return false;
+         }
+         @Override
+         void updateResizingWindowIfNeeded() {
+             // Used in AppWindowTokenTests#testLandscapeSeascapeRotationRelayout to deceive
+             // the system that it can actually update the window.
+             boolean hadSurface = mHasSurface;
+             mHasSurface = true;
+             super.updateResizingWindowIfNeeded();
+             mHasSurface = hadSurface;
+         }
+     }
  }