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

Unified Diff: chrome/common/extensions/extension_unittest.cc

Issue 10443105: Take 2 at implementing activeTab. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: a unit test Created 8 years, 6 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
Index: chrome/common/extensions/extension_unittest.cc
diff --git a/chrome/common/extensions/extension_unittest.cc b/chrome/common/extensions/extension_unittest.cc
index 4c5f57a5ea7307dc9d661a69a931a01dcf1494f3..d11a20e8d6e05d6a3244194d5b7f61bda3d907d6 100644
--- a/chrome/common/extensions/extension_unittest.cc
+++ b/chrome/common/extensions/extension_unittest.cc
@@ -615,62 +615,62 @@ TEST(ExtensionTest, WantsFileAccess) {
// <all_urls> permission
extension = LoadManifest("permissions", "permissions_all_urls.json");
EXPECT_TRUE(extension->wants_file_access());
- EXPECT_FALSE(extension->CanExecuteScriptOnPage(file_url, NULL, NULL));
+ EXPECT_FALSE(extension->CanExecuteScriptOnPage(file_url, -1, NULL, NULL));
extension = LoadManifest(
"permissions", "permissions_all_urls.json", Extension::ALLOW_FILE_ACCESS);
EXPECT_TRUE(extension->wants_file_access());
- EXPECT_TRUE(extension->CanExecuteScriptOnPage(file_url, NULL, NULL));
+ EXPECT_TRUE(extension->CanExecuteScriptOnPage(file_url, -1, NULL, NULL));
// file:///* permission
extension = LoadManifest("permissions", "permissions_file_scheme.json");
EXPECT_TRUE(extension->wants_file_access());
- EXPECT_FALSE(extension->CanExecuteScriptOnPage(file_url, NULL, NULL));
+ EXPECT_FALSE(extension->CanExecuteScriptOnPage(file_url, -1, NULL, NULL));
extension = LoadManifest("permissions", "permissions_file_scheme.json",
Extension::ALLOW_FILE_ACCESS);
EXPECT_TRUE(extension->wants_file_access());
- EXPECT_TRUE(extension->CanExecuteScriptOnPage(file_url, NULL, NULL));
+ EXPECT_TRUE(extension->CanExecuteScriptOnPage(file_url, -1, NULL, NULL));
// http://* permission
extension = LoadManifest("permissions", "permissions_http_scheme.json");
EXPECT_FALSE(extension->wants_file_access());
- EXPECT_FALSE(extension->CanExecuteScriptOnPage(file_url, NULL, NULL));
+ EXPECT_FALSE(extension->CanExecuteScriptOnPage(file_url, -1, NULL, NULL));
extension = LoadManifest("permissions", "permissions_http_scheme.json",
Extension::ALLOW_FILE_ACCESS);
EXPECT_FALSE(extension->wants_file_access());
- EXPECT_FALSE(extension->CanExecuteScriptOnPage(file_url, NULL, NULL));
+ EXPECT_FALSE(extension->CanExecuteScriptOnPage(file_url, -1, NULL, NULL));
// <all_urls> content script match
extension = LoadManifest("permissions", "content_script_all_urls.json");
EXPECT_TRUE(extension->wants_file_access());
EXPECT_FALSE(extension->CanExecuteScriptOnPage(
- file_url, &extension->content_scripts()[0], NULL));
+ file_url, -1, &extension->content_scripts()[0], NULL));
extension = LoadManifest("permissions", "content_script_all_urls.json",
Extension::ALLOW_FILE_ACCESS);
EXPECT_TRUE(extension->wants_file_access());
EXPECT_TRUE(extension->CanExecuteScriptOnPage(
- file_url, &extension->content_scripts()[0], NULL));
+ file_url, -1, &extension->content_scripts()[0], NULL));
// file:///* content script match
extension = LoadManifest("permissions", "content_script_file_scheme.json");
EXPECT_TRUE(extension->wants_file_access());
EXPECT_FALSE(extension->CanExecuteScriptOnPage(
- file_url, &extension->content_scripts()[0], NULL));
+ file_url, -1, &extension->content_scripts()[0], NULL));
extension = LoadManifest("permissions", "content_script_file_scheme.json",
Extension::ALLOW_FILE_ACCESS);
EXPECT_TRUE(extension->wants_file_access());
EXPECT_TRUE(extension->CanExecuteScriptOnPage(
- file_url, &extension->content_scripts()[0], NULL));
+ file_url, -1, &extension->content_scripts()[0], NULL));
// http://* content script match
extension = LoadManifest("permissions", "content_script_http_scheme.json");
EXPECT_FALSE(extension->wants_file_access());
EXPECT_FALSE(extension->CanExecuteScriptOnPage(
- file_url, &extension->content_scripts()[0], NULL));
+ file_url, -1, &extension->content_scripts()[0], NULL));
extension = LoadManifest("permissions", "content_script_http_scheme.json",
Extension::ALLOW_FILE_ACCESS);
EXPECT_FALSE(extension->wants_file_access());
EXPECT_FALSE(extension->CanExecuteScriptOnPage(
- file_url, &extension->content_scripts()[0], NULL));
+ file_url, -1, &extension->content_scripts()[0], NULL));
}
TEST(ExtensionTest, ExtraFlags) {
@@ -695,18 +695,30 @@ class ExtensionScriptAndCaptureVisibleTest : public testing::Test {
}
bool Allowed(const Extension* extension, const GURL& url) {
- return (extension->CanExecuteScriptOnPage(url, NULL, NULL) &&
- extension->CanCaptureVisiblePage(url, NULL));
+ return Allowed(extension, url, -1);
+ }
+
+ bool Allowed(const Extension* extension, const GURL& url, int tab_id) {
+ return (extension->CanExecuteScriptOnPage(url, tab_id, NULL, NULL) &&
+ extension->CanCaptureVisiblePage(url, tab_id, NULL));
}
bool CaptureOnly(const Extension* extension, const GURL& url) {
- return !extension->CanExecuteScriptOnPage(url, NULL, NULL) &&
- extension->CanCaptureVisiblePage(url, NULL);
+ return CaptureOnly(extension, url, -1);
+ }
+
+ bool CaptureOnly(const Extension* extension, const GURL& url, int tab_id) {
+ return !extension->CanExecuteScriptOnPage(url, tab_id, NULL, NULL) &&
+ extension->CanCaptureVisiblePage(url, tab_id, NULL);
}
bool Blocked(const Extension* extension, const GURL& url) {
- return !(extension->CanExecuteScriptOnPage(url, NULL, NULL) ||
- extension->CanCaptureVisiblePage(url, NULL));
+ return Blocked(extension, url, -1);
+ }
+
+ bool Blocked(const Extension* extension, const GURL& url, int tab_id) {
+ return !(extension->CanExecuteScriptOnPage(url, tab_id, NULL, NULL) ||
+ extension->CanCaptureVisiblePage(url, tab_id, NULL));
}
protected:
@@ -810,6 +822,93 @@ TEST_F(ExtensionScriptAndCaptureVisibleTest, Permissions) {
EXPECT_FALSE(extension->HasHostPermission(settings_url));
}
+TEST_F(ExtensionScriptAndCaptureVisibleTest, TabSpecific) {
+ // TODO: these tests in progress. hastily assembled late at night.
+ scoped_refptr<Extension> extension =
+ LoadManifestStrict("script_and_capture", "tab_specific.json");
+
+ GURL http_url("http://www.google.com");
+ GURL https_url("https://www.google.com");
+ GURL file_url("file:///foo/bar");
+ GURL favicon_url("chrome://favicon/http://www.google.com");
+ GURL extension_url("chrome-extension://monkey");
+ GURL settings_url("chrome://settings");
+ GURL about_url("about:flags");
+
+ const GURL urls[] = {
+ http_url, https_url, file_url, favicon_url,
+ extension_url, settings_url, about_url,
+ };
+
+ // Shouldn't have access to any URLs on any tabs.
+ for (size_t i = 0; i < arraysize(urls); ++i) {
+ GURL url = urls[i];
+ EXPECT_TRUE(Blocked(extension, url, 0));
+ EXPECT_TRUE(Blocked(extension, url, 1));
+ EXPECT_TRUE(Blocked(extension, url, 2));
+ }
+
+ // TODO: GetEffectiveHostPermissions?
+
+ // Grant access to http_url on tab 0.
+ {
+ URLPatternSet hosts;
+ hosts.AddPattern(URLPattern(URLPattern::SCHEME_ALL, http_url.spec()));
+
+ extension->SetTabSpecificHostPermissions(0, hosts);
+ for (size_t i = 0; i < arraysize(urls); ++i) {
+ GURL url = urls[i];
+ if (url == http_url)
+ EXPECT_TRUE(Allowed(extension, url, 0));
+ else
+ EXPECT_TRUE(Blocked(extension, url, 0));
+ EXPECT_TRUE(Blocked(extension, url, 1));
+ EXPECT_TRUE(Blocked(extension, url, 2));
+ }
+
+ extension->ClearTabSpecificHostPermissions(0);
+ for (size_t i = 0; i < arraysize(urls); ++i) {
+ GURL url = urls[i];
+ EXPECT_TRUE(Blocked(extension, url, 0));
+ EXPECT_TRUE(Blocked(extension, url, 1));
+ EXPECT_TRUE(Blocked(extension, url, 2));
+ }
+
+ extension->SetTabSpecificHostPermissions(0, hosts);
+ extension->SetTabSpecificHostPermissions(1, hosts);
+ for (size_t i = 0; i < arraysize(urls); ++i) {
+ GURL url = urls[i];
+ if (url == http_url) {
+ EXPECT_TRUE(Allowed(extension, url, 0));
+ EXPECT_TRUE(Allowed(extension, url, 1));
+ } else {
+ EXPECT_TRUE(Blocked(extension, url, 0));
+ EXPECT_TRUE(Blocked(extension, url, 1));
+ }
+ EXPECT_TRUE(Blocked(extension, url, 2));
+ }
+
+ extension->ClearTabSpecificHostPermissions(0);
+ for (size_t i = 0; i < arraysize(urls); ++i) {
+ GURL url = urls[i];
+ EXPECT_TRUE(Blocked(extension, url, 0));
+ if (url == http_url)
+ EXPECT_TRUE(Allowed(extension, url, 1));
+ else
+ EXPECT_TRUE(Blocked(extension, url, 1));
+ EXPECT_TRUE(Blocked(extension, url, 2));
+ }
+
+ extension->ClearTabSpecificHostPermissions(1);
+ for (size_t i = 0; i < arraysize(urls); ++i) {
+ GURL url = urls[i];
+ EXPECT_TRUE(Blocked(extension, url, 0));
+ EXPECT_TRUE(Blocked(extension, url, 1));
+ EXPECT_TRUE(Blocked(extension, url, 2));
+ }
+ }
+}
+
TEST(ExtensionTest, GenerateId) {
std::string result;
EXPECT_TRUE(Extension::GenerateId("", &result));

Powered by Google App Engine
This is Rietveld 408576698