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

Side by Side Diff: chrome/browser/gtk/gtk_theme_provider_unittest.cc

Issue 499004: Try 2: Completely redo how themes are stored on disk and processed at install time. (Closed)
Patch Set: Created 11 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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 <gtk/gtk.h> 5 #include <gtk/gtk.h>
6 6
7 #include "chrome/browser/gtk/gtk_theme_provider.h" 7 #include "chrome/browser/gtk/gtk_theme_provider.h"
8 #include "chrome/browser/profile.h" 8 #include "chrome/browser/profile.h"
9 #include "chrome/common/pref_names.h" 9 #include "chrome/common/pref_names.h"
10 #include "chrome/test/testing_profile.h" 10 #include "chrome/test/testing_profile.h"
(...skipping 17 matching lines...) Expand all
28 28
29 void SetUseGtkTheme(bool use_gtk_theme) { 29 void SetUseGtkTheme(bool use_gtk_theme) {
30 profile_.GetPrefs()->SetBoolean(prefs::kUsesSystemTheme, use_gtk_theme); 30 profile_.GetPrefs()->SetBoolean(prefs::kUsesSystemTheme, use_gtk_theme);
31 } 31 }
32 32
33 void BuildProvider() { 33 void BuildProvider() {
34 profile_.InitThemes(); 34 profile_.InitThemes();
35 provider_ = GtkThemeProvider::GetFrom(&profile_); 35 provider_ = GtkThemeProvider::GetFrom(&profile_);
36 } 36 }
37 37
38 void UseThemeProvider(GtkThemeProvider* provider) {
39 profile_.UseThemeProvider(provider);
40 provider_ = GtkThemeProvider::GetFrom(&profile_);
41 }
42
43 protected: 38 protected:
44 TestingProfile profile_; 39 TestingProfile profile_;
45 40
46 GtkThemeProvider* provider_; 41 GtkThemeProvider* provider_;
47 }; 42 };
48 43
49 TEST_F(GtkThemeProviderTest, DefaultValues) { 44 TEST_F(GtkThemeProviderTest, DefaultValues) {
50 SetUseGtkTheme(false); 45 SetUseGtkTheme(false);
51 BuildProvider(); 46 BuildProvider();
52 47
53 // Test that we get the default theme colors back when in normal mode. 48 // Test that we get the default theme colors back when in normal mode.
54 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_FRAME), 49 for (int i = BrowserThemeProvider::COLOR_FRAME;
55 BrowserThemeProvider::kDefaultColorFrame); 50 i <= BrowserThemeProvider::COLOR_BUTTON_BACKGROUND; ++i) {
56 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_FRAME_INACTIVE), 51 EXPECT_EQ(provider_->GetColor(i), BrowserThemeProvider::GetDefaultColor(i))
57 BrowserThemeProvider::kDefaultColorFrameInactive); 52 << "Wrong default color for " << i;
58 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_FRAME_INCOGNITO), 53 }
59 BrowserThemeProvider::kDefaultColorFrameIncognito);
60 EXPECT_EQ(provider_->GetColor(
61 BrowserThemeProvider::COLOR_FRAME_INCOGNITO_INACTIVE),
62 BrowserThemeProvider::kDefaultColorFrameIncognitoInactive);
63 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_TOOLBAR),
64 BrowserThemeProvider::kDefaultColorToolbar);
65 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_TAB_TEXT),
66 BrowserThemeProvider::kDefaultColorTabText);
67 EXPECT_EQ(provider_->GetColor(
68 BrowserThemeProvider::COLOR_BACKGROUND_TAB_TEXT),
69 BrowserThemeProvider::kDefaultColorBackgroundTabText);
70 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_BOOKMARK_TEXT),
71 BrowserThemeProvider::kDefaultColorBookmarkText);
72 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_NTP_BACKGROUND),
73 BrowserThemeProvider::kDefaultColorNTPBackground);
74 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_NTP_TEXT),
75 BrowserThemeProvider::kDefaultColorNTPText);
76 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_NTP_LINK),
77 BrowserThemeProvider::kDefaultColorNTPLink);
78 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_NTP_HEADER),
79 BrowserThemeProvider::kDefaultColorNTPHeader);
80 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_NTP_SECTION),
81 BrowserThemeProvider::kDefaultColorNTPSection);
82 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_NTP_SECTION_TEXT),
83 BrowserThemeProvider::kDefaultColorNTPSectionText);
84 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_NTP_SECTION_LINK),
85 BrowserThemeProvider::kDefaultColorNTPSectionLink);
86 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_CONTROL_BACKGROUND),
87 BrowserThemeProvider::kDefaultColorControlBackground);
88 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_BUTTON_BACKGROUND),
89 BrowserThemeProvider::kDefaultColorButtonBackground);
90 } 54 }
91 55
92 TEST_F(GtkThemeProviderTest, UsingGtkValues) { 56 TEST_F(GtkThemeProviderTest, UsingGtkValues) {
93 SetUseGtkTheme(true); 57 SetUseGtkTheme(true);
94 BuildProvider(); 58 BuildProvider();
95 59
96 // This test only verifies that we're using GTK values. Because of Gtk's 60 // This test only verifies that we're using GTK values. Because of Gtk's
97 // large, implied global state, it would take some IN_PROCESS_BROWSER_TESTS 61 // large, implied global state, it would take some IN_PROCESS_BROWSER_TESTS
98 // to write an equivalent of DefaultValues above in a way that wouldn't make 62 // to write an equivalent of DefaultValues above in a way that wouldn't make
99 // other tests flaky. kColorTabText is the only simple path where there's no 63 // other tests flaky. kColorTabText is the only simple path where there's no
100 // weird calculations for edge cases so use that as a simple test. 64 // weird calculations for edge cases so use that as a simple test.
101 GtkWidget* fake_label = provider_->fake_label(); 65 GtkWidget* fake_label = provider_->fake_label();
102 GtkStyle* label_style = gtk_rc_get_style(fake_label); 66 GtkStyle* label_style = gtk_rc_get_style(fake_label);
103 GdkColor label_color = label_style->text[GTK_STATE_NORMAL]; 67 GdkColor label_color = label_style->text[GTK_STATE_NORMAL];
104 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_TAB_TEXT), 68 EXPECT_EQ(provider_->GetColor(BrowserThemeProvider::COLOR_TAB_TEXT),
105 GdkToSkColor(&label_color)); 69 GdkToSkColor(&label_color));
106 } 70 }
107
108 // Helper class to GtkThemeProviderTest.UsingGtkFrame.
109 class ImageVerifierGtkThemeProvider : public GtkThemeProvider {
110 public:
111 ImageVerifierGtkThemeProvider() : theme_toolbar_(NULL) { }
112
113 virtual SkBitmap* LoadThemeBitmap(int id) const {
114 if (id != IDR_THEME_TOOLBAR)
115 return GtkThemeProvider::LoadThemeBitmap(id);
116 theme_toolbar_ = GtkThemeProvider::LoadThemeBitmap(id);
117 return theme_toolbar_;
118 }
119
120 mutable SkBitmap* theme_toolbar_;
121 };
122
123 TEST_F(GtkThemeProviderTest, InjectsToolbar) {
124 SetUseGtkTheme(true);
125 ImageVerifierGtkThemeProvider* verifier_provider =
126 new ImageVerifierGtkThemeProvider;
127 UseThemeProvider(verifier_provider);
128
129 // Make sure the image we get from the public BrowserThemeProvider interface
130 // is the one we injected through GtkThemeProvider.
131 SkBitmap* image = provider_->GetBitmapNamed(IDR_THEME_TOOLBAR);
132 EXPECT_TRUE(verifier_provider->theme_toolbar_);
133 EXPECT_TRUE(image);
134 EXPECT_EQ(verifier_provider->theme_toolbar_, image);
135 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698