| 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 93bd889d4ab37ede451f9ac9847d4cc4a0731352..ae16beb23525195c79b41400b697868560fbbc40 100644
|
| --- a/chrome/browser/extensions/active_tab_unittest.cc
|
| +++ b/chrome/browser/extensions/active_tab_unittest.cc
|
| @@ -15,6 +15,7 @@
|
| #include "chrome/browser/sessions/session_id.h"
|
| #include "chrome/common/extensions/extension.h"
|
| #include "chrome/common/extensions/extension_builder.h"
|
| +#include "chrome/common/extensions/features/feature_channel.h"
|
| #include "chrome/common/extensions/permissions/permissions_data.h"
|
| #include "chrome/common/extensions/value_builder.h"
|
| #include "chrome/test/base/chrome_render_view_host_test_harness.h"
|
| @@ -39,10 +40,13 @@ namespace {
|
|
|
| scoped_refptr<const Extension> CreateTestExtension(
|
| const std::string& id,
|
| - bool has_active_tab_permission) {
|
| + bool has_active_tab_permission,
|
| + bool has_tab_capture_permission) {
|
| ListBuilder permissions;
|
| if (has_active_tab_permission)
|
| permissions.Append("activeTab");
|
| + if (has_tab_capture_permission)
|
| + permissions.Append("tabCapture");
|
| return ExtensionBuilder()
|
| .SetManifest(DictionaryBuilder()
|
| .Set("name", "Extension with ID " + id)
|
| @@ -56,9 +60,15 @@ scoped_refptr<const Extension> CreateTestExtension(
|
| class ActiveTabTest : public ChromeRenderViewHostTestHarness {
|
| protected:
|
| ActiveTabTest()
|
| - : extension(CreateTestExtension("deadbeef", true)),
|
| - another_extension(CreateTestExtension("feedbeef", true)),
|
| - extension_without_active_tab(CreateTestExtension("badbeef", false)) {}
|
| + : current_channel(chrome::VersionInfo::CHANNEL_DEV),
|
| + extension(CreateTestExtension("deadbeef", true, false)),
|
| + another_extension(CreateTestExtension("feedbeef", true, false)),
|
| + extension_without_active_tab(CreateTestExtension("badbeef",
|
| + false,
|
| + false)),
|
| + extension_with_tab_capture(CreateTestExtension("cafebeef",
|
| + true,
|
| + true)) {}
|
|
|
| virtual void SetUp() OVERRIDE {
|
| ChromeRenderViewHostTestHarness::SetUp();
|
| @@ -114,6 +124,17 @@ class ActiveTabTest : public ChromeRenderViewHostTestHarness {
|
| extension.get(), tab_id, APIPermission::kTab);
|
| }
|
|
|
| + bool IsGrantedForTab(const Extension* extension,
|
| + const content::WebContents* web_contents) {
|
| + return PermissionsData::HasAPIPermissionForTab(
|
| + extension,
|
| + SessionID::IdForTab(web_contents),
|
| + APIPermission::kTab);
|
| + }
|
| +
|
| + // TODO(justinlin): Remove when tabCapture is moved to stable.
|
| + ScopedCurrentChannel current_channel;
|
| +
|
| // An extension with the activeTab permission.
|
| scoped_refptr<const Extension> extension;
|
|
|
| @@ -122,6 +143,9 @@ class ActiveTabTest : public ChromeRenderViewHostTestHarness {
|
|
|
| // An extension without the activeTab permission.
|
| scoped_refptr<const Extension> extension_without_active_tab;
|
| +
|
| + // An extension with both the activeTab and tabCapture permission.
|
| + scoped_refptr<const Extension> extension_with_tab_capture;
|
| };
|
|
|
| TEST_F(ActiveTabTest, GrantToSinglePage) {
|
| @@ -241,7 +265,7 @@ TEST_F(ActiveTabTest, Uninstalling) {
|
|
|
| active_tab_permission_granter()->GrantIfRequested(extension.get());
|
|
|
| - EXPECT_TRUE(active_tab_permission_granter()->IsGranted(extension.get()));
|
| + EXPECT_TRUE(IsGrantedForTab(extension.get(), web_contents()));
|
| EXPECT_TRUE(IsAllowed(extension, google));
|
|
|
| // Uninstalling the extension should clear its tab permissions.
|
| @@ -253,7 +277,6 @@ TEST_F(ActiveTabTest, Uninstalling) {
|
| web_contents()->GetBrowserContext())),
|
| content::Details<UnloadedExtensionInfo>(&details));
|
|
|
| - EXPECT_FALSE(active_tab_permission_granter()->IsGranted(extension.get()));
|
| // Note: can't EXPECT_FALSE(IsAllowed) here because uninstalled extensions
|
| // are just that... considered to be uninstalled, and the manager might
|
| // just ignore them from here on.
|
| @@ -261,7 +284,7 @@ TEST_F(ActiveTabTest, Uninstalling) {
|
| // Granting the extension again should give them back.
|
| active_tab_permission_granter()->GrantIfRequested(extension.get());
|
|
|
| - EXPECT_TRUE(active_tab_permission_granter()->IsGranted(extension.get()));
|
| + EXPECT_TRUE(IsGrantedForTab(extension.get(), web_contents()));
|
| EXPECT_TRUE(IsAllowed(extension, google));
|
| }
|
|
|
| @@ -319,5 +342,24 @@ TEST_F(ActiveTabTest, NavigateInPage) {
|
| EXPECT_FALSE(IsAllowed(extension, chromium_h1, tab_id()));
|
| }
|
|
|
| +TEST_F(ActiveTabTest, ChromeUrlGrants) {
|
| + GURL internal("chrome://version");
|
| + NavigateAndCommit(internal);
|
| + active_tab_permission_granter()->GrantIfRequested(
|
| + extension_with_tab_capture.get());
|
| + // Do not grant tabs/hosts permissions for tab.
|
| + EXPECT_TRUE(IsBlocked(extension_with_tab_capture, internal, tab_id()));
|
| + EXPECT_TRUE(PermissionsData::HasAPIPermissionForTab(
|
| + extension_with_tab_capture.get(),
|
| + tab_id(),
|
| + APIPermission::kTabCaptureForTab));
|
| +
|
| + EXPECT_TRUE(IsBlocked(extension_with_tab_capture, internal, tab_id() + 1));
|
| + EXPECT_FALSE(PermissionsData::HasAPIPermissionForTab(
|
| + extension_with_tab_capture.get(),
|
| + tab_id() + 1,
|
| + APIPermission::kTabCaptureForTab));
|
| +}
|
| +
|
| } // namespace
|
| } // namespace extensions
|
|
|