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

Side by Side Diff: chrome/browser/ui/views/frame/browser_desktop_window_tree_host_x11.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_x11.h" 5 #include "chrome/browser/ui/views/frame/browser_desktop_window_tree_host_x11.h"
6 6
7 #include "chrome/browser/themes/theme_service.h" 7 #include "chrome/browser/themes/theme_service.h"
8 #include "chrome/browser/themes/theme_service_factory.h" 8 #include "chrome/browser/themes/theme_service_factory.h"
9 #include "chrome/browser/ui/views/frame/browser_frame.h" 9 #include "chrome/browser/ui/views/frame/browser_frame.h"
10 #include "chrome/browser/ui/views/frame/browser_view.h" 10 #include "chrome/browser/ui/views/frame/browser_view.h"
11 #include "chrome/browser/ui/views/theme_image_mapper.h" 11 #include "chrome/browser/ui/views/theme_image_mapper.h"
12 12
13 namespace { 13 namespace {
14 14
15 // DesktopThemeProvider maps resource ids using MapThemeImage(). This is 15 // DesktopThemeProvider maps resource ids using MapThemeImage(). This is
16 // necessary for BrowserDesktopWindowTreeHostWin so that it uses the windows 16 // necessary for BrowserDesktopWindowTreeHostWin so that it uses the windows
17 // theme images rather than the ash theme images. 17 // theme images rather than the ash theme images.
18 // 18 //
19 // This differs from the version in browser_desktop_window_tree_host_win.cc 19 // This differs from the version in browser_desktop_window_tree_host_win.cc
20 // because we need to also look up whether we're using the native theme. 20 // because we need to also look up whether we're using the native theme.
21 class DesktopThemeProvider : public ui::ThemeProvider { 21 class DesktopThemeProvider : public ui::ThemeProvider {
22 public: 22 public:
23 explicit DesktopThemeProvider(ThemeService* delegate) 23 explicit DesktopThemeProvider(Profile* profile) : profile_(profile) {}
24 : delegate_(delegate) {
25 }
26 24
27 bool UsingSystemTheme() const override {
28 return delegate_->UsingSystemTheme();
29 }
30 gfx::ImageSkia* GetImageSkiaNamed(int id) const override { 25 gfx::ImageSkia* GetImageSkiaNamed(int id) const override {
31 if (delegate_->UsingSystemTheme() && delegate_->HasCustomImage(id)) 26 if (GetThemeService()->UsingSystemTheme() &&
32 return delegate_->GetImageSkiaNamed(id); 27 GetThemeProvider().HasCustomImage(id)) {
28 return GetThemeProvider().GetImageSkiaNamed(id);
29 }
33 30
34 return delegate_->GetImageSkiaNamed( 31 return GetThemeProvider().GetImageSkiaNamed(
35 chrome::MapThemeImage(chrome::HOST_DESKTOP_TYPE_NATIVE, id)); 32 chrome::MapThemeImage(chrome::HOST_DESKTOP_TYPE_NATIVE, id));
36 } 33 }
37 SkColor GetColor(int id) const override { return delegate_->GetColor(id); } 34 SkColor GetColor(int id) const override {
35 return GetThemeProvider().GetColor(id);
36 }
38 int GetDisplayProperty(int id) const override { 37 int GetDisplayProperty(int id) const override {
39 return delegate_->GetDisplayProperty(id); 38 return GetThemeProvider().GetDisplayProperty(id);
40 } 39 }
41 bool ShouldUseNativeFrame() const override { 40 bool ShouldUseNativeFrame() const override {
42 return delegate_->ShouldUseNativeFrame(); 41 return GetThemeProvider().ShouldUseNativeFrame();
43 } 42 }
44 bool HasCustomImage(int id) const override { 43 bool HasCustomImage(int id) const override {
45 return delegate_->HasCustomImage( 44 return GetThemeProvider().HasCustomImage(
46 chrome::MapThemeImage(chrome::HOST_DESKTOP_TYPE_NATIVE, id)); 45 chrome::MapThemeImage(chrome::HOST_DESKTOP_TYPE_NATIVE, id));
47 } 46 }
48 base::RefCountedMemory* GetRawData(int id, ui::ScaleFactor scale_factor) 47 base::RefCountedMemory* GetRawData(int id, ui::ScaleFactor scale_factor)
49 const override { 48 const override {
50 return delegate_->GetRawData(id, scale_factor); 49 return GetThemeProvider().GetRawData(id, scale_factor);
51 } 50 }
52 51
53 private: 52 private:
54 ThemeService* delegate_; 53 const ThemeService* GetThemeService() const {
54 return ThemeServiceFactory::GetForProfile(profile_);
55 }
56
57 const ui::ThemeProvider& GetThemeProvider() const {
58 return ThemeService::GetThemeProviderForProfile(profile_);
59 }
60
61 Profile* profile_;
55 62
56 DISALLOW_COPY_AND_ASSIGN(DesktopThemeProvider); 63 DISALLOW_COPY_AND_ASSIGN(DesktopThemeProvider);
57 }; 64 };
58 65
59 } // namespace 66 } // namespace
60 67
61 //////////////////////////////////////////////////////////////////////////////// 68 ////////////////////////////////////////////////////////////////////////////////
62 // BrowserDesktopWindowTreeHostX11, public: 69 // BrowserDesktopWindowTreeHostX11, public:
63 70
64 BrowserDesktopWindowTreeHostX11::BrowserDesktopWindowTreeHostX11( 71 BrowserDesktopWindowTreeHostX11::BrowserDesktopWindowTreeHostX11(
65 views::internal::NativeWidgetDelegate* native_widget_delegate, 72 views::internal::NativeWidgetDelegate* native_widget_delegate,
66 views::DesktopNativeWidgetAura* desktop_native_widget_aura, 73 views::DesktopNativeWidgetAura* desktop_native_widget_aura,
67 BrowserView* browser_view, 74 BrowserView* browser_view,
68 BrowserFrame* browser_frame) 75 BrowserFrame* browser_frame)
69 : DesktopWindowTreeHostX11(native_widget_delegate, 76 : DesktopWindowTreeHostX11(native_widget_delegate,
70 desktop_native_widget_aura), 77 desktop_native_widget_aura),
71 browser_view_(browser_view) { 78 browser_view_(browser_view) {
72 scoped_ptr<ui::ThemeProvider> theme_provider( 79 scoped_ptr<ui::ThemeProvider> theme_provider(
73 new DesktopThemeProvider(ThemeServiceFactory::GetForProfile( 80 new DesktopThemeProvider(browser_view->browser()->profile()));
74 browser_view->browser()->profile())));
75 browser_frame->SetThemeProvider(theme_provider.Pass()); 81 browser_frame->SetThemeProvider(theme_provider.Pass());
76 browser_frame->set_frame_type( 82 browser_frame->set_frame_type(
77 browser_frame->UseCustomFrame() ? views::Widget::FRAME_TYPE_FORCE_CUSTOM 83 browser_frame->UseCustomFrame() ? views::Widget::FRAME_TYPE_FORCE_CUSTOM
78 : views::Widget::FRAME_TYPE_FORCE_NATIVE); 84 : views::Widget::FRAME_TYPE_FORCE_NATIVE);
79 } 85 }
80 86
81 BrowserDesktopWindowTreeHostX11::~BrowserDesktopWindowTreeHostX11() { 87 BrowserDesktopWindowTreeHostX11::~BrowserDesktopWindowTreeHostX11() {
82 } 88 }
83 89
84 //////////////////////////////////////////////////////////////////////////////// 90 ////////////////////////////////////////////////////////////////////////////////
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 BrowserDesktopWindowTreeHost::CreateBrowserDesktopWindowTreeHost( 131 BrowserDesktopWindowTreeHost::CreateBrowserDesktopWindowTreeHost(
126 views::internal::NativeWidgetDelegate* native_widget_delegate, 132 views::internal::NativeWidgetDelegate* native_widget_delegate,
127 views::DesktopNativeWidgetAura* desktop_native_widget_aura, 133 views::DesktopNativeWidgetAura* desktop_native_widget_aura,
128 BrowserView* browser_view, 134 BrowserView* browser_view,
129 BrowserFrame* browser_frame) { 135 BrowserFrame* browser_frame) {
130 return new BrowserDesktopWindowTreeHostX11(native_widget_delegate, 136 return new BrowserDesktopWindowTreeHostX11(native_widget_delegate,
131 desktop_native_widget_aura, 137 desktop_native_widget_aura,
132 browser_view, 138 browser_view,
133 browser_frame); 139 browser_frame);
134 } 140 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/browser_desktop_window_tree_host_win.cc ('k') | chrome/browser/ui/views/frame/browser_frame.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698