Bug 1365660: Part 5b - Enable compositing for popups with remote content on Windows. r=bas

MozReview-Commit-ID: GzpCBUnVkdY

--HG--
extra : rebase_source : bc2a6459e64847b0153e09e392173bac00d97b4e
This commit is contained in:
Kris Maglione 2017-05-29 14:58:48 -07:00
parent 27a5a12045
commit a176402b70
5 changed files with 17 additions and 1 deletions

View File

@ -41,6 +41,7 @@ const {CustomizableUI} = Cu.import("resource:///modules/CustomizableUI.jsm", {})
if (gTestPath.includes("test-oop-extensions")) {
SpecialPowers.pushPrefEnv({set: [
["extensions.webextensions.remote", true],
["layers.popups.compositing.enabled", true],
]});
// We don't want to reset this at the end of the test, so that we don't have
// to spawn a new extension child process for each test unit.

View File

@ -4843,6 +4843,8 @@ pref("extensions.webextensions.themes.enabled", false);
pref("extensions.webextensions.themes.icons.enabled", false);
pref("extensions.webextensions.remote", false);
pref("layers.popups.compositing.enabled", false);
// Report Site Issue button
pref("extensions.webcompat-reporter.newIssueEndpoint", "https://webcompat.com/issues/new");
#ifdef NIGHTLY_BUILD

View File

@ -711,6 +711,11 @@ this.Extension = class extends ExtensionData {
if (this.remote && processCount !== 1) {
throw new Error("Out-of-process WebExtensions are not supported with multiple child processes");
}
if (this.remote && !Services.prefs.getBoolPref("layers.popups.compositing.enabled", false)) {
Cu.reportError(new Error("Remote extensions should not be enabled without also setting " +
"the layers.popups.compositing.enabled preference to true"));
}
// This is filled in the first time an extension child is created.
this.parentMessageManager = null;

View File

@ -11,6 +11,7 @@ var {AppConstants} = SpecialPowers.Cu.import("resource://gre/modules/AppConstant
if (location.pathname.includes("test-oop-extensions")) {
SpecialPowers.pushPrefEnv({set: [
["extensions.webextensions.remote", true],
["layers.popups.compositing.enabled", true],
]});
// We don't want to reset this at the end of the test, so that we don't have
// to spawn a new extension child process for each test unit.

View File

@ -369,6 +369,9 @@ static const int32_t kResizableBorderMinSize = 3;
// Cached pointer events enabler value, True if pointer events are enabled.
static bool gIsPointerEventsEnabled = false;
// True if we should use compositing for popup widgets.
static bool gIsPopupCompositingEnabled = false;
// We should never really try to accelerate windows bigger than this. In some
// cases this might lead to no D3D9 acceleration where we could have had it
// but D3D9 does not reliably report when it supports bigger windows. 8192
@ -671,6 +674,10 @@ nsWindow::nsWindow()
Preferences::AddBoolVarCache(&gIsPointerEventsEnabled,
"dom.w3c_pointer_events.enabled",
gIsPointerEventsEnabled);
Preferences::AddBoolVarCache(&gIsPopupCompositingEnabled,
"layers.popups.compositing.enabled",
gIsPopupCompositingEnabled);
} // !sInstanceCount
mIdleService = nullptr;
@ -7169,7 +7176,7 @@ nsWindow::ShouldUseOffMainThreadCompositing()
// We don't currently support using an accelerated layer manager with
// transparent windows so don't even try. I'm also not sure if we even
// want to support this case. See bug 593471
if (mTransparencyMode == eTransparencyTransparent) {
if (!(HasRemoteContent() && gIsPopupCompositingEnabled) && mTransparencyMode == eTransparencyTransparent) {
return false;
}