diff options
author | erg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-11 22:09:55 +0000 |
---|---|---|
committer | erg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-11 22:09:55 +0000 |
commit | 75cbb35fa7fb6ce0a511612ec91998c053247be8 (patch) | |
tree | 5abee27b2c5f2c60e5017aa6c00b43d9fe2376f4 /chrome/browser/browser_theme_pack_unittest.cc | |
parent | 9fa8c2f5e9581c2e521fd28aadedc4c77b9b2150 (diff) | |
download | chromium_src-75cbb35fa7fb6ce0a511612ec91998c053247be8.zip chromium_src-75cbb35fa7fb6ce0a511612ec91998c053247be8.tar.gz chromium_src-75cbb35fa7fb6ce0a511612ec91998c053247be8.tar.bz2 |
Revert "Completely redo how themes are stored on disk and processed at install
time," as it fails valgrind tests.
This reverts commit 86faccd1028937a69ccc718718fd48c06c0cd471 (r34379).
Review URL: http://codereview.chromium.org/490025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34385 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/browser_theme_pack_unittest.cc')
-rw-r--r-- | chrome/browser/browser_theme_pack_unittest.cc | 335 |
1 files changed, 0 insertions, 335 deletions
diff --git a/chrome/browser/browser_theme_pack_unittest.cc b/chrome/browser/browser_theme_pack_unittest.cc deleted file mode 100644 index 1c9081c..0000000 --- a/chrome/browser/browser_theme_pack_unittest.cc +++ /dev/null @@ -1,335 +0,0 @@ -// Copyright (c) 2009 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 "chrome/browser/browser_theme_pack.h" - -#include "app/gfx/color_utils.h" -#include "app/theme_provider.h" -#include "base/file_util.h" -#include "base/json/json_reader.h" -#include "base/path_service.h" -#include "base/scoped_temp_dir.h" -#include "base/values.h" -#include "chrome/browser/theme_resources_util.h" -#include "chrome/browser/browser_theme_provider.h" -#include "chrome/common/chrome_paths.h" -#include "chrome/common/json_value_serializer.h" -#include "grit/theme_resources.h" -#include "testing/gtest/include/gtest/gtest.h" - -class BrowserThemePackTest : public ::testing::Test { - public: - BrowserThemePackTest() : theme_pack_(new BrowserThemePack) { } - - // Transformation for link underline colors. - SkColor BuildThirdOpacity(SkColor color_link) { - return SkColorSetA(color_link, SkColorGetA(color_link) / 3); - } - - void GenerateDefaultFrameColor(std::map<int, SkColor>* colors, - int color, int tint) { - (*colors)[color] = HSLShift( - BrowserThemeProvider::GetDefaultColor( - BrowserThemeProvider::COLOR_FRAME), - BrowserThemeProvider::GetDefaultTint(tint)); - } - - // Returns a mapping from each COLOR_* constant to the default value for this - // constant. Callers get this map, and then modify expected values and then - // run the resulting thing through VerifyColorMap(). - std::map<int, SkColor> GetDefaultColorMap() { - std::map<int, SkColor> colors; - for (int i = BrowserThemeProvider::COLOR_FRAME; - i <= BrowserThemeProvider::COLOR_BUTTON_BACKGROUND; ++i) { - colors[i] = BrowserThemeProvider::GetDefaultColor(i); - } - - GenerateDefaultFrameColor(&colors, BrowserThemeProvider::COLOR_FRAME, - BrowserThemeProvider::TINT_FRAME); - GenerateDefaultFrameColor(&colors, - BrowserThemeProvider::COLOR_FRAME_INACTIVE, - BrowserThemeProvider::TINT_FRAME_INACTIVE); - GenerateDefaultFrameColor(&colors, - BrowserThemeProvider::COLOR_FRAME_INCOGNITO, - BrowserThemeProvider::TINT_FRAME_INCOGNITO); - GenerateDefaultFrameColor( - &colors, - BrowserThemeProvider::COLOR_FRAME_INCOGNITO_INACTIVE, - BrowserThemeProvider::TINT_FRAME_INCOGNITO_INACTIVE); - - return colors; - } - - void VerifyColorMap(const std::map<int, SkColor>& color_map) { - for (std::map<int, SkColor>::const_iterator it = color_map.begin(); - it != color_map.end(); ++it) { - SkColor color = BrowserThemeProvider::GetDefaultColor(it->first); - theme_pack_->GetColor(it->first, &color); - EXPECT_EQ(it->second, color) << "Color id = " << it->first; - } - } - - void LoadColorJSON(const std::string& json) { - scoped_ptr<Value> value(base::JSONReader::Read(json, false)); - ASSERT_TRUE(value->IsType(Value::TYPE_DICTIONARY)); - theme_pack_->BuildColorsFromJSON( - static_cast<DictionaryValue*>(value.get())); - } - - void LoadTintJSON(const std::string& json) { - scoped_ptr<Value> value(base::JSONReader::Read(json, false)); - ASSERT_TRUE(value->IsType(Value::TYPE_DICTIONARY)); - theme_pack_->BuildTintsFromJSON( - static_cast<DictionaryValue*>(value.get())); - } - - void LoadDisplayPropertiesJSON(const std::string& json) { - scoped_ptr<Value> value(base::JSONReader::Read(json, false)); - ASSERT_TRUE(value->IsType(Value::TYPE_DICTIONARY)); - theme_pack_->BuildDisplayPropertiesFromJSON( - static_cast<DictionaryValue*>(value.get())); - } - - void ParseImageNames(const std::string& json, - std::map<int, FilePath>* out_file_paths) { - scoped_ptr<Value> value(base::JSONReader::Read(json, false)); - ASSERT_TRUE(value->IsType(Value::TYPE_DICTIONARY)); - theme_pack_->ParseImageNamesFromJSON( - static_cast<DictionaryValue*>(value.get()), - FilePath(), out_file_paths); - } - - FilePath GetStarGazingPath() { - FilePath test_path; - if (!PathService::Get(chrome::DIR_TEST_DATA, &test_path)) { - NOTREACHED(); - return test_path; - } - - test_path = test_path.AppendASCII("profiles"); - test_path = test_path.AppendASCII("complex_theme"); - test_path = test_path.AppendASCII("Default"); - test_path = test_path.AppendASCII("Extensions"); - test_path = test_path.AppendASCII("mblmlcbknbnfebdfjnolmcapmdofhmme"); - test_path = test_path.AppendASCII("1.1"); - return FilePath(test_path); - } - - // Verifies the data in star gazing. We do this multiple times for different - // BrowserThemePack objects to make sure it works in generated and mmapped - // mode correctly. - void VerifyStarGazing(BrowserThemePack* pack) { - // First check that values we know exist, exist. - SkColor color; - EXPECT_TRUE(pack->GetColor(BrowserThemeProvider::COLOR_BOOKMARK_TEXT, - &color)); - EXPECT_EQ(SK_ColorBLACK, color); - - EXPECT_TRUE(pack->GetColor(BrowserThemeProvider::COLOR_NTP_BACKGROUND, - &color)); - EXPECT_EQ(SkColorSetRGB(57, 137, 194), color); - - color_utils::HSL expected = { 0.6, 0.553, 0.5 }; - color_utils::HSL actual; - EXPECT_TRUE(pack->GetTint(BrowserThemeProvider::TINT_BUTTONS, &actual)); - EXPECT_DOUBLE_EQ(expected.h, actual.h); - EXPECT_DOUBLE_EQ(expected.s, actual.s); - EXPECT_DOUBLE_EQ(expected.l, actual.l); - - int val; - EXPECT_TRUE(pack->GetDisplayProperty( - BrowserThemeProvider::NTP_BACKGROUND_ALIGNMENT, &val)); - EXPECT_EQ(BrowserThemeProvider::ALIGN_TOP, val); - - EXPECT_TRUE(pack->HasCustomImage(IDR_THEME_FRAME)); - - // Make sure we don't have phantom data. - EXPECT_FALSE(pack->GetColor(BrowserThemeProvider::COLOR_CONTROL_BACKGROUND, - &color)); - EXPECT_FALSE(pack->GetTint(BrowserThemeProvider::TINT_FRAME, &actual)); - } - - scoped_refptr<BrowserThemePack> theme_pack_; -}; - - -TEST_F(BrowserThemePackTest, DeriveUnderlineLinkColor) { - // If we specify a link color, but don't specify the underline color, the - // theme provider should create one. - std::string color_json = "{ \"ntp_link\": [128, 128, 128]," - " \"ntp_section_link\": [128, 128, 128] }"; - LoadColorJSON(color_json); - - std::map<int, SkColor> colors = GetDefaultColorMap(); - SkColor link_color = SkColorSetRGB(128, 128, 128); - colors[BrowserThemeProvider::COLOR_NTP_LINK] = link_color; - colors[BrowserThemeProvider::COLOR_NTP_LINK_UNDERLINE] = - BuildThirdOpacity(link_color); - colors[BrowserThemeProvider::COLOR_NTP_SECTION_LINK] = link_color; - colors[BrowserThemeProvider::COLOR_NTP_SECTION_LINK_UNDERLINE] = - BuildThirdOpacity(link_color); - - VerifyColorMap(colors); -} - -TEST_F(BrowserThemePackTest, ProvideUnderlineLinkColor) { - // If we specify the underline color, it shouldn't try to generate one.x - std::string color_json = "{ \"ntp_link\": [128, 128, 128]," - " \"ntp_link_underline\": [255, 255, 255]," - " \"ntp_section_link\": [128, 128, 128]," - " \"ntp_section_link_underline\": [255, 255, 255]" - "}"; - LoadColorJSON(color_json); - - std::map<int, SkColor> colors = GetDefaultColorMap(); - SkColor link_color = SkColorSetRGB(128, 128, 128); - SkColor underline_color = SkColorSetRGB(255, 255, 255); - colors[BrowserThemeProvider::COLOR_NTP_LINK] = link_color; - colors[BrowserThemeProvider::COLOR_NTP_LINK_UNDERLINE] = underline_color; - colors[BrowserThemeProvider::COLOR_NTP_SECTION_LINK] = link_color; - colors[BrowserThemeProvider::COLOR_NTP_SECTION_LINK_UNDERLINE] = - underline_color; - - VerifyColorMap(colors); -} - -TEST_F(BrowserThemePackTest, UseSectionColorAsNTPHeader) { - std::string color_json = "{ \"ntp_section\": [190, 190, 190] }"; - LoadColorJSON(color_json); - - std::map<int, SkColor> colors = GetDefaultColorMap(); - SkColor ntp_color = SkColorSetRGB(190, 190, 190); - colors[BrowserThemeProvider::COLOR_NTP_HEADER] = ntp_color; - colors[BrowserThemeProvider::COLOR_NTP_SECTION] = ntp_color; - VerifyColorMap(colors); -} - -TEST_F(BrowserThemePackTest, ProvideNtpHeaderColor) { - std::string color_json = "{ \"ntp_header\": [120, 120, 120], " - " \"ntp_section\": [190, 190, 190] }"; - LoadColorJSON(color_json); - - std::map<int, SkColor> colors = GetDefaultColorMap(); - SkColor ntp_header = SkColorSetRGB(120, 120, 120); - SkColor ntp_section = SkColorSetRGB(190, 190, 190); - colors[BrowserThemeProvider::COLOR_NTP_HEADER] = ntp_header; - colors[BrowserThemeProvider::COLOR_NTP_SECTION] = ntp_section; - VerifyColorMap(colors); -} - -TEST_F(BrowserThemePackTest, CanReadTints) { - std::string tint_json = "{ \"buttons\": [ 0.5, 0.5, 0.5 ] }"; - LoadTintJSON(tint_json); - - color_utils::HSL expected = { 0.5, 0.5, 0.5 }; - color_utils::HSL actual = { -1, -1, -1 }; - EXPECT_TRUE(theme_pack_->GetTint( - BrowserThemeProvider::TINT_BUTTONS, &actual)); - EXPECT_DOUBLE_EQ(expected.h, actual.h); - EXPECT_DOUBLE_EQ(expected.s, actual.s); - EXPECT_DOUBLE_EQ(expected.l, actual.l); -} - -TEST_F(BrowserThemePackTest, CanReadDisplayProperties) { - std::string json = "{ \"ntp_background_alignment\": \"bottom\", " - " \"ntp_background_repeat\": \"repeat-x\", " - " \"ntp_logo_alternate\": 0 }"; - LoadDisplayPropertiesJSON(json); - - int out_val; - EXPECT_TRUE(theme_pack_->GetDisplayProperty( - BrowserThemeProvider::NTP_BACKGROUND_ALIGNMENT, &out_val)); - EXPECT_EQ(BrowserThemeProvider::ALIGN_BOTTOM, out_val); - - EXPECT_TRUE(theme_pack_->GetDisplayProperty( - BrowserThemeProvider::NTP_BACKGROUND_TILING, &out_val)); - EXPECT_EQ(BrowserThemeProvider::REPEAT_X, out_val); - - EXPECT_TRUE(theme_pack_->GetDisplayProperty( - BrowserThemeProvider::NTP_LOGO_ALTERNATE, &out_val)); - EXPECT_EQ(0, out_val); -} - -TEST_F(BrowserThemePackTest, CanParsePaths) { - std::string tint_json = "{ \"theme_button_background\": \"one\", " - " \"theme_toolbar\": \"two\" }"; - std::map<int, FilePath> out_file_paths; - ParseImageNames(tint_json, &out_file_paths); - - EXPECT_EQ(2u, out_file_paths.size()); - EXPECT_TRUE(FilePath(FILE_PATH_LITERAL("one")) == out_file_paths[ - ThemeResourcesUtil::GetId("theme_button_background")]); - EXPECT_TRUE(FilePath(FILE_PATH_LITERAL("two")) == - out_file_paths[ThemeResourcesUtil::GetId("theme_toolbar")]); -} - -TEST_F(BrowserThemePackTest, InvalidColors) { - std::string invalid_color = "{ \"toolbar\": [\"dog\", \"cat\", [12]], " - " \"sound\": \"woof\" }"; - LoadColorJSON(invalid_color); - std::map<int, SkColor> colors = GetDefaultColorMap(); - VerifyColorMap(colors); -} - -TEST_F(BrowserThemePackTest, InvalidTints) { - std::string invalid_tints = "{ \"buttons\": [ \"dog\", \"cat\", [\"x\"]], " - " \"invalid\": \"entry\" }"; - LoadTintJSON(invalid_tints); - - // We shouldn't have a buttons tint, as it was invalid. - color_utils::HSL actual = { -1, -1, -1 }; - EXPECT_FALSE(theme_pack_->GetTint(BrowserThemeProvider::TINT_BUTTONS, - &actual)); -} - -TEST_F(BrowserThemePackTest, InvalidDisplayProperties) { - std::string invalid_properties = "{ \"ntp_background_alignment\": [15], " - " \"junk\": [15.3] }"; - LoadDisplayPropertiesJSON(invalid_properties); - - int out_val; - EXPECT_FALSE(theme_pack_->GetDisplayProperty( - BrowserThemeProvider::NTP_BACKGROUND_ALIGNMENT, &out_val)); -} - -// TODO(erg): This test should actually test more of the built resources from -// the extension data, but for now, exists so valgrind can test some of the -// tricky memory stuff that BrowserThemePack does. -TEST_F(BrowserThemePackTest, CanBuildAndReadPack) { - ScopedTempDir dir; - ASSERT_TRUE(dir.CreateUniqueTempDir()); - FilePath file = dir.path().Append(FILE_PATH_LITERAL("data.pak")); - - // Part 1: Build the pack from an extension. - { - FilePath star_gazing_path = GetStarGazingPath(); - Extension extension(star_gazing_path); - - FilePath manifest_path = - star_gazing_path.AppendASCII("manifest.json"); - std::string error; - JSONFileValueSerializer serializer(manifest_path); - scoped_ptr<DictionaryValue> valid_value( - static_cast<DictionaryValue*>(serializer.Deserialize(&error))); - EXPECT_EQ("", error); - ASSERT_TRUE(valid_value.get()); - ASSERT_TRUE(extension.InitFromValue(*valid_value, true, &error)); - ASSERT_EQ("", error); - - scoped_refptr<BrowserThemePack> pack = - BrowserThemePack::BuildFromExtension(&extension); - ASSERT_TRUE(pack.get()); - ASSERT_TRUE(pack->WriteToDisk(file)); - VerifyStarGazing(pack.get()); - } - - // Part 2: Try to read back the data pack that we just wrote to disk. - { - scoped_refptr<BrowserThemePack> pack = - BrowserThemePack::BuildFromDataPack( - file, "mblmlcbknbnfebdfjnolmcapmdofhmme"); - ASSERT_TRUE(pack.get()); - VerifyStarGazing(pack.get()); - } -} |