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)#ifndef CHROME_BROWSER_PREFS_SESSION_STARTUP_PREF_H__ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_PREFS_SESSION_STARTUP_PREF_H__ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "url/gurl.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrefService; 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Profile; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace user_prefs { 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class PrefRegistrySyncable; 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// StartupPref specifies what should happen at startup for a specified profile. 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// StartupPref is stored in the preferences for a particular profile. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct SessionStartupPref { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum Type { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Indicates the user wants to open the New Tab page. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DEFAULT, 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Deprecated. See comment in session_startup_pref.cc 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HOMEPAGE, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Indicates the user wants to restore the last session. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LAST, 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Indicates the user wants to restore a specific set of URLs. The URLs 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // are contained in urls. 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLS, 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Number of values in this enum. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TYPE_COUNT 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // For historical reasons the enum and value registered in the prefs don't 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // line up. These are the values registered in prefs. 42fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch // The values are also recorded in Settings.StartupPageLoadSettings histogram, 43fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch // so make sure to update histograms.xml if you change these. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const int kPrefValueHomePage = 0; // Deprecated 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const int kPrefValueLast = 1; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const int kPrefValueURLs = 4; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const int kPrefValueNewTab = 5; 48fb250657ef40d7500f20882d5c9909c1013367d3Ben Murdoch static const int kPrefValueMax = 6; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the default value for |type|. 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static Type GetDefaultStartupType(); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // What should happen on startup for the specified profile. 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void SetStartupPref(Profile* profile, const SessionStartupPref& pref); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void SetStartupPref(PrefService* prefs, 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const SessionStartupPref& pref); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static SessionStartupPref GetStartupPref(Profile* profile); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static SessionStartupPref GetStartupPref(PrefService* prefs); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If the user had the "restore on startup" property set to the deprecated 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // "Open the home page" value, this migrates them to a value that will have 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the same effect. 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void MigrateIfNecessary(PrefService* prefs); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The default startup pref for Mac used to be LAST, now it's DEFAULT. This 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // migrates old users by writing out the preference explicitly. 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static void MigrateMacDefaultPrefIfNecessary(PrefService* prefs); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Whether the startup type and URLs are managed via policy. 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool TypeIsManaged(PrefService* prefs); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool URLsAreManaged(PrefService* prefs); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Whether the startup type has not been overridden from its default. 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool TypeIsDefault(PrefService* prefs); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Converts an integer pref value to a SessionStartupPref::Type. 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static SessionStartupPref::Type PrefValueToType(int pref_value); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit SessionStartupPref(Type type); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~SessionStartupPref(); 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // What to do on startup. 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Type type; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The URLs to restore. Only used if type == URLS. 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<GURL> urls; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_PREFS_SESSION_STARTUP_PREF_H__ 93