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:
bors-servo 2020-07-14 22:40:20 -04:00 committed by GitHub
commit 1e182cd185
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 40 additions and 8 deletions

View file

@ -136,9 +136,14 @@ partial interface Window {
// Proprietary extensions.
partial interface Window {
[Pref="dom.servo_helpers.enabled"]
void debug(DOMString arg);
[Pref="dom.servo_helpers.enabled"]
void gc();
[Pref="dom.servo_helpers.enabled"]
void trap();
[Pref="dom.servo_helpers.enabled"]
void js_backtrace();
};
// WebDriver extensions

View file

@ -72,6 +72,7 @@ use crate::task_source::{TaskSource, TaskSourceName};
use crate::timers::{IsInterval, TimerCallback};
use crate::webdriver_handlers::jsval_to_webdriver;
use app_units::Au;
use backtrace::Backtrace;
use base64;
use bluetooth_traits::BluetoothRequest;
use canvas_traits::webgl::WebGLChan;
@ -89,7 +90,7 @@ use js::jsapi::Heap;
use js::jsapi::JSAutoRealm;
use js::jsapi::JSObject;
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::{JSVal, NullValue};
use js::rust::wrappers::JS_DefineProperty;
@ -1081,6 +1082,20 @@ impl WindowMethods for Window {
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)]
fn WebdriverCallback(&self, cx: JSContext, val: HandleValue) {
let rv = unsafe { jsval_to_webdriver(*cx, &self.globalscope, val) };