aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/components/main/constellation.rs30
-rw-r--r--src/components/main/pipeline.rs32
2 files changed, 30 insertions, 32 deletions
diff --git a/src/components/main/constellation.rs b/src/components/main/constellation.rs
index 94c5d0e1039..eb1ffd26914 100644
--- a/src/components/main/constellation.rs
+++ b/src/components/main/constellation.rs
@@ -428,9 +428,9 @@ impl Constellation {
self.resource_task.clone(),
self.profiler_chan.clone(),
self.window_size,
- self.opts.clone());
- let url = parse_url("about:failure", None);
- pipeline.load(url);
+ self.opts.clone(),
+ parse_url("about:failure", None));
+ pipeline.load();
let pipeline_wrapped = Rc::new(pipeline);
self.pending_frames.push(FrameChange{
@@ -455,8 +455,9 @@ impl Constellation {
self.resource_task.clone(),
self.profiler_chan.clone(),
self.window_size,
- self.opts.clone());
- pipeline.load(url);
+ self.opts.clone(),
+ url);
+ pipeline.load();
let pipeline_wrapped = Rc::new(pipeline);
self.pending_frames.push(FrameChange {
@@ -570,9 +571,7 @@ impl Constellation {
source Id of LoadIframeUrlMsg does have an associated pipeline in
constellation. This should be impossible.").clone();
- let source_url = source_pipeline.url.borrow().clone().expect("Constellation: LoadUrlIframeMsg's
- source's Url is None. There should never be a LoadUrlIframeMsg from a pipeline
- that was never given a url to load.");
+ let source_url = source_pipeline.url.clone();
let same_script = (source_url.host == url.host &&
source_url.port == url.port) && sandbox == IFrameUnsandboxed;
@@ -587,7 +586,8 @@ impl Constellation {
self.image_cache_task.clone(),
self.profiler_chan.clone(),
self.opts.clone(),
- source_pipeline.clone())
+ source_pipeline.clone(),
+ url)
} else {
debug!("Constellation: loading cross-origin iframe at {:?}", url);
// Create a new script task if not same-origin url's
@@ -599,11 +599,12 @@ impl Constellation {
self.resource_task.clone(),
self.profiler_chan.clone(),
self.window_size,
- self.opts.clone())
+ self.opts.clone(),
+ url)
};
debug!("Constellation: sending load msg to pipeline {:?}", pipeline.id);
- pipeline.load(url);
+ pipeline.load();
let pipeline_wrapped = Rc::new(pipeline);
let rect = self.pending_sizes.pop(&(source_pipeline_id, subpage_id));
for frame_tree in frame_trees.iter() {
@@ -654,9 +655,10 @@ impl Constellation {
self.resource_task.clone(),
self.profiler_chan.clone(),
self.window_size,
- self.opts.clone());
+ self.opts.clone(),
+ url);
- pipeline.load(url);
+ pipeline.load();
let pipeline_wrapped = Rc::new(pipeline);
self.pending_frames.push(FrameChange{
@@ -706,7 +708,7 @@ impl Constellation {
};
for frame in destination_frame.iter() {
- frame.pipeline.reload();
+ frame.pipeline.load();
}
self.grant_paint_permission(destination_frame, constellation_msg::Navigate);
diff --git a/src/components/main/pipeline.rs b/src/components/main/pipeline.rs
index afe13126a38..2b17085e6a2 100644
--- a/src/components/main/pipeline.rs
+++ b/src/components/main/pipeline.rs
@@ -17,7 +17,6 @@ use servo_net::image_cache_task::ImageCacheTask;
use servo_net::resource_task::ResourceTask;
use servo_util::opts::Opts;
use servo_util::time::ProfilerChan;
-use std::cell::RefCell;
use std::rc::Rc;
use url::Url;
@@ -31,7 +30,7 @@ pub struct Pipeline {
pub layout_shutdown_port: Receiver<()>,
pub render_shutdown_port: Receiver<()>,
/// The most recently loaded url
- pub url: RefCell<Option<Url>>,
+ pub url: Url,
}
/// The subset of the pipeline that is needed for layer composition.
@@ -52,7 +51,8 @@ impl Pipeline {
image_cache_task: ImageCacheTask,
profiler_chan: ProfilerChan,
opts: Opts,
- script_pipeline: Rc<Pipeline>)
+ script_pipeline: Rc<Pipeline>,
+ url: Url)
-> Pipeline {
let (layout_port, layout_chan) = LayoutChan::new();
let (render_port, render_chan) = RenderChan::new();
@@ -100,7 +100,8 @@ impl Pipeline {
layout_chan,
render_chan,
layout_shutdown_port,
- render_shutdown_port)
+ render_shutdown_port,
+ url)
}
pub fn create(id: PipelineId,
@@ -111,7 +112,8 @@ impl Pipeline {
resource_task: ResourceTask,
profiler_chan: ProfilerChan,
window_size: Size2D<uint>,
- opts: Opts)
+ opts: Opts,
+ url: Url)
-> Pipeline {
let (script_port, script_chan) = ScriptChan::new();
let (layout_port, layout_chan) = LayoutChan::new();
@@ -124,7 +126,8 @@ impl Pipeline {
layout_chan.clone(),
render_chan.clone(),
layout_shutdown_port,
- render_shutdown_port);
+ render_shutdown_port,
+ url);
let failure = Failure {
pipeline_id: id,
@@ -172,7 +175,8 @@ impl Pipeline {
layout_chan: LayoutChan,
render_chan: RenderChan,
layout_shutdown_port: Receiver<()>,
- render_shutdown_port: Receiver<()>)
+ render_shutdown_port: Receiver<()>,
+ url: Url)
-> Pipeline {
Pipeline {
id: id,
@@ -182,14 +186,13 @@ impl Pipeline {
render_chan: render_chan,
layout_shutdown_port: layout_shutdown_port,
render_shutdown_port: render_shutdown_port,
- url: RefCell::new(None),
+ url: url,
}
}
- pub fn load(&self, url: Url) {
- *self.url.borrow_mut() = Some(url.clone());
+ pub fn load(&self) {
let ScriptChan(ref chan) = self.script_chan;
- chan.send(LoadMsg(self.id, url));
+ chan.send(LoadMsg(self.id, self.url.clone()));
}
pub fn grant_paint_permission(&self) {
@@ -201,13 +204,6 @@ impl Pipeline {
self.render_chan.chan.try_send(PaintPermissionRevoked);
}
- pub fn reload(&self) {
- let url = self.url.borrow().clone();
- url.map(|url| {
- self.load(url);
- });
- }
-
pub fn exit(&self) {
debug!("pipeline {:?} exiting", self.id);