incognito_mode_prefs.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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
10class CommandLine;
11class PrefService;
12class PrefRegistrySyncable;
13
14// Specifies Incognito mode availability preferences.
15class IncognitoModePrefs {
16 public:
17  // Possible values for Incognito mode availability. Please, do not change
18  // the order of entries since numeric values are exposed to users.
19  enum Availability {
20    // Incognito mode enabled. Users may open pages in both Incognito mode and
21    // normal mode (the default behaviour).
22    ENABLED = 0,
23    // Incognito mode disabled. Users may not open pages in Incognito mode.
24    // Only normal mode is available for browsing.
25    DISABLED,
26    // Incognito mode forced. Users may open pages *ONLY* in Incognito mode.
27    // Normal mode is not available for browsing.
28    FORCED,
29
30    AVAILABILITY_NUM_TYPES
31  };
32
33  // Register incognito related preferences.
34  static void RegisterUserPrefs(PrefRegistrySyncable* registry);
35
36  // Returns kIncognitoModeAvailability preference value stored
37  // in the given pref service.
38  static Availability GetAvailability(const PrefService* prefs);
39
40  // Sets kIncognitoModeAvailability preference to the specified availability
41  // value.
42  static void SetAvailability(PrefService* prefs,
43                              const Availability availability);
44
45  // Converts in_value into the corresponding Availability value. Returns true
46  // if conversion is successful (in_value is valid). Otherwise, returns false
47  // and *out_value is set to ENABLED.
48  static bool IntToAvailability(int in_value, Availability* out_value);
49
50  // Returns true if the browser should start in incognito mode.
51  static bool ShouldLaunchIncognito(const CommandLine& command_line,
52                                    const PrefService* prefs);
53
54 private:
55  DISALLOW_IMPLICIT_CONSTRUCTORS(IncognitoModePrefs);
56};
57
58#endif  // CHROME_BROWSER_PREFS_INCOGNITO_MODE_PREFS_H_
59