// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_PREFS_INCOGNITO_MODE_PREFS_H_ #define CHROME_BROWSER_PREFS_INCOGNITO_MODE_PREFS_H_ #include "base/basictypes.h" class CommandLine; class PrefService; class Profile; namespace user_prefs { class PrefRegistrySyncable; } // Specifies Incognito mode availability preferences. class IncognitoModePrefs { public: // Possible values for Incognito mode availability. Please, do not change // the order of entries since numeric values are exposed to users. enum Availability { // Incognito mode enabled. Users may open pages in both Incognito mode and // normal mode (the default behaviour). ENABLED = 0, // Incognito mode disabled. Users may not open pages in Incognito mode. // Only normal mode is available for browsing. DISABLED, // Incognito mode forced. Users may open pages *ONLY* in Incognito mode. // Normal mode is not available for browsing. FORCED, AVAILABILITY_NUM_TYPES }; // Register incognito related preferences. static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); // Returns kIncognitoModeAvailability preference value stored // in the given pref service. static Availability GetAvailability(const PrefService* prefs); // Sets kIncognitoModeAvailability preference to the specified availability // value. static void SetAvailability(PrefService* prefs, const Availability availability); // Converts in_value into the corresponding Availability value. Returns true // if conversion is successful (in_value is valid). Otherwise, returns false // and *out_value is set to ENABLED. static bool IntToAvailability(int in_value, Availability* out_value); // Returns true if the browser should start in incognito mode. static bool ShouldLaunchIncognito(const CommandLine& command_line, const PrefService* prefs); // Returns true if |profile| can open a new Browser. This checks the incognito // availability policies and verifies if the |profile| type is allowed to // open new windows. static bool CanOpenBrowser(Profile* profile); private: // Returns whether parental controls have been enabled on the platform, which // if enabled will overrule the Availability as configured in prefs. static bool ArePlatformParentalControlsEnabled(); DISALLOW_IMPLICIT_CONSTRUCTORS(IncognitoModePrefs); }; #endif // CHROME_BROWSER_PREFS_INCOGNITO_MODE_PREFS_H_