Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F144610690
D16356.id45654.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
25 KB
Referenced Files
None
Subscribers
None
D16356.id45654.diff
View Options
Index: Mk/bsd.gecko.mk
===================================================================
--- Mk/bsd.gecko.mk
+++ Mk/bsd.gecko.mk
@@ -381,7 +381,7 @@
.endif
.if ${PORT_OPTIONS:MRUST} || ${MOZILLA_VER:R:R} >= 54
-BUILD_DEPENDS+= ${RUST_PORT:T}>=1.24:${RUST_PORT}
+BUILD_DEPENDS+= ${RUST_PORT:T}>=1.27:${RUST_PORT}
RUST_PORT?= lang/rust
. if ${MOZILLA_VER:R:R} < 54
MOZ_OPTIONS+= --enable-rust
Index: www/firefox/Makefile
===================================================================
--- www/firefox/Makefile
+++ www/firefox/Makefile
@@ -2,13 +2,12 @@
# $FreeBSD$
PORTNAME= firefox
-DISTVERSION= 62.0b10
+DISTVERSION= 63.0a1.427619
PORTEPOCH= 1
CATEGORIES= www ipv6
-MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
- MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/source
-DISTNAME= ${PORTNAME}-${PORTVERSION:R}
-DISTFILES= ${DISTNAME}${PORTVERSION:E}.source${EXTRACT_SUFX}
+MASTER_SITES= https://hg.mozilla.org/mozilla-central/archive/
+DIST_SUBDIR= ${PORTNAME}
+DISTNAME= 9daa53881b7ae80bf6b093dac5d7744cf7fd18b1
MAINTAINER= gecko@FreeBSD.org
COMMENT= Web browser based on the browser portion of Mozilla
@@ -17,7 +16,7 @@
nss>=3.38:security/nss \
icu>=59.1,1:devel/icu \
libevent>=2.1.8:devel/libevent \
- harfbuzz>=1.7.6:print/harfbuzz \
+ harfbuzz>=1.8.4:print/harfbuzz \
graphite2>=1.3.11:graphics/graphite2 \
png>=1.6.34:graphics/png \
libvorbis>=1.3.6,3:audio/libvorbis \
@@ -34,9 +33,10 @@
CONFLICTS_INSTALL= firefox-esr
MOZ_PKGCONFIG_FILES= # empty
USE_MOZILLA= -cairo -hunspell -soundtouch
+WRKSRC= ${WRKDIR}/${MASTER_SITES:M*hg*:S,/archive/,,:T}-${DISTNAME}
USE_GL= gl
-USES= tar:xz
+USES= tar:bzip2
FIREFOX_ICON= ${MOZILLA}.png
FIREFOX_ICON_SRC= ${PREFIX}/lib/${MOZILLA}/browser/chrome/icons/default/default48.png
@@ -49,6 +49,8 @@
.include "${.CURDIR}/../../www/firefox/Makefile.options"
post-patch:
+ @${REINPLACE_CMD} -e '/AM_PATH_NSS/s/3\.39/3.38/' \
+ ${WRKSRC}/old-configure.in
@${REINPLACE_CMD} -e 's/%u/%U/' -e '/X-MultipleArgs/d' \
-e '/^Icon/s/=.*/=${FIREFOX_ICON:R}/' \
${FIREFOX_DESKTOP}
Index: www/firefox/distinfo
===================================================================
--- www/firefox/distinfo
+++ www/firefox/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1532021256
-SHA256 (firefox-62.0b10.source.tar.xz) = 8c12cb161bb5857d3709b4019c9f464e8eab0251fa48d92cfb0a1ce9f44afa4d
-SIZE (firefox-62.0b10.source.tar.xz) = 258691348
+TIMESTAMP = 1532127112
+SHA256 (firefox/9daa53881b7ae80bf6b093dac5d7744cf7fd18b1.tar.bz2) = 29962a34671489b7b9dff33a3e6436cf1ee42198ddfdb5d36acc44f5703bf019
+SIZE (firefox/9daa53881b7ae80bf6b093dac5d7744cf7fd18b1.tar.bz2) = 322449081
Index: www/firefox/files/patch-bug1288587
===================================================================
--- www/firefox/files/patch-bug1288587
+++ www/firefox/files/patch-bug1288587
@@ -43,13 +43,13 @@
topobjdir = topobjdir[:-7]
with LineIO(lambda l: log.info(l)) as out:
-@@ -219,17 +226,20 @@ def virtualenv_python(env_python, build_env, mozconfig, help):
+@@ -255,17 +262,20 @@ def virtualenv_python(env_python, build_env, mozconfig
log.info('Creating Python environment')
manager.build(python)
python = normsep(manager.python_path)
- if python != normsep(sys.executable):
+ if not normsep(sys.executable).startswith(normsep(virtualenvs_root)):
log.info('Reexecuting in the virtualenv')
if env_python:
- del os.environ['PYTHON']
Index: www/firefox/files/patch-bug1448770
===================================================================
--- www/firefox/files/patch-bug1448770
+++ www/firefox/files/patch-bug1448770
@@ -1,10 +1,10 @@
Disable GL_EXT_debug_marker due to crashes on x86 with Mesa drivers.
-diff --git gfx/webrender/src/query.rs gfx/webrender/src/query.rs
+diff --git gfx/webrender/src/device/query_gl.rs gfx/webrender/src/device/query_gl.rs
index 999abc749115..68850ef025e4 100644
---- gfx/webrender/src/query.rs
-+++ gfx/webrender/src/query.rs
-@@ -274,17 +274,20 @@ pub struct GpuMarker {
+--- gfx/webrender/src/device/query_gl.rs
++++ gfx/webrender/src/device/query_gl.rs
+@@ -278,17 +278,20 @@ pub struct GpuMarker {
impl GpuMarker {
fn new(gl: &Rc<gl::Gl>, message: &str) -> Self {
Index: www/firefox/files/patch-bug1473732
===================================================================
--- /dev/null
+++ www/firefox/files/patch-bug1473732
@@ -0,0 +1,39 @@
+Base default number of OMTP workers on the number of logical CPU cores.
+
+system-info is a stub on Tier3 platforms while physical vs. logical
+difference only matters for hyper-threading. As hyper-threading
+is usually available on CPUs with more than 2 physical cores this
+change has no impact there as the default is clamped to [1, 4].
+However, on Intel i3-* CPUs with 2 physical and 4 logical cores this
+bumps the default from 1 to 3.
+
+diff --git gfx/layers/PaintThread.cpp gfx/layers/PaintThread.cpp
+index ef268f47651b6..f8929d11ae156 100644
+--- gfx/layers/PaintThread.cpp
++++ gfx/layers/PaintThread.cpp
+@@ -22,7 +22,7 @@
+ #include "mozilla/SyncRunnable.h"
+ #include "nsIPropertyBag2.h"
+ #include "nsServiceManagerUtils.h"
+-#include "nsSystemInfo.h"
++#include "prsystem.h"
+
+ // Uncomment the following line to dispatch sync runnables when
+ // painting so that rasterization happens synchronously from
+@@ -156,15 +156,7 @@ PaintThread::AddRef()
+ /* static */ int32_t
+ PaintThread::CalculatePaintWorkerCount()
+ {
+- int32_t cpuCores = 1;
+- nsCOMPtr<nsIPropertyBag2> systemInfo = do_GetService(NS_SYSTEMINFO_CONTRACTID);
+- if (systemInfo) {
+- nsresult rv = systemInfo->GetPropertyAsInt32(NS_LITERAL_STRING("cpucores"), &cpuCores);
+- if (NS_FAILED(rv)) {
+- cpuCores = 1;
+- }
+- }
+-
++ int32_t cpuCores = PR_GetNumberOfProcessors();
+ int32_t workerCount = gfxPrefs::LayersOMTPPaintWorkers();
+
+ // If not manually specified, default to (cpuCores * 3) / 4, and clamp
Index: www/firefox/files/patch-bug1477129
===================================================================
--- /dev/null
+++ www/firefox/files/patch-bug1477129
@@ -0,0 +1,504 @@
+commit fa3b659a54dc
+Author: Kris Maglione <maglione.k@gmail.com>
+Date: Thu Jul 19 18:14:13 2018 -0700
+
+ Bug 1477129: Part 1 - Handle BlobImpls when move constructing StructuredCloneData. r?baku
+
+ MozReview-Commit-ID: F1pm9qTpGCV
+---
+ dom/ipc/StructuredCloneData.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git dom/ipc/StructuredCloneData.cpp dom/ipc/StructuredCloneData.cpp
+index 7e15fc7d79cb9..5502659c08db7 100644
+--- dom/ipc/StructuredCloneData.cpp
++++ dom/ipc/StructuredCloneData.cpp
+@@ -58,6 +58,7 @@ StructuredCloneData::~StructuredCloneData()
+ StructuredCloneData&
+ StructuredCloneData::operator=(StructuredCloneData&& aOther)
+ {
++ mBlobImplArray = std::move(aOther.mBlobImplArray);
+ mExternalData = std::move(aOther.mExternalData);
+ mSharedData = std::move(aOther.mSharedData);
+ mIPCStreams = std::move(aOther.mIPCStreams);
+
+commit d5f75845a151
+Author: Kris Maglione <maglione.k@gmail.com>
+Date: Fri Jul 20 14:44:00 2018 -0700
+
+ Bug 1477129: Part 2 - Fix SharedMap blob handling, and add tests. r?erahm
+
+ We were previously failing to send blobs to new content processes, which was a
+ problem for those processes. But we were also attempting to extract blobs for
+ new entries that we were serializing after we'd extracted their structured
+ clone data, and their blob array had been thrown away (which was a problem for
+ all processes).
+
+ This patch fixes both problems.
+
+ MozReview-Commit-ID: 3qbAmUTA85g
+---
+ dom/ipc/ContentChild.cpp | 20 ++++-----
+ dom/ipc/ContentChild.h | 4 +-
+ dom/ipc/ContentParent.cpp | 8 ++--
+ dom/ipc/PContent.ipdl | 4 +-
+ dom/ipc/SharedMap.cpp | 49 ++++++++++++---------
+ dom/ipc/SharedMap.h | 12 +++++-
+ dom/ipc/tests/test_sharedMap.js | 92 +++++++++++++++++++++++++++++++++++++++-
+ js/xpconnect/loader/AutoMemMap.h | 2 +-
+ 8 files changed, 145 insertions(+), 46 deletions(-)
+
+diff --git dom/ipc/ContentChild.cpp dom/ipc/ContentChild.cpp
+index a13c2ba0156d7..b6f212d1c4018 100644
+--- dom/ipc/ContentChild.cpp
++++ dom/ipc/ContentChild.cpp
+@@ -593,9 +593,7 @@ mozilla::ipc::IPCResult
+ ContentChild::RecvSetXPCOMProcessAttributes(const XPCOMInitData& aXPCOMInit,
+ const StructuredCloneData& aInitialData,
+ nsTArray<LookAndFeelInt>&& aLookAndFeelIntCache,
+- nsTArray<SystemFontListEntry>&& aFontList,
+- const FileDescriptor& aSharedDataMapFile,
+- const uint32_t& aSharedDataMapSize)
++ nsTArray<SystemFontListEntry>&& aFontList)
+ {
+ if (!sShutdownCanary) {
+ return IPC_OK();
+@@ -607,9 +605,6 @@ ContentChild::RecvSetXPCOMProcessAttributes(const XPCOMInitData& aXPCOMInit,
+ InitXPCOM(aXPCOMInit, aInitialData);
+ InitGraphicsDeviceData(aXPCOMInit.contentDeviceData());
+
+- mSharedData = new SharedMap(ProcessGlobal::Get(), aSharedDataMapFile,
+- aSharedDataMapSize);
+-
+ return IPC_OK();
+ }
+
+@@ -2573,15 +2568,18 @@ ContentChild::RecvUpdateSharedData(const FileDescriptor& aMapFile,
+ nsTArray<IPCBlob>&& aBlobs,
+ nsTArray<nsCString>&& aChangedKeys)
+ {
+- if (mSharedData) {
+- nsTArray<RefPtr<BlobImpl>> blobImpls(aBlobs.Length());
+- for (auto& ipcBlob : aBlobs) {
+- blobImpls.AppendElement(IPCBlobUtils::Deserialize(ipcBlob));
+- }
++ nsTArray<RefPtr<BlobImpl>> blobImpls(aBlobs.Length());
++ for (auto& ipcBlob : aBlobs) {
++ blobImpls.AppendElement(IPCBlobUtils::Deserialize(ipcBlob));
++ }
+
++ if (mSharedData) {
+ mSharedData->Update(aMapFile, aMapSize,
+ std::move(blobImpls),
+ std::move(aChangedKeys));
++ } else {
++ mSharedData = new SharedMap(ProcessGlobal::Get(), aMapFile,
++ aMapSize, std::move(blobImpls));
+ }
+
+ return IPC_OK();
+diff --git dom/ipc/ContentChild.h dom/ipc/ContentChild.h
+index 0fe1b6069bd39..a775ee13c64b0 100644
+--- dom/ipc/ContentChild.h
++++ dom/ipc/ContentChild.h
+@@ -626,9 +626,7 @@ public:
+ RecvSetXPCOMProcessAttributes(const XPCOMInitData& aXPCOMInit,
+ const StructuredCloneData& aInitialData,
+ nsTArray<LookAndFeelInt>&& aLookAndFeelIntCache,
+- nsTArray<SystemFontListEntry>&& aFontList,
+- const FileDescriptor& aSharedDataMapFile,
+- const uint32_t& aSharedDataMapSize) override;
++ nsTArray<SystemFontListEntry>&& aFontList) override;
+
+ virtual mozilla::ipc::IPCResult
+ RecvProvideAnonymousTemporaryFile(const uint64_t& aID, const FileDescOrError& aFD) override;
+diff --git dom/ipc/ContentParent.cpp dom/ipc/ContentParent.cpp
+index da362e1a40d99..56a668ed57edd 100644
+--- dom/ipc/ContentParent.cpp
++++ dom/ipc/ContentParent.cpp
+@@ -2339,12 +2339,12 @@ ContentParent::InitInternal(ProcessPriority aInitialPriority)
+ ScreenManager& screenManager = ScreenManager::GetSingleton();
+ screenManager.CopyScreensToRemote(this);
+
++ Unused << SendSetXPCOMProcessAttributes(xpcomInit, initialData, lnfCache,
++ fontList);
++
+ ipc::WritableSharedMap* sharedData = nsFrameMessageManager::sParentProcessManager->SharedData();
+ sharedData->Flush();
+-
+- Unused << SendSetXPCOMProcessAttributes(xpcomInit, initialData, lnfCache,
+- fontList, sharedData->CloneMapFile(),
+- sharedData->MapSize());
++ sharedData->SendTo(this);
+
+ nsCOMPtr<nsIChromeRegistry> registrySvc = nsChromeRegistry::GetService();
+ nsChromeRegistryChrome* chromeRegistry =
+diff --git dom/ipc/PContent.ipdl dom/ipc/PContent.ipdl
+index 9e61cadbdb151..2013e8e64b055 100644
+--- dom/ipc/PContent.ipdl
++++ dom/ipc/PContent.ipdl
+@@ -517,9 +517,7 @@ child:
+ StructuredCloneData initialData,
+ LookAndFeelInt[] lookAndFeelIntCache,
+ /* used on MacOSX and Linux only: */
+- SystemFontListEntry[] systemFontList,
+- FileDescriptor sharedDataMapFile,
+- uint32_t sharedDataMapSize);
++ SystemFontListEntry[] systemFontList);
+
+ // Notify child that last-pb-context-exited notification was observed
+ async LastPrivateDocShellDestroyed();
+diff --git dom/ipc/SharedMap.cpp dom/ipc/SharedMap.cpp
+index b028281315bdc..23e12185ebf58 100644
+--- dom/ipc/SharedMap.cpp
++++ dom/ipc/SharedMap.cpp
+@@ -43,8 +43,9 @@ SharedMap::SharedMap()
+ {}
+
+ SharedMap::SharedMap(nsIGlobalObject* aGlobal, const FileDescriptor& aMapFile,
+- size_t aMapSize)
++ size_t aMapSize, nsTArray<RefPtr<BlobImpl>>&& aBlobs)
+ : DOMEventTargetHelper(aGlobal)
++ , mBlobImpls(std::move(aBlobs))
+ {
+ mMapFile.reset(new FileDescriptor(aMapFile));
+ mMapSize = aMapSize;
+@@ -107,7 +108,7 @@ SharedMap::Entry::Read(JSContext* aCx,
+ }
+
+ FileDescriptor
+-SharedMap::CloneMapFile()
++SharedMap::CloneMapFile() const
+ {
+ if (mMap.initialized()) {
+ return mMap.cloneHandle();
+@@ -283,8 +284,9 @@ SharedMap*
+ WritableSharedMap::GetReadOnly()
+ {
+ if (!mReadOnly) {
++ nsTArray<RefPtr<BlobImpl>> blobs(mBlobImpls);
+ mReadOnly = new SharedMap(ProcessGlobal::Get(), CloneMapFile(),
+- MapSize());
++ MapSize(), std::move(blobs));
+ }
+ return mReadOnly;
+ }
+@@ -349,14 +351,15 @@ WritableSharedMap::Serialize()
+ for (auto& entry : IterHash(mEntries)) {
+ AlignTo(&offset, kStructuredCloneAlign);
+
+- entry->ExtractData(&ptr[offset], offset, blobImpls.Length());
++ size_t blobOffset = blobImpls.Length();
++ if (entry->BlobCount()) {
++ blobImpls.AppendElements(entry->Blobs());
++ }
++
++ entry->ExtractData(&ptr[offset], offset, blobOffset);
+ entry->Code(header);
+
+ offset += entry->Size();
+-
+- if (entry->BlobCount()) {
+- mBlobImpls.AppendElements(entry->Blobs());
+- }
+ }
+
+ mBlobImpls = std::move(blobImpls);
+@@ -374,6 +377,23 @@ WritableSharedMap::Serialize()
+ return Ok();
+ }
+
++void
++WritableSharedMap::SendTo(ContentParent* aParent) const
++{
++ nsTArray<IPCBlob> blobs(mBlobImpls.Length());
++
++ for (auto& blobImpl : mBlobImpls) {
++ nsresult rv = IPCBlobUtils::Serialize(blobImpl, aParent,
++ *blobs.AppendElement());
++ if (NS_WARN_IF(NS_FAILED(rv))) {
++ continue;
++ }
++ }
++
++ Unused << aParent->SendUpdateSharedData(CloneMapFile(), mMap.size(),
++ blobs, mChangedKeys);
++}
++
+ void
+ WritableSharedMap::BroadcastChanges()
+ {
+@@ -388,18 +408,7 @@ WritableSharedMap::BroadcastChanges()
+ nsTArray<ContentParent*> parents;
+ ContentParent::GetAll(parents);
+ for (auto& parent : parents) {
+- nsTArray<IPCBlob> blobs(mBlobImpls.Length());
+-
+- for (auto& blobImpl : mBlobImpls) {
+- nsresult rv = IPCBlobUtils::Serialize(blobImpl, parent,
+- *blobs.AppendElement());
+- if (NS_WARN_IF(NS_FAILED(rv))) {
+- continue;
+- }
+- }
+-
+- Unused << parent->SendUpdateSharedData(CloneMapFile(), mMap.size(),
+- blobs, mChangedKeys);
++ SendTo(parent);
+ }
+
+ if (mReadOnly) {
+diff --git dom/ipc/SharedMap.h dom/ipc/SharedMap.h
+index c89c42de0a848..70971d7376809 100644
+--- dom/ipc/SharedMap.h
++++ dom/ipc/SharedMap.h
+@@ -22,6 +22,9 @@ class nsIGlobalObject;
+
+ namespace mozilla {
+ namespace dom {
++
++class ContentParent;
++
+ namespace ipc {
+
+ /**
+@@ -58,7 +61,8 @@ public:
+
+ SharedMap();
+
+- SharedMap(nsIGlobalObject* aGlobal, const FileDescriptor&, size_t);
++ SharedMap(nsIGlobalObject* aGlobal, const FileDescriptor&, size_t,
++ nsTArray<RefPtr<BlobImpl>>&& aBlobs);
+
+ // Returns true if the map contains the given (UTF-8) key.
+ bool Has(const nsACString& name);
+@@ -105,7 +109,7 @@ public:
+ * memory region for this map. The file descriptor may be passed between
+ * processes, and used to update corresponding instances in child processes.
+ */
+- FileDescriptor CloneMapFile();
++ FileDescriptor CloneMapFile() const;
+
+ /**
+ * Returns the size of the memory mapped region that backs this map. Must be
+@@ -346,6 +350,10 @@ public:
+ void Flush();
+
+
++ // Sends the current set of shared map data to the given content process.
++ void SendTo(ContentParent* aContentParent) const;
++
++
+ /**
+ * Returns the read-only SharedMap instance corresponding to this
+ * WritableSharedMap for use in the parent process.
+diff --git dom/ipc/tests/test_sharedMap.js dom/ipc/tests/test_sharedMap.js
+index a53db5d0f8668..af7858be6e4b5 100644
+--- dom/ipc/tests/test_sharedMap.js
++++ dom/ipc/tests/test_sharedMap.js
+@@ -2,14 +2,30 @@
+
+ ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
+ ChromeUtils.import("resource://gre/modules/Services.jsm");
++ChromeUtils.import("resource://gre/modules/ExtensionUtils.jsm");
+ ChromeUtils.import("resource://testing-common/ExtensionXPCShellUtils.jsm");
+
++const PROCESS_COUNT_PREF = "dom.ipc.processCount";
++
+ const remote = AppConstants.platform !== "android";
+
+ ExtensionTestUtils.init(this);
+
+ let contentPage;
+
++Cu.importGlobalProperties(["Blob", "FileReader"]);
++
++async function readBlob(key, sharedData = Services.cpmm.sharedData) {
++ let reader = new FileReader();
++ reader.readAsText(sharedData.get(key));
++ await ExtensionUtils.promiseEvent(reader, "loadend");
++ return reader.result;
++}
++
++function getKey(key, sharedData = Services.cpmm.sharedData) {
++ return sharedData.get(key);
++}
++
+ function getContents(sharedMap = Services.cpmm.sharedData) {
+ return {
+ keys: Array.from(sharedMap.keys()),
+@@ -60,9 +76,23 @@ async function checkContentMaps(expected, parentOnly = false) {
+ }
+ }
+
++async function loadContentPage() {
++ let page = await ExtensionTestUtils.loadContentPage("about:blank", {remote});
++ registerCleanupFunction(() => page.close());
++
++ page.addFrameScriptHelper(`
++ ChromeUtils.import("resource://gre/modules/ExtensionUtils.jsm");
++ Cu.importGlobalProperties(["FileReader"]);
++ `);
++ return page;
++}
++
+ add_task(async function setup() {
+- contentPage = await ExtensionTestUtils.loadContentPage("about:blank", {remote});
+- registerCleanupFunction(() => contentPage.close());
++ // Start with one content process so that we can increase the number
++ // later and test the behavior of a fresh content process.
++ Services.prefs.setIntPref(PROCESS_COUNT_PREF, 1);
++
++ contentPage = await loadContentPage();
+ });
+
+ add_task(async function test_sharedMap() {
+@@ -160,3 +190,61 @@ add_task(async function test_sharedMap() {
+ checkParentMap(expected);
+ await checkContentMaps(expected);
+ });
++
++add_task(async function test_blobs() {
++ let {sharedData} = Services.ppmm;
++
++ let text = [
++ "The quick brown fox jumps over the lazy dog",
++ "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
++ "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
++ ];
++ let blobs = text.map(str => new Blob([str]));
++
++ let data = {foo: {bar: "baz"}};
++
++ sharedData.set("blob0", blobs[0]);
++ sharedData.set("blob1", blobs[1]);
++ sharedData.set("data", data);
++
++ equal(await readBlob("blob0", sharedData), text[0], "Expected text for blob0 in parent ppmm");
++
++ sharedData.flush();
++
++ equal(await readBlob("blob0", sharedData), text[0], "Expected text for blob0 in parent ppmm");
++ equal(await readBlob("blob1", sharedData), text[1], "Expected text for blob1 in parent ppmm");
++
++ equal(await readBlob("blob0"), text[0], "Expected text for blob0 in parent cpmm");
++ equal(await readBlob("blob1"), text[1], "Expected text for blob1 in parent cpmm");
++
++ equal(await contentPage.spawn("blob0", readBlob), text[0], "Expected text for blob0 in child 1 cpmm");
++ equal(await contentPage.spawn("blob1", readBlob), text[1], "Expected text for blob1 in child 1 cpmm");
++
++ // Start a second child process
++ Services.prefs.setIntPref(PROCESS_COUNT_PREF, 2);
++
++ let page2 = await loadContentPage();
++
++ equal(await page2.spawn("blob0", readBlob), text[0], "Expected text for blob0 in child 2 cpmm");
++ equal(await page2.spawn("blob1", readBlob), text[1], "Expected text for blob1 in child 2 cpmm");
++
++ sharedData.set("blob0", blobs[2]);
++
++ equal(await readBlob("blob0", sharedData), text[2], "Expected text for blob0 in parent ppmm");
++
++ sharedData.flush();
++
++ equal(await readBlob("blob0", sharedData), text[2], "Expected text for blob0 in parent ppmm");
++ equal(await readBlob("blob1", sharedData), text[1], "Expected text for blob1 in parent ppmm");
++
++ equal(await readBlob("blob0"), text[2], "Expected text for blob0 in parent cpmm");
++ equal(await readBlob("blob1"), text[1], "Expected text for blob1 in parent cpmm");
++
++ equal(await contentPage.spawn("blob0", readBlob), text[2], "Expected text for blob0 in child 1 cpmm");
++ equal(await contentPage.spawn("blob1", readBlob), text[1], "Expected text for blob1 in child 1 cpmm");
++
++ equal(await page2.spawn("blob0", readBlob), text[2], "Expected text for blob0 in child 2 cpmm");
++ equal(await page2.spawn("blob1", readBlob), text[1], "Expected text for blob1 in child 2 cpmm");
++
++ deepEqual(await page2.spawn("data", getKey), data, "Expected data for data key in child 2 cpmm");
++});
+diff --git js/xpconnect/loader/AutoMemMap.h js/xpconnect/loader/AutoMemMap.h
+index e1b0bf6d75c4f..9d1f02255ac24 100644
+--- js/xpconnect/loader/AutoMemMap.h
++++ js/xpconnect/loader/AutoMemMap.h
+@@ -51,7 +51,7 @@ class AutoMemMap
+
+ void reset();
+
+- bool initialized() { return addr; }
++ bool initialized() const { return addr; }
+
+ uint32_t size() const { return size_; }
+
+
+commit e8827d892d6f
+Author: Kris Maglione <maglione.k@gmail.com>
+Date: Thu Jul 19 18:18:27 2018 -0700
+
+ Bug 1477129: Part 3 - Re-enable e10s on FreeBSD. r?froydnj
+
+ Backed out changeset 197fcba26a38
+
+ MozReview-Commit-ID: 4OOmP91hKXQ
+---
+ toolkit/content/aboutSupport.js | 5 ++++-
+ toolkit/locales/en-US/chrome/global/aboutSupport.properties | 2 +-
+ toolkit/xre/nsAppRunner.cpp | 8 +-------
+ 3 files changed, 6 insertions(+), 9 deletions(-)
+
+diff --git toolkit/content/aboutSupport.js toolkit/content/aboutSupport.js
+index 3c44097d20295..35a40f0344bd9 100644
+--- toolkit/content/aboutSupport.js
++++ toolkit/content/aboutSupport.js
+@@ -60,9 +60,12 @@ var snapshotFormatters = {
+ case 6:
+ case 7:
+ case 8:
+- case 10:
+ statusText = strings.GetStringFromName("multiProcessStatus." + data.autoStartStatus);
+ break;
++
++ case 10:
++ statusText = (Services.appinfo.OS == "Darwin" ? "OS X 10.6 - 10.8" : "Windows XP");
++ break;
+ }
+
+ $("multiprocess-box").textContent = strings.formatStringFromName("multiProcessWindows",
+diff --git toolkit/locales/en-US/chrome/global/aboutSupport.properties toolkit/locales/en-US/chrome/global/aboutSupport.properties
+index c04743a3e3394..96b8f9660ca8f 100644
+--- toolkit/locales/en-US/chrome/global/aboutSupport.properties
++++ toolkit/locales/en-US/chrome/global/aboutSupport.properties
+@@ -138,8 +138,8 @@ multiProcessStatus.5 = Disabled by lack of graphics hardware acceleration on Mac
+ multiProcessStatus.6 = Disabled by unsupported text input
+ multiProcessStatus.7 = Disabled by add-ons
+ multiProcessStatus.8 = Disabled forcibly
++# No longer in use (bug 1296353) but we might bring this back.
+ multiProcessStatus.9 = Disabled by graphics hardware acceleration on Windows XP
+-multiProcessStatus.10 = Disabled by operating system bug
+ multiProcessStatus.unknown = Unknown status
+
+ asyncPanZoom = Asynchronous Pan/Zoom
+diff --git toolkit/xre/nsAppRunner.cpp toolkit/xre/nsAppRunner.cpp
+index 2d0aa2ba804d9..5df9d811d3f20 100644
+--- toolkit/xre/nsAppRunner.cpp
++++ toolkit/xre/nsAppRunner.cpp
+@@ -5155,7 +5155,7 @@ enum {
+ // kE10sDisabledForAddons = 7, removed in bug 1406212
+ kE10sForceDisabled = 8,
+ // kE10sDisabledForXPAcceleration = 9, removed in bug 1296353
+- kE10sDisabledForOperatingSystem = 10,
++ // kE10sDisabledForOperatingSystem = 10, removed due to xp-eol
+ };
+
+ const char* kForceEnableE10sPref = "browser.tabs.remote.force-enable";
+@@ -5186,12 +5186,6 @@ BrowserTabsRemoteAutostart()
+ status = kE10sDisabledByUser;
+ }
+
+-#if defined(__FreeBSD__)
+- // sendmsg() packet loss gotten worse, see bug 1475970
+- gBrowserTabsRemoteAutostart = false;
+- status = kE10sDisabledForOperatingSystem;
+-#endif
+-
+ // Uber override pref for manual testing purposes
+ if (Preferences::GetBool(kForceEnableE10sPref, false)) {
+ gBrowserTabsRemoteAutostart = true;
Index: www/firefox/files/patch-bug847568
===================================================================
--- www/firefox/files/patch-bug847568
+++ www/firefox/files/patch-bug847568
@@ -249,7 +249,7 @@
+option('--with-system-harfbuzz',
+ help="Use system harfbuzz (located with pkgconfig)")
+
-+system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.7.4',
++system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.8.4',
+ when='--with-system-harfbuzz')
+
+set_config('MOZ_SYSTEM_HARFBUZZ', depends_if(system_harfbuzz)(lambda _: True))
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Feb 11, 6:03 AM (19 h, 41 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28639421
Default Alt Text
D16356.id45654.diff (25 KB)
Attached To
Mode
D16356: www/firefox: update to 63.0
Attached
Detach File
Event Timeline
Log In to Comment