mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1067424 - Test for webapps actor getAppActor method. r=jryans
This commit is contained in:
parent
a573319909
commit
54280cb5b3
@ -7,6 +7,9 @@ const Cu = Components.utils;
|
||||
|
||||
const { DebuggerServer } = Cu.import("resource://gre/modules/devtools/dbg-server.jsm");
|
||||
const { DebuggerClient } = Cu.import("resource://gre/modules/devtools/dbg-client.jsm");
|
||||
const {devtools} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
|
||||
const {require} = devtools;
|
||||
|
||||
|
||||
const { FileUtils } = Cu.import("resource://gre/modules/FileUtils.jsm");
|
||||
const { Services } = Cu.import("resource://gre/modules/Services.jsm");
|
||||
@ -114,9 +117,46 @@ addMessageListener("install", function (aMessage) {
|
||||
}
|
||||
});
|
||||
|
||||
addMessageListener("getAppActor", function (aMessage) {
|
||||
let { manifestURL } = aMessage;
|
||||
let request = {type: "getAppActor", manifestURL: manifestURL};
|
||||
webappActorRequest(request, function (aResponse) {
|
||||
sendAsyncMessage("appActor", aResponse);
|
||||
});
|
||||
});
|
||||
|
||||
let Frames = [];
|
||||
addMessageListener("addFrame", function (aMessage) {
|
||||
let win = Services.wm.getMostRecentWindow("navigator:browser");
|
||||
let doc = win.document;
|
||||
let frame = doc.createElementNS("http://www.w3.org/1999/xhtml", "iframe");
|
||||
frame.setAttribute("mozbrowser", "true");
|
||||
if (aMessage.mozapp) {
|
||||
frame.setAttribute("mozapp", aMessage.mozapp);
|
||||
}
|
||||
if (aMessage.remote) {
|
||||
frame.setAttribute("remote", aMessage.remote);
|
||||
}
|
||||
if (aMessage.src) {
|
||||
frame.setAttribute("src", aMessage.src);
|
||||
}
|
||||
doc.documentElement.appendChild(frame);
|
||||
Frames.push(frame);
|
||||
sendAsyncMessage("frameAdded");
|
||||
});
|
||||
|
||||
addMessageListener("cleanup", function () {
|
||||
webappActorRequest({type: "unwatchApps"}, function () {
|
||||
gClient.close();
|
||||
});
|
||||
});
|
||||
|
||||
let AppFramesMock = {
|
||||
list: function () {
|
||||
return Frames;
|
||||
},
|
||||
addObserver: function () {},
|
||||
removeObserver: function () {}
|
||||
};
|
||||
|
||||
require("devtools/server/actors/webapps").setAppFramesMock(AppFramesMock);
|
||||
|
@ -224,6 +224,21 @@ var steps = [
|
||||
info("== SETUP == Disable certified app access");
|
||||
SpecialPowers.popPrefEnv(next);
|
||||
},
|
||||
function() {
|
||||
info("== TEST == Get packaged app actor");
|
||||
addFrame(
|
||||
{ mozapp: PACKAGED_APP_MANIFEST, remote: true },
|
||||
function () {
|
||||
getAppActor(PACKAGED_APP_MANIFEST, function (response) {
|
||||
let tabActor = response.actor;
|
||||
ok(!!tabActor, "TabActor is correctly instanciated in child.js");
|
||||
ok("actor" in tabActor, "Tab actor is available in child");
|
||||
ok("consoleActor" in tabActor, "Console actor is available in child");
|
||||
next();
|
||||
});
|
||||
});
|
||||
|
||||
},
|
||||
function() {
|
||||
info("== TEST == Uninstall packaged app");
|
||||
uninstall(PACKAGED_APP_MANIFEST);
|
||||
@ -309,6 +324,22 @@ function uninstall(manifestURL) {
|
||||
});
|
||||
}
|
||||
|
||||
function getAppActor(manifestURL, callback) {
|
||||
mm.addMessageListener("appActor", function onAppActor(aResponse) {
|
||||
mm.removeMessageListener("appActor", onAppActor);
|
||||
callback(aResponse);
|
||||
});
|
||||
mm.sendAsyncMessage("getAppActor", { manifestURL: manifestURL });
|
||||
}
|
||||
|
||||
function addFrame(options, callback) {
|
||||
mm.addMessageListener("frameAdded", function onFrameAdded() {
|
||||
mm.removeMessageListener("frameAdded", onFrameAdded);
|
||||
callback();
|
||||
});
|
||||
mm.sendAsyncMessage("addFrame", options);
|
||||
}
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
|
@ -25,6 +25,10 @@ exports.setAppFramesMock = function (mock) {
|
||||
}
|
||||
|
||||
DevToolsUtils.defineLazyGetter(this, "AppFrames", () => {
|
||||
// Offer a way for unit test to provide a mock
|
||||
if (AppFramesMock) {
|
||||
return AppFramesMock;
|
||||
}
|
||||
try {
|
||||
return Cu.import("resource://gre/modules/AppFrames.jsm", {}).AppFrames;
|
||||
} catch(e) {}
|
||||
|
@ -4,6 +4,8 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
try {
|
||||
|
||||
let chromeGlobal = this;
|
||||
|
||||
// Encapsulate in its own scope to allows loading this frame script
|
||||
@ -64,3 +66,7 @@ let chromeGlobal = this;
|
||||
});
|
||||
addMessageListener("debug:disconnect", onDisconnect);
|
||||
})();
|
||||
|
||||
} catch(e) {
|
||||
dump("Exception in app child process: " + e + "\n");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user