Home | History | Annotate | Download | only in integration
      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