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()) { |