diff options
Diffstat (limited to 'apps/system/test/unit/mock_navigator_battery.js')
-rw-r--r-- | apps/system/test/unit/mock_navigator_battery.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/apps/system/test/unit/mock_navigator_battery.js b/apps/system/test/unit/mock_navigator_battery.js new file mode 100644 index 0000000..5145de1 --- /dev/null +++ b/apps/system/test/unit/mock_navigator_battery.js @@ -0,0 +1,55 @@ +'use strict'; + +(function() { + + var props = ['level', 'charging']; + + var listeners; + + function mnb_init() { + props.forEach(function(prop) { + Mock[prop] = null; + }); + + listeners = {}; + } + + function mnb_addEventListener(evtName, func) { + listeners[evtName] = listeners[evtName] || []; + listeners[evtName].push(func); + } + + function mnb_removeEventListener(evtName, func) { + if (listeners[evtName]) { + var listenerArray = listeners[evtName]; + var index = listenerArray.indexOf(func); + if (index !== -1) { + listenerArray.splice(index, 1); + } + } + } + + function mnb_mTriggerEvent(evt) { + var evtName = evt.type; + if (listeners[evtName]) { + listeners[evtName].forEach(function(listener) { + if (listener.handleEvent) { + listener.handleEvent(evt); + } else { + listener.call(Mock, evt); + } + }); + } + } + + var Mock = { + addEventListener: mnb_addEventListener, + removeEventListener: mnb_removeEventListener, + mTeardown: mnb_init, + mTriggerEvent: mnb_mTriggerEvent + }; + + mnb_init(); + + window.MockNavigatorBattery = Mock; +})(); |