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

Side by Side Diff: chrome/common/extensions/extension.h

Issue 10689097: Enforce the 'requirements' field in manifests. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 4 months 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 (c) 2012 The Chromium Authors. All rights reserved. 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 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 4
5 #ifndef CHROME_COMMON_EXTENSIONS_EXTENSION_H_ 5 #ifndef CHROME_COMMON_EXTENSIONS_EXTENSION_H_
6 #define CHROME_COMMON_EXTENSIONS_EXTENSION_H_ 6 #define CHROME_COMMON_EXTENSIONS_EXTENSION_H_
7 7
8 #include <algorithm> 8 #include <algorithm>
9 #include <iosfwd> 9 #include <iosfwd>
10 #include <map> 10 #include <map>
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 EXTERNAL_EXTENSION_UNINSTALLED, 94 EXTERNAL_EXTENSION_UNINSTALLED,
95 NUM_STATES 95 NUM_STATES
96 }; 96 };
97 97
98 // Used to record the reason an extension was disabled. 98 // Used to record the reason an extension was disabled.
99 enum DisableReason { 99 enum DisableReason {
100 DISABLE_UNKNOWN, 100 DISABLE_UNKNOWN,
101 DISABLE_USER_ACTION, 101 DISABLE_USER_ACTION,
102 DISABLE_PERMISSIONS_INCREASE, 102 DISABLE_PERMISSIONS_INCREASE,
103 DISABLE_RELOAD, 103 DISABLE_RELOAD,
104 DISABLE_UNSUPPORTED_REQUIREMENT,
104 DISABLE_LAST, // Not used. 105 DISABLE_LAST, // Not used.
105 }; 106 };
106 107
107 enum InstallType { 108 enum InstallType {
108 INSTALL_ERROR, 109 INSTALL_ERROR,
109 DOWNGRADE, 110 DOWNGRADE,
110 REINSTALL, 111 REINSTALL,
111 UPGRADE, 112 UPGRADE,
112 NEW_INSTALL 113 NEW_INSTALL
113 }; 114 };
114 115
115 // Do not change the order of entries or remove entries in this list 116 // Do not change the order of entries or remove entries in this list
116 // as this is used in UMA_HISTOGRAM_ENUMERATIONs about extensions. 117 // as this is used in UMA_HISTOGRAM_ENUMERATIONs about extensions.
117 enum Type { 118 enum Type {
118 TYPE_UNKNOWN = 0, 119 TYPE_UNKNOWN = 0,
119 TYPE_EXTENSION, 120 TYPE_EXTENSION,
120 TYPE_THEME, 121 TYPE_THEME,
121 TYPE_USER_SCRIPT, 122 TYPE_USER_SCRIPT,
122 TYPE_HOSTED_APP, 123 TYPE_HOSTED_APP,
123 TYPE_PACKAGED_APP, 124 TYPE_PACKAGED_APP,
124 TYPE_PLATFORM_APP 125 TYPE_PLATFORM_APP
125 }; 126 };
126 127
127 enum SyncType { 128 enum SyncType {
128 SYNC_TYPE_NONE = 0, 129 SYNC_TYPE_NONE = 0,
129 SYNC_TYPE_EXTENSION, 130 SYNC_TYPE_EXTENSION,
130 SYNC_TYPE_APP 131 SYNC_TYPE_APP
131 }; 132 };
132 133
134 // Declared requirements for the extension.
135 struct Requirements {
136 Requirements();
137 ~Requirements();
138
139 bool webgl;
140 bool css3d;
141 bool plugins;
142 };
143
133 // An NPAPI plugin included in the extension. 144 // An NPAPI plugin included in the extension.
134 struct PluginInfo { 145 struct PluginInfo {
135 FilePath path; // Path to the plugin. 146 FilePath path; // Path to the plugin.
136 bool is_public; // False if only this extension can load this plugin. 147 bool is_public; // False if only this extension can load this plugin.
137 }; 148 };
138 149
139 // An NaCl module included in the extension. 150 // An NaCl module included in the extension.
140 struct NaClModuleInfo { 151 struct NaClModuleInfo {
141 GURL url; 152 GURL url;
142 std::string mime_type; 153 std::string mime_type;
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 // Updates the tab-specific permissions of |tab_id| to include those from 583 // Updates the tab-specific permissions of |tab_id| to include those from
573 // |permissions|. 584 // |permissions|.
574 void UpdateTabSpecificPermissions(int tab_id, 585 void UpdateTabSpecificPermissions(int tab_id,
575 const PermissionSet* permissions) const; 586 const PermissionSet* permissions) const;
576 587
577 // Clears the tab-specific permissions of |tab_id|. 588 // Clears the tab-specific permissions of |tab_id|.
578 void ClearTabSpecificPermissions(int tab_id) const; 589 void ClearTabSpecificPermissions(int tab_id) const;
579 590
580 // Accessors: 591 // Accessors:
581 592
593 const Requirements& requirements() const { return requirements_; }
582 const FilePath& path() const { return path_; } 594 const FilePath& path() const { return path_; }
583 const GURL& url() const { return extension_url_; } 595 const GURL& url() const { return extension_url_; }
584 Location location() const; 596 Location location() const;
585 const std::string& id() const; 597 const std::string& id() const;
586 const Version* version() const { return version_.get(); } 598 const Version* version() const { return version_.get(); }
587 const std::string VersionString() const; 599 const std::string VersionString() const;
588 const std::string& name() const { return name_; } 600 const std::string& name() const { return name_; }
589 const std::string& non_localized_name() const { return non_localized_name_; } 601 const std::string& non_localized_name() const { return non_localized_name_; }
590 // Base64-encoded version of the key used to sign this extension. 602 // Base64-encoded version of the key used to sign this extension.
591 // In pseudocode, returns 603 // In pseudocode, returns
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
793 bool LoadDescription(string16* error); 805 bool LoadDescription(string16* error);
794 bool LoadManifestVersion(string16* error); 806 bool LoadManifestVersion(string16* error);
795 bool LoadHomepageURL(string16* error); 807 bool LoadHomepageURL(string16* error);
796 bool LoadUpdateURL(string16* error); 808 bool LoadUpdateURL(string16* error);
797 bool LoadIcons(string16* error); 809 bool LoadIcons(string16* error);
798 bool LoadCommands(string16* error); 810 bool LoadCommands(string16* error);
799 bool LoadPlugins(string16* error); 811 bool LoadPlugins(string16* error);
800 bool LoadNaClModules(string16* error); 812 bool LoadNaClModules(string16* error);
801 bool LoadWebAccessibleResources(string16* error); 813 bool LoadWebAccessibleResources(string16* error);
802 bool LoadSandboxedPages(string16* error); 814 bool LoadSandboxedPages(string16* error);
803 bool CheckRequirements(string16* error); 815 bool LoadRequirements(string16* error);
804 bool LoadDefaultLocale(string16* error); 816 bool LoadDefaultLocale(string16* error);
805 bool LoadOfflineEnabled(string16* error); 817 bool LoadOfflineEnabled(string16* error);
806 bool LoadOptionsPage(string16* error); 818 bool LoadOptionsPage(string16* error);
807 bool LoadBackgroundScripts(string16* error); 819 bool LoadBackgroundScripts(string16* error);
808 bool LoadBackgroundScripts(const std::string& key, string16* error); 820 bool LoadBackgroundScripts(const std::string& key, string16* error);
809 bool LoadBackgroundPage(const APIPermissionSet& api_permissions, 821 bool LoadBackgroundPage(const APIPermissionSet& api_permissions,
810 string16* error); 822 string16* error);
811 bool LoadBackgroundPage(const std::string& key, 823 bool LoadBackgroundPage(const std::string& key,
812 const APIPermissionSet& api_permissions, 824 const APIPermissionSet& api_permissions,
813 string16* error); 825 string16* error);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
924 std::string non_localized_name_; 936 std::string non_localized_name_;
925 937
926 // The version of this extension's manifest. We increase the manifest 938 // The version of this extension's manifest. We increase the manifest
927 // version when making breaking changes to the extension system. 939 // version when making breaking changes to the extension system.
928 // Version 1 was the first manifest version (implied by a lack of a 940 // Version 1 was the first manifest version (implied by a lack of a
929 // manifest_version attribute in the extension's manifest). We initialize 941 // manifest_version attribute in the extension's manifest). We initialize
930 // this member variable to 0 to distinguish the "uninitialized" case from 942 // this member variable to 0 to distinguish the "uninitialized" case from
931 // the case when we know the manifest version actually is 1. 943 // the case when we know the manifest version actually is 1.
932 int manifest_version_; 944 int manifest_version_;
933 945
946 // The requirements declared in the manifest.
947 Requirements requirements_;
948
934 // The absolute path to the directory the extension is stored in. 949 // The absolute path to the directory the extension is stored in.
935 FilePath path_; 950 FilePath path_;
936 951
937 // Default locale for fall back. Can be empty if extension is not localized. 952 // Default locale for fall back. Can be empty if extension is not localized.
938 std::string default_locale_; 953 std::string default_locale_;
939 954
940 // If true, a separate process will be used for the extension in incognito 955 // If true, a separate process will be used for the extension in incognito
941 // mode. 956 // mode.
942 bool incognito_split_mode_; 957 bool incognito_split_mode_;
943 958
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
1184 // only the permissions that have added, and for Reason::REMOVED, this would 1199 // only the permissions that have added, and for Reason::REMOVED, this would
1185 // only contain the removed permissions. 1200 // only contain the removed permissions.
1186 const PermissionSet* permissions; 1201 const PermissionSet* permissions;
1187 1202
1188 UpdatedExtensionPermissionsInfo( 1203 UpdatedExtensionPermissionsInfo(
1189 const Extension* extension, 1204 const Extension* extension,
1190 const PermissionSet* permissions, 1205 const PermissionSet* permissions,
1191 Reason reason); 1206 Reason reason);
1192 }; 1207 };
1193 1208
1194 } // namespace extensions 1209 } // namespace extensions
1195 1210
1196 #endif // CHROME_COMMON_EXTENSIONS_EXTENSION_H_ 1211 #endif // CHROME_COMMON_EXTENSIONS_EXTENSION_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698