diff options
author | yoav <yoav@yoav.ws> | 2016-01-22 13:38:54 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-22 21:40:27 +0000 |
commit | f4f8abaf9ec71fe62702d01264a8996ce72d85cf (patch) | |
tree | 9843b88f07e33255feaa5e2caaf4a3c0f008eade /third_party/WebKit/Source/core/loader/LinkPreloadResourceClients.h | |
parent | 02249af0a657071f694ab7d1d66702a60f66691a (diff) | |
download | chromium_src-f4f8abaf9ec71fe62702d01264a8996ce72d85cf.zip chromium_src-f4f8abaf9ec71fe62702d01264a8996ce72d85cf.tar.gz chromium_src-f4f8abaf9ec71fe62702d01264a8996ce72d85cf.tar.bz2 |
<link rel=preload> onload support for image, font and raw resources
This CL adds support for the onload event for all previously unsupported resource types.
BUG=552289
Review URL: https://codereview.chromium.org/1611543002
Cr-Commit-Position: refs/heads/master@{#371046}
Diffstat (limited to 'third_party/WebKit/Source/core/loader/LinkPreloadResourceClients.h')
-rw-r--r-- | third_party/WebKit/Source/core/loader/LinkPreloadResourceClients.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/third_party/WebKit/Source/core/loader/LinkPreloadResourceClients.h b/third_party/WebKit/Source/core/loader/LinkPreloadResourceClients.h index 519b38b..903cd42 100644 --- a/third_party/WebKit/Source/core/loader/LinkPreloadResourceClients.h +++ b/third_party/WebKit/Source/core/loader/LinkPreloadResourceClients.h @@ -7,7 +7,9 @@ #include "core/fetch/CSSStyleSheetResource.h" #include "core/fetch/FontResource.h" +#include "core/fetch/ImageResource.h" #include "core/fetch/ImageResourceClient.h" +#include "core/fetch/RawResource.h" #include "core/fetch/ResourceLoader.h" #include "core/fetch/ResourceOwner.h" #include "core/fetch/ScriptResource.h" @@ -108,6 +110,108 @@ private: } }; +class LinkPreloadImageResourceClient: public LinkPreloadResourceClient, public ResourceOwner<ImageResource, ImageResourceClient> { + WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadImageResourceClient); + USING_FAST_MALLOC_WILL_BE_REMOVED(LinkPreloadImageResourceClient); +public: + static PassOwnPtrWillBeRawPtr<LinkPreloadImageResourceClient> create(LinkLoader* loader, ImageResource* resource) + { + return adoptPtrWillBeNoop(new LinkPreloadImageResourceClient(loader, resource)); + } + + virtual String debugName() const { return "LinkPreloadImage"; } + virtual ~LinkPreloadImageResourceClient() { } + + void clear() override { clearResource(); } + + void notifyFinished(Resource* resource) override + { + ASSERT(this->resource() == toImageResource(resource)); + triggerEvents(resource); + } + + DEFINE_INLINE_VIRTUAL_TRACE() + { + LinkPreloadResourceClient::trace(visitor); + ResourceOwner<ImageResource, ImageResourceClient>::trace(visitor); + } + +private: + LinkPreloadImageResourceClient(LinkLoader* loader, ImageResource* resource) + : LinkPreloadResourceClient(loader) + { + setResource(resource); + } +}; + +class LinkPreloadFontResourceClient: public LinkPreloadResourceClient, public ResourceOwner<FontResource, FontResourceClient> { + WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadFontResourceClient); + USING_FAST_MALLOC_WILL_BE_REMOVED(LinkPreloadFontResourceClient); +public: + static PassOwnPtrWillBeRawPtr<LinkPreloadFontResourceClient> create(LinkLoader* loader, FontResource* resource) + { + return adoptPtrWillBeNoop(new LinkPreloadFontResourceClient(loader, resource)); + } + + virtual String debugName() const { return "LinkPreloadFont"; } + virtual ~LinkPreloadFontResourceClient() { } + + void clear() override { clearResource(); } + + void fontLoaded(FontResource* resource) override + { + ASSERT(this->resource() == resource); + triggerEvents(resource); + } + + DEFINE_INLINE_VIRTUAL_TRACE() + { + LinkPreloadResourceClient::trace(visitor); + ResourceOwner<FontResource, FontResourceClient>::trace(visitor); + } + +private: + LinkPreloadFontResourceClient(LinkLoader* loader, FontResource* resource) + : LinkPreloadResourceClient(loader) + { + setResource(resource); + } +}; + +class LinkPreloadRawResourceClient: public LinkPreloadResourceClient, public ResourceOwner<RawResource, RawResourceClient> { + WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadRawResourceClient); + USING_FAST_MALLOC_WILL_BE_REMOVED(LinkPreloadRawResourceClient); +public: + static PassOwnPtrWillBeRawPtr<LinkPreloadRawResourceClient> create(LinkLoader* loader, RawResource* resource) + { + return adoptPtrWillBeNoop(new LinkPreloadRawResourceClient(loader, resource)); + } + + virtual String debugName() const { return "LinkPreloadRaw"; } + virtual ~LinkPreloadRawResourceClient() { } + + void clear() override { clearResource(); } + + void notifyFinished(Resource* resource) override + { + ASSERT(this->resource() == toRawResource(resource)); + triggerEvents(resource); + } + + DEFINE_INLINE_VIRTUAL_TRACE() + { + LinkPreloadResourceClient::trace(visitor); + ResourceOwner<RawResource, RawResourceClient>::trace(visitor); + } + +private: + LinkPreloadRawResourceClient(LinkLoader* loader, RawResource* resource) + : LinkPreloadResourceClient(loader) + { + setResource(resource); + } +}; + } #endif // LinkPreloadResourceClients_h |