Bug 1213240 : Avoid parsing sessions json when empty r?bnicholson draft
authorvivek <vivekb.balakrishnan@gmail.com>
Thu, 07 Jan 2016 22:42:30 +0200
changeset 319780 b641d884b6113626505f24edae136f8decc385c6
parent 319779 ac1f7dba2219a54235dd789878488598b5e11506
child 512646 2327b64469fe9a7413e78dea4f1314155f0fe7eb
push id9089
push userbmo:vivekb.balakrishnan@gmail.com
push dateThu, 07 Jan 2016 20:44:08 +0000
reviewersbnicholson
bugs1213240
milestone46.0a1
Bug 1213240 : Avoid parsing sessions json when empty r?bnicholson
mobile/android/base/java/org/mozilla/gecko/SessionParser.java
--- a/mobile/android/base/java/org/mozilla/gecko/SessionParser.java
+++ b/mobile/android/base/java/org/mozilla/gecko/SessionParser.java
@@ -62,17 +62,24 @@ public abstract class SessionParser {
     }
 
     public void parse(String... sessionStrings) {
         final LinkedList<SessionTab> sessionTabs = new LinkedList<SessionTab>();
         int totalCount = 0;
         int selectedIndex = -1;
         try {
             for (String sessionString : sessionStrings) {
-                final JSONObject window = new JSONObject(sessionString).getJSONArray("windows").getJSONObject(0);
+                final JSONArray windowsArray = new JSONObject(sessionString).getJSONArray("windows");
+                if (windowsArray.length() == 0) {
+                    // Session json can be empty if the user has opted out of session restore.
+                    Log.d(LOGTAG, "Session restore file is empty, no session entries found.");
+                    continue;
+                }
+
+                final JSONObject window = windowsArray.getJSONObject(0);
                 final JSONArray tabs = window.getJSONArray("tabs");
                 final int optSelected = window.optInt("selected", -1);
                 final JSONArray closedTabs = window.optJSONArray("closedTabs");
                 if (closedTabs != null) {
                     onClosedTabsRead(closedTabs);
                 }
 
                 for (int i = 0; i < tabs.length(); i++) {