- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / prefs / incognito_mode_prefs.h
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   DISALLOW_IMPLICIT_CONSTRUCTORS(IncognitoModePrefs);
65 };
66
67 #endif  // CHROME_BROWSER_PREFS_INCOGNITO_MODE_PREFS_H_