Revert "Allow opening activity to specify orientation."
This reverts commit f0a6fdbf53.
Reason for revert: Submitted before complete.
Change-Id: I545ff45b5e870c79d66884b7a2a80981293b1b24
This commit is contained in:
@@ -1899,22 +1899,11 @@ final class ActivityRecord implements AppWindowContainerListener {
|
||||
task.taskId, requestedOrientation);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the last reported global configuration to the client. Should be called whenever a new
|
||||
* global configuration is sent to the client for this activity.
|
||||
*/
|
||||
void setLastReportedGlobalConfiguration(@NonNull Configuration config) {
|
||||
// TODO: now used only in one place to address race-condition. Remove when that will be fixed.
|
||||
void setLastReportedConfiguration(@NonNull Configuration config) {
|
||||
mLastReportedConfiguration.setTo(config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the last reported merged configuration to the client. Should be called whenever a new
|
||||
* merged configuration is sent to the client for this activity.
|
||||
*/
|
||||
void setLastReportedMergedOverrideConfiguration(@NonNull Configuration config) {
|
||||
mLastReportedOverrideConfiguration.setTo(config);
|
||||
}
|
||||
|
||||
/** Call when override config was sent to the Window Manager to update internal records. */
|
||||
void onOverrideConfigurationSent() {
|
||||
mLastReportedOverrideConfiguration.setTo(task.getMergedOverrideConfiguration());
|
||||
|
||||
@@ -1333,18 +1333,10 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
|
||||
// Because we could be starting an Activity in the system process this may not go across
|
||||
// a Binder interface which would create a new Configuration. Consequently we have to
|
||||
// always create a new Configuration here.
|
||||
|
||||
final Configuration globalConfiguration =
|
||||
new Configuration(mService.getGlobalConfiguration());
|
||||
r.setLastReportedGlobalConfiguration(globalConfiguration);
|
||||
final Configuration mergedOverrideConfiguration =
|
||||
new Configuration(task.getMergedOverrideConfiguration());
|
||||
r.setLastReportedMergedOverrideConfiguration(mergedOverrideConfiguration);
|
||||
|
||||
app.thread.scheduleLaunchActivity(new Intent(r.intent), r.appToken,
|
||||
System.identityHashCode(r), r.info,
|
||||
globalConfiguration,
|
||||
mergedOverrideConfiguration, r.compat,
|
||||
new Configuration(mService.getGlobalConfiguration()),
|
||||
new Configuration(task.getMergedOverrideConfiguration()), r.compat,
|
||||
r.launchedFromPackage, task.voiceInteractor, app.repProcState, r.icicle,
|
||||
r.persistentState, results, newIntents, !andResume,
|
||||
mService.isNextTransitionForward(), profilerInfo);
|
||||
@@ -1739,7 +1731,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
|
||||
// We'll update with whatever configuration it now says
|
||||
// it used to launch.
|
||||
if (config != null) {
|
||||
r.setLastReportedGlobalConfiguration(config);
|
||||
r.setLastReportedConfiguration(config);
|
||||
}
|
||||
|
||||
// We are now idle. If someone is waiting for a thumbnail from
|
||||
|
||||
@@ -1151,11 +1151,10 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
|
||||
*/
|
||||
@Override
|
||||
int getOrientation() {
|
||||
if (fillsParent() && (isVisible() || mService.mOpeningApps.contains(this))) {
|
||||
return mOrientation;
|
||||
if (hidden || hiddenRequested) {
|
||||
return SCREEN_ORIENTATION_UNSET;
|
||||
}
|
||||
|
||||
return SCREEN_ORIENTATION_UNSET;
|
||||
return mOrientation;
|
||||
}
|
||||
|
||||
/** Returns the app's preferred orientation regardless of its currently visibility state. */
|
||||
|
||||
@@ -510,13 +510,14 @@ class WindowContainer<E extends WindowContainer> implements Comparable<WindowCon
|
||||
* specification...
|
||||
*/
|
||||
int getOrientation() {
|
||||
if (!fillsParent()) {
|
||||
// Ignore containers that don't completely fills their parents.
|
||||
|
||||
if (!fillsParent() || !isVisible()) {
|
||||
// Ignore invisible containers or containers that don't completely fills their parents.
|
||||
return SCREEN_ORIENTATION_UNSET;
|
||||
}
|
||||
|
||||
// The container fills its parent and is visible so we can use it orientation if it has one
|
||||
// specified; otherwise we prefer to use the orientation of its topmost child that has one
|
||||
// The container fills its parent so we can use it orientation if it has one specified,
|
||||
// otherwise we prefer to use the orientation of its topmost child that has one
|
||||
// specified and fall back on this container's unset or unspecified value as a candidate
|
||||
// if none of the children have a better candidate for the orientation.
|
||||
if (mOrientation != SCREEN_ORIENTATION_UNSET
|
||||
|
||||
@@ -2441,15 +2441,6 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the device orientation from the present app tokens.
|
||||
*
|
||||
* Note: A place this is method called is before an {@link android.app.Activity} starts to
|
||||
* ensure that it is created in the proper orientation. It is imperative that the present
|
||||
* {@link AppWindowToken} specify that they can influence the orientation, accomplished with the
|
||||
* override of {@link WindowContainer#canSpecifyOrientation()}. Visibility changes only will not
|
||||
* guarantee this as other operations (such as freezing the screen) can defer these operations.
|
||||
*/
|
||||
@Override
|
||||
public Configuration updateOrientationFromAppTokens(Configuration currentConfig,
|
||||
IBinder freezeThisOneIfNeeded, int displayId) {
|
||||
|
||||
@@ -387,32 +387,6 @@ public class WindowContainerTests extends WindowTestsBase {
|
||||
assertTrue(gotException);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetOrientation_childSpecified() throws Exception {
|
||||
testGetOrientation_childSpecifiedConfig(false, SCREEN_ORIENTATION_LANDSCAPE,
|
||||
SCREEN_ORIENTATION_LANDSCAPE);
|
||||
testGetOrientation_childSpecifiedConfig(false, SCREEN_ORIENTATION_UNSET,
|
||||
SCREEN_ORIENTATION_UNSET);
|
||||
}
|
||||
|
||||
private void testGetOrientation_childSpecifiedConfig(boolean childVisible, int childOrientation,
|
||||
int expectedOrientation) {
|
||||
final TestWindowContainerBuilder builder = new TestWindowContainerBuilder();
|
||||
final TestWindowContainer root = builder.setLayer(0).build();
|
||||
root.setFillsParent(true);
|
||||
|
||||
builder.setIsVisible(childVisible);
|
||||
|
||||
if (childOrientation != SCREEN_ORIENTATION_UNSET) {
|
||||
builder.setOrientation(childOrientation);
|
||||
}
|
||||
|
||||
final TestWindowContainer child1 = root.addChildWindow(builder);
|
||||
child1.setFillsParent(true);
|
||||
|
||||
assertTrue(root.getOrientation() == expectedOrientation);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetOrientation_Unset() throws Exception {
|
||||
final TestWindowContainerBuilder builder = new TestWindowContainerBuilder();
|
||||
@@ -433,17 +407,18 @@ public class WindowContainerTests extends WindowTestsBase {
|
||||
invisibleChild1VisibleAndSet.setOrientation(SCREEN_ORIENTATION_LANDSCAPE);
|
||||
// Landscape well because the container is visible and that is what we set on it above.
|
||||
assertEquals(SCREEN_ORIENTATION_LANDSCAPE, invisibleChild1VisibleAndSet.getOrientation());
|
||||
// Landscape because even though the container isn't visible it has a child that is
|
||||
// specifying it can influence the orientation by being visible.
|
||||
assertEquals(SCREEN_ORIENTATION_LANDSCAPE, invisible.getOrientation());
|
||||
// Landscape because the grandchild is visible and therefore can participate.
|
||||
assertEquals(SCREEN_ORIENTATION_LANDSCAPE, root.getOrientation());
|
||||
// Unset because the container isn't visible even though it has a child that thinks it is
|
||||
// visible.
|
||||
assertEquals(SCREEN_ORIENTATION_UNSET, invisible.getOrientation());
|
||||
// Unspecified because we are visible and we didn't specify an orientation and there isn't
|
||||
// a visible child.
|
||||
assertEquals(SCREEN_ORIENTATION_UNSPECIFIED, root.getOrientation());
|
||||
|
||||
builder.setIsVisible(true).setLayer(-3);
|
||||
final TestWindowContainer visibleUnset = root.addChildWindow(builder);
|
||||
visibleUnset.setOrientation(SCREEN_ORIENTATION_UNSET);
|
||||
assertEquals(SCREEN_ORIENTATION_UNSET, visibleUnset.getOrientation());
|
||||
assertEquals(SCREEN_ORIENTATION_LANDSCAPE, root.getOrientation());
|
||||
assertEquals(SCREEN_ORIENTATION_UNSPECIFIED, root.getOrientation());
|
||||
|
||||
}
|
||||
|
||||
@@ -715,7 +690,6 @@ public class WindowContainerTests extends WindowTestsBase {
|
||||
private boolean mIsAnimating;
|
||||
private boolean mIsVisible;
|
||||
private boolean mFillsParent;
|
||||
private Integer mOrientation;
|
||||
|
||||
private boolean mOnParentSetCalled;
|
||||
|
||||
@@ -734,13 +708,11 @@ public class WindowContainerTests extends WindowTestsBase {
|
||||
return 1;
|
||||
};
|
||||
|
||||
TestWindowContainer(int layer, boolean isAnimating, boolean isVisible,
|
||||
Integer orientation) {
|
||||
TestWindowContainer(int layer, boolean isAnimating, boolean isVisible) {
|
||||
mLayer = layer;
|
||||
mIsAnimating = isAnimating;
|
||||
mIsVisible = isVisible;
|
||||
mFillsParent = true;
|
||||
mOrientation = orientation;
|
||||
}
|
||||
|
||||
TestWindowContainer getParentWindow() {
|
||||
@@ -785,11 +757,6 @@ public class WindowContainerTests extends WindowTestsBase {
|
||||
return mIsVisible;
|
||||
}
|
||||
|
||||
@Override
|
||||
int getOrientation() {
|
||||
return mOrientation != null ? mOrientation : super.getOrientation();
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean fillsParent() {
|
||||
return mFillsParent;
|
||||
@@ -804,7 +771,6 @@ public class WindowContainerTests extends WindowTestsBase {
|
||||
private int mLayer;
|
||||
private boolean mIsAnimating;
|
||||
private boolean mIsVisible;
|
||||
private Integer mOrientation;
|
||||
|
||||
public TestWindowContainerBuilder() {
|
||||
reset();
|
||||
@@ -825,21 +791,15 @@ public class WindowContainerTests extends WindowTestsBase {
|
||||
return this;
|
||||
}
|
||||
|
||||
TestWindowContainerBuilder setOrientation(int orientation) {
|
||||
mOrientation = orientation;
|
||||
return this;
|
||||
}
|
||||
|
||||
TestWindowContainerBuilder reset() {
|
||||
mLayer = 0;
|
||||
mIsAnimating = false;
|
||||
mIsVisible = false;
|
||||
mOrientation = null;
|
||||
return this;
|
||||
}
|
||||
|
||||
TestWindowContainer build() {
|
||||
return new TestWindowContainer(mLayer, mIsAnimating, mIsVisible, mOrientation);
|
||||
return new TestWindowContainer(mLayer, mIsAnimating, mIsVisible);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user