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