[Service Worker] Add console message for aborted preload request
When a navigation preload request is aborted, no console message is sent to the service worker. That's because the "unsanitized_message" field of blink::WebServiceWorkerError is not set. When Sending the message to console, prefer the unsanitized one if avaiable. Update service worker browser test to cover this change. Bug: 877870 Test: content_browsertests -gtest_filter=ServiceWorkerNavigationPreloadTest.CanceledByInterceptor Change-Id: Icad28ce1a9feb40b729bc2504d9c9adb33593a0a Reviewed-on: https://chromium-review.googlesource.com/1235376 Commit-Queue: Leon Han <leon.han@intel.com> Reviewed-by: Matt Falkenhagen <falken@chromium.org> Cr-Commit-Position: refs/heads/master@{#593823}
This commit is contained in:
1
AUTHORS
1
AUTHORS
@ -859,6 +859,7 @@ Tim Niederhausen <tim@rnc-ag.de>
|
||||
Timo Gurr <timo.gurr@gmail.com>
|
||||
Timo Reimann <ttr314@googlemail.com>
|
||||
Timo Witte <timo.witte@gmail.com>
|
||||
Ting Shao <ting.shao@intel.com>
|
||||
Tom Callaway <tcallawa@redhat.com>
|
||||
Tom Harwood <tfh@skip.org>
|
||||
Tomas Popela <tomas.popela@gmail.com>
|
||||
|
@ -2318,6 +2318,10 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest,
|
||||
return;
|
||||
}
|
||||
|
||||
auto console_observer =
|
||||
base::MakeRefCounted<ConsoleMessageContextObserver>(wrapper());
|
||||
console_observer->Init();
|
||||
|
||||
content::ResourceDispatcherHost::Get()->RegisterInterceptor(
|
||||
kNavigationPreloadHeaderName, "",
|
||||
base::Bind(&CancellingInterceptorCallback));
|
||||
@ -2332,6 +2336,11 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest,
|
||||
|
||||
EXPECT_EQ(kNavigationPreloadAbortError,
|
||||
LoadNavigationPreloadTestPage(page_url, worker_url, "REJECTED"));
|
||||
|
||||
console_observer->WaitForConsoleMessages(1);
|
||||
const base::string16 expected = base::ASCIIToUTF16("request was cancelled");
|
||||
std::vector<base::string16> messages = console_observer->messages();
|
||||
EXPECT_NE(base::string16::npos, messages[0].find(expected));
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest,
|
||||
|
@ -435,11 +435,15 @@ void ServiceWorkerGlobalScopeProxy::OnNavigationPreloadError(
|
||||
DCHECK(WorkerGlobalScope()->IsContextThread());
|
||||
FetchEvent* fetch_event = pending_preload_fetch_events_.Take(fetch_event_id);
|
||||
DCHECK(fetch_event);
|
||||
// Display an unsanitized console message.
|
||||
if (!error->unsanitized_message.IsEmpty()) {
|
||||
// Display an error message to the console, preferring the unsanitized one if
|
||||
// available.
|
||||
const WebString& error_message = error->unsanitized_message.IsEmpty()
|
||||
? error->message
|
||||
: error->unsanitized_message;
|
||||
if (!error_message.IsEmpty()) {
|
||||
WorkerGlobalScope()->AddConsoleMessage(ConsoleMessage::Create(
|
||||
kWorkerMessageSource, blink::MessageLevel::kErrorMessageLevel,
|
||||
error->unsanitized_message));
|
||||
error_message));
|
||||
}
|
||||
// Reject the preloadResponse promise.
|
||||
fetch_event->OnNavigationPreloadError(
|
||||
|
Reference in New Issue
Block a user