1 // Copyright (c) 2012 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/ui/ash/chrome_launcher_prefs.h" 6 7 #include "base/basictypes.h" 8 #include "base/memory/scoped_ptr.h" 9 #include "base/values.h" 10 #include "chrome/common/extensions/extension_constants.h" 11 #include "chrome/common/pref_names.h" 12 #include "components/user_prefs/pref_registry_syncable.h" 13 14 #if defined(OS_CHROMEOS) 15 #include "chrome/browser/chromeos/login/default_pinned_apps_field_trial.h" 16 #endif 17 18 namespace { 19 20 // App ID of default pinned apps. 21 const char* kDefaultPinnedApps[] = { 22 extension_misc::kGmailAppId, 23 extension_misc::kGoogleSearchAppId, 24 extension_misc::kGoogleDocAppId, 25 extension_misc::kYoutubeAppId, 26 }; 27 28 base::ListValue* CreateDefaultPinnedAppsList() { 29 #if defined(OS_CHROMEOS) 30 base::ListValue* alternate = chromeos::default_pinned_apps_field_trial:: 31 GetAlternateDefaultPinnedApps(); 32 if (alternate) 33 return alternate; 34 #endif 35 36 scoped_ptr<base::ListValue> apps(new base::ListValue); 37 for (size_t i = 0; i < arraysize(kDefaultPinnedApps); ++i) 38 apps->Append(ash::CreateAppDict(kDefaultPinnedApps[i])); 39 40 return apps.release(); 41 } 42 43 } // namespace 44 45 namespace ash { 46 47 const char kPinnedAppsPrefAppIDPath[] = "id"; 48 49 const char kShelfAutoHideBehaviorAlways[] = "Always"; 50 const char kShelfAutoHideBehaviorNever[] = "Never"; 51 52 extern const char kShelfAlignmentBottom[] = "Bottom"; 53 extern const char kShelfAlignmentLeft[] = "Left"; 54 extern const char kShelfAlignmentRight[] = "Right"; 55 extern const char kShelfAlignmentTop[] = "Top"; 56 57 void RegisterChromeLauncherUserPrefs( 58 user_prefs::PrefRegistrySyncable* registry) { 59 // TODO: If we want to support multiple profiles this will likely need to be 60 // pushed to local state and we'll need to track profile per item. 61 registry->RegisterIntegerPref( 62 prefs::kShelfChromeIconIndex, 63 0, 64 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 65 registry->RegisterListPref(prefs::kPinnedLauncherApps, 66 CreateDefaultPinnedAppsList(), 67 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 68 registry->RegisterStringPref(prefs::kShelfAutoHideBehavior, 69 kShelfAutoHideBehaviorNever, 70 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 71 registry->RegisterStringPref( 72 prefs::kShelfAutoHideBehaviorLocal, 73 std::string(), 74 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 75 registry->RegisterStringPref(prefs::kShelfAlignment, 76 kShelfAlignmentBottom, 77 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 78 registry->RegisterStringPref( 79 prefs::kShelfAlignmentLocal, 80 std::string(), 81 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 82 registry->RegisterBooleanPref( 83 prefs::kShowLogoutButtonInTray, 84 false, 85 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 86 registry->RegisterDictionaryPref( 87 prefs::kShelfPreferences, 88 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 89 } 90 91 base::DictionaryValue* CreateAppDict(const std::string& app_id) { 92 scoped_ptr<base::DictionaryValue> app_value(new base::DictionaryValue); 93 app_value->SetString(kPinnedAppsPrefAppIDPath, app_id); 94 return app_value.release(); 95 } 96 97 } // namespace ash 98