incognito_mode_prefs.h revision 868fa2fe829687343ffae624259930155e16dbd8
141ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey// Copyright (c) 2012 The Chromium Authors. All rights reserved. 241ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey// Use of this source code is governed by a BSD-style license that can be 341ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey// found in the LICENSE file. 441ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 541ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey#ifndef CHROME_BROWSER_PREFS_INCOGNITO_MODE_PREFS_H_ 641ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey#define CHROME_BROWSER_PREFS_INCOGNITO_MODE_PREFS_H_ 741ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 841ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey#include "base/basictypes.h" 941ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 1041ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkeyclass CommandLine; 1141ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkeyclass PrefService; 1241ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkeyclass Profile; 1341ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 1441ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkeynamespace user_prefs { 1541ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkeyclass PrefRegistrySyncable; 1641ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey} 1741ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 1841ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey// Specifies Incognito mode availability preferences. 1941ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkeyclass IncognitoModePrefs { 2041ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey public: 2141ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // Possible values for Incognito mode availability. Please, do not change 2241ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // the order of entries since numeric values are exposed to users. 2341ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey enum Availability { 2441ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // Incognito mode enabled. Users may open pages in both Incognito mode and 2541ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // normal mode (the default behaviour). 2641ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey ENABLED = 0, 2741ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // Incognito mode disabled. Users may not open pages in Incognito mode. 2841ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // Only normal mode is available for browsing. 2941ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey DISABLED, 3041ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // Incognito mode forced. Users may open pages *ONLY* in Incognito mode. 3141ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // Normal mode is not available for browsing. 3241ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey FORCED, 3341ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 3441ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey AVAILABILITY_NUM_TYPES 35cd686b5b6d4166b510df8e32138479a9559bc117John Spurlock }; 36169126bf4d88514d3e05a5cb3c13d4a60c9f74cbJohn Spurlock 3741ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // Register incognito related preferences. 3841ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey static void RegisterUserPrefs(user_prefs::PrefRegistrySyncable* registry); 3941ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 4041ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // Returns kIncognitoModeAvailability preference value stored 4141ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // in the given pref service. 4241ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey static Availability GetAvailability(const PrefService* prefs); 4341ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 4441ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // Sets kIncognitoModeAvailability preference to the specified availability 4541ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // value. 4641ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey static void SetAvailability(PrefService* prefs, 4741ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey const Availability availability); 4841ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 4941ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // Converts in_value into the corresponding Availability value. Returns true 5041ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // if conversion is successful (in_value is valid). Otherwise, returns false 5141ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // and *out_value is set to ENABLED. 5241ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey static bool IntToAvailability(int in_value, Availability* out_value); 5341ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 5441ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // Returns true if the browser should start in incognito mode. 5541ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey static bool ShouldLaunchIncognito(const CommandLine& command_line, 5641ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey const PrefService* prefs); 5741ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 5841ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // Returns true if |profile| can open a new Browser. This checks the incognito 5941ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // availability policies and verifies if the |profile| type is allowed to 6041ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey // open new windows. 6141ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey static bool CanOpenBrowser(Profile* profile); 6241ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey 6341ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey private: 6441ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey DISALLOW_IMPLICIT_CONSTRUCTORS(IncognitoModePrefs); 6541ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey}; 66169126bf4d88514d3e05a5cb3c13d4a60c9f74cbJohn Spurlock 6741ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey#endif // CHROME_BROWSER_PREFS_INCOGNITO_MODE_PREFS_H_ 6841ff7ec82422a5b6d00892afdb3232bc0e53d851Jeff Sharkey