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 #ifndef CHROME_BROWSER_PREFS_INCOGNITO_MODE_PREFS_H_ 6 #define CHROME_BROWSER_PREFS_INCOGNITO_MODE_PREFS_H_ 7 8 #include "base/basictypes.h" 9 10 class CommandLine; 11 class PrefService; 12 class Profile; 13 14 namespace user_prefs { 15 class PrefRegistrySyncable; 16 } 17 18 // Specifies Incognito mode availability preferences. 19 class IncognitoModePrefs { 20 public: 21 // Possible values for Incognito mode availability. Please, do not change 22 // the order of entries since numeric values are exposed to users. 23 enum Availability { 24 // Incognito mode enabled. Users may open pages in both Incognito mode and 25 // normal mode (the default behaviour). 26 ENABLED = 0, 27 // Incognito mode disabled. Users may not open pages in Incognito mode. 28 // Only normal mode is available for browsing. 29 DISABLED, 30 // Incognito mode forced. Users may open pages *ONLY* in Incognito mode. 31 // Normal mode is not available for browsing. 32 FORCED, 33 34 AVAILABILITY_NUM_TYPES 35 }; 36 37 // Register incognito related preferences. 38 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 39 40 // Returns kIncognitoModeAvailability preference value stored 41 // in the given pref service. 42 static Availability GetAvailability(const PrefService* prefs); 43 44 // Sets kIncognitoModeAvailability preference to the specified availability 45 // value. 46 static void SetAvailability(PrefService* prefs, 47 const Availability availability); 48 49 // Converts in_value into the corresponding Availability value. Returns true 50 // if conversion is successful (in_value is valid). Otherwise, returns false 51 // and *out_value is set to ENABLED. 52 static bool IntToAvailability(int in_value, Availability* out_value); 53 54 // Returns true if the browser should start in incognito mode. 55 static bool ShouldLaunchIncognito(const CommandLine& command_line, 56 const PrefService* prefs); 57 58 // Returns true if |profile| can open a new Browser. This checks the incognito 59 // availability policies and verifies if the |profile| type is allowed to 60 // open new windows. 61 static bool CanOpenBrowser(Profile* profile); 62 63 private: 64 // Returns whether parental controls have been enabled on the platform, which 65 // if enabled will overrule the Availability as configured in prefs. 66 static bool ArePlatformParentalControlsEnabled(); 67 68 DISALLOW_IMPLICIT_CONSTRUCTORS(IncognitoModePrefs); 69 }; 70 71 #endif // CHROME_BROWSER_PREFS_INCOGNITO_MODE_PREFS_H_ 72