mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
libservo: Convert intercept_web_resource_load
into load_web_resource
(#35564)
Rework the `WebViewDelegate::intercept_web_resource_load` into `WebViewDelegate::load_web_resource` and clean up internal messaging. The main thing here is adding objects which manage the response to these delegate methods. Now we have `WebResourceLoad` and `InterceptedWebResourceLoad` which make it much harder to misuse the API. In addition, the internal messaging for this is cleaned up. Canceling and finishing the load are unrelated to the HTTP body so they are no longer subtypes of an HttpBodyData message. Processing of messages is made a bit more efficient by collecting all body chunks in a vector and only flattening the chunks at the end. Finally, "interceptor" is a much more common spelling than "intercepter" so I've gone ahead and made this change everywhere. Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
f6e2e3d418
commit
cf2b93f18a
14 changed files with 245 additions and 208 deletions
|
@ -30,7 +30,7 @@ use net::fetch::methods::{self, FetchContext};
|
|||
use net::filemanager_thread::FileManager;
|
||||
use net::hsts::HstsEntry;
|
||||
use net::protocols::ProtocolRegistry;
|
||||
use net::request_intercepter::RequestIntercepter;
|
||||
use net::request_interceptor::RequestInterceptor;
|
||||
use net::resource_thread::CoreResourceThreadPool;
|
||||
use net_traits::filemanager_thread::FileTokenCheck;
|
||||
use net_traits::http_status::HttpStatus;
|
||||
|
@ -708,7 +708,7 @@ fn test_fetch_with_hsts() {
|
|||
Weak::new(),
|
||||
))),
|
||||
file_token: FileTokenCheck::NotRequired,
|
||||
request_intercepter: Arc::new(Mutex::new(RequestIntercepter::new(embedder_proxy))),
|
||||
request_interceptor: Arc::new(Mutex::new(RequestInterceptor::new(embedder_proxy))),
|
||||
cancellation_listener: Arc::new(Default::default()),
|
||||
timing: ServoArc::new(Mutex::new(ResourceFetchTiming::new(
|
||||
ResourceTimingType::Navigation,
|
||||
|
@ -768,7 +768,7 @@ fn test_load_adds_host_to_hsts_list_when_url_is_https() {
|
|||
Weak::new(),
|
||||
))),
|
||||
file_token: FileTokenCheck::NotRequired,
|
||||
request_intercepter: Arc::new(Mutex::new(RequestIntercepter::new(embedder_proxy))),
|
||||
request_interceptor: Arc::new(Mutex::new(RequestInterceptor::new(embedder_proxy))),
|
||||
cancellation_listener: Arc::new(Default::default()),
|
||||
timing: ServoArc::new(Mutex::new(ResourceFetchTiming::new(
|
||||
ResourceTimingType::Navigation,
|
||||
|
@ -830,7 +830,7 @@ fn test_fetch_self_signed() {
|
|||
Weak::new(),
|
||||
))),
|
||||
file_token: FileTokenCheck::NotRequired,
|
||||
request_intercepter: Arc::new(Mutex::new(RequestIntercepter::new(embedder_proxy))),
|
||||
request_interceptor: Arc::new(Mutex::new(RequestInterceptor::new(embedder_proxy))),
|
||||
cancellation_listener: Arc::new(Default::default()),
|
||||
timing: ServoArc::new(Mutex::new(ResourceFetchTiming::new(
|
||||
ResourceTimingType::Navigation,
|
||||
|
@ -1363,17 +1363,13 @@ fn test_fetch_request_intercepted() {
|
|||
.status_message(STATUS_MESSAGE.to_vec());
|
||||
let msg = embedder_traits::WebResourceResponseMsg::Start(response);
|
||||
let _ = response_sender.send(msg);
|
||||
let msg2 = embedder_traits::WebResourceResponseMsg::Body(
|
||||
embedder_traits::HttpBodyData::Chunk(BODY_PART1.to_vec()),
|
||||
);
|
||||
let msg2 =
|
||||
embedder_traits::WebResourceResponseMsg::SendBodyData(BODY_PART1.to_vec());
|
||||
let _ = response_sender.send(msg2);
|
||||
let msg3 = embedder_traits::WebResourceResponseMsg::Body(
|
||||
embedder_traits::HttpBodyData::Chunk(BODY_PART2.to_vec()),
|
||||
);
|
||||
let msg3 =
|
||||
embedder_traits::WebResourceResponseMsg::SendBodyData(BODY_PART2.to_vec());
|
||||
let _ = response_sender.send(msg3);
|
||||
let _ = response_sender.send(embedder_traits::WebResourceResponseMsg::Body(
|
||||
embedder_traits::HttpBodyData::Done,
|
||||
));
|
||||
let _ = response_sender.send(embedder_traits::WebResourceResponseMsg::FinishLoad);
|
||||
},
|
||||
_ => unreachable!(),
|
||||
}
|
||||
|
@ -1388,7 +1384,7 @@ fn test_fetch_request_intercepted() {
|
|||
Weak::new(),
|
||||
))),
|
||||
file_token: FileTokenCheck::NotRequired,
|
||||
request_intercepter: Arc::new(Mutex::new(RequestIntercepter::new(embedder_proxy))),
|
||||
request_interceptor: Arc::new(Mutex::new(RequestInterceptor::new(embedder_proxy))),
|
||||
cancellation_listener: Arc::new(Default::default()),
|
||||
timing: ServoArc::new(Mutex::new(ResourceFetchTiming::new(
|
||||
ResourceTimingType::Navigation,
|
||||
|
|
|
@ -42,7 +42,7 @@ use net::fetch::cors_cache::CorsCache;
|
|||
use net::fetch::methods::{self, FetchContext};
|
||||
use net::filemanager_thread::FileManager;
|
||||
use net::protocols::ProtocolRegistry;
|
||||
use net::request_intercepter::RequestIntercepter;
|
||||
use net::request_interceptor::RequestInterceptor;
|
||||
use net::resource_thread::CoreResourceThreadPool;
|
||||
use net::test::HttpState;
|
||||
use net_traits::filemanager_thread::FileTokenCheck;
|
||||
|
@ -177,7 +177,7 @@ fn new_fetch_context(
|
|||
pool_handle.unwrap_or_else(|| Weak::new()),
|
||||
))),
|
||||
file_token: FileTokenCheck::NotRequired,
|
||||
request_intercepter: Arc::new(Mutex::new(RequestIntercepter::new(sender))),
|
||||
request_interceptor: Arc::new(Mutex::new(RequestInterceptor::new(sender))),
|
||||
cancellation_listener: Arc::new(Default::default()),
|
||||
timing: ServoArc::new(Mutex::new(ResourceFetchTiming::new(
|
||||
ResourceTimingType::Navigation,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue