mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Adapt fetch blob test to new way of fetching in chunks
This commit is contained in:
parent
526f6fcadd
commit
ff1e8aaa08
1 changed files with 37 additions and 5 deletions
|
@ -29,15 +29,16 @@ use mime::{self, Mime};
|
||||||
use msg::constellation_msg::TEST_PIPELINE_ID;
|
use msg::constellation_msg::TEST_PIPELINE_ID;
|
||||||
use net::connector::create_ssl_connector_builder;
|
use net::connector::create_ssl_connector_builder;
|
||||||
use net::fetch::cors_cache::CorsCache;
|
use net::fetch::cors_cache::CorsCache;
|
||||||
use net::fetch::methods::{CancellationListener, FetchContext};
|
use net::fetch::methods::{self, CancellationListener, FetchContext};
|
||||||
use net::filemanager_thread::FileManager;
|
use net::filemanager_thread::FileManager;
|
||||||
use net::hsts::HstsEntry;
|
use net::hsts::HstsEntry;
|
||||||
use net::test::HttpState;
|
use net::test::HttpState;
|
||||||
use net_traits::request::{Destination, Origin, RedirectMode, Referrer, Request, RequestMode};
|
use net_traits::request::{Destination, Origin, RedirectMode, Referrer, Request, RequestMode};
|
||||||
use net_traits::response::{CacheState, Response, ResponseBody, ResponseType};
|
use net_traits::response::{CacheState, Response, ResponseBody, ResponseType};
|
||||||
use net_traits::{
|
use net_traits::{
|
||||||
IncludeSubdomains, NetworkError, ReferrerPolicy, ResourceFetchTiming, ResourceTimingType,
|
FetchTaskTarget, IncludeSubdomains, NetworkError, ReferrerPolicy, ResourceFetchTiming, ResourceTimingType,
|
||||||
};
|
};
|
||||||
|
use servo_channel::{channel, Sender};
|
||||||
use servo_url::{ImmutableOrigin, ServoUrl};
|
use servo_url::{ImmutableOrigin, ServoUrl};
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
|
@ -127,7 +128,27 @@ fn test_fetch_blob() {
|
||||||
use ipc_channel::ipc;
|
use ipc_channel::ipc;
|
||||||
use net_traits::blob_url_store::BlobBuf;
|
use net_traits::blob_url_store::BlobBuf;
|
||||||
|
|
||||||
let mut context = new_fetch_context(None, None);
|
struct FetchResponseCollector {
|
||||||
|
sender: Sender<Response>,
|
||||||
|
buffer: Vec<u8>,
|
||||||
|
expected: Vec<u8>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FetchTaskTarget for FetchResponseCollector {
|
||||||
|
fn process_request_body(&mut self, _: &Request) {}
|
||||||
|
fn process_request_eof(&mut self, _: &Request) {}
|
||||||
|
fn process_response(&mut self, _: &Response) {}
|
||||||
|
fn process_response_chunk(&mut self, chunk: Vec<u8>) {
|
||||||
|
self.buffer.extend_from_slice(chunk.as_slice());
|
||||||
|
}
|
||||||
|
/// Fired when the response is fully fetched
|
||||||
|
fn process_response_eof(&mut self, response: &Response) {
|
||||||
|
assert_eq!(self.buffer, self.expected);
|
||||||
|
let _ = self.sender.send(response.clone());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let context = new_fetch_context(None, None);
|
||||||
|
|
||||||
let bytes = b"content";
|
let bytes = b"content";
|
||||||
let blob_buf = BlobBuf {
|
let blob_buf = BlobBuf {
|
||||||
|
@ -147,7 +168,18 @@ fn test_fetch_blob() {
|
||||||
let url = ServoUrl::parse(&format!("blob:{}{}", origin.as_str(), id.to_simple())).unwrap();
|
let url = ServoUrl::parse(&format!("blob:{}{}", origin.as_str(), id.to_simple())).unwrap();
|
||||||
|
|
||||||
let mut request = Request::new(url, Some(Origin::Origin(origin.origin())), None);
|
let mut request = Request::new(url, Some(Origin::Origin(origin.origin())), None);
|
||||||
let fetch_response = fetch_with_context(&mut request, &mut context);
|
|
||||||
|
let (sender, receiver) = channel();
|
||||||
|
|
||||||
|
let mut target = FetchResponseCollector {
|
||||||
|
sender,
|
||||||
|
buffer: vec![],
|
||||||
|
expected: bytes.to_vec(),
|
||||||
|
};
|
||||||
|
|
||||||
|
methods::fetch(&mut request, &mut target, &context);
|
||||||
|
|
||||||
|
let fetch_response = receiver.recv().unwrap();
|
||||||
|
|
||||||
assert!(!fetch_response.is_network_error());
|
assert!(!fetch_response.is_network_error());
|
||||||
|
|
||||||
|
@ -165,7 +197,7 @@ fn test_fetch_blob() {
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
*fetch_response.body.lock().unwrap(),
|
*fetch_response.body.lock().unwrap(),
|
||||||
ResponseBody::Done(bytes.to_vec())
|
ResponseBody::Receiving(vec![])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue