[tor-commits] [tor-browser] 10/179: Bug 1764585 - Wait for some pref changes to take effect. r=tnikkel, a=test-only
gitolite role
git at cupani.torproject.org
Fri Aug 19 08:35:07 UTC 2022
This is an automated email from the git hooks/post-receive script.
pierov pushed a commit to branch tor-browser-102.2.0esr-12.0-1
in repository tor-browser.
commit af2abc71a085e1b61426b0e6c606f29520bb3478
Author: Emilio Cobos Álvarez <emilio at crisal.io>
AuthorDate: Mon Jun 20 17:22:13 2022 +0200
Bug 1764585 - Wait for some pref changes to take effect. r=tnikkel, a=test-only
---
layout/tools/reftest/reftest.jsm | 91 ++++++++++++++--------
.../specialpowers/content/SpecialPowersParent.jsm | 1 +
2 files changed, 59 insertions(+), 33 deletions(-)
diff --git a/layout/tools/reftest/reftest.jsm b/layout/tools/reftest/reftest.jsm
index 6e6b171ae650f..aced2511cdbfd 100644
--- a/layout/tools/reftest/reftest.jsm
+++ b/layout/tools/reftest/reftest.jsm
@@ -687,7 +687,7 @@ function Blur()
g.containingWindow.blur();
}
-function StartCurrentTest()
+async function StartCurrentTest()
{
g.testLog = [];
@@ -716,7 +716,7 @@ function StartCurrentTest()
if ((g.urls.length == 0 && g.repeat == 0) ||
(g.runUntilFailure && HasUnexpectedResult())) {
- RestoreChangedPreferences();
+ await RestoreChangedPreferences();
DoneTests();
} else if (g.urls.length == 0 && g.repeat > 0) {
// Repeat
@@ -772,6 +772,14 @@ function updateBrowserRemotenessByURL(aBrowser, aURL) {
return Promise.resolve();
}
+// This logic should match SpecialPowersParent._applyPrefs.
+function PrefRequiresRefresh(name) {
+ return name == "layout.css.prefers-color-scheme.content-override" ||
+ name.startsWith("ui.") ||
+ name.startsWith("browser.display.") ||
+ name.startsWith("font.");
+}
+
async function StartCurrentURI(aURLTargetType)
{
const isStartingRef = (aURLTargetType == URL_TARGET_TYPE_REFERENCE);
@@ -779,7 +787,7 @@ async function StartCurrentURI(aURLTargetType)
g.currentURL = g.urls[0][isStartingRef ? "url2" : "url1"].spec;
g.currentURLTargetType = aURLTargetType;
- RestoreChangedPreferences();
+ await RestoreChangedPreferences();
var prefs = Cc["@mozilla.org/preferences-service;1"].
getService(Ci.nsIPrefBranch);
@@ -787,6 +795,8 @@ async function StartCurrentURI(aURLTargetType)
const prefSettings =
g.urls[0][isStartingRef ? "prefSettings2" : "prefSettings1"];
+ var prefsRequireRefresh = false;
+
if (prefSettings.length > 0) {
var badPref = undefined;
try {
@@ -829,10 +839,13 @@ async function StartCurrentURI(aURLTargetType)
}
}
if (!prefExists || oldVal != ps.value) {
+ var requiresRefresh = PrefRequiresRefresh(ps.name);
+ prefsRequireRefresh = prefsRequireRefresh || requiresRefresh;
g.prefsToRestore.push( { name: ps.name,
- type: ps.type,
- value: oldVal,
- prefExisted: prefExists } );
+ type: ps.type,
+ value: oldVal,
+ requiresRefresh,
+ prefExisted: prefExists } );
var value = ps.value;
if (ps.type == PREF_BOOLEAN) {
prefs.setBoolPref(ps.name, value);
@@ -860,7 +873,7 @@ async function StartCurrentURI(aURLTargetType)
// skip the test that had a bad preference
g.urls.shift();
- StartCurrentTest();
+ await StartCurrentTest();
return;
} else {
throw e;
@@ -885,6 +898,10 @@ async function StartCurrentURI(aURLTargetType)
TestBuffer("START " + g.currentURL);
await updateBrowserRemotenessByURL(g.browser, g.currentURL);
+ if (prefsRequireRefresh) {
+ await new Promise(resolve => g.containingWindow.requestAnimationFrame(resolve));
+ }
+
var type = g.urls[0].type
if (TYPE_SCRIPT == type) {
SendLoadScriptTest(g.currentURL, g.loadTimeout);
@@ -1500,7 +1517,7 @@ function FinishTestItem()
g.failedAssignedLayerMessages = [];
}
-function DoAssertionCheck(numAsserts)
+async function DoAssertionCheck(numAsserts)
{
if (g.debug.isDebugBuild) {
if (g.browserIsRemote) {
@@ -1532,7 +1549,7 @@ function DoAssertionCheck(numAsserts)
// And start the next test.
g.urls.shift();
- StartCurrentTest();
+ await StartCurrentTest();
}
function ResetRenderingState()
@@ -1541,30 +1558,38 @@ function ResetRenderingState()
// We would want to clear any viewconfig here, if we add support for it
}
-function RestoreChangedPreferences()
+async function RestoreChangedPreferences()
{
- if (g.prefsToRestore.length > 0) {
- var prefs = Cc["@mozilla.org/preferences-service;1"].
- getService(Ci.nsIPrefBranch);
- g.prefsToRestore.reverse();
- g.prefsToRestore.forEach(function(ps) {
- if (ps.prefExisted) {
- var value = ps.value;
- if (ps.type == PREF_BOOLEAN) {
- prefs.setBoolPref(ps.name, value);
- } else if (ps.type == PREF_STRING) {
- prefs.setStringPref(ps.name, value);
- value = '"' + value + '"';
- } else if (ps.type == PREF_INTEGER) {
- prefs.setIntPref(ps.name, value);
- }
- logger.info("RESTORE PREFERENCE pref(" + ps.name + "," + value + ")");
- } else {
- prefs.clearUserPref(ps.name);
- logger.info("RESTORE PREFERENCE pref(" + ps.name + ", <no value set>) (clearing user pref)");
+ if (!g.prefsToRestore.length) {
+ return;
+ }
+ var prefs = Cc["@mozilla.org/preferences-service;1"].
+ getService(Ci.nsIPrefBranch);
+ var requiresRefresh = false;
+ g.prefsToRestore.reverse();
+ g.prefsToRestore.forEach(function(ps) {
+ requiresRefresh = requiresRefresh || ps.requiresRefresh;
+ if (ps.prefExisted) {
+ var value = ps.value;
+ if (ps.type == PREF_BOOLEAN) {
+ prefs.setBoolPref(ps.name, value);
+ } else if (ps.type == PREF_STRING) {
+ prefs.setStringPref(ps.name, value);
+ value = '"' + value + '"';
+ } else if (ps.type == PREF_INTEGER) {
+ prefs.setIntPref(ps.name, value);
}
- });
- g.prefsToRestore = [];
+ logger.info("RESTORE PREFERENCE pref(" + ps.name + "," + value + ")");
+ } else {
+ prefs.clearUserPref(ps.name);
+ logger.info("RESTORE PREFERENCE pref(" + ps.name + ", <no value set>) (clearing user pref)");
+ }
+ });
+
+ g.prefsToRestore = [];
+
+ if (requiresRefresh) {
+ await new Promise(resolve => g.containingWindow.requestAnimationFrame(resolve));
}
}
@@ -1664,9 +1689,9 @@ function RegisterMessageListenersAndLoadContentScript(aReload)
});
}
-function RecvAssertionCount(count)
+async function RecvAssertionCount(count)
{
- DoAssertionCheck(count);
+ await DoAssertionCheck(count);
}
function RecvContentReady(info)
diff --git a/testing/specialpowers/content/SpecialPowersParent.jsm b/testing/specialpowers/content/SpecialPowersParent.jsm
index 64f7c210eeaa7..85dbc4ab66e8c 100644
--- a/testing/specialpowers/content/SpecialPowersParent.jsm
+++ b/testing/specialpowers/content/SpecialPowersParent.jsm
@@ -410,6 +410,7 @@ class SpecialPowersParent extends JSWindowActorParent {
_applyPrefs(actions) {
let requiresRefresh = false;
for (let pref of actions) {
+ // This logic should match PrefRequiresRefresh in reftest.jsm
requiresRefresh =
requiresRefresh ||
pref.name == "layout.css.prefers-color-scheme.content-override" ||
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the tor-commits
mailing list