Merge "Fix IntentHandler behavior"
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 1f376d2..447e61b 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -1696,8 +1696,7 @@
break;
case R.id.page_info_menu_id:
- mPageDialogsHandler.showPageInfo(mTabControl.getCurrentTab(),
- false);
+ mPageDialogsHandler.showPageInfo(mTabControl.getCurrentTab(), false, null);
break;
case R.id.classic_history_menu_id:
diff --git a/src/com/android/browser/GoogleAccountLogin.java b/src/com/android/browser/GoogleAccountLogin.java
index 37654dc..c7d1924 100644
--- a/src/com/android/browser/GoogleAccountLogin.java
+++ b/src/com/android/browser/GoogleAccountLogin.java
@@ -57,8 +57,6 @@
private static final String GOOGLE = "com.google";
// Last auto login time
private static final String PREF_AUTOLOGIN_TIME = "last_autologin_time";
- // A week in milliseconds (7*24*60*60*1000)
- private static final long WEEK_IN_MILLIS = 604800000L;
private final Activity mActivity;
private final Account mAccount;
@@ -294,7 +292,12 @@
}
}, 2000);
mRunnable = null;
- mWebView.destroy();
+ mActivity.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mWebView.destroy();
+ }
+ });
}
}
diff --git a/src/com/android/browser/PageDialogsHandler.java b/src/com/android/browser/PageDialogsHandler.java
index c902f65..b39d863 100644
--- a/src/com/android/browser/PageDialogsHandler.java
+++ b/src/com/android/browser/PageDialogsHandler.java
@@ -39,6 +39,7 @@
private Context mContext;
private Controller mController;
private boolean mPageInfoFromShowSSLCertificateOnError;
+ private String mUrlCertificateOnError;
private Tab mPageInfoView;
private AlertDialog mPageInfoDialog;
@@ -63,7 +64,9 @@
public void onConfigurationChanged(Configuration config) {
if (mPageInfoDialog != null) {
mPageInfoDialog.dismiss();
- showPageInfo(mPageInfoView, mPageInfoFromShowSSLCertificateOnError);
+ showPageInfo(mPageInfoView,
+ mPageInfoFromShowSSLCertificateOnError,
+ mUrlCertificateOnError);
}
if (mSSLCertificateDialog != null) {
mSSLCertificateDialog.dismiss();
@@ -71,8 +74,9 @@
}
if (mSSLCertificateOnErrorDialog != null) {
mSSLCertificateOnErrorDialog.dismiss();
- showSSLCertificateOnError(mSSLCertificateOnErrorView, mSSLCertificateOnErrorHandler,
- mSSLCertificateOnErrorError);
+ showSSLCertificateOnError(mSSLCertificateOnErrorView,
+ mSSLCertificateOnErrorHandler,
+ mSSLCertificateOnErrorError);
}
if (mHttpAuthenticationDialog != null) {
mHttpAuthenticationDialog.reshow();
@@ -126,16 +130,19 @@
* this dialog was opened from the SSL-certificate-on-error dialog or
* not. This is important, since we need to know whether to return to
* the parent dialog or simply dismiss.
+ * @param urlCertificateOnError The URL that invokes SSLCertificateError.
+ * Null when fromShowSSLCertificateOnError is false.
*/
void showPageInfo(final Tab tab,
- final boolean fromShowSSLCertificateOnError) {
+ final boolean fromShowSSLCertificateOnError,
+ final String urlCertificateOnError) {
final LayoutInflater factory = LayoutInflater.from(mContext);
final View pageInfoView = factory.inflate(R.layout.page_info, null);
final WebView view = tab.getWebView();
- String url = tab.getUrl();
+ String url = fromShowSSLCertificateOnError ? urlCertificateOnError : tab.getUrl();
String title = tab.getTitle();
if (url == null) {
@@ -150,6 +157,7 @@
mPageInfoView = tab;
mPageInfoFromShowSSLCertificateOnError = fromShowSSLCertificateOnError;
+ mUrlCertificateOnError = urlCertificateOnError;
AlertDialog.Builder alertDialogBuilder =
new AlertDialog.Builder(mContext)
@@ -261,7 +269,7 @@
mSSLCertificateDialog = null;
mSSLCertificateView = null;
- showPageInfo(tab, false);
+ showPageInfo(tab, false, null);
}
})
.setOnCancelListener(
@@ -270,7 +278,7 @@
mSSLCertificateDialog = null;
mSSLCertificateView = null;
- showPageInfo(tab, false);
+ showPageInfo(tab, false, null);
}
})
.show();
@@ -359,7 +367,8 @@
showPageInfo(mController.getTabControl()
.getTabFromView(view),
- true);
+ true,
+ error.getUrl());
}
})
.setOnCancelListener(
diff --git a/src/com/android/browser/TabScrollView.java b/src/com/android/browser/TabScrollView.java
index f43d6d6..52dd6af 100644
--- a/src/com/android/browser/TabScrollView.java
+++ b/src/com/android/browser/TabScrollView.java
@@ -246,11 +246,11 @@
@Override
protected int getChildDrawingOrder(int count, int i) {
int next = -1;
- if ((i == (count - 1)) && (mSelected >= 0)) {
+ if ((i == (count - 1)) && (mSelected >= 0) && (mSelected < count)) {
next = mSelected;
} else {
next = count - i - 1;
- if (next <= mSelected) {
+ if (next <= mSelected && next > 0) {
next--;
}
}