mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-16 14:55:47 +00:00
Bug 1674034 - Move SetResolutionAndScaleTo to actor. r=calu
Differential Revision: https://phabricator.services.mozilla.com/D133142
This commit is contained in:
parent
a2e023448b
commit
7957290efd
@ -67,6 +67,16 @@ class TestSupportChild extends GeckoViewActorChild {
|
||||
);
|
||||
return color;
|
||||
}
|
||||
case "SetResolutionAndScaleTo": {
|
||||
return new Promise(resolve => {
|
||||
const window = this.contentWindow;
|
||||
const { resolution } = aMsg.data;
|
||||
window.visualViewport.addEventListener("resize", () => resolve(), {
|
||||
once: true,
|
||||
});
|
||||
window.windowUtils.setResolutionAndScaleTo(resolution);
|
||||
});
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -50,8 +50,8 @@ const APIS = {
|
||||
SetPrefs({ oldPrefs, newPrefs }) {
|
||||
return browser.test.setPrefs(oldPrefs, newPrefs);
|
||||
},
|
||||
SetResolutionAndScaleTo({ resolution }) {
|
||||
return browser.test.setResolutionAndScaleTo(resolution);
|
||||
SetResolutionAndScaleTo({ tab, resolution }) {
|
||||
return browser.test.setResolutionAndScaleTo(tab.id, resolution);
|
||||
},
|
||||
FlushApzRepaints({ tab }) {
|
||||
return browser.test.flushApzRepaints(tab.id);
|
||||
|
@ -14,15 +14,6 @@ const { Preferences } = ChromeUtils.import(
|
||||
"resource://gre/modules/Preferences.jsm"
|
||||
);
|
||||
|
||||
function setResolutionAndScaleToFrameScript(resolution) {
|
||||
addMessageListener("PanZoomControllerTest:SetResolutionAndScaleTo", () => {
|
||||
content.window.visualViewport.addEventListener("resize", () => {
|
||||
sendAsyncMessage("PanZoomControllerTest:SetResolutionAndScaleTo");
|
||||
});
|
||||
content.windowUtils.setResolutionAndScaleTo(resolution);
|
||||
});
|
||||
}
|
||||
|
||||
this.test = class extends ExtensionAPI {
|
||||
onStartup() {
|
||||
ChromeUtils.registerWindowActor("TestSupport", {
|
||||
@ -140,28 +131,9 @@ this.test = class extends ExtensionAPI {
|
||||
return Services.telemetry.scalarSet(id, value);
|
||||
},
|
||||
|
||||
async setResolutionAndScaleTo(resolution) {
|
||||
const frameScript = `data:text/javascript,(${encodeURI(
|
||||
setResolutionAndScaleToFrameScript
|
||||
)}).call(this, ${resolution})`;
|
||||
Services.mm.loadFrameScript(frameScript, true);
|
||||
|
||||
return new Promise(resolve => {
|
||||
const onMessage = () => {
|
||||
Services.mm.removeMessageListener(
|
||||
"PanZoomControllerTest:SetResolutionAndScaleTo",
|
||||
onMessage
|
||||
);
|
||||
resolve();
|
||||
};
|
||||
|
||||
Services.mm.addMessageListener(
|
||||
"PanZoomControllerTest:SetResolutionAndScaleTo",
|
||||
onMessage
|
||||
);
|
||||
Services.mm.broadcastAsyncMessage(
|
||||
"PanZoomControllerTest:SetResolutionAndScaleTo"
|
||||
);
|
||||
async setResolutionAndScaleTo(tabId, resolution) {
|
||||
return windowActor(tabId).sendQuery("SetResolutionAndScaleTo", {
|
||||
resolution,
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -118,6 +118,10 @@
|
||||
"async": true,
|
||||
"description": "Invokes nsIDOMWindowUtils.setResolutionAndScaleTo.",
|
||||
"parameters": [
|
||||
{
|
||||
"type": "number",
|
||||
"name": "tabId"
|
||||
},
|
||||
{
|
||||
"type": "number",
|
||||
"name": "resolution"
|
||||
|
@ -235,6 +235,9 @@ open class BaseSessionTest(noErrorCollector: Boolean = false) {
|
||||
|
||||
fun GeckoSession.getLinkColor(selector: String) = sessionRule.getLinkColor(this, selector)
|
||||
|
||||
fun GeckoSession.setResolutionAndScaleTo(resolution: Float) =
|
||||
sessionRule.setResolutionAndScaleTo(this, resolution)
|
||||
|
||||
var GeckoSession.active: Boolean
|
||||
get() = sessionRule.getActive(this)
|
||||
set(value) = setActive(value)
|
||||
|
@ -185,7 +185,7 @@ class PanZoomControllerTest : BaseSessionTest() {
|
||||
assertThat("Visual viewport scale is the initial scale", originalScale, closeTo(0.5, 0.01))
|
||||
|
||||
// Change the resolution so that the visual viewport will be different from the layout viewport.
|
||||
sessionRule.setResolutionAndScaleTo(2.0f)
|
||||
mainSession.setResolutionAndScaleTo(2.0f)
|
||||
|
||||
val scale = mainSession.evaluateJS("visualViewport.scale") as Double
|
||||
assertThat("Visual viewport scale is now greater than the initial scale", scale, greaterThan(originalScale))
|
||||
|
@ -2398,8 +2398,9 @@ public class GeckoSessionTestRule implements TestRule {
|
||||
}
|
||||
|
||||
/** Invokes nsIDOMWindowUtils.setResolutionAndScaleTo. */
|
||||
public void setResolutionAndScaleTo(final float resolution) {
|
||||
public void setResolutionAndScaleTo(final GeckoSession session, final float resolution) {
|
||||
webExtensionApiCall(
|
||||
session,
|
||||
"SetResolutionAndScaleTo",
|
||||
args -> {
|
||||
args.put("resolution", resolution);
|
||||
|
Loading…
Reference in New Issue
Block a user