First part of refactoring constellation to support iframe navigation.

The history is now recorded per frame, but needs to be exposed in a followup PR.

Also fixes a race condition that occurs loading iframes under heavy CPU load.

This ensures that iframes never do a reflow / layout until they have a valid
window size set from their parent frame.
This commit is contained in:
Glenn Watson 2015-03-13 15:08:02 +10:00
parent 0888a3a16d
commit 939a89568e
11 changed files with 587 additions and 921 deletions

View file

@ -26,7 +26,7 @@ impl ConstellationChan {
}
}
#[derive(PartialEq, Eq, Copy)]
#[derive(PartialEq, Eq, Copy, Debug)]
pub enum IFrameSandboxState {
IFrameSandboxed,
IFrameUnsandboxed
@ -36,7 +36,7 @@ pub enum IFrameSandboxState {
#[derive(Clone, Copy)]
pub struct Failure {
pub pipeline_id: PipelineId,
pub parent: Option<(PipelineId, SubpageId)>,
pub parent_info: Option<(PipelineId, SubpageId)>,
}
#[derive(Copy)]
@ -236,19 +236,15 @@ impl LoadData {
}
}
/// Represents the two different ways to which a page can be navigated
#[derive(Clone, PartialEq, Eq, Copy, Hash, Debug)]
pub enum NavigationType {
Load, // entered or clicked on a url
Navigate, // browser forward/back buttons
}
#[derive(Clone, PartialEq, Eq, Copy, Hash, Debug)]
pub enum NavigationDirection {
Forward,
Back,
}
#[derive(Clone, PartialEq, Eq, Copy, Hash, Debug)]
pub struct FrameId(pub uint);
#[derive(Clone, PartialEq, Eq, Copy, Hash, Debug)]
pub struct PipelineId(pub uint);