зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1513878 - Part 3: Add getActor test for WindowGlobalParent/WindowGlobalChild. r=nika
Depends on D16845 Differential Revision: https://phabricator.services.mozilla.com/D16846 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
7b1dd6aef8
Коммит
f2524a5b86
|
@ -8,3 +8,4 @@ support-files =
|
||||||
skip-if = !e10 # This is an e10s only probe.
|
skip-if = !e10 # This is an e10s only probe.
|
||||||
[browser_remote_navigation_delay_telemetry.js]
|
[browser_remote_navigation_delay_telemetry.js]
|
||||||
skip-if = !e10s # This is an e10s only probe.
|
skip-if = !e10s # This is an e10s only probe.
|
||||||
|
[browser_JSWindowActor.js]
|
|
@ -0,0 +1,43 @@
|
||||||
|
/* Any copyright is dedicated to the Public Domain.
|
||||||
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
const URL = "about:blank";
|
||||||
|
|
||||||
|
add_task(function test_registerWindowActor() {
|
||||||
|
let windowActorOptions = {
|
||||||
|
parent: {
|
||||||
|
moduleURI: "resource://testing-common/TestParent.jsm",
|
||||||
|
},
|
||||||
|
child: {
|
||||||
|
moduleURI: "resource://testing-common/TestChild.jsm",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
ok(ChromeUtils, "Should be able to get the ChromeUtils interface");
|
||||||
|
ChromeUtils.registerWindowActor("Test", windowActorOptions);
|
||||||
|
SimpleTest.doesThrow(() =>
|
||||||
|
ChromeUtils.registerWindowActor("Test", windowActorOptions),
|
||||||
|
"Should throw if register has duplicate name.");
|
||||||
|
});
|
||||||
|
|
||||||
|
add_task(async function() {
|
||||||
|
await BrowserTestUtils.withNewTab({gBrowser, url: URL},
|
||||||
|
async function(browser) {
|
||||||
|
let parent = browser.browsingContext.currentWindowGlobal;
|
||||||
|
isnot(parent, null, "WindowGlobalParent should have value.");
|
||||||
|
let actorParent = parent.getActor("Test");
|
||||||
|
is(actorParent.show(), "TestParent", "actor show should have vaule.");
|
||||||
|
is(actorParent.manager, parent, "manager should match WindowGlobalParent.");
|
||||||
|
|
||||||
|
await ContentTask.spawn(
|
||||||
|
browser, {}, async function() {
|
||||||
|
let child = content.window.getWindowGlobalChild();
|
||||||
|
isnot(child, null, "WindowGlobalChild should have value.");
|
||||||
|
is(child.isInProcess, false, "Actor should be loaded in the content process.");
|
||||||
|
let actorChild = child.getActor("Test");
|
||||||
|
is(actorChild.show(), "TestChild", "actor show should have vaule.");
|
||||||
|
is(actorChild.manager, child, "manager should match WindowGlobalChild.");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -5,3 +5,4 @@ support-files =
|
||||||
|
|
||||||
[test_process_error.xul]
|
[test_process_error.xul]
|
||||||
skip-if = !crashreporter
|
skip-if = !crashreporter
|
||||||
|
[test_JSWindowActor.xul]
|
|
@ -0,0 +1,42 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
|
||||||
|
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
|
||||||
|
type="text/css"?>
|
||||||
|
<window title="Test JSWindowActor"
|
||||||
|
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||||
|
<script type="application/javascript"
|
||||||
|
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
||||||
|
|
||||||
|
<!-- test results are displayed in the html:body -->
|
||||||
|
<body xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
</body>
|
||||||
|
|
||||||
|
<!-- test code goes here -->
|
||||||
|
<script type="application/javascript"><![CDATA[
|
||||||
|
let windowActorOptions = {
|
||||||
|
parent: {
|
||||||
|
moduleURI: "resource://testing-common/TestParent.jsm",
|
||||||
|
},
|
||||||
|
child: {
|
||||||
|
moduleURI: "resource://testing-common/TestChild.jsm",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
// Test in-process getActor function
|
||||||
|
ChromeUtils.registerWindowActor("Test", windowActorOptions);
|
||||||
|
let parent = this.window.docShell.browsingContext.currentWindowGlobal;
|
||||||
|
isnot(parent, null, "WindowGlobalParent should have value.");
|
||||||
|
let actorParent = parent.getActor("Test");
|
||||||
|
is(actorParent.show(), "TestParent", "actor show should have vaule.");
|
||||||
|
is(actorParent.manager, parent, "manager should match WindowGlobalParent.");
|
||||||
|
|
||||||
|
let child = this.window.getWindowGlobalChild();
|
||||||
|
is(child.isInProcess, true, "Actor should be in-process.");
|
||||||
|
let actorChild = child.getActor("Test");
|
||||||
|
is(actorChild.show(), "TestChild", "actor show should have vaule.");
|
||||||
|
is(actorChild.manager, child, "manager should match WindowGlobalChild.");
|
||||||
|
ok(parent.childActor===child, "Actor should be the same.");
|
||||||
|
ok(parent.childActor.getActor("Test")===child.getActor("Test"), "GetActor should be the same.");
|
||||||
|
|
||||||
|
]]></script>
|
||||||
|
</window>
|
|
@ -1,23 +0,0 @@
|
||||||
/* Any copyright is dedicated to the Public Domain.
|
|
||||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
add_task(function test_registerWindowActor() {
|
|
||||||
let windowActorOptions = {
|
|
||||||
parent: {
|
|
||||||
moduleURI: "resource:///actors/TestParent.jsm",
|
|
||||||
},
|
|
||||||
child: {
|
|
||||||
moduleURI: "resource:///actors/TestChild.jsm",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
Assert.ok(ChromeUtils, "Should be able to get the ChromeUtils interface");
|
|
||||||
ChromeUtils.registerWindowActor("Test", windowActorOptions);
|
|
||||||
Assert.ok(true);
|
|
||||||
Assert.throws(() =>
|
|
||||||
ChromeUtils.registerWindowActor("Test", windowActorOptions),
|
|
||||||
/NotSupportedError/,
|
|
||||||
"Should throw if register duplicate name.");
|
|
||||||
});
|
|
|
@ -1,2 +1 @@
|
||||||
[test_registerWindowActor.js]
|
|
||||||
[test_sharedMap.js]
|
[test_sharedMap.js]
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
/* vim: set ts=2 sw=2 sts=2 et tw=80: */
|
||||||
|
/* 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/. */
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var EXPORTED_SYMBOLS = ["TestChild"];
|
||||||
|
|
||||||
|
class TestChild extends JSWindowActorChild {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
show() {
|
||||||
|
return "TestChild";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
/* vim: set ts=2 sw=2 sts=2 et tw=80: */
|
||||||
|
/* 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/. */
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var EXPORTED_SYMBOLS = ["TestParent"];
|
||||||
|
|
||||||
|
class TestParent extends JSWindowActorParent {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
show() {
|
||||||
|
return "TestParent";
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,6 +10,11 @@ with Files('**'):
|
||||||
with Files('Finder*.jsm'):
|
with Files('Finder*.jsm'):
|
||||||
BUG_COMPONENT = ('Toolkit', 'Find Toolbar')
|
BUG_COMPONENT = ('Toolkit', 'Find Toolbar')
|
||||||
|
|
||||||
|
TESTING_JS_MODULES += [
|
||||||
|
'TestChild.jsm',
|
||||||
|
'TestParent.jsm',
|
||||||
|
]
|
||||||
|
|
||||||
FINAL_TARGET_FILES.actors += [
|
FINAL_TARGET_FILES.actors += [
|
||||||
'AudioPlaybackChild.jsm',
|
'AudioPlaybackChild.jsm',
|
||||||
'AutoplayChild.jsm',
|
'AutoplayChild.jsm',
|
||||||
|
|
|
@ -306,6 +306,8 @@ module.exports = {
|
||||||
"InstallTriggerImpl": false,
|
"InstallTriggerImpl": false,
|
||||||
"IntersectionObserver": false,
|
"IntersectionObserver": false,
|
||||||
"IntersectionObserverEntry": false,
|
"IntersectionObserverEntry": false,
|
||||||
|
"JSWindowActorChild": false,
|
||||||
|
"JSWindowActorParent": false,
|
||||||
"KeyEvent": false,
|
"KeyEvent": false,
|
||||||
"KeyboardEvent": false,
|
"KeyboardEvent": false,
|
||||||
"KeyframeEffect": false,
|
"KeyframeEffect": false,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче