Skip to content

Commit 30233e0

Browse files
TreeHugger RobotAndroid (Google) Code Review
authored andcommitted
Merge "Add screenshot back to power menu for some devices" into rvc-dev
2 parents bd8649d + 238de21 commit 30233e0

3 files changed

Lines changed: 45 additions & 1 deletion

File tree

core/res/res/values/config.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2774,6 +2774,7 @@
27742774
<item>power</item>
27752775
<item>restart</item>
27762776
<item>logout</item>
2777+
<item>screenshot</item>
27772778
<item>bugreport</item>
27782779
</string-array>
27792780

packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
2020
import static android.view.WindowManager.ScreenshotSource.SCREENSHOT_GLOBAL_ACTIONS;
2121
import static android.view.WindowManager.TAKE_SCREENSHOT_FULLSCREEN;
22+
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON;
2223

2324
import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_USER_REQUEST;
2425
import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_NOT_REQUIRED;
@@ -547,7 +548,7 @@ protected boolean shouldShowAction(Action action) {
547548
if (!mDeviceProvisioned && !action.showBeforeProvisioning()) {
548549
return false;
549550
}
550-
return true;
551+
return action.shouldShow();
551552
}
552553

553554
/**
@@ -962,6 +963,8 @@ public void onPress() {
962963

963964
@VisibleForTesting
964965
class ScreenshotAction extends SinglePressAction implements LongPressAction {
966+
final String KEY_SYSTEM_NAV_2BUTTONS = "system_nav_2buttons";
967+
965968
public ScreenshotAction() {
966969
super(R.drawable.ic_screenshot, R.string.global_action_screenshot);
967970
}
@@ -993,6 +996,19 @@ public boolean showBeforeProvisioning() {
993996
return false;
994997
}
995998

999+
@Override
1000+
public boolean shouldShow() {
1001+
// Include screenshot in power menu for legacy nav because it is not accessible
1002+
// through Recents in that mode
1003+
return is2ButtonNavigationEnabled();
1004+
}
1005+
1006+
boolean is2ButtonNavigationEnabled() {
1007+
return NAV_BAR_MODE_2BUTTON == mContext.getResources().getInteger(
1008+
com.android.internal.R.integer.config_navBarInteractionMode);
1009+
}
1010+
1011+
9961012
@Override
9971013
public boolean onLongPress() {
9981014
if (FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SCREENRECORD_LONG_PRESS)) {
@@ -1616,6 +1632,10 @@ default boolean shouldBeSeparated() {
16161632
* @return
16171633
*/
16181634
CharSequence getMessage();
1635+
1636+
default boolean shouldShow() {
1637+
return true;
1638+
}
16191639
}
16201640

16211641
/**

packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogTest.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import android.util.FeatureFlagUtils;
5050
import android.view.IWindowManager;
5151
import android.view.View;
52+
import android.view.WindowManagerPolicyConstants;
5253
import android.widget.FrameLayout;
5354

5455
import androidx.test.filters.SmallTest;
@@ -241,6 +242,28 @@ public void testShouldLogScreenshotLongPress() {
241242
verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent.GA_SCREENSHOT_LONG_PRESS);
242243
}
243244

245+
@Test
246+
public void testShouldShowScreenshot() {
247+
mContext.getOrCreateTestableResources().addOverride(
248+
com.android.internal.R.integer.config_navBarInteractionMode,
249+
WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON);
250+
251+
GlobalActionsDialog.ScreenshotAction screenshotAction =
252+
mGlobalActionsDialog.makeScreenshotActionForTesting();
253+
assertThat(screenshotAction.shouldShow()).isTrue();
254+
}
255+
256+
@Test
257+
public void testShouldNotShowScreenshot() {
258+
mContext.getOrCreateTestableResources().addOverride(
259+
com.android.internal.R.integer.config_navBarInteractionMode,
260+
WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON);
261+
262+
GlobalActionsDialog.ScreenshotAction screenshotAction =
263+
mGlobalActionsDialog.makeScreenshotActionForTesting();
264+
assertThat(screenshotAction.shouldShow()).isFalse();
265+
}
266+
244267
private void verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent event) {
245268
mTestableLooper.processAllMessages();
246269
verify(mUiEventLogger, times(1))

0 commit comments

Comments
 (0)