diff options
Diffstat (limited to 'extensions')
-rw-r--r-- | extensions/browser/api/socket/socket_api.cc | 28 | ||||
-rw-r--r-- | extensions/browser/api/usb/usb_api.cc | 12 | ||||
-rw-r--r-- | extensions/common/extension.cc | 6 | ||||
-rw-r--r-- | extensions/common/extension_messages.cc | 5 | ||||
-rw-r--r-- | extensions/common/features/permission_feature.cc | 3 | ||||
-rw-r--r-- | extensions/common/permissions/permissions_data.cc | 8 | ||||
-rw-r--r-- | extensions/common/permissions/permissions_data.h | 3 | ||||
-rw-r--r-- | extensions/common/permissions/permissions_data_unittest.cc | 143 | ||||
-rw-r--r-- | extensions/renderer/dispatcher.cc | 4 | ||||
-rw-r--r-- | extensions/renderer/script_injection.cc | 22 | ||||
-rw-r--r-- | extensions/renderer/user_script_scheduler.cc | 16 |
11 files changed, 101 insertions, 149 deletions
diff --git a/extensions/browser/api/socket/socket_api.cc b/extensions/browser/api/socket/socket_api.cc index 62d7718..3225827 100644 --- a/extensions/browser/api/socket/socket_api.cc +++ b/extensions/browser/api/socket/socket_api.cc @@ -210,8 +210,8 @@ void SocketConnectFunction::AsyncWorkStart() { } SocketPermission::CheckParam param(operation_type, hostname_, port_); - if (!PermissionsData::ForExtension(GetExtension()) - ->CheckAPIPermissionWithParam(APIPermission::kSocket, ¶m)) { + if (!GetExtension()->permissions_data()->CheckAPIPermissionWithParam( + APIPermission::kSocket, ¶m)) { error_ = kPermissionError; SetResult(new base::FundamentalValue(-1)); AsyncWorkCompleted(); @@ -275,8 +275,8 @@ void SocketBindFunction::Work() { if (socket->GetSocketType() == Socket::TYPE_UDP) { SocketPermission::CheckParam param( SocketPermissionRequest::UDP_BIND, address_, port_); - if (!PermissionsData::ForExtension(GetExtension()) - ->CheckAPIPermissionWithParam(APIPermission::kSocket, ¶m)) { + if (!GetExtension()->permissions_data()->CheckAPIPermissionWithParam( + APIPermission::kSocket, ¶m)) { error_ = kPermissionError; SetResult(new base::FundamentalValue(result)); return; @@ -308,8 +308,8 @@ void SocketListenFunction::Work() { if (socket) { SocketPermission::CheckParam param( SocketPermissionRequest::TCP_LISTEN, params_->address, params_->port); - if (!PermissionsData::ForExtension(GetExtension()) - ->CheckAPIPermissionWithParam(APIPermission::kSocket, ¶m)) { + if (!GetExtension()->permissions_data()->CheckAPIPermissionWithParam( + APIPermission::kSocket, ¶m)) { error_ = kPermissionError; SetResult(new base::FundamentalValue(result)); return; @@ -510,8 +510,8 @@ void SocketSendToFunction::AsyncWorkStart() { if (socket_->GetSocketType() == Socket::TYPE_UDP) { SocketPermission::CheckParam param( SocketPermissionRequest::UDP_SEND_TO, hostname_, port_); - if (!PermissionsData::ForExtension(GetExtension()) - ->CheckAPIPermissionWithParam(APIPermission::kSocket, ¶m)) { + if (!GetExtension()->permissions_data()->CheckAPIPermissionWithParam( + APIPermission::kSocket, ¶m)) { error_ = kPermissionError; SetResult(new base::FundamentalValue(-1)); AsyncWorkCompleted(); @@ -724,8 +724,8 @@ void SocketJoinGroupFunction::Work() { kWildcardAddress, kWildcardPort); - if (!PermissionsData::ForExtension(GetExtension()) - ->CheckAPIPermissionWithParam(APIPermission::kSocket, ¶m)) { + if (!GetExtension()->permissions_data()->CheckAPIPermissionWithParam( + APIPermission::kSocket, ¶m)) { error_ = kPermissionError; SetResult(new base::FundamentalValue(result)); return; @@ -768,8 +768,8 @@ void SocketLeaveGroupFunction::Work() { SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP, kWildcardAddress, kWildcardPort); - if (!PermissionsData::ForExtension(GetExtension()) - ->CheckAPIPermissionWithParam(APIPermission::kSocket, ¶m)) { + if (!GetExtension()->permissions_data()->CheckAPIPermissionWithParam( + APIPermission::kSocket, ¶m)) { error_ = kPermissionError; SetResult(new base::FundamentalValue(result)); return; @@ -875,8 +875,8 @@ void SocketGetJoinedGroupsFunction::Work() { SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP, kWildcardAddress, kWildcardPort); - if (!PermissionsData::ForExtension(GetExtension()) - ->CheckAPIPermissionWithParam(APIPermission::kSocket, ¶m)) { + if (!GetExtension()->permissions_data()->CheckAPIPermissionWithParam( + APIPermission::kSocket, ¶m)) { error_ = kPermissionError; SetResult(new base::FundamentalValue(result)); return; diff --git a/extensions/browser/api/usb/usb_api.cc b/extensions/browser/api/usb/usb_api.cc index 8bf2779..b888a2b 100644 --- a/extensions/browser/api/usb/usb_api.cc +++ b/extensions/browser/api/usb/usb_api.cc @@ -422,8 +422,8 @@ scoped_refptr<UsbDevice> UsbAsyncApiFunction::GetDeviceOrOrCompleteWithError( const uint16_t product_id = input_device.product_id; UsbDevicePermission::CheckParam param( vendor_id, product_id, UsbDevicePermissionData::UNSPECIFIED_INTERFACE); - if (!PermissionsData::ForExtension(GetExtension()) - ->CheckAPIPermissionWithParam(APIPermission::kUsbDevice, ¶m)) { + if (!GetExtension()->permissions_data()->CheckAPIPermissionWithParam( + APIPermission::kUsbDevice, ¶m)) { LOG(WARNING) << "Insufficient permissions to access device."; CompleteWithError(kErrorPermissionDenied); return NULL; @@ -553,8 +553,8 @@ void UsbFindDevicesFunction::AsyncWorkStart() { ? *parameters_->options.interface_id.get() : UsbDevicePermissionData::ANY_INTERFACE; UsbDevicePermission::CheckParam param(vendor_id, product_id, interface_id); - if (!PermissionsData::ForExtension(GetExtension()) - ->CheckAPIPermissionWithParam(APIPermission::kUsbDevice, ¶m)) { + if (!GetExtension()->permissions_data()->CheckAPIPermissionWithParam( + APIPermission::kUsbDevice, ¶m)) { LOG(WARNING) << "Insufficient permissions to access device."; CompleteWithError(kErrorPermissionDenied); return; @@ -629,8 +629,8 @@ void UsbGetDevicesFunction::AsyncWorkStart() { const uint16_t product_id = parameters_->options.product_id; UsbDevicePermission::CheckParam param( vendor_id, product_id, UsbDevicePermissionData::UNSPECIFIED_INTERFACE); - if (!PermissionsData::ForExtension(GetExtension()) - ->CheckAPIPermissionWithParam(APIPermission::kUsbDevice, ¶m)) { + if (!GetExtension()->permissions_data()->CheckAPIPermissionWithParam( + APIPermission::kUsbDevice, ¶m)) { LOG(WARNING) << "Insufficient permissions to access device."; CompleteWithError(kErrorPermissionDenied); return; diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc index 91e6f2e..9179d46 100644 --- a/extensions/common/extension.cc +++ b/extensions/common/extension.cc @@ -288,15 +288,15 @@ GURL Extension::GetBaseURLFromExtensionId(const std::string& extension_id) { } bool Extension::HasAPIPermission(APIPermission::ID permission) const { - return PermissionsData::ForExtension(this)->HasAPIPermission(permission); + return permissions_data_->HasAPIPermission(permission); } bool Extension::HasAPIPermission(const std::string& permission_name) const { - return PermissionsData::ForExtension(this)->HasAPIPermission(permission_name); + return permissions_data_->HasAPIPermission(permission_name); } scoped_refptr<const PermissionSet> Extension::GetActivePermissions() const { - return PermissionsData::ForExtension(this)->active_permissions(); + return permissions_data_->active_permissions(); } bool Extension::ShowConfigureContextMenus() const { diff --git a/extensions/common/extension_messages.cc b/extensions/common/extension_messages.cc index afba3af..ae1c180 100644 --- a/extensions/common/extension_messages.cc +++ b/extensions/common/extension_messages.cc @@ -47,9 +47,8 @@ scoped_refptr<Extension> ExtensionMsg_Loaded_Params::ConvertToExtension( scoped_refptr<Extension> extension = Extension::Create(path, location, *manifest, creation_flags, error); if (extension.get()) { - extensions::PermissionsData::ForExtension(extension) - ->SetActivePermissions(new PermissionSet( - apis, manifest_permissions, explicit_hosts, scriptable_hosts)); + extension->permissions_data()->SetActivePermissions(new PermissionSet( + apis, manifest_permissions, explicit_hosts, scriptable_hosts)); } return extension; } diff --git a/extensions/common/features/permission_feature.cc b/extensions/common/features/permission_feature.cc index 7be136d..82f676bf 100644 --- a/extensions/common/features/permission_feature.cc +++ b/extensions/common/features/permission_feature.cc @@ -27,8 +27,7 @@ Feature::Availability PermissionFeature::IsAvailableToContext( if (!availability.is_available()) return availability; - if (extension && - !PermissionsData::ForExtension(extension)->HasAPIPermission(name())) + if (extension && !extension->permissions_data()->HasAPIPermission(name())) return CreateAvailability(NOT_PRESENT, extension->GetType()); return CreateAvailability(IS_AVAILABLE); diff --git a/extensions/common/permissions/permissions_data.cc b/extensions/common/permissions/permissions_data.cc index 12dfaa6..a624826 100644 --- a/extensions/common/permissions/permissions_data.cc +++ b/extensions/common/permissions/permissions_data.cc @@ -53,14 +53,6 @@ void PermissionsData::SetPolicyDelegate(PolicyDelegate* delegate) { } // static -const PermissionsData* PermissionsData::ForExtension( - const Extension* extension) { - // TODO(rdevlin.cronin): Figure out what we're doing with this (i.e. whether - // or not we want to expose PermissionsData on the extension). - return extension->permissions_data(); -} - -// static bool PermissionsData::CanSilentlyIncreasePermissions( const Extension* extension) { return extension->location() != Manifest::INTERNAL; diff --git a/extensions/common/permissions/permissions_data.h b/extensions/common/permissions/permissions_data.h index 57c6880..8b55c85 100644 --- a/extensions/common/permissions/permissions_data.h +++ b/extensions/common/permissions/permissions_data.h @@ -57,9 +57,6 @@ class PermissionsData { PermissionsData(const Extension* extension); virtual ~PermissionsData(); - // Return the PermissionsData associated with the given |extension|. - static const PermissionsData* ForExtension(const Extension* extension); - // Returns true if the |extension| can silently increase its permission level. // Users must approve permissions for unpacked and packed extensions in the // following situations: diff --git a/extensions/common/permissions/permissions_data_unittest.cc b/extensions/common/permissions/permissions_data_unittest.cc index ff5ca86..f7fad22 100644 --- a/extensions/common/permissions/permissions_data_unittest.cc +++ b/extensions/common/permissions/permissions_data_unittest.cc @@ -46,8 +46,8 @@ bool CheckSocketPermission( const char* host, int port) { SocketPermission::CheckParam param(type, host, port); - return PermissionsData::ForExtension(extension) - ->CheckAPIPermissionWithParam(APIPermission::kSocket, ¶m); + return extension->permissions_data()->CheckAPIPermissionWithParam( + APIPermission::kSocket, ¶m); } // Creates and returns an extension with the given |id|, |host_permissions|, and @@ -81,10 +81,10 @@ bool RequiresActionForScriptExecution(const std::string& extension_id, GetExtensionWithHostPermission(extension_id, host_permissions, location); - return PermissionsData::ForExtension(extension) - ->RequiresActionForScriptExecution(extension, - -1, // Ignore tab id for these. - GURL::EmptyGURL()); + return extension->permissions_data()->RequiresActionForScriptExecution( + extension, + -1, // Ignore tab id for these. + GURL::EmptyGURL()); } } // namespace @@ -95,52 +95,42 @@ TEST(ExtensionPermissionsTest, EffectiveHostPermissions) { extension = LoadManifest("effective_host_permissions", "empty.json"); EXPECT_EQ(0u, - PermissionsData::ForExtension(extension) + extension->permissions_data() ->GetEffectiveHostPermissions() .patterns() .size()); EXPECT_FALSE(hosts.MatchesURL(GURL("http://www.google.com"))); - EXPECT_FALSE( - PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); + EXPECT_FALSE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); extension = LoadManifest("effective_host_permissions", "one_host.json"); - hosts = - PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions(); + hosts = extension->permissions_data()->GetEffectiveHostPermissions(); EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); EXPECT_FALSE(hosts.MatchesURL(GURL("https://www.google.com"))); - EXPECT_FALSE( - PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); + EXPECT_FALSE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); extension = LoadManifest("effective_host_permissions", "one_host_wildcard.json"); - hosts = - PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions(); + hosts = extension->permissions_data()->GetEffectiveHostPermissions(); EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); EXPECT_TRUE(hosts.MatchesURL(GURL("http://foo.google.com"))); - EXPECT_FALSE( - PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); + EXPECT_FALSE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); extension = LoadManifest("effective_host_permissions", "two_hosts.json"); - hosts = - PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions(); + hosts = extension->permissions_data()->GetEffectiveHostPermissions(); EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.reddit.com"))); - EXPECT_FALSE( - PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); + EXPECT_FALSE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); extension = LoadManifest("effective_host_permissions", "https_not_considered.json"); - hosts = - PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions(); + hosts = extension->permissions_data()->GetEffectiveHostPermissions(); EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); EXPECT_TRUE(hosts.MatchesURL(GURL("https://google.com"))); - EXPECT_FALSE( - PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); + EXPECT_FALSE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); extension = LoadManifest("effective_host_permissions", "two_content_scripts.json"); - hosts = - PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions(); + hosts = extension->permissions_data()->GetEffectiveHostPermissions(); EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com"))); EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.reddit.com"))); EXPECT_TRUE(extension->GetActivePermissions()->HasEffectiveAccessToURL( @@ -148,34 +138,27 @@ TEST(ExtensionPermissionsTest, EffectiveHostPermissions) { EXPECT_TRUE(hosts.MatchesURL(GURL("http://news.ycombinator.com"))); EXPECT_TRUE(extension->GetActivePermissions()->HasEffectiveAccessToURL( GURL("http://news.ycombinator.com"))); - EXPECT_FALSE( - PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); + EXPECT_FALSE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); extension = LoadManifest("effective_host_permissions", "all_hosts.json"); - hosts = - PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions(); + hosts = extension->permissions_data()->GetEffectiveHostPermissions(); EXPECT_TRUE(hosts.MatchesURL(GURL("http://test/"))); EXPECT_FALSE(hosts.MatchesURL(GURL("https://test/"))); EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); - EXPECT_TRUE( - PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); + EXPECT_TRUE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); extension = LoadManifest("effective_host_permissions", "all_hosts2.json"); - hosts = - PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions(); + hosts = extension->permissions_data()->GetEffectiveHostPermissions(); EXPECT_TRUE(hosts.MatchesURL(GURL("http://test/"))); EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); - EXPECT_TRUE( - PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); + EXPECT_TRUE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); extension = LoadManifest("effective_host_permissions", "all_hosts3.json"); - hosts = - PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions(); + hosts = extension->permissions_data()->GetEffectiveHostPermissions(); EXPECT_FALSE(hosts.MatchesURL(GURL("http://test/"))); EXPECT_TRUE(hosts.MatchesURL(GURL("https://test/"))); EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.google.com"))); - EXPECT_TRUE( - PermissionsData::ForExtension(extension)->HasEffectiveAccessToAllHosts()); + EXPECT_TRUE(extension->permissions_data()->HasEffectiveAccessToAllHosts()); } TEST(ExtensionPermissionsTest, SocketPermissions) { @@ -250,18 +233,17 @@ TEST(ExtensionPermissionsTest, RequiresActionForScriptExecution) { ManifestPermissionSet(), allowed_hosts, URLPatternSet())); - PermissionsData::ForExtension(extension) - ->UpdateTabSpecificPermissions(0, tab_permissions); - EXPECT_FALSE(PermissionsData::ForExtension(extension) - ->RequiresActionForScriptExecution( - extension, 0, GURL("https://www.google.com/"))); + extension->permissions_data()->UpdateTabSpecificPermissions(0, + tab_permissions); + EXPECT_FALSE(extension->permissions_data()->RequiresActionForScriptExecution( + extension, 0, GURL("https://www.google.com/"))); } TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyAPIPermissions) { scoped_refptr<Extension> extension; extension = LoadManifest("permissions", "many-apis.json"); std::vector<base::string16> warnings = - PermissionsData::ForExtension(extension)->GetPermissionMessageStrings(); + extension->permissions_data()->GetPermissionMessageStrings(); // Warning for "tabs" is suppressed by "history" permission. ASSERT_EQ(5u, warnings.size()); EXPECT_EQ("Read and modify your data on api.flickr.com", @@ -277,10 +259,9 @@ TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyHostsPermissions) { scoped_refptr<Extension> extension; extension = LoadManifest("permissions", "more-than-3-hosts.json"); std::vector<base::string16> warnings = - PermissionsData::ForExtension(extension)->GetPermissionMessageStrings(); + extension->permissions_data()->GetPermissionMessageStrings(); std::vector<base::string16> warnings_details = - PermissionsData::ForExtension(extension) - ->GetPermissionMessageDetailsStrings(); + extension->permissions_data()->GetPermissionMessageDetailsStrings(); ASSERT_EQ(1u, warnings.size()); ASSERT_EQ(1u, warnings_details.size()); EXPECT_EQ("Read and modify your data on 5 websites", @@ -296,7 +277,7 @@ TEST(ExtensionPermissionsTest, GetPermissionMessages_LocationApiPermission) { Manifest::COMPONENT, Extension::NO_FLAGS); std::vector<base::string16> warnings = - PermissionsData::ForExtension(extension)->GetPermissionMessageStrings(); + extension->permissions_data()->GetPermissionMessageStrings(); ASSERT_EQ(1u, warnings.size()); EXPECT_EQ("Detect your physical location", UTF16ToUTF8(warnings[0])); } @@ -305,7 +286,7 @@ TEST(ExtensionPermissionsTest, GetPermissionMessages_ManyHosts) { scoped_refptr<Extension> extension; extension = LoadManifest("permissions", "many-hosts.json"); std::vector<base::string16> warnings = - PermissionsData::ForExtension(extension)->GetPermissionMessageStrings(); + extension->permissions_data()->GetPermissionMessageStrings(); ASSERT_EQ(1u, warnings.size()); EXPECT_EQ( "Read and modify your data on encrypted.google.com and www.google.com", @@ -316,7 +297,7 @@ TEST(ExtensionPermissionsTest, GetPermissionMessages_Plugins) { scoped_refptr<Extension> extension; extension = LoadManifest("permissions", "plugins.json"); std::vector<base::string16> warnings = - PermissionsData::ForExtension(extension)->GetPermissionMessageStrings(); + extension->permissions_data()->GetPermissionMessageStrings(); // We don't parse the plugins key on Chrome OS, so it should not ask for any // permissions. #if defined(OS_CHROMEOS) @@ -364,13 +345,13 @@ class ExtensionScriptAndCaptureVisibleTest : public testing::Test { bool AllowedScript(const Extension* extension, const GURL& url, const GURL& top_url, int tab_id) { - return PermissionsData::ForExtension(extension)->CanExecuteScriptOnPage( + return extension->permissions_data()->CanExecuteScriptOnPage( extension, url, top_url, tab_id, NULL, -1, NULL); } bool BlockedScript(const Extension* extension, const GURL& url, const GURL& top_url) { - return !PermissionsData::ForExtension(extension)->CanExecuteScriptOnPage( + return !extension->permissions_data()->CanExecuteScriptOnPage( extension, url, top_url, -1, NULL, -1, NULL); } @@ -379,10 +360,9 @@ class ExtensionScriptAndCaptureVisibleTest : public testing::Test { } bool Allowed(const Extension* extension, const GURL& url, int tab_id) { - return (PermissionsData::ForExtension(extension)->CanExecuteScriptOnPage( + return (extension->permissions_data()->CanExecuteScriptOnPage( extension, url, url, tab_id, NULL, -1, NULL) && - PermissionsData::ForExtension(extension) - ->CanCaptureVisiblePage(tab_id, NULL)); + extension->permissions_data()->CanCaptureVisiblePage(tab_id, NULL)); } bool CaptureOnly(const Extension* extension, const GURL& url) { @@ -390,10 +370,9 @@ class ExtensionScriptAndCaptureVisibleTest : public testing::Test { } bool CaptureOnly(const Extension* extension, const GURL& url, int tab_id) { - return !PermissionsData::ForExtension(extension)->CanExecuteScriptOnPage( + return !extension->permissions_data()->CanExecuteScriptOnPage( extension, url, url, tab_id, NULL, -1, NULL) && - PermissionsData::ForExtension(extension) - ->CanCaptureVisiblePage(tab_id, NULL); + extension->permissions_data()->CanCaptureVisiblePage(tab_id, NULL); } bool ScriptOnly(const Extension* extension, const GURL& url, @@ -404,8 +383,7 @@ class ExtensionScriptAndCaptureVisibleTest : public testing::Test { bool ScriptOnly(const Extension* extension, const GURL& url, const GURL& top_url, int tab_id) { return AllowedScript(extension, url, top_url, tab_id) && - !PermissionsData::ForExtension(extension) - ->CanCaptureVisiblePage(tab_id, NULL); + !extension->permissions_data()->CanCaptureVisiblePage(tab_id, NULL); } bool Blocked(const Extension* extension, const GURL& url) { @@ -413,10 +391,10 @@ class ExtensionScriptAndCaptureVisibleTest : public testing::Test { } bool Blocked(const Extension* extension, const GURL& url, int tab_id) { - return !(PermissionsData::ForExtension(extension)->CanExecuteScriptOnPage( + return !(extension->permissions_data()->CanExecuteScriptOnPage( extension, url, url, tab_id, NULL, -1, NULL) || - PermissionsData::ForExtension(extension) - ->CanCaptureVisiblePage(tab_id, NULL)); + extension->permissions_data()->CanCaptureVisiblePage(tab_id, + NULL)); } bool ScriptAllowedExclusivelyOnTab( @@ -477,12 +455,9 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, Permissions) { EXPECT_TRUE(BlockedScript(extension.get(), http_url, extension_url)); EXPECT_TRUE(BlockedScript(extension.get(), https_url, extension_url)); - EXPECT_FALSE(PermissionsData::ForExtension(extension) - ->HasHostPermission(settings_url)); - EXPECT_FALSE( - PermissionsData::ForExtension(extension)->HasHostPermission(about_url)); - EXPECT_TRUE( - PermissionsData::ForExtension(extension)->HasHostPermission(favicon_url)); + EXPECT_FALSE(extension->permissions_data()->HasHostPermission(settings_url)); + EXPECT_FALSE(extension->permissions_data()->HasHostPermission(about_url)); + EXPECT_TRUE(extension->permissions_data()->HasHostPermission(favicon_url)); // Test * for scheme, which implies just the http/https schemes. extension = LoadManifestStrict("script_and_capture", @@ -520,8 +495,7 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, Permissions) { EXPECT_TRUE(Blocked(extension.get(), settings_url)); EXPECT_TRUE(Blocked(extension.get(), favicon_url)); EXPECT_TRUE(Blocked(extension.get(), about_url)); - EXPECT_TRUE( - PermissionsData::ForExtension(extension)->HasHostPermission(favicon_url)); + EXPECT_TRUE(extension->permissions_data()->HasHostPermission(favicon_url)); // Having http://favicon should not give you chrome://favicon extension = LoadManifestStrict("script_and_capture", @@ -537,8 +511,7 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, Permissions) { EXPECT_TRUE(Allowed(extension.get(), settings_url)); EXPECT_TRUE(Allowed(extension.get(), about_url)); EXPECT_TRUE(Allowed(extension.get(), favicon_url)); - EXPECT_TRUE( - PermissionsData::ForExtension(extension)->HasHostPermission(favicon_url)); + EXPECT_TRUE(extension->permissions_data()->HasHostPermission(favicon_url)); // Component extensions should only get access to what they ask for. extension = LoadManifest("script_and_capture", @@ -551,8 +524,7 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, Permissions) { EXPECT_TRUE(Blocked(extension.get(), favicon_url)); EXPECT_TRUE(Blocked(extension.get(), about_url)); EXPECT_TRUE(Blocked(extension.get(), extension_url)); - EXPECT_FALSE(PermissionsData::ForExtension(extension) - ->HasHostPermission(settings_url)); + EXPECT_FALSE(extension->permissions_data()->HasHostPermission(settings_url)); } TEST_F(ExtensionScriptAndCaptureVisibleTest, PermissionsWithChromeURLsEnabled) { @@ -581,8 +553,7 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, PermissionsWithChromeURLsEnabled) { EXPECT_TRUE(BlockedScript(extension.get(), http_url, extension_url)); EXPECT_TRUE(BlockedScript(extension.get(), https_url, extension_url)); - const PermissionsData* permissions_data = - PermissionsData::ForExtension(extension); + const PermissionsData* permissions_data = extension->permissions_data(); EXPECT_FALSE(permissions_data->HasHostPermission(settings_url)); EXPECT_FALSE(permissions_data->HasHostPermission(about_url)); EXPECT_TRUE(permissions_data->HasHostPermission(favicon_url)); @@ -621,8 +592,7 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, PermissionsWithChromeURLsEnabled) { EXPECT_TRUE(Blocked(extension.get(), settings_url)); EXPECT_TRUE(ScriptOnly(extension.get(), favicon_url, favicon_url)); EXPECT_TRUE(Blocked(extension.get(), about_url)); - EXPECT_TRUE( - PermissionsData::ForExtension(extension)->HasHostPermission(favicon_url)); + EXPECT_TRUE(extension->permissions_data()->HasHostPermission(favicon_url)); // Having http://favicon should not give you chrome://favicon extension = LoadManifestStrict("script_and_capture", @@ -638,8 +608,7 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, PermissionsWithChromeURLsEnabled) { EXPECT_TRUE(Allowed(extension.get(), settings_url)); EXPECT_TRUE(Allowed(extension.get(), about_url)); EXPECT_TRUE(Allowed(extension.get(), favicon_url)); - EXPECT_TRUE( - PermissionsData::ForExtension(extension)->HasHostPermission(favicon_url)); + EXPECT_TRUE(extension->permissions_data()->HasHostPermission(favicon_url)); // Component extensions should only get access to what they ask for. extension = LoadManifest("script_and_capture", @@ -652,16 +621,14 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, PermissionsWithChromeURLsEnabled) { EXPECT_TRUE(Blocked(extension.get(), favicon_url)); EXPECT_TRUE(Blocked(extension.get(), about_url)); EXPECT_TRUE(Blocked(extension.get(), extension_url)); - EXPECT_FALSE(PermissionsData::ForExtension(extension) - ->HasHostPermission(settings_url)); + EXPECT_FALSE(extension->permissions_data()->HasHostPermission(settings_url)); } TEST_F(ExtensionScriptAndCaptureVisibleTest, TabSpecific) { scoped_refptr<Extension> extension = LoadManifestStrict("script_and_capture", "tab_specific.json"); - const PermissionsData* permissions_data = - PermissionsData::ForExtension(extension); + const PermissionsData* permissions_data = extension->permissions_data(); EXPECT_FALSE(permissions_data->GetTabSpecificPermissionsForTesting(0)); EXPECT_FALSE(permissions_data->GetTabSpecificPermissionsForTesting(1)); EXPECT_FALSE(permissions_data->GetTabSpecificPermissionsForTesting(2)); diff --git a/extensions/renderer/dispatcher.cc b/extensions/renderer/dispatcher.cc index 96de05b..cfa6afd6 100644 --- a/extensions/renderer/dispatcher.cc +++ b/extensions/renderer/dispatcher.cc @@ -750,7 +750,7 @@ void Dispatcher::OnUpdatePermissions( break; } - PermissionsData::ForExtension(extension)->SetActivePermissions(new_active); + extension->permissions_data()->SetActivePermissions(new_active); UpdateOriginPermissions(reason, extension, explicit_hosts); UpdateBindings(extension->id()); } @@ -803,7 +803,7 @@ void Dispatcher::InitOriginPermissions(const Extension* extension, UpdateOriginPermissions( UpdatedExtensionPermissionsInfo::ADDED, extension, - PermissionsData::ForExtension(extension)->GetEffectiveHostPermissions()); + extension->permissions_data()->GetEffectiveHostPermissions()); } void Dispatcher::UpdateOriginPermissions( diff --git a/extensions/renderer/script_injection.cc b/extensions/renderer/script_injection.cc index 5299bd4..c7eb9a4 100644 --- a/extensions/renderer/script_injection.cc +++ b/extensions/renderer/script_injection.cc @@ -154,10 +154,8 @@ void ScriptInjection::InjectIfAllowed(blink::WebFrame* frame, // valid tab id (if we don't have a tab id, we have no UI surface to ask for // user consent). if (tab_id != -1 && - PermissionsData::ForExtension(extension) - ->RequiresActionForScriptExecution(extension, - tab_id, - frame->top()->document().url())) { + extension->permissions_data()->RequiresActionForScriptExecution( + extension, tab_id, frame->top()->document().url())) { int64 request_id = kInvalidRequestId; int page_id = top_render_view->GetPageId(); @@ -256,14 +254,14 @@ bool ScriptInjection::WantsToRun(blink::WebFrame* frame, GURL effective_document_url = ScriptContext::GetEffectiveDocumentURL( frame, document_url, script_->match_about_blank()); - if (!PermissionsData::ForExtension(extension) - ->CanExecuteScriptOnPage(extension, - effective_document_url, - frame->top()->document().url(), - kNoTabId, - script_.get(), - kNoProcessId, - NULL /* ignore error */)) { + if (!extension->permissions_data()->CanExecuteScriptOnPage( + extension, + effective_document_url, + frame->top()->document().url(), + kNoTabId, + script_.get(), + kNoProcessId, + NULL /* ignore error */)) { return false; } diff --git a/extensions/renderer/user_script_scheduler.cc b/extensions/renderer/user_script_scheduler.cc index 2214c77..4058daa 100644 --- a/extensions/renderer/user_script_scheduler.cc +++ b/extensions/renderer/user_script_scheduler.cc @@ -192,14 +192,14 @@ void UserScriptScheduler::ExecuteCodeImpl( GURL document_url = ScriptContext::GetEffectiveDocumentURL( child_frame, child_frame->document().url(), params.match_about_blank); bool can_execute_script = - PermissionsData::ForExtension(extension) - ->CanExecuteScriptOnPage(extension, - document_url, - top_url, - extension_helper->tab_id(), - NULL, - -1, - NULL); + extension->permissions_data()->CanExecuteScriptOnPage( + extension, + document_url, + top_url, + extension_helper->tab_id(), + NULL, + -1, + NULL); if ((!params.is_web_view && !can_execute_script) || (params.is_web_view && document_url != params.webview_src)) { if (child_frame->parent()) { |