Fix issue where custom content would show up on boot (issue 10713745)

Change-Id: I1c03784970fe1a88e2561f1c5367979cda825973
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 324a479..afaf223 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -1082,8 +1082,9 @@
             mOnResumeState = State.APPS_CUSTOMIZE;
         }
 
-        int currentScreen = savedState.getInt(RUNTIME_STATE_CURRENT_SCREEN, -1);
-        if (currentScreen > -1) {
+        int currentScreen = savedState.getInt(RUNTIME_STATE_CURRENT_SCREEN,
+                PagedView.INVALID_RESTORE_PAGE);
+        if (currentScreen != PagedView.INVALID_RESTORE_PAGE) {
             mWorkspace.setRestorePage(currentScreen);
         }
 
@@ -1703,7 +1704,9 @@
 
     @Override
     protected void onSaveInstanceState(Bundle outState) {
-        outState.putInt(RUNTIME_STATE_CURRENT_SCREEN, mWorkspace.getNextPage());
+        if (mWorkspace.getChildCount() > 0) {
+            outState.putInt(RUNTIME_STATE_CURRENT_SCREEN, mWorkspace.getRestorePage());
+        }
         super.onSaveInstanceState(outState);
 
         outState.putInt(RUNTIME_STATE, mState.ordinal());
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java
index 2a339c0..e982985 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -97,6 +97,8 @@
     private static final boolean DISABLE_TOUCH_SIDE_PAGES = true;
     private static final boolean DISABLE_FLING_TO_DELETE = true;
 
+    public static final int INVALID_RESTORE_PAGE = -1001;
+
     private boolean mFreeScroll = false;
     private int mFreeScrollMinScrollX = -1;
     private int mFreeScrollMaxScrollX = -1;
@@ -115,7 +117,7 @@
     private int mNormalChildHeight;
 
     protected int mCurrentPage;
-    protected int mRestorePage = -1;
+    protected int mRestorePage = INVALID_RESTORE_PAGE;
     protected int mChildCountOnLastLayout;
 
     protected int mNextPage = INVALID_PAGE;
@@ -546,7 +548,6 @@
         if (getChildCount() == 0) {
             return;
         }
-
         mForceScreenScrolled = true;
         mCurrentPage = Math.max(0, Math.min(currentPage, getPageCount() - 1));
         updateCurrentPageScroll();
@@ -982,9 +983,9 @@
 
         if (mScroller.isFinished() && mChildCountOnLastLayout != getChildCount() &&
                 !mDeferringForDelete) {
-            if (mRestorePage > -1) {
+            if (mRestorePage != INVALID_RESTORE_PAGE) {
                 setCurrentPage(mRestorePage);
-                mRestorePage = -1;
+                mRestorePage = INVALID_RESTORE_PAGE;
             } else {
                 setCurrentPage(getNextPage());
             }
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 3c9a139..7a16474 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -538,10 +538,14 @@
 
         // Ensure that the current page and default page are maintained.
         mDefaultPage = mOriginalDefaultPage + 1;
-        setCurrentPage(getCurrentPage() + 1);
 
         // Update the custom content hint
         mLauncher.updateCustomContentHintVisibility();
+        if (mRestorePage != INVALID_RESTORE_PAGE) {
+            mRestorePage = mRestorePage + 1;
+        } else {
+            setCurrentPage(getCurrentPage() + 1);
+        }
     }
 
     public void removeCustomContentPage() {
@@ -557,10 +561,14 @@
 
         // Ensure that the current page and default page are maintained.
         mDefaultPage = mOriginalDefaultPage - 1;
-        setCurrentPage(getCurrentPage() - 1);
 
         // Update the custom content hint
         mLauncher.updateCustomContentHintVisibility();
+        if (mRestorePage != INVALID_RESTORE_PAGE) {
+            mRestorePage = mRestorePage - 1;
+        } else {
+            setCurrentPage(getCurrentPage() - 1);
+        }
     }
 
     public void addToCustomContentPage(View customContent, CustomContentCallbacks callbacks,
@@ -3722,6 +3730,10 @@
         return mDragInfo;
     }
 
+    public int getRestorePage() {
+        return getNextPage() - numCustomPages();
+    }
+
     /**
      * Calculate the nearest cell where the given object would be dropped.
      *