diff --git a/components/style/gecko/data.rs b/components/style/gecko/data.rs index 7192b75edbc..53740eb8974 100644 --- a/components/style/gecko/data.rs +++ b/components/style/gecko/data.rs @@ -164,12 +164,20 @@ impl PerDocumentStyleDataImpl { } /// Returns whether private browsing is enabled. - pub fn is_private_browsing_enabled(&self) -> bool { + fn is_private_browsing_enabled(&self) -> bool { let doc = self.stylist.device().pres_context().mDocument.raw::(); unsafe { bindings::Gecko_IsPrivateBrowsingEnabled(doc) } } + /// Returns whether the document is being used as an image. + fn is_being_used_as_an_image(&self) -> bool { + let doc = + self.stylist.device().pres_context().mDocument.raw::(); + + unsafe { (*doc).mIsBeingUsedAsImage() } + } + /// Get the default computed values for this document. pub fn default_computed_values(&self) -> &Arc { self.stylist.device().default_computed_values_arc() @@ -179,9 +187,22 @@ impl PerDocumentStyleDataImpl { fn visited_links_enabled(&self) -> bool { unsafe { structs::StylePrefs_sVisitedLinksEnabled } } + /// Returns whether visited styles are enabled. pub fn visited_styles_enabled(&self) -> bool { - self.visited_links_enabled() && !self.is_private_browsing_enabled() + if !self.visited_links_enabled() { + return false; + } + + if self.is_private_browsing_enabled() { + return false; + } + + if self.is_being_used_as_an_image() { + return false; + } + + true } /// Measure heap usage.