Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(186)

Side by Side Diff: third_party/WebKit/Source/core/loader/LinkPreloadResourceClients.h

Issue 1615703002: Removal of rel=preload link elements should stop the download. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef LinkPreloadResourceClients_h 5 #ifndef LinkPreloadResourceClients_h
6 #define LinkPreloadResourceClients_h 6 #define LinkPreloadResourceClients_h
7 7
8 #include "core/fetch/CSSStyleSheetResource.h" 8 #include "core/fetch/CSSStyleSheetResource.h"
9 #include "core/fetch/FontResource.h" 9 #include "core/fetch/FontResource.h"
10 #include "core/fetch/ImageResourceClient.h" 10 #include "core/fetch/ImageResourceClient.h"
11 #include "core/fetch/ResourceLoader.h"
11 #include "core/fetch/ResourceOwner.h" 12 #include "core/fetch/ResourceOwner.h"
12 #include "core/fetch/ScriptResource.h" 13 #include "core/fetch/ScriptResource.h"
13 #include "core/fetch/StyleSheetResourceClient.h" 14 #include "core/fetch/StyleSheetResourceClient.h"
14 15
15 namespace blink { 16 namespace blink {
16 17
17 class LinkLoader; 18 class LinkLoader;
18 19
19 class LinkPreloadResourceClient : public NoBaseWillBeGarbageCollectedFinalized<L inkPreloadResourceClient> { 20 class LinkPreloadResourceClient : public NoBaseWillBeGarbageCollectedFinalized<L inkPreloadResourceClient> {
20 public: 21 public:
21 virtual ~LinkPreloadResourceClient() { } 22 virtual ~LinkPreloadResourceClient() { }
22 23
23 void triggerEvents(const Resource*); 24 void triggerEvents(const Resource*);
24 25
26 virtual void cancel() = 0;
27
25 DEFINE_INLINE_VIRTUAL_TRACE() 28 DEFINE_INLINE_VIRTUAL_TRACE()
26 { 29 {
27 visitor->trace(m_loader); 30 visitor->trace(m_loader);
28 } 31 }
29 32
30 protected: 33 protected:
31 LinkPreloadResourceClient(LinkLoader* loader) 34 LinkPreloadResourceClient(LinkLoader* loader)
32 : m_loader(loader) 35 : m_loader(loader)
33 { 36 {
34 ASSERT(loader); 37 ASSERT(loader);
(...skipping 19 matching lines...) Expand all
54 ASSERT(this->resource() == resource); 57 ASSERT(this->resource() == resource);
55 triggerEvents(resource); 58 triggerEvents(resource);
56 } 59 }
57 60
58 DEFINE_INLINE_VIRTUAL_TRACE() 61 DEFINE_INLINE_VIRTUAL_TRACE()
59 { 62 {
60 LinkPreloadResourceClient::trace(visitor); 63 LinkPreloadResourceClient::trace(visitor);
61 ResourceOwner<ScriptResource, ScriptResourceClient>::trace(visitor); 64 ResourceOwner<ScriptResource, ScriptResourceClient>::trace(visitor);
62 } 65 }
63 66
67 void cancel() override
68 {
69 if (resource() && resource()->loader())
70 resource()->loader()->cancel();
Nate Chapin 2016/01/21 19:03:50 This will cancel the load even if the preload is n
Yoav Weiss 2016/01/21 21:51:21 yeah. changed to clearResource()
71 }
72
64 private: 73 private:
65 LinkPreloadScriptResourceClient(LinkLoader* loader, ScriptResource* resource ) 74 LinkPreloadScriptResourceClient(LinkLoader* loader, ScriptResource* resource )
66 : LinkPreloadResourceClient(loader) 75 : LinkPreloadResourceClient(loader)
67 { 76 {
68 setResource(resource); 77 setResource(resource);
69 } 78 }
70 }; 79 };
71 80
72 class LinkPreloadStyleResourceClient: public LinkPreloadResourceClient, public R esourceOwner<CSSStyleSheetResource, StyleSheetResourceClient> { 81 class LinkPreloadStyleResourceClient: public LinkPreloadResourceClient, public R esourceOwner<CSSStyleSheetResource, StyleSheetResourceClient> {
73 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadStyleResourceClient); 82 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(LinkPreloadStyleResourceClient);
(...skipping 11 matching lines...) Expand all
85 ASSERT(this->resource() == resource); 94 ASSERT(this->resource() == resource);
86 triggerEvents(static_cast<const Resource*>(resource)); 95 triggerEvents(static_cast<const Resource*>(resource));
87 } 96 }
88 97
89 DEFINE_INLINE_VIRTUAL_TRACE() 98 DEFINE_INLINE_VIRTUAL_TRACE()
90 { 99 {
91 LinkPreloadResourceClient::trace(visitor); 100 LinkPreloadResourceClient::trace(visitor);
92 ResourceOwner<CSSStyleSheetResource, StyleSheetResourceClient>::trace(vi sitor); 101 ResourceOwner<CSSStyleSheetResource, StyleSheetResourceClient>::trace(vi sitor);
93 } 102 }
94 103
104 void cancel() override
105 {
106 if (resource() && resource()->loader())
107 resource()->loader()->cancel();
108 }
109
95 private: 110 private:
96 LinkPreloadStyleResourceClient(LinkLoader* loader, CSSStyleSheetResource* re source) 111 LinkPreloadStyleResourceClient(LinkLoader* loader, CSSStyleSheetResource* re source)
97 : LinkPreloadResourceClient(loader) 112 : LinkPreloadResourceClient(loader)
98 { 113 {
99 setResource(resource); 114 setResource(resource);
100 } 115 }
101 }; 116 };
102 117
103 } 118 }
104 119
105 #endif // LinkPreloadResourceClients_h 120 #endif // LinkPreloadResourceClients_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698