diff options
author | caelyn <caelyn@chromium.org> | 2015-02-04 13:27:49 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-04 21:29:05 +0000 |
commit | 4e4e08a606978ebd83ea28176d82af9d806effe0 (patch) | |
tree | 416a3d19fe32aea14e3f52cb2b12c5d592b1b376 /chrome/browser | |
parent | 6bd2fc1919a84eff0141634ccc49483669ab7e37 (diff) | |
download | chromium_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.cc | 7 | ||||
-rw-r--r-- | chrome/browser/ui/browser_commands_chromeos.cc | 24 | ||||
-rw-r--r-- | chrome/browser/ui/browser_commands_chromeos.h | 11 | ||||
-rw-r--r-- | chrome/browser/ui/toolbar/wrench_menu_model.cc | 4 | ||||
-rw-r--r-- | chrome/browser/ui/views/toolbar/wrench_menu.cc | 25 | ||||
-rw-r--r-- | chrome/browser/ui/views/toolbar/wrench_menu.h | 3 |
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_; |