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