Chromium Code Reviews| Index: third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp |
| diff --git a/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp b/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp |
| index 76827a89668652c30a26a5156694a0096f837c0d..32536b6d1095a7d3731c7a794c2beb6b4c54e015 100644 |
| --- a/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp |
| +++ b/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp |
| @@ -47,6 +47,7 @@ |
| #include "core/events/PageTransitionEvent.h" |
| #include "core/events/PopStateEvent.h" |
| #include "core/events/ScopedEventQueue.h" |
| +#include "core/fetch/ResourceFetcher.h" |
| #include "core/frame/BarProp.h" |
| #include "core/frame/DOMVisualViewport.h" |
| #include "core/frame/EventHandlerRegistry.h" |
| @@ -83,6 +84,9 @@ |
| namespace blink { |
| +// Timeout for link preloads to be used after window.onload |
| +static const int unusedPreloadTimeoutInSeconds = 3; |
| + |
| class PostMessageTimer final : public GarbageCollectedFinalized<PostMessageTimer>, public SuspendableTimer { |
| USING_GARBAGE_COLLECTED_MIXIN(PostMessageTimer); |
| public: |
| @@ -260,6 +264,7 @@ bool LocalDOMWindow::allowPopUp() |
| LocalDOMWindow::LocalDOMWindow(LocalFrame& frame) |
| : m_frame(&frame) |
| , m_visualViewport(DOMVisualViewport::create(this)) |
| + , m_unusedPreloadsTimer(this, &LocalDOMWindow::warnUnusedPreloads) |
| , m_shouldPrintWhenFinishedLoading(false) |
| { |
| ThreadState::current()->registerPreFinalizer(this); |
| @@ -1336,6 +1341,16 @@ void LocalDOMWindow::removedEventListener(const AtomicString& eventType, const R |
| } |
| } |
| +void LocalDOMWindow::warnUnusedPreloads(TimerBase* base) |
| +{ |
| + if (frame() && frame()->loader().documentLoader()) { |
| + ResourceFetcher* fetcher = frame()->loader().documentLoader()->fetcher(); |
| + DCHECK(fetcher); |
| + if (fetcher->hasUnusedLinkPreloads()) |
| + fetcher->warnUnusedPreloads(); |
| + } |
| +} |
| + |
| void LocalDOMWindow::dispatchLoadEvent() |
| { |
| Event* loadEvent(Event::create(EventTypeNames::load)); |
| @@ -1345,6 +1360,9 @@ void LocalDOMWindow::dispatchLoadEvent() |
| timing.markLoadEventStart(); |
| dispatchEvent(loadEvent, document()); |
| timing.markLoadEventEnd(); |
| + DCHECK(documentLoader->fetcher()); |
|
Nate Chapin
2016/09/14 22:14:31
I'd skip scheduling the timer here if documentLoad
Yoav Weiss
2016/09/15 06:11:29
added such a check
|
| + if (documentLoader->fetcher()->hasUnusedLinkPreloads()) |
| + m_unusedPreloadsTimer.startOneShot(unusedPreloadTimeoutInSeconds, BLINK_FROM_HERE); |
| } else { |
| dispatchEvent(loadEvent, document()); |
| } |