diff --git a/browser/brave_search/brave_search_browsertest.cc b/browser/brave_search/brave_search_browsertest.cc
index c555ddc601b..265b55fa002 100644
--- a/browser/brave_search/brave_search_browsertest.cc
+++ b/browser/brave_search/brave_search_browsertest.cc
@@ -3,9 +3,12 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
+#include "base/path_service.h"
#include "base/task/post_task.h"
#include "base/test/thread_test_helper.h"
#include "brave/browser/brave_browser_process_impl.h"
+#include "brave/common/brave_paths.h"
+#include "brave/common/pref_names.h"
#include "brave/components/brave_search/browser/brave_search_host.h"
#include "chrome/browser/extensions/extension_browsertest.h"
#include "chrome/browser/ui/browser.h"
@@ -23,6 +26,7 @@ using extensions::ExtensionBrowserTest;
namespace {
+const char kEmbeddedTestServerDirectory[] = "brave-search";
const char kAllowedDomain[] = "search.brave.com";
const char kAllowedDomainDev[] = "search-dev.brave.com";
const char kNotAllowedDomain[] = "brave.com";
@@ -30,18 +34,15 @@ const char kBackupSearchContent[] = "
results";
std::string GetChromeFetchBackupResultsAvailScript() {
return base::StringPrintf(R"(function waitForFunction() {
- if (window.chrome.fetchBackupResults != undefined) {
- console.log('calling fetch backup results')
- window.chrome.fetchBackupResults('test', 'en', 'us', 'US')
- .then((result) => {
- const expected = result === '%s'
- window.domAutomationController.send(expected);
- })
- } else {
- console.log('still waiting for the function');
- setTimeout(waitForFunction, 200);
- }
- } waitForFunction();)",
+ setTimeout(waitForFunction, 200);
+ }
+ navigator.serviceWorker.addEventListener('message', msg => {
+ if (msg.data && msg.data.result === 'INJECTED') {
+ window.domAutomationController.send(msg.data.response === '%s');
+ } else if (msg.data && msg.data.result === 'FAILED') {
+ window.domAutomationController.send(false);
+ }});
+ waitForFunction();)",
kBackupSearchContent);
}
@@ -61,6 +62,12 @@ class BraveSearchTest : public InProcessBrowserTest {
https_server_->RegisterRequestHandler(base::BindRepeating(
&BraveSearchTest::HandleRequest, base::Unretained(this)));
+ brave::RegisterPathProvider();
+ base::FilePath test_data_dir;
+ base::PathService::Get(brave::DIR_TEST_DATA, &test_data_dir);
+ test_data_dir = test_data_dir.AppendASCII(kEmbeddedTestServerDirectory);
+ https_server_->ServeFilesFromDirectory(test_data_dir);
+
ASSERT_TRUE(https_server_->Start());
GURL url = https_server()->GetURL("a.com", "/search");
brave_search::BraveSearchHost::SetBackupProviderForTest(url);
@@ -74,16 +81,17 @@ class BraveSearchTest : public InProcessBrowserTest {
std::unique_ptr HandleRequest(
const net::test_server::HttpRequest& request) {
+ if (request.GetURL().path_piece() == "/sw.js" ||
+ request.GetURL().path_piece() == "/bravesearch.html")
+ return nullptr;
+
+ GURL url = request.GetURL();
auto http_response =
std::make_unique();
- if (request.GetURL().path_piece() == "/simple.html") {
+ if (url.path() + "?" + url.query() ==
+ "/search?q=test&hl=en&gl=us&self=active") {
http_response->set_code(net::HTTP_OK);
http_response->set_content_type("text/html");
- http_response->set_content("simple.html");
- return http_response;
- } else if (request.GetURL().path_piece() == "/search") {
- http_response->set_code(net::HTTP_OK);
- http_response->set_content_type("application/json");
http_response->set_content(kBackupSearchContent);
return http_response;
}
@@ -97,8 +105,8 @@ class BraveSearchTest : public InProcessBrowserTest {
std::unique_ptr https_server_;
};
-IN_PROC_BROWSER_TEST_F(BraveSearchTest, DISABLED_CheckForAFunction) {
- GURL url = https_server()->GetURL(kAllowedDomain, "/simple.html");
+IN_PROC_BROWSER_TEST_F(BraveSearchTest, CheckForAFunction) {
+ GURL url = https_server()->GetURL(kAllowedDomain, "/bravesearch.html");
ui_test_utils::NavigateToURL(browser(), url);
content::WebContents* contents =
browser()->tab_strip_model()->GetActiveWebContents();
@@ -109,8 +117,8 @@ IN_PROC_BROWSER_TEST_F(BraveSearchTest, DISABLED_CheckForAFunction) {
EXPECT_EQ(base::Value(true), result_first.value);
}
-IN_PROC_BROWSER_TEST_F(BraveSearchTest, DISABLED_CheckForAFunctionDev) {
- GURL url = https_server()->GetURL(kAllowedDomainDev, "/simple.html");
+IN_PROC_BROWSER_TEST_F(BraveSearchTest, CheckForAFunctionDev) {
+ GURL url = https_server()->GetURL(kAllowedDomainDev, "/bravesearch.html");
ui_test_utils::NavigateToURL(browser(), url);
content::WebContents* contents =
browser()->tab_strip_model()->GetActiveWebContents();
@@ -121,20 +129,14 @@ IN_PROC_BROWSER_TEST_F(BraveSearchTest, DISABLED_CheckForAFunctionDev) {
EXPECT_EQ(base::Value(true), result_first.value);
}
-IN_PROC_BROWSER_TEST_F(BraveSearchTest, DISABLED_CheckForAnUndefinedFunction) {
- GURL url = https_server()->GetURL(kNotAllowedDomain, "/simple.html");
+IN_PROC_BROWSER_TEST_F(BraveSearchTest, CheckForAnUndefinedFunction) {
+ GURL url = https_server()->GetURL(kNotAllowedDomain, "/bravesearch.html");
ui_test_utils::NavigateToURL(browser(), url);
content::WebContents* contents =
browser()->tab_strip_model()->GetActiveWebContents();
WaitForLoadStop(contents);
- auto result_first = EvalJsWithManualReply(contents,
- R"(function waitForFunction() {
- if (window.chrome.fetchBackupResults != undefined) {
- window.domAutomationController.send(false);
- } else {
- window.domAutomationController.send(true);
- }
- } setTimeout(waitForFunction, 1000);)");
- EXPECT_EQ(base::Value(true), result_first.value);
+ auto result_first =
+ EvalJsWithManualReply(contents, GetChromeFetchBackupResultsAvailScript());
+ EXPECT_EQ(base::Value(false), result_first.value);
}
diff --git a/components/brave_search/browser/brave_search_host.cc b/components/brave_search/browser/brave_search_host.cc
index 6080df3e1ba..3c56ac596af 100644
--- a/components/brave_search/browser/brave_search_host.cc
+++ b/components/brave_search/browser/brave_search_host.cc
@@ -7,8 +7,8 @@
#include
-#include "base/strings/stringprintf.h"
#include "net/base/load_flags.h"
+#include "net/base/url_util.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
#include "services/network/public/cpp/simple_url_loader.h"
@@ -52,21 +52,40 @@ BraveSearchHost::BraveSearchHost(
BraveSearchHost::~BraveSearchHost() {}
+// [static]
+GURL BraveSearchHost::GetBackupResultURL(const GURL& baseURL,
+ const std::string& query,
+ const std::string& lang,
+ const std::string& country,
+ const std::string& geo,
+ bool filter_explicit_results) {
+ GURL url = baseURL;
+ url = net::AppendQueryParameter(url, "q", query);
+ if (!lang.empty()) {
+ url = net::AppendQueryParameter(url, "hl", lang);
+ }
+ if (!country.empty()) {
+ url = net::AppendQueryParameter(url, "gl", country);
+ }
+ if (filter_explicit_results) {
+ url = net::AppendQueryParameter(url, "self", "active");
+ }
+ return url;
+}
+
void BraveSearchHost::FetchBackupResults(const std::string& query,
const std::string& lang,
const std::string& country,
const std::string& geo,
+ bool filter_explicit_results,
FetchBackupResultsCallback callback) {
auto request = std::make_unique();
-
- if (backup_provider_for_test.is_empty()) {
- std::string spec(
- base::StringPrintf("https://www.google.com/search?q=%s&hl=%s&gl=%s",
- query.c_str(), lang.c_str(), country.c_str()));
- request->url = GURL(spec);
- } else {
+ request->url = GURL("https://www.google.com/search");
+ if (!backup_provider_for_test.is_empty()) {
request->url = backup_provider_for_test;
}
+ request->url = GetBackupResultURL(request->url, query, lang, country, geo,
+ filter_explicit_results);
request->load_flags = net::LOAD_BYPASS_CACHE | net::LOAD_DISABLE_CACHE;
request->credentials_mode = network::mojom::CredentialsMode::kOmit;
request->load_flags |= net::LOAD_DO_NOT_SAVE_COOKIES;
diff --git a/components/brave_search/browser/brave_search_host.h b/components/brave_search/browser/brave_search_host.h
index 50f558c408c..ed0af1ebbb4 100644
--- a/components/brave_search/browser/brave_search_host.h
+++ b/components/brave_search/browser/brave_search_host.h
@@ -34,7 +34,15 @@ class BraveSearchHost final : public brave_search::mojom::BraveSearchFallback {
const std::string& lang,
const std::string& country,
const std::string& geo,
+ bool filter_explicit_results,
FetchBackupResultsCallback callback) override;
+
+ static GURL GetBackupResultURL(const GURL& baseURL,
+ const std::string& query,
+ const std::string& lang,
+ const std::string& country,
+ const std::string& geo,
+ bool filter_explicit_results);
static void SetBackupProviderForTest(const GURL&);
private:
diff --git a/components/brave_search/browser/brave_search_host_unittest.cc b/components/brave_search/browser/brave_search_host_unittest.cc
new file mode 100644
index 00000000000..117f28506f8
--- /dev/null
+++ b/components/brave_search/browser/brave_search_host_unittest.cc
@@ -0,0 +1,48 @@
+/* Copyright (c) 2021 The Brave Authors. All rights reserved.
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "brave/components/brave_search/browser/brave_search_host.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+
+namespace brave_search {
+
+TEST(BraveSearchHost, GetBackupResultURL) {
+ GURL base_url("https://www.google.com/search/");
+ ASSERT_EQ(
+ BraveSearchHost::GetBackupResultURL(base_url, "test", "en", "ca", "32,32",
+ true),
+ GURL("https://www.google.com/search/?q=test&hl=en&gl=ca&self=active"));
+}
+
+TEST(BraveSearchHost, GetBackupResultURLNoLang) {
+ GURL base_url("https://www.google.com/search/");
+ ASSERT_EQ(BraveSearchHost::GetBackupResultURL(base_url, "test", "", "ca",
+ "32,32", true),
+ GURL("https://www.google.com/search/?q=test&gl=ca&self=active"));
+}
+
+TEST(BraveSearchHost, GetBackupResultURLNoCountry) {
+ GURL base_url("https://www.google.com/search/");
+ ASSERT_EQ(BraveSearchHost::GetBackupResultURL(base_url, "test", "en", "",
+ "32,32", true),
+ GURL("https://www.google.com/search/?q=test&hl=en&self=active"));
+}
+
+TEST(BraveSearchHost, GetBackupResultURLNoFilter) {
+ GURL base_url("https://www.google.com/search/");
+ ASSERT_EQ(BraveSearchHost::GetBackupResultURL(base_url, "test", "en", "ca",
+ "32,32", false),
+ GURL("https://www.google.com/search/?q=test&hl=en&gl=ca"));
+}
+
+TEST(BraveSearchHost, GetBackupResultURLMinimal) {
+ GURL base_url("https://www.google.com/search/");
+ ASSERT_EQ(
+ BraveSearchHost::GetBackupResultURL(base_url, "test", "", "", "", false),
+ GURL("https://www.google.com/search/?q=test"));
+}
+
+} // namespace brave_search
diff --git a/components/brave_search/common/brave_search.mojom b/components/brave_search/common/brave_search.mojom
index 52f294854b5..9a841d0a65d 100644
--- a/components/brave_search/common/brave_search.mojom
+++ b/components/brave_search/common/brave_search.mojom
@@ -6,5 +6,6 @@ interface BraveSearchFallback {
FetchBackupResults(string query_string,
string lang,
string country,
- string geo) => (string response);
+ string geo,
+ bool filter_explicit_results) => (string response);
};
diff --git a/components/brave_search/renderer/BUILD.gn b/components/brave_search/renderer/BUILD.gn
index 7927e082d94..3695cb4a11c 100644
--- a/components/brave_search/renderer/BUILD.gn
+++ b/components/brave_search/renderer/BUILD.gn
@@ -2,8 +2,8 @@ source_set("renderer") {
sources = [
"brave_search_js_handler.cc",
"brave_search_js_handler.h",
- "brave_search_sw_holder.cc",
- "brave_search_sw_holder.h",
+ "brave_search_service_worker_holder.cc",
+ "brave_search_service_worker_holder.h",
]
deps = [
diff --git a/components/brave_search/renderer/brave_search_js_handler.cc b/components/brave_search/renderer/brave_search_js_handler.cc
index 9babd5e0d0d..f3c8417a2ce 100644
--- a/components/brave_search/renderer/brave_search_js_handler.cc
+++ b/components/brave_search/renderer/brave_search_js_handler.cc
@@ -96,7 +96,8 @@ v8::Local BraveSearchJSHandler::FetchBackupResults(
const std::string& query_string,
const std::string& lang,
const std::string& country,
- const std::string& geo) {
+ const std::string& geo,
+ bool filter_explicit_results) {
if (!EnsureConnected())
return v8::Local();
@@ -107,7 +108,7 @@ v8::Local BraveSearchJSHandler::FetchBackupResults(
std::make_unique>();
promise_resolver->Reset(isolate_, resolver.ToLocalChecked());
brave_search_fallback_->FetchBackupResults(
- query_string, lang, country, geo,
+ query_string, lang, country, geo, filter_explicit_results,
base::BindOnce(&BraveSearchJSHandler::OnFetchBackupResults,
base::Unretained(this), std::move(promise_resolver)));
diff --git a/components/brave_search/renderer/brave_search_js_handler.h b/components/brave_search/renderer/brave_search_js_handler.h
index 0f59b0d841a..387b040db15 100644
--- a/components/brave_search/renderer/brave_search_js_handler.h
+++ b/components/brave_search/renderer/brave_search_js_handler.h
@@ -46,7 +46,8 @@ class BraveSearchJSHandler {
v8::Local FetchBackupResults(const std::string& query_string,
const std::string& lang,
const std::string& country,
- const std::string& geo);
+ const std::string& geo,
+ bool filter_explicit_results);
void OnFetchBackupResults(
std::unique_ptr> promise_resolver,
const std::string& response);
diff --git a/components/brave_search/renderer/brave_search_sw_holder.cc b/components/brave_search/renderer/brave_search_service_worker_holder.cc
similarity index 78%
rename from components/brave_search/renderer/brave_search_sw_holder.cc
rename to components/brave_search/renderer/brave_search_service_worker_holder.cc
index db917f67f31..5d647f529cf 100644
--- a/components/brave_search/renderer/brave_search_sw_holder.cc
+++ b/components/brave_search/renderer/brave_search_service_worker_holder.cc
@@ -3,7 +3,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
-#include "brave/components/brave_search/renderer/brave_search_sw_holder.h"
+#include "brave/components/brave_search/renderer/brave_search_service_worker_holder.h"
#include
#include
@@ -15,7 +15,7 @@
namespace {
static base::NoDestructor> g_vetted_hosts(
- {"search.brave.com", "search-dev.brave.com"});
+ {"search.brave.com", "search-dev.brave.com", "search-dev-local.brave.com"});
bool IsAllowedHost(const GURL& url) {
std::string host = url.host();
@@ -46,16 +46,17 @@ JSHandlersVector::iterator FindContext(JSHandlersVector* contexts,
return std::find_if(contexts->begin(), contexts->end(), context_matches);
}
-BraveSearchSWHolder::BraveSearchSWHolder() : broker_(nullptr) {}
+BraveSearchServiceWorkerHolder::BraveSearchServiceWorkerHolder()
+ : broker_(nullptr) {}
-BraveSearchSWHolder::~BraveSearchSWHolder() = default;
+BraveSearchServiceWorkerHolder::~BraveSearchServiceWorkerHolder() = default;
-void BraveSearchSWHolder::SetBrowserInterfaceBrokerProxy(
+void BraveSearchServiceWorkerHolder::SetBrowserInterfaceBrokerProxy(
blink::ThreadSafeBrowserInterfaceBrokerProxy* broker) {
broker_ = broker;
}
-void BraveSearchSWHolder::WillEvaluateServiceWorkerOnWorkerThread(
+void BraveSearchServiceWorkerHolder::WillEvaluateServiceWorkerOnWorkerThread(
blink::WebServiceWorkerContextProxy* context_proxy,
v8::Local v8_context,
int64_t service_worker_version_id,
@@ -80,11 +81,12 @@ void BraveSearchSWHolder::WillEvaluateServiceWorkerOnWorkerThread(
js_handlers->push_back(std::move(js_handler));
}
-void BraveSearchSWHolder::WillDestroyServiceWorkerContextOnWorkerThread(
- v8::Local v8_context,
- int64_t service_worker_version_id,
- const GURL& service_worker_scope,
- const GURL& script_url) {
+void BraveSearchServiceWorkerHolder::
+ WillDestroyServiceWorkerContextOnWorkerThread(
+ v8::Local v8_context,
+ int64_t service_worker_version_id,
+ const GURL& service_worker_scope,
+ const GURL& script_url) {
if (!service_worker_scope.is_valid() ||
!service_worker_scope.SchemeIsHTTPOrHTTPS() ||
!IsAllowedHost(service_worker_scope))
@@ -98,7 +100,7 @@ void BraveSearchSWHolder::WillDestroyServiceWorkerContextOnWorkerThread(
js_handlers->erase(context_it);
}
-void BraveSearchSWHolder::WillStopCurrentWorkerThread() {
+void BraveSearchServiceWorkerHolder::WillStopCurrentWorkerThread() {
content::WorkerThread::RemoveObserver(this);
JSHandlersVector* js_handlers = js_handlers_tls_.Get();
DCHECK(js_handlers);
diff --git a/components/brave_search/renderer/brave_search_sw_holder.h b/components/brave_search/renderer/brave_search_service_worker_holder.h
similarity index 75%
rename from components/brave_search/renderer/brave_search_sw_holder.h
rename to components/brave_search/renderer/brave_search_service_worker_holder.h
index c8fd6de3fc2..7a40666c973 100644
--- a/components/brave_search/renderer/brave_search_sw_holder.h
+++ b/components/brave_search/renderer/brave_search_service_worker_holder.h
@@ -3,8 +3,8 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
-#ifndef BRAVE_COMPONENTS_BRAVE_SEARCH_RENDERER_BRAVE_SEARCH_SW_HOLDER_H_
-#define BRAVE_COMPONENTS_BRAVE_SEARCH_RENDERER_BRAVE_SEARCH_SW_HOLDER_H_
+#ifndef BRAVE_COMPONENTS_BRAVE_SEARCH_RENDERER_BRAVE_SEARCH_SERVICE_WORKER_HOLDER_H_
+#define BRAVE_COMPONENTS_BRAVE_SEARCH_RENDERER_BRAVE_SEARCH_SERVICE_WORKER_HOLDER_H_
#include
#include
@@ -24,12 +24,14 @@ namespace brave_search {
class BraveSearchJSHandler;
-class BraveSearchSWHolder : public content::WorkerThread::Observer {
+class BraveSearchServiceWorkerHolder : public content::WorkerThread::Observer {
public:
- BraveSearchSWHolder();
- BraveSearchSWHolder(const BraveSearchSWHolder&) = delete;
- BraveSearchSWHolder& operator=(const BraveSearchSWHolder&) = delete;
- ~BraveSearchSWHolder() override;
+ BraveSearchServiceWorkerHolder();
+ BraveSearchServiceWorkerHolder(const BraveSearchServiceWorkerHolder&) =
+ delete;
+ BraveSearchServiceWorkerHolder& operator=(
+ const BraveSearchServiceWorkerHolder&) = delete;
+ ~BraveSearchServiceWorkerHolder() override;
void SetBrowserInterfaceBrokerProxy(
blink::ThreadSafeBrowserInterfaceBrokerProxy* broker);
@@ -58,4 +60,4 @@ class BraveSearchSWHolder : public content::WorkerThread::Observer {
} // namespace brave_search
-#endif // BRAVE_COMPONENTS_BRAVE_SEARCH_RENDERER_BRAVE_SEARCH_SW_HOLDER_H_
+#endif // BRAVE_COMPONENTS_BRAVE_SEARCH_RENDERER_BRAVE_SEARCH_SERVICE_WORKER_HOLDER_H_
diff --git a/renderer/brave_content_renderer_client.cc b/renderer/brave_content_renderer_client.cc
index 81fa08cf317..88430ab56fb 100644
--- a/renderer/brave_content_renderer_client.cc
+++ b/renderer/brave_content_renderer_client.cc
@@ -46,7 +46,7 @@ void BraveContentRendererClient::RenderThreadStarted() {
brave_observer_ = std::make_unique();
content::RenderThread::Get()->AddObserver(brave_observer_.get());
- brave_search_sw_holder_.SetBrowserInterfaceBrokerProxy(
+ brave_search_service_worker_holder_.SetBrowserInterfaceBrokerProxy(
browser_interface_broker_.get());
}
@@ -87,7 +87,7 @@ void BraveContentRendererClient::WillEvaluateServiceWorkerOnWorkerThread(
int64_t service_worker_version_id,
const GURL& service_worker_scope,
const GURL& script_url) {
- brave_search_sw_holder_.WillEvaluateServiceWorkerOnWorkerThread(
+ brave_search_service_worker_holder_.WillEvaluateServiceWorkerOnWorkerThread(
context_proxy, v8_context, service_worker_version_id,
service_worker_scope, script_url);
ChromeContentRendererClient::WillEvaluateServiceWorkerOnWorkerThread(
@@ -100,8 +100,10 @@ void BraveContentRendererClient::WillDestroyServiceWorkerContextOnWorkerThread(
int64_t service_worker_version_id,
const GURL& service_worker_scope,
const GURL& script_url) {
- brave_search_sw_holder_.WillDestroyServiceWorkerContextOnWorkerThread(
- v8_context, service_worker_version_id, service_worker_scope, script_url);
+ brave_search_service_worker_holder_
+ .WillDestroyServiceWorkerContextOnWorkerThread(
+ v8_context, service_worker_version_id, service_worker_scope,
+ script_url);
ChromeContentRendererClient::WillDestroyServiceWorkerContextOnWorkerThread(
v8_context, service_worker_version_id, service_worker_scope, script_url);
}
diff --git a/renderer/brave_content_renderer_client.h b/renderer/brave_content_renderer_client.h
index b26926d3b0d..b7b859e0198 100644
--- a/renderer/brave_content_renderer_client.h
+++ b/renderer/brave_content_renderer_client.h
@@ -8,7 +8,7 @@
#include
-#include "brave/components/brave_search/renderer/brave_search_sw_holder.h"
+#include "brave/components/brave_search/renderer/brave_search_service_worker_holder.h"
#include "chrome/renderer/chrome_content_renderer_client.h"
#include "v8/include/v8.h"
@@ -42,7 +42,8 @@ class BraveContentRendererClient : public ChromeContentRendererClient {
private:
std::unique_ptr brave_observer_;
- brave_search::BraveSearchSWHolder brave_search_sw_holder_;
+ brave_search::BraveSearchServiceWorkerHolder
+ brave_search_service_worker_holder_;
DISALLOW_COPY_AND_ASSIGN(BraveContentRendererClient);
};
diff --git a/test/BUILD.gn b/test/BUILD.gn
index 1c9adb337fc..cd24cce7385 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -93,6 +93,7 @@ test("brave_unit_tests") {
"//brave/common/brave_content_client_unittest.cc",
"//brave/components/assist_ranker/ranker_model_loader_impl_unittest.cc",
"//brave/components/brave_private_cdn/private_cdn_helper_unittest.cc",
+ "//brave/components/brave_search/browser/brave_search_host_unittest.cc",
"//brave/components/brave_shields/browser/ad_block_regional_service_unittest.cc",
"//brave/components/brave_shields/browser/adblock_stub_response_unittest.cc",
"//brave/components/brave_shields/browser/cosmetic_merge_unittest.cc",
@@ -150,6 +151,7 @@ test("brave_unit_tests") {
"//brave/components/brave_referrals/buildflags",
"//brave/components/brave_referrals/common",
"//brave/components/brave_rewards/test:brave_rewards_unit_tests",
+ "//brave/components/brave_search/browser",
"//brave/components/brave_shields/browser",
"//brave/components/brave_shields/common",
"//brave/components/brave_wallet/browser/test:brave_wallet_unit_tests",
diff --git a/test/data/brave-search/bravesearch.html b/test/data/brave-search/bravesearch.html
new file mode 100644
index 00000000000..bbf10a8b0af
--- /dev/null
+++ b/test/data/brave-search/bravesearch.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+
diff --git a/test/data/brave-search/sw.js b/test/data/brave-search/sw.js
new file mode 100644
index 00000000000..92ef873d1f9
--- /dev/null
+++ b/test/data/brave-search/sw.js
@@ -0,0 +1,23 @@
+function notifyMain(result) {
+ self.clients.matchAll({
+ includeUncontrolled: true,
+ type: 'window',
+ }).then((clients) => {
+ if (clients && clients.length) {
+ clients[0].postMessage(result);
+ }
+ });
+}
+
+function waitForFunction() {
+ if (self.brave != undefined && self.brave.fetchBackupResults != undefined) {
+ console.log('calling fetch backup results')
+ self.brave.fetchBackupResults('test', 'en', 'us', 'US', true)
+ .then((response) => {
+ notifyMain({result: 'INJECTED', response: response});
+ })
+ } else {
+ notifyMain({result: 'FAILED'});
+ }
+}
+setTimeout(waitForFunction, 1000);