8282import org .mozilla .vrbrowser .utils .ServoUtils ;
8383import org .mozilla .vrbrowser .utils .SystemUtils ;
8484
85+ import java .io .File ;
8586import java .util .ArrayList ;
8687import java .util .Arrays ;
8788import java .util .HashMap ;
@@ -96,7 +97,7 @@ public class VRBrowserActivity extends PlatformActivity implements WidgetManager
9697 private BroadcastReceiver mCrashReceiver = new BroadcastReceiver () {
9798 @ Override
9899 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 )) {
100101 Intent crashIntent = intent .getParcelableExtra (CrashReporterService .DATA_TAG );
101102 handleContentCrashIntent (crashIntent );
102103 }
@@ -443,9 +444,7 @@ protected void onResume() {
443444 for (Widget widget : mWidgets .values ()) {
444445 widget .onResume ();
445446 }
446- mConnectivityListeners .forEach ((listener ) -> {
447- listener .OnConnectivityChanged (ConnectivityReceiver .isNetworkAvailable (this ));
448- });
447+ mConnectivityListeners .forEach ((listener ) -> listener .OnConnectivityChanged (ConnectivityReceiver .isNetworkAvailable (this )));
449448 mConnectivityReceiver .register (this , mConnectivityDelegate );
450449
451450 // 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) {
664663 @ Override
665664 public void onBackPressed () {
666665 if (mIsPresentingImmersive ) {
667- queueRunnable (() -> exitImmersiveNative () );
666+ queueRunnable (this :: exitImmersiveNative );
668667 return ;
669668 }
670669 if (mBackHandlers .size () > 0 ) {
@@ -711,20 +710,21 @@ public boolean dispatchKeyEvent(KeyEvent event) {
711710 return super .dispatchKeyEvent (event );
712711 }
713712
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 ();
722719 }
723- };
724- synchronized (exitImmersive ) {
725- queueRunnable (exitImmersive );
720+ }
721+ };
722+
723+ private void exitImmersiveSync () {
724+ synchronized (mExitImmersive ) {
725+ queueRunnable (mExitImmersive );
726726 try {
727- exitImmersive .wait ();
727+ mExitImmersive .wait ();
728728 } catch (InterruptedException e ) {
729729 Log .e (LOGTAG , "Waiting for exit immersive onPause interrupted" );
730730 }
@@ -893,9 +893,7 @@ void handleAudioPose(float qx, float qy, float qz, float qw, float px, float py,
893893 @ Keep
894894 @ SuppressWarnings ("unused" )
895895 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 ));
899897 }
900898
901899 @ Keep
@@ -1008,7 +1006,11 @@ void renderPointerLayer(final Surface aSurface, final long aNativeCallback) {
10081006 @ Keep
10091007 @ SuppressWarnings ("unused" )
10101008 String getStorageAbsolutePath () {
1011- return getExternalFilesDir (null ).getAbsolutePath ();
1009+ final File path = getExternalFilesDir (null );
1010+ if (path == null ) {
1011+ return "" ;
1012+ }
1013+ return path .getAbsolutePath ();
10121014 }
10131015
10141016 @ Keep
@@ -1067,7 +1069,7 @@ private void handlePoorPerformance() {
10671069 return ;
10681070 }
10691071 WindowWidget window = mWindows .getFocusedWindow ();
1070- if (window == null ) {
1072+ if (window == null || window . getSession () == null ) {
10711073 return ;
10721074 }
10731075 final String originalUri = window .getSession ().getCurrentUri ();
@@ -1143,13 +1145,17 @@ private void updateActiveDialog(final Widget aWidget) {
11431145 }
11441146 }
11451147
1148+ @ SuppressWarnings ("BooleanMethodIsAlwaysInverted" )
11461149 private boolean isWidgetInputEnabled (Widget aWidget ) {
11471150 return mActiveDialog == null || aWidget == null || mActiveDialog == aWidget || aWidget instanceof KeyboardWidget ;
11481151 }
11491152
11501153 // WidgetManagerDelegate
11511154 @ Override
11521155 public void addWidget (Widget aWidget ) {
1156+ if (aWidget == null ) {
1157+ return ;
1158+ }
11531159 mWidgets .put (aWidget .getHandle (), aWidget );
11541160 ((View )aWidget ).setVisibility (aWidget .getPlacement ().visible ? View .VISIBLE : View .GONE );
11551161 final int handle = aWidget .getHandle ();
@@ -1160,6 +1166,9 @@ public void addWidget(Widget aWidget) {
11601166
11611167 @ Override
11621168 public void updateWidget (final Widget aWidget ) {
1169+ if (aWidget == null ) {
1170+ return ;
1171+ }
11631172 final int handle = aWidget .getHandle ();
11641173 final WidgetPlacement clone = aWidget .getPlacement ().clone ();
11651174 queueRunnable (() -> updateWidgetNative (handle , clone ));
@@ -1202,6 +1211,9 @@ public void updateWidget(final Widget aWidget) {
12021211
12031212 @ Override
12041213 public void removeWidget (final Widget aWidget ) {
1214+ if (aWidget == null ) {
1215+ return ;
1216+ }
12051217 mWidgets .remove (aWidget .getHandle ());
12061218 mWidgetContainer .removeView ((View ) aWidget );
12071219 aWidget .setFirstPaintReady (false );
@@ -1218,35 +1230,44 @@ public void updateVisibleWidgets() {
12181230
12191231 @ Override
12201232 public void startWidgetResize (final Widget aWidget , float aMaxWidth , float aMaxHeight , float minWidth , float minHeight ) {
1233+ if (aWidget == null ) {
1234+ return ;
1235+ }
12211236 mWindows .enterResizeMode ();
12221237 queueRunnable (() -> startWidgetResizeNative (aWidget .getHandle (), aMaxWidth , aMaxHeight , minWidth , minHeight ));
12231238 }
12241239
12251240 @ Override
12261241 public void finishWidgetResize (final Widget aWidget ) {
1242+ if (aWidget == null ) {
1243+ return ;
1244+ }
12271245 mWindows .exitResizeMode ();
12281246 queueRunnable (() -> finishWidgetResizeNative (aWidget .getHandle ()));
12291247 }
12301248
12311249 @ Override
12321250 public void startWidgetMove (final Widget aWidget , @ WidgetMoveBehaviourFlags int aMoveBehaviour ) {
1251+ if (aWidget == null ) {
1252+ return ;
1253+ }
12331254 queueRunnable (() -> startWidgetMoveNative (aWidget .getHandle (), aMoveBehaviour ));
12341255 }
12351256
12361257 @ Override
12371258 public void finishWidgetMove () {
1238- queueRunnable (() -> finishWidgetMoveNative () );
1259+ queueRunnable (this :: finishWidgetMoveNative );
12391260 }
12401261
12411262 @ Override
1242- public void addUpdateListener (UpdateListener aUpdateListener ) {
1263+ public void addUpdateListener (@ NonNull UpdateListener aUpdateListener ) {
12431264 if (!mWidgetUpdateListeners .contains (aUpdateListener )) {
12441265 mWidgetUpdateListeners .add (aUpdateListener );
12451266 }
12461267 }
12471268
12481269 @ Override
1249- public void removeUpdateListener (UpdateListener aUpdateListener ) {
1270+ public void removeUpdateListener (@ NonNull UpdateListener aUpdateListener ) {
12501271 mWidgetUpdateListeners .remove (aUpdateListener );
12511272 }
12521273
@@ -1263,14 +1284,14 @@ public void removePermissionListener(PermissionListener aListener) {
12631284 }
12641285
12651286 @ Override
1266- public void addFocusChangeListener (FocusChangeListener aListener ) {
1287+ public void addFocusChangeListener (@ NonNull FocusChangeListener aListener ) {
12671288 if (!mFocusChangeListeners .contains (aListener )) {
12681289 mFocusChangeListeners .add (aListener );
12691290 }
12701291 }
12711292
12721293 @ Override
1273- public void removeFocusChangeListener (FocusChangeListener aListener ) {
1294+ public void removeFocusChangeListener (@ NonNull FocusChangeListener aListener ) {
12741295 mFocusChangeListeners .remove (aListener );
12751296 }
12761297
@@ -1300,12 +1321,12 @@ public void removeConnectivityListener(Delegate aListener) {
13001321 }
13011322
13021323 @ Override
1303- public void pushBackHandler (Runnable aRunnable ) {
1324+ public void pushBackHandler (@ NonNull Runnable aRunnable ) {
13041325 mBackHandlers .addLast (aRunnable );
13051326 }
13061327
13071328 @ Override
1308- public void popBackHandler (Runnable aRunnable ) {
1329+ public void popBackHandler (@ NonNull Runnable aRunnable ) {
13091330 mBackHandlers .removeLastOccurrence (aRunnable );
13101331 }
13111332
@@ -1379,12 +1400,12 @@ public void keyboardDismissed() {
13791400
13801401 @ Override
13811402 public void updateEnvironment () {
1382- queueRunnable (() -> updateEnvironmentNative () );
1403+ queueRunnable (this :: updateEnvironmentNative );
13831404 }
13841405
13851406 @ Override
13861407 public void updatePointerColor () {
1387- queueRunnable (() -> updatePointerColorNative () );
1408+ queueRunnable (this :: updatePointerColorNative );
13881409 }
13891410
13901411 @ Override
0 commit comments