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

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

Issue 10689097: Enforce the 'requirements' field in manifests. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 5 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 #include "chrome/common/extensions/extension.h" 5 #include "chrome/common/extensions/extension.h"
6 6
7 #include <ostream> 7 #include <ostream>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 20 matching lines...) Expand all
31 #include "chrome/common/extensions/extension_action.h" 31 #include "chrome/common/extensions/extension_action.h"
32 #include "chrome/common/extensions/extension_error_utils.h" 32 #include "chrome/common/extensions/extension_error_utils.h"
33 #include "chrome/common/extensions/extension_manifest_constants.h" 33 #include "chrome/common/extensions/extension_manifest_constants.h"
34 #include "chrome/common/extensions/extension_resource.h" 34 #include "chrome/common/extensions/extension_resource.h"
35 #include "chrome/common/extensions/extension_switch_utils.h" 35 #include "chrome/common/extensions/extension_switch_utils.h"
36 #include "chrome/common/extensions/features/feature.h" 36 #include "chrome/common/extensions/features/feature.h"
37 #include "chrome/common/extensions/features/simple_feature_provider.h" 37 #include "chrome/common/extensions/features/simple_feature_provider.h"
38 #include "chrome/common/extensions/file_browser_handler.h" 38 #include "chrome/common/extensions/file_browser_handler.h"
39 #include "chrome/common/extensions/manifest.h" 39 #include "chrome/common/extensions/manifest.h"
40 #include "chrome/common/extensions/permissions/permissions_info.h" 40 #include "chrome/common/extensions/permissions/permissions_info.h"
41 #include "chrome/common/extensions/requirements_provider.h"
41 #include "chrome/common/extensions/url_pattern_set.h" 42 #include "chrome/common/extensions/url_pattern_set.h"
42 #include "chrome/common/extensions/user_script.h" 43 #include "chrome/common/extensions/user_script.h"
43 #include "chrome/common/url_constants.h" 44 #include "chrome/common/url_constants.h"
44 #include "crypto/sha2.h" 45 #include "crypto/sha2.h"
45 #include "googleurl/src/url_util.h" 46 #include "googleurl/src/url_util.h"
46 #include "grit/chromium_strings.h" 47 #include "grit/chromium_strings.h"
47 #include "grit/generated_resources.h" 48 #include "grit/generated_resources.h"
48 #include "grit/theme_resources_standard.h" 49 #include "grit/theme_resources_standard.h"
49 #include "net/base/registry_controlled_domain.h" 50 #include "net/base/registry_controlled_domain.h"
50 #include "third_party/skia/include/core/SkBitmap.h" 51 #include "third_party/skia/include/core/SkBitmap.h"
(...skipping 1618 matching lines...) Expand 10 before | Expand all | Expand 10 after
1669 } else { 1670 } else {
1670 sandboxed_pages_content_security_policy_ = 1671 sandboxed_pages_content_security_policy_ =
1671 kDefaultSandboxedPageContentSecurityPolicy; 1672 kDefaultSandboxedPageContentSecurityPolicy;
1672 CHECK(ContentSecurityPolicyIsSandboxed( 1673 CHECK(ContentSecurityPolicyIsSandboxed(
1673 sandboxed_pages_content_security_policy_, GetType())); 1674 sandboxed_pages_content_security_policy_, GetType()));
1674 } 1675 }
1675 1676
1676 return true; 1677 return true;
1677 } 1678 }
1678 1679
1679 // These are not actually persisted (they're only used by the store), but
1680 // still validated.
1681 bool Extension::CheckRequirements(string16* error) { 1680 bool Extension::CheckRequirements(string16* error) {
1682 if (!manifest_->HasKey(keys::kRequirements)) 1681 if (!manifest_->HasKey(keys::kRequirements)) {
Aaron Boodman 2012/07/16 21:16:12 No need for braces here.
1683 return true; 1682 return true;
1683 }
1684
1684 DictionaryValue* requirements_value = NULL; 1685 DictionaryValue* requirements_value = NULL;
1685 if (!manifest_->GetDictionary(keys::kRequirements, &requirements_value)) { 1686 if (!manifest_->GetDictionary(keys::kRequirements, &requirements_value)) {
1686 *error = ASCIIToUTF16(errors::kInvalidRequirements); 1687 *error = ASCIIToUTF16(errors::kInvalidRequirements);
1687 return false; 1688 return false;
1688 } 1689 }
1689 1690
1690 for (DictionaryValue::key_iterator it = requirements_value->begin_keys(); 1691 for (DictionaryValue::key_iterator it = requirements_value->begin_keys();
1691 it != requirements_value->end_keys(); ++it) { 1692 it != requirements_value->end_keys(); ++it) {
1692 DictionaryValue* requirement_value; 1693 DictionaryValue* requirement_value;
1693 if (!requirements_value->GetDictionaryWithoutPathExpansion( 1694 if (!requirements_value->GetDictionaryWithoutPathExpansion(
1694 *it, &requirement_value)) { 1695 *it, &requirement_value)) {
1695 *error = ExtensionErrorUtils::FormatErrorMessageUTF16( 1696 *error = ExtensionErrorUtils::FormatErrorMessageUTF16(
1696 errors::kInvalidRequirement, *it); 1697 errors::kInvalidRequirement, *it);
1697 return false; 1698 return false;
1698 } 1699 }
1699 } 1700 }
1701
1700 return true; 1702 return true;
1701 } 1703 }
1702 1704
1703 bool Extension::LoadDefaultLocale(string16* error) { 1705 bool Extension::LoadDefaultLocale(string16* error) {
1704 if (!manifest_->HasKey(keys::kDefaultLocale)) 1706 if (!manifest_->HasKey(keys::kDefaultLocale))
1705 return true; 1707 return true;
1706 if (!manifest_->GetString(keys::kDefaultLocale, &default_locale_) || 1708 if (!manifest_->GetString(keys::kDefaultLocale, &default_locale_) ||
1707 !l10n_util::IsValidLocaleSyntax(default_locale_)) { 1709 !l10n_util::IsValidLocaleSyntax(default_locale_)) {
1708 *error = ASCIIToUTF16(errors::kInvalidDefaultLocale); 1710 *error = ASCIIToUTF16(errors::kInvalidDefaultLocale);
1709 return false; 1711 return false;
(...skipping 2168 matching lines...) Expand 10 before | Expand all | Expand 10 after
3878 3880
3879 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( 3881 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo(
3880 const Extension* extension, 3882 const Extension* extension,
3881 const PermissionSet* permissions, 3883 const PermissionSet* permissions,
3882 Reason reason) 3884 Reason reason)
3883 : reason(reason), 3885 : reason(reason),
3884 extension(extension), 3886 extension(extension),
3885 permissions(permissions) {} 3887 permissions(permissions) {}
3886 3888
3887 } // namespace extensions 3889 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698