Merge "Add disable2 flag for rotate suggestions" into pi-dev
This commit is contained in:
@@ -74,11 +74,12 @@ public class StatusBarManager {
|
||||
public static final int DISABLE2_SYSTEM_ICONS = 1 << 1;
|
||||
public static final int DISABLE2_NOTIFICATION_SHADE = 1 << 2;
|
||||
public static final int DISABLE2_GLOBAL_ACTIONS = 1 << 3;
|
||||
public static final int DISABLE2_ROTATE_SUGGESTIONS = 1 << 4;
|
||||
|
||||
public static final int DISABLE2_NONE = 0x00000000;
|
||||
|
||||
public static final int DISABLE2_MASK = DISABLE2_QUICK_SETTINGS | DISABLE2_SYSTEM_ICONS
|
||||
| DISABLE2_NOTIFICATION_SHADE | DISABLE2_GLOBAL_ACTIONS;
|
||||
| DISABLE2_NOTIFICATION_SHADE | DISABLE2_GLOBAL_ACTIONS | DISABLE2_ROTATE_SUGGESTIONS;
|
||||
|
||||
@IntDef(flag = true, prefix = { "DISABLE2_" }, value = {
|
||||
DISABLE2_NONE,
|
||||
@@ -86,7 +87,8 @@ public class StatusBarManager {
|
||||
DISABLE2_QUICK_SETTINGS,
|
||||
DISABLE2_SYSTEM_ICONS,
|
||||
DISABLE2_NOTIFICATION_SHADE,
|
||||
DISABLE2_GLOBAL_ACTIONS
|
||||
DISABLE2_GLOBAL_ACTIONS,
|
||||
DISABLE2_ROTATE_SUGGESTIONS
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface Disable2Flags {}
|
||||
|
||||
@@ -114,6 +114,7 @@ public class NavigationBarFragment extends Fragment implements Callbacks {
|
||||
private static final boolean DEBUG = false;
|
||||
private static final boolean DEBUG_ROTATION = true;
|
||||
private static final String EXTRA_DISABLE_STATE = "disabled_state";
|
||||
private static final String EXTRA_DISABLE2_STATE = "disabled2_state";
|
||||
|
||||
private final static int BUTTON_FADE_IN_OUT_DURATION_MS = 100;
|
||||
private final static int NAVBAR_HIDDEN_PENDING_ICON_TIMEOUT_MS = 20000;
|
||||
@@ -137,6 +138,7 @@ public class NavigationBarFragment extends Fragment implements Callbacks {
|
||||
private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
|
||||
|
||||
private int mDisabledFlags1;
|
||||
private int mDisabledFlags2;
|
||||
private StatusBar mStatusBar;
|
||||
private Recents mRecents;
|
||||
private Divider mDivider;
|
||||
@@ -212,6 +214,7 @@ public class NavigationBarFragment extends Fragment implements Callbacks {
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
mDisabledFlags1 = savedInstanceState.getInt(EXTRA_DISABLE_STATE, 0);
|
||||
mDisabledFlags2 = savedInstanceState.getInt(EXTRA_DISABLE2_STATE, 0);
|
||||
}
|
||||
mAssistManager = Dependency.get(AssistManager.class);
|
||||
mOverviewProxyService = Dependency.get(OverviewProxyService.class);
|
||||
@@ -277,6 +280,8 @@ public class NavigationBarFragment extends Fragment implements Callbacks {
|
||||
prepareNavigationBarView();
|
||||
checkNavBarModes();
|
||||
|
||||
setDisabled2Flags(mDisabledFlags2);
|
||||
|
||||
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
|
||||
filter.addAction(Intent.ACTION_SCREEN_ON);
|
||||
getContext().registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL, filter, null, null);
|
||||
@@ -296,6 +301,7 @@ public class NavigationBarFragment extends Fragment implements Callbacks {
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putInt(EXTRA_DISABLE_STATE, mDisabledFlags1);
|
||||
outState.putInt(EXTRA_DISABLE2_STATE, mDisabledFlags2);
|
||||
if (mNavigationBarView != null) {
|
||||
mNavigationBarView.getLightTransitionsController().saveState(outState);
|
||||
}
|
||||
@@ -398,15 +404,20 @@ public class NavigationBarFragment extends Fragment implements Callbacks {
|
||||
@Override
|
||||
public void onRotationProposal(final int rotation, boolean isValid) {
|
||||
final int winRotation = mWindowManager.getDefaultDisplay().getRotation();
|
||||
final boolean rotateSuggestionsDisabled = hasDisable2RotateSuggestionFlag(mDisabledFlags2);
|
||||
if (DEBUG_ROTATION) {
|
||||
Log.v(TAG, "onRotationProposal proposedRotation=" + Surface.rotationToString(rotation)
|
||||
+ ", winRotation=" + Surface.rotationToString(winRotation)
|
||||
+ ", isValid=" + isValid + ", mNavBarWindowState="
|
||||
+ StatusBarManager.windowStateToString(mNavigationBarWindowState)
|
||||
+ ", rotateSuggestionsDisabled=" + rotateSuggestionsDisabled
|
||||
+ ", isRotateButtonVisible=" + (mNavigationBarView == null ? "null" :
|
||||
mNavigationBarView.isRotateButtonVisible()));
|
||||
}
|
||||
|
||||
// Respect the disabled flag, no need for action as flag change callback will handle hiding
|
||||
if (rotateSuggestionsDisabled) return;
|
||||
|
||||
// This method will be called on rotation suggestion changes even if the proposed rotation
|
||||
// is not valid for the top app. Use invalid rotation choices as a signal to remove the
|
||||
// rotate button if shown.
|
||||
@@ -450,6 +461,12 @@ public class NavigationBarFragment extends Fragment implements Callbacks {
|
||||
}
|
||||
}
|
||||
|
||||
private void onRotationSuggestionsDisabled() {
|
||||
// Immediately hide the rotate button and clear any planned removal
|
||||
setRotateSuggestionButtonState(false, true);
|
||||
getView().removeCallbacks(mRemoveRotationProposal);
|
||||
}
|
||||
|
||||
private void showAndLogRotationSuggestion() {
|
||||
setRotateSuggestionButtonState(true);
|
||||
rescheduleRotationTimeout(false);
|
||||
@@ -643,8 +660,8 @@ public class NavigationBarFragment extends Fragment implements Callbacks {
|
||||
|
||||
@Override
|
||||
public void disable(int state1, int state2, boolean animate) {
|
||||
// All navigation bar flags are in state1.
|
||||
int masked = state1 & (StatusBarManager.DISABLE_HOME
|
||||
// Navigation bar flags are in both state1 and state2.
|
||||
final int masked = state1 & (StatusBarManager.DISABLE_HOME
|
||||
| StatusBarManager.DISABLE_RECENT
|
||||
| StatusBarManager.DISABLE_BACK
|
||||
| StatusBarManager.DISABLE_SEARCH);
|
||||
@@ -653,6 +670,22 @@ public class NavigationBarFragment extends Fragment implements Callbacks {
|
||||
if (mNavigationBarView != null) mNavigationBarView.setDisabledFlags(state1);
|
||||
updateScreenPinningGestures();
|
||||
}
|
||||
|
||||
final int masked2 = state2 & (StatusBarManager.DISABLE2_ROTATE_SUGGESTIONS);
|
||||
if (masked2 != mDisabledFlags2) {
|
||||
mDisabledFlags2 = masked2;
|
||||
setDisabled2Flags(masked2);
|
||||
}
|
||||
}
|
||||
|
||||
private void setDisabled2Flags(int state2) {
|
||||
// Method only called on change of disable2 flags
|
||||
final boolean rotateSuggestionsDisabled = hasDisable2RotateSuggestionFlag(state2);
|
||||
if (rotateSuggestionsDisabled) onRotationSuggestionsDisabled();
|
||||
}
|
||||
|
||||
private boolean hasDisable2RotateSuggestionFlag(int disable2Flags) {
|
||||
return (disable2Flags & StatusBarManager.DISABLE2_ROTATE_SUGGESTIONS) != 0;
|
||||
}
|
||||
|
||||
// ----- Internal stuffz -----
|
||||
|
||||
@@ -629,7 +629,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub {
|
||||
*/
|
||||
@Override
|
||||
public void disable2ForUser(int what, IBinder token, String pkg, int userId) {
|
||||
enforceStatusBarService();
|
||||
enforceStatusBar();
|
||||
|
||||
synchronized (mLock) {
|
||||
disableLocked(userId, what, token, pkg, 2);
|
||||
|
||||
Reference in New Issue
Block a user