OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "extensions/common/manifest_handlers/background_info.h" | 5 #include "extensions/common/manifest_handlers/background_info.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
11 #include "base/strings/string_number_conversions.h" | 11 #include "base/strings/string_number_conversions.h" |
12 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
13 #include "content/public/common/content_switches.h" | 13 #include "content/public/common/content_switches.h" |
14 #include "extensions/common/constants.h" | 14 #include "extensions/common/constants.h" |
15 #include "extensions/common/error_utils.h" | 15 #include "extensions/common/error_utils.h" |
16 #include "extensions/common/file_util.h" | 16 #include "extensions/common/file_util.h" |
17 #include "extensions/common/manifest_constants.h" | 17 #include "extensions/common/manifest_constants.h" |
| 18 #include "extensions/common/manifest_handlers/permissions_parser.h" |
18 #include "extensions/common/permissions/api_permission_set.h" | 19 #include "extensions/common/permissions/api_permission_set.h" |
19 #include "extensions/common/permissions/permissions_data.h" | |
20 #include "extensions/common/switches.h" | 20 #include "extensions/common/switches.h" |
21 #include "grit/extensions_strings.h" | 21 #include "grit/extensions_strings.h" |
22 #include "ui/base/l10n/l10n_util.h" | 22 #include "ui/base/l10n/l10n_util.h" |
23 | 23 |
24 using base::ASCIIToUTF16; | 24 using base::ASCIIToUTF16; |
25 using base::DictionaryValue; | 25 using base::DictionaryValue; |
26 | 26 |
27 namespace extensions { | 27 namespace extensions { |
28 | 28 |
29 namespace keys = manifest_keys; | 29 namespace keys = manifest_keys; |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 | 190 |
191 std::string background_str; | 191 std::string background_str; |
192 if (!background_page_value->GetAsString(&background_str)) { | 192 if (!background_page_value->GetAsString(&background_str)) { |
193 *error = ASCIIToUTF16(errors::kInvalidBackground); | 193 *error = ASCIIToUTF16(errors::kInvalidBackground); |
194 return false; | 194 return false; |
195 } | 195 } |
196 | 196 |
197 if (extension->is_hosted_app()) { | 197 if (extension->is_hosted_app()) { |
198 background_url_ = GURL(background_str); | 198 background_url_ = GURL(background_str); |
199 | 199 |
200 if (!PermissionsData::GetInitialAPIPermissions(extension)->count( | 200 if (!PermissionsParser::HasAPIPermission(extension, |
201 APIPermission::kBackground)) { | 201 APIPermission::kBackground)) { |
202 *error = ASCIIToUTF16(errors::kBackgroundPermissionNeeded); | 202 *error = ASCIIToUTF16(errors::kBackgroundPermissionNeeded); |
203 return false; | 203 return false; |
204 } | 204 } |
205 // Hosted apps require an absolute URL. | 205 // Hosted apps require an absolute URL. |
206 if (!background_url_.is_valid()) { | 206 if (!background_url_.is_valid()) { |
207 *error = ASCIIToUTF16(errors::kInvalidBackgroundInHostedApp); | 207 *error = ASCIIToUTF16(errors::kInvalidBackgroundInHostedApp); |
208 return false; | 208 return false; |
209 } | 209 } |
210 | 210 |
211 if (!(background_url_.SchemeIs("https") || | 211 if (!(background_url_.SchemeIs("https") || |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 return false; | 290 return false; |
291 | 291 |
292 // Platform apps must have background pages or service workers. | 292 // Platform apps must have background pages or service workers. |
293 if (extension->is_platform_app() && !info->has_background_page() && | 293 if (extension->is_platform_app() && !info->has_background_page() && |
294 !info->has_service_worker()) { | 294 !info->has_service_worker()) { |
295 *error = ASCIIToUTF16(errors::kBackgroundRequiredForPlatformApps); | 295 *error = ASCIIToUTF16(errors::kBackgroundRequiredForPlatformApps); |
296 return false; | 296 return false; |
297 } | 297 } |
298 // Lazy background pages are incompatible with the webRequest API. | 298 // Lazy background pages are incompatible with the webRequest API. |
299 if (info->has_lazy_background_page() && | 299 if (info->has_lazy_background_page() && |
300 PermissionsData::GetInitialAPIPermissions(extension)->count( | 300 PermissionsParser::HasAPIPermission(extension, |
301 APIPermission::kWebRequest)) { | 301 APIPermission::kWebRequest)) { |
302 *error = ASCIIToUTF16(errors::kWebRequestConflictsWithLazyBackground); | 302 *error = ASCIIToUTF16(errors::kWebRequestConflictsWithLazyBackground); |
303 return false; | 303 return false; |
304 } | 304 } |
305 | 305 |
306 extension->SetManifestData(kBackground, info.release()); | 306 extension->SetManifestData(kBackground, info.release()); |
307 return true; | 307 return true; |
308 } | 308 } |
309 | 309 |
310 bool BackgroundManifestHandler::Validate( | 310 bool BackgroundManifestHandler::Validate( |
311 const Extension* extension, | 311 const Extension* extension, |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 keys::kBackgroundPageLegacy, | 353 keys::kBackgroundPageLegacy, |
354 keys::kBackgroundPersistent, | 354 keys::kBackgroundPersistent, |
355 keys::kBackgroundScripts, | 355 keys::kBackgroundScripts, |
356 keys::kPlatformAppBackgroundPage, | 356 keys::kPlatformAppBackgroundPage, |
357 keys::kPlatformAppBackgroundScripts, | 357 keys::kPlatformAppBackgroundScripts, |
358 keys::kPlatformAppServiceWorkerScript}; | 358 keys::kPlatformAppServiceWorkerScript}; |
359 return std::vector<std::string>(keys, keys + arraysize(keys)); | 359 return std::vector<std::string>(keys, keys + arraysize(keys)); |
360 } | 360 } |
361 | 361 |
362 } // namespace extensions | 362 } // namespace extensions |
OLD | NEW |