1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/**
* Tests that params view correctly displays all properties for nodes
* correctly, with default values and correct types.
*/
var MEDIA_PERMISSION = "media.navigator.permission.disabled";
function waitForDeviceClosed() {
info("Checking that getUserMedia streams are no longer in use.");
let temp = {};
Cu.import("resource:///modules/webrtcUI.jsm", temp);
let webrtcUI = temp.webrtcUI;
if (!webrtcUI.showGlobalIndicator)
return Promise.resolve();
let deferred = Promise.defer();
const message = "webrtc:UpdateGlobalIndicators";
let ppmm = Cc["@mozilla.org/parentprocessmessagemanager;1"]
.getService(Ci.nsIMessageBroadcaster);
ppmm.addMessageListener(message, function listener(aMessage) {
info("Received " + message + " message");
if (!aMessage.data.showGlobalIndicator) {
ppmm.removeMessageListener(message, listener);
deferred.resolve();
}
});
return deferred.promise;
}
add_task(function* () {
let { target, panel } = yield initWebAudioEditor(MEDIA_NODES_URL);
let { panelWin } = panel;
let { gFront, $, $$, EVENTS, PropertiesView } = panelWin;
let gVars = PropertiesView._propsView;
// Auto enable getUserMedia
let mediaPermissionPref = Services.prefs.getBoolPref(MEDIA_PERMISSION);
Services.prefs.setBoolPref(MEDIA_PERMISSION, true);
yield loadFrameScripts();
let events = Promise.all([
getN(gFront, "create-node", 4),
waitForGraphRendered(panelWin, 4, 0)
]);
reload(target);
let [actors] = yield events;
let nodeIds = actors.map(actor => actor.actorID);
let types = [
"AudioDestinationNode", "MediaElementAudioSourceNode",
"MediaStreamAudioSourceNode", "MediaStreamAudioDestinationNode"
];
let defaults = yield Promise.all(types.map(type => nodeDefaultValues(type)));
for (let i = 0; i < types.length; i++) {
click(panelWin, findGraphNode(panelWin, nodeIds[i]));
yield waitForInspectorRender(panelWin, EVENTS);
checkVariableView(gVars, 0, defaults[i], types[i]);
}
// Reset permissions on getUserMedia
Services.prefs.setBoolPref(MEDIA_PERMISSION, mediaPermissionPref);
yield teardown(target);
yield waitForDeviceClosed();
});
|