Index: third_party/WebKit/Source/core/loader/ImageLoader.h |
diff --git a/third_party/WebKit/Source/core/loader/ImageLoader.h b/third_party/WebKit/Source/core/loader/ImageLoader.h |
index 2672727e826b3b6c488ed96cec3d5d4dcd34c616..c40679292b69a0a2cc87038e803f05c09ace6f75 100644 |
--- a/third_party/WebKit/Source/core/loader/ImageLoader.h |
+++ b/third_party/WebKit/Source/core/loader/ImageLoader.h |
@@ -108,6 +108,7 @@ class CORE_EXPORT ImageLoader : public GarbageCollectedFinalized<ImageLoader>, |
bool getImageAnimationPolicy(ImageAnimationPolicy&) final; |
protected: |
+ void imageChanged(ImageResourceContent*, const IntRect*) override; |
void imageNotifyFinished(ImageResourceContent*) override; |
private: |
@@ -163,6 +164,23 @@ class CORE_EXPORT ImageLoader : public GarbageCollectedFinalized<ImageLoader>, |
AtomicString m_failedLoadURL; |
WeakPtr<Task> m_pendingTask; // owned by Microtask |
std::unique_ptr<IncrementLoadEventDelayCount> m_loadDelayCounter; |
kouhei (in TOK)
2017/03/15 11:32:34
m_delayLoadUntilUpdateFromElement?
hiroshige
2017/05/04 22:50:50
Done.
|
+ |
+ // Delaying load event: the timeline should be: |
+ // (0) ImageResource::fetch() is called. |
+ // (1) ResourceFetcher::startLoad(): Resource loading is actually started. |
+ // (2) ResourceLoader::didFinishLoading() etc: |
+ // Resource loading is finished, but SVG document load might be |
+ // incomplete because of asynchronously loaded subresources. |
+ // (3) imageNotifyFinished(): Image is completely loaded. |
+ // and we must delay Document load event from (1) to (3). |
+ // - |ResourceFetcher::m_loaders| delays Document load event from (1) to (2). |
+ // - |m_loadDelayCounter| delays Document load event from the first |
+ // imageChanged() (at some time between (1) and (2)) until (3). |
+ // Ideally, we might want |m_loadDelayCounter2| to delay Document load event |
+ // from (1) to (3), but currently we piggybacked on imageChanged() because |
+ // adding a callback hook at (1) might complicate the code. |
+ std::unique_ptr<IncrementLoadEventDelayCount> m_loadDelayCounter2; |
kouhei (in TOK)
2017/03/15 11:32:34
Do we have a better name for this?
m_delayLoadUnti
fs
2017/03/15 14:22:17
Anything other than ...2 would be an improvement I
hiroshige
2017/05/04 22:50:50
Done.
|
+ |
bool m_hasPendingLoadEvent : 1; |
bool m_hasPendingErrorEvent : 1; |
bool m_imageComplete : 1; |