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

Issue 320253002: Oilpan: Prepare to move ImageLoader and its subclasses to Oilpan heap. (Closed)

Created:
6 years, 6 months ago by tkent
Modified:
6 years, 5 months ago
CC:
blink-reviews, ed+blinkwatch_opera.com, philipj_slow, blink-reviews-html_chromium.org, kouhei+svg_chromium.org, fs, eric.carlson_apple.com, feature-media-reviews_chromium.org, dglazkov+blink, krit, f(malita), gavinp+loader_chromium.org, gyuyoung.kim_webkit.org, Stephen Chennney, Nate Chapin, pdr., rwlbuis
Visibility:
Public.

Description

Oilpan: Prepare to move ImageLoader and its subclasses to Oilpan heap. - We need to add Persistent<Element> in ImageLoader in order to follow the current behavior by manual ref/deref. Also, the manual ref/deref is replaced with RefPtr<Element>. - ImageLoader was the last off-heap user of EventSender<T>. Now all of EventSender<T> users are on-heap. We can trace EventSender::m_dispatchSoonList and m_dispatchingList. - HTMLImageElement and SVGImageElement had ImageLoader as part objects. This CL makes them OwnPtr / Member because using on-heap objects as part objects are dangerous. - Add HTMLImageElement::create and SVGImageElement::create. BUG=357163 R=haraken@chromium.org Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=175876

Patch Set 1 : #

Total comments: 17

Patch Set 2 : Persistent<Element> #

Total comments: 5

Patch Set 3 : rebase #

Total comments: 17
Unified diffs Side-by-side diffs Delta from patch set Stats (+102 lines, -59 lines) Patch
M Source/core/events/EventSender.h View 3 chunks +5 lines, -5 lines 0 comments Download
M Source/core/html/HTMLEmbedElement.cpp View 1 chunk +1 line, -1 line 0 comments Download
M Source/core/html/HTMLImageElement.h View 3 chunks +8 lines, -7 lines 0 comments Download
M Source/core/html/HTMLImageElement.cpp View 10 chunks +20 lines, -19 lines 0 comments Download
M Source/core/html/HTMLImageLoader.h View 1 1 chunk +7 lines, -1 line 0 comments Download
M Source/core/html/HTMLInputElement.h View 1 chunk +1 line, -1 line 0 comments Download
M Source/core/html/HTMLInputElement.cpp View 1 chunk +2 lines, -1 line 0 comments Download
M Source/core/html/HTMLObjectElement.cpp View 1 chunk +1 line, -1 line 0 comments Download
M Source/core/html/HTMLPlugInElement.h View 2 chunks +2 lines, -1 line 0 comments Download
M Source/core/html/HTMLPlugInElement.cpp View 2 chunks +7 lines, -1 line 0 comments Download
M Source/core/html/HTMLVideoElement.h View 2 chunks +2 lines, -1 line 0 comments Download
M Source/core/html/HTMLVideoElement.cpp View 3 chunks +8 lines, -2 lines 0 comments Download
M Source/core/loader/ImageLoader.h View 1 3 chunks +10 lines, -2 lines 17 comments Download
M Source/core/loader/ImageLoader.cpp View 1 3 chunks +6 lines, -6 lines 0 comments Download
M Source/core/svg/SVGImageElement.h View 1 2 3 chunks +3 lines, -1 line 0 comments Download
M Source/core/svg/SVGImageElement.cpp View 1 2 7 chunks +14 lines, -8 lines 0 comments Download
M Source/core/svg/SVGImageLoader.h View 1 1 chunk +5 lines, -1 line 0 comments Download

Messages

