servo/components/script
bors-servo 90fb4c3589
Auto merge of #23930 - CYBAI:incumbent-global-assertion, r=jdm
Assert incumbent global is always some in get_incumbent_global hook

While working on module script, I'd like to use Promise with a custom
callback with type `Box<dyn TaskBox>` which means we didn't use web API
callbacks as native handlers. However, we'll get a panic from
`enqueue_promise_job` and the panic says we have a `null` incumbent
global. The main problem here is, the Promise API is strongly tied to JS
engine and it always assumes there's a meaningful answer for "what
specific global is this promise associated with". So, when I don't use
the Promise for a specific web API, our engine cannot find a proper
incumbent global for us so that we get the `null` incumbent global
panic.

To make us catch this case easier in the future, we should add the
assertion inside `get_incumbent_global` hook so that we can know this
quickly next time.

Ref: https://mozilla.logbot.info/servo/20190807#c16525481

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests because it should just add assertion inside the hook

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23930)
<!-- Reviewable:end -->
2019-08-09 02:54:33 -04:00
..
docs
dom Use safe JSContext in callbacks 2019-08-09 00:43:29 +01:00
task_source
body.rs Modify *::get_cx methods to return a safe JSContext instead of a raw one 2019-07-24 09:53:10 +01:00
build.rs Remove usage of various unsafe keyword 2019-08-09 00:43:28 +01:00
Cargo.toml Update euclid. 2019-07-23 23:09:55 +02:00
clipboard_provider.rs Remove not needed DummyClipboardContext 2019-06-13 20:20:25 +02:00
CMakeLists.txt Generate apis.html and css-properties.json for docs as part of crates’ build scripts 2019-07-30 08:37:33 +02:00
compartments.rs Use safe JSContext in compartments 2019-08-09 00:02:10 +01:00
devtools.rs Modify *::get_cx methods to return a safe JSContext instead of a raw one 2019-07-24 09:53:10 +01:00
document_loader.rs Remove unused code from script* crates 2019-06-02 07:12:26 +02:00
fetch.rs Create a helper API for entering a DOM object's compartment 2019-06-29 19:23:17 +02:00
image_listener.rs
layout_image.rs
lib.rs Remove uses of mem::uninitialized 2019-07-17 10:48:54 +02:00
mem.rs
microtask.rs Use safe JSContext in MicrotaskQueue 2019-08-09 00:02:10 +01:00
network_listener.rs Let resources timing entries be added to performance entry buffer. 2019-06-11 09:40:31 -07:00
script_runtime.rs Auto merge of #23930 - CYBAI:incumbent-global-assertion, r=jdm 2019-08-09 02:54:33 -04:00
script_thread.rs Use safe JSContext in MicrotaskQueue 2019-08-09 00:02:10 +01:00
serviceworker_manager.rs
serviceworkerjob.rs
stylesheet_loader.rs Revert changes to load media styles as UA styles 2019-07-22 17:40:15 +02:00
stylesheet_set.rs
task.rs Upgrade to rustc 1.38.0-nightly (dddb7fca0 2019-07-30) 2019-07-31 13:34:01 +02:00
task_manager.rs
task_queue.rs
test.rs
textinput.rs Upgrade to rustc 1.38.0-nightly (dddb7fca0 2019-07-30) 2019-07-31 13:34:01 +02:00
timers.rs Modify *::get_cx methods to return a safe JSContext instead of a raw one 2019-07-24 09:53:10 +01:00
unpremultiplytable.rs
webdriver_handlers.rs Use safe JSContext as first argument for throw_dom_exception 2019-08-09 00:43:28 +01:00