diff options
author | John Reck <jreck@google.com> | 2011-06-04 20:00:23 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2011-06-04 20:00:23 -0700 |
commit | f33b1637487af3786ee30f295f2c84db6db1e6b3 (patch) | |
tree | 2a3f069c67f2b40099c9b934021582be779b563e /src/com/android/browser | |
parent | 919bc4be3f1577c86608209ad43a9eef1b9fc434 (diff) | |
download | packages_apps_browser-f33b1637487af3786ee30f295f2c84db6db1e6b3.zip packages_apps_browser-f33b1637487af3786ee30f295f2c84db6db1e6b3.tar.gz packages_apps_browser-f33b1637487af3786ee30f295f2c84db6db1e6b3.tar.bz2 |
Add freeze tab menu option
Adds a freeze tab menu option hidden behind about:debug for now.
Change-Id: I1b321de6a5dbcb13e87f6e658439f727970b0e4f
Diffstat (limited to 'src/com/android/browser')
-rw-r--r-- | src/com/android/browser/Controller.java | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java index 3974a9c..6a951c2 100644 --- a/src/com/android/browser/Controller.java +++ b/src/com/android/browser/Controller.java @@ -81,8 +81,10 @@ import com.android.browser.provider.BrowserProvider; import com.android.browser.search.SearchEngine; import com.android.common.Search; +import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.IOException; import java.net.URLEncoder; import java.util.Calendar; import java.util.HashMap; @@ -1494,6 +1496,7 @@ public class Controller final MenuItem counter = menu.findItem(R.id.dump_counters_menu_id); counter.setVisible(showDebugSettings); counter.setEnabled(showDebugSettings); + menu.findItem(R.id.freeze_tab_menu_id).setVisible(showDebugSettings); final MenuItem newtab = menu.findItem(R.id.new_tab_menu_id); newtab.setEnabled(getTabControl().canCreateNewTab()); @@ -1600,6 +1603,26 @@ public class Controller getCurrentTopWebView().showFindDialog(null, true); break; + case R.id.freeze_tab_menu_id: + // TODO: Show error messages + WebView source = getCurrentTopWebView(); + if (source == null) break; + Tab t = createNewTab(false, true, false); + if (t == null) break; + WebView pinned = t.getWebView(); + if (pinned == null) break; + try { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + source.saveViewState(bos); + ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); + pinned.loadViewState(bis); + bis.close(); + bos.close(); + } catch (IOException e) { + closeTab(t); + } + break; + case R.id.save_webarchive_menu_id: String state = Environment.getExternalStorageState(); if (!Environment.MEDIA_MOUNTED.equals(state)) { |