| Index: third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp
|
| diff --git a/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp b/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp
|
| index b06ea8c34b2826f8e7d618ec4a85ca98258167ac..22e7de7838aef765d9d08fc9e0b1e6180221dbb6 100644
|
| --- a/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp
|
| +++ b/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.cpp
|
| @@ -48,6 +48,8 @@
|
| #include "core/loader/FrameLoader.h"
|
| #include "core/loader/FrameLoaderClient.h"
|
| #include "core/loader/ThreadableLoaderClient.h"
|
| +#include "core/page/ChromeClient.h"
|
| +#include "core/page/Page.h"
|
| #include "platform/SharedBuffer.h"
|
| #include "platform/Task.h"
|
| #include "platform/network/ResourceRequest.h"
|
| @@ -162,6 +164,26 @@ DocumentThreadableLoader::DocumentThreadableLoader(Document& document, Threadabl
|
| m_simpleRequestHeaders.add(header.key, header.value);
|
| }
|
|
|
| + // DocumentThreadableLoader is used by all javascript initiated fetch, so
|
| + // we use this chance to update PageImportanceSignals.
|
| + // However, this is based on the following assumptions, so please be careful
|
| + // when adding similar logic:
|
| + // - ThreadableLoader is used as backend for all javascript initiated network
|
| + // fetches.
|
| + // - Note that ThreadableLoader is also used for non-network fetch such as
|
| + // FileReaderLoader. However it emulates GET method so signal is not
|
| + // recorded here.
|
| + // - ThreadableLoader w/ non-GET request is only created from javascript
|
| + // initiated fetch.
|
| + // - Some non-script initiated fetches such as WorkerScriptLoader also use
|
| + // ThreadableLoader, but they are guaranteed to use GET method.
|
| + if (request.httpMethod() != "GET") {
|
| + if (LocalFrame* frame = m_document.frame()) {
|
| + if (Page* page = frame->page())
|
| + page->chromeClient().observedNonGetFetchFromScript();
|
| + }
|
| + }
|
| +
|
| // If the fetch request will be handled by the ServiceWorker, the
|
| // FetchRequestMode of the request must be FetchRequestModeCORS or
|
| // FetchRequestModeCORSWithForcedPreflight. Otherwise the ServiceWorker can
|
|
|