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

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

Issue 1492423003: Rejigger ThemeService: move exposure of ThemeProvider interface to a (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix that unittest Created 5 years 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_desktop_window_tree_host_win.h" 5 #include "chrome/browser/ui/views/frame/browser_desktop_window_tree_host_win.h"
6 6
7 #include <dwmapi.h> 7 #include <dwmapi.h>
8 8
9 #include "base/process/process_handle.h" 9 #include "base/process/process_handle.h"
10 #include "base/win/windows_version.h" 10 #include "base/win/windows_version.h"
(...skipping 16 matching lines...) Expand all
27 27
28 namespace { 28 namespace {
29 29
30 const int kClientEdgeThickness = 3; 30 const int kClientEdgeThickness = 3;
31 31
32 // DesktopThemeProvider maps resource ids using MapThemeImage(). This is 32 // DesktopThemeProvider maps resource ids using MapThemeImage(). This is
33 // necessary for BrowserDesktopWindowTreeHostWin so that it uses the windows 33 // necessary for BrowserDesktopWindowTreeHostWin so that it uses the windows
34 // theme images rather than the ash theme images. 34 // theme images rather than the ash theme images.
35 class DesktopThemeProvider : public ui::ThemeProvider { 35 class DesktopThemeProvider : public ui::ThemeProvider {
36 public: 36 public:
37 explicit DesktopThemeProvider(ui::ThemeProvider* delegate) 37 explicit DesktopThemeProvider(const ui::ThemeProvider& delegate)
38 : delegate_(delegate) { 38 : delegate_(delegate) {}
39 }
40 39
41 bool UsingSystemTheme() const override {
42 return delegate_->UsingSystemTheme();
43 }
44 gfx::ImageSkia* GetImageSkiaNamed(int id) const override { 40 gfx::ImageSkia* GetImageSkiaNamed(int id) const override {
45 return delegate_->GetImageSkiaNamed( 41 return delegate_.GetImageSkiaNamed(
46 chrome::MapThemeImage(chrome::HOST_DESKTOP_TYPE_NATIVE, id)); 42 chrome::MapThemeImage(chrome::HOST_DESKTOP_TYPE_NATIVE, id));
47 } 43 }
48 SkColor GetColor(int id) const override { 44 SkColor GetColor(int id) const override { return delegate_.GetColor(id); }
49 return delegate_->GetColor(id);
50 }
51 int GetDisplayProperty(int id) const override { 45 int GetDisplayProperty(int id) const override {
52 return delegate_->GetDisplayProperty(id); 46 return delegate_.GetDisplayProperty(id);
53 } 47 }
54 bool ShouldUseNativeFrame() const override { 48 bool ShouldUseNativeFrame() const override {
55 return delegate_->ShouldUseNativeFrame(); 49 return delegate_.ShouldUseNativeFrame();
56 } 50 }
57 bool HasCustomImage(int id) const override { 51 bool HasCustomImage(int id) const override {
58 return delegate_->HasCustomImage( 52 return delegate_.HasCustomImage(
59 chrome::MapThemeImage(chrome::HOST_DESKTOP_TYPE_NATIVE, id)); 53 chrome::MapThemeImage(chrome::HOST_DESKTOP_TYPE_NATIVE, id));
60 } 54 }
61 base::RefCountedMemory* GetRawData( 55 base::RefCountedMemory* GetRawData(
62 int id, 56 int id,
63 ui::ScaleFactor scale_factor) const override { 57 ui::ScaleFactor scale_factor) const override {
64 return delegate_->GetRawData(id, scale_factor); 58 return delegate_.GetRawData(id, scale_factor);
65 } 59 }
66 60
67 private: 61 private:
68 ui::ThemeProvider* delegate_; 62 const ui::ThemeProvider& delegate_;
69 63
70 DISALLOW_COPY_AND_ASSIGN(DesktopThemeProvider); 64 DISALLOW_COPY_AND_ASSIGN(DesktopThemeProvider);
71 }; 65 };
72 66
73 } // namespace 67 } // namespace
74 68
75 //////////////////////////////////////////////////////////////////////////////// 69 ////////////////////////////////////////////////////////////////////////////////
76 // BrowserDesktopWindowTreeHostWin, public: 70 // BrowserDesktopWindowTreeHostWin, public:
77 71
78 BrowserDesktopWindowTreeHostWin::BrowserDesktopWindowTreeHostWin( 72 BrowserDesktopWindowTreeHostWin::BrowserDesktopWindowTreeHostWin(
79 views::internal::NativeWidgetDelegate* native_widget_delegate, 73 views::internal::NativeWidgetDelegate* native_widget_delegate,
80 views::DesktopNativeWidgetAura* desktop_native_widget_aura, 74 views::DesktopNativeWidgetAura* desktop_native_widget_aura,
81 BrowserView* browser_view, 75 BrowserView* browser_view,
82 BrowserFrame* browser_frame) 76 BrowserFrame* browser_frame)
83 : DesktopWindowTreeHostWin(native_widget_delegate, 77 : DesktopWindowTreeHostWin(native_widget_delegate,
84 desktop_native_widget_aura), 78 desktop_native_widget_aura),
85 browser_view_(browser_view), 79 browser_view_(browser_view),
86 browser_frame_(browser_frame), 80 browser_frame_(browser_frame),
87 did_gdi_clear_(false) { 81 did_gdi_clear_(false) {
88 scoped_ptr<ui::ThemeProvider> theme_provider( 82 scoped_ptr<ui::ThemeProvider> theme_provider(
89 new DesktopThemeProvider(ThemeServiceFactory::GetForProfile( 83 new DesktopThemeProvider(ThemeService::GetThemeProviderForProfile(
90 browser_view->browser()->profile()))); 84 browser_view->browser()->profile())));
91 browser_frame->SetThemeProvider(theme_provider.Pass()); 85 browser_frame->SetThemeProvider(theme_provider.Pass());
92 } 86 }
93 87
94 BrowserDesktopWindowTreeHostWin::~BrowserDesktopWindowTreeHostWin() { 88 BrowserDesktopWindowTreeHostWin::~BrowserDesktopWindowTreeHostWin() {
95 } 89 }
96 90
97 views::NativeMenuWin* BrowserDesktopWindowTreeHostWin::GetSystemMenu() { 91 views::NativeMenuWin* BrowserDesktopWindowTreeHostWin::GetSystemMenu() {
98 if (!system_menu_.get()) { 92 if (!system_menu_.get()) {
99 SystemMenuInsertionDelegateWin insertion_delegate; 93 SystemMenuInsertionDelegateWin insertion_delegate;
100 system_menu_.reset( 94 system_menu_.reset(
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 BrowserDesktopWindowTreeHost::CreateBrowserDesktopWindowTreeHost( 339 BrowserDesktopWindowTreeHost::CreateBrowserDesktopWindowTreeHost(
346 views::internal::NativeWidgetDelegate* native_widget_delegate, 340 views::internal::NativeWidgetDelegate* native_widget_delegate,
347 views::DesktopNativeWidgetAura* desktop_native_widget_aura, 341 views::DesktopNativeWidgetAura* desktop_native_widget_aura,
348 BrowserView* browser_view, 342 BrowserView* browser_view,
349 BrowserFrame* browser_frame) { 343 BrowserFrame* browser_frame) {
350 return new BrowserDesktopWindowTreeHostWin(native_widget_delegate, 344 return new BrowserDesktopWindowTreeHostWin(native_widget_delegate,
351 desktop_native_widget_aura, 345 desktop_native_widget_aura,
352 browser_view, 346 browser_view,
353 browser_frame); 347 browser_frame);
354 } 348 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698