| Index: chrome/browser/extensions/active_tab_unittest.cc
|
| diff --git a/chrome/browser/extensions/active_tab_unittest.cc b/chrome/browser/extensions/active_tab_unittest.cc
|
| index 1fbb4b4f0af3f7f3590d51655cef79b9769da896..35e5e48b3d7972ff49771e64f6ae7628a76bad79 100644
|
| --- a/chrome/browser/extensions/active_tab_unittest.cc
|
| +++ b/chrome/browser/extensions/active_tab_unittest.cc
|
| @@ -84,8 +84,9 @@ class ActiveTabTest : public TabContentsTestHarness {
|
| bool IsAllowed(const scoped_refptr<const Extension>& extension,
|
| const GURL& url,
|
| int tab_id) {
|
| - return (extension->CanExecuteScriptOnPage(url, tab_id, NULL, NULL) &&
|
| - extension->CanCaptureVisiblePage(url, tab_id, NULL));
|
| + return extension->CanExecuteScriptOnPage(url, tab_id, NULL, NULL) &&
|
| + extension->CanCaptureVisiblePage(url, tab_id, NULL) &&
|
| + HasTabsPermission(extension, tab_id);
|
| }
|
|
|
| bool IsBlocked(const scoped_refptr<const Extension>& extension,
|
| @@ -96,8 +97,18 @@ class ActiveTabTest : public TabContentsTestHarness {
|
| bool IsBlocked(const scoped_refptr<const Extension>& extension,
|
| const GURL& url,
|
| int tab_id) {
|
| - return (!extension->CanExecuteScriptOnPage(url, tab_id, NULL, NULL) &&
|
| - !extension->CanCaptureVisiblePage(url, tab_id, NULL));
|
| + // Note: can't check HasTabsPermission because it isn't URL specific.
|
| + return !extension->CanExecuteScriptOnPage(url, tab_id, NULL, NULL) &&
|
| + !extension->CanCaptureVisiblePage(url, tab_id, NULL);
|
| + }
|
| +
|
| + bool HasTabsPermission(const scoped_refptr<const Extension>& extension) {
|
| + return HasTabsPermission(extension, tab_id());
|
| + }
|
| +
|
| + bool HasTabsPermission(const scoped_refptr<const Extension>& extension,
|
| + int tab_id) {
|
| + return extension->HasAPIPermissionForTab(tab_id, APIPermission::kTab);
|
| }
|
|
|
| // An extension with the activeTab permission.
|
| @@ -122,6 +133,10 @@ TEST_F(ActiveTabTest, GrantToSinglePage) {
|
| EXPECT_TRUE(IsBlocked(another_extension, google));
|
| EXPECT_TRUE(IsBlocked(extension_without_active_tab, google));
|
|
|
| + EXPECT_FALSE(HasTabsPermission(extension));
|
| + EXPECT_FALSE(HasTabsPermission(another_extension));
|
| + EXPECT_FALSE(HasTabsPermission(extension_without_active_tab));
|
| +
|
| active_tab_permission_manager()->GrantIfRequested(extension);
|
| active_tab_permission_manager()->GrantIfRequested(
|
| extension_without_active_tab);
|
| @@ -135,8 +150,8 @@ TEST_F(ActiveTabTest, GrantToSinglePage) {
|
| // Other subdomains shouldn't be given access.
|
| GURL mail_google("http://mail.google.com");
|
| EXPECT_TRUE(IsBlocked(extension, mail_google));
|
| - EXPECT_TRUE(IsBlocked(another_extension, google));
|
| - EXPECT_TRUE(IsBlocked(extension_without_active_tab, google));
|
| + EXPECT_TRUE(IsBlocked(another_extension, mail_google));
|
| + EXPECT_TRUE(IsBlocked(extension_without_active_tab, mail_google));
|
|
|
| // Reloading the page should clear the active permissions.
|
| Reload();
|
| @@ -145,6 +160,10 @@ TEST_F(ActiveTabTest, GrantToSinglePage) {
|
| EXPECT_TRUE(IsBlocked(another_extension, google));
|
| EXPECT_TRUE(IsBlocked(extension_without_active_tab, google));
|
|
|
| + EXPECT_FALSE(HasTabsPermission(extension));
|
| + EXPECT_FALSE(HasTabsPermission(another_extension));
|
| + EXPECT_FALSE(HasTabsPermission(extension_without_active_tab));
|
| +
|
| // But they should still be able to be granted again.
|
| active_tab_permission_manager()->GrantIfRequested(extension);
|
|
|
| @@ -179,6 +198,10 @@ TEST_F(ActiveTabTest, GrantToSinglePage) {
|
| EXPECT_TRUE(IsBlocked(another_extension, chromium));
|
| EXPECT_TRUE(IsBlocked(extension_without_active_tab, chromium));
|
|
|
| + EXPECT_FALSE(HasTabsPermission(extension));
|
| + EXPECT_FALSE(HasTabsPermission(another_extension));
|
| + EXPECT_FALSE(HasTabsPermission(extension_without_active_tab));
|
| +
|
| // Should be able to grant to multiple extensions at the same time (if they
|
| // have the activeTab permission, of course).
|
| active_tab_permission_manager()->GrantIfRequested(extension);
|
| @@ -250,6 +273,7 @@ TEST_F(ActiveTabTest, OnlyActiveTab) {
|
|
|
| EXPECT_TRUE(IsAllowed(extension, google, tab_id()));
|
| EXPECT_TRUE(IsBlocked(extension, google, tab_id() + 1));
|
| + EXPECT_FALSE(HasTabsPermission(extension, tab_id() + 1));
|
| }
|
|
|
| TEST_F(ActiveTabTest, NavigateInPage) {
|
|
|