1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/sync/test/integration/themes_helper.h" 6 7 #include "base/logging.h" 8 #include "base/strings/string_number_conversions.h" 9 #include "chrome/browser/sync/test/integration/sync_datatype_helper.h" 10 #include "chrome/browser/sync/test/integration/sync_extension_helper.h" 11 #include "chrome/browser/themes/theme_service.h" 12 #include "chrome/browser/themes/theme_service_factory.h" 13 #include "extensions/common/extension.h" 14 #include "extensions/common/id_util.h" 15 #include "extensions/common/manifest.h" 16 17 using sync_datatype_helper::test; 18 19 namespace { 20 21 // Make a name to pass to an extension helper. 22 std::string MakeName(int index) { 23 return "faketheme" + base::IntToString(index); 24 } 25 26 ThemeService* GetThemeService(Profile* profile) { 27 return ThemeServiceFactory::GetForProfile(profile); 28 } 29 30 } // namespace 31 32 namespace themes_helper { 33 34 std::string GetCustomTheme(int index) { 35 return extensions::id_util::GenerateId(MakeName(index)); 36 } 37 38 std::string GetThemeID(Profile* profile) { 39 return GetThemeService(profile)->GetThemeID(); 40 } 41 42 bool UsingCustomTheme(Profile* profile) { 43 return GetThemeID(profile) != ThemeService::kDefaultThemeID; 44 } 45 46 bool UsingDefaultTheme(Profile* profile) { 47 return GetThemeService(profile)->UsingDefaultTheme(); 48 } 49 50 bool UsingSystemTheme(Profile* profile) { 51 return GetThemeService(profile)->UsingSystemTheme(); 52 } 53 54 bool ThemeIsPendingInstall(Profile* profile, const std::string& id) { 55 return SyncExtensionHelper::GetInstance()-> 56 IsExtensionPendingInstallForSync(profile, id); 57 } 58 59 bool HasOrWillHaveCustomTheme(Profile* profile, const std::string& id) { 60 return (GetThemeID(profile) == id) || ThemeIsPendingInstall(profile, id); 61 } 62 63 void UseCustomTheme(Profile* profile, int index) { 64 SyncExtensionHelper::GetInstance()->InstallExtension( 65 profile, MakeName(index), extensions::Manifest::TYPE_THEME); 66 } 67 68 void UseDefaultTheme(Profile* profile) { 69 GetThemeService(profile)->UseDefaultTheme(); 70 } 71 72 void UseSystemTheme(Profile* profile) { 73 GetThemeService(profile)->UseSystemTheme(); 74 } 75 76 } // namespace themes_helper 77