OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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_view.h" | 5 #include "chrome/browser/ui/views/frame/browser_view.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <algorithm> | 8 #include <algorithm> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 #if defined(USE_AURA) | 158 #if defined(USE_AURA) |
159 #include "ui/aura/client/window_tree_client.h" | 159 #include "ui/aura/client/window_tree_client.h" |
160 #include "ui/aura/window.h" | 160 #include "ui/aura/window.h" |
161 #include "ui/aura/window_tree_host.h" | 161 #include "ui/aura/window_tree_host.h" |
162 #endif | 162 #endif |
163 | 163 |
164 #if defined(OS_WIN) | 164 #if defined(OS_WIN) |
165 #include "base/win/windows_version.h" | 165 #include "base/win/windows_version.h" |
166 #include "chrome/browser/jumplist_win.h" | 166 #include "chrome/browser/jumplist_win.h" |
167 #include "ui/gfx/color_palette.h" | 167 #include "ui/gfx/color_palette.h" |
| 168 #include "ui/native_theme/native_theme_dark_win.h" |
168 #include "ui/views/win/scoped_fullscreen_visibility.h" | 169 #include "ui/views/win/scoped_fullscreen_visibility.h" |
169 #endif | 170 #endif |
170 | 171 |
171 #if defined(ENABLE_ONE_CLICK_SIGNIN) | 172 #if defined(ENABLE_ONE_CLICK_SIGNIN) |
172 #include "chrome/browser/ui/sync/one_click_signin_bubble_delegate.h" | 173 #include "chrome/browser/ui/sync/one_click_signin_bubble_delegate.h" |
173 #include "chrome/browser/ui/sync/one_click_signin_bubble_links_delegate.h" | 174 #include "chrome/browser/ui/sync/one_click_signin_bubble_links_delegate.h" |
174 #include "chrome/browser/ui/views/sync/one_click_signin_bubble_view.h" | 175 #include "chrome/browser/ui/views/sync/one_click_signin_bubble_view.h" |
175 #endif | 176 #endif |
176 | 177 |
177 #if defined(OS_CHROMEOS) | 178 #if defined(OS_CHROMEOS) |
178 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h" | 179 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h" |
179 #endif | 180 #endif |
180 | 181 |
181 #if defined(MOJO_SHELL_CLIENT) | 182 #if defined(MOJO_SHELL_CLIENT) |
182 #include "content/public/common/mojo_shell_connection.h" | 183 #include "content/public/common/mojo_shell_connection.h" |
183 #endif | 184 #endif |
184 | 185 |
| 186 #if defined(OS_LINUX) |
| 187 #include "ui/native_theme/native_theme_dark_aura.h" |
| 188 #endif |
| 189 |
185 using base::TimeDelta; | 190 using base::TimeDelta; |
186 using base::UserMetricsAction; | 191 using base::UserMetricsAction; |
187 using content::NativeWebKeyboardEvent; | 192 using content::NativeWebKeyboardEvent; |
188 using content::WebContents; | 193 using content::WebContents; |
189 using views::ColumnSet; | 194 using views::ColumnSet; |
190 using views::GridLayout; | 195 using views::GridLayout; |
191 using web_modal::WebContentsModalDialogHost; | 196 using web_modal::WebContentsModalDialogHost; |
192 | 197 |
193 namespace { | 198 namespace { |
194 | 199 |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 } | 448 } |
444 | 449 |
445 /////////////////////////////////////////////////////////////////////////////// | 450 /////////////////////////////////////////////////////////////////////////////// |
446 // BrowserView, public: | 451 // BrowserView, public: |
447 | 452 |
448 // static | 453 // static |
449 const char BrowserView::kViewClassName[] = "BrowserView"; | 454 const char BrowserView::kViewClassName[] = "BrowserView"; |
450 | 455 |
451 BrowserView::BrowserView() | 456 BrowserView::BrowserView() |
452 : views::ClientView(nullptr, nullptr), | 457 : views::ClientView(nullptr, nullptr), |
453 last_focused_view_storage_id_(views::ViewStorage::GetInstance() | 458 last_focused_view_storage_id_( |
454 ->CreateStorageID()), | 459 views::ViewStorage::GetInstance()->CreateStorageID()), |
455 frame_(nullptr), | 460 frame_(nullptr), |
456 top_container_(nullptr), | 461 top_container_(nullptr), |
457 tabstrip_(nullptr), | 462 tabstrip_(nullptr), |
458 toolbar_(nullptr), | 463 toolbar_(nullptr), |
459 find_bar_host_view_(nullptr), | 464 find_bar_host_view_(nullptr), |
460 infobar_container_(nullptr), | 465 infobar_container_(nullptr), |
461 contents_web_view_(nullptr), | 466 contents_web_view_(nullptr), |
462 devtools_web_view_(nullptr), | 467 devtools_web_view_(nullptr), |
463 contents_container_(nullptr), | 468 contents_container_(nullptr), |
464 initialized_(false), | 469 initialized_(false), |
| 470 handling_theme_changed_(false), |
465 in_process_fullscreen_(false), | 471 in_process_fullscreen_(false), |
466 #if defined(OS_WIN) | 472 #if defined(OS_WIN) |
467 ticker_(0), | 473 ticker_(0), |
468 hung_window_detector_(&hung_plugin_action_), | 474 hung_window_detector_(&hung_plugin_action_), |
469 #endif | 475 #endif |
470 force_location_bar_focus_(false), | 476 force_location_bar_focus_(false), |
471 activate_modal_dialog_factory_(this) { | 477 activate_modal_dialog_factory_(this) { |
472 } | 478 } |
473 | 479 |
474 BrowserView::~BrowserView() { | 480 BrowserView::~BrowserView() { |
(...skipping 1528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2003 } | 2009 } |
2004 | 2010 |
2005 void BrowserView::ChildPreferredSizeChanged(View* child) { | 2011 void BrowserView::ChildPreferredSizeChanged(View* child) { |
2006 Layout(); | 2012 Layout(); |
2007 } | 2013 } |
2008 | 2014 |
2009 void BrowserView::GetAccessibleState(ui::AXViewState* state) { | 2015 void BrowserView::GetAccessibleState(ui::AXViewState* state) { |
2010 state->role = ui::AX_ROLE_CLIENT; | 2016 state->role = ui::AX_ROLE_CLIENT; |
2011 } | 2017 } |
2012 | 2018 |
| 2019 void BrowserView::OnThemeChanged() { |
| 2020 if (!IsRegularOrGuestSession() && |
| 2021 ui::MaterialDesignController::IsModeMaterial()) { |
| 2022 // When the theme changes, the native theme may also change (in OTR, the |
| 2023 // usage of dark or normal hinges on the browser theme), so we have to |
| 2024 // propagate both kinds of change. |
| 2025 base::AutoReset<bool> reset(&handling_theme_changed_, true); |
| 2026 #if defined(OS_WIN) |
| 2027 ui::NativeThemeDarkWin::instance()->NotifyObservers(); |
| 2028 ui::NativeThemeWin::instance()->NotifyObservers(); |
| 2029 #elif defined(OS_LINUX) |
| 2030 ui::NativeThemeDarkAura::instance()->NotifyObservers(); |
| 2031 ui::NativeThemeAura::instance()->NotifyObservers(); |
| 2032 #endif |
| 2033 } |
| 2034 |
| 2035 views::View::OnThemeChanged(); |
| 2036 } |
| 2037 |
2013 void BrowserView::OnNativeThemeChanged(const ui::NativeTheme* theme) { | 2038 void BrowserView::OnNativeThemeChanged(const ui::NativeTheme* theme) { |
2014 // Do not handle native theme changes before the browser view is initialized. | 2039 // Do not handle native theme changes before the browser view is initialized. |
2015 if (!initialized_) | 2040 if (!initialized_) |
2016 return; | 2041 return; |
2017 ClientView::OnNativeThemeChanged(theme); | 2042 ClientView::OnNativeThemeChanged(theme); |
2018 UserChangedTheme(); | 2043 // Don't infinitely recurse. |
| 2044 if (!handling_theme_changed_) |
| 2045 UserChangedTheme(); |
2019 chrome::MaybeShowInvertBubbleView(this); | 2046 chrome::MaybeShowInvertBubbleView(this); |
2020 } | 2047 } |
2021 | 2048 |
2022 /////////////////////////////////////////////////////////////////////////////// | 2049 /////////////////////////////////////////////////////////////////////////////// |
2023 // BrowserView, ui::AcceleratorTarget overrides: | 2050 // BrowserView, ui::AcceleratorTarget overrides: |
2024 | 2051 |
2025 bool BrowserView::AcceleratorPressed(const ui::Accelerator& accelerator) { | 2052 bool BrowserView::AcceleratorPressed(const ui::Accelerator& accelerator) { |
2026 std::map<ui::Accelerator, int>::const_iterator iter = | 2053 std::map<ui::Accelerator, int>::const_iterator iter = |
2027 accelerator_table_.find(accelerator); | 2054 accelerator_table_.find(accelerator); |
2028 DCHECK(iter != accelerator_table_.end()); | 2055 DCHECK(iter != accelerator_table_.end()); |
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2687 return immersive_mode_controller()->IsEnabled(); | 2714 return immersive_mode_controller()->IsEnabled(); |
2688 } | 2715 } |
2689 | 2716 |
2690 views::Widget* BrowserView::GetBubbleAssociatedWidget() { | 2717 views::Widget* BrowserView::GetBubbleAssociatedWidget() { |
2691 return GetWidget(); | 2718 return GetWidget(); |
2692 } | 2719 } |
2693 | 2720 |
2694 gfx::Rect BrowserView::GetTopContainerBoundsInScreen() { | 2721 gfx::Rect BrowserView::GetTopContainerBoundsInScreen() { |
2695 return top_container_->GetBoundsInScreen(); | 2722 return top_container_->GetBoundsInScreen(); |
2696 } | 2723 } |
OLD | NEW |