- From: Simon Pieters <simonp@opera.com>
- Date: Mon, 2 Jan 2017 14:22:24 +0100
- To: Ian Hickson <ian@hixie.ch>
- Cc: Daniel Holbert <dholbert@mozilla.com>, "www-archive@w3.org" <www-archive@w3.org>, Yoav Weiss <yoav@yoav.ws>, Anne van Kesteren <annevk@annevk.nl>
- Message-ID: <CAFUichF4RZNex_Fbpsbe7cHsixzpnsbL3Z62nJUhkSnR-yQOOA@mail.gmail.com>
Where is it defined that data: is fetched sync? I thought it was defined to be fetched async. Step 6 awaits a stable state before entering the synchronous section, so that is a microtask before the fetch can start. Step 13 starts the fetch but the Fetch spec doesn't special case data: URLs to be sync, as far as I can tell? I believe Chromium is trying to make <img src="data:..."> load async. See https://bugs.chromium.org/p/chromium/issues/detail?id=514206 On Sat, Dec 31, 2016 at 4:46 AM, Ian Hickson <ian@hixie.ch> wrote: > Glad to hear it. :-) > > Cheers, > -- > Ian Hickson > > On Fri, Dec 30, 2016 at 4:12 PM Daniel Holbert <dholbert@mozilla.com> > wrote: > >> Thanks for clarifying that -- I wasn't familiar with that "update the >> image data" spec section. >> >> Based on that section, I think you're correct, and Acid3 test #72 is >> indeed OK after all. I've got a local patch to fix Firefox to perform >> data-URI dimension-decodes synchronously, so that we'll go back to >> satisfying this chunk of spec & passing that subtest. >> >> ~Daniel >> >> On 12/23/2016 02:13 AM, Ian Hickson wrote: >> > I believe this is non-conforming. data: URLs are defined to be fetched >> > synchronously and image decoding to obtain dimensions is defined to >> > happen instantaneously (for non-data: URLs, this is black-box >> > indistinguishable from it being rolled into the network delay, of >> course). >> > >> > Specifically, see step 14 of "update the image data", noting that >> > everything up to step 13 happens synchronously from the parser, then the >> > fetching happens as per the fetch spec in one task (because it's a data: >> > URL, it's not asynchronous), and that triggers step 14 which requires >> > the image to be decoded and the size determined synchronously in a >> > single task. >> > >> > -- >> > Ian Hickson >> > >> > On Fri, Dec 23, 2016 at 2:03 AM Daniel Holbert <dholbert@mozilla.com >> > <mailto:dholbert@mozilla.com>> wrote: >> > >> > On 12/23/2016 12:06 AM, Ian Hickson wrote: >> > > The image in question is a data: URL. There's a ten millisecond >> gap >> > > between the last test and this test. That guarantees that there's >> at >> > > least one opportunity to handle the microtask in which the data: >> URL >> > > gets loaded. As far as I can tell this means that by the time the >> > height >> > > property accessor is read, it's guaranteed that the image is >> loaded. >> > >> > Nah, it's actually not guaranteed to be loaded -- hence the bug >> that was >> > filed for Firefox failing this subtest. :) >> > >> > In current Firefox versions, image-decoding actually happens on a >> > *helper-thread* -- not in a main-thread microtask. So, depending on >> > thread-switching / signalling overhead, the image very well might >> not >> > have been decoded (& had its results reported back) when the 10 >> > millisecond timeout expires. Hence, it may very well be in the >> > spec-defined "unavailable" state at that point, when the test reads >> the >> > <img> size. >> > >> > You might think that this is silly and we should redesign this to >> decode >> > image sizes faster, and you'd perhaps be right. >> > >> > But whether we redesign it or not, our current behavior *is* >> compliant >> > with the HTML spec. And I don't see why the Acid3 test should >> > arbitrarily mandate a decode-in-10ms behavior. >> > >> > I linked to a patch in my initial post, which simply makes the test >> > check whether the image is ready before reading the size (& retry if >> > not). Given the above explanation (and the spec discussion in my >> > initial post), does my suggested change seem reasonable? >> > >> > Thanks, >> > ~Daniel >> > >> > -- >> > >> > -- >> > Ian Hickson >> > >> > 😸 >> > >> > -- > > -- > Ian Hickson > > 😸 > >
Received on Monday, 2 January 2017 13:22:57 UTC