svn commit: r455272 - in branches/2017Q4/www/firefox: . files
Jan Beich
jbeich at FreeBSD.org
Fri Dec 1 11:19:29 UTC 2017
Author: jbeich
Date: Fri Dec 1 11:19:28 2017
New Revision: 455272
URL: https://svnweb.freebsd.org/changeset/ports/455272
Log:
www/firefox: backport more FF57+ fixes (direct commit)
PR: 222859
Security: Mozilla bug 1410106/1420001
Approved by: ports-secteam blanket
Added:
branches/2017Q4/www/firefox/files/patch-bug1405364 (contents, props changed)
branches/2017Q4/www/firefox/files/patch-bug1410106 (contents, props changed)
branches/2017Q4/www/firefox/files/patch-bug1420001 (contents, props changed)
Modified:
branches/2017Q4/www/firefox/Makefile
Modified: branches/2017Q4/www/firefox/Makefile
==============================================================================
--- branches/2017Q4/www/firefox/Makefile Fri Dec 1 11:19:21 2017 (r455271)
+++ branches/2017Q4/www/firefox/Makefile Fri Dec 1 11:19:28 2017 (r455272)
@@ -4,7 +4,7 @@
PORTNAME= firefox
DISTVERSION= 56.0.2
DISTVERSIONSUFFIX=.source
-PORTREVISION= 10
+PORTREVISION= 11
PORTEPOCH= 1
CATEGORIES= www ipv6
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
Added: branches/2017Q4/www/firefox/files/patch-bug1405364
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/2017Q4/www/firefox/files/patch-bug1405364 Fri Dec 1 11:19:28 2017 (r455272)
@@ -0,0 +1,84 @@
+commit bc3e9c9c8230
+Author: Andrew Osmond <aosmond at mozilla.com>
+Date: Mon Oct 30 06:58:04 2017 -0400
+
+ Bug 1405364 - ImageBridgeParent::GetInstance should not mutate sImageBridges for lookups. r=sotaro a=sylvestre
+
+ --HG--
+ extra : amend_source : 6121399940a53f45027923e0e3f5a517722036ed
+ extra : transplant_source : %D1%06%8F%0D%25%B3%FD%82%3D%C9%0A%5C%9B%C7%3B%15%9C%A7%EC%91
+---
+ gfx/layers/ipc/ImageBridgeParent.cpp | 18 ++++++++++++------
+ gfx/layers/ipc/ImageBridgeParent.h | 5 +++--
+ 2 files changed, 15 insertions(+), 8 deletions(-)
+
+diff --git gfx/layers/ipc/ImageBridgeParent.cpp gfx/layers/ipc/ImageBridgeParent.cpp
+index 745576a3a7b3..8f8f60ffcd78 100644
+--- gfx/layers/ipc/ImageBridgeParent.cpp
++++ gfx/layers/ipc/ImageBridgeParent.cpp
+@@ -42,7 +42,7 @@ using namespace mozilla::ipc;
+ using namespace mozilla::gfx;
+ using namespace mozilla::media;
+
+-std::map<base::ProcessId, ImageBridgeParent*> ImageBridgeParent::sImageBridges;
++ImageBridgeParent::ImageBridgeMap ImageBridgeParent::sImageBridges;
+
+ StaticAutoPtr<mozilla::Monitor> sImageBridgesLock;
+
+@@ -366,8 +366,9 @@ ImageBridgeParent::NotifyImageComposites(nsTArray<ImageCompositeNotificationInfo
+ notifications.AppendElement(aNotifications[end].mNotification);
+ ++end;
+ }
+- GetInstance(pid)->SendPendingAsyncMessages();
+- if (!GetInstance(pid)->SendDidComposite(notifications)) {
++ RefPtr<ImageBridgeParent> bridge = GetInstance(pid);
++ bridge->SendPendingAsyncMessages();
++ if (!bridge->SendDidComposite(notifications)) {
+ ok = false;
+ }
+ i = end;
+@@ -382,13 +383,18 @@ ImageBridgeParent::DeferredDestroy()
+ mSelfRef = nullptr; // "this" ImageBridge may get deleted here.
+ }
+
+-RefPtr<ImageBridgeParent>
++already_AddRefed<ImageBridgeParent>
+ ImageBridgeParent::GetInstance(ProcessId aId)
+ {
+ MOZ_ASSERT(CompositorThreadHolder::IsInCompositorThread());
+ MonitorAutoLock lock(*sImageBridgesLock);
+- NS_ASSERTION(sImageBridges.count(aId) == 1, "ImageBridgeParent for the process");
+- return sImageBridges[aId];
++ ImageBridgeMap::const_iterator i = sImageBridges.find(aId);
++ if (i == sImageBridges.end()) {
++ NS_ASSERTION(false, "Cannot find image bridge for process!");
++ return nullptr;
++ }
++ RefPtr<ImageBridgeParent> bridge = i->second;
++ return bridge.forget();
+ }
+
+ bool
+diff --git gfx/layers/ipc/ImageBridgeParent.h gfx/layers/ipc/ImageBridgeParent.h
+index 7475b67e356d..3edd1f8861ee 100644
+--- gfx/layers/ipc/ImageBridgeParent.h
++++ gfx/layers/ipc/ImageBridgeParent.h
+@@ -114,7 +114,7 @@ public:
+
+ virtual bool IsSameProcess() const override;
+
+- static RefPtr<ImageBridgeParent> GetInstance(ProcessId aId);
++ static already_AddRefed<ImageBridgeParent> GetInstance(ProcessId aId);
+
+ static bool NotifyImageComposites(nsTArray<ImageCompositeNotificationInfo>& aNotifications);
+
+@@ -140,7 +140,8 @@ private:
+ /**
+ * Map of all living ImageBridgeParent instances
+ */
+- static std::map<base::ProcessId, ImageBridgeParent*> sImageBridges;
++ typedef std::map<base::ProcessId, ImageBridgeParent*> ImageBridgeMap;
++ static ImageBridgeMap sImageBridges;
+
+ RefPtr<CompositorThreadHolder> mCompositorThreadHolder;
+ };
Added: branches/2017Q4/www/firefox/files/patch-bug1410106
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/2017Q4/www/firefox/files/patch-bug1410106 Fri Dec 1 11:19:28 2017 (r455272)
@@ -0,0 +1,86 @@
+commit b5408a6b95e1
+Author: Andrea Marchesini <amarchesini at mozilla.com>
+Date: Wed Nov 8 06:43:50 2017 +0100
+
+ Bug 1410106 - Better check about privateBrowsing for IDB. r=asuth, a=ritu
+
+ --HG--
+ extra : source : 8a46aeb0b562dd2ac240657a53f489046deb9acb
+---
+ dom/indexedDB/ActorsParent.cpp | 35 ++++++++++++++++++++++----------
+ dom/indexedDB/IDBFactory.cpp | 1 -
+ dom/indexedDB/PBackgroundIDBFactory.ipdl | 1 -
+ 3 files changed, 24 insertions(+), 13 deletions(-)
+
+diff --git dom/indexedDB/ActorsParent.cpp dom/indexedDB/ActorsParent.cpp
+index 42aa9e38d630..21232cd4c0e3 100644
+--- dom/indexedDB/ActorsParent.cpp
++++ dom/indexedDB/ActorsParent.cpp
+@@ -21047,19 +21047,32 @@ FactoryOp::CheckPermission(ContentParent* aContentParent,
+ MOZ_ASSERT(mState == State::Initial || mState == State::PermissionRetry);
+
+ const PrincipalInfo& principalInfo = mCommonParams.principalInfo();
+- if (principalInfo.type() != PrincipalInfo::TSystemPrincipalInfo &&
+- NS_WARN_IF(!Preferences::GetBool(kPrefIndexedDBEnabled, false))) {
+- if (aContentParent) {
+- // The DOM in the other process should have kept us from receiving any
+- // indexedDB messages so assume that the child is misbehaving.
+- aContentParent->KillHard("IndexedDB CheckPermission 1");
++ if (principalInfo.type() != PrincipalInfo::TSystemPrincipalInfo) {
++ if (principalInfo.type() != PrincipalInfo::TContentPrincipalInfo) {
++ if (aContentParent) {
++ // We just want ContentPrincipalInfo or SystemPrincipalInfo.
++ aContentParent->KillHard("IndexedDB CheckPermission 0");
++ }
++
++ return NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR;
+ }
+- return NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR;
+- }
+
+- if (NS_WARN_IF(mCommonParams.privateBrowsingMode())) {
+- // XXX This is only temporary.
+- return NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR;
++ if (NS_WARN_IF(!Preferences::GetBool(kPrefIndexedDBEnabled, false))) {
++ if (aContentParent) {
++ // The DOM in the other process should have kept us from receiving any
++ // indexedDB messages so assume that the child is misbehaving.
++ aContentParent->KillHard("IndexedDB CheckPermission 1");
++ }
++
++ return NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR;
++ }
++
++ const ContentPrincipalInfo& contentPrincipalInfo =
++ principalInfo.get_ContentPrincipalInfo();
++ if (contentPrincipalInfo.attrs().mPrivateBrowsingId != 0) {
++ // IndexedDB is currently disabled in privateBrowsing.
++ return NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR;
++ }
+ }
+
+ mFileHandleDisabled = !Preferences::GetBool(kPrefFileHandleEnabled);
+diff --git dom/indexedDB/IDBFactory.cpp dom/indexedDB/IDBFactory.cpp
+index 49e60ffc8927..3e12382a932e 100644
+--- dom/indexedDB/IDBFactory.cpp
++++ dom/indexedDB/IDBFactory.cpp
+@@ -638,7 +638,6 @@ IDBFactory::OpenInternal(JSContext* aCx,
+ MOZ_ASSERT_IF(!mWindow, !mPrivateBrowsingMode);
+
+ CommonFactoryRequestParams commonParams;
+- commonParams.privateBrowsingMode() = mPrivateBrowsingMode;
+
+ PrincipalInfo& principalInfo = commonParams.principalInfo();
+
+diff --git dom/indexedDB/PBackgroundIDBFactory.ipdl dom/indexedDB/PBackgroundIDBFactory.ipdl
+index e6c64dca4e09..1e81e324dc7d 100644
+--- dom/indexedDB/PBackgroundIDBFactory.ipdl
++++ dom/indexedDB/PBackgroundIDBFactory.ipdl
+@@ -22,7 +22,6 @@ struct CommonFactoryRequestParams
+ {
+ DatabaseMetadata metadata;
+ PrincipalInfo principalInfo;
+- bool privateBrowsingMode;
+ };
+
+ struct OpenDatabaseRequestParams
Added: branches/2017Q4/www/firefox/files/patch-bug1420001
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/2017Q4/www/firefox/files/patch-bug1420001 Fri Dec 1 11:19:28 2017 (r455272)
@@ -0,0 +1,67 @@
+commit 3bd032461399
+Author: Emilio Cobos Álvarez <emilio at crisal.io>
+Date: Mon Nov 27 14:57:57 2017 -0600
+
+ Bug 1420001 - style: Disable :visited if the document is being used as an image (from emilio:visited-as-an-image). r=dholbert, a=sledru
+
+ MozReview-Commit-ID: F9MeT1kXZER
+ Source-Repo: https://github.com/servo/servo
+ Source-Revision: 7c99ae3bb8056f7e30a3b40340200eced385902d
+
+ --HG--
+ extra : source : ed1802f246cb377522e492bf313038213c114843
+ extra : intermediate-source : d1599028c579f31e1441b9df277bf8f38c0e7f56
+---
+ servo/components/style/gecko/data.rs | 25 +++++++++++++++++++++++--
+ 1 file changed, 23 insertions(+), 2 deletions(-)
+
+diff --git servo/components/style/gecko/data.rs servo/components/style/gecko/data.rs
+index aeab6a938b9f..244fa034ba61 100644
+--- servo/components/style/gecko/data.rs
++++ servo/components/style/gecko/data.rs
+@@ -165,12 +165,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::<nsIDocument>();
+ 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::<nsIDocument>();
++
++ unsafe { (*doc).mIsBeingUsedAsImage() }
++ }
++
+ /// Get the default computed values for this document.
+ pub fn default_computed_values(&self) -> &Arc<ComputedValues> {
+ self.stylist.device().default_computed_values_arc()
+@@ -180,9 +188,22 @@ impl PerDocumentStyleDataImpl {
+ fn visited_links_enabled(&self) -> bool {
+ unsafe { bindings::Gecko_AreVisitedLinksEnabled() }
+ }
++
+ /// 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.
More information about the svn-ports-branches
mailing list