diff options
Diffstat (limited to 'dom/battery')
-rw-r--r-- | dom/battery/BatteryManager.cpp | 212 | ||||
-rw-r--r-- | dom/battery/BatteryManager.h | 84 | ||||
-rw-r--r-- | dom/battery/Constants.h | 27 | ||||
-rw-r--r-- | dom/battery/Types.h | 23 | ||||
-rw-r--r-- | dom/battery/moz.build | 21 | ||||
-rw-r--r-- | dom/battery/test/chrome.ini | 3 | ||||
-rw-r--r-- | dom/battery/test/mochitest.ini | 1 | ||||
-rw-r--r-- | dom/battery/test/test_battery_basics.html | 39 | ||||
-rw-r--r-- | dom/battery/test/test_battery_charging.html | 35 | ||||
-rw-r--r-- | dom/battery/test/test_battery_discharging.html | 35 | ||||
-rw-r--r-- | dom/battery/test/test_battery_unprivileged.html | 24 |
11 files changed, 0 insertions, 504 deletions
diff --git a/dom/battery/BatteryManager.cpp b/dom/battery/BatteryManager.cpp deleted file mode 100644 index 271fa373d..000000000 --- a/dom/battery/BatteryManager.cpp +++ /dev/null @@ -1,212 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 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/. */ - -#include <cmath> -#include <limits> -#include "BatteryManager.h" -#include "Constants.h" -#include "mozilla/DOMEventTargetHelper.h" -#include "mozilla/Hal.h" -#include "mozilla/dom/BatteryManagerBinding.h" -#include "mozilla/Preferences.h" -#include "nsContentUtils.h" -#include "nsIDOMClassInfo.h" -#include "nsIDocument.h" - -/** - * We have to use macros here because our leak analysis tool things we are - * leaking strings when we have |static const nsString|. Sad :( - */ -#define LEVELCHANGE_EVENT_NAME NS_LITERAL_STRING("levelchange") -#define CHARGINGCHANGE_EVENT_NAME NS_LITERAL_STRING("chargingchange") -#define DISCHARGINGTIMECHANGE_EVENT_NAME NS_LITERAL_STRING("dischargingtimechange") -#define CHARGINGTIMECHANGE_EVENT_NAME NS_LITERAL_STRING("chargingtimechange") - -namespace mozilla { -namespace dom { -namespace battery { - -BatteryManager::BatteryManager(nsPIDOMWindowInner* aWindow) - : DOMEventTargetHelper(aWindow) - , mLevel(kDefaultLevel) - , mCharging(kDefaultCharging) - , mRemainingTime(kDefaultRemainingTime) -{ -} - -void -BatteryManager::Init() -{ - hal::RegisterBatteryObserver(this); - - hal::BatteryInformation batteryInfo; - hal::GetCurrentBatteryInformation(&batteryInfo); - - UpdateFromBatteryInfo(batteryInfo); -} - -void -BatteryManager::Shutdown() -{ - hal::UnregisterBatteryObserver(this); -} - -JSObject* -BatteryManager::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) -{ - return BatteryManagerBinding::Wrap(aCx, this, aGivenProto); -} - -bool -BatteryManager::Charging() const -{ - MOZ_ASSERT(NS_IsMainThread()); - // For testing, unable to report the battery status information - if (Preferences::GetBool("dom.battery.test.default", false)) { - return true; - } - if (Preferences::GetBool("dom.battery.test.charging", false)) { - return true; - } - if (Preferences::GetBool("dom.battery.test.discharging", false)) { - return false; - } - - return mCharging; -} - -double -BatteryManager::DischargingTime() const -{ - MOZ_ASSERT(NS_IsMainThread()); - // For testing, unable to report the battery status information - if (Preferences::GetBool("dom.battery.test.default", false)) { - return std::numeric_limits<double>::infinity(); - } - if (Preferences::GetBool("dom.battery.test.discharging", false)) { - return 42.0; - } - - if (Charging() || mRemainingTime == kUnknownRemainingTime) { - return std::numeric_limits<double>::infinity(); - } - - return mRemainingTime; -} - -double -BatteryManager::ChargingTime() const -{ - MOZ_ASSERT(NS_IsMainThread()); - // For testing, unable to report the battery status information - if (Preferences::GetBool("dom.battery.test.default", false)) { - return 0.0; - } - if (Preferences::GetBool("dom.battery.test.charging", false)) { - return 42.0; - } - - if (!Charging() || mRemainingTime == kUnknownRemainingTime) { - return std::numeric_limits<double>::infinity(); - } - - return mRemainingTime; -} - -double -BatteryManager::Level() const -{ - MOZ_ASSERT(NS_IsMainThread()); - // For testing, unable to report the battery status information - if (Preferences::GetBool("dom.battery.test.default")) { - return 1.0; - } - - return mLevel; -} - -void -BatteryManager::UpdateFromBatteryInfo(const hal::BatteryInformation& aBatteryInfo) -{ - mLevel = aBatteryInfo.level(); - - // Round to the nearest ten percent for non-chrome and non-certified apps - nsIDocument* doc = GetOwner() ? GetOwner()->GetDoc() : nullptr; - uint16_t status = nsIPrincipal::APP_STATUS_NOT_INSTALLED; - if (doc) { - status = doc->NodePrincipal()->GetAppStatus(); - } - - mCharging = aBatteryInfo.charging(); - mRemainingTime = aBatteryInfo.remainingTime(); - - if (!nsContentUtils::IsChromeDoc(doc) && - status != nsIPrincipal::APP_STATUS_CERTIFIED) - { - mLevel = lround(mLevel * 10.0) / 10.0; - if (mLevel == 1.0) { - mRemainingTime = mCharging ? kDefaultRemainingTime : kUnknownRemainingTime; - } else if (mRemainingTime != kUnknownRemainingTime) { - // Round the remaining time to a multiple of 15 minutes and never zero - const double MINUTES_15 = 15.0 * 60.0; - mRemainingTime = fmax(lround(mRemainingTime / MINUTES_15) * MINUTES_15, - MINUTES_15); - } - } - - // Add some guards to make sure the values are coherent. - if (mLevel == 1.0 && mCharging == true && - mRemainingTime != kDefaultRemainingTime) { - mRemainingTime = kDefaultRemainingTime; - NS_ERROR("Battery API: When charging and level at 1.0, remaining time " - "should be 0. Please fix your backend!"); - } -} - -void -BatteryManager::Notify(const hal::BatteryInformation& aBatteryInfo) -{ - double previousLevel = mLevel; - bool previousCharging = mCharging; - double previousRemainingTime = mRemainingTime; - - UpdateFromBatteryInfo(aBatteryInfo); - - if (previousCharging != mCharging) { - DispatchTrustedEvent(CHARGINGCHANGE_EVENT_NAME); - } - - if (previousLevel != mLevel) { - DispatchTrustedEvent(LEVELCHANGE_EVENT_NAME); - } - - /* - * There are a few situations that could happen here: - * 1. Charging state changed: - * a. Previous remaining time wasn't unkwonw, we have to fire an event for - * the change. - * b. New remaining time isn't unkwonw, we have to fire an event for it. - * 2. Charging state didn't change but remainingTime did, we have to fire - * the event that correspond to the current charging state. - */ - if (mCharging != previousCharging) { - if (previousRemainingTime != kUnknownRemainingTime) { - DispatchTrustedEvent(previousCharging ? CHARGINGTIMECHANGE_EVENT_NAME - : DISCHARGINGTIMECHANGE_EVENT_NAME); - } - if (mRemainingTime != kUnknownRemainingTime) { - DispatchTrustedEvent(mCharging ? CHARGINGTIMECHANGE_EVENT_NAME - : DISCHARGINGTIMECHANGE_EVENT_NAME); - } - } else if (previousRemainingTime != mRemainingTime) { - DispatchTrustedEvent(mCharging ? CHARGINGTIMECHANGE_EVENT_NAME - : DISCHARGINGTIMECHANGE_EVENT_NAME); - } -} - -} // namespace battery -} // namespace dom -} // namespace mozilla diff --git a/dom/battery/BatteryManager.h b/dom/battery/BatteryManager.h deleted file mode 100644 index 4094c40d4..000000000 --- a/dom/battery/BatteryManager.h +++ /dev/null @@ -1,84 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 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/. */ - -#ifndef mozilla_dom_battery_BatteryManager_h -#define mozilla_dom_battery_BatteryManager_h - -#include "Types.h" -#include "mozilla/DOMEventTargetHelper.h" -#include "mozilla/Observer.h" -#include "nsCycleCollectionParticipant.h" - -namespace mozilla { - -namespace hal { -class BatteryInformation; -} // namespace hal - -namespace dom { -namespace battery { - -class BatteryManager : public DOMEventTargetHelper - , public BatteryObserver -{ -public: - explicit BatteryManager(nsPIDOMWindowInner* aWindow); - - void Init(); - void Shutdown(); - - // For IObserver. - void Notify(const hal::BatteryInformation& aBatteryInfo) override; - - /** - * WebIDL Interface - */ - - nsPIDOMWindowInner* GetParentObject() const - { - return GetOwner(); - } - - virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override; - - bool Charging() const; - - double ChargingTime() const; - - double DischargingTime() const; - - double Level() const; - - IMPL_EVENT_HANDLER(chargingchange) - IMPL_EVENT_HANDLER(chargingtimechange) - IMPL_EVENT_HANDLER(dischargingtimechange) - IMPL_EVENT_HANDLER(levelchange) - -private: - /** - * Update the battery information stored in the battery manager object using - * a battery information object. - */ - void UpdateFromBatteryInfo(const hal::BatteryInformation& aBatteryInfo); - - /** - * Represents the battery level, ranging from 0.0 (dead or removed?) - * to 1.0 (fully charged) - */ - double mLevel; - bool mCharging; - /** - * Represents the discharging time or the charging time, depending on the - * current battery status (charging or not). - */ - double mRemainingTime; -}; - -} // namespace battery -} // namespace dom -} // namespace mozilla - -#endif // mozilla_dom_battery_BatteryManager_h diff --git a/dom/battery/Constants.h b/dom/battery/Constants.h deleted file mode 100644 index f642e2a46..000000000 --- a/dom/battery/Constants.h +++ /dev/null @@ -1,27 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 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/. */ - -#ifndef mozilla_dom_battery_Constants_h__ -#define mozilla_dom_battery_Constants_h__ - -/** - * A set of constants that might need to be used by battery backends. - * It's not part of BatteryManager.h to prevent those backends to include it. - */ -namespace mozilla { -namespace dom { -namespace battery { - - static const double kDefaultLevel = 1.0; - static const bool kDefaultCharging = true; - static const double kDefaultRemainingTime = 0; - static const double kUnknownRemainingTime = -1; - -} // namespace battery -} // namespace dom -} // namespace mozilla - -#endif // mozilla_dom_battery_Constants_h__ diff --git a/dom/battery/Types.h b/dom/battery/Types.h deleted file mode 100644 index ee55a26d3..000000000 --- a/dom/battery/Types.h +++ /dev/null @@ -1,23 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 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/. */ - -#ifndef mozilla_dom_battery_Types_h -#define mozilla_dom_battery_Types_h - -namespace mozilla { -namespace hal { -class BatteryInformation; -} // namespace hal - -template <class T> -class Observer; - -typedef Observer<hal::BatteryInformation> BatteryObserver; - -} // namespace mozilla - -#endif // mozilla_dom_battery_Types_h - diff --git a/dom/battery/moz.build b/dom/battery/moz.build deleted file mode 100644 index e3743c40b..000000000 --- a/dom/battery/moz.build +++ /dev/null @@ -1,21 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# 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/. - -EXPORTS.mozilla.dom.battery += [ - 'Constants.h', - 'Types.h', -] - -SOURCES += [ - 'BatteryManager.cpp', -] - -include('/ipc/chromium/chromium-config.mozbuild') - -FINAL_LIBRARY = 'xul' - -MOCHITEST_CHROME_MANIFESTS += ['test/chrome.ini'] -MOCHITEST_MANIFESTS += ['test/mochitest.ini'] diff --git a/dom/battery/test/chrome.ini b/dom/battery/test/chrome.ini deleted file mode 100644 index ced199bff..000000000 --- a/dom/battery/test/chrome.ini +++ /dev/null @@ -1,3 +0,0 @@ -[test_battery_basics.html] -[test_battery_charging.html] -[test_battery_discharging.html] diff --git a/dom/battery/test/mochitest.ini b/dom/battery/test/mochitest.ini deleted file mode 100644 index 4d8307930..000000000 --- a/dom/battery/test/mochitest.ini +++ /dev/null @@ -1 +0,0 @@ -[test_battery_unprivileged.html] diff --git a/dom/battery/test/test_battery_basics.html b/dom/battery/test/test_battery_basics.html deleted file mode 100644 index 96f7f3368..000000000 --- a/dom/battery/test/test_battery_basics.html +++ /dev/null @@ -1,39 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <title>Test for Battery API</title> - <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/> -</head> -<body> -<p id="display"></p> -<div id="content" style="display: none"> -</div> -<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]"); - - SpecialPowers.pushPrefEnv({"set": [["dom.battery.test.default", true]]}, function () { - ok(battery.charging, "Battery should be charging by default"); - is(battery.chargingTime, 0, "Battery chargingTime " + battery.chargingTime + " should be zero by default"); - is(battery.dischargingTime, Infinity, "Battery dischargingTime should be Infinity by default"); - is(battery.level, 1.0, "Battery level " + battery.level + " should be 1.0 by default"); - - SimpleTest.finish(); - }); -}); - -</script> -</pre> -</body> -</html> diff --git a/dom/battery/test/test_battery_charging.html b/dom/battery/test/test_battery_charging.html deleted file mode 100644 index 5d1e83284..000000000 --- a/dom/battery/test/test_battery_charging.html +++ /dev/null @@ -1,35 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <title>Test for Battery API</title> - <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/> -</head> -<body> -<p id="display"></p> -<div id="content" style="display: none"> -</div> -<pre id="test"> -<script type="application/javascript"> - -"use strict"; - -SimpleTest.waitForExplicitFinish(); - -/** Test for Battery API **/ -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]"); - - SpecialPowers.pushPrefEnv({"set": [["dom.battery.test.charging", true]]}, function () { - is(battery.charging, true, "Battery should be 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"); - - SimpleTest.finish(); - }); -}); - -</script> -</pre> -</body> -</html> diff --git a/dom/battery/test/test_battery_discharging.html b/dom/battery/test/test_battery_discharging.html deleted file mode 100644 index 26a0359d3..000000000 --- a/dom/battery/test/test_battery_discharging.html +++ /dev/null @@ -1,35 +0,0 @@ -<!DOCTYPE HTML> -<html> -<head> - <title>Test for Battery API</title> - <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> - <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/> -</head> -<body> -<p id="display"></p> -<div id="content" style="display: none"> -</div> -<pre id="test"> -<script type="application/javascript"> - -"use strict"; - -SimpleTest.waitForExplicitFinish(); - -/** Test for Battery API **/ -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]"); - - SpecialPowers.pushPrefEnv({"set": [["dom.battery.test.discharging", true]]}, function () { - is(battery.charging, false, "Battery should be discharging"); - is(battery.chargingTime, Infinity, "Battery chargingTime should be Infinity when discharging"); - ok(battery.dischargingTime > 0, "Battery dischargingTime " + battery.dischargingTime + " should be positive when discharging"); - - SimpleTest.finish(); - }); -}); - -</script> -</pre> -</body> -</html> diff --git a/dom/battery/test/test_battery_unprivileged.html b/dom/battery/test/test_battery_unprivileged.html deleted file mode 100644 index e56db8ac7..000000000 --- a/dom/battery/test/test_battery_unprivileged.html +++ /dev/null @@ -1,24 +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"> - -"use strict"; - -/** Test for Battery API **/ -ok(!("getBattery" in navigator), "navigator.getBattery should not exist for unprivileged web content"); -ok(!("battery" in navigator), "navigator.battery should not exist"); - -</script> -</pre> -</body> -</html> |