themes_helper.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
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/string_number_conversions.h" 9#include "chrome/browser/themes/theme_service.h" 10#include "chrome/browser/themes/theme_service_factory.h" 11#include "chrome/common/extensions/extension.h" 12#include "chrome/browser/sync/test/integration/sync_datatype_helper.h" 13#include "chrome/browser/sync/test/integration/sync_extension_helper.h" 14 15using sync_datatype_helper::test; 16 17namespace { 18 19// Make a name to pass to an extension helper. 20std::string MakeName(int index) { 21 return "faketheme" + base::IntToString(index); 22} 23 24ThemeService* GetThemeService(Profile* profile) { 25 return ThemeServiceFactory::GetForProfile(profile); 26} 27 28} // namespace 29 30namespace themes_helper { 31 32std::string GetCustomTheme(int index) { 33 return SyncExtensionHelper::GetInstance()->NameToId(MakeName(index)); 34} 35 36std::string GetThemeID(Profile* profile) { 37 return GetThemeService(profile)->GetThemeID(); 38} 39 40bool UsingCustomTheme(Profile* profile) { 41 return GetThemeID(profile) != ThemeService::kDefaultThemeID; 42} 43 44bool UsingDefaultTheme(Profile* profile) { 45 return GetThemeService(profile)->UsingDefaultTheme(); 46} 47 48bool UsingNativeTheme(Profile* profile) { 49 return GetThemeService(profile)->UsingNativeTheme(); 50} 51 52bool ThemeIsPendingInstall(Profile* profile, const std::string& id) { 53 return SyncExtensionHelper::GetInstance()-> 54 IsExtensionPendingInstallForSync(profile, id); 55} 56 57bool HasOrWillHaveCustomTheme(Profile* profile, const std::string& id) { 58 return (GetThemeID(profile) == id) || ThemeIsPendingInstall(profile, id); 59} 60 61void UseCustomTheme(Profile* profile, int index) { 62 SyncExtensionHelper::GetInstance()->InstallExtension( 63 profile, MakeName(index), extensions::Extension::TYPE_THEME); 64} 65 66void UseDefaultTheme(Profile* profile) { 67 GetThemeService(profile)->UseDefaultTheme(); 68} 69 70void UseNativeTheme(Profile* profile) { 71 // TODO(akalin): Fix this inconsistent naming in the theme service. 72 GetThemeService(profile)->SetNativeTheme(); 73} 74 75} // namespace themes_helper 76