Commit b1dcb398 authored by Peter Kasting's avatar Peter Kasting Committed by Commit Bot

Remove DefaultThemeProvider.

This was a stub implementation.  No one should actually rely on its
values, and returning null by default helps turn what could be subtle
runtime behavior bugs into crashes.

Provide the stub in ChromeViewsTestBase.  In production code, Widgets
should all be supplying a real theme provider.

Bug: none
Change-Id: I127048666ab3599f92f93a6d7627907344eae0a0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2045314
Commit-Queue: Peter Kasting <pkasting@chromium.org>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#757978}
parent e9897da6
...@@ -121,9 +121,8 @@ void ViewEventTestBase::SetUp() { ...@@ -121,9 +121,8 @@ void ViewEventTestBase::SetUp() {
test_views_delegate()->set_use_desktop_native_widgets(true); test_views_delegate()->set_use_desktop_native_widgets(true);
window_ = views::Widget::CreateWindowWithContext( window_ = AllocateTestWidget().release();
new TestBaseWidgetDelegate(this), // Owns itself. window_->Init(CreateParams(views::Widget::InitParams::TYPE_WINDOW));
GetContext());
window_->Show(); window_->Show();
} }
...@@ -136,6 +135,13 @@ void ViewEventTestBase::TearDown() { ...@@ -136,6 +135,13 @@ void ViewEventTestBase::TearDown() {
ChromeViewsTestBase::TearDown(); ChromeViewsTestBase::TearDown();
} }
views::Widget::InitParams ViewEventTestBase::CreateParams(
views::Widget::InitParams::Type type) {
views::Widget::InitParams params = ChromeViewsTestBase::CreateParams(type);
params.delegate = new TestBaseWidgetDelegate(this); // Owns itself.
return params;
}
gfx::Size ViewEventTestBase::GetPreferredSizeForContents() const { gfx::Size ViewEventTestBase::GetPreferredSizeForContents() const {
return gfx::Size(); return gfx::Size();
} }
......
...@@ -75,6 +75,8 @@ class ViewEventTestBase : public ChromeViewsTestBase { ...@@ -75,6 +75,8 @@ class ViewEventTestBase : public ChromeViewsTestBase {
// ChromeViewsTestBase: // ChromeViewsTestBase:
void SetUp() override; void SetUp() override;
void TearDown() override; void TearDown() override;
views::Widget::InitParams CreateParams(
views::Widget::InitParams::Type type) override;
// Returns the view that is added to the window. // Returns the view that is added to the window.
virtual std::unique_ptr<views::View> CreateContentsView() = 0; virtual std::unique_ptr<views::View> CreateContentsView() = 0;
......
...@@ -8,18 +8,58 @@ ...@@ -8,18 +8,58 @@
#include "chrome/browser/ui/views/chrome_layout_provider.h" #include "chrome/browser/ui/views/chrome_layout_provider.h"
#include "content/public/test/browser_task_environment.h" #include "content/public/test/browser_task_environment.h"
#include "ui/base/theme_provider.h"
#include "ui/gfx/color_palette.h"
#include "ui/gfx/color_utils.h"
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
#include "ash/test/ash_test_helper.h" #include "ash/test/ash_test_helper.h"
#include "ui/views/test/views_test_helper_aura.h" #include "ui/views/test/views_test_helper_aura.h"
#endif
namespace { namespace {
#if defined(OS_CHROMEOS)
std::unique_ptr<aura::test::AuraTestHelper> MakeTestHelper() { std::unique_ptr<aura::test::AuraTestHelper> MakeTestHelper() {
return std::make_unique<ash::AshTestHelper>(); return std::make_unique<ash::AshTestHelper>();
} }
} // namespace
#endif #endif
class StubThemeProvider : public ui::ThemeProvider {
public:
StubThemeProvider() = default;
~StubThemeProvider() override = default;
// ui::ThemeProvider:
gfx::ImageSkia* GetImageSkiaNamed(int id) const override { return nullptr; }
SkColor GetColor(int id) const override { return gfx::kPlaceholderColor; }
color_utils::HSL GetTint(int id) const override { return color_utils::HSL(); }
int GetDisplayProperty(int id) const override { return -1; }
bool ShouldUseNativeFrame() const override { return false; }
bool HasCustomImage(int id) const override { return false; }
bool HasCustomColor(int id) const override { return false; }
base::RefCountedMemory* GetRawData(int id, ui::ScaleFactor scale_factor)
const override {
return nullptr;
}
};
class TestWidget : public views::Widget {
public:
TestWidget() = default;
~TestWidget() override = default;
// views::Widget:
const ui::ThemeProvider* GetThemeProvider() const override {
return &theme_provider_;
}
private:
StubThemeProvider theme_provider_;
};
} // namespace
ChromeViewsTestBase::ChromeViewsTestBase() ChromeViewsTestBase::ChromeViewsTestBase()
: views::ViewsTestBase(std::unique_ptr<base::test::TaskEnvironment>( : views::ViewsTestBase(std::unique_ptr<base::test::TaskEnvironment>(
std::make_unique<content::BrowserTaskEnvironment>( std::make_unique<content::BrowserTaskEnvironment>(
...@@ -50,3 +90,7 @@ void ChromeViewsTestBase::TearDown() { ...@@ -50,3 +90,7 @@ void ChromeViewsTestBase::TearDown() {
views::ViewsTestBase::TearDown(); views::ViewsTestBase::TearDown();
} }
#endif #endif
std::unique_ptr<views::Widget> ChromeViewsTestBase::AllocateTestWidget() {
return std::make_unique<TestWidget>();
}
...@@ -22,6 +22,7 @@ class ChromeViewsTestBase : public views::ViewsTestBase { ...@@ -22,6 +22,7 @@ class ChromeViewsTestBase : public views::ViewsTestBase {
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
void TearDown() override; void TearDown() override;
#endif #endif
std::unique_ptr<views::Widget> AllocateTestWidget() override;
}; };
#endif // CHROME_TEST_VIEWS_CHROME_VIEWS_TEST_BASE_H_ #endif // CHROME_TEST_VIEWS_CHROME_VIEWS_TEST_BASE_H_
...@@ -336,8 +336,6 @@ jumbo_component("base") { ...@@ -336,8 +336,6 @@ jumbo_component("base") {
"base_window.h", "base_window.h",
"cursor/cursor_util.cc", "cursor/cursor_util.cc",
"cursor/cursor_util.h", "cursor/cursor_util.h",
"default_theme_provider.cc",
"default_theme_provider.h",
"emoji/emoji_panel_helper.h", "emoji/emoji_panel_helper.h",
"pointer/pointer_device.h", "pointer/pointer_device.h",
"pointer/pointer_device_util.cc", "pointer/pointer_device_util.cc",
...@@ -633,7 +631,6 @@ jumbo_component("base") { ...@@ -633,7 +631,6 @@ jumbo_component("base") {
libs += [ "jnigraphics" ] libs += [ "jnigraphics" ]
sources -= [ sources -= [
"default_theme_provider.cc",
"l10n/l10n_font_util.cc", "l10n/l10n_font_util.cc",
"models/button_menu_item_model.cc", "models/button_menu_item_model.cc",
"pointer/touch_editing_controller.cc", "pointer/touch_editing_controller.cc",
......
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/base/default_theme_provider.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/color_palette.h"
#include "ui/gfx/color_utils.h"
#include "ui/gfx/image/image_skia.h"
namespace ui {
DefaultThemeProvider::DefaultThemeProvider() {}
DefaultThemeProvider::~DefaultThemeProvider() {}
gfx::ImageSkia* DefaultThemeProvider::GetImageSkiaNamed(int id) const {
return ResourceBundle::GetSharedInstance().GetImageSkiaNamed(id);
}
SkColor DefaultThemeProvider::GetColor(int id) const {
return gfx::kPlaceholderColor;
}
color_utils::HSL DefaultThemeProvider::GetTint(int id) const {
return color_utils::HSL();
}
int DefaultThemeProvider::GetDisplayProperty(int id) const {
return -1;
}
bool DefaultThemeProvider::ShouldUseNativeFrame() const {
return false;
}
bool DefaultThemeProvider::HasCustomImage(int id) const {
return false;
}
bool DefaultThemeProvider::HasCustomColor(int id) const {
return false;
}
base::RefCountedMemory* DefaultThemeProvider::GetRawData(
int id,
ui::ScaleFactor scale_factor) const {
return NULL;
}
} // namespace ui
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_BASE_DEFAULT_THEME_PROVIDER_H_
#define UI_BASE_DEFAULT_THEME_PROVIDER_H_
#include <vector>
#include "base/compiler_specific.h"
#include "base/macros.h"
#include "ui/base/theme_provider.h"
#include "ui/base/ui_base_export.h"
namespace ui {
class UI_BASE_EXPORT DefaultThemeProvider : public ThemeProvider {
public:
DefaultThemeProvider();
~DefaultThemeProvider() override;
// Overridden from ui::ThemeProvider:
gfx::ImageSkia* GetImageSkiaNamed(int id) const override;
SkColor GetColor(int id) const override;
color_utils::HSL GetTint(int id) const override;
int GetDisplayProperty(int id) const override;
bool ShouldUseNativeFrame() const override;
bool HasCustomImage(int id) const override;
bool HasCustomColor(int id) const override;
base::RefCountedMemory* GetRawData(int id, ui::ScaleFactor scale_factor)
const override;
private:
DISALLOW_COPY_AND_ASSIGN(DefaultThemeProvider);
};
} // namespace ui
#endif // UI_BASE_DEFAULT_THEME_PROVIDER_H_
...@@ -769,7 +769,7 @@ bool Widget::IsVisible() const { ...@@ -769,7 +769,7 @@ bool Widget::IsVisible() const {
const ui::ThemeProvider* Widget::GetThemeProvider() const { const ui::ThemeProvider* Widget::GetThemeProvider() const {
const Widget* root_widget = GetTopLevelWidget(); const Widget* root_widget = GetTopLevelWidget();
return (root_widget && root_widget != this) ? root_widget->GetThemeProvider() return (root_widget && root_widget != this) ? root_widget->GetThemeProvider()
: &default_theme_provider_; : nullptr;
} }
FocusManager* Widget::GetFocusManager() { FocusManager* Widget::GetFocusManager() {
......
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
#include "base/optional.h" #include "base/optional.h"
#include "base/scoped_observer.h" #include "base/scoped_observer.h"
#include "build/build_config.h" #include "build/build_config.h"
#include "ui/base/default_theme_provider.h"
#include "ui/base/ui_base_types.h" #include "ui/base/ui_base_types.h"
#include "ui/events/event_source.h" #include "ui/events/event_source.h"
#include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/rect.h"
...@@ -1050,9 +1049,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, ...@@ -1050,9 +1049,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,
// must be destroyed AFTER root_view_. This is enforced in DestroyRootView(). // must be destroyed AFTER root_view_. This is enforced in DestroyRootView().
std::unique_ptr<FocusManager> focus_manager_; std::unique_ptr<FocusManager> focus_manager_;
// A theme provider to use when no other theme provider is specified.
const ui::DefaultThemeProvider default_theme_provider_;
// Valid for the lifetime of RunShellDrag(), indicates the view the drag // Valid for the lifetime of RunShellDrag(), indicates the view the drag
// started from. // started from.
View* dragged_view_ = nullptr; View* dragged_view_ = nullptr;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment