mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
Auto merge of #15771 - jdm:img-panic, r=nox
Improve behaviour of image elements that perform multiple requests This addresses cases where image elements end up making multiple requests, as well as makes the element respond to additional relevant mutations that trigger updating the image data. --- - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #15709 (github issue number if applicable). - [X] There are tests for these changes <!-- 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/15771) <!-- Reviewable:end -->
This commit is contained in:
commit
f90fc2fa88
10 changed files with 173 additions and 34 deletions
|
@ -108,7 +108,7 @@ use net_traits::response::HttpsState;
|
|||
use num_traits::ToPrimitive;
|
||||
use script_layout_interface::message::{Msg, ReflowQueryType};
|
||||
use script_runtime::{CommonScriptMsg, ScriptThreadEventCategory};
|
||||
use script_thread::{MainThreadScriptMsg, Runnable};
|
||||
use script_thread::{MainThreadScriptMsg, Runnable, ScriptThread};
|
||||
use script_traits::{AnimationState, CompositorEvent, DocumentActivity};
|
||||
use script_traits::{MouseButton, MouseEventType, MozBrowserEvent};
|
||||
use script_traits::{MsDuration, ScriptMsg as ConstellationMsg, TouchpadPressurePhase};
|
||||
|
@ -1641,17 +1641,26 @@ impl Document {
|
|||
// Step 5 can be found in asap_script_loaded and
|
||||
// asap_in_order_script_loaded.
|
||||
|
||||
let loader = self.loader.borrow();
|
||||
if loader.is_blocked() || loader.events_inhibited() {
|
||||
// Step 6.
|
||||
return;
|
||||
}
|
||||
|
||||
ScriptThread::mark_document_with_no_blocked_loads(self);
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#the-end
|
||||
pub fn maybe_queue_document_completion(&self) {
|
||||
if self.loader.borrow().is_blocked() {
|
||||
// Step 6.
|
||||
return;
|
||||
}
|
||||
|
||||
// The rest will ever run only once per document.
|
||||
if self.loader.borrow().events_inhibited() {
|
||||
return;
|
||||
}
|
||||
assert!(!self.loader.borrow().events_inhibited());
|
||||
self.loader.borrow_mut().inhibit_events();
|
||||
|
||||
// The rest will ever run only once per document.
|
||||
// Step 7.
|
||||
debug!("Document loads are complete.");
|
||||
let handler = box DocumentProgressHandler::new(Trusted::new(self));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue