82
82
import org .mozilla .vrbrowser .utils .ServoUtils ;
83
83
import org .mozilla .vrbrowser .utils .SystemUtils ;
84
84
85
+ import java .io .File ;
85
86
import java .util .ArrayList ;
86
87
import java .util .Arrays ;
87
88
import java .util .HashMap ;
@@ -96,7 +97,7 @@ public class VRBrowserActivity extends PlatformActivity implements WidgetManager
96
97
private BroadcastReceiver mCrashReceiver = new BroadcastReceiver () {
97
98
@ Override
98
99
public void onReceive (Context context , Intent intent ) {
99
- if (intent .getAction ().equals (CrashReporterService .CRASH_ACTION )) {
100
+ if (( intent . getAction () != null ) && intent .getAction ().equals (CrashReporterService .CRASH_ACTION )) {
100
101
Intent crashIntent = intent .getParcelableExtra (CrashReporterService .DATA_TAG );
101
102
handleContentCrashIntent (crashIntent );
102
103
}
@@ -443,9 +444,7 @@ protected void onResume() {
443
444
for (Widget widget : mWidgets .values ()) {
444
445
widget .onResume ();
445
446
}
446
- mConnectivityListeners .forEach ((listener ) -> {
447
- listener .OnConnectivityChanged (ConnectivityReceiver .isNetworkAvailable (this ));
448
- });
447
+ mConnectivityListeners .forEach ((listener ) -> listener .OnConnectivityChanged (ConnectivityReceiver .isNetworkAvailable (this )));
449
448
mConnectivityReceiver .register (this , mConnectivityDelegate );
450
449
451
450
// If we're signed-in, poll for any new device events (e.g. received tabs) on activity resume.
@@ -664,7 +663,7 @@ public void onTrimMemory(int level) {
664
663
@ Override
665
664
public void onBackPressed () {
666
665
if (mIsPresentingImmersive ) {
667
- queueRunnable (() -> exitImmersiveNative () );
666
+ queueRunnable (this :: exitImmersiveNative );
668
667
return ;
669
668
}
670
669
if (mBackHandlers .size () > 0 ) {
@@ -711,20 +710,21 @@ public boolean dispatchKeyEvent(KeyEvent event) {
711
710
return super .dispatchKeyEvent (event );
712
711
}
713
712
714
- private void exitImmersiveSync () {
715
- Runnable exitImmersive = new Runnable () {
716
- @ Override
717
- public void run () {
718
- exitImmersiveNative ();
719
- synchronized (this ) {
720
- this .notifyAll ();
721
- }
713
+ final Runnable mExitImmersive = new Runnable () {
714
+ @ Override
715
+ public void run () {
716
+ exitImmersiveNative ();
717
+ synchronized (this ) {
718
+ this .notifyAll ();
722
719
}
723
- };
724
- synchronized (exitImmersive ) {
725
- queueRunnable (exitImmersive );
720
+ }
721
+ };
722
+
723
+ private void exitImmersiveSync () {
724
+ synchronized (mExitImmersive ) {
725
+ queueRunnable (mExitImmersive );
726
726
try {
727
- exitImmersive .wait ();
727
+ mExitImmersive .wait ();
728
728
} catch (InterruptedException e ) {
729
729
Log .e (LOGTAG , "Waiting for exit immersive onPause interrupted" );
730
730
}
@@ -893,9 +893,7 @@ void handleAudioPose(float qx, float qy, float qz, float qw, float px, float py,
893
893
@ Keep
894
894
@ SuppressWarnings ("unused" )
895
895
void handleResize (final int aHandle , final float aWorldWidth , final float aWorldHeight ) {
896
- runOnUiThread (() -> {
897
- mWindows .getFocusedWindow ().handleResizeEvent (aWorldWidth , aWorldHeight );
898
- });
896
+ runOnUiThread (() -> mWindows .getFocusedWindow ().handleResizeEvent (aWorldWidth , aWorldHeight ));
899
897
}
900
898
901
899
@ Keep
@@ -1008,7 +1006,11 @@ void renderPointerLayer(final Surface aSurface, final long aNativeCallback) {
1008
1006
@ Keep
1009
1007
@ SuppressWarnings ("unused" )
1010
1008
String getStorageAbsolutePath () {
1011
- return getExternalFilesDir (null ).getAbsolutePath ();
1009
+ final File path = getExternalFilesDir (null );
1010
+ if (path == null ) {
1011
+ return "" ;
1012
+ }
1013
+ return path .getAbsolutePath ();
1012
1014
}
1013
1015
1014
1016
@ Keep
@@ -1067,7 +1069,7 @@ private void handlePoorPerformance() {
1067
1069
return ;
1068
1070
}
1069
1071
WindowWidget window = mWindows .getFocusedWindow ();
1070
- if (window == null ) {
1072
+ if (window == null || window . getSession () == null ) {
1071
1073
return ;
1072
1074
}
1073
1075
final String originalUri = window .getSession ().getCurrentUri ();
@@ -1143,13 +1145,17 @@ private void updateActiveDialog(final Widget aWidget) {
1143
1145
}
1144
1146
}
1145
1147
1148
+ @ SuppressWarnings ("BooleanMethodIsAlwaysInverted" )
1146
1149
private boolean isWidgetInputEnabled (Widget aWidget ) {
1147
1150
return mActiveDialog == null || aWidget == null || mActiveDialog == aWidget || aWidget instanceof KeyboardWidget ;
1148
1151
}
1149
1152
1150
1153
// WidgetManagerDelegate
1151
1154
@ Override
1152
1155
public void addWidget (Widget aWidget ) {
1156
+ if (aWidget == null ) {
1157
+ return ;
1158
+ }
1153
1159
mWidgets .put (aWidget .getHandle (), aWidget );
1154
1160
((View )aWidget ).setVisibility (aWidget .getPlacement ().visible ? View .VISIBLE : View .GONE );
1155
1161
final int handle = aWidget .getHandle ();
@@ -1160,6 +1166,9 @@ public void addWidget(Widget aWidget) {
1160
1166
1161
1167
@ Override
1162
1168
public void updateWidget (final Widget aWidget ) {
1169
+ if (aWidget == null ) {
1170
+ return ;
1171
+ }
1163
1172
final int handle = aWidget .getHandle ();
1164
1173
final WidgetPlacement clone = aWidget .getPlacement ().clone ();
1165
1174
queueRunnable (() -> updateWidgetNative (handle , clone ));
@@ -1202,6 +1211,9 @@ public void updateWidget(final Widget aWidget) {
1202
1211
1203
1212
@ Override
1204
1213
public void removeWidget (final Widget aWidget ) {
1214
+ if (aWidget == null ) {
1215
+ return ;
1216
+ }
1205
1217
mWidgets .remove (aWidget .getHandle ());
1206
1218
mWidgetContainer .removeView ((View ) aWidget );
1207
1219
aWidget .setFirstPaintReady (false );
@@ -1218,35 +1230,44 @@ public void updateVisibleWidgets() {
1218
1230
1219
1231
@ Override
1220
1232
public void startWidgetResize (final Widget aWidget , float aMaxWidth , float aMaxHeight , float minWidth , float minHeight ) {
1233
+ if (aWidget == null ) {
1234
+ return ;
1235
+ }
1221
1236
mWindows .enterResizeMode ();
1222
1237
queueRunnable (() -> startWidgetResizeNative (aWidget .getHandle (), aMaxWidth , aMaxHeight , minWidth , minHeight ));
1223
1238
}
1224
1239
1225
1240
@ Override
1226
1241
public void finishWidgetResize (final Widget aWidget ) {
1242
+ if (aWidget == null ) {
1243
+ return ;
1244
+ }
1227
1245
mWindows .exitResizeMode ();
1228
1246
queueRunnable (() -> finishWidgetResizeNative (aWidget .getHandle ()));
1229
1247
}
1230
1248
1231
1249
@ Override
1232
1250
public void startWidgetMove (final Widget aWidget , @ WidgetMoveBehaviourFlags int aMoveBehaviour ) {
1251
+ if (aWidget == null ) {
1252
+ return ;
1253
+ }
1233
1254
queueRunnable (() -> startWidgetMoveNative (aWidget .getHandle (), aMoveBehaviour ));
1234
1255
}
1235
1256
1236
1257
@ Override
1237
1258
public void finishWidgetMove () {
1238
- queueRunnable (() -> finishWidgetMoveNative () );
1259
+ queueRunnable (this :: finishWidgetMoveNative );
1239
1260
}
1240
1261
1241
1262
@ Override
1242
- public void addUpdateListener (UpdateListener aUpdateListener ) {
1263
+ public void addUpdateListener (@ NonNull UpdateListener aUpdateListener ) {
1243
1264
if (!mWidgetUpdateListeners .contains (aUpdateListener )) {
1244
1265
mWidgetUpdateListeners .add (aUpdateListener );
1245
1266
}
1246
1267
}
1247
1268
1248
1269
@ Override
1249
- public void removeUpdateListener (UpdateListener aUpdateListener ) {
1270
+ public void removeUpdateListener (@ NonNull UpdateListener aUpdateListener ) {
1250
1271
mWidgetUpdateListeners .remove (aUpdateListener );
1251
1272
}
1252
1273
@@ -1263,14 +1284,14 @@ public void removePermissionListener(PermissionListener aListener) {
1263
1284
}
1264
1285
1265
1286
@ Override
1266
- public void addFocusChangeListener (FocusChangeListener aListener ) {
1287
+ public void addFocusChangeListener (@ NonNull FocusChangeListener aListener ) {
1267
1288
if (!mFocusChangeListeners .contains (aListener )) {
1268
1289
mFocusChangeListeners .add (aListener );
1269
1290
}
1270
1291
}
1271
1292
1272
1293
@ Override
1273
- public void removeFocusChangeListener (FocusChangeListener aListener ) {
1294
+ public void removeFocusChangeListener (@ NonNull FocusChangeListener aListener ) {
1274
1295
mFocusChangeListeners .remove (aListener );
1275
1296
}
1276
1297
@@ -1300,12 +1321,12 @@ public void removeConnectivityListener(Delegate aListener) {
1300
1321
}
1301
1322
1302
1323
@ Override
1303
- public void pushBackHandler (Runnable aRunnable ) {
1324
+ public void pushBackHandler (@ NonNull Runnable aRunnable ) {
1304
1325
mBackHandlers .addLast (aRunnable );
1305
1326
}
1306
1327
1307
1328
@ Override
1308
- public void popBackHandler (Runnable aRunnable ) {
1329
+ public void popBackHandler (@ NonNull Runnable aRunnable ) {
1309
1330
mBackHandlers .removeLastOccurrence (aRunnable );
1310
1331
}
1311
1332
@@ -1379,12 +1400,12 @@ public void keyboardDismissed() {
1379
1400
1380
1401
@ Override
1381
1402
public void updateEnvironment () {
1382
- queueRunnable (() -> updateEnvironmentNative () );
1403
+ queueRunnable (this :: updateEnvironmentNative );
1383
1404
}
1384
1405
1385
1406
@ Override
1386
1407
public void updatePointerColor () {
1387
- queueRunnable (() -> updatePointerColorNative () );
1408
+ queueRunnable (this :: updatePointerColorNative );
1388
1409
}
1389
1410
1390
1411
@ Override
0 commit comments