Commit graph

73 commits

Author SHA1 Message Date
Matt Brubeck
1af370c09c servo: Merge #11115 - Use openssl-verify to check certificate + hostname (from mbrubeck:openssl-verify); r=jdm
Fixes #4954.  r? @jdm

This is based on hyperium/hyper#472, though it doesn't re-use that code directly because Servo configures its own OpenSSL context.

Source-Repo: https://github.com/servo/servo
Source-Revision: 40be84df26ce3ce80851e751374154c015506921
2016-05-10 15:00:48 -07:00
Joshua Holmer
d83d68c31a servo: Merge #10971 - Remove CacheRequestDetails (from shssoichiro:remove-cacherequestdetails); r=KiChjang
Fixes #10904

Note that the related web-platform-tests failed both before and after this commit

Source-Repo: https://github.com/servo/servo
Source-Revision: 3128a71ac703bf7579f0fcac9d03655756e8b6c7
2016-05-02 19:58:14 -07:00
Ramana Venkata
3b1084584e servo: Merge #10896 - Implement fetching file URL's (from vramana:basic_fetch_file); r=KiChjang
closes #10166

Source-Repo: https://github.com/servo/servo
Source-Revision: fbf98214c91ce3bb52c32ec4a5e121023843f1eb
2016-04-29 22:54:20 -07:00
Daniel Robertson
2650d582c6 servo: Merge #10867 - Fix logic for cors cache match (from danlrobertson:sandbox); r=KiChjang
The current logic for a cors cache match does not consider "credentials is false and request's credentials mode is not "include" or credentials is true."

I could have missed something, but `CacheRequestDetails::credentials` is set to true if credentials mode is "include", and false otherwise. So `(!cors_cache.credentials && !cors_req.credentials) || cors_cache.credentials` would be directly following the spec, but unless I'm mistaken `cors_cache.credentials || !cors_req.credentials` is logically the same.

Fixes: #10525
Source-Repo: https://github.com/servo/servo
Source-Revision: 3d38a60cee8a2e19ae8f04df7c2374fc9d97999c
2016-04-28 13:36:05 -07:00
Simon Sapin
15f5299fe5 servo: Merge #9840 - Update to rust-url 1.0 (from servo:url-1.0); r=asajeffrey
**Do not merge yet:** rust-url 1.0 is not published yet and may still get breaking changes. The goal of this PR for now is to demonstrate API usage.

Depends on:

* <s>https://github.com/servo/rust-url/pull/176</s>
* <s>https://github.com/alexcrichton/cookie-rs/pull/42</s>
* <s>https://github.com/hyperium/hyper/pull/740</s>
* https://github.com/cyderize/rust-websocket/pull/70
* https://github.com/jgraham/webdriver-rust/pull/28

Source-Repo: https://github.com/servo/servo
Source-Revision: 84ab7e9fe8f4a6528995eff3eb6e814cb724c364
2016-04-23 11:28:31 -07:00
Keith Yeung
3f162e1b39 servo: Merge #10189 - Implement CORS preflight fetch (from KiChjang:cors-preflight-fetch); r=jdm
Fixes #10145.

Source-Repo: https://github.com/servo/servo
Source-Revision: d21ff2fa137155e8db649c100886962300a58140
2016-04-13 20:59:25 +05:01
Nazım Can Altınova
b732a4f93f servo: Merge #10501 - Removed unused imports from methods.rs (from canaltinova:master); r=KiChjang
Fixes #10500

Source-Repo: https://github.com/servo/servo
Source-Revision: 5a3d6850c686695a6a4c4f0e78bc19da6dfaddb2
2016-04-10 00:52:04 +05:01
Keith Yeung
0fc85c69ce servo: Merge #10471 - Use mime! macro in fetch methods (from KiChjang:mime-macro); r=emilio
Source-Repo: https://github.com/servo/servo
Source-Revision: 217e45006bc04a932650cbfda52388ce1d2a5698
2016-04-08 21:31:15 +05:01
Rahul Sharma
707ce17295 servo: Merge #10272 - implements data-url fetching (from creativcoder:implement-data-url-fetch); r=jdm
Fixes #10165
jdm mentioned of decoupling the, payload loading mechanism to data_loader.rs. So accordingly a `decoder` method has been added to data_loader.

Source-Repo: https://github.com/servo/servo
Source-Revision: 9f892edd87441393e5de00790a5abb7fc93a09de
2016-04-01 14:43:30 +05:01
Stjepan Glavina
fdd7bf05a2 servo: Merge #10154 - Fix #10147: Correctly handle flag local_urls_only (from stjepang:fix-local-urls-only-10147); r=KiChjang
In function Request::fetch_main, flag local_urls_only (if set)
should allow fetching local urls only. Before this change, the flag had
the inverse behaviour.

