15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/ash/chrome_launcher_prefs.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/common/extensions/extension_constants.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h" 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/pref_registry/pref_registry_syncable.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// App ID of default pinned apps. 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char* kDefaultPinnedApps[] = { 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) extension_misc::kGmailAppId, 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) extension_misc::kGoogleSearchAppId, 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) extension_misc::kGoogleDocAppId, 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) extension_misc::kYoutubeAppId, 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)base::ListValue* CreateDefaultPinnedAppsList() { 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<base::ListValue> apps(new base::ListValue); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < arraysize(kDefaultPinnedApps); ++i) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) apps->Append(ash::CreateAppDict(kDefaultPinnedApps[i])); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return apps.release(); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kPinnedAppsPrefAppIDPath[] = "id"; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kShelfAutoHideBehaviorAlways[] = "Always"; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kShelfAutoHideBehaviorNever[] = "Never"; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kShelfAlignmentBottom[] = "Bottom"; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kShelfAlignmentLeft[] = "Left"; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kShelfAlignmentRight[] = "Right"; 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern const char kShelfAlignmentTop[] = "Top"; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void RegisterChromeLauncherUserPrefs( 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable* registry) { 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO: If we want to support multiple profiles this will likely need to be 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // pushed to local state and we'll need to track profile per item. 5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) registry->RegisterIntegerPref( 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prefs::kShelfChromeIconIndex, 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 0, 5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterListPref(prefs::kPinnedLauncherApps, 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CreateDefaultPinnedAppsList(), 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterStringPref(prefs::kShelfAutoHideBehavior, 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) kShelfAutoHideBehaviorNever, 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) registry->RegisterStringPref( 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) prefs::kShelfAutoHideBehaviorLocal, 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string(), 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterStringPref(prefs::kShelfAlignment, 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) kShelfAlignmentBottom, 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) registry->RegisterStringPref( 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) prefs::kShelfAlignmentLocal, 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string(), 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) registry->RegisterDictionaryPref( 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) prefs::kShelfPreferences, 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) registry->RegisterIntegerPref( 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) prefs::kLogoutDialogDurationMs, 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 20000, 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) registry->RegisterBooleanPref( 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) prefs::kShowLogoutButtonInTray, 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) false, 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)base::DictionaryValue* CreateAppDict(const std::string& app_id) { 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<base::DictionaryValue> app_value(new base::DictionaryValue); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) app_value->SetString(kPinnedAppsPrefAppIDPath, app_id); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return app_value.release(); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ash 91