Set the correct url when there is no network access
Prevent NPE in AddBookmark
When the network is down and a page is loaded,
the URL bar does not get updated with the URL.
If the page is reloaded after network is available,
it reloads the old URL (instead of what was specified).
Change-Id: I401d6e177f839f111b19d8eb0110a30b1b18059a
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index 814d93b..0ae1032 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -632,7 +632,6 @@
String url = null;
mFakeTitle = (TextView) findViewById(R.id.fake_title);
-
if (mMap != null) {
Bundle b = mMap.getBundle(EXTRA_EDIT_BOOKMARK);
if (b != null) {
@@ -657,14 +656,13 @@
url = mOriginalUrl = mMap.getString(BrowserContract.Bookmarks.URL);
mTouchIconUrl = mMap.getString(TOUCH_ICON_URL);
mCurrentFolder = mMap.getLong(BrowserContract.Bookmarks.PARENT, DEFAULT_FOLDER_ID);
+
+ if (title.length() > MAX_TITLE_LENGTH) {
+ title = title.substring(0, MAX_TITLE_LENGTH);
+ }
}
mTitle = (EditText) findViewById(R.id.title);
-
- if (title.length() > MAX_TITLE_LENGTH) {
- title = title.substring(0, MAX_TITLE_LENGTH);
- }
-
mTitle.setText(title);
BrowserUtils.maxLengthFilter(AddBookmarkPage.this, mTitle, MAX_TITLE_LENGTH);
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 320e4c8..0a6c83d 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -200,6 +200,7 @@
private boolean mUpdateThumbnail;
private Timestamp timestamp;
private boolean mFullScreen = false;
+ private boolean mReceivedError;
/**
* See {@link #clearBackStackWhenItemAdded(java.util.regex.Pattern)}.
@@ -380,6 +381,7 @@
public void onPageStarted(WebView view, String url, Bitmap favicon) {
mInPageLoad = true;
mPageFinished = false;
+ mReceivedError = false;
mUpdateThumbnail = true;
mPageLoadProgress = INITIAL_PROGRESS;
mCurrentState = new PageState(mContext,
@@ -459,6 +461,10 @@
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
+ // Used for the syncCurrentState to use
+ // the failing url instead of using webview url
+ mReceivedError = true;
+
if (errorCode != WebViewClient.ERROR_HOST_LOOKUP &&
errorCode != WebViewClient.ERROR_CONNECT &&
errorCode != WebViewClient.ERROR_BAD_URL &&
@@ -708,13 +714,22 @@
private void syncCurrentState(WebView view, String url) {
// Sync state (in case of stop/timeout)
- mCurrentState.mUrl = view.getUrl();
+
+ if (mReceivedError) {
+ mCurrentState.mUrl = url;
+ mCurrentState.mOriginalUrl = url;
+ } else {
+ mCurrentState.mUrl = view.getUrl();
+ mCurrentState.mOriginalUrl = view.getOriginalUrl();
+ mCurrentState.mFavicon = view.getFavicon();
+ }
+
if (mCurrentState.mUrl == null) {
mCurrentState.mUrl = "";
}
- mCurrentState.mOriginalUrl = view.getOriginalUrl();
mCurrentState.mTitle = view.getTitle();
- mCurrentState.mFavicon = view.getFavicon();
+
+
if (!URLUtil.isHttpsUrl(mCurrentState.mUrl)) {
// In case we stop when loading an HTTPS page from an HTTP page
// but before a provisional load occurred