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 2455393002: PS - Adjusting webRequest API for use in Public Sessions (Closed)
Patch Set: Moved a part of code and added unit tests for URL whitelisting (part 1/2) Created 4 years, 1 month 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 4165bb6aca35fc8ff3bed34a705833be05450ea9..2c6bc89ca5b924a5d1976a042d28210f27d2cc1c 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
@@ -9,6 +9,7 @@
#include "base/macros.h"
#include "base/message_loop/message_loop.h"
#include "chrome/common/extensions/extension_test_util.h"
+#include "chromeos/login/login_state.h"
#include "content/public/browser/resource_request_info.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "extensions/browser/api/web_request/web_request_permissions.h"
@@ -46,6 +47,9 @@ class ExtensionWebRequestHelpersTestWithThreadsTest : public testing::Test {
scoped_refptr<Extension> permissionless_extension_;
// This extension has Web Request permissions, and *.com a host permission.
scoped_refptr<Extension> com_extension_;
+ // This extension is the same as com_extension, except it's installed from
+ // Manifest::EXTERNAL_POLICY_DOWNLOAD.
+ scoped_refptr<Extension> com_policy_extension_;
scoped_refptr<extensions::InfoMap> extension_info_map_;
};
@@ -68,6 +72,14 @@ void ExtensionWebRequestHelpersTestWithThreadsTest::SetUp() {
"ext_id_2",
&error);
ASSERT_TRUE(com_extension_.get()) << error;
+ com_policy_extension_ =
+ LoadManifestUnchecked("permissions",
+ "web_request_com_host_permissions.json",
+ Manifest::EXTERNAL_POLICY_DOWNLOAD,
+ Extension::NO_FLAGS,
+ "ext_id_3",
+ &error);
+ ASSERT_TRUE(com_policy_extension_.get()) << error;
extension_info_map_ = new extensions::InfoMap;
extension_info_map_->AddExtension(permissionless_extension_.get(),
base::Time::Now(),
@@ -78,6 +90,11 @@ void ExtensionWebRequestHelpersTestWithThreadsTest::SetUp() {
base::Time::Now(),
false /*incognito_enabled*/,
false /*notifications_disabled*/);
+ extension_info_map_->AddExtension(
+ com_policy_extension_.get(),
+ base::Time::Now(),
+ false /*incognito_enabled*/,
+ false /*notifications_disabled*/);
}
TEST_F(ExtensionWebRequestHelpersTestWithThreadsTest, TestHideRequestForURL) {
@@ -184,4 +201,43 @@ TEST_F(ExtensionWebRequestHelpersTestWithThreadsTest,
-1, // No tab id.
false /*crosses_incognito*/,
WebRequestPermissions::REQUIRE_ALL_URLS));
+
+ // Public Sessions tests.
+#if defined(OS_CHROMEOS)
+ std::unique_ptr<net::URLRequest> org_request(context.CreateRequest(
+ GURL("http://example.org"), net::DEFAULT_PRIORITY, NULL));
+
+ // com_extension_ doesn't have host permission for .org URL's.
+ EXPECT_EQ(PermissionsData::ACCESS_DENIED,
+ WebRequestPermissions::CanExtensionAccessURL(
+ extension_info_map_.get(), com_policy_extension_->id(),
+ org_request->url(),
+ -1, // No tab id.
+ false /*crosses_incognito*/,
Andrew T Wilson (Slow) 2016/11/09 08:36:00 please make the comment style consistent, here and
Ivan Šandrk 2016/11/09 12:12:13 Done.
+ WebRequestPermissions::REQUIRE_HOST_PERMISSION));
+
+ // Set Public Session state.
+ chromeos::LoginState::Initialize();
+ chromeos::LoginState::Get()->SetLoggedInState(
+ chromeos::LoginState::LOGGED_IN_ACTIVE,
+ chromeos::LoginState::LOGGED_IN_USER_PUBLIC_ACCOUNT);
+
+ // Host permission checks are disabled in Public Sessions, instead all URL's
+ // are whitelisted.
+ EXPECT_EQ(PermissionsData::ACCESS_ALLOWED,
+ WebRequestPermissions::CanExtensionAccessURL(
+ extension_info_map_.get(), com_policy_extension_->id(),
+ org_request->url(),
+ -1, // No tab id.
+ false /*crosses_incognito*/,
+ WebRequestPermissions::REQUIRE_HOST_PERMISSION));
+
+ EXPECT_EQ(PermissionsData::ACCESS_ALLOWED,
+ WebRequestPermissions::CanExtensionAccessURL(
+ extension_info_map_.get(), com_policy_extension_->id(),
+ org_request->url(),
+ -1, // No tab id.
+ false /*crosses_incognito*/,
+ WebRequestPermissions::REQUIRE_ALL_URLS));
+#endif
}

Powered by Google App Engine
This is Rietveld 408576698