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