mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 19:04:45 +00:00
Bug 1591968 - Put window.mozPaintCount behind a default-off pref. r=bzbarsky
It's not the kind of thing we want people to allow observing, generally, and even less so the kind of thing that we may want people to rely on. Move internal callers (all of them tests) to a new DOMWindowUtils.paintCount method. Differential Revision: https://phabricator.services.mozilla.com/D50817 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
abe6482b65
commit
cc80d088a2
@ -4150,3 +4150,10 @@ nsDOMWindowUtils::GetUsesOverlayScrollbars(bool* aResult) {
|
||||
*aResult = Document::UseOverlayScrollbars(GetDocument());
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDOMWindowUtils::GetPaintCount(uint64_t* aPaintCount) {
|
||||
auto* presShell = GetPresShell();
|
||||
*aPaintCount = presShell ? presShell->GetPaintCount() : 0;
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -1935,6 +1935,13 @@ interface nsIDOMWindowUtils : nsISupports {
|
||||
*/
|
||||
attribute ACString systemFont;
|
||||
|
||||
/**
|
||||
* Returns the number of times this document for this window has
|
||||
* been painted to the screen.
|
||||
*
|
||||
* Use this instead of window.mozPaintCount
|
||||
*/
|
||||
readonly attribute unsigned long long paintCount;
|
||||
|
||||
/**
|
||||
* Simulate the system setting corresponding to 'prefers-reduced-motion'
|
||||
|
@ -21,14 +21,12 @@ function deltaInBounds(dx,dy, dw,dh) {
|
||||
200 <= b && b <= 220);
|
||||
}
|
||||
|
||||
var initialFrame;
|
||||
function start() {
|
||||
window.removeEventListener("MozReftestInvalidate", start);
|
||||
|
||||
window.addEventListener("MozAfterPaint", step);
|
||||
window.addEventListener("MozPaintWaitFinished", step);
|
||||
|
||||
initialFrame = window.mozPaintCount;
|
||||
plugin = document.getElementById("plugin");
|
||||
|
||||
movePluginTo(0,0, 200,200);
|
||||
|
@ -22,5 +22,5 @@ random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) fails-if(!haveTestPlugin) f
|
||||
random-if(!haveTestPlugin) HTTP == plugin-transform-1.html plugin-transform-1-ref.html
|
||||
fails-if(!haveTestPlugin) HTTP == plugin-transform-2.html plugin-transform-2-ref.html
|
||||
skip-if(!haveTestPlugin) HTTP == shrink-1.html shrink-1-ref.html
|
||||
skip-if(!haveTestPlugin) HTTP == update-1.html update-1-ref.html
|
||||
pref(dom.mozPaintCount.enabled,true) skip-if(!haveTestPlugin) HTTP == update-1.html update-1-ref.html
|
||||
skip-if(!haveTestPlugin) HTTP == windowless-layers.html windowless-layers-ref.html
|
||||
|
@ -15,6 +15,9 @@ function start()
|
||||
var last_paint_count = 0;
|
||||
// Enough paints to test reusing a surface after it has been
|
||||
// moved from front to back buffer.
|
||||
// FIXME: Stop using mozPaintCount for this test.
|
||||
// Can't make it a chrome:// url because it needs http, thus no
|
||||
// SpecialPowers :/
|
||||
var final_paint_count = window.mozPaintCount + 10;
|
||||
var final_color = "FFFF0000";
|
||||
|
||||
|
@ -303,8 +303,10 @@ partial interface Window {
|
||||
/**
|
||||
* Returns the number of times this document for this window has
|
||||
* been painted to the screen.
|
||||
*
|
||||
* If you need this for tests use nsIDOMWindowUtils.paintCount instead.
|
||||
*/
|
||||
[Throws] readonly attribute unsigned long long mozPaintCount;
|
||||
[Throws, Pref="dom.mozPaintCount.enabled"] readonly attribute unsigned long long mozPaintCount;
|
||||
|
||||
attribute EventHandler ondevicemotion;
|
||||
attribute EventHandler ondeviceorientation;
|
||||
|
@ -31,17 +31,17 @@
|
||||
}
|
||||
|
||||
function doTest(evt) {
|
||||
var initialCount = win.mozPaintCount;
|
||||
var initialCount = win.windowUtils.paintCount;
|
||||
|
||||
function nextStep() {
|
||||
if (win.mozPaintCount == initialCount || win.isMozAfterPaintPending) {
|
||||
if (win.windowUtils.paintCount == initialCount || win.isMozAfterPaintPending) {
|
||||
SimpleTest.info("Waiting for mozPaintCount (= " + initialCount + ") to increase" + testInfo());
|
||||
// Do not use SimpleTest.executeSoon() here: give a little more time.
|
||||
setTimeout(nextStep, 100);
|
||||
return;
|
||||
}
|
||||
|
||||
isnot(win.mozPaintCount, initialCount, "mozPaintCount has increased" + testInfo());
|
||||
isnot(win.windowUtils.paintCount, initialCount, "mozPaintCount has increased" + testInfo());
|
||||
|
||||
function testLeafLayersPartitionWindow() {
|
||||
var success = win.windowUtils
|
||||
@ -67,7 +67,7 @@
|
||||
function resizeListener() {
|
||||
win.removeEventListener("resize", resizeListener, true);
|
||||
// We want a paint after resize.
|
||||
initialCount = win.mozPaintCount;
|
||||
initialCount = win.windowUtils.paintCount;
|
||||
SimpleTest.executeSoon(nextStep);
|
||||
}
|
||||
win.addEventListener("resize", resizeListener, true);
|
||||
|
@ -33,7 +33,7 @@ function onAfterPaint () {
|
||||
function startTest() {
|
||||
setTimeout(function () {
|
||||
afterPaintCount = 0;
|
||||
initialPaintCount = window.mozPaintCount;
|
||||
initialPaintCount = SpecialPowers.DOMWindowUtils.paintCount;
|
||||
window.addEventListener("MozAfterPaint", onAfterPaint, true);
|
||||
doBackgroundFlicker();
|
||||
}, 500);
|
||||
@ -49,7 +49,7 @@ const minimumAfterPaintsToPass = 10;
|
||||
function doPluginFlicker() {
|
||||
ok(true, "Plugin color iteration " + color +
|
||||
", afterpaint count: " + afterPaintCount +
|
||||
", mozpaint count: " + window.mozPaintCount);
|
||||
", mozpaint count: " + SpecialPowers.DOMWindowUtils.paintCount);
|
||||
if (afterPaintCount >= minimumAfterPaintsToPass) {
|
||||
ok(true, "afterPaintCount incremented enough from plugin color changes.");
|
||||
SimpleTest.finish();
|
||||
@ -69,11 +69,11 @@ function doPluginFlicker() {
|
||||
function doBackgroundFlicker() {
|
||||
ok(true, "Background color iteration " + color +
|
||||
", afterpaint count: " + afterPaintCount +
|
||||
", mozpaint count: " + window.mozPaintCount);
|
||||
", mozpaint count: " + SpecialPowers.DOMWindowUtils.paintCount);
|
||||
if (afterPaintCount >= minimumAfterPaintsToPass) {
|
||||
ok(true, "afterPaintCount incremented enough from background color changes.");
|
||||
afterPaintCount = 0;
|
||||
initialPaintCount = window.mozPaintCount;
|
||||
initialPaintCount = SpecialPowers.DOMWindowUtils.paintCount;
|
||||
doPluginFlicker();
|
||||
return;
|
||||
}
|
||||
|
@ -21,6 +21,7 @@ var iterations = 0;
|
||||
var plugin = document.getElementById("plugin");
|
||||
var lastPaintCount;
|
||||
var expectedWidth;
|
||||
var utils = SpecialPowers.DOMWindowUtils;
|
||||
|
||||
var toggle = true;
|
||||
function invalidationLoop() {
|
||||
@ -32,7 +33,7 @@ function invalidationLoop() {
|
||||
invalidationLoop();
|
||||
|
||||
function doIteration() {
|
||||
lastPaintCount = window.mozPaintCount;
|
||||
lastPaintCount = utils.paintCount;
|
||||
ok(true, "Beginning iteration " + iterations + ", last paint count: " + lastPaintCount);
|
||||
|
||||
expectedWidth = 201 + iterations;
|
||||
@ -41,13 +42,12 @@ function doIteration() {
|
||||
}
|
||||
|
||||
function checkDone() {
|
||||
ok(true, "Check to see if we're done: " + window.mozPaintCount);
|
||||
if (window.mozPaintCount == lastPaintCount) {
|
||||
ok(true, "Check to see if we're done: " + utils.paintCount);
|
||||
if (utils.paintCount == lastPaintCount) {
|
||||
setTimeout(checkDone, 30);
|
||||
return;
|
||||
}
|
||||
|
||||
var utils = SpecialPowers.getDOMWindowUtils(window);
|
||||
is(plugin.getWidthAtLastPaint(), utils.screenPixelsPerCSSPixel*expectedWidth,
|
||||
"Check that we set width before painting");
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Tests for mozPaintCount</title>
|
||||
<title>Tests for DOMWindowUtils.paintCount</title>
|
||||
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script type="application/javascript" src="plugin-utils.js"></script>
|
||||
<script type="application/javascript">
|
||||
@ -22,13 +22,13 @@
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
var startPaintCount = window.mozPaintCount;
|
||||
var startPaintCount = SpecialPowers.DOMWindowUtils.paintCount;
|
||||
ok(true, "Got to initial paint count: " + startPaintCount);
|
||||
var color = 0;
|
||||
|
||||
function doPluginFlicker() {
|
||||
ok(true, "Plugin color iteration " + color + ", paint count: " + window.mozPaintCount);
|
||||
if (window.mozPaintCount - startPaintCount > 20) {
|
||||
ok(true, "Plugin color iteration " + color + ", paint count: " + SpecialPowers.DOMWindowUtils.paintCount);
|
||||
if (SpecialPowers.DOMWindowUtils.paintCount - startPaintCount > 20) {
|
||||
ok(true, "Got enough paints from plugin color changes");
|
||||
SimpleTest.finish();
|
||||
return;
|
||||
@ -45,10 +45,10 @@ function doPluginFlicker() {
|
||||
}
|
||||
|
||||
function doBackgroundFlicker() {
|
||||
ok(true, "Background color iteration " + color + ", paint count: " + window.mozPaintCount);
|
||||
if (window.mozPaintCount - startPaintCount > 20) {
|
||||
ok(true, "Background color iteration " + color + ", paint count: " + SpecialPowers.DOMWindowUtils.paintCount);
|
||||
if (SpecialPowers.DOMWindowUtils.paintCount - startPaintCount > 20) {
|
||||
ok(true, "Got enough paints from background color changes");
|
||||
startPaintCount = window.mozPaintCount;
|
||||
startPaintCount = SpecialPowers.DOMWindowUtils.paintCount;
|
||||
doPluginFlicker();
|
||||
return;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
<script>
|
||||
var startPaintCount = 0;
|
||||
function doTest() {
|
||||
startPaintCount = window.mozPaintCount;
|
||||
startPaintCount = window.windowUtils.paintCount;
|
||||
document.querySelector('#src').style.visibility='visible';
|
||||
document.querySelector('#dest').style.visibility='visible';
|
||||
setTimeout(check, 200);
|
||||
@ -12,7 +12,7 @@ function doTest() {
|
||||
var calls = 0;
|
||||
function check() {
|
||||
calls++;
|
||||
if ((window.mozPaintCount - startPaintCount) > 3) {
|
||||
if ((window.windowUtils.paintCount - startPaintCount) > 3) {
|
||||
finishSuccess();
|
||||
return;
|
||||
}
|
||||
|
@ -1872,7 +1872,7 @@ fuzzy-if(webrender,63-64,407-845) == 1081185-1.html 1081185-1-ref.html
|
||||
== 1105137-1.html 1105137-1-ref.html
|
||||
fuzzy-if(d2d,0-36,0-304) fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu)&&d2d,0-139,0-701) == 1116480-1-fakeitalic-overflow.html 1116480-1-fakeitalic-overflow-ref.html
|
||||
== 1111753-1.html about:blank
|
||||
== 1114526-1.html 1114526-1-ref.html
|
||||
== chrome://reftest/content/bugs/1114526-1.html 1114526-1-ref.html
|
||||
fuzzy-if(skiaContent,0-1,0-800000) == 1119117-1a.html 1119117-1-ref.html
|
||||
fuzzy-if(skiaContent,0-1,0-800000) == 1119117-1b.html 1119117-1-ref.html
|
||||
== 1120431-1.html 1120431-1-ref.html
|
||||
|
@ -1238,6 +1238,12 @@
|
||||
# Prefs starting with "dom."
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# Whether window.mozPaintCount is exposed to the web.
|
||||
- name: dom.mozPaintCount.enabled
|
||||
type: bool
|
||||
value: false
|
||||
mirror: always
|
||||
|
||||
# Allow cut/copy
|
||||
- name: dom.allow_cut_copy
|
||||
type: bool
|
||||
|
@ -19,7 +19,7 @@
|
||||
"about:blank",
|
||||
null,
|
||||
"chrome,dialog=no,outerHeight=170,outerWidth=200");
|
||||
waitForSuccess(function() { return win.mozPaintCount },
|
||||
waitForSuccess(function() { return SpecialPowers.DOMWindowUtils.paintCount },
|
||||
"No paint received", checkInitialSize);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user