gecko-dev/widget/tests/system_font_changes.xul
Hiroyuki Ikezoe 61a6f8e3f2 Bug 1478576 - A mochitest for system font change notification. r=froydnj,jimm,karlt
The test case in this patch fails without the proper fix in the first patch
in this patch series.

In this patch two new nsIDOMWindowUtils APIs are introduced to change the
system font settins in tests.  Currently the APIs work only on GTK+ platform.

Also to work the test case properly we need to open a new XUL window because we
don't propagate font changes into descendant documents yet (bug 1478212).

MozReview-Commit-ID: 4OLxEkEuF8d

--HG--
extra : rebase_source : 683e64f07c4d8820e5499d8c15b90975618559b8
2018-08-07 11:58:36 +09:00

63 lines
1.8 KiB
XML

<?xml version="1.0"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<window id="system_font_changes_window"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
width="300"
height="300"
onload="start();">
<span id="target" style="font:menu">Hello world</span>
<script type="application/javascript"><![CDATA[
function is(condition, message) {
window.opener.wrappedJSObject.SimpleTest.is(condition, message);
}
function registerCleanupFunction(func) {
window.opener.wrappedJSObject.SimpleTest.registerCleanupFunction(func);
}
async function waitForFrame() {
return new Promise(resolve => {
requestAnimationFrame(resolve);
});
}
async function start() {
await waitForFrame();
const originalSystemFont = windowUtils.systemFont;
registerCleanupFunction(() => {
windowUtils.systemFont = originalSystemFont;
});
windowUtils.systemFont = 'Sans 11';
is(windowUtils.systemFont, 'Sans 11');
// Wait for two frames for the safety since the notification for system
// font changes is asynchronously processed.
await waitForFrame();
await waitForFrame();
const target = document.getElementById('target');
is(getComputedStyle(target).fontFamily, 'Sans');
windowUtils.systemFont = 'Serif 11';
is(windowUtils.systemFont, 'Serif 11');
await waitForFrame();
await waitForFrame();
is(getComputedStyle(target).fontFamily, 'Serif');
window.close();
window.opener.wrappedJSObject.SimpleTest.finish();
}
]]></script>
</window>