Bug 1259335 - Part 2: Remove deprecated navigator.battery API and tests. r=baku

--HG--
extra : rebase_source : 82eeaa8964905627803acf250e434bf4036d2d1d
This commit is contained in:
Chris Peterson 2016-06-06 23:10:44 -07:00
parent 213e33cf3f
commit 41ab04a4e2
19 changed files with 12 additions and 627 deletions

View File

@ -200,7 +200,6 @@ Navigator::Init()
Navigator::Navigator(nsPIDOMWindowInner* aWindow)
: mWindow(aWindow)
, mBatteryTelemetryReported(false)
{
MOZ_ASSERT(aWindow->IsInnerWindow(), "Navigator must get an inner window!");
}
@ -304,7 +303,6 @@ Navigator::Invalidate()
}
mBatteryPromise = nullptr;
mBatteryTelemetryReported = false;
#ifdef MOZ_B2G_FM
if (mFMRadio) {
@ -1605,35 +1603,6 @@ Navigator::GetBattery(ErrorResult& aRv)
return mBatteryPromise;
}
battery::BatteryManager*
Navigator::GetDeprecatedBattery(ErrorResult& aRv)
{
if (!mBatteryManager) {
if (!mWindow) {
aRv.Throw(NS_ERROR_UNEXPECTED);
return nullptr;
}
NS_ENSURE_TRUE(mWindow->GetDocShell(), nullptr);
mBatteryManager = new battery::BatteryManager(mWindow);
mBatteryManager->Init();
}
nsIDocument* doc = mWindow->GetDoc();
if (doc) {
doc->WarnOnceAbout(nsIDocument::eNavigatorBattery);
}
// Is this the first time this page has accessed navigator.battery?
if (!mBatteryTelemetryReported) {
// sample value 0 = navigator.battery
Telemetry::Accumulate(Telemetry::BATTERY_STATUS_COUNT, 0);
mBatteryTelemetryReported = true;
}
return mBatteryManager;
}
already_AddRefed<Promise>
Navigator::PublishServer(const nsAString& aName,
const FlyWebPublishOptions& aOptions,

View File

@ -167,7 +167,6 @@ public:
// The XPCOM GetDoNotTrack is ok
Geolocation* GetGeolocation(ErrorResult& aRv);
Promise* GetBattery(ErrorResult& aRv);
battery::BatteryManager* GetDeprecatedBattery(ErrorResult& aRv);
already_AddRefed<Promise> PublishServer(const nsAString& aName,
const FlyWebPublishOptions& aOptions,
@ -403,8 +402,6 @@ private:
nsTArray<RefPtr<Promise> > mVRGetDevicesPromises;
nsTArray<uint32_t> mRequestedVibrationPattern;
bool mBatteryTelemetryReported;
};
} // namespace dom

View File

@ -46,5 +46,4 @@ DEPRECATED_OPERATION(RTCPeerConnectionGetStreams)
DEPRECATED_OPERATION(AppCache)
DEPRECATED_OPERATION(PrefixedFullscreenAPI)
DEPRECATED_OPERATION(LenientSetter)
DEPRECATED_OPERATION(NavigatorBattery)
DEPRECATED_OPERATION(FileLastModifiedDate)

View File

@ -7,9 +7,3 @@ run-if = buildapp == 'b2g'
[test_battery_status_full.js]
[test_battery_status_not_charging.js]
[test_battery_status_unknown.js]
[test_deprecated_battery_level.js]
[test_deprecated_battery_status_charging.js]
[test_deprecated_battery_status_discharging.js]
[test_deprecated_battery_status_full.js]
[test_deprecated_battery_status_not_charging.js]
[test_deprecated_battery_status_unknown.js]

View File

@ -1,9 +1,11 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
MARIONETTE_TIMEOUT = 10000;
var battery = window.navigator.battery;
var battery;
var fromStatus = "full";
var fromCharging = true;

View File

@ -1,9 +1,11 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
MARIONETTE_TIMEOUT = 10000;
var battery = window.navigator.battery;
var battery;
var fromStatus = "not-charging";
var fromCharging = false;

View File

@ -1,9 +1,11 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
MARIONETTE_TIMEOUT = 10000;
var battery = window.navigator.battery;
var battery;
var fromStatus = "unknown";
var fromCharging = false;

View File

@ -1,68 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 10000;
var battery = window.navigator.battery;
function verifyInitialState() {
ok(battery, "battery");
is(battery.level, 0.5, "battery.level");
runEmulatorCmd("power display", function (result) {
is(result.pop(), "OK", "power display successful");
ok(result.indexOf("capacity: 50") !== -1, "power capacity");
setUp();
});
}
function unexpectedEvent(event) {
ok(false, "Unexpected " + event.type + " event");
}
function setUp() {
battery.onchargingchange = unexpectedEvent;
battery.onlevelchange = unexpectedEvent;
levelUp();
}
function changeCapacity(capacity, changeExpected, nextFunction) {
log("Changing power capacity to " + capacity);
if (changeExpected) {
battery.onlevelchange = function (event) {
battery.onlevelchange = unexpectedEvent;
is(event.type, "levelchange", "event.type");
is(battery.level, capacity / 100, "battery.level");
nextFunction();
};
runEmulatorCmd("power capacity " + capacity);
}
else {
runEmulatorCmd("power capacity " + capacity, function () {
is(battery.level, capacity / 100, "battery.level");
nextFunction();
});
}
}
function levelUp() {
changeCapacity("90", true, levelDown);
}
function levelDown() {
changeCapacity("10", true, levelSame);
}
function levelSame() {
changeCapacity("10", false, cleanUp);
}
function cleanUp() {
battery.onchargingchange = null;
battery.onlevelchange = function () {
battery.onlevelchange = null;
finish();
};
runEmulatorCmd("power capacity 50");
}
verifyInitialState();

View File

@ -1,85 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 10000;
var battery = window.navigator.battery;
var fromStatus = "charging";
var fromCharging = true;
function verifyInitialState() {
ok(battery, "battery");
ok(battery.charging, "battery.charging");
runEmulatorCmd("power display", function (result) {
is(result.pop(), "OK", "power display successful");
ok(result.indexOf("status: Charging") !== -1, "power status charging");
setUp();
});
}
function unexpectedEvent(event) {
ok(false, "Unexpected " + event.type + " event");
}
function setUp() {
battery.onchargingchange = unexpectedEvent;
battery.onlevelchange = unexpectedEvent;
toDischarging();
}
function resetStatus(charging, nextFunction) {
log("Resetting power status to " + fromStatus);
if (charging !== fromCharging) {
battery.onchargingchange = function () {
battery.onchargingchange = unexpectedEvent;
nextFunction();
};
runEmulatorCmd("power status " + fromStatus);
}
else {
runEmulatorCmd("power status " + fromStatus, nextFunction);
}
}
function changeStatus(toStatus, toCharging, nextFunction) {
log("Changing power status to " + toStatus);
if (fromCharging !== toCharging) {
battery.onchargingchange = function (event) {
battery.onchargingchange = unexpectedEvent;
is(event.type, "chargingchange", "event type");
is(battery.charging, toCharging, "battery.charging");
resetStatus(toCharging, nextFunction);
};
runEmulatorCmd("power status " + toStatus);
}
else {
runEmulatorCmd("power status " + toStatus, function () {
is(battery.charging, toCharging, "battery.charging");
resetStatus(toCharging, nextFunction);
});
}
}
function toDischarging() {
changeStatus("discharging", false, toFull);
}
function toFull() {
changeStatus("full", true, toNotCharging);
}
function toNotCharging() {
changeStatus("not-charging", false, toUnknown);
}
function toUnknown() {
changeStatus("unknown", false, cleanUp);
}
function cleanUp() {
battery.onchargingchange = null;
battery.onlevelchange = null;
finish();
}
verifyInitialState();

View File

@ -1,93 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 10000;
var battery = window.navigator.battery;
var fromStatus = "discharging";
var fromCharging = false;
function verifyInitialState() {
ok(battery, "battery");
ok(battery.charging, "battery.charging");
runEmulatorCmd("power display", function (result) {
is(result.pop(), "OK", "power display successful");
ok(result.indexOf("status: Charging") !== -1, "power status charging");
setUp();
});
}
function unexpectedEvent(event) {
ok(false, "Unexpected " + event.type + " event");
}
function setUp() {
battery.onchargingchange = function () {
battery.onchargingchange = unexpectedEvent;
toCharging();
};
battery.onlevelchange = unexpectedEvent;
log("Changing power status to " + fromStatus);
runEmulatorCmd("power status " + fromStatus);
}
function resetStatus(charging, nextFunction) {
log("Resetting power status to " + fromStatus);
if (charging !== fromCharging) {
battery.onchargingchange = function () {
battery.onchargingchange = unexpectedEvent;
nextFunction();
};
runEmulatorCmd("power status " + fromStatus);
}
else {
runEmulatorCmd("power status " + fromStatus, nextFunction);
}
}
function changeStatus(toStatus, toCharging, nextFunction) {
log("Changing power status to " + toStatus);
if (fromCharging !== toCharging) {
battery.onchargingchange = function (event) {
battery.onchargingchange = unexpectedEvent;
is(event.type, "chargingchange", "event type");
is(battery.charging, toCharging, "battery.charging");
resetStatus(toCharging, nextFunction);
};
runEmulatorCmd("power status " + toStatus);
}
else {
runEmulatorCmd("power status " + toStatus, function () {
is(battery.charging, toCharging, "battery.charging");
resetStatus(toCharging, nextFunction);
});
}
}
function toCharging() {
changeStatus("charging", true, toFull);
}
function toFull() {
changeStatus("full", true, toNotCharging);
}
function toNotCharging() {
changeStatus("not-charging", false, toUnknown);
}
function toUnknown() {
changeStatus("unknown", false, cleanUp);
}
function cleanUp() {
battery.onchargingchange = function () {
battery.onchargingchange = null;
finish();
};
battery.onlevelchange = null;
log("Resetting power status to charging");
runEmulatorCmd("power status charging");
}
verifyInitialState();

View File

@ -1,87 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 10000;
var battery = window.navigator.battery;
var fromStatus = "full";
var fromCharging = true;
function verifyInitialState() {
ok(battery, "battery");
ok(battery.charging, "battery.charging");
runEmulatorCmd("power display", function (result) {
is(result.pop(), "OK", "power display successful");
ok(result.indexOf("status: Charging") !== -1, "power status charging");
setUp();
});
}
function unexpectedEvent(event) {
ok(false, "Unexpected " + event.type + " event");
}
function setUp() {
battery.onchargingchange = unexpectedEvent;
battery.onlevelchange = unexpectedEvent;
log("Changing power status to " + fromStatus);
runEmulatorCmd("power status " + fromStatus, toCharging);
}
function resetStatus(charging, nextFunction) {
log("Resetting power status to " + fromStatus);
if (charging !== fromCharging) {
battery.onchargingchange = function () {
battery.onchargingchange = unexpectedEvent;
nextFunction();
};
runEmulatorCmd("power status " + fromStatus);
}
else {
runEmulatorCmd("power status " + fromStatus, nextFunction);
}
}
function changeStatus(toStatus, toCharging, nextFunction) {
log("Changing power status to " + toStatus);
if (fromCharging !== toCharging) {
battery.onchargingchange = function (event) {
battery.onchargingchange = unexpectedEvent;
is(event.type, "chargingchange", "event type");
is(battery.charging, toCharging, "battery.charging");
resetStatus(toCharging, nextFunction);
};
runEmulatorCmd("power status " + toStatus);
}
else {
runEmulatorCmd("power status " + toStatus, function () {
is(battery.charging, toCharging, "battery.charging");
resetStatus(toCharging, nextFunction);
});
}
}
function toCharging() {
changeStatus("charging", true, toDischarging);
}
function toDischarging() {
changeStatus("discharging", false, toNotCharging);
}
function toNotCharging() {
changeStatus("not-charging", false, toUnknown);
}
function toUnknown() {
changeStatus("unknown", false, cleanUp);
}
function cleanUp() {
battery.onchargingchange = null;
battery.onlevelchange = null;
log("Resetting power status to charging");
runEmulatorCmd("power status charging", finish);
}
verifyInitialState();

View File

@ -1,93 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 10000;
var battery = window.navigator.battery;
var fromStatus = "not-charging";
var fromCharging = false;
function verifyInitialState() {
ok(battery, "battery");
ok(battery.charging, "battery.charging");
runEmulatorCmd("power display", function (result) {
is(result.pop(), "OK", "power display successful");
ok(result.indexOf("status: Charging") !== -1, "power status charging");
setUp();
});
}
function unexpectedEvent(event) {
ok(false, "Unexpected " + event.type + " event");
}
function setUp() {
battery.onchargingchange = function () {
battery.onchargingchange = unexpectedEvent;
toCharging();
};
battery.onlevelchange = unexpectedEvent;
log("Changing power status to " + fromStatus);
runEmulatorCmd("power status " + fromStatus);
}
function resetStatus(charging, nextFunction) {
log("Resetting power status to " + fromStatus);
if (charging !== fromCharging) {
battery.onchargingchange = function () {
battery.onchargingchange = unexpectedEvent;
nextFunction();
};
runEmulatorCmd("power status " + fromStatus);
}
else {
runEmulatorCmd("power status " + fromStatus, nextFunction);
}
}
function changeStatus(toStatus, toCharging, nextFunction) {
log("Changing power status to " + toStatus);
if (fromCharging !== toCharging) {
battery.onchargingchange = function (event) {
battery.onchargingchange = unexpectedEvent;
is(event.type, "chargingchange", "event type");
is(battery.charging, toCharging, "battery.charging");
resetStatus(toCharging, nextFunction);
};
runEmulatorCmd("power status " + toStatus);
}
else {
runEmulatorCmd("power status " + toStatus, function () {
is(battery.charging, toCharging, "battery.charging");
resetStatus(toCharging, nextFunction);
});
}
}
function toCharging() {
changeStatus("charging", true, toDischarging);
}
function toDischarging() {
changeStatus("discharging", false, toFull);
}
function toFull() {
changeStatus("full", true, toUnknown);
}
function toUnknown() {
changeStatus("unknown", false, cleanUp);
}
function cleanUp() {
battery.onchargingchange = function () {
battery.onchargingchange = null;
finish();
};
battery.onlevelchange = null;
log("Resetting power status to charging");
runEmulatorCmd("power status charging");
}
verifyInitialState();

View File

@ -1,93 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 10000;
var battery = window.navigator.battery;
var fromStatus = "unknown";
var fromCharging = false;
function verifyInitialState() {
ok(battery, "battery");
ok(battery.charging, "battery.charging");
runEmulatorCmd("power display", function (result) {
is(result.pop(), "OK", "power display successful");
ok(result.indexOf("status: Charging") !== -1, "power status charging");
setUp();
});
}
function unexpectedEvent(event) {
ok(false, "Unexpected " + event.type + " event");
}
function setUp() {
battery.onchargingchange = function () {
battery.onchargingchange = unexpectedEvent;
toCharging();
};
battery.onlevelchange = unexpectedEvent;
log("Changing power status to " + fromStatus);
runEmulatorCmd("power status " + fromStatus);
}
function resetStatus(charging, nextFunction) {
log("Resetting power status to " + fromStatus);
if (charging !== fromCharging) {
battery.onchargingchange = function () {
battery.onchargingchange = unexpectedEvent;
nextFunction();
};
runEmulatorCmd("power status " + fromStatus);
}
else {
runEmulatorCmd("power status " + fromStatus, nextFunction);
}
}
function changeStatus(toStatus, toCharging, nextFunction) {
log("Changing power status to " + toStatus);
if (fromCharging !== toCharging) {
battery.onchargingchange = function (event) {
battery.onchargingchange = unexpectedEvent;
is(event.type, "chargingchange", "event type");
is(battery.charging, toCharging, "battery.charging");
resetStatus(toCharging, nextFunction);
};
runEmulatorCmd("power status " + toStatus);
}
else {
runEmulatorCmd("power status " + toStatus, function () {
is(battery.charging, toCharging, "battery.charging");
resetStatus(toCharging, nextFunction);
});
}
}
function toCharging() {
changeStatus("charging", true, toDischarging);
}
function toDischarging() {
changeStatus("discharging", false, toFull);
}
function toFull() {
changeStatus("full", true, toNotCharging);
}
function toNotCharging() {
changeStatus("not-charging", false, cleanUp);
}
function cleanUp() {
battery.onchargingchange = function () {
battery.onchargingchange = null;
finish();
};
battery.onlevelchange = null;
log("Resetting power status to charging");
runEmulatorCmd("power status charging");
}
verifyInitialState();

View File

@ -4,5 +4,3 @@ skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug))
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug))
[test_battery_discharging.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug))
[test_deprecated_battery_basics.html]
skip-if = (buildapp == 'b2g' && (toolkit != 'gonk' || debug))

View File

@ -12,10 +12,13 @@
<pre id="test">
<script type="application/javascript">
"use strict";
SimpleTest.waitForExplicitFinish();
/** Test for Battery API **/
ok("getBattery" in navigator, "navigator.getBattery should exist");
ok(!("battery" in navigator), "navigator.battery should not exist");
navigator.getBattery().then(function (battery) {
ok(battery.level >= 0.0 && battery.level <= 1.0, "Battery level " + battery.level + " should be in the range [0.0, 1.0]");

View File

@ -1,32 +0,0 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Test for Battery API</title>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script type="application/javascript">
/** Test for Battery API **/
ok("battery" in navigator, "navigator.battery should exist");
var battery = navigator.battery;
ok(battery.level >= 0.0 && battery.level <= 1.0, "Battery level " + battery.level + " should be in the range [0.0, 1.0]");
if (battery.charging) {
ok(battery.chargingTime >= 0, "Battery chargingTime " + battery.chargingTime + " should be nonnegative when charging");
is(battery.dischargingTime, Infinity, "Battery dischargingTime should be Infinity when charging");
} else {
is(battery.chargingTime, Infinity, "Battery chargingTime should be Infinity when discharging");
ok(battery.dischargingTime > 0, "Battery dischargingTime " + battery.dischargingTime + " should be positive when discharging");
}
</script>
</pre>
</body>
</html>

View File

@ -228,5 +228,4 @@ RewriteYoutubeEmbedInvalidQuery=Rewriting old-style Youtube Flash embed (%S) to
PushMessageDecryptionFailure=The ServiceWorker for scope %1$S encountered an error decrypting a push message: %2$S. For help with encryption, please see https://developer.mozilla.org/en-US/docs/Web/API/Push_API/Using_the_Push_API#Encryption
# LOCALIZATION NOTE: %1$S is the type of a DOM event. 'passive' is a literal parameter from the DOM spec.
PreventDefaultFromPassiveListenerWarning=Ignoring preventDefault() call on event of type %1$S from a listener registered as passive.
NavigatorBatteryWarning=navigator.battery is deprecated. Use navigator.getBattery() instead.
FileLastModifiedDateWarning=File.lastModifiedDate is deprecated. Use File.lastModified instead.

View File

@ -132,11 +132,6 @@ Navigator implements NavigatorGeolocation;
partial interface Navigator {
[Throws, Pref="dom.battery.enabled"]
Promise<BatteryManager> getBattery();
// Deprecated. Use getBattery() instead.
// XXXbz Per spec this should be non-nullable, but we return null in
// torn-down windows. See bug 884925.
[Throws, Pref="dom.battery.enabled", BinaryName="deprecatedBattery"]
readonly attribute BatteryManager? battery;
};
partial interface Navigator {

View File

@ -10,30 +10,6 @@ function test() {
is(imported.Debugging.fake, false, "Battery spoofing is initially false")
// begin deprecated battery API testing
for (let k of ["charging", "chargingTime", "dischargingTime", "level"]) {
Assert.throws(() => Battery[k] = 10, "Setting battery " + k + "preference without spoofing enabled should throw");
ok(Battery[k] == Services.appShell.hiddenDOMWindow.navigator.battery[k], "Battery "+ k + " is correctly set");
}
imported.Debugging.fake = true;
Battery.charging = true;
Battery.chargingTime = 100;
Battery.level = 0.5;
ok(Battery.charging, "Test for charging setter");
is(Battery.chargingTime, 100, "Test for chargingTime setter");
is(Battery.level, 0.5, "Test for level setter");
Battery.charging = false;
Battery.dischargingTime = 50;
Battery.level = 0.7;
ok(!Battery.charging, "Test for charging setter");
is(Battery.dischargingTime, 50, "Test for dischargingTime setter");
is(Battery.level, 0.7, "Test for level setter");
imported.Debugging.fake = false;
// end deprecated battery API testing
GetBattery().then(function (battery) {
for (let k of ["charging", "chargingTime", "dischargingTime", "level"]) {
let backup = battery[k];