Merge "Always offer to restore"
diff --git a/src/com/android/browser/KeyChainLookup.java b/src/com/android/browser/KeyChainLookup.java
index 7f236e5..52be25a 100644
--- a/src/com/android/browser/KeyChainLookup.java
+++ b/src/com/android/browser/KeyChainLookup.java
@@ -18,8 +18,8 @@
 
 import android.content.Context;
 import android.os.AsyncTask;
-import android.os.RemoteException;
 import android.security.KeyChain;
+import android.security.KeyChainException;
 import android.webkit.ClientCertRequestHandler;
 import java.security.PrivateKey;
 import java.security.cert.X509Certificate;
@@ -42,7 +42,7 @@
         } catch (InterruptedException e) {
             mHandler.ignore();
             return null;
-        } catch (RemoteException e) {
+        } catch (KeyChainException e) {
             mHandler.ignore();
             return null;
         }
diff --git a/src/com/android/browser/NavTabScroller.java b/src/com/android/browser/NavTabScroller.java
index bd26df7..312e2b8 100644
--- a/src/com/android/browser/NavTabScroller.java
+++ b/src/com/android/browser/NavTabScroller.java
@@ -197,17 +197,7 @@
                 int bottom = child.getBottom();
                 if (top <= midy && bottom >= midy) {
                     sel = i;
-                } else {
-                    // check if on screen
-                    if (top > getScrollY() + getHeight() || bottom < getScrollY()) {
-                        if (!child.isPaused()) {
-                            child.pause();
-                        }
-                    } else {
-                        if (child.isPaused()) {
-                            child.resume();
-                        }
-                    }
+                    break;
                 }
             }
             if (sel != -1) {
diff --git a/src/com/android/browser/NavTabView.java b/src/com/android/browser/NavTabView.java
index 061e024..f170b0f 100644
--- a/src/com/android/browser/NavTabView.java
+++ b/src/com/android/browser/NavTabView.java
@@ -198,7 +198,9 @@
 
     @Override
     public void onDetachedFromWindow() {
-        mWebView.setProxyView(null);
+        if (mWebView != null) {
+            mWebView.setProxyView(null);
+        }
     }
 
     private static void removeFromParent(View v) {
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index e517d76..89f567b 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -33,7 +33,7 @@
 import android.os.Message;
 import android.os.SystemClock;
 import android.security.KeyChain;
-import android.security.KeyChainAliasResponse;
+import android.security.KeyChainAliasCallback;
 import android.speech.RecognizerResultsIntent;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -803,7 +803,7 @@
                 handler.ignore();
                 return;
             }
-            KeyChain.choosePrivateKeyAlias(mActivity, new KeyChainAliasResponse() {
+            KeyChain.choosePrivateKeyAlias(mActivity, new KeyChainAliasCallback() {
                 @Override public void alias(String alias) {
                     if (alias == null) {
                         handler.cancel();
@@ -811,7 +811,7 @@
                     }
                     new KeyChainLookup(mActivity, handler, alias).execute();
                 }
-            });
+            }, null, null, null, -1);
         }
 
         /**
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 0aaf3d6..1e21431 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -286,7 +286,11 @@
             }
         }
         outState.putLongArray(POSITIONS, ids);
-        final long cid = getCurrentTab().getId();
+        Tab current = getCurrentTab();
+        long cid = -1;
+        if (current != null) {
+            cid = current.getId();
+        }
         outState.putLong(CURRENT, cid);
     }