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

Unified Diff: chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc

Issue 2971333002: SafeBrowsing test for WebSocket connection from worker (Closed)
Patch Set: Created 3 years, 5 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/test/data/safe_browsing/malware_websocket.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc
diff --git a/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc b/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc
index aca92459484ce85ca4b437f374c7e0c4bcbd8e6d..10b405d1cd17b5335c2a87a5e67b465d4e79fc68 100644
--- a/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_service_browsertest.cc
@@ -10,6 +10,7 @@
#include <map>
#include <set>
+#include <string>
#include <utility>
#include "base/bind.h"
@@ -1481,7 +1482,14 @@ IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, StartAndStop) {
EXPECT_FALSE(csd_service->enabled());
}
-IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, MalwareWebSocketBlocked) {
+// Parameterised fixture to permit running the same test for Window and Worker
+// scopes.
+class SafeBrowsingServiceWebSocketTest
+ : public ::testing::WithParamInterface<std::string>,
+ public SafeBrowsingServiceTest {};
+
+IN_PROC_BROWSER_TEST_P(SafeBrowsingServiceWebSocketTest,
+ MalwareWebSocketBlocked) {
// This test currently only passes when the network service is enabled.
if (!base::FeatureList::IsEnabled(features::kNetworkService))
return;
@@ -1492,6 +1500,11 @@ IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, MalwareWebSocketBlocked) {
replace_scheme.SetScheme("ws", url::Component(0, strlen("ws")));
GURL websocket_url = resolved.ReplaceComponents(replace_scheme);
+ GURL::Replacements add_query;
+ std::string query = "type=" + GetParam();
+ add_query.SetQueryStr(query);
+ GURL main_url_with_query = main_url.ReplaceComponents(add_query);
+
// Add the WebSocket url as malware.
SBFullHashResult uws_full_hash;
GenUrlFullHashResult(websocket_url, MALWARE, &uws_full_hash);
@@ -1509,7 +1522,7 @@ IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, MalwareWebSocketBlocked) {
base::Unretained(this)));
EXPECT_CALL(observer_, OnSafeBrowsingHit(IsUnsafeResourceFor(websocket_url)));
- ui_test_utils::NavigateToURL(browser(), main_url);
+ ui_test_utils::NavigateToURL(browser(), main_url_with_query);
// If the interstitial fails to be displayed, the test will hang here.
load_stop_observer.Wait();
@@ -1518,6 +1531,11 @@ IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, MalwareWebSocketBlocked) {
EXPECT_TRUE(got_hit_report());
}
+INSTANTIATE_TEST_CASE_P(
+ /* no prefix */,
+ SafeBrowsingServiceWebSocketTest,
+ ::testing::Values("window", "worker"));
+
IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, UnknownWebSocketNotBlocked) {
GURL main_url = embedded_test_server()->GetURL(kMalwareWebSocketPage);
@@ -2247,10 +2265,17 @@ IN_PROC_BROWSER_TEST_F(V4SafeBrowsingServiceTest, CheckBrowseUrl) {
}
}
+// Parameterised fixture to permit running the same test for Window and Worker
+// scopes.
+class V4SafeBrowsingServiceWebSocketTest
+ : public ::testing::WithParamInterface<std::string>,
+ public V4SafeBrowsingServiceTest {};
+
// This is almost identical to
-// SafeBrowsingServiceTest.MalwareWebSocketBlocked. That test will be deleted
-// when the old database backend stops being used.
-IN_PROC_BROWSER_TEST_F(V4SafeBrowsingServiceTest, MalwareWebSocketBlocked) {
+// SafeBrowsingServiceWebSocketTest.MalwareWebSocketBlocked. That test will be
+// deleted when the old database backend is removed.
+IN_PROC_BROWSER_TEST_P(V4SafeBrowsingServiceWebSocketTest,
+ MalwareWebSocketBlocked) {
// This test currently only passes when the network service is enabled.
if (!base::FeatureList::IsEnabled(features::kNetworkService))
return;
@@ -2261,6 +2286,11 @@ IN_PROC_BROWSER_TEST_F(V4SafeBrowsingServiceTest, MalwareWebSocketBlocked) {
replace_scheme.SetScheme("ws", url::Component(0, strlen("ws")));
GURL websocket_url = resolved.ReplaceComponents(replace_scheme);
+ GURL::Replacements add_query;
+ std::string query = "type=" + GetParam();
+ add_query.SetQueryStr(query);
+ GURL main_url_with_query = main_url.ReplaceComponents(add_query);
+
MarkUrlForMalwareUnexpired(websocket_url);
// Brute force method for waiting for the interstitial to be displayed.
@@ -2275,7 +2305,7 @@ IN_PROC_BROWSER_TEST_F(V4SafeBrowsingServiceTest, MalwareWebSocketBlocked) {
base::Unretained(this)));
EXPECT_CALL(observer_, OnSafeBrowsingHit(IsUnsafeResourceFor(websocket_url)));
- ui_test_utils::NavigateToURL(browser(), main_url);
+ ui_test_utils::NavigateToURL(browser(), main_url_with_query);
// If the interstitial fails to be displayed, the test will hang here.
load_stop_observer.Wait();
@@ -2283,10 +2313,15 @@ IN_PROC_BROWSER_TEST_F(V4SafeBrowsingServiceTest, MalwareWebSocketBlocked) {
EXPECT_TRUE(ShowingInterstitialPage());
EXPECT_TRUE(got_hit_report());
EXPECT_EQ(websocket_url, hit_report().malicious_url);
- EXPECT_EQ(main_url, hit_report().page_url);
+ EXPECT_EQ(main_url_with_query, hit_report().page_url);
EXPECT_TRUE(hit_report().is_subresource);
}
+// TODO(ricea): Test SharedWorker and ServiceWorker scopes as well.
+INSTANTIATE_TEST_CASE_P(/* no prefix */,
+ V4SafeBrowsingServiceWebSocketTest,
+ ::testing::Values("window", "worker"));
+
// Identical to SafeBrowsingServiceTest.UnknownWebSocketNotBlocked. Uses the
// V4 database backend.
IN_PROC_BROWSER_TEST_F(V4SafeBrowsingServiceTest, UnknownWebSocketNotBlocked) {
« no previous file with comments | « no previous file | chrome/test/data/safe_browsing/malware_websocket.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698