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 #include "chrome/browser/ui/views/frame/browser_frame.h" | 5 #include "chrome/browser/ui/views/frame/browser_frame.h" |
6 | 6 |
7 #include "base/debug/leak_annotations.h" | 7 #include "base/debug/leak_annotations.h" |
8 #include "base/i18n/rtl.h" | 8 #include "base/i18n/rtl.h" |
9 #include "chrome/browser/app_mode/app_mode_utils.h" | 9 #include "chrome/browser/app_mode/app_mode_utils.h" |
10 #include "chrome/browser/themes/theme_service.h" | 10 #include "chrome/browser/themes/theme_service.h" |
11 #include "chrome/browser/themes/theme_service_factory.h" | 11 #include "chrome/browser/themes/theme_service_factory.h" |
12 #include "chrome/browser/ui/browser.h" | 12 #include "chrome/browser/ui/browser.h" |
13 #include "chrome/browser/ui/browser_list.h" | 13 #include "chrome/browser/ui/browser_list.h" |
14 #include "chrome/browser/ui/browser_window_state.h" | 14 #include "chrome/browser/ui/browser_window_state.h" |
15 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h" | 15 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h" |
16 #include "chrome/browser/ui/views/frame/browser_root_view.h" | 16 #include "chrome/browser/ui/views/frame/browser_root_view.h" |
17 #include "chrome/browser/ui/views/frame/browser_view.h" | 17 #include "chrome/browser/ui/views/frame/browser_view.h" |
18 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h" | 18 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h" |
19 #include "chrome/browser/ui/views/frame/native_browser_frame.h" | 19 #include "chrome/browser/ui/views/frame/native_browser_frame.h" |
20 #include "chrome/browser/ui/views/frame/native_browser_frame_factory.h" | 20 #include "chrome/browser/ui/views/frame/native_browser_frame_factory.h" |
21 #include "chrome/browser/ui/views/frame/system_menu_model_builder.h" | 21 #include "chrome/browser/ui/views/frame/system_menu_model_builder.h" |
22 #include "chrome/browser/ui/views/frame/top_container_view.h" | 22 #include "chrome/browser/ui/views/frame/top_container_view.h" |
23 #include "chrome/common/pref_names.h" | |
24 #include "ui/base/hit_test.h" | 23 #include "ui/base/hit_test.h" |
25 #include "ui/base/theme_provider.h" | 24 #include "ui/base/theme_provider.h" |
26 #include "ui/events/event_handler.h" | 25 #include "ui/events/event_handler.h" |
27 #include "ui/gfx/font_list.h" | 26 #include "ui/gfx/font_list.h" |
28 #include "ui/gfx/screen.h" | 27 #include "ui/gfx/screen.h" |
29 #include "ui/views/controls/menu/menu_runner.h" | 28 #include "ui/views/controls/menu/menu_runner.h" |
30 #include "ui/views/widget/native_widget.h" | 29 #include "ui/views/widget/native_widget.h" |
31 | 30 |
32 #if defined(OS_CHROMEOS) | 31 #if defined(OS_CHROMEOS) |
33 #include "ash/session/session_state_delegate.h" | 32 #include "ash/session/session_state_delegate.h" |
(...skipping 24 matching lines...) Expand all Loading... |
58 } | 57 } |
59 | 58 |
60 // static | 59 // static |
61 const gfx::FontList& BrowserFrame::GetTitleFontList() { | 60 const gfx::FontList& BrowserFrame::GetTitleFontList() { |
62 static const gfx::FontList* title_font_list = new gfx::FontList(); | 61 static const gfx::FontList* title_font_list = new gfx::FontList(); |
63 ANNOTATE_LEAKING_OBJECT_PTR(title_font_list); | 62 ANNOTATE_LEAKING_OBJECT_PTR(title_font_list); |
64 return *title_font_list; | 63 return *title_font_list; |
65 } | 64 } |
66 | 65 |
67 void BrowserFrame::InitBrowserFrame() { | 66 void BrowserFrame::InitBrowserFrame() { |
68 use_custom_frame_pref_.Init( | |
69 prefs::kUseCustomChromeFrame, | |
70 browser_view_->browser()->profile()->GetPrefs(), | |
71 base::Bind(&BrowserFrame::OnUseCustomChromeFrameChanged, | |
72 base::Unretained(this))); | |
73 | |
74 native_browser_frame_ = | 67 native_browser_frame_ = |
75 NativeBrowserFrameFactory::CreateNativeBrowserFrame(this, browser_view_); | 68 NativeBrowserFrameFactory::CreateNativeBrowserFrame(this, browser_view_); |
76 views::Widget::InitParams params = native_browser_frame_->GetWidgetParams(); | 69 views::Widget::InitParams params = native_browser_frame_->GetWidgetParams(); |
77 params.delegate = browser_view_; | 70 params.delegate = browser_view_; |
78 if (browser_view_->browser()->is_type_tabbed()) { | 71 if (browser_view_->browser()->is_type_tabbed()) { |
79 // Typed panel/popup can only return a size once the widget has been | 72 // Typed panel/popup can only return a size once the widget has been |
80 // created. | 73 // created. |
81 chrome::GetSavedWindowBoundsAndShowState(browser_view_->browser(), | 74 chrome::GetSavedWindowBoundsAndShowState(browser_view_->browser(), |
82 ¶ms.bounds, | 75 ¶ms.bounds, |
83 ¶ms.show_state); | 76 ¶ms.show_state); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 | 120 |
128 views::View* BrowserFrame::GetLocationIconView() const { | 121 views::View* BrowserFrame::GetLocationIconView() const { |
129 return browser_frame_view_->GetLocationIconView(); | 122 return browser_frame_view_->GetLocationIconView(); |
130 } | 123 } |
131 | 124 |
132 views::View* BrowserFrame::GetFrameView() const { | 125 views::View* BrowserFrame::GetFrameView() const { |
133 return browser_frame_view_; | 126 return browser_frame_view_; |
134 } | 127 } |
135 | 128 |
136 bool BrowserFrame::UseCustomFrame() const { | 129 bool BrowserFrame::UseCustomFrame() const { |
137 return use_custom_frame_pref_.GetValue() && | 130 return native_browser_frame_->UseCustomFrame(); |
138 browser_view_->IsBrowserTypeNormal(); | |
139 } | 131 } |
140 | 132 |
141 bool BrowserFrame::ShouldSaveWindowPlacement() const { | 133 bool BrowserFrame::ShouldSaveWindowPlacement() const { |
142 return native_browser_frame_->ShouldSaveWindowPlacement(); | 134 return native_browser_frame_->ShouldSaveWindowPlacement(); |
143 } | 135 } |
144 | 136 |
145 void BrowserFrame::GetWindowPlacement(gfx::Rect* bounds, | 137 void BrowserFrame::GetWindowPlacement(gfx::Rect* bounds, |
146 ui::WindowShowState* show_state) const { | 138 ui::WindowShowState* show_state) const { |
147 return native_browser_frame_->GetWindowPlacement(bounds, show_state); | 139 return native_browser_frame_->GetWindowPlacement(bounds, show_state); |
148 } | 140 } |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 return browser_frame_view_->avatar_button(); | 241 return browser_frame_view_->avatar_button(); |
250 } | 242 } |
251 | 243 |
252 NewAvatarButton* BrowserFrame::GetNewAvatarMenuButton() { | 244 NewAvatarButton* BrowserFrame::GetNewAvatarMenuButton() { |
253 return browser_frame_view_->new_avatar_button(); | 245 return browser_frame_view_->new_avatar_button(); |
254 } | 246 } |
255 | 247 |
256 bool BrowserFrame::ShouldLeaveOffsetNearTopBorder() { | 248 bool BrowserFrame::ShouldLeaveOffsetNearTopBorder() { |
257 return !IsMaximized(); | 249 return !IsMaximized(); |
258 } | 250 } |
259 | |
260 void BrowserFrame::OnUseCustomChromeFrameChanged() { | |
261 // Tell the window manager to add or remove system borders. | |
262 set_frame_type(UseCustomFrame() ? Widget::FRAME_TYPE_FORCE_CUSTOM | |
263 : Widget::FRAME_TYPE_FORCE_NATIVE); | |
264 FrameTypeChanged(); | |
265 } | |
OLD | NEW |