mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Allow passing a method, request body, and headers to the pipeline in LoadUrlMsg
This commit is contained in:
parent
15b508ac10
commit
ad16c52a6b
10 changed files with 75 additions and 35 deletions
|
@ -39,7 +39,7 @@ use png;
|
|||
use servo_msg::compositor_msg::{Blank, Epoch, FinishedLoading, IdleRenderState, LayerId};
|
||||
use servo_msg::compositor_msg::{ReadyState, RenderingRenderState, RenderState, Scrollable};
|
||||
use servo_msg::constellation_msg::{ConstellationChan, ExitMsg, LoadUrlMsg, NavigateMsg};
|
||||
use servo_msg::constellation_msg::{PipelineId, ResizedWindowMsg, WindowSizeData};
|
||||
use servo_msg::constellation_msg::{LoadData, PipelineId, ResizedWindowMsg, WindowSizeData};
|
||||
use servo_msg::constellation_msg;
|
||||
use servo_util::geometry::{PagePx, ScreenPx, ViewportPx};
|
||||
use servo_util::memory::MemoryProfilerChan;
|
||||
|
@ -726,7 +726,7 @@ impl IOCompositor {
|
|||
layers"),
|
||||
};
|
||||
|
||||
let msg = LoadUrlMsg(root_pipeline_id, Url::parse(url_string.as_slice()).unwrap());
|
||||
let msg = LoadUrlMsg(root_pipeline_id, LoadData::new(Url::parse(url_string.as_slice()).unwrap()));
|
||||
let ConstellationChan(ref chan) = self.constellation_chan;
|
||||
chan.send(msg);
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ use servo_msg::compositor_msg::LayerId;
|
|||
use servo_msg::constellation_msg::{ConstellationChan, ExitMsg, FailureMsg, Failure, FrameRectMsg};
|
||||
use servo_msg::constellation_msg::{IFrameSandboxState, IFrameUnsandboxed, InitLoadUrlMsg};
|
||||
use servo_msg::constellation_msg::{LoadCompleteMsg, LoadIframeUrlMsg, LoadUrlMsg, Msg, NavigateMsg};
|
||||
use servo_msg::constellation_msg::{NavigationType, PipelineId, RendererReadyMsg, ResizedWindowMsg};
|
||||
use servo_msg::constellation_msg::{LoadData, NavigationType, PipelineId, RendererReadyMsg, ResizedWindowMsg};
|
||||
use servo_msg::constellation_msg::{SubpageId, WindowSizeData};
|
||||
use servo_msg::constellation_msg;
|
||||
use servo_net::image_cache_task::{ImageCacheTask, ImageCacheTaskClient};
|
||||
|
@ -292,7 +292,7 @@ impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> {
|
|||
id: PipelineId,
|
||||
subpage_id: Option<SubpageId>,
|
||||
script_pipeline: Option<Rc<Pipeline>>,
|
||||
url: Url)
|
||||
load_data: LoadData)
|
||||
-> Rc<Pipeline> {
|
||||
let pipe = Pipeline::create::<LTF, STF>(id,
|
||||
subpage_id,
|
||||
|
@ -306,7 +306,7 @@ impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> {
|
|||
self.window_size,
|
||||
self.opts.clone(),
|
||||
script_pipeline,
|
||||
url);
|
||||
load_data);
|
||||
pipe.load();
|
||||
Rc::new(pipe)
|
||||
}
|
||||
|
@ -364,9 +364,9 @@ impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> {
|
|||
// Load a new page, usually -- but not always -- from a mouse click or typed url
|
||||
// If there is already a pending page (self.pending_frames), it will not be overridden;
|
||||
// However, if the id is not encompassed by another change, it will be.
|
||||
LoadUrlMsg(source_id, url) => {
|
||||
LoadUrlMsg(source_id, load_data) => {
|
||||
debug!("constellation got URL load message");
|
||||
self.handle_load_url_msg(source_id, url);
|
||||
self.handle_load_url_msg(source_id, load_data);
|
||||
}
|
||||
// A page loaded through one of several methods above has completed all parsing,
|
||||
// script, and reflow messages have been sent.
|
||||
|
@ -449,7 +449,7 @@ impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> {
|
|||
|
||||
let new_id = self.get_next_pipeline_id();
|
||||
let pipeline = self.new_pipeline(new_id, subpage_id, None,
|
||||
Url::parse("about:failure").unwrap());
|
||||
LoadData::new(Url::parse("about:failure").unwrap()));
|
||||
|
||||
self.pending_frames.push(FrameChange{
|
||||
before: Some(pipeline_id),
|
||||
|
@ -466,7 +466,7 @@ impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> {
|
|||
|
||||
fn handle_init_load(&mut self, url: Url) {
|
||||
let next_pipeline_id = self.get_next_pipeline_id();
|
||||
let pipeline = self.new_pipeline(next_pipeline_id, None, None, url);
|
||||
let pipeline = self.new_pipeline(next_pipeline_id, None, None, LoadData::new(url));
|
||||
|
||||
self.pending_frames.push(FrameChange {
|
||||
before: None,
|
||||
|
@ -573,7 +573,7 @@ impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> {
|
|||
source Id of LoadIframeUrlMsg does have an associated pipeline in
|
||||
constellation. This should be impossible.").clone();
|
||||
|
||||
let source_url = source_pipeline.url.clone();
|
||||
let source_url = source_pipeline.load_data.url.clone();
|
||||
|
||||
let same_script = (source_url.host() == url.host() &&
|
||||
source_url.port() == url.port()) && sandbox == IFrameUnsandboxed;
|
||||
|
@ -591,7 +591,7 @@ impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> {
|
|||
next_pipeline_id,
|
||||
Some(subpage_id),
|
||||
new_pipeline,
|
||||
url
|
||||
LoadData::new(url)
|
||||
);
|
||||
|
||||
let rect = self.pending_sizes.pop(&(source_pipeline_id, subpage_id));
|
||||
|
@ -608,8 +608,8 @@ impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> {
|
|||
self.pipelines.insert(pipeline.id, pipeline);
|
||||
}
|
||||
|
||||
fn handle_load_url_msg(&mut self, source_id: PipelineId, url: Url) {
|
||||
debug!("Constellation: received message to load {:s}", url.to_string());
|
||||
fn handle_load_url_msg(&mut self, source_id: PipelineId, load_data: LoadData) {
|
||||
debug!("Constellation: received message to load {:s}", load_data.url.to_string());
|
||||
// Make sure no pending page would be overridden.
|
||||
let source_frame = self.current_frame().as_ref().unwrap().find(source_id).expect(
|
||||
"Constellation: received a LoadUrlMsg from a pipeline_id associated
|
||||
|
@ -635,7 +635,7 @@ impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> {
|
|||
let subpage_id = source_frame.pipeline.subpage_id;
|
||||
let next_pipeline_id = self.get_next_pipeline_id();
|
||||
|
||||
let pipeline = self.new_pipeline(next_pipeline_id, subpage_id, None, url);
|
||||
let pipeline = self.new_pipeline(next_pipeline_id, subpage_id, None, load_data);
|
||||
|
||||
self.pending_frames.push(FrameChange{
|
||||
before: Some(source_id),
|
||||
|
|
|
@ -11,14 +11,13 @@ use devtools_traits::DevtoolsControlChan;
|
|||
use gfx::render_task::{PaintPermissionGranted, PaintPermissionRevoked};
|
||||
use gfx::render_task::{RenderChan, RenderTask};
|
||||
use servo_msg::constellation_msg::{ConstellationChan, Failure, PipelineId, SubpageId};
|
||||
use servo_msg::constellation_msg::WindowSizeData;
|
||||
use servo_msg::constellation_msg::{LoadData, WindowSizeData};
|
||||
use servo_net::image_cache_task::ImageCacheTask;
|
||||
use gfx::font_cache_task::FontCacheTask;
|
||||
use servo_net::resource_task::ResourceTask;
|
||||
use servo_util::opts::Opts;
|
||||
use servo_util::time::TimeProfilerChan;
|
||||
use std::rc::Rc;
|
||||
use url::Url;
|
||||
|
||||
/// A uniquely-identifiable pipeline of script task, layout task, and render task.
|
||||
pub struct Pipeline {
|
||||
|
@ -29,8 +28,8 @@ pub struct Pipeline {
|
|||
pub render_chan: RenderChan,
|
||||
pub layout_shutdown_port: Receiver<()>,
|
||||
pub render_shutdown_port: Receiver<()>,
|
||||
/// The most recently loaded url
|
||||
pub url: Url,
|
||||
/// The most recently loaded page
|
||||
pub load_data: LoadData,
|
||||
}
|
||||
|
||||
/// The subset of the pipeline that is needed for layer composition.
|
||||
|
@ -58,7 +57,7 @@ impl Pipeline {
|
|||
window_size: WindowSizeData,
|
||||
opts: Opts,
|
||||
script_pipeline: Option<Rc<Pipeline>>,
|
||||
url: Url)
|
||||
load_data: LoadData)
|
||||
-> Pipeline {
|
||||
let layout_pair = ScriptTaskFactory::create_layout_channel(None::<&mut STF>);
|
||||
let (render_port, render_chan) = RenderChan::new();
|
||||
|
@ -134,7 +133,7 @@ impl Pipeline {
|
|||
render_chan,
|
||||
layout_shutdown_port,
|
||||
render_shutdown_port,
|
||||
url)
|
||||
load_data)
|
||||
}
|
||||
|
||||
pub fn new(id: PipelineId,
|
||||
|
@ -144,7 +143,7 @@ impl Pipeline {
|
|||
render_chan: RenderChan,
|
||||
layout_shutdown_port: Receiver<()>,
|
||||
render_shutdown_port: Receiver<()>,
|
||||
url: Url)
|
||||
load_data: LoadData)
|
||||
-> Pipeline {
|
||||
Pipeline {
|
||||
id: id,
|
||||
|
@ -154,13 +153,13 @@ impl Pipeline {
|
|||
render_chan: render_chan,
|
||||
layout_shutdown_port: layout_shutdown_port,
|
||||
render_shutdown_port: render_shutdown_port,
|
||||
url: url,
|
||||
load_data: load_data,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn load(&self) {
|
||||
let ScriptControlChan(ref chan) = self.script_chan;
|
||||
chan.send(LoadMsg(self.id, self.url.clone()));
|
||||
chan.send(LoadMsg(self.id, self.load_data.clone()));
|
||||
}
|
||||
|
||||
pub fn grant_paint_permission(&self) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue