Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consolidate runnable variants on DOMManipulationTask into a single Runnable variant. #12292

Merged
merged 2 commits into from Jul 7, 2016
Merged
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

@@ -79,7 +79,7 @@ impl VirtualMethods for HTMLDetailsElement {
element: details,
toggle_number: counter
};
let _ = task_source.queue(DOMManipulationTask::FireToggleEvent(runnable));
let _ = task_source.queue(DOMManipulationTask::Runnable(runnable));
}
}
}
@@ -484,8 +484,7 @@ impl HTMLFormElement {
};

// Step 3
window.dom_manipulation_task_source().queue(
DOMManipulationTask::PlannedNavigation(nav)).unwrap();
window.dom_manipulation_task_source().queue(DOMManipulationTask::Runnable(nav)).unwrap();
}

/// Interactively validate the constraints of form elements
@@ -183,7 +183,7 @@ impl HTMLImageElement {
src: src.into(),
});
let task = window.dom_manipulation_task_source();
let _ = task.queue(DOMManipulationTask::Miscellaneous(runnable));
let _ = task.queue(DOMManipulationTask::Runnable(runnable));
}
}
}
@@ -242,7 +242,7 @@ impl HTMLMediaElement {
elem: Trusted::new(self),
};
let win = window_from_node(self);
let _ = win.dom_manipulation_task_source().queue(DOMManipulationTask::MediaTask(box task));
let _ = win.dom_manipulation_task_source().queue(DOMManipulationTask::Runnable(box task));
}

// https://html.spec.whatwg.org/multipage/#internal-pause-steps step 2.2
@@ -266,13 +266,13 @@ impl HTMLMediaElement {
elem: Trusted::new(self),
};
let win = window_from_node(self);
let _ = win.dom_manipulation_task_source().queue(DOMManipulationTask::MediaTask(box task));
let _ = win.dom_manipulation_task_source().queue(DOMManipulationTask::Runnable(box task));
}

fn queue_fire_simple_event(&self, type_: &'static str) {
let win = window_from_node(self);
let task = FireSimpleEventTask::new(self, type_);
let _ = win.dom_manipulation_task_source().queue(DOMManipulationTask::MediaTask(box task));
let _ = win.dom_manipulation_task_source().queue(DOMManipulationTask::Runnable(box task));
}

fn fire_simple_event(&self, type_: &str) {
@@ -497,7 +497,7 @@ impl HTMLMediaElement {

fn queue_dedicated_media_source_failure_steps(&self) {
let _ = window_from_node(self).dom_manipulation_task_source().queue(
DOMManipulationTask::MediaTask(box DedicatedMediaSourceFailureTask::new(self)));
DOMManipulationTask::Runnable(box DedicatedMediaSourceFailureTask::new(self)));
}

// https://html.spec.whatwg.org/multipage/#dedicated-media-source-failure-steps
@@ -17,7 +17,7 @@ use dom::urlhelper::UrlHelper;
use ipc_channel::ipc::{self, IpcSender};
use net_traits::IpcSend;
use net_traits::storage_thread::{StorageThreadMsg, StorageType};
use script_thread::{MainThreadRunnable, ScriptThread};
use script_thread::{Runnable, ScriptThread};
use task_source::TaskSource;
use task_source::dom_manipulation::DOMManipulationTask;
use url::Url;
@@ -161,7 +161,7 @@ impl Storage {
let global_ref = global_root.r();
let task_source = global_ref.as_window().dom_manipulation_task_source();
let trusted_storage = Trusted::new(self);
task_source.queue(DOMManipulationTask::SendStorageNotification(
task_source.queue(DOMManipulationTask::Runnable(
box StorageEventRunnable::new(trusted_storage, key, old_value, new_value))).unwrap();
}
}
@@ -180,8 +180,10 @@ impl StorageEventRunnable {
}
}

impl MainThreadRunnable for StorageEventRunnable {
fn handler(self: Box<StorageEventRunnable>, script_thread: &ScriptThread) {
impl Runnable for StorageEventRunnable {
fn name(&self) -> &'static str { "StorageEventRunnable" }

fn main_thread_handler(self: Box<StorageEventRunnable>, script_thread: &ScriptThread) {
let this = *self;
let storage_root = this.element.root();
let storage = storage_root.r();
@@ -200,11 +200,9 @@ impl<T: Runnable + Send> Runnable for CancellableRunnable<T> {

pub trait Runnable {
fn is_cancelled(&self) -> bool { false }
fn handler(self: Box<Self>);
}

pub trait MainThreadRunnable {
fn handler(self: Box<Self>, script_thread: &ScriptThread);
fn name(&self) -> &'static str { "generic runnable" }
fn handler(self: Box<Self>) {}
fn main_thread_handler(self: Box<Self>, _script_thread: &ScriptThread) { self.handler(); }
}

enum MixedMessage {
@@ -1223,7 +1221,7 @@ impl ScriptThread {

// https://html.spec.whatwg.org/multipage/#the-end step 7
let handler = box DocumentProgressHandler::new(Trusted::new(doc));
self.dom_manipulation_task_source.queue(DOMManipulationTask::DocumentProgress(handler)).unwrap();
self.dom_manipulation_task_source.queue(DOMManipulationTask::Runnable(handler)).unwrap();

self.constellation_chan.send(ConstellationMsg::LoadComplete(pipeline)).unwrap();
}
@@ -5,7 +5,7 @@
use dom::bindings::refcounted::Trusted;
use dom::event::{EventBubbles, EventCancelable};
use dom::eventtarget::EventTarget;
use script_thread::{MainThreadRunnable, MainThreadScriptMsg, Runnable, ScriptThread};
use script_thread::{MainThreadScriptMsg, Runnable, ScriptThread};
use std::result::Result;
use std::sync::mpsc::Sender;
use string_cache::Atom;
@@ -39,29 +39,19 @@ impl DOMManipulationTaskSource {
}

pub enum DOMManipulationTask {
// https://html.spec.whatwg.org/multipage/#the-end step 7
DocumentProgress(Box<Runnable + Send>),
// https://dom.spec.whatwg.org/#concept-event-fire
FireEvent(Trusted<EventTarget>, Atom, EventBubbles, EventCancelable),
// https://html.spec.whatwg.org/multipage/#fire-a-simple-event
FireSimpleEvent(Trusted<EventTarget>, Atom),
// https://html.spec.whatwg.org/multipage/#details-notification-task-steps
FireToggleEvent(Box<Runnable + Send>),
// Placeholder until there's a real media element task queue implementation
MediaTask(Box<Runnable + Send>),
// https://html.spec.whatwg.org/multipage/#planned-navigation
PlannedNavigation(Box<Runnable + Send>),
// https://html.spec.whatwg.org/multipage/#send-a-storage-notification
SendStorageNotification(Box<MainThreadRunnable + Send>),
Miscellaneous(Box<Runnable + Send>),

Runnable(Box<Runnable + Send>),
}

impl DOMManipulationTask {
pub fn handle_task(self, script_thread: &ScriptThread) {
use self::DOMManipulationTask::*;

match self {
DocumentProgress(runnable) => runnable.handler(),
FireEvent(element, name, bubbles, cancelable) => {
let target = element.root();
target.fire_event(&*name, bubbles, cancelable);
@@ -70,11 +60,11 @@ impl DOMManipulationTask {
let target = element.root();
target.fire_simple_event(&*name);
}
FireToggleEvent(runnable) => runnable.handler(),
MediaTask(runnable) => runnable.handler(),
PlannedNavigation(runnable) => runnable.handler(),
SendStorageNotification(runnable) => runnable.handler(script_thread),
Miscellaneous(runnable) => runnable.handler(),
Runnable(runnable) => {
if !runnable.is_cancelled() {
runnable.main_thread_handler(script_thread);
}
}
}
}
}
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.