Fixes #10147.
Test with: `./mach test-unit -p net fetch::test_fetch_with_local_urls_only`

Source-Repo: https://github.com/servo/servo
Source-Revision: 38e8c923b519f488cd0614ff9409997998418cc7
2016-03-25 12:13:48 +05:01
Stjepan Glavina
50512a2a04 servo: Merge #10167 - Fix fetching about:blank (from stjepang:fix-aboutblank-body); r=KiChjang
When fetching about:blank, response body should be the empty byte
sequence.
Spec: https://fetch.spec.whatwg.org/#concept-basic-fetch

Before this change, response body would be set to `ResponseBody::Empty`,
and then fetching would result in an infinite loop at step 19 in fn
`main_fetch` (methods.rs).

r? @KiChjang

Source-Repo: https://github.com/servo/servo
Source-Revision: 446783f7b6f0b55164b3b3c3e8be90c2b392cf97
2016-03-24 16:11:19 +05:01
Ms2ger
f23fc0b384 servo: Merge #9951 - Use a match rather than unwrap() in main_fetch (from Ms2ger:fetch-unwrap); r=ecoal95
Source-Repo: https://github.com/servo/servo
Source-Revision: 20992c9df9463b9d5426b1eb4b00381fd2cf35c5
2016-03-11 07:58:19 +05:01
Ms2ger
725d1d8308 servo: Merge #9940 - Fix warnings in the fetch code (from Ms2ger:fetch-warnings); r=asajeffrey
Source-Repo: https://github.com/servo/servo
Source-Revision: 0359fb8ed8c2bd509a69335822ef7c8feb081994
2016-03-09 20:22:30 +05:01
Ms2ger
921864aeef servo: Merge #9923 - Make Response::new() an inherent method (from Ms2ger:response-new); r=jdm
There is no real reason to put this in an extension trait.

Source-Repo: https://github.com/servo/servo
Source-Revision: ebe7d9ebfb28d484ff0cce4e70cb8809f5867af5
2016-03-08 21:56:57 +05:01
Nikki
f2cb1a2b2f servo: Merge #9850 - Set response.body Asynchronously In Fetch (from nikkisquared:2_async_2_furious); r=jdm
Following having finished making Fetch asynchronous, response.body should be set asynchronously, since it's the major goal of calling Fetch. So far, I've made the body wrapped in Arc<Mutex<>>, and I've wrapped a new thread around the part where it's set. I've also discovered that the fetch_async function makes step 8 of Main Fetch obsolete, and I've commented it appropriately.

I'm currently having a hard time with the thread for setting response.body, though. @jdm suggested I have the body set continually, block by block, but my implementation for that runs so slow that I can't finish running my fetch test suite in reasonable time. @KiChjang pointed out that a lot of the lag is due to how response.body currently stores everything inside a Vec. Changing the storage container seems to be both necessary and beyond the scope of the time I have to work on this.

Source-Repo: https://github.com/servo/servo
Source-Revision: fee7cb179ee7ba2f159d87af07afaf0cd99a2161
2016-03-08 04:16:25 +05:01
Nikki
509851641c servo: Merge #9753 - Make Fetch Protocol Asynchronous (from nikkisquared:async_fetch); r=jdm
I'm working on making it possible to run Fetch Asynchronously, as required for some steps, such as Main Fetch. It looks like somebody has already laid some groundwork for that, with a AsyncFetchListener trait and two async fetch functions defined, which I'm building on top of.

So far, as a sort of proof of concept, I've written a test to asynchronously retrieve a fetch response, which uses a simple function to check if the fetch response is complete or not. I'd like to be checked if I'm on the right path, to see if I need to rework anything so far, and what my next step can be.

Source-Repo: https://github.com/servo/servo
Source-Revision: 22ce878edc22360af7391694efc9e5668116d3fb
2016-03-02 01:20:29 +05:01
Keith Yeung
6119a986b6 servo: Merge #9675 - Update fetch attributes to match the new spec (from KiChjang:fetch-attributes); r=jdm
This should make fetch match the spec more closely.

Source-Repo: https://github.com/servo/servo
Source-Revision: 4e244b16dd3c050a8d6b24ee9209caf116462317
2016-02-27 19:53:22 +05:01
Nikki
0cd0a237a3 servo: Merge #9608 - Implementation of HTTP Redirect Fetch step (from nikkisquared:implement_http_redirect_fetch); r=jdm
I've made a first draft of a complete implementation of HTTP Redirect Fetch, most of which is just refactored out of HTTP Fetch. I've also made some minor changes in a few other steps, all collected in the second commit, based on recent changes to the Fetch Standard. Since HTTP Redirect Fetch is so new, I figured now would be a fine time to make those other changes.

