summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorcaelyn <caelyn@chromium.org>2015-02-04 13:27:49 -0800
committerCommit bot <commit-bot@chromium.org>2015-02-04 21:29:05 +0000
commit4e4e08a606978ebd83ea28176d82af9d806effe0 (patch)
tree416a3d19fe32aea14e3f52cb2b12c5d592b1b376 /chrome/browser
parent6bd2fc1919a84eff0141634ccc49483669ab7e37 (diff)
downloadchromium_src-4e4e08a606978ebd83ea28176d82af9d806effe0.zip
chromium_src-4e4e08a606978ebd83ea28176d82af9d806effe0.tar.gz
chromium_src-4e4e08a606978ebd83ea28176d82af9d806effe0.tar.bz2
Adding menu item to take screenshot
BUG=196658 Review URL: https://codereview.chromium.org/885673004 Cr-Commit-Position: refs/heads/master@{#314639}
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/ui/browser_command_controller.cc7
-rw-r--r--chrome/browser/ui/browser_commands_chromeos.cc24
-rw-r--r--chrome/browser/ui/browser_commands_chromeos.h11
-rw-r--r--chrome/browser/ui/toolbar/wrench_menu_model.cc4
-rw-r--r--chrome/browser/ui/views/toolbar/wrench_menu.cc25
-rw-r--r--chrome/browser/ui/views/toolbar/wrench_menu.h3
6 files changed, 66 insertions, 8 deletions
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc
index 0b47a1a..d0c8e57 100644
--- a/chrome/browser/ui/browser_command_controller.cc
+++ b/chrome/browser/ui/browser_command_controller.cc
@@ -66,6 +66,7 @@
#include "ash/shell.h"
#include "chrome/browser/ui/ash/multi_user/multi_user_context_menu.h"
#include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h"
+#include "chrome/browser/ui/browser_commands_chromeos.h"
#endif
#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
@@ -695,6 +696,11 @@ void BrowserCommandController::ExecuteCommandWithDisposition(
case IDC_TASK_MANAGER:
OpenTaskManager(browser_);
break;
+#if defined(OS_CHROMEOS)
+ case IDC_TAKE_SCREENSHOT:
+ TakeScreenshot();
+ break;
+#endif
#if defined(GOOGLE_CHROME_BUILD)
case IDC_FEEDBACK:
OpenFeedbackDialog(browser_);
@@ -966,6 +972,7 @@ void BrowserCommandController::InitCommandState() {
!profile()->IsOffTheRecord());
command_updater_.UpdateCommandEnabled(IDC_CLEAR_BROWSING_DATA, normal_window);
#if defined(OS_CHROMEOS)
+ command_updater_.UpdateCommandEnabled(IDC_TAKE_SCREENSHOT, true);
command_updater_.UpdateCommandEnabled(IDC_TOUCH_HUD_PROJECTION_TOGGLE, true);
#else
// Chrome OS uses the system tray menu to handle multi-profiles.
diff --git a/chrome/browser/ui/browser_commands_chromeos.cc b/chrome/browser/ui/browser_commands_chromeos.cc
new file mode 100644
index 0000000..d6e6dbb
--- /dev/null
+++ b/chrome/browser/ui/browser_commands_chromeos.cc
@@ -0,0 +1,24 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/browser_commands_chromeos.h"
+
+#include "ash/accelerators/accelerator_controller.h"
+#include "ash/metrics/user_metrics_recorder.h"
+#include "ash/screenshot_delegate.h"
+#include "ash/shell.h"
+#include "base/metrics/user_metrics_action.h"
+#include "content/public/browser/user_metrics.h"
+
+using base::UserMetricsAction;
+
+void TakeScreenshot() {
+ content::RecordAction(UserMetricsAction("Menu_Take_Screenshot"));
+ ash::ScreenshotDelegate* screenshot_delegate = ash::Shell::GetInstance()->
+ accelerator_controller()->screenshot_delegate();
+ if (screenshot_delegate &&
+ screenshot_delegate->CanTakeScreenshot()) {
+ screenshot_delegate->HandleTakeScreenshotForAllRootWindows();
+ }
+}
diff --git a/chrome/browser/ui/browser_commands_chromeos.h b/chrome/browser/ui/browser_commands_chromeos.h
new file mode 100644
index 0000000..ab457f1
--- /dev/null
+++ b/chrome/browser/ui/browser_commands_chromeos.h
@@ -0,0 +1,11 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_BROWSER_COMMANDS_CHROMEOS_H_
+#define CHROME_BROWSER_UI_BROWSER_COMMANDS_CHROMEOS_H_
+
+// Takes a screenshot of the entire desktop (not just the browser window).
+void TakeScreenshot();
+
+#endif // CHROME_BROWSER_UI_BROWSER_COMMANDS_CHROMEOS_H_
diff --git a/chrome/browser/ui/toolbar/wrench_menu_model.cc b/chrome/browser/ui/toolbar/wrench_menu_model.cc
index f8dbcf8..010f4d2 100644
--- a/chrome/browser/ui/toolbar/wrench_menu_model.cc
+++ b/chrome/browser/ui/toolbar/wrench_menu_model.cc
@@ -254,6 +254,10 @@ void ToolsMenuModel::Build(Browser* browser) {
AddItemWithStringId(IDC_CLEAR_BROWSING_DATA, IDS_CLEAR_BROWSING_DATA);
+#if defined(OS_CHROMEOS)
+ AddItemWithStringId(IDC_TAKE_SCREENSHOT, IDS_TAKE_SCREENSHOT);
+#endif
+
AddSeparator(ui::NORMAL_SEPARATOR);
encoding_menu_model_.reset(new EncodingMenuModel(browser));
diff --git a/chrome/browser/ui/views/toolbar/wrench_menu.cc b/chrome/browser/ui/views/toolbar/wrench_menu.cc
index 55c85ab..3d3f5ca 100644
--- a/chrome/browser/ui/views/toolbar/wrench_menu.cc
+++ b/chrome/browser/ui/views/toolbar/wrench_menu.cc
@@ -787,12 +787,13 @@ class WrenchMenu::RecentTabsMenuModelDelegate : public ui::MenuModelDelegate {
// WrenchMenu ------------------------------------------------------------------
WrenchMenu::WrenchMenu(Browser* browser, int run_flags)
- : root_(NULL),
+ : root_(nullptr),
browser_(browser),
- selected_menu_model_(NULL),
+ selected_menu_model_(nullptr),
selected_index_(0),
- bookmark_menu_(NULL),
- feedback_menu_item_(NULL),
+ bookmark_menu_(nullptr),
+ feedback_menu_item_(nullptr),
+ screenshot_menu_item_(nullptr),
run_flags_(run_flags) {
registrar_.Add(this, chrome::NOTIFICATION_GLOBAL_ERRORS_CHANGED,
content::Source<Profile>(browser_->profile()));
@@ -1053,10 +1054,11 @@ void WrenchMenu::WillShowMenu(MenuItemView* menu) {
void WrenchMenu::WillHideMenu(MenuItemView* menu) {
// Turns off the fade out animation of the wrench menus if
- // |feedback_menu_item_| is selected. This excludes the wrench menu itself
- // from the snapshot in the feedback UI.
- if (menu->HasSubmenu() && feedback_menu_item_ &&
- feedback_menu_item_->IsSelected()) {
+ // |feedback_menu_item_| or |screenshot_menu_item_| is selected. This
+ // excludes the wrench menu itself from the screenshot.
+ if (menu->HasSubmenu() &&
+ ((feedback_menu_item_ && feedback_menu_item_->IsSelected()) ||
+ (screenshot_menu_item_ && screenshot_menu_item_->IsSelected()))) {
// It's okay to just turn off the animation and no to take care the
// animation back because the menu widget will be recreated next time
// it's opened. See ToolbarView::RunMenu() and Init() of this class.
@@ -1161,6 +1163,13 @@ void WrenchMenu::PopulateMenu(MenuItemView* parent,
break;
#endif
+#if defined(OS_CHROMEOS)
+ case IDC_TAKE_SCREENSHOT:
+ DCHECK(!screenshot_menu_item_);
+ screenshot_menu_item_ = item;
+ break;
+#endif
+
case IDC_RECENT_TABS_MENU:
DCHECK(!recent_tabs_menu_model_delegate_.get());
recent_tabs_menu_model_delegate_.reset(
diff --git a/chrome/browser/ui/views/toolbar/wrench_menu.h b/chrome/browser/ui/views/toolbar/wrench_menu.h
index 1966dd2..22fb897 100644
--- a/chrome/browser/ui/views/toolbar/wrench_menu.h
+++ b/chrome/browser/ui/views/toolbar/wrench_menu.h
@@ -176,6 +176,9 @@ class WrenchMenu : public views::MenuDelegate,
// Menu corresponding to IDC_FEEDBACK.
views::MenuItemView* feedback_menu_item_;
+ // Menu corresponding to IDC_TAKE_SCREENSHOT.
+ views::MenuItemView* screenshot_menu_item_;
+
// Used for managing "Recent tabs" menu items.
scoped_ptr<RecentTabsMenuModelDelegate> recent_tabs_menu_model_delegate_;