| (function() { |
| |
| setup("", {explicit_done: true}); |
| |
| /** |
| * |
| * partial interface Navigator { |
| * Promise<BatteryManager> getBattery (); |
| * }; |
| * |
| */ |
| |
| test(function() { |
| assert_idl_attribute(navigator, 'getBattery', 'navigator must have getBattery attribute'); |
| }, 'getBattery is present on navigator'); |
| |
| navigator.getBattery().then(function (battery) { |
| |
| /** |
| * |
| * interface BatteryManager : EventTarget { |
| * readonly attribute boolean charging; |
| * readonly attribute unrestricted double chargingTime; |
| * readonly attribute unrestricted double dischargingTime; |
| * readonly attribute double level; |
| * attribute EventHandler onchargingchange; |
| * attribute EventHandler onchargingtimechange; |
| * attribute EventHandler ondischargingtimechange; |
| * attribute EventHandler onlevelchange; |
| * }; |
| * |
| */ |
| |
| // interface BatteryManager : EventTarget { |
| |
| test(function() { |
| assert_own_property(window, 'BatteryManager'); |
| }, 'window has an own property BatteryManager'); |
| |
| test(function() { |
| assert_true(battery instanceof EventTarget); |
| }, 'battery inherits from EventTarget'); |
| |
| // readonly attribute boolean charging; |
| |
| test(function() { |
| assert_idl_attribute(battery, 'charging', 'battery must have charging attribute'); |
| }, 'charging attribute exists'); |
| |
| test(function() { |
| assert_readonly(battery, 'charging', 'charging must be readonly') |
| }, 'charging attribute is readonly'); |
| |
| // readonly attribute unrestricted double chargingTime; |
| |
| test(function() { |
| assert_idl_attribute(battery, 'chargingTime', 'battery must have chargingTime attribute'); |
| }, 'chargingTime attribute exists'); |
| |
| test(function() { |
| assert_readonly(battery, 'chargingTime', 'chargingTime must be readonly') |
| }, 'chargingTime attribute is readonly'); |
| |
| // readonly attribute unrestricted double dischargingTime; |
| |
| test(function() { |
| assert_idl_attribute(battery, 'dischargingTime', 'battery must have dischargingTime attribute'); |
| }, 'dischargingTime attribute exists'); |
| |
| test(function() { |
| assert_readonly(battery, 'dischargingTime', 'dischargingTime must be readonly') |
| }, 'dischargingTime attribute is readonly'); |
| |
| // readonly attribute double level; |
| |
| test(function() { |
| assert_idl_attribute(battery, 'level', 'battery must have level attribute'); |
| }, 'level attribute exists'); |
| |
| test(function() { |
| assert_readonly(battery, 'level', 'level must be readonly') |
| }, 'level attribute is readonly'); |
| |
| // attribute EventHandler onchargingchange; |
| |
| test(function() { |
| assert_idl_attribute(battery, 'onchargingchange', 'battery must have onchargingchange attribute'); |
| }, 'onchargingchange attribute exists'); |
| |
| test(function() { |
| assert_equals(battery.onchargingchange, null, 'onchargingchange must be null') |
| }, 'onchargingchange is null'); |
| |
| test(function() { |
| var desc = 'onchargingchange did not accept callable object', |
| func = function() {}, |
| desc = 'Expected to find onchargingchange attribute on battery object'; |
| assert_idl_attribute(battery, 'onchargingchange', desc); |
| window.onchargingchange = func; |
| assert_equals(window.onchargingchange, func, desc); |
| }, 'onchargingchange is set to function'); |
| |
| test(function() { |
| var desc = 'onchargingchange did not treat noncallable as null'; |
| battery.onchargingchange = function() {}; |
| battery.onchargingchange = {}; |
| assert_equals(battery.onchargingchange, null, desc); |
| }, 'onchargingchange: treat object as null'); |
| |
| test(function() { |
| var desc = 'onchargingchange did not treat noncallable as null'; |
| battery.onchargingchange = function() {}; |
| battery.onchargingchange = { |
| call: 'test' |
| }; |
| assert_equals(battery.onchargingchange, null, desc); |
| }, 'onchargingchange: treat object with non-callable call property as null'); |
| |
| test(function() { |
| var desc = 'onchargingchange did not treat noncallable (string) as null'; |
| battery.onchargingchange = function() {}; |
| battery.onchargingchange = 'string'; |
| assert_equals(battery.onchargingchange, null, desc); |
| }, 'onchargingchange: treat string as null'); |
| |
| test(function() { |
| var desc = 'onchargingchange did not treat noncallable (number) as null'; |
| battery.onchargingchange = function() {}; |
| battery.onchargingchange = 123; |
| assert_equals(battery.onchargingchange, null, desc); |
| }, 'onchargingchange: treat number as null'); |
| |
| test(function() { |
| var desc = 'onchargingchange did not treat noncallable (undefined) as null'; |
| battery.onchargingchange = function() {}; |
| battery.onchargingchange = undefined; |
| assert_equals(battery.onchargingchange, null, desc); |
| }, 'onchargingchange: treat undefined as null'); |
| |
| test(function() { |
| var desc = 'onchargingchange did not treat noncallable (array) as null'; |
| battery.onchargingchange = function() {}; |
| battery.onchargingchange = []; |
| assert_equals(battery.onchargingchange, null, desc); |
| }, 'onchargingchange: treat array as null'); |
| |
| // attribute EventHandler onchargingtimechange; |
| |
| test(function() { |
| assert_idl_attribute(battery, 'onchargingtimechange', 'battery must have onchargingtimechange attribute'); |
| }, 'onchargingtimechange attribute exists'); |
| |
| test(function() { |
| assert_equals(battery.onchargingtimechange, null, 'onchargingtimechange must be null') |
| }, 'onchargingtimechange is null'); |
| |
| test(function() { |
| var desc = 'onchargingtimechange did not accept callable object', |
| func = function() {}, |
| desc = 'Expected to find onchargingtimechange attribute on battery object'; |
| assert_idl_attribute(battery, 'onchargingtimechange', desc); |
| window.onchargingtimechange = func; |
| assert_equals(window.onchargingtimechange, func, desc); |
| }, 'onchargingtimechange is set to function'); |
| |
| test(function() { |
| var desc = 'onchargingtimechange did not treat noncallable as null'; |
| battery.onchargingtimechange = function() {}; |
| battery.onchargingtimechange = {}; |
| assert_equals(battery.onchargingtimechange, null, desc); |
| }, 'onchargingtimechange: treat object as null'); |
| |
| test(function() { |
| var desc = 'onchargingtimechange did not treat noncallable as null'; |
| battery.onchargingtimechange = function() {}; |
| battery.onchargingtimechange = { |
| call: 'test' |
| }; |
| assert_equals(battery.onchargingtimechange, null, desc); |
| }, 'onchargingtimechange: treat object with non-callable call property as null'); |
| |
| test(function() { |
| var desc = 'onchargingtimechange did not treat noncallable (string) as null'; |
| battery.onchargingtimechange = function() {}; |
| battery.onchargingtimechange = 'string'; |
| assert_equals(battery.onchargingtimechange, null, desc); |
| }, 'onchargingtimechange: treat string as null'); |
| |
| test(function() { |
| var desc = 'onchargingtimechange did not treat noncallable (number) as null'; |
| battery.onchargingtimechange = function() {}; |
| battery.onchargingtimechange = 123; |
| assert_equals(battery.onchargingtimechange, null, desc); |
| }, 'onchargingtimechange: treat number as null'); |
| |
| test(function() { |
| var desc = 'onchargingtimechange did not treat noncallable (undefined) as null'; |
| battery.onchargingtimechange = function() {}; |
| battery.onchargingtimechange = undefined; |
| assert_equals(battery.onchargingtimechange, null, desc); |
| }, 'onchargingtimechange: treat undefined as null'); |
| |
| test(function() { |
| var desc = 'onchargingtimechange did not treat noncallable (array) as null'; |
| battery.onchargingtimechange = function() {}; |
| battery.onchargingtimechange = []; |
| assert_equals(battery.onchargingtimechange, null, desc); |
| }, 'onchargingtimechange: treat array as null'); |
| |
| // attribute EventHandler ondischargingtimechange; |
| |
| test(function() { |
| assert_idl_attribute(battery, 'ondischargingtimechange', 'battery must have ondischargingtimechange attribute'); |
| }, 'ondischargingtimechange attribute exists'); |
| |
| test(function() { |
| assert_equals(battery.ondischargingtimechange, null, 'ondischargingtimechange must be null') |
| }, 'ondischargingtimechange is null'); |
| |
| test(function() { |
| var desc = 'ondischargingtimechange did not accept callable object', |
| func = function() {}, |
| desc = 'Expected to find ondischargingtimechange attribute on battery object'; |
| assert_idl_attribute(battery, 'ondischargingtimechange', desc); |
| window.ondischargingtimechange = func; |
| assert_equals(window.ondischargingtimechange, func, desc); |
| }, 'ondischargingtimechange is set to function'); |
| |
| test(function() { |
| var desc = 'ondischargingtimechange did not treat noncallable as null'; |
| battery.ondischargingtimechange = function() {}; |
| battery.ondischargingtimechange = {}; |
| assert_equals(battery.ondischargingtimechange, null, desc); |
| }, 'ondischargingtimechange: treat object as null'); |
| |
| test(function() { |
| var desc = 'ondischargingtimechange did not treat noncallable as null'; |
| battery.ondischargingtimechange = function() {}; |
| battery.ondischargingtimechange = { |
| call: 'test' |
| }; |
| assert_equals(battery.ondischargingtimechange, null, desc); |
| }, 'ondischargingtimechange: treat object with non-callable call property as null'); |
| |
| test(function() { |
| var desc = 'ondischargingtimechange did not treat noncallable (string) as null'; |
| battery.ondischargingtimechange = function() {}; |
| battery.ondischargingtimechange = 'string'; |
| assert_equals(battery.ondischargingtimechange, null, desc); |
| }, 'ondischargingtimechange: treat string as null'); |
| |
| test(function() { |
| var desc = 'ondischargingtimechange did not treat noncallable (number) as null'; |
| battery.ondischargingtimechange = function() {}; |
| battery.ondischargingtimechange = 123; |
| assert_equals(battery.ondischargingtimechange, null, desc); |
| }, 'ondischargingtimechange: treat number as null'); |
| |
| test(function() { |
| var desc = 'ondischargingtimechange did not treat noncallable (undefined) as null'; |
| battery.ondischargingtimechange = function() {}; |
| battery.ondischargingtimechange = undefined; |
| assert_equals(battery.ondischargingtimechange, null, desc); |
| }, 'ondischargingtimechange: treat undefined as null'); |
| |
| test(function() { |
| var desc = 'ondischargingtimechange did not treat noncallable (array) as null'; |
| battery.ondischargingtimechange = function() {}; |
| battery.ondischargingtimechange = []; |
| assert_equals(battery.ondischargingtimechange, null, desc); |
| }, 'ondischargingtimechange: treat array as null'); |
| |
| // attribute EventHandler onlevelchange; |
| |
| test(function() { |
| assert_idl_attribute(battery, 'onlevelchange', 'battery must have onlevelchange attribute'); |
| }, 'onlevelchange attribute exists'); |
| |
| test(function() { |
| assert_equals(battery.onlevelchange, null, 'onlevelchange must be null') |
| }, 'onlevelchange is null'); |
| |
| test(function() { |
| var desc = 'onlevelchange did not accept callable object', |
| func = function() {}, |
| desc = 'Expected to find onlevelchange attribute on battery object'; |
| assert_idl_attribute(battery, 'onlevelchange', desc); |
| window.onlevelchange = func; |
| assert_equals(window.onlevelchange, func, desc); |
| }, 'onlevelchange is set to function'); |
| |
| test(function() { |
| var desc = 'onlevelchange did not treat noncallable as null'; |
| battery.onlevelchange = function() {}; |
| battery.onlevelchange = {}; |
| assert_equals(battery.onlevelchange, null, desc); |
| }, 'onlevelchange: treat object as null'); |
| |
| test(function() { |
| var desc = 'onlevelchange did not treat noncallable as null'; |
| battery.onlevelchange = function() {}; |
| battery.onlevelchange = { |
| call: 'test' |
| }; |
| assert_equals(battery.onlevelchange, null, desc); |
| }, 'onlevelchange: treat object with non-callable call property as null'); |
| |
| test(function() { |
| var desc = 'onlevelchange did not treat noncallable (string) as null'; |
| battery.onlevelchange = function() {}; |
| battery.onlevelchange = 'string'; |
| assert_equals(battery.onlevelchange, null, desc); |
| }, 'onlevelchange: treat string as null'); |
| |
| test(function() { |
| var desc = 'onlevelchange did not treat noncallable (number) as null'; |
| battery.onlevelchange = function() {}; |
| battery.onlevelchange = 123; |
| assert_equals(battery.onlevelchange, null, desc); |
| }, 'onlevelchange: treat number as null'); |
| |
| test(function() { |
| var desc = 'onlevelchange did not treat noncallable (undefined) as null'; |
| battery.onlevelchange = function() {}; |
| battery.onlevelchange = undefined; |
| assert_equals(battery.onlevelchange, null, desc); |
| }, 'onlevelchange: treat undefined as null'); |
| |
| test(function() { |
| var desc = 'onlevelchange did not treat noncallable (array) as null'; |
| battery.onlevelchange = function() {}; |
| battery.onlevelchange = []; |
| assert_equals(battery.onlevelchange, null, desc); |
| }, 'onlevelchange: treat array as null'); |
| |
| done(); |
| |
| }, function () {}); |
| |
| })(); |