The biggest thing on my mind right now is how the spec says[1] "This algorithm will be used by HTML's "navigate" algorithm in addition to HTTP fetch above." This makes me think that this function, as well as HTTP Fetch, need to public, or at least have a public-facing function- since each Fetch function takes an Rc<Request>, which might be weird to require callers to supply.

[1] https://fetch.spec.whatwg.org/#http-redirect-fetch

Source-Repo: https://github.com/servo/servo
Source-Revision: 88afe38092b9bb6320d01c94a9a239e8be284933
2016-02-18 05:25:51 +05:01
Nikki
45ad91e4f5 servo: Merge #9525 - Test filtered responses and implement Cors Check Fetch step (from nikkisquared:test_filtered_responses); r=asajeffrey
I've been writing tests for creating filtered responses. So far I have three of the four types being made (namely, Basic, CORS, and Opaque), and just need to figure out how to make an OpaqueRedirect filtered response, since it's handled separately from the others. I will also add more tests to ensure the content of the filtered responses matches the limitations placed by the specification.

Along the way I implemented Cors Check, since it's required for the CORS filtered response. @jdm suggested I handle it in here, since it's such a small step, compared to other parts of Fetch.

Since all the tests currently pass, and I've spent a while adding the Cors Check and other pieces, I figured now would be a good time to start having it reviewed.

Source-Repo: https://github.com/servo/servo
Source-Revision: f1018b84a838ec8505f6a0bcb6e13286ce80a95c
2016-02-10 02:42:22 +05:01
Nikki
723b1e845f servo: Merge #9427 - Partial implementation of Main Fetch step (from nikkisquared:implement_main_fetch); r=jdm
I started out with Step 11 of Main Fetch so I could test creating filtered responses, which broke my tests that compare the Fetch result to a message on a server. I realized that if I got the tests to work, I'd likely end up breaking them again with the next step of Main Fetch I added, so I went ahead and did as much of Main Fetch as I could figure out.

Some steps I'm sure I could implement, I just don't know how. Such as when the spec says to "wait for response", or how to implement a Runnable object (which iirc is what I need to use) to run everything after Step 8 in parallel.

The fetch tests are still not running correctly, but I sure it's because they're getting a filtered response which doesn't have the body of response. I'm not sure how to handle that, whether it means a change needed in the tests or in the Fetch code. Like always, I look forward to feedback on my work!

Source-Repo: https://github.com/servo/servo
Source-Revision: f0122efcec30594014c5db9a9647098701195532
2016-01-30 04:26:27 +05:01
Nikki
cfc23bc6fb servo: Merge #9391 - Test redirect_count boundaries in Fetch (from nikkisquared:test_redirect); r=jdm
I've written two new tests for Fetch: one to test the highest possible number of redirects succeeds; and another to ensure a failure in Fetch by requesting too many redirects. I also wrote a helper function to be used by each test, since the main difference is how many times they try to redirect.

I've also changed the check against redirect_count in http_network fetch to compare it as greater than or equal to 20, as opposed to being only equal to 20. That's outside of the spec, but in my experience testing for pure equality can easily create errors. Even though it's technically not possible for redirect_count be above 20, bizarre bugs during runtime certainly happen.

Source-Repo: https://github.com/servo/servo
Source-Revision: c80fa3386459efd27b64c8b6cab33794e66d082b
2016-01-21 02:07:38 +05:01
Nikki
00e1d361d6 servo: Merge #9321 - Test setting response.body and fetching a message on a server (from nikkisquared:response_body); r=jdm
I've updated http_fetch to now set response.body, as well as written a test to ensure that fetch can retrieve a message on a server. I've also looked into partially implementing some more of http_fetch while trying to figure out where response.body gets written to.

As always I'd like feedback on my logic, I'm confident there are more steps for handling response.body I need but I find the specification difficult to parse on this.

Source-Repo: https://github.com/servo/servo
Source-Revision: 175b3c2d271cdfdfcac4c3daf5cde3060748b0b8
2016-01-19 03:55:09 +05:01
Keith Yeung
dde4fcf0e7 servo: Merge #9362 - Rename net/fetch/request.rs to net/fetch/methods.rs and move Request … (from KiChjang:move-fetch-request); r=Ms2ger
…to net_traits.

Also updated unit tests to correctly reference and use Request and Fetch methods.

This is in preparation for XHR and EventSource (possibly WebSocket as well), which rely on using Request, but we cannot make the script crate depend upon the net crate.

cc @nikkisquared @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: ce0b89d310212aaaa66b759c7c2548fb2f9a2738

--HG--
rename : servo/components/net/fetch/request.rs => servo/components/net/fetch/methods.rs
2016-01-18 15:36:56 +05:01
Renamed from servo/components/net/fetch/request.rs (Browse further)