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

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

Issue 12618009: Move SystemIndicator parsing out of Extension class (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 7 years, 9 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 #include "chrome/common/extensions/extension.h" 5 #include "chrome/common/extensions/extension.h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 16 matching lines...) Expand all
27 // TODO(rdevlin.cronin): Remove these once all references have been removed as 27 // TODO(rdevlin.cronin): Remove these once all references have been removed as
28 // part of crbug.com/159265. 28 // part of crbug.com/159265.
29 #include "chrome/common/extensions/api/extension_action/action_info.h" 29 #include "chrome/common/extensions/api/extension_action/action_info.h"
30 #include "chrome/common/extensions/api/extension_action/page_action_handler.h" 30 #include "chrome/common/extensions/api/extension_action/page_action_handler.h"
31 #include "chrome/common/extensions/api/icons/icons_handler.h" 31 #include "chrome/common/extensions/api/icons/icons_handler.h"
32 #include "chrome/common/extensions/api/plugins/plugins_handler.h" 32 #include "chrome/common/extensions/api/plugins/plugins_handler.h"
33 #include "chrome/common/extensions/api/themes/theme_handler.h" 33 #include "chrome/common/extensions/api/themes/theme_handler.h"
34 #include "chrome/common/extensions/background_info.h" 34 #include "chrome/common/extensions/background_info.h"
35 #include "chrome/common/extensions/csp_handler.h" 35 #include "chrome/common/extensions/csp_handler.h"
36 #include "chrome/common/extensions/csp_validator.h" 36 #include "chrome/common/extensions/csp_validator.h"
37 #include "chrome/common/extensions/extension_icon_set.h"
37 #include "chrome/common/extensions/extension_manifest_constants.h" 38 #include "chrome/common/extensions/extension_manifest_constants.h"
38 #include "chrome/common/extensions/feature_switch.h" 39 #include "chrome/common/extensions/feature_switch.h"
39 #include "chrome/common/extensions/features/base_feature_provider.h" 40 #include "chrome/common/extensions/features/base_feature_provider.h"
40 #include "chrome/common/extensions/features/feature.h" 41 #include "chrome/common/extensions/features/feature.h"
41 #include "chrome/common/extensions/incognito_handler.h" 42 #include "chrome/common/extensions/incognito_handler.h"
42 #include "chrome/common/extensions/manifest.h" 43 #include "chrome/common/extensions/manifest.h"
43 #include "chrome/common/extensions/manifest_handler.h" 44 #include "chrome/common/extensions/manifest_handler.h"
44 #include "chrome/common/extensions/manifest_handler_helpers.h" 45 #include "chrome/common/extensions/manifest_handler_helpers.h"
45 #include "chrome/common/extensions/manifest_url_handler.h" 46 #include "chrome/common/extensions/manifest_url_handler.h"
46 #include "chrome/common/extensions/permissions/api_permission_set.h" 47 #include "chrome/common/extensions/permissions/api_permission_set.h"
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 if ((*i)->ManifestEntryForbidden()) { 161 if ((*i)->ManifestEntryForbidden()) {
161 *error = ErrorUtils::FormatErrorMessageUTF16( 162 *error = ErrorUtils::FormatErrorMessageUTF16(
162 errors::kPermissionNotAllowedInManifest, 163 errors::kPermissionNotAllowedInManifest,
163 (*i)->info()->name()); 164 (*i)->info()->name());
164 return true; 165 return true;
165 } 166 }
166 } 167 }
167 return false; 168 return false;
168 } 169 }
169 170
170 // Helper method to load an ExtensionAction from the page_action, script_badge,
171 // browser_action, or system_indicator entries in the manifest.
172 // TODO(rdevlin.cronin): Remove this once PageAction, BrowserAction, and
173 // SystemIndicator have been moved out of Extension.
174 scoped_ptr<ActionInfo> LoadExtensionActionInfoHelper(
175 const Extension* extension,
176 const DictionaryValue* extension_action,
177 string16* error) {
178 return manifest_handler_helpers::LoadActionInfo(
179 extension, extension_action, error);
180 }
181
182 } // namespace 171 } // namespace
183 172
184 #if defined(OS_WIN) 173 #if defined(OS_WIN)
185 const char Extension::kExtensionRegistryPath[] = 174 const char Extension::kExtensionRegistryPath[] =
186 "Software\\Google\\Chrome\\Extensions"; 175 "Software\\Google\\Chrome\\Extensions";
187 #endif 176 #endif
188 177
189 const char Extension::kMimeType[] = "application/x-chrome-extension"; 178 const char Extension::kMimeType[] = "application/x-chrome-extension";
190 179
191 const int Extension::kValidWebExtentSchemes = 180 const int Extension::kValidWebExtentSchemes =
(...skipping 1114 matching lines...) Expand 10 before | Expand all | Expand 10 after
1306 ContainsManifestForbiddenPermission(optional_api_permissions, error)) { 1295 ContainsManifestForbiddenPermission(optional_api_permissions, error)) {
1307 return false; 1296 return false;
1308 } 1297 }
1309 1298
1310 if (!LoadAppIsolation(error)) 1299 if (!LoadAppIsolation(error))
1311 return false; 1300 return false;
1312 1301
1313 if (!LoadSharedFeatures(error)) 1302 if (!LoadSharedFeatures(error))
1314 return false; 1303 return false;
1315 1304
1316 if (!LoadExtensionFeatures(error)) 1305 if (manifest_->HasKey(keys::kConvertedFromUserScript))
1317 return false; 1306 manifest_->GetBoolean(keys::kConvertedFromUserScript,
1307 &converted_from_user_script_);
1318 1308
1319 if (!LoadManagedModeFeatures(error)) 1309 if (!LoadManagedModeFeatures(error))
1320 return false; 1310 return false;
1321 1311
1322 if (HasMultipleUISurfaces()) { 1312 if (HasMultipleUISurfaces()) {
1323 *error = ASCIIToUTF16(errors::kOneUISurfaceOnly); 1313 *error = ASCIIToUTF16(errors::kOneUISurfaceOnly);
1324 return false; 1314 return false;
1325 } 1315 }
1326 1316
1327 finished_parsing_manifest_ = true; 1317 finished_parsing_manifest_ = true;
(...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after
1906 offline_enabled_ = is_platform_app(); 1896 offline_enabled_ = is_platform_app();
1907 return true; 1897 return true;
1908 } 1898 }
1909 if (!manifest_->GetBoolean(keys::kOfflineEnabled, &offline_enabled_)) { 1899 if (!manifest_->GetBoolean(keys::kOfflineEnabled, &offline_enabled_)) {
1910 *error = ASCIIToUTF16(errors::kInvalidOfflineEnabled); 1900 *error = ASCIIToUTF16(errors::kInvalidOfflineEnabled);
1911 return false; 1901 return false;
1912 } 1902 }
1913 return true; 1903 return true;
1914 } 1904 }
1915 1905
1916 bool Extension::LoadExtensionFeatures(string16* error) {
1917 if (manifest_->HasKey(keys::kConvertedFromUserScript))
1918 manifest_->GetBoolean(keys::kConvertedFromUserScript,
1919 &converted_from_user_script_);
1920
1921 return LoadSystemIndicator(error);
1922 }
1923
1924 bool Extension::LoadSystemIndicator(string16* error) {
1925 if (!manifest_->HasKey(keys::kSystemIndicator)) {
1926 // There was no manifest entry for the system indicator.
1927 return true;
1928 }
1929
1930 const DictionaryValue* system_indicator_value = NULL;
1931 if (!manifest_->GetDictionary(keys::kSystemIndicator,
1932 &system_indicator_value)) {
1933 *error = ASCIIToUTF16(errors::kInvalidSystemIndicator);
1934 return false;
1935 }
1936
1937 system_indicator_info_ = LoadExtensionActionInfoHelper(
1938 this, system_indicator_value, error);
1939
1940 if (!system_indicator_info_.get()) {
1941 return false;
1942 }
1943
1944 // Because the manifest was successfully parsed, auto-grant the permission.
1945 // TODO(dewittj) Add this for all extension action APIs.
1946 initial_api_permissions()->insert(APIPermission::kSystemIndicator);
1947
1948 return true;
1949 }
1950
1951 bool Extension::HasMultipleUISurfaces() const { 1906 bool Extension::HasMultipleUISurfaces() const {
1952 int num_surfaces = 0; 1907 int num_surfaces = 0;
1953 1908
1954 if (ActionInfo::GetPageActionInfo(this)) 1909 if (ActionInfo::GetPageActionInfo(this))
1955 ++num_surfaces; 1910 ++num_surfaces;
1956 1911
1957 if (ActionInfo::GetBrowserActionInfo(this)) 1912 if (ActionInfo::GetBrowserActionInfo(this))
1958 ++num_surfaces; 1913 ++num_surfaces;
1959 1914
1960 if (is_app()) 1915 if (is_app())
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
2123 2078
2124 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( 2079 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo(
2125 const Extension* extension, 2080 const Extension* extension,
2126 const PermissionSet* permissions, 2081 const PermissionSet* permissions,
2127 Reason reason) 2082 Reason reason)
2128 : reason(reason), 2083 : reason(reason),
2129 extension(extension), 2084 extension(extension),
2130 permissions(permissions) {} 2085 permissions(permissions) {}
2131 2086
2132 } // namespace extensions 2087 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/common/extensions/extension.h ('k') | chrome/common/extensions/manifest_handler_helpers.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698