Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upPerformanceResourceTiming: secureConnectionStart #21268
Comments
|
Hi! If you have any questions regarding this issue, feel free to make a comment here, or ask it in the If you intend to work on this issue, then add |
|
@highfive: assign me |
|
Hey @verma-varsha! Thanks for your interest in working on this issue. It's now assigned to you! |
|
@verma-varsha Are you still working on this? |
|
@highfive assign me |
|
Hey @wlgranados! Thanks for your interest in working on this issue. It's now assigned to you! |
|
@wlgranados Have you made any progress? Do you have any questions? |
|
Unassigning due to lack of activity. |
|
I would like to take this up, but didn't understand the requirement correctly. secureConnectionStart is part of PerformanceResourceTiming and this is being used nowhere in http_loader.rs Can someone give some context pls? @jdm? |
|
@suhasesturi I think the idea would be add Honestly if you want to try it go for it, I don't know much more than you about the project, if you decide not to do it I'm also interested, and even open to do it together if that could be an option |
|
Our network stack does not have the ability to tell us precisely when the secure connection was initiated right now. We can approximate it by using the same value as requestStart when we're fetching an HTTPS URL, and setting it to 0 otherwise. @tomasdivito's comment is correct in all other respects. |
|
Ok, let's try this out :) @highfive assign me |
|
Hey @tomasdivito! Thanks for your interest in working on this issue. It's now assigned to you! |
|
I have some doubts regarding this task @jdm maybe you can clarify me how to get cerain information in the code or if I should add something to get them
Sorry if this are too many questions for the issue, I'm really interested on understanding more about how this works and it's the first time looking at this codebase :) |
|
The timing allow check code is responsible for setting any existing timings to 0 and preventing any further ones from being set, so you can ignore it for the purposes of this issue. Since there is no way to tell if there's a persistent connection right now, you can add a TODO comment for it and ignore it. |
Add PerformanceResourceTiming:TimingAllowCheck Added timing allow check to http_loader.rs in `fn http_network_fetch`. <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #21270 ### Things to Do - [x] Map header values from Timing-Allow-Origin to URL types using [Url::Parse](https://docs.rs/url/2.0.0/url/) - [x] Check equality of those header URL origin with the origin in question - [x] Just use url instead of `res.origin` - [x] Change `.set_attribute(ResourceAttribute::RedirectStart(0))` to `.set_attribute(ResourceAttribute::RedirectStart(RedirectStartValue::Zero))` - [x] Change `.set_attribute(ResourceAttribute::RedirectEnd(0))` to `.set_attribute(ResourceAttribute::RedirectEnd(RedirectEndValue::Zero))` - [x] Figure out how to set DomainLookupStart, RequestStart, and ResponseStart without directly passing value as part of enum - [x] Figure out how to handle lack of DomainLookupEnd (#21260) and SecureConnectionStart (#21268) - [x] add a flag to ResourceFetchTiming that indicates if the timing check passed, and only update timing attributes if that flag is false - [x] add function to mark timing test as failed and set all attributes to 0 - [x] resolve compile error regarding move of header_strings variable - [x] resolve URL parse errors that appear during test execution - [x] ~~Fix /resource-timing/crossorigin-sandwich-no-TAO.sub.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/crossorigin-sandwich-TAO.sub.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/resource-reload-TAO.sub.html~~ (Get TIMEOUT, fails on Firefox too?) - [x] ~~Fix /resource-timing/resource_TAO_cross_origin_redirect_chain.html~~ (Problem seems to lie in loading the iFrame, when the request is made, the URL attached to the PerformanceResourceTiming interface is the initial URL set on the iFrame instead of the URL that is ultimately loaded) - [x] ~~Fix resource-timing/resource_TAO_multi_wildcard.html~~ (Doesn't work because IMG element doesn't generate HTTP request with Origin field) - [x] Fix /resource-timing/resource_TAO_match_origin.htm - [x] Fix /resource-timing/resource_TAO_match_wildcard.htm - [x] Fix /resource-timing/resource_TAO_multi.htm - [x] Fix /resource-timing/resource_TAO_wildcard.htm - [x] Fix /resource-timing/resource_TAO_zero.htm - [x] Fix /resource-timing/resource_TAO_null.htm - [x] Fix /resource-timing/resource_TAO_origin.htm (tests for responseStart and domainLookupEnd fail because #21260 and #21271 haven't been resolved) - [x] Fix /resource-timing/resource_TAO_space.htm - [x] Fix /resource-timing/resource_TAO_origin_uppercase.htm - [x] ~~Fix /resource-timing/resource_timing_TAO_cross_origin_redirect.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/TAO-case-insensitive-null-opaque-origin.sub.html~~ (TIMEOUT, doesn't seem to parse iFrame SRC correctly? There doesn't seem to be any sign that it makes a request to TAOResponse.py) - [x] Fix /resource-timing/TAO-crossorigin-port.sub.html - [x] ~~Fix /resource-timing/TAO-null-opaque-origin.sub.html~~ (Refer to /resource-timing/TAO-crossorigin-port.sub.html) <!-- Either: --> - [x] There are tests for these changes OR - [ ] These changes do not require tests because ___ <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23873) <!-- Reviewable:end -->
Add PerformanceResourceTiming:TimingAllowCheck Added timing allow check to http_loader.rs in `fn http_network_fetch`. <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #21270 ### Things to Do - [x] Map header values from Timing-Allow-Origin to URL types using [Url::Parse](https://docs.rs/url/2.0.0/url/) - [x] Check equality of those header URL origin with the origin in question - [x] Just use url instead of `res.origin` - [x] Change `.set_attribute(ResourceAttribute::RedirectStart(0))` to `.set_attribute(ResourceAttribute::RedirectStart(RedirectStartValue::Zero))` - [x] Change `.set_attribute(ResourceAttribute::RedirectEnd(0))` to `.set_attribute(ResourceAttribute::RedirectEnd(RedirectEndValue::Zero))` - [x] Figure out how to set DomainLookupStart, RequestStart, and ResponseStart without directly passing value as part of enum - [x] Figure out how to handle lack of DomainLookupEnd (#21260) and SecureConnectionStart (#21268) - [x] add a flag to ResourceFetchTiming that indicates if the timing check passed, and only update timing attributes if that flag is false - [x] add function to mark timing test as failed and set all attributes to 0 - [x] resolve compile error regarding move of header_strings variable - [x] resolve URL parse errors that appear during test execution - [x] ~~Fix /resource-timing/crossorigin-sandwich-no-TAO.sub.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/crossorigin-sandwich-TAO.sub.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/resource-reload-TAO.sub.html~~ (Get TIMEOUT, fails on Firefox too?) - [x] ~~Fix /resource-timing/resource_TAO_cross_origin_redirect_chain.html~~ (Problem seems to lie in loading the iFrame, when the request is made, the URL attached to the PerformanceResourceTiming interface is the initial URL set on the iFrame instead of the URL that is ultimately loaded) - [x] ~~Fix resource-timing/resource_TAO_multi_wildcard.html~~ (Doesn't work because IMG element doesn't generate HTTP request with Origin field) - [x] Fix /resource-timing/resource_TAO_match_origin.htm - [x] Fix /resource-timing/resource_TAO_match_wildcard.htm - [x] Fix /resource-timing/resource_TAO_multi.htm - [x] Fix /resource-timing/resource_TAO_wildcard.htm - [x] Fix /resource-timing/resource_TAO_zero.htm - [x] Fix /resource-timing/resource_TAO_null.htm - [x] Fix /resource-timing/resource_TAO_origin.htm (tests for responseStart and domainLookupEnd fail because #21260 and #21271 haven't been resolved) - [x] Fix /resource-timing/resource_TAO_space.htm - [x] Fix /resource-timing/resource_TAO_origin_uppercase.htm - [x] ~~Fix /resource-timing/resource_timing_TAO_cross_origin_redirect.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/TAO-case-insensitive-null-opaque-origin.sub.html~~ (TIMEOUT, doesn't seem to parse iFrame SRC correctly? There doesn't seem to be any sign that it makes a request to TAOResponse.py) - [x] Fix /resource-timing/TAO-crossorigin-port.sub.html - [x] ~~Fix /resource-timing/TAO-null-opaque-origin.sub.html~~ (Refer to /resource-timing/TAO-crossorigin-port.sub.html) <!-- Either: --> - [x] There are tests for these changes OR - [ ] These changes do not require tests because ___ <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23873) <!-- Reviewable:end -->
Add PerformanceResourceTiming:TimingAllowCheck Added timing allow check to http_loader.rs in `fn http_network_fetch`. <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #21270 ### Things to Do - [x] Map header values from Timing-Allow-Origin to URL types using [Url::Parse](https://docs.rs/url/2.0.0/url/) - [x] Check equality of those header URL origin with the origin in question - [x] Just use url instead of `res.origin` - [x] Change `.set_attribute(ResourceAttribute::RedirectStart(0))` to `.set_attribute(ResourceAttribute::RedirectStart(RedirectStartValue::Zero))` - [x] Change `.set_attribute(ResourceAttribute::RedirectEnd(0))` to `.set_attribute(ResourceAttribute::RedirectEnd(RedirectEndValue::Zero))` - [x] Figure out how to set DomainLookupStart, RequestStart, and ResponseStart without directly passing value as part of enum - [x] Figure out how to handle lack of DomainLookupEnd (#21260) and SecureConnectionStart (#21268) - [x] add a flag to ResourceFetchTiming that indicates if the timing check passed, and only update timing attributes if that flag is false - [x] add function to mark timing test as failed and set all attributes to 0 - [x] resolve compile error regarding move of header_strings variable - [x] resolve URL parse errors that appear during test execution - [x] ~~Fix /resource-timing/crossorigin-sandwich-no-TAO.sub.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/crossorigin-sandwich-TAO.sub.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/resource-reload-TAO.sub.html~~ (Get TIMEOUT, fails on Firefox too?) - [x] ~~Fix /resource-timing/resource_TAO_cross_origin_redirect_chain.html~~ (Problem seems to lie in loading the iFrame, when the request is made, the URL attached to the PerformanceResourceTiming interface is the initial URL set on the iFrame instead of the URL that is ultimately loaded) - [x] ~~Fix resource-timing/resource_TAO_multi_wildcard.html~~ (Doesn't work because IMG element doesn't generate HTTP request with Origin field) - [x] Fix /resource-timing/resource_TAO_match_origin.htm - [x] Fix /resource-timing/resource_TAO_match_wildcard.htm - [x] Fix /resource-timing/resource_TAO_multi.htm - [x] Fix /resource-timing/resource_TAO_wildcard.htm - [x] Fix /resource-timing/resource_TAO_zero.htm - [x] Fix /resource-timing/resource_TAO_null.htm - [x] Fix /resource-timing/resource_TAO_origin.htm (tests for responseStart and domainLookupEnd fail because #21260 and #21271 haven't been resolved) - [x] Fix /resource-timing/resource_TAO_space.htm - [x] Fix /resource-timing/resource_TAO_origin_uppercase.htm - [x] ~~Fix /resource-timing/resource_timing_TAO_cross_origin_redirect.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/TAO-case-insensitive-null-opaque-origin.sub.html~~ (TIMEOUT, doesn't seem to parse iFrame SRC correctly? There doesn't seem to be any sign that it makes a request to TAOResponse.py) - [x] Fix /resource-timing/TAO-crossorigin-port.sub.html - [x] ~~Fix /resource-timing/TAO-null-opaque-origin.sub.html~~ (Refer to /resource-timing/TAO-crossorigin-port.sub.html) <!-- Either: --> - [x] There are tests for these changes OR - [ ] These changes do not require tests because ___ <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23873) <!-- Reviewable:end -->
Add PerformanceResourceTiming:TimingAllowCheck Added timing allow check to http_loader.rs in `fn http_network_fetch`. <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #21270 ### Things to Do - [x] Map header values from Timing-Allow-Origin to URL types using [Url::Parse](https://docs.rs/url/2.0.0/url/) - [x] Check equality of those header URL origin with the origin in question - [x] Just use url instead of `res.origin` - [x] Change `.set_attribute(ResourceAttribute::RedirectStart(0))` to `.set_attribute(ResourceAttribute::RedirectStart(RedirectStartValue::Zero))` - [x] Change `.set_attribute(ResourceAttribute::RedirectEnd(0))` to `.set_attribute(ResourceAttribute::RedirectEnd(RedirectEndValue::Zero))` - [x] Figure out how to set DomainLookupStart, RequestStart, and ResponseStart without directly passing value as part of enum - [x] Figure out how to handle lack of DomainLookupEnd (#21260) and SecureConnectionStart (#21268) - [x] add a flag to ResourceFetchTiming that indicates if the timing check passed, and only update timing attributes if that flag is false - [x] add function to mark timing test as failed and set all attributes to 0 - [x] resolve compile error regarding move of header_strings variable - [x] resolve URL parse errors that appear during test execution - [x] ~~Fix /resource-timing/crossorigin-sandwich-no-TAO.sub.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/crossorigin-sandwich-TAO.sub.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/resource-reload-TAO.sub.html~~ (Get TIMEOUT, fails on Firefox too?) - [x] ~~Fix /resource-timing/resource_TAO_cross_origin_redirect_chain.html~~ (Problem seems to lie in loading the iFrame, when the request is made, the URL attached to the PerformanceResourceTiming interface is the initial URL set on the iFrame instead of the URL that is ultimately loaded) - [x] ~~Fix resource-timing/resource_TAO_multi_wildcard.html~~ (Doesn't work because IMG element doesn't generate HTTP request with Origin field) - [x] Fix /resource-timing/resource_TAO_match_origin.htm - [x] Fix /resource-timing/resource_TAO_match_wildcard.htm - [x] Fix /resource-timing/resource_TAO_multi.htm - [x] Fix /resource-timing/resource_TAO_wildcard.htm - [x] Fix /resource-timing/resource_TAO_zero.htm - [x] Fix /resource-timing/resource_TAO_null.htm - [x] Fix /resource-timing/resource_TAO_origin.htm (tests for responseStart and domainLookupEnd fail because #21260 and #21271 haven't been resolved) - [x] Fix /resource-timing/resource_TAO_space.htm - [x] Fix /resource-timing/resource_TAO_origin_uppercase.htm - [x] ~~Fix /resource-timing/resource_timing_TAO_cross_origin_redirect.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/TAO-case-insensitive-null-opaque-origin.sub.html~~ (TIMEOUT, doesn't seem to parse iFrame SRC correctly? There doesn't seem to be any sign that it makes a request to TAOResponse.py) - [x] Fix /resource-timing/TAO-crossorigin-port.sub.html - [x] ~~Fix /resource-timing/TAO-null-opaque-origin.sub.html~~ (Refer to /resource-timing/TAO-crossorigin-port.sub.html) - [x] /navigation-timing/nav2_test_redirect_chain_xserver_partial_opt_in.html - [x] /navigation-timing/nav2_test_document_open.html - [x] /navigation-timing/nav2_test_frame_removed.html - [x] /performance-timeline/not-clonable.html - [x] /navigation-timing/nav2_test_redirect_xserver.html - [x] /resource-timing/resource_connection_reuse.https.html - [x] /resource-timing/resource_reparenting.html - [x] /resource-timing/resource_connection_reuse.html - [x] /resource-timing/resource_script_types.html - [x] /resource-timing/idlharness.any.html - [x] /resource-timing/clear_resource_timing_functionality.html - [x] /resource-timing/idlharness.any.worker.html - [x] /resource-timing/resource_cached.htm - [x] /resource-timing/resource_connection_reuse_mixed_content_redirect.html - [x] /resource-timing/resource_connection_reuse_mixed_content.html - [x] /resource-timing/resource_timing_buffer_full_when_shrink_buffer_size.html - [x] /navigation-timing/idlharness.window.html - [x] /navigation-timing/nav2_test_navigate_iframe.html - [x] /navigation-timing/nav2_test_navigate_within_document.html - [x] /resource-timing/resource_reuse.sub.html - [x] /navigation-timing/nav2_test_instance_accessible_from_the_start.html - [x] /resource-timing/resource_dedicated_worker.html - [x] /navigation-timing/unload-event-same-origin-check.html - [ ] /navigation-timing/nav2_test_navigation_type_backforward.html <!-- Either: --> - [x] There are tests for these changes OR - [ ] These changes do not require tests because ___ <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23873) <!-- Reviewable:end -->
Add PerformanceResourceTiming:TimingAllowCheck Added timing allow check to http_loader.rs in `fn http_network_fetch`. <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #21270 ### Things to Do - [x] Map header values from Timing-Allow-Origin to URL types using [Url::Parse](https://docs.rs/url/2.0.0/url/) - [x] Check equality of those header URL origin with the origin in question - [x] Just use url instead of `res.origin` - [x] Change `.set_attribute(ResourceAttribute::RedirectStart(0))` to `.set_attribute(ResourceAttribute::RedirectStart(RedirectStartValue::Zero))` - [x] Change `.set_attribute(ResourceAttribute::RedirectEnd(0))` to `.set_attribute(ResourceAttribute::RedirectEnd(RedirectEndValue::Zero))` - [x] Figure out how to set DomainLookupStart, RequestStart, and ResponseStart without directly passing value as part of enum - [x] Figure out how to handle lack of DomainLookupEnd (#21260) and SecureConnectionStart (#21268) - [x] add a flag to ResourceFetchTiming that indicates if the timing check passed, and only update timing attributes if that flag is false - [x] add function to mark timing test as failed and set all attributes to 0 - [x] resolve compile error regarding move of header_strings variable - [x] resolve URL parse errors that appear during test execution - [x] ~~Fix /resource-timing/crossorigin-sandwich-no-TAO.sub.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/crossorigin-sandwich-TAO.sub.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/resource-reload-TAO.sub.html~~ (Get TIMEOUT, fails on Firefox too?) - [x] ~~Fix /resource-timing/resource_TAO_cross_origin_redirect_chain.html~~ (Problem seems to lie in loading the iFrame, when the request is made, the URL attached to the PerformanceResourceTiming interface is the initial URL set on the iFrame instead of the URL that is ultimately loaded) - [x] ~~Fix resource-timing/resource_TAO_multi_wildcard.html~~ (Doesn't work because IMG element doesn't generate HTTP request with Origin field) - [x] Fix /resource-timing/resource_TAO_match_origin.htm - [x] Fix /resource-timing/resource_TAO_match_wildcard.htm - [x] Fix /resource-timing/resource_TAO_multi.htm - [x] Fix /resource-timing/resource_TAO_wildcard.htm - [x] Fix /resource-timing/resource_TAO_zero.htm - [x] Fix /resource-timing/resource_TAO_null.htm - [x] Fix /resource-timing/resource_TAO_origin.htm (tests for responseStart and domainLookupEnd fail because #21260 and #21271 haven't been resolved) - [x] Fix /resource-timing/resource_TAO_space.htm - [x] Fix /resource-timing/resource_TAO_origin_uppercase.htm - [x] ~~Fix /resource-timing/resource_timing_TAO_cross_origin_redirect.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/TAO-case-insensitive-null-opaque-origin.sub.html~~ (TIMEOUT, doesn't seem to parse iFrame SRC correctly? There doesn't seem to be any sign that it makes a request to TAOResponse.py) - [x] Fix /resource-timing/TAO-crossorigin-port.sub.html - [x] ~~Fix /resource-timing/TAO-null-opaque-origin.sub.html~~ (Refer to /resource-timing/TAO-crossorigin-port.sub.html) - [x] /navigation-timing/nav2_test_redirect_chain_xserver_partial_opt_in.html - [x] /navigation-timing/nav2_test_document_open.html - [x] /navigation-timing/nav2_test_frame_removed.html - [x] /performance-timeline/not-clonable.html - [x] /navigation-timing/nav2_test_redirect_xserver.html - [x] /resource-timing/resource_connection_reuse.https.html - [x] /resource-timing/resource_reparenting.html - [x] /resource-timing/resource_connection_reuse.html - [x] /resource-timing/resource_script_types.html - [x] /resource-timing/idlharness.any.html - [x] /resource-timing/clear_resource_timing_functionality.html - [x] /resource-timing/idlharness.any.worker.html - [x] /resource-timing/resource_cached.htm - [x] /resource-timing/resource_connection_reuse_mixed_content_redirect.html - [x] /resource-timing/resource_connection_reuse_mixed_content.html - [x] /resource-timing/resource_timing_buffer_full_when_shrink_buffer_size.html - [x] /navigation-timing/idlharness.window.html - [x] /navigation-timing/nav2_test_navigate_iframe.html - [x] /navigation-timing/nav2_test_navigate_within_document.html - [x] /resource-timing/resource_reuse.sub.html - [x] /navigation-timing/nav2_test_instance_accessible_from_the_start.html - [x] /resource-timing/resource_dedicated_worker.html - [x] /navigation-timing/unload-event-same-origin-check.html - [x] /navigation-timing/nav2_test_navigation_type_backforward.html <!-- Either: --> - [x] There are tests for these changes OR - [ ] These changes do not require tests because ___ <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23873) <!-- Reviewable:end -->
Add PerformanceResourceTiming:TimingAllowCheck Added timing allow check to http_loader.rs in `fn http_network_fetch`. <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #21270 ### Things to Do - [x] Map header values from Timing-Allow-Origin to URL types using [Url::Parse](https://docs.rs/url/2.0.0/url/) - [x] Check equality of those header URL origin with the origin in question - [x] Just use url instead of `res.origin` - [x] Change `.set_attribute(ResourceAttribute::RedirectStart(0))` to `.set_attribute(ResourceAttribute::RedirectStart(RedirectStartValue::Zero))` - [x] Change `.set_attribute(ResourceAttribute::RedirectEnd(0))` to `.set_attribute(ResourceAttribute::RedirectEnd(RedirectEndValue::Zero))` - [x] Figure out how to set DomainLookupStart, RequestStart, and ResponseStart without directly passing value as part of enum - [x] Figure out how to handle lack of DomainLookupEnd (#21260) and SecureConnectionStart (#21268) - [x] add a flag to ResourceFetchTiming that indicates if the timing check passed, and only update timing attributes if that flag is false - [x] add function to mark timing test as failed and set all attributes to 0 - [x] resolve compile error regarding move of header_strings variable - [x] resolve URL parse errors that appear during test execution - [x] ~~Fix /resource-timing/crossorigin-sandwich-no-TAO.sub.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/crossorigin-sandwich-TAO.sub.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/resource-reload-TAO.sub.html~~ (Get TIMEOUT, fails on Firefox too?) - [x] ~~Fix /resource-timing/resource_TAO_cross_origin_redirect_chain.html~~ (Problem seems to lie in loading the iFrame, when the request is made, the URL attached to the PerformanceResourceTiming interface is the initial URL set on the iFrame instead of the URL that is ultimately loaded) - [x] ~~Fix resource-timing/resource_TAO_multi_wildcard.html~~ (Doesn't work because IMG element doesn't generate HTTP request with Origin field) - [x] Fix /resource-timing/resource_TAO_match_origin.htm - [x] Fix /resource-timing/resource_TAO_match_wildcard.htm - [x] Fix /resource-timing/resource_TAO_multi.htm - [x] Fix /resource-timing/resource_TAO_wildcard.htm - [x] Fix /resource-timing/resource_TAO_zero.htm - [x] Fix /resource-timing/resource_TAO_null.htm - [x] Fix /resource-timing/resource_TAO_origin.htm (tests for responseStart and domainLookupEnd fail because #21260 and #21271 haven't been resolved) - [x] Fix /resource-timing/resource_TAO_space.htm - [x] Fix /resource-timing/resource_TAO_origin_uppercase.htm - [x] ~~Fix /resource-timing/resource_timing_TAO_cross_origin_redirect.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/TAO-case-insensitive-null-opaque-origin.sub.html~~ (TIMEOUT, doesn't seem to parse iFrame SRC correctly? There doesn't seem to be any sign that it makes a request to TAOResponse.py) - [x] Fix /resource-timing/TAO-crossorigin-port.sub.html - [x] ~~Fix /resource-timing/TAO-null-opaque-origin.sub.html~~ (Refer to /resource-timing/TAO-crossorigin-port.sub.html) - [x] /navigation-timing/nav2_test_redirect_chain_xserver_partial_opt_in.html - [x] /navigation-timing/nav2_test_document_open.html - [x] /navigation-timing/nav2_test_frame_removed.html - [x] /performance-timeline/not-clonable.html - [x] /navigation-timing/nav2_test_redirect_xserver.html - [x] /resource-timing/resource_connection_reuse.https.html - [x] /resource-timing/resource_reparenting.html - [x] /resource-timing/resource_connection_reuse.html - [x] /resource-timing/resource_script_types.html - [x] /resource-timing/idlharness.any.html - [x] /resource-timing/clear_resource_timing_functionality.html - [x] /resource-timing/idlharness.any.worker.html - [x] /resource-timing/resource_cached.htm - [x] /resource-timing/resource_connection_reuse_mixed_content_redirect.html - [x] /resource-timing/resource_connection_reuse_mixed_content.html - [x] /resource-timing/resource_timing_buffer_full_when_shrink_buffer_size.html - [x] /navigation-timing/idlharness.window.html - [x] /navigation-timing/nav2_test_navigate_iframe.html - [x] /navigation-timing/nav2_test_navigate_within_document.html - [x] /resource-timing/resource_reuse.sub.html - [x] /navigation-timing/nav2_test_instance_accessible_from_the_start.html - [x] /resource-timing/resource_dedicated_worker.html - [x] /navigation-timing/unload-event-same-origin-check.html - [x] /navigation-timing/nav2_test_navigation_type_backforward.html <!-- Either: --> - [x] There are tests for these changes OR - [ ] These changes do not require tests because ___ <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23873) <!-- Reviewable:end -->
Add PerformanceResourceTiming:TimingAllowCheck Added timing allow check to http_loader.rs in `fn http_network_fetch`. <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #21270 ### Things to Do - [x] Map header values from Timing-Allow-Origin to URL types using [Url::Parse](https://docs.rs/url/2.0.0/url/) - [x] Check equality of those header URL origin with the origin in question - [x] Just use url instead of `res.origin` - [x] Change `.set_attribute(ResourceAttribute::RedirectStart(0))` to `.set_attribute(ResourceAttribute::RedirectStart(RedirectStartValue::Zero))` - [x] Change `.set_attribute(ResourceAttribute::RedirectEnd(0))` to `.set_attribute(ResourceAttribute::RedirectEnd(RedirectEndValue::Zero))` - [x] Figure out how to set DomainLookupStart, RequestStart, and ResponseStart without directly passing value as part of enum - [x] Figure out how to handle lack of DomainLookupEnd (#21260) and SecureConnectionStart (#21268) - [x] add a flag to ResourceFetchTiming that indicates if the timing check passed, and only update timing attributes if that flag is false - [x] add function to mark timing test as failed and set all attributes to 0 - [x] resolve compile error regarding move of header_strings variable - [x] resolve URL parse errors that appear during test execution - [x] ~~Fix /resource-timing/crossorigin-sandwich-no-TAO.sub.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/crossorigin-sandwich-TAO.sub.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/resource-reload-TAO.sub.html~~ (Get TIMEOUT, fails on Firefox too?) - [x] ~~Fix /resource-timing/resource_TAO_cross_origin_redirect_chain.html~~ (Problem seems to lie in loading the iFrame, when the request is made, the URL attached to the PerformanceResourceTiming interface is the initial URL set on the iFrame instead of the URL that is ultimately loaded) - [x] ~~Fix resource-timing/resource_TAO_multi_wildcard.html~~ (Doesn't work because IMG element doesn't generate HTTP request with Origin field) - [x] Fix /resource-timing/resource_TAO_match_origin.htm - [x] Fix /resource-timing/resource_TAO_match_wildcard.htm - [x] Fix /resource-timing/resource_TAO_multi.htm - [x] Fix /resource-timing/resource_TAO_wildcard.htm - [x] Fix /resource-timing/resource_TAO_zero.htm - [x] Fix /resource-timing/resource_TAO_null.htm - [x] Fix /resource-timing/resource_TAO_origin.htm (tests for responseStart and domainLookupEnd fail because #21260 and #21271 haven't been resolved) - [x] Fix /resource-timing/resource_TAO_space.htm - [x] Fix /resource-timing/resource_TAO_origin_uppercase.htm - [x] ~~Fix /resource-timing/resource_timing_TAO_cross_origin_redirect.html~~ (Refer to resource_TAO_cross_origin_redirect_chain.html) - [x] ~~Fix /resource-timing/TAO-case-insensitive-null-opaque-origin.sub.html~~ (TIMEOUT, doesn't seem to parse iFrame SRC correctly? There doesn't seem to be any sign that it makes a request to TAOResponse.py) - [x] Fix /resource-timing/TAO-crossorigin-port.sub.html - [x] ~~Fix /resource-timing/TAO-null-opaque-origin.sub.html~~ (Refer to /resource-timing/TAO-crossorigin-port.sub.html) - [x] /navigation-timing/nav2_test_redirect_chain_xserver_partial_opt_in.html - [x] /navigation-timing/nav2_test_document_open.html - [x] /navigation-timing/nav2_test_frame_removed.html - [x] /performance-timeline/not-clonable.html - [x] /navigation-timing/nav2_test_redirect_xserver.html - [x] /resource-timing/resource_connection_reuse.https.html - [x] /resource-timing/resource_reparenting.html - [x] /resource-timing/resource_connection_reuse.html - [x] /resource-timing/resource_script_types.html - [x] /resource-timing/idlharness.any.html - [x] /resource-timing/clear_resource_timing_functionality.html - [x] /resource-timing/idlharness.any.worker.html - [x] /resource-timing/resource_cached.htm - [x] /resource-timing/resource_connection_reuse_mixed_content_redirect.html - [x] /resource-timing/resource_connection_reuse_mixed_content.html - [x] /resource-timing/resource_timing_buffer_full_when_shrink_buffer_size.html - [x] /navigation-timing/idlharness.window.html - [x] /navigation-timing/nav2_test_navigate_iframe.html - [x] /navigation-timing/nav2_test_navigate_within_document.html - [x] /resource-timing/resource_reuse.sub.html - [x] /navigation-timing/nav2_test_instance_accessible_from_the_start.html - [x] /resource-timing/resource_dedicated_worker.html - [x] /navigation-timing/unload-event-same-origin-check.html - [x] /navigation-timing/nav2_test_navigation_type_backforward.html <!-- Either: --> - [x] There are tests for these changes OR - [ ] These changes do not require tests because ___ <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23873) <!-- Reviewable:end -->
Add secure connection start Implementing `secure_connection_start` as well as we can, this is related to #21268 We are setting the value as well as we can since we don't have a way to know if we are currently using a secure transport or where the handshake before the connection is done as the spec says on the step 15 [https://w3c.github.io/resource-timing/#sec-process](https://w3c.github.io/resource-timing/#sec-process) Regarding the Timing Allow Check, that's being done on another PR by another person which will take care of setting the rest of the values on `PerformaceResourceTiming` to Zero and prevent them to set them any other way. I'm currently setting the `secure_connection_time` using `precise_time_ms()` as the `connection_start` and `connection_end` are set that way... but other attributes inside `PerformanceResourceTiming` are set using `precise_time Another thing, the issue talks about setting `redirect_start` but I'm not really sure if it's related, if so I can look up into that too... I might have just read and thought it was all about secure connection start. --- - [x] `./mach build -d` does not report any errors - [ ] `./mach test-tidy` does not report any errors - [ ] These changes fix #___ (GitHub issue number if applicable) <!-- Either: --> - [ ] There are tests for these changes OR - [ ] These changes do not require tests because ___ <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23990) <!-- Reviewable:end -->
Add secure connection start Implementing `secure_connection_start` as well as we can, this is related to #21268 We are setting the value as well as we can since we don't have a way to know if we are currently using a secure transport or where the handshake before the connection is done as the spec says on the step 15 [https://w3c.github.io/resource-timing/#sec-process](https://w3c.github.io/resource-timing/#sec-process) Regarding the Timing Allow Check, that's being done on another PR by another person which will take care of setting the rest of the values on `PerformaceResourceTiming` to Zero and prevent them to set them any other way. I'm currently setting the `secure_connection_time` using `precise_time_ms()` as the `connection_start` and `connection_end` are set that way... but other attributes inside `PerformanceResourceTiming` are set using `precise_time Another thing, the issue talks about setting `redirect_start` but I'm not really sure if it's related, if so I can look up into that too... I might have just read and thought it was all about secure connection start. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [ ] These changes fix #21268 <!-- Either: --> - [ ] There are tests for these changes OR - [ ] These changes do not require tests because ___ <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23990) <!-- Reviewable:end -->
In components/net/http_loader.rs::http_fetch we need to set secure_connection_start (if we're using a persistent connection). Otherwise, we can probably use components/net/connector.rs for this
On getting, the secureConnectionStart attribute MUST return as follows:
Spec: https://w3c.github.io/resource-timing/#dom-performanceresourcetiming-secureconnectionstart