| OLD | NEW |
| (Empty) |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef LinkPreloadResourceClients_h | |
| 6 #define LinkPreloadResourceClients_h | |
| 7 | |
| 8 #include "core/fetch/CSSStyleSheetResource.h" | |
| 9 #include "core/fetch/FontResource.h" | |
| 10 #include "core/fetch/ImageResource.h" | |
| 11 #include "core/fetch/RawResource.h" | |
| 12 #include "core/fetch/ResourceOwner.h" | |
| 13 #include "core/fetch/ScriptResource.h" | |
| 14 #include "core/fetch/StyleSheetResourceClient.h" | |
| 15 | |
| 16 namespace blink { | |
| 17 | |
| 18 class LinkLoader; | |
| 19 | |
| 20 class LinkPreloadResourceClient | |
| 21 : public GarbageCollectedFinalized<LinkPreloadResourceClient> { | |
| 22 public: | |
| 23 virtual ~LinkPreloadResourceClient() {} | |
| 24 | |
| 25 void triggerEvents(const Resource*); | |
| 26 virtual void clear() = 0; | |
| 27 | |
| 28 DEFINE_INLINE_VIRTUAL_TRACE() { visitor->trace(m_loader); } | |
| 29 | |
| 30 protected: | |
| 31 explicit LinkPreloadResourceClient(LinkLoader* loader) : m_loader(loader) { | |
| 32 DCHECK(loader); | |
| 33 } | |
| 34 | |
| 35 private: | |
| 36 Member<LinkLoader> m_loader; | |
| 37 }; | |
| 38 | |
| 39 class LinkPreloadScriptResourceClient | |
| 40 : public LinkPreloadResourceClient, | |
| 41 public ResourceOwner<ScriptResource, ScriptResourceClient> { | |
| 42 USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadScriptResourceClient); | |
| 43 | |
| 44 public: | |
| 45 static LinkPreloadScriptResourceClient* create(LinkLoader* loader, | |
| 46 ScriptResource* resource) { | |
| 47 return new LinkPreloadScriptResourceClient(loader, resource); | |
| 48 } | |
| 49 | |
| 50 virtual String debugName() const { return "LinkPreloadScript"; } | |
| 51 virtual ~LinkPreloadScriptResourceClient() {} | |
| 52 | |
| 53 void clear() override { clearResource(); } | |
| 54 | |
| 55 void notifyFinished(Resource* resource) override { | |
| 56 DCHECK_EQ(this->resource(), resource); | |
| 57 triggerEvents(resource); | |
| 58 } | |
| 59 | |
| 60 DEFINE_INLINE_VIRTUAL_TRACE() { | |
| 61 LinkPreloadResourceClient::trace(visitor); | |
| 62 ResourceOwner<ScriptResource, ScriptResourceClient>::trace(visitor); | |
| 63 } | |
| 64 | |
| 65 private: | |
| 66 LinkPreloadScriptResourceClient(LinkLoader* loader, ScriptResource* resource) | |
| 67 : LinkPreloadResourceClient(loader) { | |
| 68 setResource(resource, Resource::DontMarkAsReferenced); | |
| 69 } | |
| 70 }; | |
| 71 | |
| 72 class LinkPreloadStyleResourceClient | |
| 73 : public LinkPreloadResourceClient, | |
| 74 public ResourceOwner<CSSStyleSheetResource, StyleSheetResourceClient> { | |
| 75 USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadStyleResourceClient); | |
| 76 | |
| 77 public: | |
| 78 static LinkPreloadStyleResourceClient* create( | |
| 79 LinkLoader* loader, | |
| 80 CSSStyleSheetResource* resource) { | |
| 81 return new LinkPreloadStyleResourceClient(loader, resource); | |
| 82 } | |
| 83 | |
| 84 virtual String debugName() const { return "LinkPreloadStyle"; } | |
| 85 virtual ~LinkPreloadStyleResourceClient() {} | |
| 86 | |
| 87 void clear() override { clearResource(); } | |
| 88 | |
| 89 void setCSSStyleSheet(const String&, | |
| 90 const KURL&, | |
| 91 const String&, | |
| 92 const CSSStyleSheetResource* resource) override { | |
| 93 DCHECK_EQ(this->resource(), resource); | |
| 94 triggerEvents(static_cast<const Resource*>(resource)); | |
| 95 } | |
| 96 | |
| 97 DEFINE_INLINE_VIRTUAL_TRACE() { | |
| 98 LinkPreloadResourceClient::trace(visitor); | |
| 99 ResourceOwner<CSSStyleSheetResource, StyleSheetResourceClient>::trace( | |
| 100 visitor); | |
| 101 } | |
| 102 | |
| 103 private: | |
| 104 LinkPreloadStyleResourceClient(LinkLoader* loader, | |
| 105 CSSStyleSheetResource* resource) | |
| 106 : LinkPreloadResourceClient(loader) { | |
| 107 setResource(resource, Resource::DontMarkAsReferenced); | |
| 108 } | |
| 109 }; | |
| 110 | |
| 111 class LinkPreloadImageResourceClient : public LinkPreloadResourceClient, | |
| 112 public ResourceOwner<ImageResource> { | |
| 113 USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadImageResourceClient); | |
| 114 | |
| 115 public: | |
| 116 static LinkPreloadImageResourceClient* create(LinkLoader* loader, | |
| 117 ImageResource* resource) { | |
| 118 return new LinkPreloadImageResourceClient(loader, resource); | |
| 119 } | |
| 120 | |
| 121 virtual String debugName() const { return "LinkPreloadImage"; } | |
| 122 virtual ~LinkPreloadImageResourceClient() {} | |
| 123 | |
| 124 void clear() override { clearResource(); } | |
| 125 | |
| 126 void notifyFinished(Resource* resource) override { | |
| 127 DCHECK_EQ(this->resource(), toImageResource(resource)); | |
| 128 triggerEvents(resource); | |
| 129 } | |
| 130 | |
| 131 DEFINE_INLINE_VIRTUAL_TRACE() { | |
| 132 LinkPreloadResourceClient::trace(visitor); | |
| 133 ResourceOwner<ImageResource>::trace(visitor); | |
| 134 } | |
| 135 | |
| 136 private: | |
| 137 LinkPreloadImageResourceClient(LinkLoader* loader, ImageResource* resource) | |
| 138 : LinkPreloadResourceClient(loader) { | |
| 139 setResource(resource, Resource::DontMarkAsReferenced); | |
| 140 } | |
| 141 }; | |
| 142 | |
| 143 class LinkPreloadFontResourceClient | |
| 144 : public LinkPreloadResourceClient, | |
| 145 public ResourceOwner<FontResource, FontResourceClient> { | |
| 146 USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadFontResourceClient); | |
| 147 | |
| 148 public: | |
| 149 static LinkPreloadFontResourceClient* create(LinkLoader* loader, | |
| 150 FontResource* resource) { | |
| 151 return new LinkPreloadFontResourceClient(loader, resource); | |
| 152 } | |
| 153 | |
| 154 virtual String debugName() const { return "LinkPreloadFont"; } | |
| 155 virtual ~LinkPreloadFontResourceClient() {} | |
| 156 | |
| 157 void clear() override { clearResource(); } | |
| 158 | |
| 159 void notifyFinished(Resource* resource) override { | |
| 160 DCHECK_EQ(this->resource(), toFontResource(resource)); | |
| 161 triggerEvents(resource); | |
| 162 } | |
| 163 | |
| 164 DEFINE_INLINE_VIRTUAL_TRACE() { | |
| 165 LinkPreloadResourceClient::trace(visitor); | |
| 166 ResourceOwner<FontResource, FontResourceClient>::trace(visitor); | |
| 167 } | |
| 168 | |
| 169 private: | |
| 170 LinkPreloadFontResourceClient(LinkLoader* loader, FontResource* resource) | |
| 171 : LinkPreloadResourceClient(loader) { | |
| 172 setResource(resource, Resource::DontMarkAsReferenced); | |
| 173 } | |
| 174 }; | |
| 175 | |
| 176 class LinkPreloadRawResourceClient | |
| 177 : public LinkPreloadResourceClient, | |
| 178 public ResourceOwner<RawResource, RawResourceClient> { | |
| 179 USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadRawResourceClient); | |
| 180 | |
| 181 public: | |
| 182 static LinkPreloadRawResourceClient* create(LinkLoader* loader, | |
| 183 RawResource* resource) { | |
| 184 return new LinkPreloadRawResourceClient(loader, resource); | |
| 185 } | |
| 186 | |
| 187 virtual String debugName() const { return "LinkPreloadRaw"; } | |
| 188 virtual ~LinkPreloadRawResourceClient() {} | |
| 189 | |
| 190 void clear() override { clearResource(); } | |
| 191 | |
| 192 void notifyFinished(Resource* resource) override { | |
| 193 DCHECK_EQ(this->resource(), toRawResource(resource)); | |
| 194 triggerEvents(resource); | |
| 195 } | |
| 196 | |
| 197 DEFINE_INLINE_VIRTUAL_TRACE() { | |
| 198 LinkPreloadResourceClient::trace(visitor); | |
| 199 ResourceOwner<RawResource, RawResourceClient>::trace(visitor); | |
| 200 } | |
| 201 | |
| 202 private: | |
| 203 LinkPreloadRawResourceClient(LinkLoader* loader, RawResource* resource) | |
| 204 : LinkPreloadResourceClient(loader) { | |
| 205 setResource(resource, Resource::DontMarkAsReferenced); | |
| 206 } | |
| 207 }; | |
| 208 | |
| 209 } // namespace blink | |
| 210 | |
| 211 #endif // LinkPreloadResourceClients_h | |
| OLD | NEW |