mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-12 00:50:40 +00:00
Bug 950317 - enable WebRTC mochitest on b2g emulator. r=jesup,vicamo,jsmith.
This commit is contained in:
parent
48718fac6b
commit
f4f7d87557
65
dom/media/tests/mochitest/NetworkPreparationChromeScript.js
Normal file
65
dom/media/tests/mochitest/NetworkPreparationChromeScript.js
Normal file
@ -0,0 +1,65 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
const { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components;
|
||||
const { Services } = Cu.import('resource://gre/modules/Services.jsm');
|
||||
|
||||
var browser = Services.wm.getMostRecentWindow('navigator:browser');
|
||||
var connection = browser.navigator.mozMobileConnections[0];
|
||||
|
||||
// provide a fake APN and enable data connection.
|
||||
function enableDataConnection() {
|
||||
let setLock = browser.navigator.mozSettings.createLock();
|
||||
setLock.set({
|
||||
'ril.data.enabled': true,
|
||||
'ril.data.apnSettings': [
|
||||
[
|
||||
{'carrier':'T-Mobile US',
|
||||
'apn':'epc.tmobile.com',
|
||||
'mmsc':'http://mms.msg.eng.t-mobile.com/mms/wapenc',
|
||||
'types':['default','supl','mms']}
|
||||
]
|
||||
]
|
||||
});
|
||||
}
|
||||
|
||||
// enable 3G radio
|
||||
function enableRadio() {
|
||||
if (connection.radioState !== 'enabled') {
|
||||
connection.setRadioEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
// disable 3G radio
|
||||
function disableRadio() {
|
||||
if (connection.radioState === 'enabled') {
|
||||
connection.setRadioEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
addMessageListener('prepare-network', function(message) {
|
||||
//RIL DOM events will be pending until RIL receiveing system-message-listener-ready event.
|
||||
Services.obs.notifyObservers(null, 'system-message-listener-ready', null);
|
||||
|
||||
connection.addEventListener('datachange', function onDataChange() {
|
||||
if (connection.data.connected) {
|
||||
connection.removeEventListener('datachange', onDataChange);
|
||||
Services.prefs.setIntPref('network.proxy.type', 2);
|
||||
sendAsyncMessage('network-ready', true);
|
||||
}
|
||||
});
|
||||
|
||||
enableRadio();
|
||||
enableDataConnection();
|
||||
});
|
||||
|
||||
addMessageListener('network-cleanup', function(message) {
|
||||
connection.addEventListener('datachange', function onDataChange() {
|
||||
if (!connection.data.connected) {
|
||||
connection.removeEventListener('datachange', onDataChange);
|
||||
Services.prefs.setIntPref('network.proxy.type', 2);
|
||||
sendAsyncMessage('network-disabled', true);
|
||||
}
|
||||
});
|
||||
disableRadio();
|
||||
});
|
@ -4,6 +4,7 @@ support-files =
|
||||
mediaStreamPlayback.js
|
||||
pc.js
|
||||
templates.js
|
||||
NetworkPreparationChromeScript.js
|
||||
|
||||
[test_dataChannel_basicAudio.html]
|
||||
[test_dataChannel_basicAudioVideo.html]
|
||||
@ -52,3 +53,5 @@ skip-if = os == 'mac'
|
||||
[test_peerConnection_setRemoteOfferInHaveLocalOffer.html]
|
||||
[test_peerConnection_throwInCallbacks.html]
|
||||
[test_peerConnection_toJSON.html]
|
||||
# Bug950317: Hack for making a cleanup hook after finishing all WebRTC cases
|
||||
[test_zmedia_cleanup.html]
|
||||
|
@ -323,6 +323,75 @@ MediaElementChecker.prototype = {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Query function for determining if any IP address is available for
|
||||
* generating SDP.
|
||||
*
|
||||
* @return false if required additional network setup.
|
||||
*/
|
||||
function isNetworkReady() {
|
||||
// for gonk platform
|
||||
if ("nsINetworkInterfaceListService" in SpecialPowers.Ci) {
|
||||
var listService = SpecialPowers.Cc["@mozilla.org/network/interface-list-service;1"]
|
||||
.getService(SpecialPowers.Ci.nsINetworkInterfaceListService);
|
||||
var itfList = listService.getDataInterfaceList(
|
||||
SpecialPowers.Ci.nsINetworkInterfaceListService.LIST_NOT_INCLUDE_MMS_INTERFACES |
|
||||
SpecialPowers.Ci.nsINetworkInterfaceListService.LIST_NOT_INCLUDE_SUPL_INTERFACES);
|
||||
var num = itfList.getNumberOfInterface();
|
||||
for (var i = 0; i < num; i++) {
|
||||
if (itfList.getInterface(i).ip) {
|
||||
info("Network interface is ready with address: " + itfList.getInterface(i).ip);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
// ip address is not available
|
||||
info("Network interface is not ready, required additional network setup");
|
||||
return false;
|
||||
}
|
||||
info("Network setup is not required");
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Network setup utils for Gonk
|
||||
*
|
||||
* @return {object} providing functions for setup/teardown data connection
|
||||
*/
|
||||
function getNetworkUtils() {
|
||||
var url = SimpleTest.getTestFileURL("NetworkPreparationChromeScript.js");
|
||||
var script = SpecialPowers.loadChromeScript(url);
|
||||
|
||||
var utils = {
|
||||
/**
|
||||
* Utility for setting up data connection.
|
||||
*
|
||||
* @param aCallback callback after data connection is ready.
|
||||
*/
|
||||
prepareNetwork: function(aCallback) {
|
||||
script.addMessageListener('network-ready', function (message) {
|
||||
info("Network interface is ready");
|
||||
aCallback();
|
||||
});
|
||||
info("Setup network interface");
|
||||
script.sendAsyncMessage("prepare-network", true);
|
||||
},
|
||||
/**
|
||||
* Utility for tearing down data connection.
|
||||
*
|
||||
* @param aCallback callback after data connection is closed.
|
||||
*/
|
||||
tearDownNetwork: function(aCallback) {
|
||||
script.addMessageListener('network-disabled', function (message) {
|
||||
ok(true, 'network-disabled');
|
||||
script.destroy();
|
||||
aCallback();
|
||||
});
|
||||
script.sendAsyncMessage("network-cleanup", true);
|
||||
}
|
||||
};
|
||||
|
||||
return utils;
|
||||
}
|
||||
|
||||
/**
|
||||
* This class handles tests for peer connections.
|
||||
@ -349,6 +418,27 @@ function PeerConnectionTest(options) {
|
||||
options.is_local = "is_local" in options ? options.is_local : true;
|
||||
options.is_remote = "is_remote" in options ? options.is_remote : true;
|
||||
|
||||
var netTeardownCommand = null;
|
||||
if (!isNetworkReady()) {
|
||||
var utils = getNetworkUtils();
|
||||
// Trigger network setup to obtain IP address before creating any PeerConnection.
|
||||
utils.prepareNetwork(function() {
|
||||
ok(isNetworkReady(),'setup network connection successfully');
|
||||
});
|
||||
|
||||
netTeardownCommand = [
|
||||
[
|
||||
'TEARDOWN_NETWORK',
|
||||
function(test) {
|
||||
utils.tearDownNetwork(function() {
|
||||
info('teardown network connection');
|
||||
test.next();
|
||||
});
|
||||
}
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
if (options.is_local)
|
||||
this.pcLocal = new PeerConnectionWrapper('pcLocal', options.config_pc1);
|
||||
else
|
||||
@ -370,6 +460,11 @@ function PeerConnectionTest(options) {
|
||||
this.chain.filterOut(/^PC_REMOTE/);
|
||||
}
|
||||
|
||||
// Insert network teardown after testcase execution.
|
||||
if (netTeardownCommand) {
|
||||
this.chain.append(netTeardownCommand);
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.chain.onFinished = function () {
|
||||
self.teardown();
|
||||
|
29
dom/media/tests/mochitest/test_zmedia_cleanup.html
Normal file
29
dom/media/tests/mochitest/test_zmedia_cleanup.html
Normal file
@ -0,0 +1,29 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="test">
|
||||
<script type="application/javascript">
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
if ("nsINetworkInterfaceListService" in SpecialPowers.Ci) {
|
||||
var url = SimpleTest.getTestFileURL("NetworkPreparationChromeScript.js");
|
||||
var script = SpecialPowers.loadChromeScript(url);
|
||||
script.addMessageListener('network-disabled', function (message) {
|
||||
ok(true, 'network-disabled');
|
||||
script.destroy();
|
||||
SimpleTest.finish();
|
||||
});
|
||||
script.sendAsyncMessage("network-cleanup", true);
|
||||
} else {
|
||||
ok(true, 'no need to cleanup network interface');
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
@ -301,33 +301,19 @@
|
||||
|
||||
"dom/imptests/editing/conformancetest/test_runtest.html":"takes too long",
|
||||
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicAudio.html":"bug 908473",
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicAudioVideo.html":"",
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicAudioVideoCombined.html":"",
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicDataOnly.html":"",
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicVideo.html":"",
|
||||
"dom/media/tests/mochitest/test_dataChannel_noOffer.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_addCandidateInHaveLocalOffer.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_basicAudio.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_basicAudioVideo.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_basicAudioVideoCombined.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_basicVideo.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_bug822674.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_bug825703.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_bug827843.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_bug834153.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_bug835370.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_errorCallbacks.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveAudio.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideo.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideoAudio.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_setLocalAnswerInHaveLocalOffer.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_setLocalAnswerInStable.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_setLocalOfferInHaveRemoteOffer.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_setRemoteAnswerInHaveRemoteOffer.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_setRemoteAnswerInStable.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_setRemoteOfferInHaveLocalOffer.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_throwInCallbacks.html":"",
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicAudio.html":"Bug 962984, test fail on b2g debug build",
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicAudioVideo.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicAudioVideoCombined.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicVideo.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_peerConnection_basicAudioVideo.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_peerConnection_basicAudioVideoCombined.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_peerConnection_basicVideo.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_peerConnection_bug827843.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveAudio.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideo.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideoAudio.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_peerConnection_throwInCallbacks.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/ipc/test_ipc.html":"nested ipc not working",
|
||||
|
||||
"dom/network/tests/test_networkstats_basics.html":"Will be fixed in bug 858005",
|
||||
"dom/permission/tests/test_permission_basics.html":"https not working, bug 907770",
|
||||
|
@ -288,33 +288,17 @@
|
||||
|
||||
"dom/imptests/editing/conformancetest/test_runtest.html":"takes too long",
|
||||
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicAudio.html":"bug 908473",
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicAudioVideo.html":"",
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicAudioVideoCombined.html":"",
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicDataOnly.html":"",
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicVideo.html":"",
|
||||
"dom/media/tests/mochitest/test_dataChannel_noOffer.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_addCandidateInHaveLocalOffer.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_basicAudio.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_basicAudioVideo.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_basicAudioVideoCombined.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_basicVideo.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_bug822674.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_bug825703.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_bug827843.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_bug834153.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_bug835370.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_errorCallbacks.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveAudio.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideo.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideoAudio.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_setLocalAnswerInHaveLocalOffer.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_setLocalAnswerInStable.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_setLocalOfferInHaveRemoteOffer.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_setRemoteAnswerInHaveRemoteOffer.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_setRemoteAnswerInStable.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_setRemoteOfferInHaveLocalOffer.html":"",
|
||||
"dom/media/tests/mochitest/test_peerConnection_throwInCallbacks.html":"",
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicAudioVideo.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicAudioVideoCombined.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_dataChannel_basicVideo.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_peerConnection_basicAudioVideo.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_peerConnection_basicAudioVideoCombined.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_peerConnection_basicVideo.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_peerConnection_bug827843.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveAudio.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideo.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideoAudio.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/mochitest/test_peerConnection_throwInCallbacks.html":"Bug 960442, video support for WebRTC is disabled on b2g",
|
||||
"dom/media/tests/ipc/test_ipc.html":"nested ipc not working",
|
||||
|
||||
"dom/permission/tests/test_permission_basics.html":"https not working, bug 907770",
|
||||
|
Loading…
Reference in New Issue
Block a user