1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/glue/theme_util.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/file_path.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/values.h" 921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/profiles/profile.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/protocol/theme_specifics.pb.h" 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/themes/theme_service.h" 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/themes/theme_service_factory.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/extensions/extension.h" 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/extensions/extension_constants.h" 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/testing_profile.h" 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gmock/include/gmock/gmock.h" 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace browser_sync { 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace { 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing ::testing::Return; 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ThemeUtilTest : public testing::Test { 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 28513209b27ff55e2841eac0e4120199c23acce758Ben Murdochscoped_refptr<Extension> MakeThemeExtension(const FilePath& extension_path, 29513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const std::string& name, 30513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const std::string& update_url) { 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DictionaryValue source; 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch source.SetString(extension_manifest_keys::kName, name); 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch source.Set(extension_manifest_keys::kTheme, new DictionaryValue()); 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch source.SetString(extension_manifest_keys::kUpdateURL, update_url); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch source.SetString(extension_manifest_keys::kVersion, "0.0.0.0"); 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::string error; 37513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch scoped_refptr<Extension> extension = Extension::Create( 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen extension_path, Extension::INTERNAL, source, 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen Extension::STRICT_ERROR_CHECKS, &error); 40513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch EXPECT_TRUE(extension); 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("", error); 42513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch return extension; 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ThemeUtilTest, AreThemeSpecificsEqualHelper) { 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sync_pb::ThemeSpecifics a, b; 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(AreThemeSpecificsEqualHelper(a, b, false)); 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(AreThemeSpecificsEqualHelper(a, b, true)); 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Custom vs. non-custom. 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch a.set_use_custom_theme(true); 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(AreThemeSpecificsEqualHelper(a, b, false)); 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(AreThemeSpecificsEqualHelper(a, b, true)); 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Custom theme equality. 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch b.set_use_custom_theme(true); 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(AreThemeSpecificsEqualHelper(a, b, false)); 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(AreThemeSpecificsEqualHelper(a, b, true)); 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch a.set_custom_theme_id("id"); 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(AreThemeSpecificsEqualHelper(a, b, false)); 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(AreThemeSpecificsEqualHelper(a, b, true)); 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch b.set_custom_theme_id("id"); 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(AreThemeSpecificsEqualHelper(a, b, false)); 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(AreThemeSpecificsEqualHelper(a, b, true)); 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch a.set_custom_theme_update_url("http://update.url"); 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(AreThemeSpecificsEqualHelper(a, b, false)); 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(AreThemeSpecificsEqualHelper(a, b, true)); 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch a.set_custom_theme_name("name"); 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(AreThemeSpecificsEqualHelper(a, b, false)); 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(AreThemeSpecificsEqualHelper(a, b, true)); 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Non-custom theme equality. 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch a.set_use_custom_theme(false); 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch b.set_use_custom_theme(false); 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(AreThemeSpecificsEqualHelper(a, b, false)); 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(AreThemeSpecificsEqualHelper(a, b, true)); 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch a.set_use_system_theme_by_default(true); 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(AreThemeSpecificsEqualHelper(a, b, false)); 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(AreThemeSpecificsEqualHelper(a, b, true)); 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch b.set_use_system_theme_by_default(true); 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(AreThemeSpecificsEqualHelper(a, b, false)); 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(AreThemeSpecificsEqualHelper(a, b, true)); 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 94ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass MockThemeService : public ThemeService { 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MOCK_METHOD0(SetNativeTheme, void()); 97ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen MOCK_METHOD0(UseDefaultTheme, void()); 98ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen MOCK_CONST_METHOD0(GetThemeID, std::string()); 99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 101c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ThemeUtilTest, SetCurrentThemeDefaultTheme) { 102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sync_pb::ThemeSpecifics theme_specifics; 103ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen TestingProfile profile; 104ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen MockThemeService* mock_theme_service = new MockThemeService; 105ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ThemeServiceFactory::GetInstance()->ForceAssociationBetween(&profile, 106ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen mock_theme_service); 107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 108ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_CALL(*mock_theme_service, UseDefaultTheme()).Times(1); 109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 110ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen SetCurrentThemeFromThemeSpecifics(theme_specifics, &profile); 111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ThemeUtilTest, SetCurrentThemeSystemTheme) { 114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sync_pb::ThemeSpecifics theme_specifics; 115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch theme_specifics.set_use_system_theme_by_default(true); 116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 117ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen TestingProfile profile; 118ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen MockThemeService* mock_theme_service = new MockThemeService; 119ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ThemeServiceFactory::GetInstance()->ForceAssociationBetween(&profile, 120ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen mock_theme_service); 121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 122ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_CALL(*mock_theme_service, SetNativeTheme()).Times(1); 123ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 124ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen SetCurrentThemeFromThemeSpecifics(theme_specifics, &profile); 125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 12721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// TODO(akalin): Make ExtensionService/ExtensionUpdater testable 128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// enough to be able to write a unittest for SetCurrentTheme for a 129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// custom theme. 130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 131c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ThemeUtilTest, GetThemeSpecificsHelperNoCustomTheme) { 132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sync_pb::ThemeSpecifics theme_specifics; 133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch theme_specifics.set_use_custom_theme(true); 134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch theme_specifics.set_use_system_theme_by_default(true); 135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch theme_specifics.set_custom_theme_name("name"); 136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch theme_specifics.set_custom_theme_id("id"); 137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch theme_specifics.set_custom_theme_update_url("updateurl"); 138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GetThemeSpecificsFromCurrentThemeHelper(NULL, false, false, 139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch &theme_specifics); 140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(theme_specifics.has_use_custom_theme()); 142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(theme_specifics.use_custom_theme()); 143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Should be preserved since we passed in false for 144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // is_system_theme_distinct_from_current_theme. 145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(theme_specifics.use_system_theme_by_default()); 146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(theme_specifics.has_custom_theme_name()); 147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(theme_specifics.has_custom_theme_id()); 148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(theme_specifics.has_custom_theme_update_url()); 149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 151c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ThemeUtilTest, GetThemeSpecificsHelperNoCustomThemeDistinct) { 152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sync_pb::ThemeSpecifics theme_specifics; 153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch theme_specifics.set_use_custom_theme(true); 154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch theme_specifics.set_custom_theme_name("name"); 155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch theme_specifics.set_custom_theme_id("id"); 156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch theme_specifics.set_custom_theme_update_url("updateurl"); 157c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GetThemeSpecificsFromCurrentThemeHelper(NULL, true, false, 158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch &theme_specifics); 159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(theme_specifics.has_use_custom_theme()); 161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(theme_specifics.use_custom_theme()); 162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Should be set since we passed in true for 163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // is_system_theme_distinct_from_current_theme. 164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(theme_specifics.has_use_system_theme_by_default()); 165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(theme_specifics.use_system_theme_by_default()); 166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(theme_specifics.has_custom_theme_name()); 167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(theme_specifics.has_custom_theme_id()); 168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(theme_specifics.has_custom_theme_update_url()); 169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 170c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace { 172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(OS_WIN) 173c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst FilePath::CharType kExtensionFilePath[] = FILE_PATH_LITERAL("c:\\foo"); 174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#elif defined(OS_POSIX) 175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst FilePath::CharType kExtensionFilePath[] = FILE_PATH_LITERAL("/oo"); 176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif 177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace 178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 179c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ThemeUtilTest, GetThemeSpecificsHelperCustomTheme) { 180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sync_pb::ThemeSpecifics theme_specifics; 181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch theme_specifics.set_use_custom_theme(false); 182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch theme_specifics.set_use_system_theme_by_default(true); 183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FilePath file_path(kExtensionFilePath); 184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string kThemeName("name"); 185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string kThemeUpdateUrl("http://update.url/foo"); 186513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch scoped_refptr<Extension> extension( 187513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch MakeThemeExtension(file_path, kThemeName, kThemeUpdateUrl)); 188513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch GetThemeSpecificsFromCurrentThemeHelper(extension.get(), false, false, 189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch &theme_specifics); 190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(theme_specifics.use_custom_theme()); 192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(theme_specifics.use_system_theme_by_default()); 193c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(kThemeName, theme_specifics.custom_theme_name()); 194513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch EXPECT_EQ(extension->id(), theme_specifics.custom_theme_id()); 195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(kThemeUpdateUrl, theme_specifics.custom_theme_update_url()); 196c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 198c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ThemeUtilTest, GetThemeSpecificsHelperCustomThemeDistinct) { 199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sync_pb::ThemeSpecifics theme_specifics; 200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch theme_specifics.set_use_custom_theme(false); 201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FilePath file_path(kExtensionFilePath); 202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string kThemeName("name"); 203c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string kThemeUpdateUrl("http://update.url/foo"); 204513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch scoped_refptr<Extension> extension( 205513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch MakeThemeExtension(file_path, kThemeName, kThemeUpdateUrl)); 206513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch GetThemeSpecificsFromCurrentThemeHelper(extension.get(), true, false, 207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch &theme_specifics); 208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(theme_specifics.use_custom_theme()); 210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(theme_specifics.has_use_system_theme_by_default()); 211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(theme_specifics.use_system_theme_by_default()); 212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(kThemeName, theme_specifics.custom_theme_name()); 213513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch EXPECT_EQ(extension->id(), theme_specifics.custom_theme_id()); 214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(kThemeUpdateUrl, theme_specifics.custom_theme_update_url()); 215c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 217c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ThemeUtilTest, SetCurrentThemeIfNecessaryDefaultThemeNotNecessary) { 218ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen TestingProfile profile; 219ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen MockThemeService* mock_theme_service = new MockThemeService; 220ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ThemeServiceFactory::GetInstance()->ForceAssociationBetween(&profile, 221ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen mock_theme_service); 222ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 223ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_CALL(*mock_theme_service, GetThemeID()).WillRepeatedly(Return( 224ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ThemeService::kDefaultThemeID)); 225c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 226c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // TODO(akalin): Mock out call to GetPrefs() under TOOLKIT_USES_GTK. 227c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 228c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sync_pb::ThemeSpecifics theme_specifics; 229c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetCurrentThemeFromThemeSpecificsIfNecessary(theme_specifics, 230ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen &profile); 231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 233c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace 234c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 235c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace browser_sync 236