WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
181789
Link headers for subresources are not being processed
https://bugs.webkit.org/show_bug.cgi?id=181789
Summary
Link headers for subresources are not being processed
Yoav Weiss
Reported
2018-01-18 01:37:08 PST
While investigating test failures on
https://bugs.webkit.org/show_bug.cgi?id=181657
I've seen that the ios-simulator build does not get the Link header values when called loadLinksFromHeader is called for subresources. I'm not sure regarding the cause, but the test seems to pass in all other platform that preconnect is working on.
Attachments
Patch
(4.55 KB, patch)
2018-01-24 00:58 PST
,
Yoav Weiss
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from ews101 for mac-sierra
(2.19 MB, application/zip)
2018-01-24 01:58 PST
,
EWS Watchlist
no flags
Details
Archive of layout-test-results from ews105 for mac-sierra-wk2
(2.57 MB, application/zip)
2018-01-24 02:03 PST
,
EWS Watchlist
no flags
Details
Archive of layout-test-results from ews113 for mac-sierra
(2.92 MB, application/zip)
2018-01-24 02:25 PST
,
EWS Watchlist
no flags
Details
Archive of layout-test-results from ews124 for ios-simulator-wk2
(2.17 MB, application/zip)
2018-01-24 02:27 PST
,
EWS Watchlist
no flags
Details
Archive of layout-test-results from ews206 for win-future
(12.08 MB, application/zip)
2018-01-24 03:56 PST
,
EWS Watchlist
no flags
Details
Patch
(4.85 KB, patch)
2018-02-27 01:46 PST
,
Yoav Weiss
no flags
Details
Formatted Diff
Diff
Patch
(7.20 KB, patch)
2018-02-27 02:13 PST
,
Yoav Weiss
no flags
Details
Formatted Diff
Diff
Patch
(6.99 KB, patch)
2018-03-02 12:58 PST
,
Yoav Weiss
no flags
Details
Formatted Diff
Diff
Show Obsolete
(3)
View All
Add attachment
proposed patch, testcase, etc.
Yoav Weiss
Comment 1
2018-01-24 00:55:50 PST
Looking further into this, this is not ios-simulator specific.
Yoav Weiss
Comment 2
2018-01-24 00:58:17 PST
Created
attachment 332131
[details]
Patch
EWS Watchlist
Comment 3
2018-01-24 01:58:18 PST
Comment on
attachment 332131
[details]
Patch
Attachment 332131
[details]
did not pass mac-ews (mac): Output:
http://webkit-queues.webkit.org/results/6192834
New failing tests: http/tests/preload/single_download_preload_headers.php http/tests/preload/preload-encoding.php http/tests/preload/download_resources_from_invalid_headers.html http/tests/preload/download_resources_from_header_iframe.html
EWS Watchlist
Comment 4
2018-01-24 01:58:19 PST
Created
attachment 332139
[details]
Archive of layout-test-results from ews101 for mac-sierra The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews101 Port: mac-sierra Platform: Mac OS X 10.12.6
EWS Watchlist
Comment 5
2018-01-24 02:03:35 PST
Comment on
attachment 332131
[details]
Patch
Attachment 332131
[details]
did not pass mac-wk2-ews (mac-wk2): Output:
http://webkit-queues.webkit.org/results/6192847
New failing tests: http/tests/preload/single_download_preload_headers.php http/tests/preload/download_resources_from_header_iframe.html http/tests/preload/download_resources_from_invalid_headers.html
EWS Watchlist
Comment 6
2018-01-24 02:03:37 PST
Created
attachment 332140
[details]
Archive of layout-test-results from ews105 for mac-sierra-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews105 Port: mac-sierra-wk2 Platform: Mac OS X 10.12.6
EWS Watchlist
Comment 7
2018-01-24 02:25:03 PST
Comment on
attachment 332131
[details]
Patch
Attachment 332131
[details]
did not pass mac-debug-ews (mac): Output:
http://webkit-queues.webkit.org/results/6192908
New failing tests: http/tests/preload/single_download_preload_headers.php http/tests/preload/preload-encoding.php http/tests/preload/download_resources_from_invalid_headers.html http/tests/preload/download_resources_from_header_iframe.html
EWS Watchlist
Comment 8
2018-01-24 02:25:04 PST
Created
attachment 332142
[details]
Archive of layout-test-results from ews113 for mac-sierra The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews113 Port: mac-sierra Platform: Mac OS X 10.12.6
EWS Watchlist
Comment 9
2018-01-24 02:27:28 PST
Comment on
attachment 332131
[details]
Patch
Attachment 332131
[details]
did not pass ios-sim-ews (ios-simulator-wk2): Output:
http://webkit-queues.webkit.org/results/6192927
New failing tests: http/tests/preload/single_download_preload_headers.php http/tests/preload/download_resources_from_header_iframe.html http/tests/preload/download_resources_from_invalid_headers.html
EWS Watchlist
Comment 10
2018-01-24 02:27:29 PST
Created
attachment 332143
[details]
Archive of layout-test-results from ews124 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews124 Port: ios-simulator-wk2 Platform: Mac OS X 10.12.6
EWS Watchlist
Comment 11
2018-01-24 03:56:17 PST
Comment on
attachment 332131
[details]
Patch
Attachment 332131
[details]
did not pass win-ews (win): Output:
http://webkit-queues.webkit.org/results/6193585
New failing tests: http/tests/preload/download_resources_from_header_iframe.html http/tests/preload/single_download_preload_headers.php http/tests/preload/preload-encoding.php http/tests/preload/download_resources_from_invalid_headers.html http/tests/misc/bubble-drag-events.html
EWS Watchlist
Comment 12
2018-01-24 03:56:28 PST
Created
attachment 332145
[details]
Archive of layout-test-results from ews206 for win-future The attached test failures were seen while running run-webkit-tests on the win-ews. Bot: ews206 Port: win-future Platform: CYGWIN_NT-6.1-2.9.0-0.318-5-3-x86_64-64bit
Yoav Weiss
Comment 13
2018-02-27 01:46:17 PST
Created
attachment 334681
[details]
Patch
Yoav Weiss
Comment 14
2018-02-27 02:13:59 PST
Created
attachment 334684
[details]
Patch
Yoav Weiss
Comment 15
2018-02-27 05:45:27 PST
Finally found the time to get back to this issue. Alex, Chris or Youenn, care to take a look?
youenn fablet
Comment 16
2018-03-02 08:07:00 PST
Comment on
attachment 334684
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=334684&action=review
> Source/WebCore/ChangeLog:8 > + Triggers Link header processing when the Link headers arrive on a subresource.
Sounds fine to me. Some suggestions below. We might want at some point to move some important parts of loading code in NetworkProcess. Preload would also benefit from that since that would make it potentially faster. Current implementation of preloads might not be easy to move since it is placed in various bits. I wonder what your thoughts are there.
> Source/WebCore/loader/SubresourceLoader.cpp:363 > + if (m_documentLoader->url() != request().url())
This cheks whether it is a subresource or a document load, right? I would do the check based on options.mode != Mode::Navigation.
> Source/WebCore/loader/SubresourceLoader.cpp:364 > + LinkLoader::loadLinksFromHeader(response.httpHeaderField(HTTPHeaderName::Link), m_documentLoader->url(), *m_frame->document(), LinkLoader::MediaAttributeCheck::SkipMediaAttributeCheck);
I am a little unclear on why we need SkipMediaAttributeCheck. Is there a spec that requires that somewhere?
> LayoutTests/http/tests/preload/link-header-on-subresource.html:10 > +<script src="
http://127.0.0.1:8000/resources/slow-script.pl?delay=400
"></script>
Is there a potential flakiness issue there? Shouldn't we try several times to check for internals.isPreloaded until it succeeds? Ideally, we would want these tests in WPT, right? We could try to use WPT server and doing preloads on URLs served by python scripts that would save some state. We would then get the state making another WPT server request, to check that all preloads are done/not done.
Yoav Weiss
Comment 17
2018-03-02 12:49:48 PST
(In reply to youenn fablet from
comment #16
)
> Comment on
attachment 334684
[details]
> Patch > > View in context: >
https://bugs.webkit.org/attachment.cgi?id=334684&action=review
> > > Source/WebCore/ChangeLog:8 > > + Triggers Link header processing when the Link headers arrive on a subresource. > > Sounds fine to me. Some suggestions below. > > We might want at some point to move some important parts of loading code in > NetworkProcess. > Preload would also benefit from that since that would make it potentially > faster. > Current implementation of preloads might not be easy to move since it is > placed in various bits. > I wonder what your thoughts are there.
Faster sounds better :) Is there a design doc you can share on that move?
> > > Source/WebCore/loader/SubresourceLoader.cpp:363 > > + if (m_documentLoader->url() != request().url()) > > This cheks whether it is a subresource or a document load, right? > I would do the check based on options.mode != Mode::Navigation.
Yeah, that's significantly better :)
> > > Source/WebCore/loader/SubresourceLoader.cpp:364 > > + LinkLoader::loadLinksFromHeader(response.httpHeaderField(HTTPHeaderName::Link), m_documentLoader->url(), *m_frame->document(), LinkLoader::MediaAttributeCheck::SkipMediaAttributeCheck); > > I am a little unclear on why we need SkipMediaAttributeCheck. Is there a > spec that requires that somewhere?
This is an implementation issue. Link headers for navigations are handled in two separate location depending if they have a media attribute or not. (without media attribute they are handled before the PreloadScanner, and with it they are handled after it, once we know the viewport) For subresources, there's no need for that check, as the viewport is already known.
> > > LayoutTests/http/tests/preload/link-header-on-subresource.html:10 > > +<script src="
http://127.0.0.1:8000/resources/slow-script.pl?delay=400
"></script> > > Is there a potential flakiness issue there? > Shouldn't we try several times to check for internals.isPreloaded until it > succeeds?
I can change the test to do that.
> > Ideally, we would want these tests in WPT, right? > We could try to use WPT server and doing preloads on URLs served by python > scripts that would save some state. > We would then get the state making another WPT server request, to check that > all preloads are done/not done.
There's already a similar test on WPT:
https://github.com/w3c/web-platform-tests/blob/master/preload/link-header-on-subresource.html
I should probably take some time soon to unite these test suites. I guess I should put some time to unite those two test suites
Yoav Weiss
Comment 18
2018-03-02 12:58:32 PST
Created
attachment 334919
[details]
Patch
youenn fablet
Comment 19
2018-03-02 13:26:08 PST
> > We might want at some point to move some important parts of loading code in > > NetworkProcess. > > Preload would also benefit from that since that would make it potentially > > faster. > > Current implementation of preloads might not be easy to move since it is > > placed in various bits. > > I wonder what your thoughts are there. > > Faster sounds better :) > Is there a design doc you can share on that move?
Not yet unfortunately. We would like to handle all redirections in network process with potential interactions with UIProcess but no interaction with WebProcess.
WebKit Commit Bot
Comment 20
2018-03-03 00:57:38 PST
Comment on
attachment 334919
[details]
Patch Clearing flags on attachment: 334919 Committed
r229196
: <
https://trac.webkit.org/changeset/229196
>
WebKit Commit Bot
Comment 21
2018-03-03 00:57:40 PST
All reviewed patches have been landed. Closing bug.
Radar WebKit Bug Importer
Comment 22
2018-03-03 00:59:26 PST
<
rdar://problem/38097208
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug