aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/script_thread.rs
diff options
context:
space:
mode:
authoroneturkmen <17970732+oneturkmen@users.noreply.github.com>2019-06-07 23:38:01 -0600
committeroneturkmen <17970732+oneturkmen@users.noreply.github.com>2019-06-26 22:23:07 -0600
commit42569280e290e33eac678704c070a432fb5e5e70 (patch)
treece6eb94365652254f770bbb911c058934b8c4914 /components/script/script_thread.rs
parent57205318c5f76fead08e6410512bad86c6d04739 (diff)
downloadservo-42569280e290e33eac678704c070a432fb5e5e70.tar.gz
servo-42569280e290e33eac678704c070a432fb5e5e70.zip
Script: removed a few opts::get()
Diffstat (limited to 'components/script/script_thread.rs')
-rw-r--r--components/script/script_thread.rs90
1 files changed, 86 insertions, 4 deletions
diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs
index a0c8ad3ab43..e2ea62c1fc3 100644
--- a/components/script/script_thread.rs
+++ b/components/script/script_thread.rs
@@ -135,8 +135,8 @@ use script_traits::{ScriptToConstellationChan, TimerEvent, TimerSchedulerMsg};
use script_traits::{TimerSource, TouchEventType, TouchId, UntrustedNodeAddress, WheelDelta};
use script_traits::{UpdatePipelineIdReason, WindowSizeData, WindowSizeType};
use servo_atoms::Atom;
-use servo_config::opts;
use servo_url::{ImmutableOrigin, MutableOrigin, ServoUrl};
+use std::borrow::Cow;
use std::cell::Cell;
use std::cell::RefCell;
use std::collections::{hash_map, HashMap, HashSet};
@@ -644,6 +644,36 @@ pub struct ScriptThread {
/// FIXME(victor):
webrender_api_sender: RenderApiSender,
+
+ /// Periodically print out on which events script threads spend their processing time.
+ profile_script_events: bool,
+
+ /// Print Progressive Web Metrics to console.
+ print_pwm: bool,
+
+ /// Emits notifications when there is a relayout.
+ relayout_event: bool,
+
+ /// True if it is safe to write to the image.
+ prepare_for_screenshot: bool,
+
+ /// Unminify Javascript.
+ unminify_js: bool,
+
+ /// Where to load userscripts from, if any. An empty string will load from
+ /// the resources/user-agent-js directory, and if the option isn't passed userscripts
+ /// won't be loaded
+ userscripts_path: Option<String>,
+
+ /// True if headless mode.
+ headless: bool,
+
+ /// Replace unpaired surrogates in DOM strings with U+FFFD.
+ /// See <https://github.com/servo/servo/issues/6564>
+ replace_surrogates: bool,
+
+ /// An optional string allowing the user agent to be set for testing.
+ user_agent: Cow<'static, str>,
}
/// In the event of thread panic, all data on the stack runs its destructor. However, there
@@ -681,6 +711,15 @@ impl ScriptThreadFactory for ScriptThread {
fn create(
state: InitialScriptState,
load_data: LoadData,
+ profile_script_events: bool,
+ print_pwm: bool,
+ relayout_event: bool,
+ prepare_for_screenshot: bool,
+ unminify_js: bool,
+ userscripts_path: Option<String>,
+ headless: bool,
+ replace_surrogates: bool,
+ user_agent: Cow<'static, str>,
) -> (Sender<message::Msg>, Receiver<message::Msg>) {
let (script_chan, script_port) = unbounded();
@@ -703,7 +742,20 @@ impl ScriptThreadFactory for ScriptThread {
let window_size = state.window_size;
let layout_is_busy = state.layout_is_busy.clone();
- let script_thread = ScriptThread::new(state, script_port, script_chan.clone());
+ let script_thread = ScriptThread::new(
+ state,
+ script_port,
+ script_chan.clone(),
+ profile_script_events,
+ print_pwm,
+ relayout_event,
+ prepare_for_screenshot,
+ unminify_js,
+ userscripts_path,
+ headless,
+ replace_surrogates,
+ user_agent,
+ );
SCRIPT_THREAD_ROOT.with(|root| {
root.set(Some(&script_thread as *const _));
@@ -963,6 +1015,8 @@ impl ScriptThread {
to_constellation_sender: script_thread.script_sender.clone(),
scheduler_chan: script_thread.scheduler_chan.clone(),
image_cache: script_thread.image_cache.clone(),
+ is_headless: script_thread.headless,
+ user_agent: script_thread.user_agent.clone(),
};
Rc::new(WorkletThreadPool::spawn(init))
})
@@ -1056,6 +1110,15 @@ impl ScriptThread {
state: InitialScriptState,
port: Receiver<MainThreadScriptMsg>,
chan: Sender<MainThreadScriptMsg>,
+ profile_script_events: bool,
+ print_pwm: bool,
+ relayout_event: bool,
+ prepare_for_screenshot: bool,
+ unminify_js: bool,
+ userscripts_path: Option<String>,
+ headless: bool,
+ replace_surrogates: bool,
+ user_agent: Cow<'static, str>,
) -> ScriptThread {
let runtime = new_rt_and_cx();
let cx = runtime.cx();
@@ -1159,6 +1222,18 @@ impl ScriptThread {
webrender_document: state.webrender_document,
webrender_api_sender: state.webrender_api_sender,
+
+ profile_script_events,
+ print_pwm,
+
+ relayout_event,
+ prepare_for_screenshot,
+ unminify_js,
+
+ userscripts_path,
+ headless,
+ replace_surrogates,
+ user_agent,
}
}
@@ -1537,7 +1612,7 @@ impl ScriptThread {
{
self.notify_activity_to_hang_monitor(&category);
let start = precise_time_ns();
- let value = if opts::get().profile_script_events {
+ let value = if self.profile_script_events {
let profiler_cat = match category {
ScriptThreadEventCategory::AttachLayout => ProfilerCategory::ScriptAttachLayout,
ScriptThreadEventCategory::ConstellationMsg => {
@@ -1586,7 +1661,7 @@ impl ScriptThread {
for (doc_id, doc) in self.documents.borrow().iter() {
if let Some(pipeline_id) = pipeline_id {
if pipeline_id == doc_id && end - start > MAX_TASK_NS {
- if opts::get().print_pwm {
+ if self.print_pwm {
println!(
"Task took longer than max allowed ({:?}) {:?}",
category,
@@ -2897,6 +2972,13 @@ impl ScriptThread {
self.webrender_document,
self.webrender_api_sender.clone(),
incomplete.layout_is_busy,
+ self.relayout_event,
+ self.prepare_for_screenshot,
+ self.unminify_js,
+ self.userscripts_path.clone(),
+ self.headless,
+ self.replace_surrogates,
+ self.user_agent.clone(),
);
// Initialize the browsing context for the window.