RESOLVED FIXED Bug 155498
Move caching the ImageFrame from BitmapImage to ImageSource
https://bugs.webkit.org/show_bug.cgi?id=155498
Summary Move caching the ImageFrame from BitmapImage to ImageSource
Said Abou-Hallawa
Reported 2016-03-15 11:44:25 PDT
The goal is to have caching the ImageFrameData be managed by the ImageSource which can be delegated to the ImageDecoder in the case of asynchronous image decoding case.
Attachments
Patch (162.95 KB, patch)
2016-03-15 11:51 PDT, Said Abou-Hallawa
no flags
Patch (162.76 KB, patch)
2016-03-15 12:08 PDT, Said Abou-Hallawa
no flags
Patch (159.70 KB, patch)
2016-03-15 12:34 PDT, Said Abou-Hallawa
no flags
Patch (159.82 KB, patch)
2016-03-15 12:55 PDT, Said Abou-Hallawa
no flags
Patch (160.68 KB, patch)
2016-03-15 13:25 PDT, Said Abou-Hallawa
no flags
Patch for review (66.77 KB, patch)
2016-03-15 13:56 PDT, Said Abou-Hallawa
no flags
Patch (308.18 KB, patch)
2016-08-10 15:31 PDT, Said Abou-Hallawa
no flags
Archive of layout-test-results from ews101 for mac-yosemite (919.71 KB, application/zip)
2016-08-10 16:17 PDT, Build Bot
no flags
Archive of layout-test-results from ews114 for mac-yosemite (482.52 KB, application/zip)
2016-08-10 16:24 PDT, Build Bot
no flags
Archive of layout-test-results from ews104 for mac-yosemite-wk2 (1.14 MB, application/zip)
2016-08-10 16:34 PDT, Build Bot
no flags
Patch (314.47 KB, patch)
2016-08-10 17:33 PDT, Said Abou-Hallawa
no flags
Patch (314.71 KB, patch)
2016-08-10 17:42 PDT, Said Abou-Hallawa
no flags
Patch (314.81 KB, patch)
2016-08-10 18:20 PDT, Said Abou-Hallawa
no flags
Patch (316.90 KB, patch)
2016-08-10 18:56 PDT, Said Abou-Hallawa
no flags
Patch (317.10 KB, patch)
2016-08-10 19:08 PDT, Said Abou-Hallawa
no flags
Patch (319.68 KB, patch)
2016-08-10 19:26 PDT, Said Abou-Hallawa
no flags
Archive of layout-test-results from ews102 for mac-yosemite (716.94 KB, application/zip)
2016-08-10 20:12 PDT, Build Bot
no flags
Archive of layout-test-results from ews112 for mac-yosemite (471.81 KB, application/zip)
2016-08-10 20:18 PDT, Build Bot
no flags
Archive of layout-test-results from ews105 for mac-yosemite-wk2 (1.03 MB, application/zip)
2016-08-10 20:22 PDT, Build Bot
no flags
Patch (319.69 KB, patch)
2016-08-10 23:22 PDT, Said Abou-Hallawa
no flags
Patch (319.70 KB, patch)
2016-08-11 00:11 PDT, Said Abou-Hallawa
no flags
Archive of layout-test-results from ews101 for mac-yosemite (526.65 KB, application/zip)
2016-08-11 01:02 PDT, Build Bot
no flags
Archive of layout-test-results from ews112 for mac-yosemite (474.25 KB, application/zip)
2016-08-11 01:08 PDT, Build Bot
no flags
Archive of layout-test-results from ews105 for mac-yosemite-wk2 (946.13 KB, application/zip)
2016-08-11 01:18 PDT, Build Bot
no flags
Patch (319.70 KB, patch)
2016-08-11 09:22 PDT, Said Abou-Hallawa
no flags
Archive of layout-test-results from ews102 for mac-yosemite (704.77 KB, application/zip)
2016-08-11 10:09 PDT, Build Bot
no flags
Archive of layout-test-results from ews107 for mac-yosemite-wk2 (852.96 KB, application/zip)
2016-08-11 10:24 PDT, Build Bot
no flags
Archive of layout-test-results from ews115 for mac-yosemite (1.16 MB, application/zip)
2016-08-11 10:43 PDT, Build Bot
no flags
Patch (320.13 KB, patch)
2016-08-11 11:23 PDT, Said Abou-Hallawa
no flags
Archive of layout-test-results from ews112 for mac-yosemite (934.98 KB, application/zip)
2016-08-11 13:21 PDT, Build Bot
no flags
Patch (320.07 KB, patch)
2016-08-11 15:34 PDT, Said Abou-Hallawa
no flags
Archive of layout-test-results from ews114 for mac-yosemite (1.51 MB, application/zip)
2016-08-11 16:47 PDT, Build Bot
no flags
Patch (320.12 KB, patch)
2016-08-11 16:57 PDT, Said Abou-Hallawa
no flags
Patch (320.12 KB, patch)
2016-08-11 18:33 PDT, Said Abou-Hallawa
no flags
Patch (320.12 KB, patch)
2016-08-12 10:09 PDT, Said Abou-Hallawa
no flags
Patch for review (118.56 KB, patch)
2016-08-12 11:36 PDT, Said Abou-Hallawa
no flags
Patch (92.33 KB, patch)
2016-09-21 16:59 PDT, Said Abou-Hallawa
no flags
Patch (97.72 KB, patch)
2016-09-21 17:30 PDT, Said Abou-Hallawa
no flags
Patch (111.51 KB, patch)
2016-09-21 17:59 PDT, Said Abou-Hallawa
no flags
Patch (113.12 KB, patch)
2016-09-21 18:16 PDT, Said Abou-Hallawa
no flags
Archive of layout-test-results from ews117 for mac-yosemite (1.83 MB, application/zip)
2016-09-21 19:05 PDT, Build Bot
no flags
Archive of layout-test-results from ews101 for mac-yosemite (1.29 MB, application/zip)
2016-09-21 19:16 PDT, Build Bot
no flags
Archive of layout-test-results from ews105 for mac-yosemite-wk2 (1.48 MB, application/zip)
2016-09-21 19:17 PDT, Build Bot
no flags
Archive of layout-test-results from ews121 for ios-simulator-elcapitan-wk2 (1.22 MB, application/zip)
2016-09-21 19:22 PDT, Build Bot
no flags
Patch (119.27 KB, patch)
2016-09-22 09:30 PDT, Said Abou-Hallawa
no flags
Patch (119.78 KB, patch)
2016-09-22 09:46 PDT, Said Abou-Hallawa
no flags
Archive of layout-test-results from ews112 for mac-yosemite (1.90 MB, application/zip)
2016-09-22 10:35 PDT, Build Bot
no flags
Archive of layout-test-results from ews102 for mac-yosemite (1.15 MB, application/zip)
2016-09-22 10:46 PDT, Build Bot
no flags
Archive of layout-test-results from ews123 for ios-simulator-elcapitan-wk2 (1.14 MB, application/zip)
2016-09-22 10:51 PDT, Build Bot
no flags
Archive of layout-test-results from ews104 for mac-yosemite-wk2 (1.20 MB, application/zip)
2016-09-22 10:51 PDT, Build Bot
no flags
Patch (120.32 KB, patch)
2016-09-22 14:22 PDT, Said Abou-Hallawa
no flags
Patch (120.25 KB, patch)
2016-09-22 14:49 PDT, Said Abou-Hallawa
no flags
Archive of layout-test-results from ews114 for mac-yosemite (1.74 MB, application/zip)
2016-09-22 15:46 PDT, Build Bot
no flags
Archive of layout-test-results from ews124 for ios-simulator-elcapitan-wk2 (7.07 MB, application/zip)
2016-09-22 15:49 PDT, Build Bot
no flags
Archive of layout-test-results from ews102 for mac-yosemite (1.20 MB, application/zip)
2016-09-22 16:04 PDT, Build Bot
no flags
Archive of layout-test-results from ews107 for mac-yosemite-wk2 (1.28 MB, application/zip)
2016-09-22 16:09 PDT, Build Bot
no flags
Patch (120.26 KB, patch)
2016-09-22 17:19 PDT, Said Abou-Hallawa
no flags
Patch (117.35 KB, patch)
2016-09-26 13:40 PDT, Said Abou-Hallawa
no flags
Patch (121.65 KB, patch)
2016-09-26 14:37 PDT, Said Abou-Hallawa
no flags
Patch (121.70 KB, patch)
2016-09-26 15:55 PDT, Said Abou-Hallawa
no flags
Patch (121.74 KB, patch)
2016-09-26 16:29 PDT, Said Abou-Hallawa
no flags
Patch (124.75 KB, patch)
2016-09-26 19:06 PDT, Said Abou-Hallawa
no flags
Patch (125.70 KB, patch)
2016-09-27 09:44 PDT, Said Abou-Hallawa
no flags
Patch (126.24 KB, patch)
2016-09-27 10:57 PDT, Said Abou-Hallawa
no flags
Patch (126.23 KB, patch)
2016-09-27 11:38 PDT, Said Abou-Hallawa
no flags
Patch (127.38 KB, patch)
2016-09-27 16:06 PDT, Said Abou-Hallawa
no flags
Patch (127.41 KB, patch)
2016-09-27 17:47 PDT, Said Abou-Hallawa
no flags
Said Abou-Hallawa
Comment 1 2016-03-15 11:51:24 PDT
Said Abou-Hallawa
Comment 2 2016-03-15 12:08:02 PDT
Said Abou-Hallawa
Comment 3 2016-03-15 12:34:03 PDT
Said Abou-Hallawa
Comment 4 2016-03-15 12:55:54 PDT
Said Abou-Hallawa
Comment 5 2016-03-15 13:25:04 PDT
Said Abou-Hallawa
Comment 6 2016-03-15 13:56:37 PDT
Created attachment 274124 [details] Patch for review
Brent Fulgham
Comment 7 2016-03-25 11:09:13 PDT
Comment on attachment 274124 [details] Patch for review View in context: https://bugs.webkit.org/attachment.cgi?id=274124&action=review I think this looks good, but I wonder if hiding more of the direct m_source access wouldn't be better. > Source/WebCore/platform/graphics/BitmapImage.cpp:-57 > - , m_frameCount(0) As long as you're cleaning this up, could you change these other initializations to use the newer C++ style? > Source/WebCore/platform/graphics/BitmapImage.cpp:92 > + ImageFrameIndex clearBeforeFrame = destroyAll ? m_source.m_frames.size() : m_currentFrame; It's a little weird that we expose the m_frames member like this, especially when you have other methods like "frameSizeAtIndex". Would it be better to do something like m_source.frameCount() or similar? > Source/WebCore/platform/graphics/BitmapImage.cpp:109 > + if (!data() && m_source.m_frames.size()) Ditto m_frames > Source/WebCore/platform/graphics/BitmapImage.cpp:112 > + if (m_source.m_frames.framesBytes() > largeAnimationCutoff) m_source.bytesInAllFrames()? > Source/WebCore/platform/graphics/ImageFrameData.cpp:79 > + m_duration = (duration < 0.011f) ? 0.100f : duration; This change isn't really explained in your ChangeLog. Why are you allowing these short durations now?
Said Abou-Hallawa
Comment 8 2016-08-10 15:31:53 PDT
Build Bot
Comment 9 2016-08-10 16:17:15 PDT
Comment on attachment 285774 [details] Patch Attachment 285774 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/1848238 Number of test failures exceeded the failure limit.
Build Bot
Comment 10 2016-08-10 16:17:18 PDT
Created attachment 285778 [details] Archive of layout-test-results from ews101 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews101 Port: mac-yosemite Platform: Mac OS X 10.10.5
Build Bot
Comment 11 2016-08-10 16:24:07 PDT
Comment on attachment 285774 [details] Patch Attachment 285774 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/1848244 Number of test failures exceeded the failure limit.
Build Bot
Comment 12 2016-08-10 16:24:10 PDT
Created attachment 285780 [details] Archive of layout-test-results from ews114 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews114 Port: mac-yosemite Platform: Mac OS X 10.10.5
Build Bot
Comment 13 2016-08-10 16:34:55 PDT
Comment on attachment 285774 [details] Patch Attachment 285774 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/1848264 New failing tests: media/video-controls-drag.html fast/events/drag-and-drop-autoscroll-inner-frame.html
Build Bot
Comment 14 2016-08-10 16:34:59 PDT
Created attachment 285781 [details] Archive of layout-test-results from ews104 for mac-yosemite-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews104 Port: mac-yosemite-wk2 Platform: Mac OS X 10.10.5
Said Abou-Hallawa
Comment 15 2016-08-10 17:33:39 PDT
Said Abou-Hallawa
Comment 16 2016-08-10 17:42:00 PDT
Said Abou-Hallawa
Comment 17 2016-08-10 18:20:09 PDT
Said Abou-Hallawa
Comment 18 2016-08-10 18:56:56 PDT
Said Abou-Hallawa
Comment 19 2016-08-10 19:08:01 PDT
Said Abou-Hallawa
Comment 20 2016-08-10 19:26:13 PDT
Build Bot
Comment 21 2016-08-10 20:12:50 PDT
Comment on attachment 285806 [details] Patch Attachment 285806 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/1849142 Number of test failures exceeded the failure limit.
Build Bot
Comment 22 2016-08-10 20:12:54 PDT
Created attachment 285808 [details] Archive of layout-test-results from ews102 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews102 Port: mac-yosemite Platform: Mac OS X 10.10.5
Build Bot
Comment 23 2016-08-10 20:18:51 PDT
Comment on attachment 285806 [details] Patch Attachment 285806 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/1849143 Number of test failures exceeded the failure limit.
Build Bot
Comment 24 2016-08-10 20:18:55 PDT
Created attachment 285809 [details] Archive of layout-test-results from ews112 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews112 Port: mac-yosemite Platform: Mac OS X 10.10.5
Build Bot
Comment 25 2016-08-10 20:22:26 PDT
Comment on attachment 285806 [details] Patch Attachment 285806 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/1849145 New failing tests: media/video-controls-drag.html fast/events/drag-and-drop-autoscroll-inner-frame.html
Build Bot
Comment 26 2016-08-10 20:22:30 PDT
Created attachment 285810 [details] Archive of layout-test-results from ews105 for mac-yosemite-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews105 Port: mac-yosemite-wk2 Platform: Mac OS X 10.10.5
Said Abou-Hallawa
Comment 27 2016-08-10 23:22:26 PDT
Said Abou-Hallawa
Comment 28 2016-08-11 00:11:04 PDT
Build Bot
Comment 29 2016-08-11 01:02:12 PDT
Comment on attachment 285816 [details] Patch Attachment 285816 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/1850290 Number of test failures exceeded the failure limit.
Build Bot
Comment 30 2016-08-11 01:02:16 PDT
Created attachment 285818 [details] Archive of layout-test-results from ews101 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews101 Port: mac-yosemite Platform: Mac OS X 10.10.5
Build Bot
Comment 31 2016-08-11 01:08:01 PDT
Comment on attachment 285816 [details] Patch Attachment 285816 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/1850294 Number of test failures exceeded the failure limit.
Build Bot
Comment 32 2016-08-11 01:08:05 PDT
Created attachment 285819 [details] Archive of layout-test-results from ews112 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews112 Port: mac-yosemite Platform: Mac OS X 10.10.5
Build Bot
Comment 33 2016-08-11 01:18:38 PDT
Comment on attachment 285816 [details] Patch Attachment 285816 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/1850323 New failing tests: media/video-controls-drag.html fast/events/drag-and-drop-autoscroll-inner-frame.html
Build Bot
Comment 34 2016-08-11 01:18:42 PDT
Created attachment 285820 [details] Archive of layout-test-results from ews105 for mac-yosemite-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews105 Port: mac-yosemite-wk2 Platform: Mac OS X 10.10.5
Said Abou-Hallawa
Comment 35 2016-08-11 09:22:14 PDT
Build Bot
Comment 36 2016-08-11 10:09:02 PDT
Comment on attachment 285829 [details] Patch Attachment 285829 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/1852560 Number of test failures exceeded the failure limit.
Build Bot
Comment 37 2016-08-11 10:09:07 PDT
Created attachment 285831 [details] Archive of layout-test-results from ews102 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews102 Port: mac-yosemite Platform: Mac OS X 10.10.5
Build Bot
Comment 38 2016-08-11 10:24:22 PDT
Comment on attachment 285829 [details] Patch Attachment 285829 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/1852592 New failing tests: media/video-controls-drag.html fast/events/drag-and-drop-autoscroll-inner-frame.html
Build Bot
Comment 39 2016-08-11 10:24:26 PDT
Created attachment 285832 [details] Archive of layout-test-results from ews107 for mac-yosemite-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews107 Port: mac-yosemite-wk2 Platform: Mac OS X 10.10.5
Build Bot
Comment 40 2016-08-11 10:43:40 PDT
Comment on attachment 285829 [details] Patch Attachment 285829 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/1852682 Number of test failures exceeded the failure limit.
Build Bot
Comment 41 2016-08-11 10:43:43 PDT
Created attachment 285834 [details] Archive of layout-test-results from ews115 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews115 Port: mac-yosemite Platform: Mac OS X 10.10.5
Said Abou-Hallawa
Comment 42 2016-08-11 11:23:12 PDT
Build Bot
Comment 43 2016-08-11 13:21:32 PDT
Comment on attachment 285837 [details] Patch Attachment 285837 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/1853286 Number of test failures exceeded the failure limit.
Build Bot
Comment 44 2016-08-11 13:21:36 PDT
Created attachment 285846 [details] Archive of layout-test-results from ews112 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews112 Port: mac-yosemite Platform: Mac OS X 10.10.5
Said Abou-Hallawa
Comment 45 2016-08-11 15:34:10 PDT
Build Bot
Comment 46 2016-08-11 16:47:02 PDT
Comment on attachment 285862 [details] Patch Attachment 285862 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/1854176 New failing tests: http/tests/misc/slow-loading-animated-image.html
Build Bot
Comment 47 2016-08-11 16:47:05 PDT
Created attachment 285867 [details] Archive of layout-test-results from ews114 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews114 Port: mac-yosemite Platform: Mac OS X 10.10.5
Said Abou-Hallawa
Comment 48 2016-08-11 16:57:25 PDT
Said Abou-Hallawa
Comment 49 2016-08-11 18:33:32 PDT
Said Abou-Hallawa
Comment 50 2016-08-12 10:09:42 PDT
Said Abou-Hallawa
Comment 51 2016-08-12 11:36:55 PDT
Created attachment 285923 [details] Patch for review
Said Abou-Hallawa
Comment 52 2016-09-21 16:59:34 PDT
Said Abou-Hallawa
Comment 53 2016-09-21 17:30:06 PDT
Said Abou-Hallawa
Comment 54 2016-09-21 17:59:40 PDT
Said Abou-Hallawa
Comment 55 2016-09-21 18:16:54 PDT
Build Bot
Comment 56 2016-09-21 19:05:24 PDT
Comment on attachment 289498 [details] Patch Attachment 289498 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/2121947 New failing tests: fast/replaced/outline-replaced-elements-offset.html fast/images/favicon-as-image.html http/tests/multipart/invalid-image-data-standalone.html http/tests/misc/favicon-as-image.html fast/events/standalone-image-drag-to-editable.html http/tests/misc/acid3.html
Build Bot
Comment 57 2016-09-21 19:05:30 PDT
Created attachment 289503 [details] Archive of layout-test-results from ews117 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews117 Port: mac-yosemite Platform: Mac OS X 10.10.5
Build Bot
Comment 58 2016-09-21 19:16:23 PDT
Comment on attachment 289498 [details] Patch Attachment 289498 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/2122074 New failing tests: fast/replaced/outline-replaced-elements-offset.html fast/images/favicon-as-image.html http/tests/multipart/invalid-image-data-standalone.html http/tests/misc/favicon-as-image.html fast/events/standalone-image-drag-to-editable.html http/tests/misc/acid3.html
Build Bot
Comment 59 2016-09-21 19:16:29 PDT
Created attachment 289504 [details] Archive of layout-test-results from ews101 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews101 Port: mac-yosemite Platform: Mac OS X 10.10.5
Build Bot
Comment 60 2016-09-21 19:16:57 PDT
Comment on attachment 289498 [details] Patch Attachment 289498 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/2122060 New failing tests: fast/replaced/outline-replaced-elements-offset.html http/tests/multipart/invalid-image-data-standalone.html http/tests/misc/favicon-as-image.html http/tests/misc/acid3.html fast/images/favicon-as-image.html
Build Bot
Comment 61 2016-09-21 19:17:03 PDT
Created attachment 289505 [details] Archive of layout-test-results from ews105 for mac-yosemite-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews105 Port: mac-yosemite-wk2 Platform: Mac OS X 10.10.5
Build Bot
Comment 62 2016-09-21 19:22:03 PDT
Comment on attachment 289498 [details] Patch Attachment 289498 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/2122033 Number of test failures exceeded the failure limit.
Build Bot
Comment 63 2016-09-21 19:22:07 PDT
Created attachment 289507 [details] Archive of layout-test-results from ews121 for ios-simulator-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews121 Port: ios-simulator-elcapitan-wk2 Platform: Mac OS X 10.11.6
Said Abou-Hallawa
Comment 64 2016-09-22 09:30:29 PDT
Said Abou-Hallawa
Comment 65 2016-09-22 09:46:54 PDT
Build Bot
Comment 66 2016-09-22 10:35:41 PDT
Comment on attachment 289568 [details] Patch Attachment 289568 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/2126519 New failing tests: fast/replaced/outline-replaced-elements-offset.html fast/images/favicon-as-image.html http/tests/multipart/invalid-image-data-standalone.html http/tests/misc/favicon-as-image.html fast/events/standalone-image-drag-to-editable.html http/tests/misc/acid3.html
Build Bot
Comment 67 2016-09-22 10:35:46 PDT
Created attachment 289571 [details] Archive of layout-test-results from ews112 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews112 Port: mac-yosemite Platform: Mac OS X 10.10.5
Build Bot
Comment 68 2016-09-22 10:46:05 PDT
Comment on attachment 289568 [details] Patch Attachment 289568 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/2126606 New failing tests: fast/replaced/outline-replaced-elements-offset.html fast/images/favicon-as-image.html http/tests/multipart/invalid-image-data-standalone.html http/tests/misc/favicon-as-image.html fast/events/standalone-image-drag-to-editable.html http/tests/misc/acid3.html
Build Bot
Comment 69 2016-09-22 10:46:10 PDT
Created attachment 289572 [details] Archive of layout-test-results from ews102 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews102 Port: mac-yosemite Platform: Mac OS X 10.10.5
Build Bot
Comment 70 2016-09-22 10:51:06 PDT
Comment on attachment 289568 [details] Patch Attachment 289568 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/2126604 Number of test failures exceeded the failure limit.
Build Bot
Comment 71 2016-09-22 10:51:09 PDT
Comment on attachment 289568 [details] Patch Attachment 289568 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/2126607 New failing tests: fast/replaced/outline-replaced-elements-offset.html http/tests/multipart/invalid-image-data-standalone.html http/tests/misc/favicon-as-image.html http/tests/misc/acid3.html fast/images/favicon-as-image.html
Build Bot
Comment 72 2016-09-22 10:51:10 PDT
Created attachment 289573 [details] Archive of layout-test-results from ews123 for ios-simulator-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews123 Port: ios-simulator-elcapitan-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 73 2016-09-22 10:51:14 PDT
Created attachment 289574 [details] Archive of layout-test-results from ews104 for mac-yosemite-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews104 Port: mac-yosemite-wk2 Platform: Mac OS X 10.10.5
Said Abou-Hallawa
Comment 74 2016-09-22 14:22:40 PDT
Said Abou-Hallawa
Comment 75 2016-09-22 14:49:43 PDT
Build Bot
Comment 76 2016-09-22 15:46:28 PDT
Comment on attachment 289605 [details] Patch Attachment 289605 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/2128020 New failing tests: http/tests/cache/memory-cache-pruning.html
Build Bot
Comment 77 2016-09-22 15:46:34 PDT
Created attachment 289615 [details] Archive of layout-test-results from ews114 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews114 Port: mac-yosemite Platform: Mac OS X 10.10.5
Build Bot
Comment 78 2016-09-22 15:49:01 PDT
Comment on attachment 289605 [details] Patch Attachment 289605 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/2128025 Number of test failures exceeded the failure limit.
Build Bot
Comment 79 2016-09-22 15:49:08 PDT
Created attachment 289617 [details] Archive of layout-test-results from ews124 for ios-simulator-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews124 Port: ios-simulator-elcapitan-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 80 2016-09-22 16:04:12 PDT
Comment on attachment 289605 [details] Patch Attachment 289605 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/2128163 New failing tests: http/tests/cache/memory-cache-pruning.html
Build Bot
Comment 81 2016-09-22 16:04:18 PDT
Created attachment 289623 [details] Archive of layout-test-results from ews102 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews102 Port: mac-yosemite Platform: Mac OS X 10.10.5
Build Bot
Comment 82 2016-09-22 16:09:20 PDT
Comment on attachment 289605 [details] Patch Attachment 289605 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/2128167 New failing tests: http/tests/cache/memory-cache-pruning.html
Build Bot
Comment 83 2016-09-22 16:09:26 PDT
Created attachment 289625 [details] Archive of layout-test-results from ews107 for mac-yosemite-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews107 Port: mac-yosemite-wk2 Platform: Mac OS X 10.10.5
Said Abou-Hallawa
Comment 84 2016-09-22 17:19:06 PDT
Said Abou-Hallawa
Comment 85 2016-09-26 13:40:53 PDT
Said Abou-Hallawa
Comment 86 2016-09-26 14:37:37 PDT
Said Abou-Hallawa
Comment 87 2016-09-26 15:55:44 PDT
Said Abou-Hallawa
Comment 88 2016-09-26 16:29:32 PDT
Tim Horton
Comment 89 2016-09-26 17:19:12 PDT
Comment on attachment 289889 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=289889&action=review > Source/WebCore/platform/graphics/BitmapImage.cpp:398 > + const_cast<ImageSource&>(m_source).dump(ts); Why the const_cast? Is something wrong somewhere else? Not usually a good sign. > Source/WebCore/platform/graphics/BitmapImage.h:76 > + String filenameExtension() const override { return const_cast<ImageSource&>(m_source).filenameExtension(); } > + Optional<IntPoint> hotSpot() const override { return const_cast<ImageSource&>(m_source).hotSpot(); } Ditto on the const_casts. Lots around here. What's up with that? > Source/WebCore/platform/graphics/ImageFrameCache.h:53 > + // Image metadata which is calculated by the decoder or can deduced by the case of the memory NativeImage. I can't parse the second half of this comment. > Source/WebCore/platform/graphics/ImageFrameCache.h:107 > + ImageDecoder *m_decoder { nullptr }; Star's on the wrong side. > Source/WebCore/platform/graphics/ImageSource.cpp:91 > + // If we have decoded frames but there is no encoded data, we shouldn't destroy > + // the decoded image since we won't be able to reconstruct it later. How does that happen? > Source/WebCore/platform/graphics/ImageSource.h:116 > + // FIXME: We should expose a setting to enable/disable progressive loading remove the PLATFORM(IOS)-guard. Grammar is not quite right here ("so that we can remove", maybe?)
Said Abou-Hallawa
Comment 90 2016-09-26 19:06:56 PDT
Said Abou-Hallawa
Comment 91 2016-09-27 09:44:08 PDT
Said Abou-Hallawa
Comment 92 2016-09-27 10:18:31 PDT
Comment on attachment 289889 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=289889&action=review >> Source/WebCore/platform/graphics/BitmapImage.cpp:398 >> + const_cast<ImageSource&>(m_source).dump(ts); > > Why the const_cast? Is something wrong somewhere else? Not usually a good sign. Done. ImageSource::dump() is now a const function. All it does it calls ImageFrameCache::dump() which is also a const function. ImageFrameCache::dump() dumps the image metadata. It does not try to cache any of them. It dumps whatever is already cached. The reason for having ImageSource::dump() not const from the beginning was, it was considered logically const. The only side effect, it had, was lazily caching some of the image metadata. But since this does not seem right, we can dump the existing values without having to mix const calls and non-const calls. >> Source/WebCore/platform/graphics/BitmapImage.h:76 >> + Optional<IntPoint> hotSpot() const override { return const_cast<ImageSource&>(m_source).hotSpot(); } > > Ditto on the const_casts. Lots around here. What's up with that? ImageSource::hotSpot() and ImageSource::filenameExtension() were not const because they may need to cache their values reading from the ImageDecoder. I could have done of one of two things to remove these const_cast: 1. Make ImageSource::hotSpot() and ImageSource::filenameExtension() const which would require ImageFrameCache::hotSpot() and ImageFrameCache::filenameExtension() to be const also. I tried that but I end up marking almost all of the functions in ImageFrameCache const and all the data members to be mutable. This did not seem right when marking functions like ImageFrameCache ::setFrameMetadata() or ImageFrameCache::decodedSizeChanged() be const. 2. Remove the const qualifiers from the base class functions Image::hotSpot() and Image::filenameExtension(). Although this does not very elegant but I think this is the best we can do to fix this issue. >> Source/WebCore/platform/graphics/ImageFrameCache.h:53 >> + // Image metadata which is calculated by the decoder or can deduced by the case of the memory NativeImage. > > I can't parse the second half of this comment. This comment is now read as: // Image metadata which is calculated either by the ImageDecoder or directly // from the NativeImage if this class was created for a memory image. >> Source/WebCore/platform/graphics/ImageFrameCache.h:107 >> + ImageDecoder *m_decoder { nullptr }; > > Star's on the wrong side. Fixed. >> Source/WebCore/platform/graphics/ImageSource.cpp:91 >> + // the decoded image since we won't be able to reconstruct it later. > > How does that happen? I think this can happen if the BitmapImage is created for a memory image in which case no ImageDecoder is needed and no encoded data is available. All we have is the NativeImagePtr and in this case we should not delete this frame since there is no way to get it back. >> Source/WebCore/platform/graphics/ImageSource.h:116 >> + // FIXME: We should expose a setting to enable/disable progressive loading remove the PLATFORM(IOS)-guard. > > Grammar is not quite right here ("so that we can remove", maybe?) Done.
Said Abou-Hallawa
Comment 93 2016-09-27 10:57:54 PDT
Said Abou-Hallawa
Comment 94 2016-09-27 11:38:05 PDT
Simon Fraser (smfr)
Comment 95 2016-09-27 13:08:18 PDT
Comment on attachment 289985 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=289985&action=review > Source/WebCore/ChangeLog:19 > + To remove this burden from the BitmapImage the member 'm_frames' is removed > + from BitmapImage. A new member named 'm_frameCache' of type ImageFrameCache > + is added to ImageSource. This class handles caching and recaching the image > + metadata and the ImageFrames if the image needs decoding. When the BitmapImage > + is initialized with a memory image, the ImageFrameCache initializes its > + metadata and ImageFrames directly from the NativeImagePtr. I'm worried this is a bit too much splitting. Could ImageFrameCache be internal to ImageSource? Or can you more strongly justify splitting out ImageFrameCache because of future async decoding changes? > Source/WebCore/ChangeLog:21 > + When the BitmapImage replying ImageFrame queries, it will ask the ImageSource is replying to? > Source/WebCore/platform/graphics/BitmapImage.cpp:156 > + float scale = subsamplingScale(context, destRect, srcRect); If scale is only used when LOG() is enabled (debug), then won't this generate a warning in release builds? > Source/WebCore/platform/graphics/BitmapImage.h:154 > + bool isAnimated() const override { return const_cast<BitmapImage*>(this)->frameCount() > 1; } This is a bit gross. > Source/WebCore/platform/graphics/ImageFrame.h:121 > + void setDuration(float duration) { m_duration = duration; } Times are normally doubles. What units is this in? > Source/WebCore/platform/graphics/ImageFrameCache.cpp:56 > + // Since we don't have a decoder, we can't figure out the image orientation. > + // Set m_sizeRespectingOrientation to be the same as m_size so it's not 0x0. Can't we query CG for image metadata? > Source/WebCore/platform/graphics/ImageFrameCache.cpp:68 > + unsigned decodedSize = 0; > + for (size_t i = 0; i < count; ++i) > + decodedSize += m_frames[i].clearImage(); It's odd that we always clear data from the first frame. Don't we want to do so taking into account which frame is currently displayed? > Source/WebCore/platform/graphics/ImageFrameCache.cpp:155 > +void ImageFrameCache::ensureFramesSize() This function has a confusing name, since "size" in most of the file refers to image size. > Source/WebCore/platform/graphics/ImageFrameCache.cpp:197 > + frame.m_subsamplingLevel = subsamplingLevel; It's weird that we consider subsamplingLevel as part of metadata, since it depends on the size at which the image is going to be rendered.
Said Abou-Hallawa
Comment 96 2016-09-27 16:04:31 PDT
Comment on attachment 289985 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=289985&action=review >> Source/WebCore/ChangeLog:19 >> + metadata and ImageFrames directly from the NativeImagePtr. > > I'm worried this is a bit too much splitting. Could ImageFrameCache be internal to ImageSource? Or can you more strongly justify splitting out ImageFrameCache because of future async decoding changes? I added the following statement to the ChangeLog: The plan for ImageFrameCache is to be extended for the asynchronous image decoding and also to be used by the non CG image decoders which cache other copies of the ImageFrames. This double caching should be removed. >> Source/WebCore/ChangeLog:21 >> + When the BitmapImage replying ImageFrame queries, it will ask the ImageSource > > is replying to? Fixed. >> Source/WebCore/platform/graphics/BitmapImage.cpp:156 >> + float scale = subsamplingScale(context, destRect, srcRect); > > If scale is only used when LOG() is enabled (debug), then won't this generate a warning in release builds? No. Because scale is used in this statement also: SubsamplingLevel subsamplingLevel = m_source.subsamplingLevelForScale(scale); And subsamplingLevel is used in the LOG statement and in the following statement also: auto image = frameImageAtIndex(m_currentFrame, subsamplingLevel); >> Source/WebCore/platform/graphics/BitmapImage.h:154 >> + bool isAnimated() const override { return const_cast<BitmapImage*>(this)->frameCount() > 1; } > > This is a bit gross. I fixed all the const issues by making the BitmapImage::m_source member be mutable. >> Source/WebCore/platform/graphics/ImageFrame.h:121 >> + void setDuration(float duration) { m_duration = duration; } > > Times are normally doubles. What units is this in? We set ImageFrame::m_duration to the output of ImageDecoder::frameDurationAtIndex() which is float. It defined to be float for all ports. >> Source/WebCore/platform/graphics/ImageFrameCache.cpp:56 >> + // Set m_sizeRespectingOrientation to be the same as m_size so it's not 0x0. > > Can't we query CG for image metadata? I do not think we can query CG for the image orientation and I do not think we need to do. This is the case where a BitmapImage, an ImageSource and an ImageFrameCache are created for a memory image. In this case the assumption is the memory image will be displayed with the default orientation. >> Source/WebCore/platform/graphics/ImageFrameCache.cpp:68 >> + decodedSize += m_frames[i].clearImage(); > > It's odd that we always clear data from the first frame. Don't we want to do so taking into account which frame is currently displayed? Yes we do. We always clear all the frames that comes before count = BitmapImage::m_currentFrame if destroyAll is false. I think this is the best choice since we are clearing the frames that have already been displayed and we are keeping the current one and any other one that comes after it. >> Source/WebCore/platform/graphics/ImageFrameCache.cpp:155 >> +void ImageFrameCache::ensureFramesSize() > > This function has a confusing name, since "size" in most of the file refers to image size. I renamed it to growFrames(). >> Source/WebCore/platform/graphics/ImageFrameCache.cpp:197 >> + frame.m_subsamplingLevel = subsamplingLevel; > > It's weird that we consider subsamplingLevel as part of metadata, since it depends on the size at which the image is going to be rendered. Yes this is true. But the ImageFrame::m_size and ImageFrame::m_nativeImage are different for different subsamplingLevel. We want to check always if an ImageFrame is valid for a given subsamplingLevel. If it is not, we need to recache it. If the ImageFrames of an image were cached for a certain subsamplingLevel and then the subsamplingLevel got changed, we are going to recache the ImageFrames when any of them is requested. So at some point the ImageFrames of this image will have different subsamplingLevel. But this is fine since we may fix all of them later when we need to render them.
Said Abou-Hallawa
Comment 97 2016-09-27 16:06:10 PDT
WebKit Commit Bot
Comment 98 2016-09-27 17:46:19 PDT
Comment on attachment 290017 [details] Patch Rejecting attachment 290017 [details] from commit-queue. Failed to run "['/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch', '--status-host=webkit-queues.webkit.org', '--bot-id=webkit-cq-02', 'validate-changelog', '--check-oops', '--non-interactive', 290017, '--port=mac']" exit_code: 1 cwd: /Volumes/Data/EWS/WebKit ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!. Full output: http://webkit-queues.webkit.org/results/2158164
Said Abou-Hallawa
Comment 99 2016-09-27 17:47:56 PDT
WebKit Commit Bot
Comment 100 2016-09-27 18:09:18 PDT
Comment on attachment 290033 [details] Patch Clearing flags on attachment: 290033 Committed r206481: <http://trac.webkit.org/changeset/206481>
WebKit Commit Bot
Comment 101 2016-09-27 18:09:31 PDT
All reviewed patches have been landed. Closing bug.
Radar WebKit Bug Importer
Comment 102 2017-05-25 11:09:53 PDT
Note You need to log in before you can comment on or make changes to this bug.