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

Unified Diff: chrome/browser/extensions/api/web_request/web_request_permissions_unittest.cc

Issue 14358004: Almost all actions in Declarative Web Request require all_urls host permissions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: All URLs -> all hosts; also rebased Created 7 years, 8 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/browser/extensions/api/web_request/web_request_permissions_unittest.cc
diff --git a/chrome/browser/extensions/api/web_request/web_request_permissions_unittest.cc b/chrome/browser/extensions/api/web_request/web_request_permissions_unittest.cc
index 0a591846e5f39e57fce32abfef59f8110d41719c..357c0d5c59c39b4cb54894ab93305002fb334a94 100644
--- a/chrome/browser/extensions/api/web_request/web_request_permissions_unittest.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_permissions_unittest.cc
@@ -7,12 +7,67 @@
#include "base/message_loop.h"
#include "chrome/browser/extensions/extension_info_map.h"
#include "chrome/common/extensions/extension_constants.h"
+#include "chrome/common/extensions/extension_manifest_constants.h"
+#include "chrome/common/extensions/extension_test_util.h"
#include "chrome/test/base/testing_profile.h"
#include "content/public/browser/resource_request_info.h"
+#include "content/public/test/test_browser_thread.h"
#include "net/url_request/url_request_test_util.h"
#include "testing/gtest/include/gtest/gtest.h"
using content::ResourceRequestInfo;
+using extensions::Extension;
+using extensions::Manifest;
+using extension_test_util::LoadManifestUnchecked;
+
+class ExtensionWebRequestHelpersTestWithThreadsTest : public testing::Test {
+ public:
+ ExtensionWebRequestHelpersTestWithThreadsTest()
+ : io_thread_(content::BrowserThread::IO, &message_loop_) {}
+
+ protected:
+ virtual void SetUp() OVERRIDE;
+
+ protected:
+ net::TestURLRequestContext context;
+
+ // This extension has Web Request permissions, but no host permission.
+ scoped_refptr<Extension> permissionless_extension_;
+ // This extension has Web Request permissions, and *.com a host permission.
+ scoped_refptr<Extension> com_extension_;
+ scoped_refptr<ExtensionInfoMap> extension_info_map_;
+
+ private:
+ MessageLoopForIO message_loop_;
+ content::TestBrowserThread io_thread_;
+};
+
+void ExtensionWebRequestHelpersTestWithThreadsTest::SetUp() {
+ testing::Test::SetUp();
+
+ std::string error;
+ permissionless_extension_ = LoadManifestUnchecked("permissions",
+ "web_request_no_host.json",
+ Manifest::INVALID_LOCATION,
+ Extension::NO_FLAGS,
+ "ext_id_1",
+ &error);
+ ASSERT_TRUE(permissionless_extension_) << error;
+ com_extension_ =
+ LoadManifestUnchecked("permissions",
+ "web_request_com_host_permissions.json",
+ Manifest::INVALID_LOCATION,
+ Extension::NO_FLAGS,
+ "ext_id_2",
+ &error);
+ ASSERT_TRUE(com_extension_) << error;
+ extension_info_map_ = new ExtensionInfoMap;
+ extension_info_map_->AddExtension(permissionless_extension_.get(),
+ base::Time::Now(),
+ false /*incognito_enabled*/);
+ extension_info_map_->AddExtension(
+ com_extension_.get(), base::Time::Now(), false /*incognito_enabled*/);
+}
TEST(ExtensionWebRequestHelpersTest, TestHideRequestForURL) {
MessageLoopForIO message_loop;
@@ -71,3 +126,34 @@ TEST(ExtensionWebRequestHelpersTest, TestHideRequestForURL) {
EXPECT_TRUE(WebRequestPermissions::HideRequest(extension_info_map.get(),
&sensitive_request));
}
+
+TEST_F(ExtensionWebRequestHelpersTestWithThreadsTest,
+ TestCanExtensionAccessURL_HostPermissions) {
+ net::TestURLRequest request(
+ GURL("http://example.com"), NULL, &context, NULL);
+
+ EXPECT_TRUE(WebRequestPermissions::CanExtensionAccessURL(
+ extension_info_map_,
+ permissionless_extension_->id(),
+ request.url(),
+ false /*crosses_incognito*/,
+ WebRequestPermissions::DO_NOT_CHECK_HOST));
+ EXPECT_FALSE(WebRequestPermissions::CanExtensionAccessURL(
+ extension_info_map_,
+ permissionless_extension_->id(),
+ request.url(),
+ false /*crosses_incognito*/,
+ WebRequestPermissions::REQUIRE_HOST_PERMISSION));
+ EXPECT_TRUE(WebRequestPermissions::CanExtensionAccessURL(
+ extension_info_map_,
+ com_extension_->id(),
+ request.url(),
+ false /*crosses_incognito*/,
+ WebRequestPermissions::REQUIRE_HOST_PERMISSION));
+ EXPECT_FALSE(WebRequestPermissions::CanExtensionAccessURL(
+ extension_info_map_,
+ com_extension_->id(),
+ request.url(),
+ false /*crosses_incognito*/,
+ WebRequestPermissions::REQUIRE_ALL_URLS));
+}

Powered by Google App Engine
This is Rietveld 408576698