| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_UI_TOOLBAR_APP_MENU_MODEL_H_ | 5 #ifndef CHROME_BROWSER_UI_TOOLBAR_APP_MENU_MODEL_H_ |
| 6 #define CHROME_BROWSER_UI_TOOLBAR_APP_MENU_MODEL_H_ | 6 #define CHROME_BROWSER_UI_TOOLBAR_APP_MENU_MODEL_H_ |
| 7 | 7 |
| 8 #include <memory> |
| 9 |
| 8 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| 9 #include "base/macros.h" | 11 #include "base/macros.h" |
| 10 #include "base/memory/scoped_ptr.h" | |
| 11 #include "base/time/time.h" | 12 #include "base/time/time.h" |
| 12 #include "base/timer/elapsed_timer.h" | 13 #include "base/timer/elapsed_timer.h" |
| 13 #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" | 14 #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" |
| 14 #include "content/public/browser/host_zoom_map.h" | 15 #include "content/public/browser/host_zoom_map.h" |
| 15 #include "content/public/browser/notification_observer.h" | 16 #include "content/public/browser/notification_observer.h" |
| 16 #include "content/public/browser/notification_registrar.h" | 17 #include "content/public/browser/notification_registrar.h" |
| 17 #include "ui/base/accelerators/accelerator.h" | 18 #include "ui/base/accelerators/accelerator.h" |
| 18 #include "ui/base/models/button_menu_item_model.h" | 19 #include "ui/base/models/button_menu_item_model.h" |
| 19 #include "ui/base/models/simple_menu_model.h" | 20 #include "ui/base/models/simple_menu_model.h" |
| 20 | 21 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 }; | 110 }; |
| 110 | 111 |
| 111 class ToolsMenuModel : public ui::SimpleMenuModel { | 112 class ToolsMenuModel : public ui::SimpleMenuModel { |
| 112 public: | 113 public: |
| 113 ToolsMenuModel(ui::SimpleMenuModel::Delegate* delegate, Browser* browser); | 114 ToolsMenuModel(ui::SimpleMenuModel::Delegate* delegate, Browser* browser); |
| 114 ~ToolsMenuModel() override; | 115 ~ToolsMenuModel() override; |
| 115 | 116 |
| 116 private: | 117 private: |
| 117 void Build(Browser* browser); | 118 void Build(Browser* browser); |
| 118 | 119 |
| 119 scoped_ptr<EncodingMenuModel> encoding_menu_model_; | 120 std::unique_ptr<EncodingMenuModel> encoding_menu_model_; |
| 120 | 121 |
| 121 DISALLOW_COPY_AND_ASSIGN(ToolsMenuModel); | 122 DISALLOW_COPY_AND_ASSIGN(ToolsMenuModel); |
| 122 }; | 123 }; |
| 123 | 124 |
| 124 // A menu model that builds the contents of the app menu. | 125 // A menu model that builds the contents of the app menu. |
| 125 class AppMenuModel : public ui::SimpleMenuModel, | 126 class AppMenuModel : public ui::SimpleMenuModel, |
| 126 public ui::SimpleMenuModel::Delegate, | 127 public ui::SimpleMenuModel::Delegate, |
| 127 public ui::ButtonMenuItemModel::Delegate, | 128 public ui::ButtonMenuItemModel::Delegate, |
| 128 public TabStripModelObserver, | 129 public TabStripModelObserver, |
| 129 public content::NotificationObserver { | 130 public content::NotificationObserver { |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 214 // Time menu has been open. Used by LogMenuMetrics() to record the time | 215 // Time menu has been open. Used by LogMenuMetrics() to record the time |
| 215 // to action when the user selects a menu item. | 216 // to action when the user selects a menu item. |
| 216 base::ElapsedTimer timer_; | 217 base::ElapsedTimer timer_; |
| 217 | 218 |
| 218 // Whether a UMA menu action has been recorded since the menu is open. | 219 // Whether a UMA menu action has been recorded since the menu is open. |
| 219 // Only the first time to action is recorded since some commands | 220 // Only the first time to action is recorded since some commands |
| 220 // (zoom controls) don't dimiss the menu. | 221 // (zoom controls) don't dimiss the menu. |
| 221 bool uma_action_recorded_; | 222 bool uma_action_recorded_; |
| 222 | 223 |
| 223 // Models for the special menu items with buttons. | 224 // Models for the special menu items with buttons. |
| 224 scoped_ptr<ui::ButtonMenuItemModel> edit_menu_item_model_; | 225 std::unique_ptr<ui::ButtonMenuItemModel> edit_menu_item_model_; |
| 225 scoped_ptr<ui::ButtonMenuItemModel> zoom_menu_item_model_; | 226 std::unique_ptr<ui::ButtonMenuItemModel> zoom_menu_item_model_; |
| 226 | 227 |
| 227 // Label of the zoom label in the zoom menu item. | 228 // Label of the zoom label in the zoom menu item. |
| 228 base::string16 zoom_label_; | 229 base::string16 zoom_label_; |
| 229 | 230 |
| 230 #if defined(GOOGLE_CHROME_BUILD) | 231 #if defined(GOOGLE_CHROME_BUILD) |
| 231 // Help menu. | 232 // Help menu. |
| 232 scoped_ptr<HelpMenuModel> help_menu_model_; | 233 std::unique_ptr<HelpMenuModel> help_menu_model_; |
| 233 #endif | 234 #endif |
| 234 | 235 |
| 235 // Tools menu. | 236 // Tools menu. |
| 236 scoped_ptr<ToolsMenuModel> tools_menu_model_; | 237 std::unique_ptr<ToolsMenuModel> tools_menu_model_; |
| 237 | 238 |
| 238 // Bookmark submenu. | 239 // Bookmark submenu. |
| 239 scoped_ptr<BookmarkSubMenuModel> bookmark_sub_menu_model_; | 240 std::unique_ptr<BookmarkSubMenuModel> bookmark_sub_menu_model_; |
| 240 | 241 |
| 241 // Recent Tabs submenu. | 242 // Recent Tabs submenu. |
| 242 scoped_ptr<RecentTabsSubMenuModel> recent_tabs_sub_menu_model_; | 243 std::unique_ptr<RecentTabsSubMenuModel> recent_tabs_sub_menu_model_; |
| 243 | 244 |
| 244 ui::AcceleratorProvider* provider_; // weak | 245 ui::AcceleratorProvider* provider_; // weak |
| 245 | 246 |
| 246 Browser* browser_; // weak | 247 Browser* browser_; // weak |
| 247 | 248 |
| 248 scoped_ptr<content::HostZoomMap::Subscription> browser_zoom_subscription_; | 249 std::unique_ptr<content::HostZoomMap::Subscription> |
| 250 browser_zoom_subscription_; |
| 249 content::NotificationRegistrar registrar_; | 251 content::NotificationRegistrar registrar_; |
| 250 | 252 |
| 251 DISALLOW_COPY_AND_ASSIGN(AppMenuModel); | 253 DISALLOW_COPY_AND_ASSIGN(AppMenuModel); |
| 252 }; | 254 }; |
| 253 | 255 |
| 254 #endif // CHROME_BROWSER_UI_TOOLBAR_APP_MENU_MODEL_H_ | 256 #endif // CHROME_BROWSER_UI_TOOLBAR_APP_MENU_MODEL_H_ |
| OLD | NEW |