@@ -2091,18 +2091,18 @@ var LibraryHTML5 = {
2091
2091
return registerBeforeUnloadEventCallback ( { { { cDefs . EMSCRIPTEN_EVENT_TARGET_WINDOW } } } , userData, true, callbackfunc, { { { cDefs . EMSCRIPTEN_EVENT_BEFOREUNLOAD } } } , "beforeunload" ) ;
2092
2092
} ,
2093
2093
2094
- $fillBatteryEventData : ( eventStruct , e ) => {
2095
- { { { makeSetValue ( 'eventStruct' , C_STRUCTS . EmscriptenBatteryEvent . chargingTime , 'e .chargingTime' , 'double' ) } } } ;
2096
- { { { makeSetValue ( 'eventStruct' , C_STRUCTS . EmscriptenBatteryEvent . dischargingTime , 'e .dischargingTime' , 'double' ) } } } ;
2097
- { { { makeSetValue ( 'eventStruct' , C_STRUCTS . EmscriptenBatteryEvent . level , 'e .level' , 'double' ) } } } ;
2098
- { { { makeSetValue ( 'eventStruct' , C_STRUCTS . EmscriptenBatteryEvent . charging , 'e .charging' , 'i8' ) } } } ;
2094
+ $fillBatteryEventData : ( eventStruct , battery ) => {
2095
+ { { { makeSetValue ( 'eventStruct' , C_STRUCTS . EmscriptenBatteryEvent . chargingTime , 'battery .chargingTime' , 'double' ) } } } ;
2096
+ { { { makeSetValue ( 'eventStruct' , C_STRUCTS . EmscriptenBatteryEvent . dischargingTime , 'battery .dischargingTime' , 'double' ) } } } ;
2097
+ { { { makeSetValue ( 'eventStruct' , C_STRUCTS . EmscriptenBatteryEvent . level , 'battery .level' , 'double' ) } } } ;
2098
+ { { { makeSetValue ( 'eventStruct' , C_STRUCTS . EmscriptenBatteryEvent . charging , 'battery .charging' , 'i8' ) } } } ;
2099
2099
} ,
2100
2100
2101
- $battery : ( ) = > navigator . battery || navigator . mozBattery || navigator . webkitBattery ,
2101
+ $hasBatteryAPI : ( ) = > typeof navigator != 'undefined' && navigator . getBattery ,
2102
2102
2103
2103
$registerBatteryEventCallback__noleakcheck : true ,
2104
- $registerBatteryEventCallback__deps : [ '$JSEvents' , '$fillBatteryEventData' , '$battery' , '$findEventTarget' , ' malloc'] ,
2105
- $registerBatteryEventCallback : ( target , userData , useCapture , callbackfunc , eventTypeId , eventTypeString , targetThread ) => {
2104
+ $registerBatteryEventCallback__deps : [ '$JSEvents' , '$fillBatteryEventData' , 'malloc' ] ,
2105
+ $registerBatteryEventCallback : ( battery , userData , useCapture , callbackfunc , eventTypeId , eventTypeString , targetThread ) => {
2106
2106
#if PTHREADS
2107
2107
targetThread = JSEvents . getTargetThreadForEventCallback ( targetThread ) ;
2108
2108
#endif
@@ -2114,7 +2114,7 @@ var LibraryHTML5 = {
2114
2114
#else
2115
2115
var batteryEvent = JSEvents . batteryEvent ;
2116
2116
#endif
2117
- fillBatteryEventData ( batteryEvent , battery ( ) ) ;
2117
+ fillBatteryEventData ( batteryEvent , battery ) ;
2118
2118
2119
2119
#if PTHREADS
2120
2120
if ( targetThread ) __emscripten_run_callback_on_thread ( targetThread , callbackfunc , eventTypeId , batteryEvent , userData ) ;
@@ -2124,7 +2124,7 @@ var LibraryHTML5 = {
2124
2124
} ;
2125
2125
2126
2126
var eventHandler = {
2127
- target : findEventTarget ( target ) ,
2127
+ target : battery ,
2128
2128
eventTypeString,
2129
2129
callbackfunc,
2130
2130
handlerFunc : batteryEventHandlerFunc ,
@@ -2134,24 +2134,35 @@ var LibraryHTML5 = {
2134
2134
} ,
2135
2135
2136
2136
emscripten_set_batterychargingchange_callback_on_thread__proxy : 'sync ',
2137
- emscripten_set_batterychargingchange_callback_on_thread__deps : [ '$registerBatteryEventCallback' , '$battery ' ] ,
2137
+ emscripten_set_batterychargingchange_callback_on_thread__deps : [ '$registerBatteryEventCallback' , '$hasBatteryAPI ' ] ,
2138
2138
emscripten_set_batterychargingchange_callback_on_thread : ( userData , callbackfunc , targetThread ) = > {
2139
- if ( ! battery ( ) ) return { { { cDefs . EMSCRIPTEN_RESULT_NOT_SUPPORTED } } } ;
2140
- return registerBatteryEventCallback ( battery ( ) , userData , true , callbackfunc , { { { cDefs . EMSCRIPTEN_EVENT_BATTERYCHARGINGCHANGE } } } , "chargingchange" , targetThread) ;
2139
+ if ( ! hasBatteryAPI ( ) ) return { { { cDefs . EMSCRIPTEN_RESULT_NOT_SUPPORTED } } } ;
2140
+ navigator . getBattery ( ) . then ( ( b ) => {
2141
+ registerBatteryEventCallback ( b , userData , true , callbackfunc , { { { cDefs . EMSCRIPTEN_EVENT_BATTERYCHARGINGCHANGE } } } , "chargingchange" , targetThread) ;
2142
+ } ) ;
2141
2143
} ,
2142
2144
2143
2145
emscripten_set_batterylevelchange_callback_on_thread__proxy : 'sync' ,
2144
- emscripten_set_batterylevelchange_callback_on_thread__deps : [ '$registerBatteryEventCallback' , '$battery ' ] ,
2146
+ emscripten_set_batterylevelchange_callback_on_thread__deps : [ '$registerBatteryEventCallback' , '$hasBatteryAPI ' ] ,
2145
2147
emscripten_set_batterylevelchange_callback_on_thread : ( userData , callbackfunc , targetThread ) = > {
2146
- if ( ! battery ( ) ) return { { { cDefs . EMSCRIPTEN_RESULT_NOT_SUPPORTED } } } ;
2147
- return registerBatteryEventCallback ( battery ( ) , userData , true , callbackfunc , { { { cDefs . EMSCRIPTEN_EVENT_BATTERYLEVELCHANGE } } } , "levelchange" , targetThread) ;
2148
+ if ( ! hasBatteryAPI ( ) ) return { { { cDefs . EMSCRIPTEN_RESULT_NOT_SUPPORTED } } } ;
2149
+ navigator . getBattery ( ) . then ( ( b ) => {
2150
+ registerBatteryEventCallback ( b , userData , true , callbackfunc , { { { cDefs . EMSCRIPTEN_EVENT_BATTERYLEVELCHANGE } } } , "levelchange" , targetThread) ;
2151
+ } ) ;
2148
2152
} ,
2149
2153
2154
+ $batteryManager : undefined ,
2150
2155
emscripten_get_battery_status__proxy : 'sync' ,
2151
- emscripten_get_battery_status__deps : [ '$fillBatteryEventData' , '$battery ' ] ,
2156
+ emscripten_get_battery_status__deps : [ '$fillBatteryEventData' , '$hasBatteryAPI' , '$batteryManager '] ,
2152
2157
emscripten_get_battery_status : ( batteryState ) = > {
2153
- if ( ! battery ( ) ) return { { { cDefs . EMSCRIPTEN_RESULT_NOT_SUPPORTED } } } ;
2154
- fillBatteryEventData ( batteryState , battery ( ) ) ;
2158
+ if ( ! hasBatteryAPI ( ) ) return { { { cDefs . EMSCRIPTEN_RESULT_NOT_SUPPORTED } } } ;
2159
+ if ( ! batteryManager ) {
2160
+ navigator . getBattery ( ) . then ( ( b ) => {
2161
+ batteryManager = b ;
2162
+ } ) ;
2163
+ return { { { cDefs . EMSCRIPTEN_RESULT_NO_DATA } } } ;
2164
+ }
2165
+ fillBatteryEventData ( batteryState , batteryManager ) ;
2155
2166
return { { { cDefs . EMSCRIPTEN_RESULT_SUCCESS } } } ;
2156
2167
} ,
2157
2168
0 commit comments