Commit 06f028f7 authored by Ting Shao's avatar Ting Shao Committed by Commit Bot

[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: default avatarMatt Falkenhagen <falken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#593823}
parent 86f51f0b
...@@ -859,6 +859,7 @@ Tim Niederhausen <tim@rnc-ag.de> ...@@ -859,6 +859,7 @@ Tim Niederhausen <tim@rnc-ag.de>
Timo Gurr <timo.gurr@gmail.com> Timo Gurr <timo.gurr@gmail.com>
Timo Reimann <ttr314@googlemail.com> Timo Reimann <ttr314@googlemail.com>
Timo Witte <timo.witte@gmail.com> Timo Witte <timo.witte@gmail.com>
Ting Shao <ting.shao@intel.com>
Tom Callaway <tcallawa@redhat.com> Tom Callaway <tcallawa@redhat.com>
Tom Harwood <tfh@skip.org> Tom Harwood <tfh@skip.org>
Tomas Popela <tomas.popela@gmail.com> Tomas Popela <tomas.popela@gmail.com>
......
...@@ -2318,6 +2318,10 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest, ...@@ -2318,6 +2318,10 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest,
return; return;
} }
auto console_observer =
base::MakeRefCounted<ConsoleMessageContextObserver>(wrapper());
console_observer->Init();
content::ResourceDispatcherHost::Get()->RegisterInterceptor( content::ResourceDispatcherHost::Get()->RegisterInterceptor(
kNavigationPreloadHeaderName, "", kNavigationPreloadHeaderName, "",
base::Bind(&CancellingInterceptorCallback)); base::Bind(&CancellingInterceptorCallback));
...@@ -2332,6 +2336,11 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest, ...@@ -2332,6 +2336,11 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest,
EXPECT_EQ(kNavigationPreloadAbortError, EXPECT_EQ(kNavigationPreloadAbortError,
LoadNavigationPreloadTestPage(page_url, worker_url, "REJECTED")); 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, IN_PROC_BROWSER_TEST_F(ServiceWorkerNavigationPreloadTest,
......
...@@ -435,11 +435,15 @@ void ServiceWorkerGlobalScopeProxy::OnNavigationPreloadError( ...@@ -435,11 +435,15 @@ void ServiceWorkerGlobalScopeProxy::OnNavigationPreloadError(
DCHECK(WorkerGlobalScope()->IsContextThread()); DCHECK(WorkerGlobalScope()->IsContextThread());
FetchEvent* fetch_event = pending_preload_fetch_events_.Take(fetch_event_id); FetchEvent* fetch_event = pending_preload_fetch_events_.Take(fetch_event_id);
DCHECK(fetch_event); DCHECK(fetch_event);
// Display an unsanitized console message. // Display an error message to the console, preferring the unsanitized one if
if (!error->unsanitized_message.IsEmpty()) { // available.
const WebString& error_message = error->unsanitized_message.IsEmpty()
? error->message
: error->unsanitized_message;
if (!error_message.IsEmpty()) {
WorkerGlobalScope()->AddConsoleMessage(ConsoleMessage::Create( WorkerGlobalScope()->AddConsoleMessage(ConsoleMessage::Create(
kWorkerMessageSource, blink::MessageLevel::kErrorMessageLevel, kWorkerMessageSource, blink::MessageLevel::kErrorMessageLevel,
error->unsanitized_message)); error_message));
} }
// Reject the preloadResponse promise. // Reject the preloadResponse promise.
fetch_event->OnNavigationPreloadError( fetch_event->OnNavigationPreloadError(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment