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 | |
| parent | 919bc4be3f1577c86608209ad43a9eef1b9fc434 (diff) | |
| download | packages_apps_Browser-f33b1637487af3786ee30f295f2c84db6db1e6b3.tar.gz packages_apps_Browser-f33b1637487af3786ee30f295f2c84db6db1e6b3.tar.bz2 packages_apps_Browser-f33b1637487af3786ee30f295f2c84db6db1e6b3.zip | |
Add freeze tab menu option
Adds a freeze tab menu option hidden behind about:debug for now.
Change-Id: I1b321de6a5dbcb13e87f6e658439f727970b0e4f
| -rw-r--r-- | res/menu-sw600dp/browser.xml | 3 | ||||
| -rw-r--r-- | res/menu/browser.xml | 3 | ||||
| -rw-r--r-- | res/values/strings.xml | 3 | ||||
| -rw-r--r-- | src/com/android/browser/Controller.java | 23 |
4 files changed, 32 insertions, 0 deletions
diff --git a/res/menu-sw600dp/browser.xml b/res/menu-sw600dp/browser.xml index be4a521fd..23366e7a4 100644 --- a/res/menu-sw600dp/browser.xml +++ b/res/menu-sw600dp/browser.xml @@ -34,6 +34,9 @@ android:alphabeticShortcut="s" /> <item android:id="@+id/save_webarchive_menu_id" android:title="@string/menu_save_webarchive" /> + <item + android:id="@+id/freeze_tab_menu_id" + android:title="@string/menu_freeze_tab" /> <item android:id="@+id/page_info_menu_id" android:title="@string/page_info" android:icon="@drawable/ic_pageinfo_holo_dark" diff --git a/res/menu/browser.xml b/res/menu/browser.xml index 90357e919..6eadcba7f 100644 --- a/res/menu/browser.xml +++ b/res/menu/browser.xml @@ -65,6 +65,9 @@ android:id="@+id/save_webarchive_menu_id" android:title="@string/menu_save_webarchive" /> <item + android:id="@+id/freeze_tab_menu_id" + android:title="@string/menu_freeze_tab" /> + <item android:id="@+id/page_info_menu_id" android:title="@string/page_info" android:icon="@drawable/ic_pageinfo_holo_dark" diff --git a/res/values/strings.xml b/res/values/strings.xml index ae28023d7..e51538ccf 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -235,6 +235,9 @@ <string name="copy_page_url">Copy page url</string> <!-- Menu item --> <string name="share_page">Share page</string> + <!-- Menu item to freeze a tab. This will make a view-only + snapshot of the page in a new tab. [CHAR LIMIT=50] --> + <string name="menu_freeze_tab">Freeze tab</string> <!-- Menu item for saving a page. [CHAR LIMIT=30] --> <string name="menu_save_webarchive">Save page</string> <!-- Toast informing the user that the page has been saved. [CHAR LIMIT=50] --> diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java index 3974a9c40..6a951c28c 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)) { |
