Commit 816db3cf authored by Sammie Quon's avatar Sammie Quon Committed by Commit Bot

capture_mode: Add entry point in power button menu.

Only for tablet mode. Like other capture mode entries, not available for
login/lock/oobe.

Bug: 948120
Test: manual
Change-Id: I37ece1da0a48268507907fed4a713d2c4fb882fb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2530980
Commit-Queue: Sammie Quon <sammiequon@chromium.org>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#826114}
parent eedae2be
......@@ -28,7 +28,8 @@ enum class CaptureModeEntryType {
kAccelTakeWindowScreenshot,
kQuickSettings,
kStylusPalette,
kMaxValue = kStylusPalette,
kPowerMenu,
kMaxValue = kPowerMenu,
};
// Records capture mode bar button presses given by |button_type|.
......
......@@ -17,7 +17,8 @@ enum class PowerButtonMenuActionType {
kDismissByTouch,
kLockScreen,
kFeedback,
kMaxValue = kFeedback,
kCaptureMode,
kMaxValue = kCaptureMode,
};
void RecordMenuActionHistogram(PowerButtonMenuActionType type);
......
......@@ -6,8 +6,10 @@
#include <memory>
#include "ash/capture_mode/capture_mode_controller.h"
#include "ash/display/screen_orientation_controller.h"
#include "ash/login/login_screen_controller.h"
#include "ash/public/cpp/ash_features.h"
#include "ash/public/cpp/new_window_delegate.h"
#include "ash/resources/vector_icons/vector_icons.h"
#include "ash/session/session_controller_impl.h"
......@@ -175,6 +177,11 @@ void PowerButtonMenuView::RecreateItems() {
const bool create_sign_out = login_status != LoginStatus::NOT_LOGGED_IN;
const bool create_lock_screen = login_status != LoginStatus::LOCKED &&
session_controller->CanLockScreen();
const bool capture_mode_enabled = features::IsCaptureModeEnabled();
const bool create_capture_mode =
capture_mode_enabled &&
Shell::Get()->tablet_mode_controller()->InTabletMode() &&
!session_controller->IsUserSessionBlocked();
const bool create_feedback = login_status != LoginStatus::LOCKED &&
login_status != LoginStatus::KIOSK_APP;
......@@ -201,6 +208,16 @@ void PowerButtonMenuView::RecreateItems() {
kSystemPowerButtonMenuLockScreenIcon,
l10n_util::GetStringUTF16(IDS_ASH_POWER_BUTTON_MENU_LOCK_SCREEN_BUTTON),
&lock_screen_item_);
add_remove_item(
create_capture_mode, PowerButtonMenuActionType::kCaptureMode,
capture_mode_enabled
? base::BindRepeating(&CaptureModeController::Start,
base::Unretained(CaptureModeController::Get()),
CaptureModeEntryType::kPowerMenu)
: base::DoNothing(),
kCaptureModeIcon,
l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_CAPTURE_MODE_BUTTON_LABEL),
&capture_mode_item_);
add_remove_item(
create_feedback, PowerButtonMenuActionType::kFeedback,
base::BindRepeating(
......@@ -251,6 +268,10 @@ void PowerButtonMenuView::Layout() {
lock_screen_item_->SetBoundsRect(rect);
}
}
if (capture_mode_item_) {
rect.Offset(x_offset, 0);
capture_mode_item_->SetBoundsRect(rect);
}
if (feedback_item_) {
rect.Offset(x_offset, 0);
feedback_item_->SetBoundsRect(rect);
......@@ -272,6 +293,8 @@ gfx::Size PowerButtonMenuView::CalculatePreferredSize() const {
if (lock_screen_item_)
width += one_item_x_offset;
}
if (capture_mode_item_)
width += one_item_x_offset;
if (feedback_item_)
width += one_item_x_offset;
menu_size.set_width(width);
......
......@@ -88,6 +88,7 @@ class ASH_EXPORT PowerButtonMenuView : public views::View,
PowerButtonMenuItemView* power_off_item_ = nullptr;
PowerButtonMenuItemView* sign_out_item_ = nullptr;
PowerButtonMenuItemView* lock_screen_item_ = nullptr;
PowerButtonMenuItemView* capture_mode_item_ = nullptr;
PowerButtonMenuItemView* feedback_item_ = nullptr;
// The physical display side of power button in landscape primary.
......
......@@ -9273,6 +9273,7 @@ Called by update_bad_message_reasons.py.-->
<int value="1" label="Window Screenshot Accelerator"/>
<int value="2" label="Quick Settings"/>
<int value="3" label="Stylus Palette"/>
<int value="4" label="Power Menu"/>
</enum>
<enum name="CapturePixelFormat">
......@@ -58672,6 +58673,7 @@ Called by update_net_trust_anchors.py.-->
<int value="4" label="Touch to dismiss"/>
<int value="5" label="Lock screen"/>
<int value="6" label="Feedback"/>
<int value="7" label="Capture mode"/>
</enum>
<enum name="PowerButtonPressType">
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment