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

Side by Side Diff: chrome/browser/ui/views/frame/browser_frame.cc

Issue 1637203002: [MD] Don't use new OTR native-theming when using a custom browser theme. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: move lifetime comment Created 4 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 unified diff | Download patch
OLDNEW
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 <utility> 7 #include <utility>
8 8
9 #include "base/debug/leak_annotations.h" 9 #include "base/debug/leak_annotations.h"
10 #include "base/i18n/rtl.h" 10 #include "base/i18n/rtl.h"
11 #include "build/build_config.h" 11 #include "build/build_config.h"
12 #include "chrome/browser/app_mode/app_mode_utils.h" 12 #include "chrome/browser/app_mode/app_mode_utils.h"
13 #include "chrome/browser/themes/theme_service.h" 13 #include "chrome/browser/themes/theme_service.h"
14 #include "chrome/browser/themes/theme_service_factory.h" 14 #include "chrome/browser/themes/theme_service_factory.h"
15 #include "chrome/browser/ui/browser.h" 15 #include "chrome/browser/ui/browser.h"
16 #include "chrome/browser/ui/browser_list.h" 16 #include "chrome/browser/ui/browser_list.h"
17 #include "chrome/browser/ui/browser_window_state.h" 17 #include "chrome/browser/ui/browser_window_state.h"
18 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h" 18 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h"
19 #include "chrome/browser/ui/views/frame/browser_root_view.h" 19 #include "chrome/browser/ui/views/frame/browser_root_view.h"
20 #include "chrome/browser/ui/views/frame/browser_view.h" 20 #include "chrome/browser/ui/views/frame/browser_view.h"
21 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h" 21 #include "chrome/browser/ui/views/frame/immersive_mode_controller.h"
22 #include "chrome/browser/ui/views/frame/native_browser_frame.h" 22 #include "chrome/browser/ui/views/frame/native_browser_frame.h"
23 #include "chrome/browser/ui/views/frame/native_browser_frame_factory.h" 23 #include "chrome/browser/ui/views/frame/native_browser_frame_factory.h"
24 #include "chrome/browser/ui/views/frame/system_menu_model_builder.h" 24 #include "chrome/browser/ui/views/frame/system_menu_model_builder.h"
25 #include "chrome/browser/ui/views/frame/top_container_view.h" 25 #include "chrome/browser/ui/views/frame/top_container_view.h"
26 #include "ui/base/hit_test.h" 26 #include "ui/base/hit_test.h"
27 #include "ui/base/theme_provider.h"
28 #include "ui/events/event_handler.h" 27 #include "ui/events/event_handler.h"
29 #include "ui/gfx/font_list.h" 28 #include "ui/gfx/font_list.h"
30 #include "ui/gfx/screen.h" 29 #include "ui/gfx/screen.h"
31 #include "ui/views/controls/menu/menu_runner.h" 30 #include "ui/views/controls/menu/menu_runner.h"
32 #include "ui/views/widget/native_widget.h" 31 #include "ui/views/widget/native_widget.h"
33 32
34 #if defined(OS_CHROMEOS) 33 #if defined(OS_CHROMEOS)
35 #include "ash/session/session_state_delegate.h" 34 #include "ash/session/session_state_delegate.h"
36 #include "ash/shell.h" 35 #include "ash/shell.h"
37 #include "ui/native_theme/native_theme_dark_aura.h" 36 #include "ui/native_theme/native_theme_dark_aura.h"
38 #endif 37 #endif
39 38
40 #if defined(OS_LINUX) 39 #if defined(OS_LINUX)
41 #include "chrome/browser/ui/views/frame/browser_command_handler_linux.h" 40 #include "chrome/browser/ui/views/frame/browser_command_handler_linux.h"
42 #endif 41 #endif
43 42
44 #if defined(OS_WIN) 43 #if defined(OS_WIN)
45 #include "ui/native_theme/native_theme_dark_win.h" 44 #include "ui/native_theme/native_theme_dark_win.h"
46 #endif 45 #endif
47 46
48 //////////////////////////////////////////////////////////////////////////////// 47 ////////////////////////////////////////////////////////////////////////////////
49 // BrowserFrame, public: 48 // BrowserFrame, public:
50 49
51 BrowserFrame::BrowserFrame(BrowserView* browser_view) 50 BrowserFrame::BrowserFrame(BrowserView* browser_view)
52 : native_browser_frame_(nullptr), 51 : native_browser_frame_(nullptr),
53 root_view_(nullptr), 52 root_view_(nullptr),
54 browser_frame_view_(nullptr), 53 browser_frame_view_(nullptr),
55 browser_view_(browser_view), 54 browser_view_(browser_view) {
56 theme_provider_(
57 &ThemeService::GetThemeProviderForProfile(browser_view_->browser()
58 ->profile())) {
59 browser_view_->set_frame(this); 55 browser_view_->set_frame(this);
60 set_is_secondary_widget(false); 56 set_is_secondary_widget(false);
61 // Don't focus anything on creation, selecting a tab will set the focus. 57 // Don't focus anything on creation, selecting a tab will set the focus.
62 set_focus_on_creation(false); 58 set_focus_on_creation(false);
63 } 59 }
64 60
65 BrowserFrame::~BrowserFrame() { 61 BrowserFrame::~BrowserFrame() {
66 } 62 }
67 63
68 // static 64 // static
69 const gfx::FontList& BrowserFrame::GetTitleFontList() { 65 const gfx::FontList& BrowserFrame::GetTitleFontList() {
70 static const gfx::FontList* title_font_list = new gfx::FontList(); 66 static const gfx::FontList* title_font_list = new gfx::FontList();
71 ANNOTATE_LEAKING_OBJECT_PTR(title_font_list); 67 ANNOTATE_LEAKING_OBJECT_PTR(title_font_list);
72 return *title_font_list; 68 return *title_font_list;
73 } 69 }
74 70
75 void BrowserFrame::InitBrowserFrame() { 71 void BrowserFrame::InitBrowserFrame() {
76 native_browser_frame_ = 72 native_browser_frame_ =
77 NativeBrowserFrameFactory::CreateNativeBrowserFrame(this, browser_view_); 73 NativeBrowserFrameFactory::CreateNativeBrowserFrame(this, browser_view_);
78 views::Widget::InitParams params = native_browser_frame_->GetWidgetParams(); 74 views::Widget::InitParams params = native_browser_frame_->GetWidgetParams();
79 params.delegate = browser_view_; 75 params.delegate = browser_view_;
80 if (browser_view_->browser()->is_type_tabbed()) { 76 if (browser_view_->browser()->is_type_tabbed()) {
81 // Typed panel/popup can only return a size once the widget has been 77 // Typed panel/popup can only return a size once the widget has been
82 // created. 78 // created.
83 chrome::GetSavedWindowBoundsAndShowState(browser_view_->browser(), 79 chrome::GetSavedWindowBoundsAndShowState(browser_view_->browser(),
84 &params.bounds, 80 &params.bounds,
85 &params.show_state); 81 &params.show_state);
86 } 82 }
87 83
88 if (browser_view_->browser()->profile()->GetProfileType() ==
89 Profile::INCOGNITO_PROFILE) {
90 #if defined(OS_WIN)
91 params.native_theme = ui::NativeThemeDarkWin::instance();
92 #elif defined(OS_CHROMEOS)
93 params.native_theme = ui::NativeThemeDarkAura::instance();
94 #endif
95 }
96
97 Init(params); 84 Init(params);
98 85
99 if (!native_browser_frame_->UsesNativeSystemMenu()) { 86 if (!native_browser_frame_->UsesNativeSystemMenu()) {
100 DCHECK(non_client_view()); 87 DCHECK(non_client_view());
101 non_client_view()->set_context_menu_controller(this); 88 non_client_view()->set_context_menu_controller(this);
102 } 89 }
103 90
104 #if defined(OS_LINUX) 91 #if defined(OS_LINUX)
105 browser_command_handler_.reset(new BrowserCommandHandlerLinux(browser_view_)); 92 browser_command_handler_.reset(new BrowserCommandHandlerLinux(browser_view_));
106 #endif 93 #endif
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 chrome::CreateBrowserNonClientFrameView(this, browser_view_); 157 chrome::CreateBrowserNonClientFrameView(this, browser_view_);
171 return browser_frame_view_; 158 return browser_frame_view_;
172 } 159 }
173 160
174 bool BrowserFrame::GetAccelerator(int command_id, 161 bool BrowserFrame::GetAccelerator(int command_id,
175 ui::Accelerator* accelerator) const { 162 ui::Accelerator* accelerator) const {
176 return browser_view_->GetAccelerator(command_id, accelerator); 163 return browser_view_->GetAccelerator(command_id, accelerator);
177 } 164 }
178 165
179 const ui::ThemeProvider* BrowserFrame::GetThemeProvider() const { 166 const ui::ThemeProvider* BrowserFrame::GetThemeProvider() const {
180 return theme_provider_; 167 return &ThemeService::GetThemeProviderForProfile(
168 browser_view_->browser()->profile());
169 }
170
171 const ui::NativeTheme* BrowserFrame::GetNativeTheme() const {
172 if (browser_view_->browser()->profile()->GetProfileType() ==
173 Profile::INCOGNITO_PROFILE &&
174 ThemeServiceFactory::GetForProfile(browser_view_->browser()->profile())
175 ->UsingDefaultTheme()) {
176 #if defined(OS_WIN)
177 return ui::NativeThemeDarkWin::instance();
178 #elif defined(OS_CHROMEOS)
179 return ui::NativeThemeDarkAura::instance();
180 #endif
181 }
182 return views::Widget::GetNativeTheme();
181 } 183 }
182 184
183 void BrowserFrame::SchedulePaintInRect(const gfx::Rect& rect) { 185 void BrowserFrame::SchedulePaintInRect(const gfx::Rect& rect) {
184 views::Widget::SchedulePaintInRect(rect); 186 views::Widget::SchedulePaintInRect(rect);
185 187
186 // Paint the frame caption area and window controls during immersive reveal. 188 // Paint the frame caption area and window controls during immersive reveal.
187 if (browser_view_ && 189 if (browser_view_ &&
188 browser_view_->immersive_mode_controller()->IsRevealed()) { 190 browser_view_->immersive_mode_controller()->IsRevealed()) {
189 // This function should not be reentrant because the TopContainerView 191 // This function should not be reentrant because the TopContainerView
190 // paints to a layer for the duration of the immersive reveal. 192 // paints to a layer for the duration of the immersive reveal.
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 259
258 AvatarMenuButton* BrowserFrame::GetAvatarMenuButton() { 260 AvatarMenuButton* BrowserFrame::GetAvatarMenuButton() {
259 return browser_frame_view_->avatar_button(); 261 return browser_frame_view_->avatar_button();
260 } 262 }
261 263
262 #if defined(FRAME_AVATAR_BUTTON) 264 #if defined(FRAME_AVATAR_BUTTON)
263 views::View* BrowserFrame::GetNewAvatarMenuButton() { 265 views::View* BrowserFrame::GetNewAvatarMenuButton() {
264 return browser_frame_view_->new_avatar_button(); 266 return browser_frame_view_->new_avatar_button();
265 } 267 }
266 #endif 268 #endif
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/browser_frame.h ('k') | chrome/browser/ui/views/frame/browser_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698