Total messages: 37 (0 generated)
tkent
Please review this.
6 years, 6 months ago (2014-06-09 07:47:33 UTC) #1
haraken
https://codereview.chromium.org/320253002/diff/20001/Source/core/html/HTMLImageElement.h File Source/core/html/HTMLImageElement.h (right): https://codereview.chromium.org/320253002/diff/20001/Source/core/html/HTMLImageElement.h#newcode144 Source/core/html/HTMLImageElement.h:144: WeakPtr<HTMLFormElement> m_form; WeakPtrWillBeMember is available. https://codereview.chromium.org/320253002/diff/20001/Source/core/html/HTMLImageLoader.h File Source/core/html/HTMLImageLoader.h (right): ...
6 years, 6 months ago (2014-06-09 11:12:34 UTC) #2
tkent
https://codereview.chromium.org/320253002/diff/20001/Source/core/html/HTMLImageElement.h File Source/core/html/HTMLImageElement.h (right): https://codereview.chromium.org/320253002/diff/20001/Source/core/html/HTMLImageElement.h#newcode144 Source/core/html/HTMLImageElement.h:144: WeakPtr<HTMLFormElement> m_form; On 2014/06/09 11:12:33, haraken wrote: > > ...
6 years, 6 months ago (2014-06-10 01:43:10 UTC) #3
haraken
https://codereview.chromium.org/320253002/diff/20001/Source/core/loader/ImageLoader.cpp File Source/core/loader/ImageLoader.cpp (right): https://codereview.chromium.org/320253002/diff/20001/Source/core/loader/ImageLoader.cpp#newcode427 Source/core/loader/ImageLoader.cpp:427: m_keepAlive = this; On 2014/06/10 01:43:09, tkent wrote: > ...
6 years, 6 months ago (2014-06-10 01:59:05 UTC) #4
tkent
Updated the patch. https://codereview.chromium.org/320253002/diff/20001/Source/core/loader/ImageLoader.cpp File Source/core/loader/ImageLoader.cpp (right): https://codereview.chromium.org/320253002/diff/20001/Source/core/loader/ImageLoader.cpp#newcode427 Source/core/loader/ImageLoader.cpp:427: m_keepAlive = this; On 2014/06/10 01:59:05, ...
6 years, 6 months ago (2014-06-10 02:38:00 UTC) #5
haraken
https://codereview.chromium.org/320253002/diff/40001/Source/core/loader/ImageLoader.cpp File Source/core/loader/ImageLoader.cpp (left): https://codereview.chromium.org/320253002/diff/40001/Source/core/loader/ImageLoader.cpp#oldcode129 Source/core/loader/ImageLoader.cpp:129: m_element->deref(); Shall we add an ASSERT like this? ASSERT(!m_elementIsProtected) ...
6 years, 6 months ago (2014-06-10 04:15:13 UTC) #6
tkent
https://codereview.chromium.org/320253002/diff/40001/Source/core/loader/ImageLoader.h File Source/core/loader/ImageLoader.h (right): https://codereview.chromium.org/320253002/diff/40001/Source/core/loader/ImageLoader.h#newcode157 Source/core/loader/ImageLoader.h:157: PersistentHeapHashMap<WeakMember<ImageLoaderClient>, OwnPtr<ImageLoaderClientRemover> > m_clients; On 2014/06/10 04:15:13, haraken wrote: ...
6 years, 6 months ago (2014-06-10 05:32:46 UTC) #7
haraken
https://codereview.chromium.org/320253002/diff/40001/Source/core/loader/ImageLoader.h File Source/core/loader/ImageLoader.h (right): https://codereview.chromium.org/320253002/diff/40001/Source/core/loader/ImageLoader.h#newcode157 Source/core/loader/ImageLoader.h:157: PersistentHeapHashMap<WeakMember<ImageLoaderClient>, OwnPtr<ImageLoaderClientRemover> > m_clients; On 2014/06/10 05:32:46, tkent wrote: ...
6 years, 6 months ago (2014-06-10 05:54:10 UTC) #8
tkent
On 2014/06/10 05:54:10, haraken wrote: > Given that ImageLoaderClientRemover is off heap, ~ImageLoaderClientRemover > should ...
6 years, 6 months ago (2014-06-10 06:58:26 UTC) #9
tkent
On 2014/06/10 06:58:26, tkent wrote: > > Given that ImageLoaderClientRemover is off heap, ~ImageLoaderClientRemover > ...
6 years, 6 months ago (2014-06-10 07:57:11 UTC) #10
haraken
On 2014/06/10 07:57:11, tkent wrote: > On 2014/06/10 06:58:26, tkent wrote: > > > Given ...
6 years, 6 months ago (2014-06-10 08:07:13 UTC) #11
tkent
On 2014/06/10 08:07:13, haraken wrote: > - Make ImageLoaderClient directly hold a Member back to ...
6 years, 6 months ago (2014-06-10 08:31:27 UTC) #12
haraken
On 2014/06/10 08:31:27, tkent wrote: > On 2014/06/10 08:07:13, haraken wrote: > > - Make ...
6 years, 6 months ago (2014-06-10 08:40:34 UTC) #13
tkent
On 2014/06/10 08:40:34, haraken wrote: > > We can't do it. If the HashMap was ...
6 years, 6 months ago (2014-06-10 08:54:17 UTC) #14
haraken
ah, understood what you meant. LGTM. Sorry about a lot of noise.
6 years, 6 months ago (2014-06-10 08:58:47 UTC) #15
tkent
Committed patchset #3 manually as r175876 (presubmit successful).
6 years, 6 months ago (2014-06-10 09:08:16 UTC) #16
haraken
Just a random idea (which might not work): class ImageLoader { // We no longer ...
6 years, 6 months ago (2014-06-10 09:21:57 UTC) #17
Mads Ager (chromium)
I don't understand the use of persistents in ImageLoader. I added a couple of comments ...
6 years, 6 months ago (2014-06-10 12:34:33 UTC) #18
Mads Ager (chromium)
https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h File Source/core/loader/ImageLoader.h (right): https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h#newcode156 Source/core/loader/ImageLoader.h:156: GC_PLUGIN_IGNORE("http://crbug.com/353083") On 2014/06/10 12:34:33, Mads Ager (chromium) wrote: > ...
6 years, 6 months ago (2014-06-10 12:37:45 UTC) #19
Mads Ager (chromium)
https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h File Source/core/loader/ImageLoader.h (right): https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h#newcode156 Source/core/loader/ImageLoader.h:156: GC_PLUGIN_IGNORE("http://crbug.com/353083") On 2014/06/10 12:37:45, Mads Ager (chromium) wrote: > ...
6 years, 6 months ago (2014-06-10 12:44:52 UTC) #20
haraken
https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h File Source/core/loader/ImageLoader.h (right): https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h#newcode142 Source/core/loader/ImageLoader.h:142: RefPtrWillBePersistent<Element> m_keepAlive; On 2014/06/10 12:34:33, Mads Ager (chromium) wrote: ...
6 years, 6 months ago (2014-06-10 12:47:59 UTC) #21
haraken
On 2014/06/10 12:44:52, Mads Ager (chromium) wrote: > https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h > File Source/core/loader/ImageLoader.h (right): > > ...
6 years, 6 months ago (2014-06-10 12:48:23 UTC) #22
zerny-chromium
https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h File Source/core/loader/ImageLoader.h (right): https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h#newcode58 Source/core/loader/ImageLoader.h:58: class ImageLoader : public NoBaseWillBeGarbageCollectedFinalized<ImageLoader>, public ImageResourceClient { Nit: ...
6 years, 6 months ago (2014-06-10 12:54:29 UTC) #23
Mads Ager (chromium)
https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h File Source/core/loader/ImageLoader.h (right): https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h#newcode156 Source/core/loader/ImageLoader.h:156: GC_PLUGIN_IGNORE("http://crbug.com/353083") On 2014/06/10 12:47:59, haraken wrote: > On 2014/06/10 ...
6 years, 6 months ago (2014-06-10 12:54:39 UTC) #24
haraken
https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h File Source/core/loader/ImageLoader.h (right): https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h#newcode142 Source/core/loader/ImageLoader.h:142: RefPtrWillBePersistent<Element> m_keepAlive; On 2014/06/10 12:54:28, zerny-chromium wrote: > On ...
6 years, 6 months ago (2014-06-10 12:58:11 UTC) #25
haraken
> > Another suggestion that doesn't use persistent maps is written in comment #17. > ...
6 years, 6 months ago (2014-06-10 13:03:39 UTC) #26
Mads Ager (chromium)
On 2014/06/10 13:03:39, haraken wrote: > > > Another suggestion that doesn't use persistent maps ...
6 years, 6 months ago (2014-06-10 13:10:17 UTC) #27
haraken
On 2014/06/10 13:10:17, Mads Ager (chromium) wrote: > On 2014/06/10 13:03:39, haraken wrote: > > ...
6 years, 6 months ago (2014-06-10 13:15:32 UTC) #28
Mads Ager (chromium)
On 2014/06/10 13:15:32, haraken wrote: > On 2014/06/10 13:10:17, Mads Ager (chromium) wrote: > > ...
6 years, 6 months ago (2014-06-10 13:17:51 UTC) #29
haraken
On 2014/06/10 13:17:51, Mads Ager (chromium) wrote: > On 2014/06/10 13:15:32, haraken wrote: > > ...
6 years, 6 months ago (2014-06-10 13:18:27 UTC) #30
tkent
https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h File Source/core/loader/ImageLoader.h (right): https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h#newcode142 Source/core/loader/ImageLoader.h:142: RefPtrWillBePersistent<Element> m_keepAlive; On 2014/06/10 12:58:11, haraken wrote: > On ...
6 years, 6 months ago (2014-06-10 23:56:57 UTC) #31
Mads Ager (chromium)
Thanks Kent. I finally understand what is going on. :) https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h File Source/core/loader/ImageLoader.h (right): https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h#newcode142 ...
6 years, 6 months ago (2014-06-11 06:35:14 UTC) #32
Mads Ager (chromium)
https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h File Source/core/loader/ImageLoader.h (right): https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h#newcode141 Source/core/loader/ImageLoader.h:141: GC_PLUGIN_IGNORE("http://crbug.com/353083") I think this persistent should use a separate ...
6 years, 6 months ago (2014-06-11 06:38:41 UTC) #33
haraken
https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h File Source/core/loader/ImageLoader.h (right): https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h#newcode142 Source/core/loader/ImageLoader.h:142: RefPtrWillBePersistent<Element> m_keepAlive; On 2014/06/11 06:35:14, Mads Ager (chromium) wrote: ...
6 years, 6 months ago (2014-06-11 06:45:03 UTC) #34
tkent
https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h File Source/core/loader/ImageLoader.h (right): https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h#newcode141 Source/core/loader/ImageLoader.h:141: GC_PLUGIN_IGNORE("http://crbug.com/353083") On 2014/06/11 06:38:41, Mads Ager (chromium) wrote: > ...
6 years, 6 months ago (2014-06-11 06:58:28 UTC) #35
Mads Ager (chromium)
On 2014/06/11 06:45:03, haraken wrote: > https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h > File Source/core/loader/ImageLoader.h (right): > > https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/ImageLoader.h#newcode142 > ...
6 years, 6 months ago (2014-06-11 06:59:17 UTC) #36
Mads Ager (chromium)
6 years, 6 months ago (2014-06-11 07:09:15 UTC) #37
Message was sent while issue was closed.
https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/Image...
File Source/core/loader/ImageLoader.h (right):

https://codereview.chromium.org/320253002/diff/60001/Source/core/loader/Image...
Source/core/loader/ImageLoader.h:142: RefPtrWillBePersistent<Element>
m_keepAlive;
On 2014/06/11 06:58:28, tkent wrote:
> No, Timer is not related to this issue. 
> As the code comment already says, I think this issue will be resolved when a
> loading ImageResource has strong references to ImageResourceClient objects.

Thank you Kent. I misunderstood the code. The Timer is only used when we no
longer need to keep the element alive. This persistent is here so that the
ImageLoader can keep an unreachable ImageElement and itself alive until the
image element has been loaded. That seems a little strange, but it is what other
browsers do as well.

Sorry for all the noise on this code review. I'll shut up now. ;-)

Powered by Google App Engine
This is Rietveld 408576698