mirror of
https://github.com/servo/servo.git
synced 2025-08-04 05:00:08 +01:00
Auto merge of #27266 - jdm:hubs-stubs3, r=Manishearth
Hide Window extension methods by default and add helper Window.js_backtrace method Fixes #26858.
This commit is contained in:
commit
1e182cd185
16 changed files with 40 additions and 8 deletions
|
@ -187,6 +187,9 @@ mod gen {
|
||||||
enabled: bool,
|
enabled: bool,
|
||||||
timeout_seconds: i64,
|
timeout_seconds: i64,
|
||||||
},
|
},
|
||||||
|
servo_helpers: {
|
||||||
|
enabled: bool,
|
||||||
|
},
|
||||||
servoparser: {
|
servoparser: {
|
||||||
async_html_tokenizer: {
|
async_html_tokenizer: {
|
||||||
enabled: bool,
|
enabled: bool,
|
||||||
|
|
|
@ -18,8 +18,8 @@ jitspew = ['js/jitspew']
|
||||||
profilemozjs = ['js/profilemozjs']
|
profilemozjs = ['js/profilemozjs']
|
||||||
unrooted_must_root_lint = ["script_plugins/unrooted_must_root_lint"]
|
unrooted_must_root_lint = ["script_plugins/unrooted_must_root_lint"]
|
||||||
default = ["unrooted_must_root_lint"]
|
default = ["unrooted_must_root_lint"]
|
||||||
webgl_backtrace = ["backtrace", "canvas_traits/webgl_backtrace"]
|
webgl_backtrace = ["canvas_traits/webgl_backtrace"]
|
||||||
js_backtrace = ["backtrace"]
|
js_backtrace = []
|
||||||
refcell_backtrace = ["accountable-refcell"]
|
refcell_backtrace = ["accountable-refcell"]
|
||||||
uwp = ["js/uwp"]
|
uwp = ["js/uwp"]
|
||||||
xr-profile = ["webxr-api/profile"]
|
xr-profile = ["webxr-api/profile"]
|
||||||
|
@ -33,7 +33,7 @@ serde_json = "1.0"
|
||||||
accountable-refcell = { version = "0.2.0", optional = true }
|
accountable-refcell = { version = "0.2.0", optional = true }
|
||||||
app_units = "0.7"
|
app_units = "0.7"
|
||||||
arrayvec = "0.5.1"
|
arrayvec = "0.5.1"
|
||||||
backtrace = { version = "0.3", optional = true }
|
backtrace = "0.3"
|
||||||
base64 = "0.10.1"
|
base64 = "0.10.1"
|
||||||
bitflags = "1.0"
|
bitflags = "1.0"
|
||||||
bluetooth_traits = { path = "../bluetooth_traits" }
|
bluetooth_traits = { path = "../bluetooth_traits" }
|
||||||
|
|
|
@ -136,9 +136,14 @@ partial interface Window {
|
||||||
|
|
||||||
// Proprietary extensions.
|
// Proprietary extensions.
|
||||||
partial interface Window {
|
partial interface Window {
|
||||||
|
[Pref="dom.servo_helpers.enabled"]
|
||||||
void debug(DOMString arg);
|
void debug(DOMString arg);
|
||||||
|
[Pref="dom.servo_helpers.enabled"]
|
||||||
void gc();
|
void gc();
|
||||||
|
[Pref="dom.servo_helpers.enabled"]
|
||||||
void trap();
|
void trap();
|
||||||
|
[Pref="dom.servo_helpers.enabled"]
|
||||||
|
void js_backtrace();
|
||||||
};
|
};
|
||||||
|
|
||||||
// WebDriver extensions
|
// WebDriver extensions
|
||||||
|
|
|
@ -72,6 +72,7 @@ use crate::task_source::{TaskSource, TaskSourceName};
|
||||||
use crate::timers::{IsInterval, TimerCallback};
|
use crate::timers::{IsInterval, TimerCallback};
|
||||||
use crate::webdriver_handlers::jsval_to_webdriver;
|
use crate::webdriver_handlers::jsval_to_webdriver;
|
||||||
use app_units::Au;
|
use app_units::Au;
|
||||||
|
use backtrace::Backtrace;
|
||||||
use base64;
|
use base64;
|
||||||
use bluetooth_traits::BluetoothRequest;
|
use bluetooth_traits::BluetoothRequest;
|
||||||
use canvas_traits::webgl::WebGLChan;
|
use canvas_traits::webgl::WebGLChan;
|
||||||
|
@ -89,7 +90,7 @@ use js::jsapi::Heap;
|
||||||
use js::jsapi::JSAutoRealm;
|
use js::jsapi::JSAutoRealm;
|
||||||
use js::jsapi::JSObject;
|
use js::jsapi::JSObject;
|
||||||
use js::jsapi::JSPROP_ENUMERATE;
|
use js::jsapi::JSPROP_ENUMERATE;
|
||||||
use js::jsapi::{GCReason, JS_GC};
|
use js::jsapi::{GCReason, StackFormat, JS_GC};
|
||||||
use js::jsval::UndefinedValue;
|
use js::jsval::UndefinedValue;
|
||||||
use js::jsval::{JSVal, NullValue};
|
use js::jsval::{JSVal, NullValue};
|
||||||
use js::rust::wrappers::JS_DefineProperty;
|
use js::rust::wrappers::JS_DefineProperty;
|
||||||
|
@ -1081,6 +1082,20 @@ impl WindowMethods for Window {
|
||||||
unsafe { ::std::intrinsics::breakpoint() }
|
unsafe { ::std::intrinsics::breakpoint() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(unsafe_code)]
|
||||||
|
fn Js_backtrace(&self) {
|
||||||
|
unsafe {
|
||||||
|
capture_stack!(in(*self.get_cx()) let stack);
|
||||||
|
let js_stack = stack.and_then(|s| s.as_string(None, StackFormat::SpiderMonkey));
|
||||||
|
let rust_stack = Backtrace::new();
|
||||||
|
println!(
|
||||||
|
"Current JS stack:\n{}\nCurrent Rust stack:\n{:?}",
|
||||||
|
js_stack.unwrap_or(String::new()),
|
||||||
|
rust_stack
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[allow(unsafe_code)]
|
#[allow(unsafe_code)]
|
||||||
fn WebdriverCallback(&self, cx: JSContext, val: HandleValue) {
|
fn WebdriverCallback(&self, cx: JSContext, val: HandleValue) {
|
||||||
let rv = unsafe { jsval_to_webdriver(*cx, &self.globalscope, val) };
|
let rv = unsafe { jsval_to_webdriver(*cx, &self.globalscope, val) };
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
"dom.permissions.testing.allowed_in_nonsecure_contexts": false,
|
"dom.permissions.testing.allowed_in_nonsecure_contexts": false,
|
||||||
"dom.serviceworker.enabled": false,
|
"dom.serviceworker.enabled": false,
|
||||||
"dom.serviceworker.timeout_seconds": 60,
|
"dom.serviceworker.timeout_seconds": 60,
|
||||||
|
"dom.servo_helpers.enabled": false,
|
||||||
"dom.servoparser.async_html_tokenizer.enabled": false,
|
"dom.servoparser.async_html_tokenizer.enabled": false,
|
||||||
"dom.shadowdom.enabled": false,
|
"dom.shadowdom.enabled": false,
|
||||||
"dom.svg.enabled": false,
|
"dom.svg.enabled": false,
|
||||||
|
|
|
@ -3,3 +3,4 @@
|
||||||
// Files are sorted alphabetically. When committing polyfills
|
// Files are sorted alphabetically. When committing polyfills
|
||||||
// order them with numbers, e.g. `01.innerhtml.js` will be executed before
|
// order them with numbers, e.g. `01.innerhtml.js` will be executed before
|
||||||
// `05.jquery.js`
|
// `05.jquery.js`
|
||||||
|
onunhandledrejection = (e) => console.error("xxxjdm error: " + JSON.stringify(e.reason));
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
prefs: ["dom.servo_helpers.enabled:true"]
|
|
@ -0,0 +1 @@
|
||||||
|
prefs: ["dom.servo_helpers.enabled:true"]
|
|
@ -0,0 +1 @@
|
||||||
|
prefs: ["dom.servo_helpers.enabled:true"]
|
|
@ -0,0 +1 @@
|
||||||
|
prefs: ["dom.servo_helpers.enabled:true"]
|
|
@ -1,4 +1,3 @@
|
||||||
[weakref.html]
|
[weakref.html]
|
||||||
[Weak references work]
|
type: testharness
|
||||||
expected: FAIL
|
prefs: ["dom.testbinding.enabled:true", "dom.servo_helpers.enabled:true"]
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
prefs: ["dom.servo_helpers.enabled:true"]
|
1
tests/wpt/mozilla/meta/mozilla/prototypes.html.ini
Normal file
1
tests/wpt/mozilla/meta/mozilla/prototypes.html.ini
Normal file
|
@ -0,0 +1 @@
|
||||||
|
prefs: ["dom.servo_helpers.enabled:true"]
|
1
tests/wpt/mozilla/meta/mozilla/trace_null.html.ini
Normal file
1
tests/wpt/mozilla/meta/mozilla/trace_null.html.ini
Normal file
|
@ -0,0 +1 @@
|
||||||
|
prefs: ["dom.servo_helpers.enabled:true"]
|
|
@ -0,0 +1 @@
|
||||||
|
prefs: ["dom.servo_helpers.enabled:true"]
|
|
@ -1,3 +1,3 @@
|
||||||
[weakref.html]
|
[weakref.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
prefs: [dom.testbinding.enabled:true]
|
prefs: ["dom.testbinding.enabled:true", "dom.servo_helpers.enabled:true"]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue