From f94601d0a75a46dd710e72de6e83258cbbf0538c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Fri, 24 Nov 2017 21:26:30 +0100 Subject: [PATCH] style: Disable :visited if the document is being used as an image. Bug: 1420001 Reviewed-by: dholbert MozReview-Commit-ID: F9MeT1kXZER --- components/style/gecko/data.rs | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) 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.