summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAxesh R. Ajmera <aajmera@codeaurora.org>2015-07-23 15:08:14 -0700
committerjrizzoli <joey@cyanogenmoditalia.it>2015-08-28 13:15:46 +0200
commit4a6838a6f0e18018663b6ecd69559090ef25cd73 (patch)
tree561f0a8db5f09670b875ec092e6b1352799680ce
parentee99203941e22a7adac7cacd0ff126ec78921523 (diff)
downloadandroid_packages_apps_Gello-4a6838a6f0e18018663b6ecd69559090ef25cd73.tar.gz
android_packages_apps_Gello-4a6838a6f0e18018663b6ecd69559090ef25cd73.tar.bz2
android_packages_apps_Gello-4a6838a6f0e18018663b6ecd69559090ef25cd73.zip
Fix issue when navigating on Snapshot Tab
- When navigating on snapshot tab, clicking on the links in the snapshot tab causes navigation in the same tab to occur This is wrong behaviour in terms of user experience and would also cause issues with Edge navigation Change-Id: I9b2f7eb27aed0209f0245ab71ee69fe087eb9161
-rw-r--r--src/com/android/browser/Controller.java32
-rw-r--r--src/com/android/browser/SnapshotTab.java20
-rw-r--r--src/com/android/browser/Tab.java7
3 files changed, 28 insertions, 31 deletions
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index dbbc164a..c546f485 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -1058,7 +1058,9 @@ public class Controller
@Override
public boolean shouldOverrideUrlLoading(Tab tab, WebView view, String url) {
- return mUrlHandler.shouldOverrideUrlLoading(tab, view, url);
+ // if tab is snapshot tab we want to prevent navigation from occuring
+ // since snapshot tab opens a new tab with the url
+ return goLive(url) || mUrlHandler.shouldOverrideUrlLoading(tab, view, url);
}
@Override
@@ -2149,9 +2151,10 @@ public class Controller
break;
case R.id.snapshot_go_live:
- goLive();
- return true;
-
+ // passing null to distinguish between
+ // "go live" button and navigating a web page
+ // on a snapshot tab
+ return goLive(null);
case R.id.share_page_menu_id:
Tab currentTab = mTabControl.getCurrentTab();
if (null == currentTab) {
@@ -2360,23 +2363,18 @@ public class Controller
}
}
- private void goLive() {
- if (!getCurrentTab().isSnapshot()) return;
+ public boolean goLive(String url) {
+ if (!getCurrentTab().isSnapshot())
+ return false;
SnapshotTab t = (SnapshotTab) getCurrentTab();
- String url = t.getLiveUrl();
- boolean onlySingleTabRemaining = false;
- if (mTabControl.getTabCount() > 1) {
- // destroy the old snapshot tab
- closeCurrentTab();
- } else {
- onlySingleTabRemaining = true;
- }
- Tab liveTab = createNewTab(false, true, false);
- if (onlySingleTabRemaining) {
+
+ if (url == null) { // "go live" button was clicked
+ url = t.getLiveUrl();
closeTab(t);
}
-
+ Tab liveTab = createNewTab(false, true, false);
loadUrl(liveTab, url);
+ return true;
}
private void showExitDialog(final Activity activity) {
diff --git a/src/com/android/browser/SnapshotTab.java b/src/com/android/browser/SnapshotTab.java
index 7471bca9..c63bf102 100644
--- a/src/com/android/browser/SnapshotTab.java
+++ b/src/com/android/browser/SnapshotTab.java
@@ -49,7 +49,6 @@ public class SnapshotTab extends Tab {
private long mDateCreated;
private boolean mIsLive;
private String mLiveUrl;
- private Bundle mSavedState;
// Used for saving and restoring each Tab
static final String SNAPSHOT_ID = "snapshotId";
@@ -65,6 +64,7 @@ public class SnapshotTab extends Tab {
WebView web = mWebViewFactory.createWebView(false);
setWebView(web);
loadData();
+ mIsLive = false;
}
@Override
@@ -125,10 +125,11 @@ public class SnapshotTab extends Tab {
return super.saveState();
}
- mSavedState = new Bundle();
- mSavedState = super.saveState();
- mSavedState.putLong(SNAPSHOT_ID, mSnapshotId);
- return mSavedState;
+ Bundle savedState = new Bundle();
+ savedState.putLong(SNAPSHOT_ID, mSnapshotId);
+ savedState.putLong(ID, getId());
+
+ return savedState;
}
public long getDateCreated() {
@@ -140,15 +141,6 @@ public class SnapshotTab extends Tab {
}
@Override
- public void loadUrl(String url, Map<String, String> headers) {
- if (!mIsLive) {
- mIsLive = true;
- getWebView().clearViewState();
- }
- super.loadUrl(url, headers);
- }
-
- @Override
public boolean canGoBack() {
return super.canGoBack() || mIsLive;
}
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index a4cc47fe..3fc6eb55 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -655,6 +655,8 @@ class Tab implements PictureListener {
return;
}
+
+
final int idx = view.copyBackForwardList().getCurrentIndex();
boolean bitmapExists = view.hasSnapshot(idx);
@@ -681,6 +683,11 @@ class Tab implements PictureListener {
return;
}
+ // prevent snapshot tab from commiting any history
+ if (isSnapshot()) {
+ return;
+ }
+
mTabHistoryUpdateObservable.set(index);
final int maxIdx = view.copyBackForwardList().getSize();
final WebView wv = view;