diff options
author | penghuang@chromium.org <penghuang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-27 06:27:06 +0000 |
---|---|---|
committer | penghuang@chromium.org <penghuang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-27 06:27:06 +0000 |
commit | c2e66e129d73bd28f2911731591c1e0ac74cd95b (patch) | |
tree | 040be611b5c97d75eaa8fbb8cd80031727d5c706 /chrome/browser/extensions | |
parent | 1e03cdff9cdb66731a7543cf357a6f5af264685f (diff) | |
download | chromium_src-c2e66e129d73bd28f2911731591c1e0ac74cd95b.zip chromium_src-c2e66e129d73bd28f2911731591c1e0ac74cd95b.tar.gz chromium_src-c2e66e129d73bd28f2911731591c1e0ac74cd95b.tar.bz2 |
Move each permission classes to its own files in extensions/permissions and rename classes from ExtensionPermission* to extensions::Permission*
This CL replaces CL 10649003
TBR=estade
BUG=133049
TEST=unit_tests & browser_tests
Review URL: https://chromiumcodereview.appspot.com/10675007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@144408 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions')
33 files changed, 288 insertions, 243 deletions
diff --git a/chrome/browser/extensions/active_tab_permission_manager.cc b/chrome/browser/extensions/active_tab_permission_manager.cc index 1c52caf..130d63a 100644 --- a/chrome/browser/extensions/active_tab_permission_manager.cc +++ b/chrome/browser/extensions/active_tab_permission_manager.cc @@ -12,7 +12,7 @@ #include "chrome/common/chrome_notification_types.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_messages.h" -#include "chrome/common/extensions/extension_permission_set.h" +#include "chrome/common/extensions/permissions/permission_set.h" #include "content/public/browser/navigation_entry.h" #include "content/public/browser/notification_details.h" #include "content/public/browser/notification_service.h" @@ -38,7 +38,7 @@ ActiveTabPermissionManager::ActiveTabPermissionManager( ActiveTabPermissionManager::~ActiveTabPermissionManager() {} void ActiveTabPermissionManager::GrantIfRequested(const Extension* extension) { - if (!extension->HasAPIPermission(ExtensionAPIPermission::kActiveTab)) + if (!extension->HasAPIPermission(extensions::APIPermission::kActiveTab)) return; if (active_urls_.is_empty()) diff --git a/chrome/browser/extensions/api/declarative/rules_registry_storage_delegate.cc b/chrome/browser/extensions/api/declarative/rules_registry_storage_delegate.cc index 3f71318..f212096 100644 --- a/chrome/browser/extensions/api/declarative/rules_registry_storage_delegate.cc +++ b/chrome/browser/extensions/api/declarative/rules_registry_storage_delegate.cc @@ -178,7 +178,7 @@ void RulesRegistryStorageDelegate::Inner::Observe( // TODO(mpcomplete): This API check should generalize to any use of // declarative rules, not just webRequest. if (extension->HasAPIPermission( - ExtensionAPIPermission::kDeclarativeWebRequest)) { + APIPermission::kDeclarativeWebRequest)) { ReadFromStorage(extension->id()); } } else if (type == chrome::NOTIFICATION_EXTENSIONS_READY) { diff --git a/chrome/browser/extensions/api/permissions/permissions_api.cc b/chrome/browser/extensions/api/permissions/permissions_api.cc index bd87039..0e8ccb2 100644 --- a/chrome/browser/extensions/api/permissions/permissions_api.cc +++ b/chrome/browser/extensions/api/permissions/permissions_api.cc @@ -13,10 +13,15 @@ #include "chrome/common/extensions/api/permissions.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_error_utils.h" +#include "chrome/common/extensions/permissions/permissions_info.h" #include "chrome/common/extensions/url_pattern_set.h" #include "googleurl/src/gurl.h" using extensions::api::permissions::Permissions; +using extensions::APIPermission; +using extensions::APIPermissionSet; +using extensions::PermissionSet; +using extensions::PermissionsInfo; using extensions::PermissionsUpdater; namespace Contains = extensions::api::permissions::Contains; @@ -49,7 +54,7 @@ bool ignore_user_gesture_for_tests = false; bool ContainsPermissionsFunction::RunImpl() { scoped_ptr<Contains::Params> params(Contains::Params::Create(*args_)); - scoped_refptr<ExtensionPermissionSet> permissions = + scoped_refptr<PermissionSet> permissions = helpers::UnpackPermissionSet(params->permissions, &error_); if (!permissions.get()) return false; @@ -70,19 +75,19 @@ bool RemovePermissionsFunction::RunImpl() { scoped_ptr<Remove::Params> params(Remove::Params::Create(*args_)); EXTENSION_FUNCTION_VALIDATE(params.get()); - scoped_refptr<ExtensionPermissionSet> permissions = + scoped_refptr<PermissionSet> permissions = helpers::UnpackPermissionSet(params->permissions, &error_); if (!permissions.get()) return false; const extensions::Extension* extension = GetExtension(); - ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); + PermissionsInfo* info = PermissionsInfo::GetInstance(); // Make sure they're only trying to remove permissions supported by this API. - ExtensionAPIPermissionSet apis = permissions->apis(); - for (ExtensionAPIPermissionSet::const_iterator i = apis.begin(); + APIPermissionSet apis = permissions->apis(); + for (APIPermissionSet::const_iterator i = apis.begin(); i != apis.end(); ++i) { - const ExtensionAPIPermission* api = info->GetByID(*i); + const APIPermission* api = info->GetByID(*i); if (!api->supports_optional()) { error_ = ExtensionErrorUtils::FormatErrorMessage( kNotWhitelistedError, api->name()); @@ -91,9 +96,9 @@ bool RemovePermissionsFunction::RunImpl() { } // Make sure we don't remove any required pemissions. - const ExtensionPermissionSet* required = extension->required_permission_set(); - scoped_refptr<ExtensionPermissionSet> intersection( - ExtensionPermissionSet::CreateIntersection(permissions.get(), required)); + const PermissionSet* required = extension->required_permission_set(); + scoped_refptr<PermissionSet> intersection( + PermissionSet::CreateIntersection(permissions.get(), required)); if (!intersection->IsEmpty()) { error_ = kCantRemoveRequiredPermissionsError; result_.reset(Remove::Result::Create(false)); @@ -151,14 +156,14 @@ bool RequestPermissionsFunction::RunImpl() { if (!requested_permissions_.get()) return false; - ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); + PermissionsInfo* info = PermissionsInfo::GetInstance(); ExtensionPrefs* prefs = profile()->GetExtensionService()->extension_prefs(); // Make sure they're only requesting permissions supported by this API. - ExtensionAPIPermissionSet apis = requested_permissions_->apis(); - for (ExtensionAPIPermissionSet::const_iterator i = apis.begin(); + APIPermissionSet apis = requested_permissions_->apis(); + for (APIPermissionSet::const_iterator i = apis.begin(); i != apis.end(); ++i) { - const ExtensionAPIPermission* api = info->GetByID(*i); + const APIPermission* api = info->GetByID(*i); if (!api->supports_optional()) { error_ = ExtensionErrorUtils::FormatErrorMessage( kNotWhitelistedError, api->name()); @@ -176,7 +181,7 @@ bool RequestPermissionsFunction::RunImpl() { // We don't need to prompt the user if the requested permissions are a subset // of the granted permissions set. - scoped_refptr<const ExtensionPermissionSet> granted = + scoped_refptr<const PermissionSet> granted = prefs->GetGrantedPermissions(GetExtension()->id()); if (granted.get() && granted->Contains(*requested_permissions_)) { PermissionsUpdater perms_updater(profile()); @@ -187,7 +192,7 @@ bool RequestPermissionsFunction::RunImpl() { } // Filter out the granted permissions so we only prompt for new ones. - requested_permissions_ = ExtensionPermissionSet::CreateDifference( + requested_permissions_ = PermissionSet::CreateDifference( requested_permissions_.get(), granted.get()); AddRef(); // Balanced in InstallUIProceed() / InstallUIAbort(). diff --git a/chrome/browser/extensions/api/permissions/permissions_api.h b/chrome/browser/extensions/api/permissions/permissions_api.h index 662b8c2..a1bf462 100644 --- a/chrome/browser/extensions/api/permissions/permissions_api.h +++ b/chrome/browser/extensions/api/permissions/permissions_api.h @@ -11,9 +11,8 @@ #include "base/compiler_specific.h" #include "chrome/browser/extensions/extension_function.h" #include "chrome/browser/extensions/extension_install_prompt.h" -#include "chrome/common/extensions/extension_permission_set.h" +#include "chrome/common/extensions/permissions/permission_set.h" -class ExtensionPermissionSet; class ExtensionService; // chrome.permissions.contains @@ -76,7 +75,7 @@ class RequestPermissionsFunction : public AsyncExtensionFunction, private: scoped_ptr<ExtensionInstallPrompt> install_ui_; - scoped_refptr<ExtensionPermissionSet> requested_permissions_; + scoped_refptr<extensions::PermissionSet> requested_permissions_; }; #endif // CHROME_BROWSER_EXTENSIONS_API_PERMISSIONS_PERMISSIONS_API_H_ diff --git a/chrome/browser/extensions/api/permissions/permissions_api_helpers.cc b/chrome/browser/extensions/api/permissions/permissions_api_helpers.cc index e5c31f6..a421a9d 100644 --- a/chrome/browser/extensions/api/permissions/permissions_api_helpers.cc +++ b/chrome/browser/extensions/api/permissions/permissions_api_helpers.cc @@ -8,9 +8,14 @@ #include "chrome/common/extensions/api/permissions.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_error_utils.h" -#include "chrome/common/extensions/extension_permission_set.h" +#include "chrome/common/extensions/permissions/permission_set.h" +#include "chrome/common/extensions/permissions/permissions_info.h" #include "chrome/common/extensions/url_pattern_set.h" +using extensions::APIPermission; +using extensions::PermissionSet; +using extensions::PermissionsInfo; + namespace extensions { using api::permissions::Permissions; @@ -26,12 +31,12 @@ const char kUnknownPermissionError[] = } // namespace -scoped_ptr<Permissions> PackPermissionSet(const ExtensionPermissionSet* set) { +scoped_ptr<Permissions> PackPermissionSet(const PermissionSet* set) { Permissions* permissions(new Permissions()); permissions->permissions.reset(new std::vector<std::string>()); - ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); - for (ExtensionAPIPermissionSet::const_iterator i = set->apis().begin(); + PermissionsInfo* info = PermissionsInfo::GetInstance(); + for (APIPermissionSet::const_iterator i = set->apis().begin(); i != set->apis().end(); ++i) { permissions->permissions->push_back(info->GetByID(*i)->name()); } @@ -44,15 +49,15 @@ scoped_ptr<Permissions> PackPermissionSet(const ExtensionPermissionSet* set) { return scoped_ptr<Permissions>(permissions); } -scoped_refptr<ExtensionPermissionSet> UnpackPermissionSet( +scoped_refptr<PermissionSet> UnpackPermissionSet( const Permissions& permissions, std::string* error) { - ExtensionAPIPermissionSet apis; + APIPermissionSet apis; std::vector<std::string>* permissions_list = permissions.permissions.get(); if (permissions_list) { - ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); + PermissionsInfo* info = PermissionsInfo::GetInstance(); for (std::vector<std::string>::iterator it = permissions_list->begin(); it != permissions_list->end(); ++it) { - ExtensionAPIPermission* permission = info->GetByName(*it); + APIPermission* permission = info->GetByName(*it); if (!permission) { *error = ExtensionErrorUtils::FormatErrorMessage( kUnknownPermissionError, *it); @@ -79,8 +84,8 @@ scoped_refptr<ExtensionPermissionSet> UnpackPermissionSet( } } - return scoped_refptr<ExtensionPermissionSet>( - new ExtensionPermissionSet(apis, origins, URLPatternSet())); + return scoped_refptr<PermissionSet>( + new PermissionSet(apis, origins, URLPatternSet())); } } // namespace permissions_api diff --git a/chrome/browser/extensions/api/permissions/permissions_api_helpers.h b/chrome/browser/extensions/api/permissions/permissions_api_helpers.h index 158ca04..65cc591 100644 --- a/chrome/browser/extensions/api/permissions/permissions_api_helpers.h +++ b/chrome/browser/extensions/api/permissions/permissions_api_helpers.h @@ -14,10 +14,12 @@ namespace base { class DictionaryValue; } -class ExtensionPermissionSet; + namespace extensions { +class PermissionSet; + namespace api { namespace permissions { struct Permissions; @@ -28,11 +30,11 @@ namespace permissions_api_helpers { // Converts the permission |set| to a permissions object. scoped_ptr<api::permissions::Permissions> PackPermissionSet( - const ExtensionPermissionSet* set); + const PermissionSet* set); // Creates a permission set from |permissions|. Returns NULL if the permissions // cannot be converted to a permission set, in which case |error| will be set. -scoped_refptr<ExtensionPermissionSet> UnpackPermissionSet( +scoped_refptr<PermissionSet> UnpackPermissionSet( const api::permissions::Permissions& permissions, std::string* error); } // namespace permissions_api_helpers diff --git a/chrome/browser/extensions/api/permissions/permissions_api_helpers_unittest.cc b/chrome/browser/extensions/api/permissions/permissions_api_helpers_unittest.cc index 7d03989d..d7606ab 100644 --- a/chrome/browser/extensions/api/permissions/permissions_api_helpers_unittest.cc +++ b/chrome/browser/extensions/api/permissions/permissions_api_helpers_unittest.cc @@ -6,7 +6,7 @@ #include "base/values.h" #include "chrome/browser/extensions/api/permissions/permissions_api_helpers.h" #include "chrome/common/extensions/api/permissions.h" -#include "chrome/common/extensions/extension_permission_set.h" +#include "chrome/common/extensions/permissions/permission_set.h" #include "chrome/common/extensions/url_pattern_set.h" #include "googleurl/src/gurl.h" #include "testing/gtest/include/gtest/gtest.h" @@ -14,6 +14,9 @@ using extensions::permissions_api_helpers::PackPermissionSet; using extensions::permissions_api_helpers::UnpackPermissionSet; using extensions::api::permissions::Permissions; +using extensions::APIPermission; +using extensions::APIPermissionSet; +using extensions::PermissionSet; namespace { @@ -24,17 +27,17 @@ static void AddPattern(URLPatternSet* extent, const std::string& pattern) { } // namespace -// Tests that we can convert ExtensionPermissionSets to and from values. +// Tests that we can convert PermissionSets to and from values. TEST(ExtensionPermissionsAPIHelpers, Pack) { - ExtensionAPIPermissionSet apis; - apis.insert(ExtensionAPIPermission::kTab); - apis.insert(ExtensionAPIPermission::kWebRequest); + APIPermissionSet apis; + apis.insert(APIPermission::kTab); + apis.insert(APIPermission::kWebRequest); URLPatternSet hosts; AddPattern(&hosts, "http://a.com/*"); AddPattern(&hosts, "http://b.com/*"); - scoped_refptr<ExtensionPermissionSet> permission_set = - new ExtensionPermissionSet(apis, hosts, URLPatternSet()); + scoped_refptr<PermissionSet> permission_set = + new PermissionSet(apis, hosts, URLPatternSet()); // Pack the permission set to value and verify its contents. scoped_ptr<Permissions> permissions(PackPermissionSet(permission_set)); @@ -61,7 +64,7 @@ TEST(ExtensionPermissionsAPIHelpers, Pack) { // Unpack the value back to a permission set and make sure its equal to the // original one. - scoped_refptr<ExtensionPermissionSet> from_value; + scoped_refptr<PermissionSet> from_value; std::string error; Permissions permissions_object; EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); @@ -72,7 +75,7 @@ TEST(ExtensionPermissionsAPIHelpers, Pack) { } // Tests various error conditions and edge cases when unpacking values -// into ExtensionPermissionSets. +// into PermissionSets. TEST(ExtensionPermissionsAPIHelpers, Unpack) { scoped_ptr<ListValue> apis(new ListValue()); apis->Append(Value::CreateStringValue("tabs")); @@ -80,7 +83,7 @@ TEST(ExtensionPermissionsAPIHelpers, Unpack) { origins->Append(Value::CreateStringValue("http://a.com/*")); scoped_ptr<DictionaryValue> value(new DictionaryValue()); - scoped_refptr<ExtensionPermissionSet> permissions; + scoped_refptr<PermissionSet> permissions; std::string error; // Origins shouldn't have to be present. @@ -89,7 +92,7 @@ TEST(ExtensionPermissionsAPIHelpers, Unpack) { value->Set("permissions", apis->DeepCopy()); EXPECT_TRUE(Permissions::Populate(*value, &permissions_object)); permissions = UnpackPermissionSet(permissions_object, &error); - EXPECT_TRUE(permissions->HasAPIPermission(ExtensionAPIPermission::kTab)); + EXPECT_TRUE(permissions->HasAPIPermission(APIPermission::kTab)); EXPECT_TRUE(permissions); EXPECT_TRUE(error.empty()); } diff --git a/chrome/browser/extensions/api/permissions/permissions_apitest.cc b/chrome/browser/extensions/api/permissions/permissions_apitest.cc index 252038e..fd07016 100644 --- a/chrome/browser/extensions/api/permissions/permissions_apitest.cc +++ b/chrome/browser/extensions/api/permissions/permissions_apitest.cc @@ -9,9 +9,13 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "chrome/common/chrome_switches.h" -#include "chrome/common/extensions/extension_permission_set.h" +#include "chrome/common/extensions/permissions/permission_set.h" #include "net/base/mock_host_resolver.h" +using extensions::APIPermission; +using extensions::APIPermissionSet; +using extensions::PermissionSet; + namespace { static void AddPattern(URLPatternSet* extent, const std::string& pattern) { @@ -68,12 +72,12 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, DISABLED_AlwaysAllowed) { // Tests that the optional permissions API works correctly. IN_PROC_BROWSER_TEST_F(ExtensionApiTest, OptionalPermissionsGranted) { // Mark all the tested APIs as granted to bypass the confirmation UI. - ExtensionAPIPermissionSet apis; - apis.insert(ExtensionAPIPermission::kTab); + APIPermissionSet apis; + apis.insert(APIPermission::kTab); URLPatternSet explicit_hosts; AddPattern(&explicit_hosts, "http://*.c.com/*"); - scoped_refptr<ExtensionPermissionSet> granted_permissions = - new ExtensionPermissionSet(apis, explicit_hosts, URLPatternSet()); + scoped_refptr<PermissionSet> granted_permissions = + new PermissionSet(apis, explicit_hosts, URLPatternSet()); ExtensionPrefs* prefs = browser()->profile()->GetExtensionService()->extension_prefs(); diff --git a/chrome/browser/extensions/api/tabs/tabs.cc b/chrome/browser/extensions/api/tabs/tabs.cc index 8b2ed1b..00b86b1 100644 --- a/chrome/browser/extensions/api/tabs/tabs.cc +++ b/chrome/browser/extensions/api/tabs/tabs.cc @@ -1353,7 +1353,7 @@ void UpdateTabFunction::PopulateResult() { if (!has_callback()) return; - if (GetExtension()->HasAPIPermission(ExtensionAPIPermission::kTab)) { + if (GetExtension()->HasAPIPermission(extensions::APIPermission::kTab)) { result_.reset( ExtensionTabUtil::CreateTabValue(tab_contents_->web_contents())); } else { diff --git a/chrome/browser/extensions/api/web_request/web_request_api.cc b/chrome/browser/extensions/api/web_request/web_request_api.cc index 59b6fa5..1c61a18 100644 --- a/chrome/browser/extensions/api/web_request/web_request_api.cc +++ b/chrome/browser/extensions/api/web_request/web_request_api.cc @@ -1577,7 +1577,7 @@ bool WebRequestAddEventListener::RunImpl() { (ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING | ExtensionWebRequestEventRouter::ExtraInfoSpec::ASYNC_BLOCKING)) && !extension->HasAPIPermission( - ExtensionAPIPermission::kWebRequestBlocking)) { + extensions::APIPermission::kWebRequestBlocking)) { error_ = keys::kBlockingPermissionRequired; return false; } diff --git a/chrome/browser/extensions/bundle_installer.cc b/chrome/browser/extensions/bundle_installer.cc index ffd5f1f..b64a623 100644 --- a/chrome/browser/extensions/bundle_installer.cc +++ b/chrome/browser/extensions/bundle_installer.cc @@ -255,9 +255,9 @@ void BundleInstaller::ShowPrompt() { return; } - scoped_refptr<ExtensionPermissionSet> permissions; + scoped_refptr<PermissionSet> permissions; for (size_t i = 0; i < dummy_extensions_.size(); ++i) { - permissions = ExtensionPermissionSet::CreateUnion( + permissions = PermissionSet::CreateUnion( permissions, dummy_extensions_[i]->required_permission_set()); } diff --git a/chrome/browser/extensions/convert_web_app_browsertest.cc b/chrome/browser/extensions/convert_web_app_browsertest.cc index 7ec70b9..7744ce3 100644 --- a/chrome/browser/extensions/convert_web_app_browsertest.cc +++ b/chrome/browser/extensions/convert_web_app_browsertest.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -17,6 +17,8 @@ #include "content/public/browser/notification_registrar.h" #include "content/public/browser/notification_service.h" +using extensions::APIPermission; + class ExtensionFromWebAppTest : public InProcessBrowserTest, public content::NotificationObserver { protected: @@ -74,9 +76,9 @@ IN_PROC_BROWSER_TEST_F(ExtensionFromWebAppTest, Basic) { ASSERT_EQ(2u, installed_extension_->GetActivePermissions()->apis().size()); EXPECT_TRUE(installed_extension_->HasAPIPermission( - ExtensionAPIPermission::kGeolocation)); + APIPermission::kGeolocation)); EXPECT_TRUE(installed_extension_->HasAPIPermission( - ExtensionAPIPermission::kNotification)); + APIPermission::kNotification)); ASSERT_EQ(3u, installed_extension_->icons().map().size()); EXPECT_EQ("icons/16.png", installed_extension_->icons().Get( diff --git a/chrome/browser/extensions/extension_font_settings_api.cc b/chrome/browser/extensions/extension_font_settings_api.cc index e8a0c39..f3bc3e4 100644 --- a/chrome/browser/extensions/extension_font_settings_api.cc +++ b/chrome/browser/extensions/extension_font_settings_api.cc @@ -30,6 +30,8 @@ #include "ui/gfx/platform_font_win.h" #endif +using extensions::APIPermission; + namespace fonts = extensions::api::experimental_font_settings; namespace { @@ -210,7 +212,7 @@ void ExtensionFontSettingsEventRouter::OnFontNamePrefChanged( profile_, kOnFontChanged, &args, - ExtensionAPIPermission::kExperimental, + APIPermission::kExperimental, incognito, pref_name); } @@ -234,7 +236,7 @@ void ExtensionFontSettingsEventRouter::OnFontPrefChanged( profile_, event_name, &args, - ExtensionAPIPermission::kExperimental, + APIPermission::kExperimental, incognito, pref_name); } diff --git a/chrome/browser/extensions/extension_info_map.cc b/chrome/browser/extensions/extension_info_map.cc index 8401ceb..39357c1 100644 --- a/chrome/browser/extensions/extension_info_map.cc +++ b/chrome/browser/extensions/extension_info_map.cc @@ -124,7 +124,7 @@ void ExtensionInfoMap::UnregisterAllExtensionsInProcess(int process_id) { bool ExtensionInfoMap::SecurityOriginHasAPIPermission( const GURL& origin, int process_id, - ExtensionAPIPermission::ID permission) const { + extensions::APIPermission::ID permission) const { if (origin.SchemeIs(chrome::kExtensionScheme)) { const std::string& id = origin.host(); return extensions_.GetByID(id)->HasAPIPermission(permission) && diff --git a/chrome/browser/extensions/extension_info_map.h b/chrome/browser/extensions/extension_info_map.h index 8a64d55..54e8ed2 100644 --- a/chrome/browser/extensions/extension_info_map.h +++ b/chrome/browser/extensions/extension_info_map.h @@ -70,7 +70,7 @@ class ExtensionInfoMap : public base::RefCountedThreadSafe<ExtensionInfoMap> { // |origin| in |process_id| with |permission|. bool SecurityOriginHasAPIPermission( const GURL& origin, int process_id, - ExtensionAPIPermission::ID permission) const; + extensions::APIPermission::ID permission) const; ExtensionsQuotaService* GetQuotaService(); diff --git a/chrome/browser/extensions/extension_info_map_unittest.cc b/chrome/browser/extensions/extension_info_map_unittest.cc index 79ec2d4..49235ed 100644 --- a/chrome/browser/extensions/extension_info_map_unittest.cc +++ b/chrome/browser/extensions/extension_info_map_unittest.cc @@ -15,6 +15,7 @@ #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURL.h" using content::BrowserThread; +using extensions::APIPermission; using extensions::Extension; using WebKit::WebSecurityOrigin; using WebKit::WebString; @@ -149,21 +150,21 @@ TEST_F(ExtensionInfoMapTest, CheckPermissions) { const Extension* match = info_map->extensions().GetExtensionOrAppByURL( ExtensionURLInfo(app_origin, app->GetResourceURL("a.html"))); EXPECT_TRUE(match && - match->HasAPIPermission(ExtensionAPIPermission::kNotification)); + match->HasAPIPermission(APIPermission::kNotification)); match = info_map->extensions().GetExtensionOrAppByURL( ExtensionURLInfo(app_origin, app_url)); EXPECT_TRUE(match && - match->HasAPIPermission(ExtensionAPIPermission::kNotification)); + match->HasAPIPermission(APIPermission::kNotification)); EXPECT_FALSE(match && - match->HasAPIPermission(ExtensionAPIPermission::kTab)); + match->HasAPIPermission(APIPermission::kTab)); // The extension should have the tabs permission. match = info_map->extensions().GetExtensionOrAppByURL( ExtensionURLInfo(app_origin, extension->GetResourceURL("a.html"))); EXPECT_TRUE(match && - match->HasAPIPermission(ExtensionAPIPermission::kTab)); + match->HasAPIPermission(APIPermission::kTab)); EXPECT_FALSE(match && - match->HasAPIPermission(ExtensionAPIPermission::kNotification)); + match->HasAPIPermission(APIPermission::kNotification)); // Random URL should not have any permissions. GURL evil_url("http://evil.com/a.html"); diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc index 807b098..2254cdd 100644 --- a/chrome/browser/extensions/extension_install_prompt.cc +++ b/chrome/browser/extensions/extension_install_prompt.cc @@ -40,6 +40,7 @@ using extensions::BundleInstaller; using extensions::Extension; +using extensions::PermissionSet; static const int kTitleIds[ExtensionInstallPrompt::NUM_PROMPT_TYPES] = { 0, // The regular install prompt depends on what's being installed. @@ -254,7 +255,7 @@ ExtensionInstallPrompt::~ExtensionInstallPrompt() { void ExtensionInstallPrompt::ConfirmBundleInstall( extensions::BundleInstaller* bundle, - const ExtensionPermissionSet* permissions) { + const PermissionSet* permissions) { DCHECK(ui_loop_ == MessageLoop::current()); bundle_ = bundle; permissions_ = permissions; @@ -330,7 +331,7 @@ void ExtensionInstallPrompt::ConfirmReEnable(Delegate* delegate, void ExtensionInstallPrompt::ConfirmPermissions( Delegate* delegate, const Extension* extension, - const ExtensionPermissionSet* permissions) { + const PermissionSet* permissions) { DCHECK(ui_loop_ == MessageLoop::current()); extension_ = extension; permissions_ = permissions; diff --git a/chrome/browser/extensions/extension_install_prompt.h b/chrome/browser/extensions/extension_install_prompt.h index ce1f546..ba46c5f 100644 --- a/chrome/browser/extensions/extension_install_prompt.h +++ b/chrome/browser/extensions/extension_install_prompt.h @@ -22,7 +22,6 @@ class Browser; class ExtensionInstallUI; -class ExtensionPermissionSet; class MessageLoop; class InfoBarDelegate; @@ -34,6 +33,7 @@ namespace extensions { class BundleInstaller; class Extension; class ExtensionWebstorePrivateApiTest; +class PermissionSet; } // namespace extensions // Displays all the UI around extension installation. @@ -159,8 +159,9 @@ class ExtensionInstallPrompt : public ImageLoadingTracker::Observer { // should be installed. // // We *MUST* eventually call either Proceed() or Abort() on |delegate|. - virtual void ConfirmBundleInstall(extensions::BundleInstaller* bundle, - const ExtensionPermissionSet* permissions); + virtual void ConfirmBundleInstall( + extensions::BundleInstaller* bundle, + const extensions::PermissionSet* permissions); // This is called by the inline installer to verify whether the inline // install from the webstore should proceed. @@ -199,7 +200,7 @@ class ExtensionInstallPrompt : public ImageLoadingTracker::Observer { // We *MUST* eventually call either Proceed() or Abort() on |delegate|. virtual void ConfirmPermissions(Delegate* delegate, const extensions::Extension* extension, - const ExtensionPermissionSet* permissions); + const extensions::PermissionSet* permissions); // Installation was successful. This is declared virtual for testing. virtual void OnInstallSuccess(const extensions::Extension* extension, @@ -245,7 +246,7 @@ class ExtensionInstallPrompt : public ImageLoadingTracker::Observer { const extensions::BundleInstaller* bundle_; // The permissions being prompted for. - scoped_refptr<const ExtensionPermissionSet> permissions_; + scoped_refptr<const extensions::PermissionSet> permissions_; // The object responsible for doing the UI specific actions. scoped_ptr<ExtensionInstallUI> install_ui_; diff --git a/chrome/browser/extensions/extension_management_api.cc b/chrome/browser/extensions/extension_management_api.cc index 017a963..3c5a998 100644 --- a/chrome/browser/extensions/extension_management_api.cc +++ b/chrome/browser/extensions/extension_management_api.cc @@ -44,6 +44,7 @@ using content::BrowserThread; using content::UtilityProcessHost; using content::UtilityProcessHostClient; using extensions::Extension; +using extensions::PermissionMessages; namespace events = extension_event_names; namespace keys = extension_management_api_constants; @@ -195,9 +196,9 @@ bool GetPermissionWarningsByIdFunction::RunImpl() { return false; } - ExtensionPermissionMessages warnings = extension->GetPermissionMessages(); + PermissionMessages warnings = extension->GetPermissionMessages(); ListValue* result = new ListValue(); - for (ExtensionPermissionMessages::const_iterator i = warnings.begin(); + for (PermissionMessages::const_iterator i = warnings.begin(); i < warnings.end(); ++i) result->Append(Value::CreateStringValue(i->message())); result_.reset(result); @@ -319,9 +320,9 @@ void GetPermissionWarningsByManifestFunction::OnParseSuccess( return; } - ExtensionPermissionMessages warnings = extension->GetPermissionMessages(); + PermissionMessages warnings = extension->GetPermissionMessages(); ListValue* result = new ListValue(); - for (ExtensionPermissionMessages::const_iterator i = warnings.begin(); + for (PermissionMessages::const_iterator i = warnings.begin(); i < warnings.end(); ++i) result->Append(Value::CreateStringValue(i->message())); result_.reset(result); diff --git a/chrome/browser/extensions/extension_preference_api.cc b/chrome/browser/extensions/extension_preference_api.cc index 2de541a..1e3bcde 100644 --- a/chrome/browser/extensions/extension_preference_api.cc +++ b/chrome/browser/extensions/extension_preference_api.cc @@ -22,7 +22,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/common/chrome_notification_types.h" #include "chrome/common/extensions/extension_error_utils.h" -#include "chrome/common/extensions/extension_permission_set.h" +#include "chrome/common/extensions/permissions/api_permission.h" #include "chrome/common/pref_names.h" #include "content/public/browser/notification_details.h" #include "content/public/browser/notification_source.h" @@ -30,6 +30,8 @@ namespace keys = extension_preference_api_constants; namespace helpers = extension_preference_helpers; +using extensions::APIPermission; + namespace { struct PrefMappingEntry { @@ -40,9 +42,9 @@ struct PrefMappingEntry { const char* browser_pref; // Permission required to access this preference. - // Use ExtensionAPIPermission::kInvalid for |permission| to express that no + // Use APIPermission::kInvalid for |permission| to express that no // permission is necessary. - ExtensionAPIPermission::ID permission; + APIPermission::ID permission; }; const char kOnPrefChangeFormat[] = "types.ChromeSetting.%s.onChange"; @@ -51,60 +53,60 @@ PrefMappingEntry kPrefMapping[] = { #if defined(OS_CHROMEOS) { "protectedContentEnabled", prefs::kEnableCrosDRM, - ExtensionAPIPermission::kPrivacy + APIPermission::kPrivacy }, #endif // defined(OS_CHROMEOS) { "alternateErrorPagesEnabled", prefs::kAlternateErrorPagesEnabled, - ExtensionAPIPermission::kPrivacy + APIPermission::kPrivacy }, { "autofillEnabled", prefs::kAutofillEnabled, - ExtensionAPIPermission::kPrivacy + APIPermission::kPrivacy }, { "hyperlinkAuditingEnabled", prefs::kEnableHyperlinkAuditing, - ExtensionAPIPermission::kPrivacy + APIPermission::kPrivacy }, { "instantEnabled", prefs::kInstantEnabled, - ExtensionAPIPermission::kPrivacy + APIPermission::kPrivacy }, { "managedModeEnabled", prefs::kInManagedMode, - ExtensionAPIPermission::kManagedModePrivate + APIPermission::kManagedModePrivate }, { "networkPredictionEnabled", prefs::kNetworkPredictionEnabled, - ExtensionAPIPermission::kPrivacy + APIPermission::kPrivacy }, { "proxy", prefs::kProxy, - ExtensionAPIPermission::kProxy + APIPermission::kProxy }, { "referrersEnabled", prefs::kEnableReferrers, - ExtensionAPIPermission::kPrivacy + APIPermission::kPrivacy }, { "safeBrowsingEnabled", prefs::kSafeBrowsingEnabled, - ExtensionAPIPermission::kPrivacy + APIPermission::kPrivacy }, { "searchSuggestEnabled", prefs::kSearchSuggestEnabled, - ExtensionAPIPermission::kPrivacy + APIPermission::kPrivacy }, { "spellingServiceEnabled", prefs::kSpellCheckUseSpellingService, - ExtensionAPIPermission::kPrivacy + APIPermission::kPrivacy }, { "thirdPartyCookiesAllowed", prefs::kBlockThirdPartyCookies, - ExtensionAPIPermission::kPrivacy + APIPermission::kPrivacy }, { "translationServiceEnabled", prefs::kEnableTranslate, - ExtensionAPIPermission::kPrivacy + APIPermission::kPrivacy } }; @@ -150,7 +152,7 @@ class PrefMapping { bool FindBrowserPrefForExtensionPref(const std::string& extension_pref, std::string* browser_pref, - ExtensionAPIPermission::ID* permission) { + APIPermission::ID* permission) { PrefMap::iterator it = mapping_.find(extension_pref); if (it != mapping_.end()) { *browser_pref = it->second.first; @@ -162,7 +164,7 @@ class PrefMapping { bool FindEventForBrowserPref(const std::string& browser_pref, std::string* event_name, - ExtensionAPIPermission::ID* permission) { + APIPermission::ID* permission) { PrefMap::iterator it = event_mapping_.find(browser_pref); if (it != event_mapping_.end()) { *event_name = it->second.first; @@ -218,7 +220,7 @@ class PrefMapping { } typedef std::map<std::string, - std::pair<std::string, ExtensionAPIPermission::ID> > + std::pair<std::string, APIPermission::ID> > PrefMap; // Mapping from extension pref keys to browser pref keys and permissions. @@ -268,7 +270,7 @@ void ExtensionPreferenceEventRouter::OnPrefChanged( bool incognito = (pref_service != profile_->GetPrefs()); std::string event_name; - ExtensionAPIPermission::ID permission = ExtensionAPIPermission::kInvalid; + APIPermission::ID permission = APIPermission::kInvalid; bool rv = PrefMapping::GetInstance()->FindEventForBrowserPref( browser_pref, &event_name, &permission); DCHECK(rv); @@ -303,7 +305,7 @@ PreferenceFunction::~PreferenceFunction() { } bool PreferenceFunction::ValidateBrowserPref( const std::string& extension_pref_key, std::string* browser_pref_key) { - ExtensionAPIPermission::ID permission = ExtensionAPIPermission::kInvalid; + APIPermission::ID permission = APIPermission::kInvalid; EXTENSION_FUNCTION_VALIDATE( PrefMapping::GetInstance()->FindBrowserPrefForExtensionPref( extension_pref_key, browser_pref_key, &permission)); diff --git a/chrome/browser/extensions/extension_preference_helpers.cc b/chrome/browser/extensions/extension_preference_helpers.cc index bbfbd06..1652c8a 100644 --- a/chrome/browser/extensions/extension_preference_helpers.cc +++ b/chrome/browser/extensions/extension_preference_helpers.cc @@ -77,7 +77,7 @@ void DispatchEventToExtensions( Profile* profile, const std::string& event_name, ListValue* args, - ExtensionAPIPermission::ID permission, + extensions::APIPermission::ID permission, bool incognito, const std::string& browser_pref) { ExtensionEventRouter* router = profile->GetExtensionEventRouter(); diff --git a/chrome/browser/extensions/extension_preference_helpers.h b/chrome/browser/extensions/extension_preference_helpers.h index b4d275e..410faa3 100644 --- a/chrome/browser/extensions/extension_preference_helpers.h +++ b/chrome/browser/extensions/extension_preference_helpers.h @@ -8,7 +8,7 @@ #include <string> -#include "chrome/common/extensions/extension_permission_set.h" +#include "chrome/common/extensions/permissions/permission_set.h" #include "chrome/browser/extensions/extension_prefs_scope.h" class Profile; @@ -38,7 +38,7 @@ void DispatchEventToExtensions( Profile* profile, const std::string& event_name, base::ListValue* args, - ExtensionAPIPermission::ID permission, + extensions::APIPermission::ID permission, bool incognito, const std::string& browser_pref); diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc index 1efc4ae..1768880 100644 --- a/chrome/browser/extensions/extension_prefs.cc +++ b/chrome/browser/extensions/extension_prefs.cc @@ -18,6 +18,7 @@ #include "chrome/common/chrome_notification_types.h" #include "chrome/common/extensions/extension_switch_utils.h" #include "chrome/common/extensions/manifest.h" +#include "chrome/common/extensions/permissions/permissions_info.h" #include "chrome/common/extensions/url_pattern.h" #include "chrome/common/pref_names.h" #include "chrome/common/url_constants.h" @@ -25,8 +26,13 @@ #include "grit/generated_resources.h" #include "ui/base/l10n/l10n_util.h" +using extensions::APIPermission; +using extensions::APIPermissionSet; using extensions::Extension; using extensions::ExtensionInfo; +using extensions::OAuth2Scopes; +using extensions::PermissionsInfo; +using extensions::PermissionSet; namespace { @@ -132,7 +138,7 @@ const char kBrowserActionPinned[] = "browser_action_pinned"; const char kPrefActivePermissions[] = "active_permissions"; const char kPrefGrantedPermissions[] = "granted_permissions"; -// The preference names for ExtensionPermissionSet values. +// The preference names for PermissionSet values. const char kPrefAPIs[] = "api"; const char kPrefExplicitHosts[] = "explicit_host"; const char kPrefScriptableHosts[] = "scriptable_host"; @@ -468,22 +474,22 @@ void ExtensionPrefs::SetExtensionPrefURLPatternSet( UpdateExtensionPref(extension_id, pref_key, new_value.ToValue().release()); } -ExtensionPermissionSet* ExtensionPrefs::ReadExtensionPrefPermissionSet( +PermissionSet* ExtensionPrefs::ReadExtensionPrefPermissionSet( const std::string& extension_id, const std::string& pref_key) { if (!GetExtensionPref(extension_id)) return NULL; // Retrieve the API permissions. - ExtensionAPIPermissionSet apis; + APIPermissionSet apis; const ListValue* api_values = NULL; std::string api_pref = JoinPrefs(pref_key, kPrefAPIs); if (ReadExtensionPrefList(extension_id, api_pref, &api_values)) { - ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); + PermissionsInfo* info = PermissionsInfo::GetInstance(); for (size_t i = 0; i < api_values->GetSize(); ++i) { std::string permission_name; if (api_values->GetString(i, &permission_name)) { - ExtensionAPIPermission *permission = info->GetByName(permission_name); + APIPermission *permission = info->GetByName(permission_name); if (permission) apis.insert(permission->id()); } @@ -503,7 +509,7 @@ ExtensionPermissionSet* ExtensionPrefs::ReadExtensionPrefPermissionSet( &scriptable_hosts, UserScript::kValidUserScriptSchemes); // Retrieve the oauth2 scopes. - ExtensionOAuth2Scopes scopes; + OAuth2Scopes scopes; const ListValue* scope_values = NULL; std::string scope_pref = JoinPrefs(pref_key, kPrefScopes); if (ReadExtensionPrefList(extension_id, scope_pref, &scope_values)) { @@ -514,22 +520,22 @@ ExtensionPermissionSet* ExtensionPrefs::ReadExtensionPrefPermissionSet( } } - return new ExtensionPermissionSet( + return new PermissionSet( apis, explicit_hosts, scriptable_hosts, scopes); } void ExtensionPrefs::SetExtensionPrefPermissionSet( const std::string& extension_id, const std::string& pref_key, - const ExtensionPermissionSet* new_value) { + const PermissionSet* new_value) { // Set the API permissions. ListValue* api_values = new ListValue(); - ExtensionAPIPermissionSet apis = new_value->apis(); - ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); + APIPermissionSet apis = new_value->apis(); + PermissionsInfo* info = PermissionsInfo::GetInstance(); std::string api_pref = JoinPrefs(pref_key, kPrefAPIs); - for (ExtensionAPIPermissionSet::const_iterator i = apis.begin(); + for (APIPermissionSet::const_iterator i = apis.begin(); i != apis.end(); ++i) { - ExtensionAPIPermission* perm = info->GetByID(*i); + APIPermission* perm = info->GetByID(*i); if (perm) api_values->Append(Value::CreateStringValue(perm->name())); } @@ -550,10 +556,10 @@ void ExtensionPrefs::SetExtensionPrefPermissionSet( } // Set the oauth2 scopes. - ExtensionOAuth2Scopes scopes = new_value->scopes(); + OAuth2Scopes scopes = new_value->scopes(); if (!scopes.empty()) { ListValue* scope_values = new ListValue(); - for (ExtensionOAuth2Scopes::iterator i = scopes.begin(); + for (OAuth2Scopes::iterator i = scopes.begin(); i != scopes.end(); ++i) { scope_values->Append(Value::CreateStringValue(*i)); } @@ -853,7 +859,7 @@ void ExtensionPrefs::SetActiveBit(const std::string& extension_id, } void ExtensionPrefs::MigratePermissions(const ExtensionIdSet& extension_ids) { - ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); + PermissionsInfo* info = PermissionsInfo::GetInstance(); for (ExtensionIdSet::const_iterator ext_id = extension_ids.begin(); ext_id != extension_ids.end(); ++ext_id) { @@ -882,7 +888,7 @@ void ExtensionPrefs::MigratePermissions(const ExtensionIdSet& extension_ids) { new_apis = new ListValue(); std::string plugin_name = info->GetByID( - ExtensionAPIPermission::kPlugin)->name(); + APIPermission::kPlugin)->name(); new_apis->Append(Value::CreateStringValue(plugin_name)); UpdateExtensionPref(*ext_id, granted_apis, new_apis); } @@ -906,7 +912,7 @@ void ExtensionPrefs::MigratePermissions(const ExtensionIdSet& extension_ids) { } } -ExtensionPermissionSet* ExtensionPrefs::GetGrantedPermissions( +PermissionSet* ExtensionPrefs::GetGrantedPermissions( const std::string& extension_id) { CHECK(Extension::IdIsValid(extension_id)); return ReadExtensionPrefPermissionSet(extension_id, kPrefGrantedPermissions); @@ -914,23 +920,23 @@ ExtensionPermissionSet* ExtensionPrefs::GetGrantedPermissions( void ExtensionPrefs::AddGrantedPermissions( const std::string& extension_id, - const ExtensionPermissionSet* permissions) { + const PermissionSet* permissions) { CHECK(Extension::IdIsValid(extension_id)); - scoped_refptr<ExtensionPermissionSet> granted_permissions( + scoped_refptr<PermissionSet> granted_permissions( GetGrantedPermissions(extension_id)); // The new granted permissions are the union of the already granted // permissions and the newly granted permissions. - scoped_refptr<ExtensionPermissionSet> new_perms( - ExtensionPermissionSet::CreateUnion( + scoped_refptr<PermissionSet> new_perms( + PermissionSet::CreateUnion( permissions, granted_permissions.get())); SetExtensionPrefPermissionSet( extension_id, kPrefGrantedPermissions, new_perms.get()); } -ExtensionPermissionSet* ExtensionPrefs::GetActivePermissions( +PermissionSet* ExtensionPrefs::GetActivePermissions( const std::string& extension_id) { CHECK(Extension::IdIsValid(extension_id)); return ReadExtensionPrefPermissionSet(extension_id, kPrefActivePermissions); @@ -938,7 +944,7 @@ ExtensionPermissionSet* ExtensionPrefs::GetActivePermissions( void ExtensionPrefs::SetActivePermissions( const std::string& extension_id, - const ExtensionPermissionSet* permissions) { + const PermissionSet* permissions) { SetExtensionPrefPermissionSet( extension_id, kPrefActivePermissions, permissions); } diff --git a/chrome/browser/extensions/extension_prefs.h b/chrome/browser/extensions/extension_prefs.h index 429131a..f42c62c 100644 --- a/chrome/browser/extensions/extension_prefs.h +++ b/chrome/browser/extensions/extension_prefs.h @@ -251,24 +251,24 @@ class ExtensionPrefs : public extensions::ContentSettingsStore::Observer, // Returns the granted permission set for the extension with |extension_id|, // and NULL if no preferences were found for |extension_id|. // This passes ownership of the returned set to the caller. - ExtensionPermissionSet* GetGrantedPermissions( + extensions::PermissionSet* GetGrantedPermissions( const std::string& extension_id); // Adds |permissions| to the granted permissions set for the extension with // |extension_id|. The new granted permissions set will be the union of // |permissions| and the already granted permissions. void AddGrantedPermissions(const std::string& extension_id, - const ExtensionPermissionSet* permissions); + const extensions::PermissionSet* permissions); // Gets the active permission set for the specified extension. This may // differ from the permissions in the manifest due to the optional // permissions API. This passes ownership of the set to the caller. - ExtensionPermissionSet* GetActivePermissions( + extensions::PermissionSet* GetActivePermissions( const std::string& extension_id); // Sets the active |permissions| for the extension with |extension_id|. void SetActivePermissions(const std::string& extension_id, - const ExtensionPermissionSet* permissions); + const extensions::PermissionSet* permissions); // Returns the list of events that the given extension has registered for. std::set<std::string> GetRegisteredEvents(const std::string& extension_id); @@ -492,16 +492,17 @@ class ExtensionPrefs : public extensions::ContentSettingsStore::Observer, const URLPatternSet& new_value); // Interprets |pref_key| in |extension_id|'s preferences as an - // ExtensionPermissionSet, and passes ownership of the set to the caller. - ExtensionPermissionSet* ReadExtensionPrefPermissionSet( + // PermissionSet, and passes ownership of the set to the caller. + extensions::PermissionSet* ReadExtensionPrefPermissionSet( const std::string& extension_id, const std::string& pref_key); // Converts the |new_value| to its value and sets the |pref_key| pref // belonging to |extension_id|. - void SetExtensionPrefPermissionSet(const std::string& extension_id, - const std::string& pref_key, - const ExtensionPermissionSet* new_value); + void SetExtensionPrefPermissionSet( + const std::string& extension_id, + const std::string& pref_key, + const extensions::PermissionSet* new_value); // Returns a dictionary for extension |id|'s prefs or NULL if it doesn't // exist. diff --git a/chrome/browser/extensions/extension_prefs_unittest.cc b/chrome/browser/extensions/extension_prefs_unittest.cc index c71f4fb..37412b23c 100644 --- a/chrome/browser/extensions/extension_prefs_unittest.cc +++ b/chrome/browser/extensions/extension_prefs_unittest.cc @@ -16,7 +16,7 @@ #include "chrome/browser/prefs/scoped_user_pref_update.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/extensions/extension_manifest_constants.h" -#include "chrome/common/extensions/extension_permission_set.h" +#include "chrome/common/extensions/permissions/permission_set.h" #include "chrome/common/string_ordinal.h" #include "content/public/browser/notification_details.h" #include "content/public/browser/notification_source.h" @@ -25,8 +25,12 @@ using base::Time; using base::TimeDelta; using content::BrowserThread; +using extensions::APIPermission; +using extensions::APIPermissionSet; using extensions::Extension; using extensions::ExtensionList; +using extensions::OAuth2Scopes; +using extensions::PermissionSet; namespace { @@ -168,10 +172,10 @@ class ExtensionPrefsGrantedPermissions : public ExtensionPrefsTest { virtual void Initialize() { extension_id_ = prefs_.AddExtensionAndReturnId("test"); - api_perm_set1_.insert(ExtensionAPIPermission::kTab); - api_perm_set1_.insert(ExtensionAPIPermission::kBookmark); + api_perm_set1_.insert(APIPermission::kTab); + api_perm_set1_.insert(APIPermission::kBookmark); - api_perm_set2_.insert(ExtensionAPIPermission::kHistory); + api_perm_set2_.insert(APIPermission::kHistory); scopes_set1_.insert("scope1"); @@ -192,7 +196,7 @@ class ExtensionPrefsGrantedPermissions : public ExtensionPrefsTest { AddPattern(&shost_perm_set2_, "http://somesite.com/*"); AddPattern(&shost_perm_set2_, "http://example.com/*"); - ExtensionAPIPermissionSet expected_apis = api_perm_set1_; + APIPermissionSet expected_apis = api_perm_set1_; AddPattern(&ehost_permissions_, "http://*.google.com/*"); AddPattern(&ehost_permissions_, "http://example.com/*"); @@ -207,18 +211,18 @@ class ExtensionPrefsGrantedPermissions : public ExtensionPrefsTest { scope_permissions_.insert("scope2"); scope_permissions_.insert("scope3"); - ExtensionAPIPermissionSet empty_set; + APIPermissionSet empty_set; URLPatternSet empty_extent; - ExtensionOAuth2Scopes empty_scopes; - scoped_refptr<ExtensionPermissionSet> permissions; - scoped_refptr<ExtensionPermissionSet> granted_permissions; + OAuth2Scopes empty_scopes; + scoped_refptr<PermissionSet> permissions; + scoped_refptr<PermissionSet> granted_permissions; // Make sure both granted api and host permissions start empty. granted_permissions = prefs()->GetGrantedPermissions(extension_id_); EXPECT_TRUE(granted_permissions->IsEmpty()); - permissions = new ExtensionPermissionSet( + permissions = new PermissionSet( api_perm_set1_, empty_extent, empty_extent); // Add part of the api permissions. @@ -233,7 +237,7 @@ class ExtensionPrefsGrantedPermissions : public ExtensionPrefsTest { granted_permissions = NULL; // Add part of the explicit host permissions. - permissions = new ExtensionPermissionSet( + permissions = new PermissionSet( empty_set, ehost_perm_set1_, empty_extent); prefs()->AddGrantedPermissions(extension_id_, permissions.get()); granted_permissions = prefs()->GetGrantedPermissions(extension_id_); @@ -247,7 +251,7 @@ class ExtensionPrefsGrantedPermissions : public ExtensionPrefsTest { EXPECT_EQ(empty_scopes, granted_permissions->scopes()); // Add part of the scriptable host permissions. - permissions = new ExtensionPermissionSet( + permissions = new PermissionSet( empty_set, empty_extent, shost_perm_set1_); prefs()->AddGrantedPermissions(extension_id_, permissions.get()); granted_permissions = prefs()->GetGrantedPermissions(extension_id_); @@ -265,7 +269,7 @@ class ExtensionPrefsGrantedPermissions : public ExtensionPrefsTest { EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts()); // Add part of the oauth2 scopes. - permissions = new ExtensionPermissionSet( + permissions = new PermissionSet( empty_set, empty_extent, empty_extent, scopes_set1_); prefs()->AddGrantedPermissions(extension_id_, permissions.get()); granted_permissions = prefs()->GetGrantedPermissions(extension_id_); @@ -279,7 +283,7 @@ class ExtensionPrefsGrantedPermissions : public ExtensionPrefsTest { EXPECT_EQ(scopes_set1_, granted_permissions->scopes()); // Add the rest of the permissions. - permissions = new ExtensionPermissionSet( + permissions = new PermissionSet( api_perm_set2_, ehost_perm_set2_, shost_perm_set2_, scopes_set2_); std::set_union(expected_apis.begin(), expected_apis.end(), @@ -303,7 +307,7 @@ class ExtensionPrefsGrantedPermissions : public ExtensionPrefsTest { } virtual void Verify() { - scoped_refptr<ExtensionPermissionSet> permissions( + scoped_refptr<PermissionSet> permissions( prefs()->GetGrantedPermissions(extension_id_)); EXPECT_TRUE(permissions.get()); EXPECT_FALSE(permissions->HasEffectiveFullAccess()); @@ -318,19 +322,19 @@ class ExtensionPrefsGrantedPermissions : public ExtensionPrefsTest { private: std::string extension_id_; - ExtensionAPIPermissionSet api_perm_set1_; - ExtensionAPIPermissionSet api_perm_set2_; + APIPermissionSet api_perm_set1_; + APIPermissionSet api_perm_set2_; URLPatternSet ehost_perm_set1_; URLPatternSet ehost_perm_set2_; URLPatternSet shost_perm_set1_; URLPatternSet shost_perm_set2_; - ExtensionOAuth2Scopes scopes_set1_; - ExtensionOAuth2Scopes scopes_set2_; + OAuth2Scopes scopes_set1_; + OAuth2Scopes scopes_set2_; - ExtensionAPIPermissionSet api_permissions_; + APIPermissionSet api_permissions_; URLPatternSet ehost_permissions_; URLPatternSet shost_permissions_; - ExtensionOAuth2Scopes scope_permissions_; + OAuth2Scopes scope_permissions_; URLPatternSet effective_permissions_; }; TEST_F(ExtensionPrefsGrantedPermissions, GrantedPermissions) {} @@ -341,10 +345,10 @@ class ExtensionPrefsActivePermissions : public ExtensionPrefsTest { virtual void Initialize() { extension_id_ = prefs_.AddExtensionAndReturnId("test"); - ExtensionAPIPermissionSet api_perms; - api_perms.insert(ExtensionAPIPermission::kTab); - api_perms.insert(ExtensionAPIPermission::kBookmark); - api_perms.insert(ExtensionAPIPermission::kHistory); + APIPermissionSet api_perms; + api_perms.insert(APIPermission::kTab); + api_perms.insert(APIPermission::kBookmark); + api_perms.insert(APIPermission::kHistory); URLPatternSet ehosts; AddPattern(&ehosts, "http://*.google.com/*"); @@ -355,14 +359,14 @@ class ExtensionPrefsActivePermissions : public ExtensionPrefsTest { AddPattern(&shosts, "https://*.google.com/*"); AddPattern(&shosts, "http://reddit.com/r/test/*"); - ExtensionOAuth2Scopes scopes; + OAuth2Scopes scopes; scopes.insert("my-new-scope"); - active_perms_ = new ExtensionPermissionSet( + active_perms_ = new PermissionSet( api_perms, ehosts, shosts, scopes); // Make sure the active permissions start empty. - scoped_refptr<ExtensionPermissionSet> active( + scoped_refptr<PermissionSet> active( prefs()->GetActivePermissions(extension_id_)); EXPECT_TRUE(active->IsEmpty()); @@ -377,14 +381,14 @@ class ExtensionPrefsActivePermissions : public ExtensionPrefsTest { } virtual void Verify() { - scoped_refptr<ExtensionPermissionSet> permissions( + scoped_refptr<PermissionSet> permissions( prefs()->GetActivePermissions(extension_id_)); EXPECT_EQ(*active_perms_, *permissions); } private: std::string extension_id_; - scoped_refptr<ExtensionPermissionSet> active_perms_; + scoped_refptr<PermissionSet> active_perms_; }; TEST_F(ExtensionPrefsActivePermissions, SetAndGetActivePermissions) {} diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc index ce70648..751325b 100644 --- a/chrome/browser/extensions/extension_service.cc +++ b/chrome/browser/extensions/extension_service.cc @@ -134,6 +134,9 @@ using extensions::Extension; using extensions::ExtensionIdSet; using extensions::ExtensionInfo; using extensions::UnloadedExtensionInfo; +using extensions::PermissionMessage; +using extensions::PermissionMessages; +using extensions::PermissionSet; namespace errors = extension_manifest_errors; @@ -903,15 +906,15 @@ void ExtensionService::RecordPermissionMessagesHistogram( base::Histogram* counter = base::LinearHistogram::FactoryGet( histogram, 1, - ExtensionPermissionMessage::kEnumBoundary, - ExtensionPermissionMessage::kEnumBoundary + 1, + PermissionMessage::kEnumBoundary, + PermissionMessage::kEnumBoundary + 1, base::Histogram::kUmaTargetedHistogramFlag); - ExtensionPermissionMessages permissions = e->GetPermissionMessages(); + PermissionMessages permissions = e->GetPermissionMessages(); if (permissions.empty()) { - counter->Add(ExtensionPermissionMessage::kNone); + counter->Add(PermissionMessage::kNone); } else { - for (ExtensionPermissionMessages::iterator it = permissions.begin(); + for (PermissionMessages::iterator it = permissions.begin(); it != permissions.end(); ++it) counter->Add(it->id()); } @@ -1957,7 +1960,7 @@ void ExtensionService::InitializePermissions(const Extension* extension) { // If the extension has used the optional permissions API, it will have a // custom set of active permissions defined in the extension prefs. Here, // we update the extension's active permissions based on the prefs. - scoped_refptr<ExtensionPermissionSet> active_permissions = + scoped_refptr<PermissionSet> active_permissions = extension_prefs()->GetActivePermissions(extension->id()); if (active_permissions.get()) { @@ -1965,18 +1968,18 @@ void ExtensionService::InitializePermissions(const Extension* extension) { // extension's manifest. // a) active permissions must be a subset of optional + default permissions // b) active permissions must contains all default permissions - scoped_refptr<ExtensionPermissionSet> total_permissions = - ExtensionPermissionSet::CreateUnion( + scoped_refptr<PermissionSet> total_permissions = + PermissionSet::CreateUnion( extension->required_permission_set(), extension->optional_permission_set()); // Make sure the active permissions contain no more than optional + default. - scoped_refptr<ExtensionPermissionSet> adjusted_active = - ExtensionPermissionSet::CreateIntersection( + scoped_refptr<PermissionSet> adjusted_active = + PermissionSet::CreateIntersection( total_permissions.get(), active_permissions.get()); // Make sure the active permissions contain the default permissions. - adjusted_active = ExtensionPermissionSet::CreateUnion( + adjusted_active = PermissionSet::CreateUnion( extension->required_permission_set(), adjusted_active.get()); extensions::PermissionsUpdater perms_updater(profile()); @@ -2017,7 +2020,7 @@ void ExtensionService::InitializePermissions(const Extension* extension) { if (!extension->CanSilentlyIncreasePermissions()) { // Add all the recognized permissions if the granted permissions list // hasn't been initialized yet. - scoped_refptr<ExtensionPermissionSet> granted_permissions = + scoped_refptr<PermissionSet> granted_permissions = extension_prefs_->GetGrantedPermissions(extension->id()); CHECK(granted_permissions.get()); diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc index ae998a2..bbf5124 100644 --- a/chrome/browser/extensions/extension_service_unittest.cc +++ b/chrome/browser/extensions/extension_service_unittest.cc @@ -96,7 +96,10 @@ using content::BrowserThread; using content::DOMStorageContext; using content::IndexedDBContext; using content::PluginService; +using extensions::APIPermission; +using extensions::APIPermissionSet; using extensions::Extension; +using extensions::PermissionSet; namespace keys = extension_manifest_keys; @@ -1466,12 +1469,12 @@ TEST_F(ExtensionServiceTest, GrantedPermissions) { ExtensionPrefs* prefs = service_->extension_prefs(); - ExtensionAPIPermissionSet expected_api_perms; + APIPermissionSet expected_api_perms; URLPatternSet expected_host_perms; // Make sure there aren't any granted permissions before the // extension is installed. - scoped_refptr<ExtensionPermissionSet> known_perms( + scoped_refptr<PermissionSet> known_perms( prefs->GetGrantedPermissions(permissions_crx)); EXPECT_FALSE(known_perms.get()); @@ -1482,7 +1485,7 @@ TEST_F(ExtensionServiceTest, GrantedPermissions) { EXPECT_EQ(permissions_crx, extension->id()); // Verify that the valid API permissions have been recognized. - expected_api_perms.insert(ExtensionAPIPermission::kTab); + expected_api_perms.insert(APIPermission::kTab); AddPattern(&expected_host_perms, "http://*.google.com/*"); AddPattern(&expected_host_perms, "https://*.google.com/*"); @@ -1518,12 +1521,12 @@ TEST_F(ExtensionServiceTest, GrantedFullAccessPermissions) { EXPECT_EQ(1u, service_->extensions()->size()); ExtensionPrefs* prefs = service_->extension_prefs(); - scoped_refptr<ExtensionPermissionSet> permissions( + scoped_refptr<PermissionSet> permissions( prefs->GetGrantedPermissions(extension->id())); EXPECT_FALSE(permissions->IsEmpty()); EXPECT_TRUE(permissions->HasEffectiveFullAccess()); EXPECT_FALSE(permissions->apis().empty()); - EXPECT_TRUE(permissions->HasAPIPermission(ExtensionAPIPermission::kPlugin)); + EXPECT_TRUE(permissions->HasAPIPermission(APIPermission::kPlugin)); // Full access implies full host access too... EXPECT_TRUE(permissions->HasEffectiveAccessToAllHosts()); @@ -1550,10 +1553,10 @@ TEST_F(ExtensionServiceTest, GrantedAPIAndHostPermissions) { ExtensionPrefs* prefs = service_->extension_prefs(); - ExtensionAPIPermissionSet expected_api_permissions; + APIPermissionSet expected_api_permissions; URLPatternSet expected_host_permissions; - expected_api_permissions.insert(ExtensionAPIPermission::kTab); + expected_api_permissions.insert(APIPermission::kTab); AddPattern(&expected_host_permissions, "http://*.google.com/*"); AddPattern(&expected_host_permissions, "https://*.google.com/*"); AddPattern(&expected_host_permissions, "http://*.google.com.hk/*"); @@ -1582,7 +1585,7 @@ TEST_F(ExtensionServiceTest, GrantedAPIAndHostPermissions) { ASSERT_TRUE(service_->IsExtensionEnabled(extension_id)); ASSERT_FALSE(prefs->DidExtensionEscalatePermissions(extension_id)); - scoped_refptr<ExtensionPermissionSet> current_perms( + scoped_refptr<PermissionSet> current_perms( prefs->GetGrantedPermissions(extension_id)); ASSERT_TRUE(current_perms.get()); ASSERT_FALSE(current_perms->IsEmpty()); @@ -1603,7 +1606,7 @@ TEST_F(ExtensionServiceTest, GrantedAPIAndHostPermissions) { ListValue* api_permissions = new ListValue(); api_permissions->Append( - Value::CreateIntegerValue(ExtensionAPIPermission::kTab)); + Value::CreateIntegerValue(APIPermission::kTab)); SetPref(extension_id, "granted_permissions.api", api_permissions, "granted_permissions.api"); SetPrefStringSet( @@ -2086,7 +2089,7 @@ TEST_F(ExtensionServiceTest, InstallAppsWithUnlimitedStorage) { ASSERT_EQ(1u, service_->extensions()->size()); const std::string id1 = extension->id(); EXPECT_TRUE(extension->HasAPIPermission( - ExtensionAPIPermission::kUnlimitedStorage)); + APIPermission::kUnlimitedStorage)); EXPECT_TRUE(extension->web_extent().MatchesURL( extension->GetFullLaunchURL())); const GURL origin1(extension->GetFullLaunchURL().GetOrigin()); @@ -2099,7 +2102,7 @@ TEST_F(ExtensionServiceTest, InstallAppsWithUnlimitedStorage) { ASSERT_EQ(2u, service_->extensions()->size()); const std::string id2 = extension->id(); EXPECT_TRUE(extension->HasAPIPermission( - ExtensionAPIPermission::kUnlimitedStorage)); + APIPermission::kUnlimitedStorage)); EXPECT_TRUE(extension->web_extent().MatchesURL( extension->GetFullLaunchURL())); const GURL origin2(extension->GetFullLaunchURL().GetOrigin()); @@ -2456,12 +2459,12 @@ TEST_F(ExtensionServiceTest, LoadExtensionsWithPlugins) { EXPECT_TRUE(service_->extensions()->Contains(good2)); // Make sure the granted permissions have been setup. - scoped_refptr<ExtensionPermissionSet> permissions( + scoped_refptr<PermissionSet> permissions( service_->extension_prefs()->GetGrantedPermissions(good1)); EXPECT_FALSE(permissions->IsEmpty()); EXPECT_TRUE(permissions->HasEffectiveFullAccess()); EXPECT_FALSE(permissions->apis().empty()); - EXPECT_TRUE(permissions->HasAPIPermission(ExtensionAPIPermission::kPlugin)); + EXPECT_TRUE(permissions->HasAPIPermission(APIPermission::kPlugin)); // We should be able to reload the extension without getting another prompt. loaded_.clear(); @@ -3380,7 +3383,7 @@ TEST_F(ExtensionServiceTest, ClearAppData) { ASSERT_EQ(1u, service_->extensions()->size()); const std::string id1 = extension->id(); EXPECT_TRUE(extension->HasAPIPermission( - ExtensionAPIPermission::kUnlimitedStorage)); + APIPermission::kUnlimitedStorage)); const GURL origin1(extension->GetFullLaunchURL().GetOrigin()); EXPECT_TRUE(profile_->GetExtensionSpecialStoragePolicy()-> IsStorageUnlimited(origin1)); @@ -3393,7 +3396,7 @@ TEST_F(ExtensionServiceTest, ClearAppData) { ASSERT_EQ(2u, service_->extensions()->size()); const std::string id2 = extension->id(); EXPECT_TRUE(extension->HasAPIPermission( - ExtensionAPIPermission::kUnlimitedStorage)); + APIPermission::kUnlimitedStorage)); EXPECT_TRUE(extension->web_extent().MatchesURL( extension->GetFullLaunchURL())); const GURL origin2(extension->GetFullLaunchURL().GetOrigin()); diff --git a/chrome/browser/extensions/extension_special_storage_policy.cc b/chrome/browser/extensions/extension_special_storage_policy.cc index 1fa3a02..8d85eea 100644 --- a/chrome/browser/extensions/extension_special_storage_policy.cc +++ b/chrome/browser/extensions/extension_special_storage_policy.cc @@ -14,6 +14,7 @@ #include "content/public/browser/browser_thread.h" using content::BrowserThread; +using extensions::APIPermission; ExtensionSpecialStoragePolicy::ExtensionSpecialStoragePolicy( CookieSettings* cookie_settings) @@ -70,19 +71,19 @@ void ExtensionSpecialStoragePolicy::GrantRightsForExtension( DCHECK(extension); if (!extension->is_hosted_app() && !extension->HasAPIPermission( - ExtensionAPIPermission::kUnlimitedStorage) && + APIPermission::kUnlimitedStorage) && !extension->HasAPIPermission( - ExtensionAPIPermission::kFileBrowserHandler)) { + APIPermission::kFileBrowserHandler)) { return; } { base::AutoLock locker(lock_); if (NeedsProtection(extension)) protected_apps_.Add(extension); - if (extension->HasAPIPermission(ExtensionAPIPermission::kUnlimitedStorage)) + if (extension->HasAPIPermission(APIPermission::kUnlimitedStorage)) unlimited_extensions_.Add(extension); if (extension->HasAPIPermission( - ExtensionAPIPermission::kFileBrowserHandler)) { + APIPermission::kFileBrowserHandler)) { file_handler_extensions_.Add(extension); } } @@ -94,19 +95,19 @@ void ExtensionSpecialStoragePolicy::RevokeRightsForExtension( DCHECK(extension); if (!extension->is_hosted_app() && !extension->HasAPIPermission( - ExtensionAPIPermission::kUnlimitedStorage) && + APIPermission::kUnlimitedStorage) && !extension->HasAPIPermission( - ExtensionAPIPermission::kFileBrowserHandler)) { + APIPermission::kFileBrowserHandler)) { return; } { base::AutoLock locker(lock_); if (extension->is_hosted_app() && !extension->from_bookmark()) protected_apps_.Remove(extension); - if (extension->HasAPIPermission(ExtensionAPIPermission::kUnlimitedStorage)) + if (extension->HasAPIPermission(APIPermission::kUnlimitedStorage)) unlimited_extensions_.Remove(extension); if (extension->HasAPIPermission( - ExtensionAPIPermission::kFileBrowserHandler)) { + APIPermission::kFileBrowserHandler)) { file_handler_extensions_.Remove(extension); } } diff --git a/chrome/browser/extensions/extension_tab_helper.cc b/chrome/browser/extensions/extension_tab_helper.cc index beac878..3195913 100644 --- a/chrome/browser/extensions/extension_tab_helper.cc +++ b/chrome/browser/extensions/extension_tab_helper.cc @@ -232,7 +232,7 @@ void ExtensionTabHelper::OnGetAppNotifyChannel( std::string error; if (!extension || !extension->HasAPIPermission( - ExtensionAPIPermission::kAppNotifications) || + extensions::APIPermission::kAppNotifications) || !process_map->Contains(extension->id(), process->GetID())) error = kPermissionError; diff --git a/chrome/browser/extensions/permissions_updater.cc b/chrome/browser/extensions/permissions_updater.cc index de08784..94defaf 100644 --- a/chrome/browser/extensions/permissions_updater.cc +++ b/chrome/browser/extensions/permissions_updater.cc @@ -16,7 +16,6 @@ #include "chrome/common/chrome_notification_types.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_messages.h" -#include "chrome/common/extensions/extension_permission_set.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/render_process_host.h" @@ -38,13 +37,13 @@ PermissionsUpdater::PermissionsUpdater(Profile* profile) PermissionsUpdater::~PermissionsUpdater() {} void PermissionsUpdater::AddPermissions( - const Extension* extension, const ExtensionPermissionSet* permissions) { - scoped_refptr<const ExtensionPermissionSet> existing( + const Extension* extension, const PermissionSet* permissions) { + scoped_refptr<const PermissionSet> existing( extension->GetActivePermissions()); - scoped_refptr<ExtensionPermissionSet> total( - ExtensionPermissionSet::CreateUnion(existing, permissions)); - scoped_refptr<ExtensionPermissionSet> added( - ExtensionPermissionSet::CreateDifference(total.get(), existing)); + scoped_refptr<PermissionSet> total( + PermissionSet::CreateUnion(existing, permissions)); + scoped_refptr<PermissionSet> added( + PermissionSet::CreateDifference(total.get(), existing)); UpdateActivePermissions(extension, total.get()); @@ -55,13 +54,13 @@ void PermissionsUpdater::AddPermissions( } void PermissionsUpdater::RemovePermissions( - const Extension* extension, const ExtensionPermissionSet* permissions) { - scoped_refptr<const ExtensionPermissionSet> existing( + const Extension* extension, const PermissionSet* permissions) { + scoped_refptr<const PermissionSet> existing( extension->GetActivePermissions()); - scoped_refptr<ExtensionPermissionSet> total( - ExtensionPermissionSet::CreateDifference(existing, permissions)); - scoped_refptr<ExtensionPermissionSet> removed( - ExtensionPermissionSet::CreateDifference(existing, total.get())); + scoped_refptr<PermissionSet> total( + PermissionSet::CreateDifference(existing, permissions)); + scoped_refptr<PermissionSet> removed( + PermissionSet::CreateDifference(existing, total.get())); // We update the active permissions, and not the granted permissions, because // the extension, not the user, removed the permissions. This allows the @@ -85,7 +84,7 @@ void PermissionsUpdater::GrantActivePermissions(const Extension* extension) { } void PermissionsUpdater::UpdateActivePermissions( - const Extension* extension, const ExtensionPermissionSet* permissions) { + const Extension* extension, const PermissionSet* permissions) { GetExtensionPrefs()->SetActivePermissions(extension->id(), permissions); extension->SetActivePermissions(permissions); } @@ -93,7 +92,7 @@ void PermissionsUpdater::UpdateActivePermissions( void PermissionsUpdater::DispatchEvent( const std::string& extension_id, const char* event_name, - const ExtensionPermissionSet* changed_permissions) { + const PermissionSet* changed_permissions) { if (!profile_ || !profile_->GetExtensionEventRouter()) return; @@ -110,7 +109,7 @@ void PermissionsUpdater::DispatchEvent( void PermissionsUpdater::NotifyPermissionsUpdated( EventType event_type, const Extension* extension, - const ExtensionPermissionSet* changed) { + const PermissionSet* changed) { if (!changed || changed->IsEmpty()) return; diff --git a/chrome/browser/extensions/permissions_updater.h b/chrome/browser/extensions/permissions_updater.h index 863e620..ed666ff 100644 --- a/chrome/browser/extensions/permissions_updater.h +++ b/chrome/browser/extensions/permissions_updater.h @@ -10,7 +10,6 @@ #include "base/memory/ref_counted.h" -class ExtensionPermissionSet; class ExtensionPrefs; class Profile; @@ -21,6 +20,7 @@ class DictionaryValue; namespace extensions { class Extension; +class PermissionSet; // Updates an Extension's active and granted permissions in persistent storage // and notifies interested parties of the changes. @@ -33,12 +33,12 @@ class PermissionsUpdater { // and sends the relevant messages and notifications. This method assumes the // user has already been prompted, if necessary, for the extra permissions. void AddPermissions(const Extension* extension, - const ExtensionPermissionSet* permissions); + const PermissionSet* permissions); // Removes the set of |permissions| from the |extension|'s active permission // set and sends the relevant messages and notifications. void RemovePermissions(const Extension* extension, - const ExtensionPermissionSet* permissions); + const PermissionSet* permissions); // Adds all permissions in the |extension|'s active permissions to its // granted permission set. @@ -46,7 +46,7 @@ class PermissionsUpdater { // Sets the |extension|'s active permissions to |permissions|. void UpdateActivePermissions(const Extension* extension, - const ExtensionPermissionSet* permissions); + const PermissionSet* permissions); private: enum EventType { @@ -57,7 +57,7 @@ class PermissionsUpdater { // Dispatches specified event to the extension. void DispatchEvent(const std::string& extension_id, const char* event_name, - const ExtensionPermissionSet* changed_permissions); + const PermissionSet* changed_permissions); // Issues the relevant events, messages and notifications when the // |extension|'s permissions have |changed| (|changed| is the delta). @@ -66,7 +66,7 @@ class PermissionsUpdater { // onAdded/onRemoved events in the extension. void NotifyPermissionsUpdated(EventType event_type, const Extension* extension, - const ExtensionPermissionSet* changed); + const PermissionSet* changed); // Gets the ExtensionPrefs for the associated profile. ExtensionPrefs* GetExtensionPrefs(); diff --git a/chrome/browser/extensions/permissions_updater_unittest.cc b/chrome/browser/extensions/permissions_updater_unittest.cc index 36226f8..4910dc3 100644 --- a/chrome/browser/extensions/permissions_updater_unittest.cc +++ b/chrome/browser/extensions/permissions_updater_unittest.cc @@ -13,7 +13,7 @@ #include "chrome/common/chrome_notification_types.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/extensions/extension.h" -#include "chrome/common/extensions/extension_permission_set.h" +#include "chrome/common/extensions/permissions/permission_set.h" #include "chrome/test/base/testing_profile.h" #include "chrome/test/base/ui_test_utils.h" #include "content/public/browser/notification_observer.h" @@ -52,7 +52,7 @@ class PermissionsUpdaterListener : public content::NotificationObserver { bool received_notification() const { return received_notification_; } const Extension* extension() const { return extension_; } - const ExtensionPermissionSet* permissions() const { return permissions_; } + const PermissionSet* permissions() const { return permissions_; } UpdatedExtensionPermissionsInfo::Reason reason() const { return reason_; } @@ -79,7 +79,7 @@ class PermissionsUpdaterListener : public content::NotificationObserver { bool waiting_; content::NotificationRegistrar registrar_; scoped_refptr<const Extension> extension_; - scoped_refptr<const ExtensionPermissionSet> permissions_; + scoped_refptr<const PermissionSet> permissions_; UpdatedExtensionPermissionsInfo::Reason reason_; }; @@ -125,27 +125,27 @@ TEST_F(PermissionsUpdaterTest, AddAndRemovePermissions) { scoped_refptr<Extension> extension = LoadManifest(&error); ASSERT_TRUE(error.empty()) << error; - ExtensionAPIPermissionSet default_apis; - default_apis.insert(ExtensionAPIPermission::kManagement); + APIPermissionSet default_apis; + default_apis.insert(APIPermission::kManagement); URLPatternSet default_hosts; AddPattern(&default_hosts, "http://a.com/*"); - scoped_refptr<ExtensionPermissionSet> default_permissions = - new ExtensionPermissionSet(default_apis, default_hosts, URLPatternSet()); + scoped_refptr<PermissionSet> default_permissions = + new PermissionSet(default_apis, default_hosts, URLPatternSet()); // Make sure it loaded properly. - scoped_refptr<const ExtensionPermissionSet> permissions = + scoped_refptr<const PermissionSet> permissions = extension->GetActivePermissions(); ASSERT_EQ(*default_permissions, *extension->GetActivePermissions()); // Add a few permissions. - ExtensionAPIPermissionSet apis; - apis.insert(ExtensionAPIPermission::kTab); - apis.insert(ExtensionAPIPermission::kNotification); + APIPermissionSet apis; + apis.insert(APIPermission::kTab); + apis.insert(APIPermission::kNotification); URLPatternSet hosts; AddPattern(&hosts, "http://*.c.com/*"); - scoped_refptr<ExtensionPermissionSet> delta = - new ExtensionPermissionSet(apis, hosts, URLPatternSet()); + scoped_refptr<PermissionSet> delta = + new PermissionSet(apis, hosts, URLPatternSet()); PermissionsUpdaterListener listener; PermissionsUpdater updater(profile_.get()); @@ -160,18 +160,18 @@ TEST_F(PermissionsUpdaterTest, AddAndRemovePermissions) { ASSERT_EQ(*delta, *listener.permissions()); // Make sure the extension's active permissions reflect the change. - scoped_refptr<ExtensionPermissionSet> active_permissions = - ExtensionPermissionSet::CreateUnion(default_permissions, delta); + scoped_refptr<PermissionSet> active_permissions = + PermissionSet::CreateUnion(default_permissions, delta); ASSERT_EQ(*active_permissions, *extension->GetActivePermissions()); // Verify that the new granted and active permissions were also stored // in the extension preferences. In this case, the granted permissions should // be equal to the active permissions. ExtensionPrefs* prefs = service_->extension_prefs(); - scoped_refptr<ExtensionPermissionSet> granted_permissions = + scoped_refptr<PermissionSet> granted_permissions = active_permissions; - scoped_refptr<ExtensionPermissionSet> from_prefs = + scoped_refptr<PermissionSet> from_prefs = prefs->GetActivePermissions(extension->id()); ASSERT_EQ(*active_permissions, *from_prefs); @@ -180,8 +180,8 @@ TEST_F(PermissionsUpdaterTest, AddAndRemovePermissions) { // In the second part of the test, we'll remove the permissions that we // just added except for 'notification'. - apis.erase(ExtensionAPIPermission::kNotification); - delta = new ExtensionPermissionSet(apis, hosts, URLPatternSet()); + apis.erase(APIPermission::kNotification); + delta = new PermissionSet(apis, hosts, URLPatternSet()); listener.Reset(); updater.RemovePermissions(extension, delta); @@ -195,7 +195,7 @@ TEST_F(PermissionsUpdaterTest, AddAndRemovePermissions) { // Make sure the extension's active permissions reflect the change. active_permissions = - ExtensionPermissionSet::CreateDifference(active_permissions, delta); + PermissionSet::CreateDifference(active_permissions, delta); ASSERT_EQ(*active_permissions, *extension->GetActivePermissions()); // Verify that the extension prefs hold the new active permissions and the diff --git a/chrome/browser/extensions/settings/settings_frontend.cc b/chrome/browser/extensions/settings/settings_frontend.cc index a97845a..a56ec57 100644 --- a/chrome/browser/extensions/settings/settings_frontend.cc +++ b/chrome/browser/extensions/settings/settings_frontend.cc @@ -303,7 +303,7 @@ void SettingsFrontend::RunWithStorage( // storage is allowed to be unlimited). bool is_unlimited = settings_namespace == settings_namespace::LOCAL && - extension->HasAPIPermission(ExtensionAPIPermission::kUnlimitedStorage); + extension->HasAPIPermission(APIPermission::kUnlimitedStorage); scoped_refptr<BackendWrapper> backend; if (extension->is_app()) { |