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

Unified Diff: chrome/browser/extensions/active_tab_unittest.cc

Issue 140433003: tab capture: Change the permissions for tabs.captureVisibleTab(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/extensions/api/tabs/tabs_api.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 150ba607c9a350b550c8b84122d46c9cda5bb701..186f0d9a2efa29bb0f53b67c319818f64a6ceba7 100644
--- a/chrome/browser/extensions/active_tab_unittest.cc
+++ b/chrome/browser/extensions/active_tab_unittest.cc
@@ -57,6 +57,13 @@ scoped_refptr<const Extension> CreateTestExtension(
.Build();
}
+enum PermittedFeature {
+ PERMITTED_NONE,
+ PERMITTED_SCRIPT_ONLY,
+ PERMITTED_CAPTURE_ONLY,
+ PERMITTED_BOTH
+};
+
class ActiveTabTest : public ChromeRenderViewHostTestHarness {
protected:
ActiveTabTest()
@@ -86,17 +93,35 @@ class ActiveTabTest : public ChromeRenderViewHostTestHarness {
bool IsAllowed(const scoped_refptr<const Extension>& extension,
const GURL& url) {
- return IsAllowed(extension, url, tab_id());
+ return IsAllowed(extension, url, PERMITTED_BOTH, tab_id());
}
bool IsAllowed(const scoped_refptr<const Extension>& extension,
const GURL& url,
+ PermittedFeature feature) {
+ return IsAllowed(extension, url, feature, tab_id());
+ }
+
+ bool IsAllowed(const scoped_refptr<const Extension>& extension,
+ const GURL& url,
+ PermittedFeature feature,
int tab_id) {
- return PermissionsData::CanExecuteScriptOnPage(
- extension.get(), url, url, tab_id, NULL, -1, NULL) &&
- PermissionsData::CanCaptureVisiblePage(
- extension.get(), url, tab_id, NULL) &&
- HasTabsPermission(extension, tab_id);
+ bool script = PermissionsData::CanExecuteScriptOnPage(
+ extension.get(), url, url, tab_id, NULL, -1, NULL);
+ bool capture = HasTabsPermission(extension, tab_id) &&
+ PermissionsData::CanCaptureVisiblePage(extension.get(), tab_id, NULL);
+ switch (feature) {
+ case PERMITTED_SCRIPT_ONLY:
+ return script && !capture;
+ case PERMITTED_CAPTURE_ONLY:
+ return capture && !script;
+ case PERMITTED_BOTH:
+ return script && capture;
+ case PERMITTED_NONE:
+ return !script && !capture;
+ }
+ NOTREACHED();
+ return false;
}
bool IsBlocked(const scoped_refptr<const Extension>& extension,
@@ -107,11 +132,7 @@ class ActiveTabTest : public ChromeRenderViewHostTestHarness {
bool IsBlocked(const scoped_refptr<const Extension>& extension,
const GURL& url,
int tab_id) {
- // Note: can't check HasTabsPermission because it isn't URL specific.
- return !PermissionsData::CanExecuteScriptOnPage(
- extension.get(), url, url, tab_id, NULL, -1, NULL) &&
- !PermissionsData::CanCaptureVisiblePage(
- extension.get(), url, tab_id, NULL);
+ return IsAllowed(extension, url, PERMITTED_NONE, tab_id);
}
bool HasTabsPermission(const scoped_refptr<const Extension>& extension) {
@@ -173,7 +194,7 @@ 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(IsAllowed(extension, mail_google, PERMITTED_CAPTURE_ONLY));
EXPECT_TRUE(IsBlocked(another_extension, mail_google));
EXPECT_TRUE(IsBlocked(extension_without_active_tab, mail_google));
@@ -233,8 +254,8 @@ TEST_F(ActiveTabTest, GrantToSinglePage) {
active_tab_permission_granter()->GrantIfRequested(
extension_without_active_tab.get());
- EXPECT_TRUE(IsBlocked(extension, google));
- EXPECT_TRUE(IsBlocked(another_extension, google));
+ EXPECT_TRUE(IsAllowed(extension, google, PERMITTED_CAPTURE_ONLY));
+ EXPECT_TRUE(IsAllowed(another_extension, google, PERMITTED_CAPTURE_ONLY));
EXPECT_TRUE(IsBlocked(extension_without_active_tab, google));
EXPECT_TRUE(IsAllowed(extension, chromium));
@@ -253,8 +274,8 @@ TEST_F(ActiveTabTest, GrantToSinglePage) {
EXPECT_TRUE(IsAllowed(another_extension, google));
EXPECT_TRUE(IsBlocked(extension_without_active_tab, google));
- EXPECT_TRUE(IsBlocked(extension, chromium));
- EXPECT_TRUE(IsBlocked(another_extension, chromium));
+ EXPECT_TRUE(IsAllowed(extension, chromium, PERMITTED_CAPTURE_ONLY));
+ EXPECT_TRUE(IsAllowed(another_extension, chromium, PERMITTED_CAPTURE_ONLY));
EXPECT_TRUE(IsBlocked(extension_without_active_tab, chromium));
};
@@ -294,7 +315,7 @@ TEST_F(ActiveTabTest, OnlyActiveTab) {
active_tab_permission_granter()->GrantIfRequested(extension.get());
- EXPECT_TRUE(IsAllowed(extension, google, tab_id()));
+ EXPECT_TRUE(IsAllowed(extension, google, PERMITTED_BOTH, tab_id()));
EXPECT_TRUE(IsBlocked(extension, google, tab_id() + 1));
EXPECT_FALSE(HasTabsPermission(extension, tab_id() + 1));
}
@@ -310,36 +331,36 @@ TEST_F(ActiveTabTest, NavigateInPage) {
GURL google_h1("http://www.google.com#h1");
NavigateAndCommit(google_h1);
- EXPECT_TRUE(IsAllowed(extension, google, tab_id()));
- EXPECT_TRUE(IsAllowed(extension, google_h1, tab_id()));
+ EXPECT_TRUE(IsAllowed(extension, google));
+ EXPECT_TRUE(IsAllowed(extension, google_h1));
GURL chromium("http://www.chromium.org");
NavigateAndCommit(chromium);
- EXPECT_FALSE(IsAllowed(extension, google, tab_id()));
- EXPECT_FALSE(IsAllowed(extension, google_h1, tab_id()));
- EXPECT_FALSE(IsAllowed(extension, chromium, tab_id()));
+ EXPECT_FALSE(IsAllowed(extension, google));
+ EXPECT_FALSE(IsAllowed(extension, google_h1));
+ EXPECT_FALSE(IsAllowed(extension, chromium));
active_tab_permission_granter()->GrantIfRequested(extension.get());
- EXPECT_FALSE(IsAllowed(extension, google, tab_id()));
- EXPECT_FALSE(IsAllowed(extension, google_h1, tab_id()));
- EXPECT_TRUE(IsAllowed(extension, chromium, tab_id()));
+ EXPECT_FALSE(IsAllowed(extension, google));
+ EXPECT_FALSE(IsAllowed(extension, google_h1));
+ EXPECT_TRUE(IsAllowed(extension, chromium));
GURL chromium_h1("http://www.chromium.org#h1");
NavigateAndCommit(chromium_h1);
- EXPECT_FALSE(IsAllowed(extension, google, tab_id()));
- EXPECT_FALSE(IsAllowed(extension, google_h1, tab_id()));
- EXPECT_TRUE(IsAllowed(extension, chromium, tab_id()));
- EXPECT_TRUE(IsAllowed(extension, chromium_h1, tab_id()));
+ EXPECT_FALSE(IsAllowed(extension, google));
+ EXPECT_FALSE(IsAllowed(extension, google_h1));
+ EXPECT_TRUE(IsAllowed(extension, chromium));
+ EXPECT_TRUE(IsAllowed(extension, chromium_h1));
Reload();
- EXPECT_FALSE(IsAllowed(extension, google, tab_id()));
- EXPECT_FALSE(IsAllowed(extension, google_h1, tab_id()));
- EXPECT_FALSE(IsAllowed(extension, chromium, tab_id()));
- EXPECT_FALSE(IsAllowed(extension, chromium_h1, tab_id()));
+ EXPECT_FALSE(IsAllowed(extension, google));
+ EXPECT_FALSE(IsAllowed(extension, google_h1));
+ EXPECT_FALSE(IsAllowed(extension, chromium));
+ EXPECT_FALSE(IsAllowed(extension, chromium_h1));
}
TEST_F(ActiveTabTest, ChromeUrlGrants) {
@@ -348,7 +369,8 @@ TEST_F(ActiveTabTest, ChromeUrlGrants) {
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(IsAllowed(extension_with_tab_capture, internal,
+ PERMITTED_CAPTURE_ONLY));
EXPECT_TRUE(PermissionsData::HasAPIPermissionForTab(
extension_with_tab_capture.get(),
tab_id(),
« no previous file with comments | « no previous file | chrome/browser/extensions/api/tabs/tabs_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698