aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlimageelement.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2024-10-18 13:26:54 -0400
committerGitHub <noreply@github.com>2024-10-18 17:26:54 +0000
commitb85093ad7461122447298d91acd19040c31c42a9 (patch)
treeb83e2e52452cf3e93caefa0461bf66be25c97205 /components/script/dom/htmlimageelement.rs
parenta58da5aa832a67c827021592fe0397a532491c4c (diff)
downloadservo-b85093ad7461122447298d91acd19040c31c42a9.tar.gz
servo-b85093ad7461122447298d91acd19040c31c42a9.zip
Prevent moving CanGc values between threads/tasks (#33902)
* Make CanGc non-sendable, and add documentation. Signed-off-by: Josh Matthews <josh@joshmatthews.net> * Update CanGc usage to fix usages that were moved between threads/tasks. Signed-off-by: Josh Matthews <josh@joshmatthews.net> --------- Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Diffstat (limited to 'components/script/dom/htmlimageelement.rs')
-rw-r--r--components/script/dom/htmlimageelement.rs17
1 files changed, 4 insertions, 13 deletions
diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs
index 797ff8557fc..d2bfff7721d 100644
--- a/components/script/dom/htmlimageelement.rs
+++ b/components/script/dom/htmlimageelement.rs
@@ -516,12 +516,7 @@ impl HTMLImageElement {
});
self.pending_request.borrow_mut().final_url = Some(url);
self.pending_request.borrow_mut().image = Some(image);
- self.finish_reacting_to_environment_change(
- src,
- generation,
- selected_pixel_density,
- can_gc,
- );
+ self.finish_reacting_to_environment_change(src, generation, selected_pixel_density);
},
ImageResponse::MetadataLoaded(meta) => {
self.pending_request.borrow_mut().metadata = Some(meta);
@@ -1067,7 +1062,6 @@ impl HTMLImageElement {
elem: &HTMLImageElement,
selected_source: String,
selected_pixel_density: f64,
- can_gc: CanGc,
) -> IpcSender<PendingImageResponse> {
let trusted_node = Trusted::new(elem);
let (responder_sender, responder_receiver) = ipc::channel().unwrap();
@@ -1094,7 +1088,7 @@ impl HTMLImageElement {
if generation == element.generation.get() {
element.process_image_response_for_environment_change(image.response,
USVString::from(selected_source_clone), generation,
- selected_pixel_density, can_gc);
+ selected_pixel_density, CanGc::note());
}
}),
&canceller,
@@ -1160,7 +1154,6 @@ impl HTMLImageElement {
self,
selected_source.0.clone(),
selected_pixel_density,
- can_gc,
);
let cache_result = image_cache.track_image(
img_url.clone(),
@@ -1177,7 +1170,6 @@ impl HTMLImageElement {
selected_source,
generation,
selected_pixel_density,
- can_gc,
)
},
ImageCacheResult::Available(ImageOrMetadataAvailable::MetadataAvailable(m)) => {
@@ -1251,7 +1243,6 @@ impl HTMLImageElement {
src: USVString,
generation: u32,
selected_pixel_density: f64,
- can_gc: CanGc,
) {
let this = Trusted::new(self);
let window = window_from_node(self);
@@ -1262,7 +1253,7 @@ impl HTMLImageElement {
let relevant_mutation = this.generation.get() != generation;
// Step 15.1
if relevant_mutation {
- this.abort_request(State::Unavailable, ImageRequestPhase::Pending, can_gc);
+ this.abort_request(State::Unavailable, ImageRequestPhase::Pending, CanGc::note());
return;
}
// Step 15.2
@@ -1280,7 +1271,7 @@ impl HTMLImageElement {
// Step 15.5
mem::swap(&mut this.current_request.borrow_mut(), &mut pending_request);
- this.abort_request(State::Unavailable, ImageRequestPhase::Pending, can_gc);
+ this.abort_request(State::Unavailable, ImageRequestPhase::Pending, CanGc::note());
}
// Step 15.6