OLD | NEW |
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 #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_path.h" | 10 #include "base/file_path.h" |
(...skipping 2675 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2686 } else if (manifest_version_ >= 2) { | 2686 } else if (manifest_version_ >= 2) { |
2687 // Manifest version 2 introduced a default Content-Security-Policy. | 2687 // Manifest version 2 introduced a default Content-Security-Policy. |
2688 // TODO(abarth): Should we continue to let extensions override the | 2688 // TODO(abarth): Should we continue to let extensions override the |
2689 // default Content-Security-Policy? | 2689 // default Content-Security-Policy? |
2690 content_security_policy_ = kDefaultContentSecurityPolicy; | 2690 content_security_policy_ = kDefaultContentSecurityPolicy; |
2691 CHECK(ContentSecurityPolicyIsSecure(content_security_policy_)); | 2691 CHECK(ContentSecurityPolicyIsSecure(content_security_policy_)); |
2692 } | 2692 } |
2693 return true; | 2693 return true; |
2694 } | 2694 } |
2695 | 2695 |
2696 bool Extension::LoadAppIsolation(string16* error) { | 2696 bool Extension::LoadAppIsolation( |
| 2697 const ExtensionAPIPermissionSet& api_permissions, string16* error) { |
| 2698 // Platform apps always get isolated storage. |
| 2699 if (is_platform_app()) { |
| 2700 is_storage_isolated_ = true; |
| 2701 return true; |
| 2702 } |
| 2703 |
| 2704 // Other apps only get it if it is requested _and_ experimental APIs are |
| 2705 // enabled. |
| 2706 if (!api_permissions.count(ExtensionAPIPermission::kExperimental) || |
| 2707 !is_app()) { |
| 2708 return true; |
| 2709 } |
| 2710 |
2697 Value* temp = NULL; | 2711 Value* temp = NULL; |
2698 if (!manifest_->Get(keys::kIsolation, &temp)) | 2712 if (!manifest_->Get(keys::kIsolation, &temp)) |
2699 return true; | 2713 return true; |
2700 | 2714 |
2701 if (temp->GetType() != Value::TYPE_LIST) { | 2715 if (temp->GetType() != Value::TYPE_LIST) { |
2702 *error = ASCIIToUTF16(errors::kInvalidIsolation); | 2716 *error = ASCIIToUTF16(errors::kInvalidIsolation); |
2703 return false; | 2717 return false; |
2704 } | 2718 } |
2705 | 2719 |
2706 ListValue* isolation_list = static_cast<ListValue*>(temp); | 2720 ListValue* isolation_list = static_cast<ListValue*>(temp); |
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3073 | 3087 |
3074 ExtensionAPIPermissionSet optional_api_permissions; | 3088 ExtensionAPIPermissionSet optional_api_permissions; |
3075 URLPatternSet optional_host_permissions; | 3089 URLPatternSet optional_host_permissions; |
3076 if (!ParsePermissions(keys::kOptionalPermissions, | 3090 if (!ParsePermissions(keys::kOptionalPermissions, |
3077 error, | 3091 error, |
3078 &optional_api_permissions, | 3092 &optional_api_permissions, |
3079 &optional_host_permissions)) { | 3093 &optional_host_permissions)) { |
3080 return false; | 3094 return false; |
3081 } | 3095 } |
3082 | 3096 |
3083 // App isolation. | 3097 if (!LoadAppIsolation(api_permissions, error)) |
3084 if (api_permissions.count(ExtensionAPIPermission::kExperimental) && | |
3085 is_app() && !LoadAppIsolation(error)) | |
3086 return false; | 3098 return false; |
3087 | 3099 |
3088 if (!LoadSharedFeatures(api_permissions, error)) | 3100 if (!LoadSharedFeatures(api_permissions, error)) |
3089 return false; | 3101 return false; |
3090 | 3102 |
3091 if (!LoadExtensionFeatures(api_permissions, error)) | 3103 if (!LoadExtensionFeatures(api_permissions, error)) |
3092 return false; | 3104 return false; |
3093 | 3105 |
3094 if (!LoadThemeFeatures(error)) | 3106 if (!LoadThemeFeatures(error)) |
3095 return false; | 3107 return false; |
(...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3715 already_disabled(false), | 3727 already_disabled(false), |
3716 extension(extension) {} | 3728 extension(extension) {} |
3717 | 3729 |
3718 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( | 3730 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( |
3719 const Extension* extension, | 3731 const Extension* extension, |
3720 const ExtensionPermissionSet* permissions, | 3732 const ExtensionPermissionSet* permissions, |
3721 Reason reason) | 3733 Reason reason) |
3722 : reason(reason), | 3734 : reason(reason), |
3723 extension(extension), | 3735 extension(extension), |
3724 permissions(permissions) {} | 3736 permissions(permissions) {} |
OLD | NEW |