Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1482)

Unified Diff: chrome/browser/ui/views/frame/browser_frame_win.cc

Issue 11819008: Refactors building the system menu model into a common place (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to trunk and fix windows build Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/frame/browser_frame_win.cc
diff --git a/chrome/browser/ui/views/frame/browser_frame_win.cc b/chrome/browser/ui/views/frame/browser_frame_win.cc
index 2c26453ea2734fe3afbb709d1a61fcfe9fd86b40..c7b4743610010d73fe8ff785c82b891bb6094dfc 100644
--- a/chrome/browser/ui/views/frame/browser_frame_win.cc
+++ b/chrome/browser/ui/views/frame/browser_frame_win.cc
@@ -20,10 +20,7 @@
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_tabstrip.h"
-#include "chrome/browser/ui/toolbar/wrench_menu_model.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
-#include "chrome/browser/ui/views/frame/system_menu_model.h"
-#include "chrome/browser/ui/views/frame/system_menu_model_delegate.h"
#include "chrome/browser/ui/views/tabs/tab_strip.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_switches.h"
@@ -100,9 +97,7 @@ BrowserFrameWin::BrowserFrameWin(BrowserFrame* browser_frame,
BrowserView* browser_view)
: views::NativeWidgetWin(browser_frame),
browser_view_(browser_view),
- browser_frame_(browser_frame),
- system_menu_delegate_(new SystemMenuModelDelegate(browser_view,
- browser_view->browser())) {
+ browser_frame_(browser_frame) {
if (win8::IsSingleWindowMetroMode()) {
browser_view->SetWindowSwitcherButton(
MakeWindowSwitcherButton(this, browser_view->IsOffTheRecord()));
@@ -144,6 +139,16 @@ void BrowserFrameWin::CloseImmersiveFrame() {
}
+views::NativeMenuWin* BrowserFrameWin::GetSystemMenu() {
+ if (!system_menu_.get()) {
+ system_menu_.reset(
+ new views::NativeMenuWin(browser_frame_->GetSystemMenuModel(),
+ GetNativeView()));
+ system_menu_->Rebuild();
+ }
+ return system_menu_.get();
+}
+
///////////////////////////////////////////////////////////////////////////////
// BrowserFrameWin, views::NativeWidgetWin overrides:
@@ -227,7 +232,7 @@ bool BrowserFrameWin::PreHandleMSG(UINT message,
browser::SessionEnding();
return true;
case WM_INITMENUPOPUP:
- system_menu_->UpdateStates();
+ GetSystemMenu()->UpdateStates();
return true;
}
return false;
@@ -366,18 +371,8 @@ const views::NativeWidget* BrowserFrameWin::AsNativeWidget() const {
return this;
}
-void BrowserFrameWin::InitSystemContextMenu() {
- system_menu_contents_.reset(new SystemMenuModel(system_menu_delegate_.get()));
- // We add the menu items in reverse order so that insertion_index never needs
- // to change.
- if (browser_view_->IsBrowserTypeNormal())
- BuildSystemMenuForBrowserWindow();
- else
- BuildSystemMenuForAppOrPopupWindow();
- AddFrameToggleItems();
- system_menu_.reset(
- new views::NativeMenuWin(system_menu_contents_.get(), GetNativeWindow()));
- system_menu_->Rebuild();
+bool BrowserFrameWin::UsesNativeSystemMenu() const {
+ return true;
}
int BrowserFrameWin::GetMinimizeButtonOffset() const {
@@ -466,65 +461,6 @@ void BrowserFrameWin::UpdateDWMFrame() {
DwmExtendFrameIntoClientArea(GetNativeView(), &margins);
}
-void BrowserFrameWin::BuildSystemMenuForBrowserWindow() {
- system_menu_contents_->AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB);
- system_menu_contents_->AddItemWithStringId(IDC_RESTORE_TAB, IDS_RESTORE_TAB);
- if (chrome::CanOpenTaskManager()) {
- system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR);
- system_menu_contents_->AddItemWithStringId(IDC_TASK_MANAGER,
- IDS_TASK_MANAGER);
- }
- system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR);
- // If it's a regular browser window with tabs, we don't add any more items,
- // since it already has menus (Page, Chrome).
-}
-
-void BrowserFrameWin::BuildSystemMenuForAppOrPopupWindow() {
- Browser* browser = browser_view()->browser();
- system_menu_contents_->AddItemWithStringId(IDC_BACK,
- IDS_CONTENT_CONTEXT_BACK);
- system_menu_contents_->AddItemWithStringId(IDC_FORWARD,
- IDS_CONTENT_CONTEXT_FORWARD);
- system_menu_contents_->AddItemWithStringId(IDC_RELOAD, IDS_APP_MENU_RELOAD);
- system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR);
- if (browser->is_app()) {
- system_menu_contents_->AddItemWithStringId(IDC_NEW_TAB,
- IDS_APP_MENU_NEW_WEB_PAGE);
- } else {
- system_menu_contents_->AddItemWithStringId(IDC_SHOW_AS_TAB,
- IDS_SHOW_AS_TAB);
- }
- system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR);
- system_menu_contents_->AddItemWithStringId(IDC_CUT, IDS_CUT);
- system_menu_contents_->AddItemWithStringId(IDC_COPY, IDS_COPY);
- system_menu_contents_->AddItemWithStringId(IDC_PASTE, IDS_PASTE);
- system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR);
- system_menu_contents_->AddItemWithStringId(IDC_FIND, IDS_FIND);
- system_menu_contents_->AddItemWithStringId(IDC_PRINT, IDS_PRINT);
- zoom_menu_contents_.reset(new ZoomMenuModel(system_menu_delegate_.get()));
- system_menu_contents_->AddSubMenuWithStringId(IDC_ZOOM_MENU, IDS_ZOOM_MENU,
- zoom_menu_contents_.get());
- encoding_menu_contents_.reset(new EncodingMenuModel(browser));
- system_menu_contents_->AddSubMenuWithStringId(IDC_ENCODING_MENU,
- IDS_ENCODING_MENU,
- encoding_menu_contents_.get());
- system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR);
- if (browser->is_app() && chrome::CanOpenTaskManager()) {
- system_menu_contents_->AddItemWithStringId(IDC_TASK_MANAGER,
- IDS_TASK_MANAGER);
- system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR);
- }
-}
-
-void BrowserFrameWin::AddFrameToggleItems() {
- if (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kDebugEnableFrameToggle)) {
- system_menu_contents_->AddItem(IDC_DEBUG_FRAME_TOGGLE,
- L"Toggle Frame Type");
- system_menu_contents_->AddSeparator(ui::NORMAL_SEPARATOR);
- }
-}
-
void BrowserFrameWin::HandleMetroNavSearchRequest(WPARAM w_param,
LPARAM l_param) {
if (!base::win::IsMetroProcess()) {
« no previous file with comments | « chrome/browser/ui/views/frame/browser_frame_win.h ('k') | chrome/browser/ui/views/frame/desktop_browser_frame_aura.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698