| 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_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 Loading... |
| 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 } |
| OLD | NEW |