summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/Source/core/loader/LinkPreloadResourceClients.h
diff options
context:
space:
mode:
authoryoav <yoav@yoav.ws>2016-01-22 13:38:54 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-22 21:40:27 +0000
commitf4f8abaf9ec71fe62702d01264a8996ce72d85cf (patch)
tree9843b88f07e33255feaa5e2caaf4a3c0f008eade /third_party/WebKit/Source/core/loader/LinkPreloadResourceClients.h
parent02249af0a657071f694ab7d1d66702a60f66691a (diff)
downloadchromium_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.h104
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