aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/microtask.rs
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2020-03-26 09:15:00 -0400
committerGitHub <noreply@github.com>2020-03-26 09:15:00 -0400
commit0ed0c0d9f01ac5ae906d5b7842aa79c70b119adc (patch)
tree19f87d6806b246482db97c78c7d6b57ed6d367a3 /components/script/microtask.rs
parent1c7fba31ed2b4c4ad054cd8e91f2d3ddb6c839c6 (diff)
parent5621c887fd5b387c7cab80c182fe579889822212 (diff)
downloadservo-0ed0c0d9f01ac5ae906d5b7842aa79c70b119adc.tar.gz
servo-0ed0c0d9f01ac5ae906d5b7842aa79c70b119adc.zip
Auto merge of #26029 - paulrouget:uitask, r=jdm
Set user interactions for tasks fix #26026 I need help here. Retrieving the interaction flag from the promise handle crashes. ```rust let interaction = GetPromiseUserInputEventHandlingState(promise); ``` ``` Stack trace for thread "ScriptThread PipelineId { namespace_id: PipelineNamespaceId(1), index: PipelineIndex(1) }" stack backtrace: 0: backtrace::backtrace::libunwind::trace at /Users/paul/.cargo/git/checkouts/backtrace-rs-96ebaf1bcb788384/91a0aa4/src/backtrace/libunwind.rs:86 backtrace::backtrace::trace_unsynchronized at /Users/paul/.cargo/git/checkouts/backtrace-rs-96ebaf1bcb788384/91a0aa4/src/backtrace/mod.rs:66 1: <servo::backtrace::Print as core::fmt::Debug>::fmt at ports/glutin/backtrace.rs:49 2: <&mut W as core::fmt::Write>::write_fmt 3: std::io::Write::write_fmt at /rustc/45ebd5808afd3df7ba842797c0fcd4447ddf30fb/src/libstd/io/mod.rs:1427 4: servo::backtrace::print at ports/glutin/backtrace.rs:17 5: servo::install_crash_handler::handler at ports/glutin/main2.rs:68 6: <unknown> 7: _ZN2JS37GetPromiseUserInputEventHandlingStateENS_6HandleIP8JSObjectEE at /Users/paul/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/2392ebc/mozjs/js/src/vm/JSObject.h:106 ```
Diffstat (limited to 'components/script/microtask.rs')
-rw-r--r--components/script/microtask.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/components/script/microtask.rs b/components/script/microtask.rs
index 6241b6f63a0..ae4d3c6944e 100644
--- a/components/script/microtask.rs
+++ b/components/script/microtask.rs
@@ -52,6 +52,7 @@ pub struct EnqueuedPromiseCallback {
#[ignore_malloc_size_of = "Rc has unclear ownership"]
pub callback: Rc<PromiseJobCallback>,
pub pipeline: PipelineId,
+ pub is_user_interacting: bool,
}
/// A microtask that comes from a queueMicrotask() Javascript call,
@@ -105,7 +106,10 @@ impl MicrotaskQueue {
match *job {
Microtask::Promise(ref job) => {
if let Some(target) = target_provider(job.pipeline) {
+ let was_interacting = ScriptThread::is_user_interacting();
+ ScriptThread::set_user_interacting(job.is_user_interacting);
let _ = job.callback.Call_(&*target, ExceptionHandling::Report);
+ ScriptThread::set_user_interacting(was_interacting);
}
},
Microtask::User(ref job) => {