[Libreoffice-commits] online.git: Branch 'distro/collabora/co-4-2-0' - android/lib

Tomaž Vajngerl (via logerrit) logerrit at kemper.freedesktop.org
Tue Mar 10 13:52:43 UTC 2020


 android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java |   21 ++++++----
 1 file changed, 14 insertions(+), 7 deletions(-)

New commits:
commit 11d699c9f3646c496ae5e6fbe54fb4de4d4a126b
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Wed Mar 4 11:33:17 2020 +0100
Commit:     Jan Holesovsky <kendy at collabora.com>
CommitDate: Tue Mar 10 14:52:25 2020 +0100

    android: create mainHandler on demand to prevent NPE
    
    A crash happens when "back" is hit with a NPE exception because
    mainHandler is null (not yet initilized). This changes the code
    so mainHandler is initialized on demand and if not before, then
    at least when initUI is called.
    
    Change-Id: Id20b2093315ba41dac205fc4e94f31d00a4fe1f1
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/89953
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
    (cherry picked from commit 0897397834608ff8f87382cac896f8912260616c)
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/90212
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java
index e1fbc6717..73689b3f0 100644
--- a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java
+++ b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java
@@ -101,7 +101,7 @@ public class LOActivity extends AppCompatActivity {
     private String urlToLoad;
     private WebView mWebView;
     private SharedPreferences sPrefs;
-    private Handler mainHandler;
+    private Handler mMainHandler = null;
 
     private boolean isDocEditable = false;
     private boolean isDocDebuggable = BuildConfig.DEBUG;
@@ -245,6 +245,13 @@ public class LOActivity extends AppCompatActivity {
         return true;
     }
 
+    private Handler getMainHandler() {
+        if (mMainHandler == null) {
+            mMainHandler = new Handler(getMainLooper());
+        }
+        return mMainHandler;
+    }
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -348,7 +355,7 @@ public class LOActivity extends AppCompatActivity {
             }
         }
 
-        mainHandler = new Handler(getMainLooper());
+        getMainHandler();
 
         clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
         nativeMsgThread = new Thread(new Runnable() {
@@ -406,7 +413,7 @@ public class LOActivity extends AppCompatActivity {
 
         final Intent finalIntent = intent;
         mProgressDialog.indeterminate(R.string.saving);
-        mainHandler.post(new Runnable() {
+        getMainHandler().post(new Runnable() {
             @Override
             public void run() {
                 documentLoaded = false;
@@ -652,7 +659,7 @@ public class LOActivity extends AppCompatActivity {
 
         // The 'BYE' takes a considerable amount of time, we need to post it
         // so that it starts after the saving progress is actually shown
-        mainHandler.post(new Runnable() {
+        getMainHandler().post(new Runnable() {
             @Override
             public void run() {
                 documentLoaded = false;
@@ -793,7 +800,7 @@ public class LOActivity extends AppCompatActivity {
                 finishWithProgress();
                 return false;
             case "PRINT":
-                mainHandler.post(new Runnable() {
+                getMainHandler().post(new Runnable() {
                     @Override
                     public void run() {
                         LOActivity.this.initiatePrint();
@@ -819,7 +826,7 @@ public class LOActivity extends AppCompatActivity {
                 }
                 break;
             case "DIM_SCREEN": {
-                mainHandler.post(new Runnable() {
+                getMainHandler().post(new Runnable() {
                     @Override
                     public void run() {
                         getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
@@ -828,7 +835,7 @@ public class LOActivity extends AppCompatActivity {
                 return false;
             }
             case "LIGHT_SCREEN": {
-                mainHandler.post(new Runnable() {
+                getMainHandler().post(new Runnable() {
                     @Override
                     public void run() {
                         getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);


More information about the Libreoffice-commits mailing list