Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(370)

Side by Side Diff: chrome/browser/extensions/extension_management_internal.h

Issue 706623004: Add minimum version to extension management (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ext-update-url
Patch Set: fix indent in HTML Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_MANAGEMENT_INTERNAL_H_ 4 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_MANAGEMENT_INTERNAL_H_
5 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_MANAGEMENT_INTERNAL_H_ 5 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_MANAGEMENT_INTERNAL_H_
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "chrome/browser/extensions/extension_management.h" 11 #include "chrome/browser/extensions/extension_management.h"
12 #include "extensions/common/manifest.h" 12 #include "extensions/common/manifest.h"
13 #include "extensions/common/permissions/api_permission_set.h" 13 #include "extensions/common/permissions/api_permission_set.h"
14 14
15 namespace base { 15 namespace base {
16 class DictionaryValue; 16 class DictionaryValue;
17 class Version;
17 } // namespace base 18 } // namespace base
18 19
19 namespace extensions { 20 namespace extensions {
20 21
21 class URLPatternSet; 22 class URLPatternSet;
22 23
23 namespace internal { 24 namespace internal {
24 25
25 // Class to hold extension management settings for one or a group of 26 // Class to hold extension management settings for one or a group of
26 // extensions. Settings can be applied to an individual extension identified 27 // extensions. Settings can be applied to an individual extension identified
(...skipping 13 matching lines...) Expand all
40 // Parses the default settings. 41 // Parses the default settings.
41 SCOPE_DEFAULT = 0, 42 SCOPE_DEFAULT = 0,
42 // Parses the settings for extensions with specified update URL in its 43 // Parses the settings for extensions with specified update URL in its
43 // manifest. 44 // manifest.
44 SCOPE_UPDATE_URL, 45 SCOPE_UPDATE_URL,
45 // Parses the settings for an extension with specified extension ID. 46 // Parses the settings for an extension with specified extension ID.
46 SCOPE_INDIVIDUAL, 47 SCOPE_INDIVIDUAL,
47 }; 48 };
48 49
49 IndividualSettings(); 50 IndividualSettings();
51 explicit IndividualSettings(const IndividualSettings* default_settings);
50 ~IndividualSettings(); 52 ~IndividualSettings();
51 53
52 void Reset(); 54 void Reset();
53 55
54 // Parses the individual settings. |dict| is a sub-dictionary in extension 56 // Parses the individual settings. |dict| is a sub-dictionary in extension
55 // management preference and |scope| represents the applicable range of the 57 // management preference and |scope| represents the applicable range of the
56 // settings, a single extension, a group of extensions or default settings. 58 // settings, a single extension, a group of extensions or default settings.
57 // Note that in case of parsing errors, |this| will NOT be left untouched. 59 // Note that in case of parsing errors, |this| will NOT be left untouched.
58 // This method is required to be called for SCOPE_DEFAULT first, then 60 // This method is required to be called for SCOPE_DEFAULT first, then
59 // for SCOPE_INDIVIDUAL and SCOPE_UPDATE_URL. 61 // for SCOPE_INDIVIDUAL and SCOPE_UPDATE_URL.
(...skipping 19 matching lines...) Expand all
79 // permission which has been blacklisted, this extension will not be allowed 81 // permission which has been blacklisted, this extension will not be allowed
80 // to load. And if it contains a blocked permission as optional requirement, 82 // to load. And if it contains a blocked permission as optional requirement,
81 // it will be allowed to load (of course, with permission granted from user if 83 // it will be allowed to load (of course, with permission granted from user if
82 // necessary), but conflicting permissions will be dropped. This setting will 84 // necessary), but conflicting permissions will be dropped. This setting will
83 // merge from the default settings, and unspecified settings will take value 85 // merge from the default settings, and unspecified settings will take value
84 // from default settings. 86 // from default settings.
85 // In case this setting is specified in both per-extensions and per-update-url 87 // In case this setting is specified in both per-extensions and per-update-url
86 // settings, both settings will be enforced. 88 // settings, both settings will be enforced.
87 APIPermissionSet blocked_permissions; 89 APIPermissionSet blocked_permissions;
88 90
91 // Minimum version required for an extensions, applies to per-extension
92 // settings only. Extension (with specified extension ID) with version older
93 // than the specified minimum version will be disabled.
94 scoped_ptr<base::Version> minimum_version;
95
89 private: 96 private:
90 DISALLOW_ASSIGN(IndividualSettings); 97 DISALLOW_COPY_AND_ASSIGN(IndividualSettings);
91 }; 98 };
92 99
93 // Global extension management settings, applicable to all extensions. 100 // Global extension management settings, applicable to all extensions.
94 struct GlobalSettings { 101 struct GlobalSettings {
95 GlobalSettings(); 102 GlobalSettings();
96 ~GlobalSettings(); 103 ~GlobalSettings();
97 104
98 void Reset(); 105 void Reset();
99 106
100 // Settings specifying which URLs are allowed to install extensions, will be 107 // Settings specifying which URLs are allowed to install extensions, will be
101 // enforced only if |has_restricted_install_sources| is set to true. 108 // enforced only if |has_restricted_install_sources| is set to true.
102 URLPatternSet install_sources; 109 URLPatternSet install_sources;
103 bool has_restricted_install_sources; 110 bool has_restricted_install_sources;
104 111
105 // Settings specifying all allowed app/extension types, will be enforced 112 // Settings specifying all allowed app/extension types, will be enforced
106 // only of |has_restricted_allowed_types| is set to true. 113 // only of |has_restricted_allowed_types| is set to true.
107 std::vector<Manifest::Type> allowed_types; 114 std::vector<Manifest::Type> allowed_types;
108 bool has_restricted_allowed_types; 115 bool has_restricted_allowed_types;
109 116
110 private: 117 private:
111 DISALLOW_COPY_AND_ASSIGN(GlobalSettings); 118 DISALLOW_COPY_AND_ASSIGN(GlobalSettings);
112 }; 119 };
113 120
114 } // namespace internal 121 } // namespace internal
115 122
116 } // namespace extensions 123 } // namespace extensions
117 124
118 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_MANAGEMENT_INTERNAL_H_ 125 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_MANAGEMENT_INTERNAL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698