aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
Commit message (Collapse)AuthorAgeFilesLines
...
* Update principals.rsNaveen Gattu2021-12-011-0/+1
|
* Perform non-null checks on pointers in subsumesNaveen Gattu2021-11-301-5/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Need to ensure the passed in pointers are non-null prior to using them unchecked. Seeing sporadic crashes: ``` Stack trace for thread "Script(2,36)" 0: backtrace::backtrace::libunwind::trace at /Users/navgattu/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.63/src/backtrace/libunwind.rs:93:5 backtrace::backtrace::trace_unsynchronized at /Users/navgattu/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.63/src/backtrace/mod.rs:66:5 1: <servo::backtrace::Print as core::fmt::Debug>::fmt at /Users/navgattu/Documents/dev-git/servo/ports/winit/backtrace.rs:53:13 2: core::fmt::write at /rustc/0fa3190394475a84360b34e074e719d519bc40f1/library/core/src/fmt/mod.rs:1117:17 3: std::io::Write::write_fmt at /rustc/0fa3190394475a84360b34e074e719d519bc40f1/library/std/src/io/mod.rs:1667:15 4: servo::backtrace::print at /Users/navgattu/Documents/dev-git/servo/ports/winit/backtrace.rs:17:5 5: servo::crash_handler::install::handler at /Users/navgattu/Documents/dev-git/servo/ports/winit/crash_handler.rs:25:21 6: __sigtramp 7: core::ptr::non_null::NonNull<T>::as_ref at /rustc/0fa3190394475a84360b34e074e719d519bc40f1/library/core/src/ptr/non_null.rs:317:20 8: alloc::rc::Rc<T>::inner at /rustc/0fa3190394475a84360b34e074e719d519bc40f1/library/alloc/src/rc.rs:332:18 <alloc::rc::Rc<T> as core::clone::Clone>::clone at /rustc/0fa3190394475a84360b34e074e719d519bc40f1/library/alloc/src/rc.rs:1479:9 9: <servo_url::origin::MutableOrigin as core::clone::Clone>::clone at /Users/navgattu/Documents/dev-git/servo/components/url/origin.rs:92:26 10: script::dom::bindings::principals::ServoJSPrincipals::origin at /Users/navgattu/Documents/dev-git/servo/components/script/dom/bindings/principals.rs:42:9 11: script::dom::bindings::principals::subsumes at /Users/navgattu/Documents/dev-git/servo/components/script/dom/bindings/principals.rs:136:22 12: _ZN2jsL30SavedFrameSubsumedByPrincipalsEP9JSContextP12JSPrincipalsN2JS6HandleIPNS_10SavedFrameEEE at /Users/navgattu/Documents/dev-git/mozjs/mozjs/js/src/vm/SavedStacks.cpp:617:10 _ZN2jsL20GetFirstMatchedFrameIFbP9JSContextP12JSPrincipalsN2JS6HandleIPNS_10SavedFrameEEEEEES8_S2_S4_RT_S9_NS5_20SavedFrameSelfHostedERb at /Users/navgattu/Documents/dev-git/mozjs/mozjs/js/src/vm/SavedStacks.cpp:636:9 _ZN2jsL21GetFirstSubsumedFrameEP9JSContextP12JSPrincipalsN2JS6HandleIPNS_10SavedFrameEEENS4_20SavedFrameSelfHostedERb at /Users/navgattu/Documents/dev-git/mozjs/mozjs/js/src/vm/SavedStacks.cpp:660:10 13: _ZN2js16UnwrapSavedFrameEP9JSContextP12JSPrincipalsN2JS6HandleIP8JSObjectEENS4_20SavedFrameSelfHostedERb at /Users/navgattu/Documents/dev-git/mozjs/mozjs/js/src/vm/SavedStacks.cpp:744:10 14: _ZN2JS16BuildStackStringEP9JSContextP12JSPrincipalsNS_6HandleIP8JSObjectEENS_13MutableHandleIP8JSStringEEmN2js11StackFormatE at /Users/navgattu/Documents/dev-git/mozjs/mozjs/js/src/vm/SavedStacks.cpp:1041:13 15: mozjs::rust::CapturedJSStack::as_string at /Users/navgattu/.cargo/git/checkouts/rust-mozjs-8611526964119dd6/09edacd/src/rust.rs:1377:17 16: script::dom::webglrenderingcontext::capture_webgl_backtrace::{{closure}} at /Users/navgattu/Documents/dev-git/servo/components/script/dom/webglrenderingcontext.rs:1939:46 17: core::option::Option<T>::and_then at /rustc/0fa3190394475a84360b34e074e719d519bc40f1/library/core/src/option.rs:1043:24 18: script::dom::webglrenderingcontext::capture_webgl_backtrace at /Users/navgattu/Documents/dev-git/servo/components/script/dom/webglrenderingcontext.rs:1939:27 19: script::dom::webglrenderingcontext::WebGLRenderingContext::send_command at /Users/navgattu/Documents/dev-git/servo/components/script/dom/webglrenderingcontext.rs:397:28 20: script::dom::webglrenderingcontext::WebGLRenderingContext::get_gl_extensions at /Users/navgattu/Documents/dev-git/servo/components/script/dom/webglrenderingcontext.rs:913:9 21: <script::dom::webglrenderingcontext::WebGLRenderingContext as script::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextBinding::WebGLRenderingContextMethods>::GetSupportedExtensions::{{closure}} at /Users/navgattu/Documents/dev-git/servo/components/script/dom/webglrenderingcontext.rs:2330:27 22: script::dom::webgl_extensions::extensions::WebGLExtensions::init_once 23: <script::dom::webglrenderingcontext::WebGLRenderingContext as script::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextBinding::WebGLRenderingContextMethods>::GetSupportedExtensions at /Users/navgattu/Documents/dev-git/servo/components/script/dom/webglrenderingcontext.rs:2329:9 24: script::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextBinding::getSupportedExtensions::{{closure}}::{{closure}} at /Users/navgattu/Documents/dev-git/servo/target/debug/build/script-80d43fa6e481c605/out/Bindings/WebGLRenderingContextBinding.rs:1095:46 25: script::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextBinding::getSupportedExtensions::{{closure}} at /Users/navgattu/Documents/dev-git/servo/target/debug/build/script-80d43fa6e481c605/out/Bindings/WebGLRenderingContextBinding.rs:1090:33 26: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once at /rustc/0fa3190394475a84360b34e074e719d519bc40f1/library/core/src/ops/function.rs:280:13 27: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once at /rustc/0fa3190394475a84360b34e074e719d519bc40f1/library/core/src/panic/unwind_safe.rs:271:9 28: std::panicking::try::do_call at /rustc/0fa3190394475a84360b34e074e719d519bc40f1/library/std/src/panicking.rs:403:40 29: <unknown> at /Users/navgattu/.cargo/git/checkouts/rust-mozjs-8611526964119dd6/09edacd/src/glue.rs:299:6 30: std::panicking::try at /rustc/0fa3190394475a84360b34e074e719d519bc40f1/library/std/src/panicking.rs:367:19 31: std::panic::catch_unwind at /rustc/0fa3190394475a84360b34e074e719d519bc40f1/library/std/src/panic.rs:129:14 32: mozjs::panic::wrap_panic at /Users/navgattu/.cargo/git/checkouts/rust-mozjs-8611526964119dd6/09edacd/src/panic.rs:22:11 33: script::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextBinding::getSupportedExtensions at /Users/navgattu/Documents/dev-git/servo/target/debug/build/script-80d43fa6e481c605/out/Bindings/WebGLRenderingContextBinding.rs:1090:5 34: CallJitMethodOp at /Users/navgattu/.cargo/git/checkouts/rust-mozjs-8611526964119dd6/09edacd/src/jsglue.cpp:663:12 35: script::dom::bindings::utils::generic_call 36: script::dom::bindings::utils::generic_method 37: _Z12CallJSNativeP9JSContextPFbS0_jPN2JS5ValueEEN2js10CallReasonERKNS1_8CallArgsE at /Users/navgattu/Documents/dev-git/mozjs/mozjs/js/src/vm/Interpreter.cpp:435:13 _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE at /Users/navgattu/Documents/dev-git/mozjs/mozjs/js/src/vm/Interpreter.cpp:520:12 38: _ZN2js13CallFromStackEP9JSContextRKN2JS8CallArgsE at /Users/navgattu/Documents/dev-git/mozjs/mozjs/js/src/vm/Interpreter.cpp:584:10 _ZL9InterpretP9JSContextRN2js8RunStateE at /Users/navgattu/Documents/dev-git/mozjs/mozjs/js/src/vm/Interpreter.cpp:3244:16 39: _ZN2js9RunScriptEP9JSContextRNS_8RunStateE at /Users/navgattu/Documents/dev-git/mozjs/mozjs/js/src/vm/Interpreter.cpp:405:13 40: _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE at /Users/navgattu/Documents/dev-git/mozjs/mozjs/js/src/vm/Interpreter.cpp:552:13 41: _ZN2js4CallEP9JSContextN2JS6HandleINS2_5ValueEEES5_RKNS_13AnyInvokeArgsENS2_13MutableHandleIS4_EENS_10CallReasonE at /Users/navgattu/Documents/dev-git/mozjs/mozjs/js/src/vm/Interpreter.cpp:597:8 42: _ZN2js9fun_applyEP9JSContextjPN2JS5ValueE at /Users/navgattu/Documents/dev-git/mozjs/mozjs/js/src/vm/JSFunction.cpp:1166:10 43: _Z12CallJSNativeP9JSContextPFbS0_jPN2JS5ValueEEN2js10CallReasonERKNS1_8CallArgsE at /Users/navgattu/Documents/dev-git/mozjs/mozjs/js/src/vm/Interpreter.cpp:435:13 _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE at /Users/navgattu/Documents/dev-git/mozjs/mozjs/js/src/vm/Interpreter.cpp:520:12 44: _ZN2js3jit14DoCallFallbackEP9JSContextPNS0_13BaselineFrameEPNS0_15ICCall_FallbackEjPN2JS5ValueENS7_13MutableHandleIS8_EE at /Users/navgattu/Documents/dev-git/mozjs/mozjs/js/src/jit/BaselineIC.cpp:1841:10 ```
* Update nightly rustc.Josh Matthews2021-11-018-13/+13
|
* Auto merge of #28581 - yvt:fix-xo-attr-setter, r=KiChjangbors-servo2021-08-191-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | The condition for exposing a cross-origin setter should be `CrossOriginWritable`, not `CrossOriginReadable` Fixes `Location#href` being inaccessible from a cross-origin document. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [ ] These changes fix #___ (GitHub issue number if applicable) --- - [x] There are tests for these changes OR - [ ] These changes do not require tests because ___
| * fix(script): the condition for exposing a cross-origin setter is ↵yvt2021-08-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `CrossOriginWritable`, not `CrossOriginReadable` The expression `crossOriginIframe.contentWindow.location.href = "new href"` takes the following steps: (1) Get the setter for `href` by invoking `[[GetOwnProperty]]` on `crossOriginIframe.contentWindow. location`. (2) Call the setter, passing `crossOriginIframe. contentWindow` and `"new href"`. Since the target `Location` is cross origin, getting the setter succeeds only if the `CrossOriginWritable` extended attribute is present on the `href` attribute, and it's present. However, instead of `CrossOriginWritable`, `CrossOriginReadable` was checked mistakenly. Since `Location#href` has `CrossOriginWritable` but not `CrossOriginReadable`, this bug rendered `Location#href` inaccessible from a cross-origin document.
* | Fix compiler warningsBryce Wilson2021-08-142-2/+3
|/
* fix(script): "process the iframe attributes" shouldn't invoke the iframe ↵yvt2021-08-071-11/+18
| | | | | | | | | | load event steps anymore This likely originates from a bug that existed in the specification[1]. A `src`-less iframe would fire two `load` events when implemented according to an affected version of the specification. [1]: https://github.com/whatwg/html/commit/f2839722e1b3dc56368c32fd5808f172f3ea3289
* refactor(script): `navigate_or_reload_child_browsing_context` should only ↵yvt2021-08-031-13/+21
| | | | | | | | | | handle cases involving navigation The initial document creation does not involve navigation, and it would cause a confusion if this was done by a function which has `navigation` in its name. This commit renames `navigate_or_reload_child_browsing_ context` to `start_new_pipeline`, and introduces a new function which has the original name and is dedicated to handle navigation.
* Auto merge of #28546 - yvt:feat-cow-infra, r=jdmbors-servo2021-08-0110-94/+1069
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement `Location`'s custom internal methods This PR partly resurrects #16501 and introduces the use of principals object to associate objects and Realms with origins. Using this infrastructure, this PR implements [the custom internal methods][1] of the `Location` interface, which is "maybe-cross-origin". Unimplemented/incomplete things: - Other maybe-cross-origin interfaces, namely `WindowProxy` and `DissimilarWindowLocation`, aren't implemented correctly yet (causing most test cases of `tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html` to fail). - `WindowProxy`: #28556 - [The "perform a security check" operation][2] and `Location`'s non-cross-origin properties' relevant `Document` origin checks aren't implemented either (not sure if they are covered by the existing tests). - There are a slight deviation from the standard and inefficiency in `CrossOriginGetOwnPropertyHelper`'s current implementation. - #28557 [1]: https://html.spec.whatwg.org/multipage/#the-location-interface [2]: https://html.spec.whatwg.org/multipage/browsers.html#integration-with-idl --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #16243 and make some progress in #2382 --- - [x] There are tests for these changes OR - [ ] These changes do not require tests because ___
| * fix(script): don't pass an unrooted slice to `from_rooted_slice`yvt2021-07-281-1/+6
| |
| * style(script): add underscore to unused parameteryvt2021-07-271-4/+3
| |
| * refactor(script): make grouping clearer while keeping `test-tidy` happyyvt2021-07-271-3/+4
| |
| * refactor(script): refactor common code into ↵yvt2021-07-271-20/+38
| | | | | | | | | | | | | | | | | | `PropertyDefiner.generateUnguardedArray` There are code fragments in `(Method|Attr)Definer.generateArray` that are much alike. This commit refactors them into a new method of `PropertyDefiner` named `generateUnguardedArray` (in contrast to the existing method `generateGuardedArray`).
| * refactor(script): squash `CGDOMJSProxyHandler_set`yvt2021-07-262-51/+49
| | | | | | | | | | | | The implementation in `crate::dom::bindings::proxyhandler:: maybe_cross_origin_set_rawcx` is now directly assigned to `ProxyTraps:: set`.
| * doc(script): fix commentsyvt2021-07-261-4/+4
| | | | | | | | | | `History` is not a maybe-cross-origin object. I must have been very sleepy when I wrote this.
| * refactor(script): don't conjure up `ServoJSPrincipals` in ↵yvt2021-07-251-7/+24
| | | | | | | | | | | | | | | | `ServoJSPrincipalsRef::deref` It's technically safe to do because of `#[repr(transparent)]` and is a prerequisite of having `ServoJSPrincipalsRef: Copy`, but I guess it's not worth an `unsafe` block.
| * refactor(script): apply suggestionsyvt2021-07-253-33/+24
| |
| * refactor(script): apply suggestionyvt2021-07-251-2/+1
| | | | | | Co-authored-by: Josh Matthews <josh@joshmatthews.net>
| * style(script): address `test-tidy` errorsyvt2021-07-173-2/+6
| |
| * feat(script): implement `getOwnEnumerablePropertyKeys` for `Location`yvt2021-07-171-3/+6
| | | | | | | | | | | | | | | | Fixes the following assertion from `tests/wpt/web-platform-tests/html/ browsers/origin/cross-origin-objects/cross-origin-objects.html`: assert_equals(Object.keys(win.location).length, 0, "Object.keys() gives the right answer for cross-origin Location");
| * feat(script): implement the last step of `CrossOriginOwnPropertyKeys`yvt2021-07-171-7/+39
| |
| * doc(script): improve comments in `proxyhandler.rs`yvt2021-07-171-7/+23
| |
| * feat(script): Implement `[[Set]]` for `Location`yvt2021-07-172-3/+123
| |
| * feat(script): enable `js::ProxyOptions::setLazyProto` for maybe-cross-origin ↵yvt2021-07-171-2/+14
| | | | | | | | | | | | | | | | objects Setting the lazy proto option allows proxy handlers to provide dynamic prototype objects. This is necessary for the customization of `ProxyTraps::{get,set}PrototypeOf` to actually take effect.
| * feat(script): Implement `[[{Get,Set}PrototypeOf]]` for `Location`yvt2021-07-172-19/+151
| |
| * feat(script): implement some of the non-ordinary internal methods of `Location`yvt2021-07-164-30/+557
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | <https://html.spec.whatwg.org/multipage/#the-location-interface> - `[[GetPrototypeOf]]`: not yet - `[[SetPrototypeOf]]`: not yet - `[[IsExtensible]]`: `proxyhandler::is_extensible` - `[[PreventExtensions]]`: `proxyhandler::prevent_extensions` - `[[GetOwnProperty]]`: `CGDOMJSProxyHandler_getOwnPropertyDescriptor` (updated) - `[[DefineOwnProperty]]`: `CGDOMJSProxyHandler_defineProperty` (updated) - `[[Get]]`: `CGDOMJSProxyHandler_get` (updated) - `[[Set]]`: not yet - `[[Delete]]`: `CGDOMJSProxyHandler_delete` (updated) - `[[OwnPropertyKeys]]`: `CGDOMJSProxyHandler_ownPropertyKeys` (updated)
| * feat(script): add `CrossOrigin*able` attributes to `Window` and `Location`'s ↵yvt2021-07-152-16/+19
| | | | | | | | members
| * Merge remote-tracking branch 'upstream/master' into feat-cow-infrayvt2021-07-142-5/+16
| |\
| * | refactor(script): auto ref-count `ServoJSPrincipals`yvt2021-07-132-12/+86
| | |
| * | refactor(script): rename `ServoJSPrincipal` to `ServoJSPrincipals`yvt2021-07-132-6/+6
| | |
| * | refactor(script): move `crate::dom::bindings::{utils → ↵yvt2021-07-134-46/+47
| | | | | | | | | | | | principals)::ServoJSPrincipal`
| * | refactor(script): remove `{DedicatedWorkerGlobalScope, ↵yvt2021-07-132-10/+2
| | | | | | | | | | | | ServiceWorkerGlobalScope}::origin`
| * | Revert "feat(script): add `{DissimilarOriginWindow, PaintWorkletGlobalScope, ↵yvt2021-07-134-19/+2
| | | | | | | | | | | | | | | | | | TestWorkletGlobalScope}::origin`" This reverts commit 5959c2ef9b343edc5562f4efee2877334672e841.
| * | feat(script): use `GlobalScope::origin` when creating a principals objectyvt2021-07-131-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The concrete types of `[Global]` DOM interfaces have `origin` methods, which were used before this commit. Some of them just delegate to `GlobalScope::origin` while others are implemented differently. This commit changes the created principals objects' associated origins in the following way: - `DedicatedWorkerGlobalScope` - was `WorkerGlobalScope::worker_url` - `DissimilarOriginWindow` - no change - `PaintWorkletGlobalScope` - no change - `ServiceWorkerGlobalScope` - was `ServiceWorkerGlobalScope::scope_url` - `TestWorkletGlobalScope` - no change - `Window` - no change
| * | fix(script): implement the destroy-principals callback correctlyyvt2021-07-121-2/+6
| | |
| * | fix(script): apply some of the changes requested in the review comments of ↵yvt2021-07-122-3/+3
| | | | | | | | | | | | #16501
| * | fix(script): remove debug printingyvt2021-07-122-2/+0
| | |
| * | feat(script): add `{DissimilarOriginWindow, PaintWorkletGlobalScope, ↵yvt2021-07-114-2/+19
| | | | | | | | | | | | TestWorkletGlobalScope}::origin`
| * | feat(script): remove the call to `JS_SetWrapObjectCallbacks`yvt2021-07-111-168/+8
| | | | | | | | | | | | We don't make CCWs anymore.
| * | chore(deps): update mozjsyvt2021-07-112-10/+26
| | | | | | | | | | | | - 798c5b6: Bring `RustJSPrincipals` back
| * | Merge remote-tracking branch 'upstream/master' into feat-cow-infrayvt2021-07-114-5/+90
| |\ \
| * | | fix: accommodate to the modern ageyvt2021-07-102-5/+14
| | | |
| * | | Merge remote-tracking branch 'upstream/master' into feat-cow-infrayvt2021-07-101024-40058/+110957
| |\ \ \ | | | | | | | | | | | | | | | | | | | | `tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html` was reverted to the upstream version.
| * | | | xow tests reflect current stateddh2017-06-121-1/+1
| | | | |
| * | | | frames override is the worstddh2017-05-172-13/+29
| | | | |
| * | | | added in cross origin type checks. assert_throws isn't working yetddh2017-05-151-0/+3
| | | | |
| * | | | added dom exception callback stuffddh2017-05-121-8/+21
| | | | |
| * | | | debuggingddh2017-05-091-0/+2
| | | | |
| * | | | investigating failures after filtering wrapper integration with mozjsddh2017-05-093-3/+10
| | | | |
| * | | | changed to use globalscope originddh2017-04-265-21/+19
| | | | |