gecko/dom/bluetooth2/tests/marionette/test_dom_BluetoothAdapter_enable_API2.js

77 lines
3.0 KiB
JavaScript

/* 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/. */
///////////////////////////////////////////////////////////////////////////////
// Test Purpose:
// To verify that enable/disable process of BluetoothAdapter is correct.
//
// Test Procedure:
// [0] Set Bluetooth permission and enable default adapter.
// [1] Disable Bluetooth and check the correctness of 'onattributechanged'.
// [2] Enable Bluetooth and check the correctness of 'onattributechanged'.
//
// Test Coverage:
// - BluetoothAdapter.enable()
// - BluetoothAdapter.disable()
// - BluetoothAdapter.onattributechanged()
// - BluetoothAdapter.address
// - BluetoothAdapter.state
//
///////////////////////////////////////////////////////////////////////////////
MARIONETTE_TIMEOUT = 60000;
MARIONETTE_HEAD_JS = 'head.js';
startBluetoothTest(true, function testCaseMain(aAdapter) {
log("Checking adapter attributes ...");
is(aAdapter.state, "enabled", "adapter.state");
isnot(aAdapter.address, "", "adapter.address");
// Since adapter has just been re-enabled, these properties should be 'false'.
is(aAdapter.discovering, false, "adapter.discovering");
is(aAdapter.discoverable, false, "adapter.discoverable");
// TODO: Check the correctness of name and address if we use emulator.
// is(aAdapter.name, EMULATOR_NAME, "adapter.name");
// is(aAdapter.address, EMULATOR_ADDRESS, "adapter.address");
log(" adapter.address: " + aAdapter.address);
log(" adapter.name: " + aAdapter.name);
let originalAddr = aAdapter.address;
let originalName = aAdapter.name;
return Promise.resolve()
.then(function() {
log("[1] Disable Bluetooth and check the correctness of 'onattributechanged'");
let promises = [];
promises.push(waitForAdapterStateChanged(aAdapter, ["disabling", "disabled"]));
promises.push(aAdapter.disable());
return Promise.all(promises);
})
.then(function(aResults) {
isnot(aResults[0].indexOf("address"), -1, "Indicator of 'address' changed event");
if (originalName != "") {
isnot(aResults[0].indexOf("name"), -1, "Indicator of 'name' changed event");
}
is(aAdapter.address, "", "adapter.address");
is(aAdapter.name, "", "adapter.name");
})
.then(function() {
log("[2] Enable Bluetooth and check the correctness of 'onattributechanged'");
let promises = [];
promises.push(waitForAdapterStateChanged(aAdapter, ["enabling", "enabled"]));
promises.push(aAdapter.enable());
return Promise.all(promises);
})
.then(function(aResults) {
isnot(aResults[0].indexOf("address"), -1, "Indicator of 'address' changed event");
if (originalName != "") {
isnot(aResults[0].indexOf("name"), -1, "Indicator of 'name' changed event");
}
is(aAdapter.address, originalAddr, "adapter.address");
is(aAdapter.name, originalName, "adapter.name");
})
});