diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 26ea91e..9a8a73b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -192,6 +192,10 @@
             </intent-filter>
         </activity>
 
+        <activity android:name="ComboViewActivity"
+                  android:configChanges="orientation|keyboardHidden|keyboard|screenSize">
+        </activity>
+
         <!-- Bookmark thumbnail homescreen widget -->
         <receiver
             android:name=".widget.BookmarkThumbnailWidgetProvider"
diff --git a/res/drawable-hdpi/ic_bookmark_off_holo_dark.png b/res/drawable-hdpi/ic_bookmark_off_holo_dark.png
index 9ec0a44..fd5fdb9 100644
--- a/res/drawable-hdpi/ic_bookmark_off_holo_dark.png
+++ b/res/drawable-hdpi/ic_bookmark_off_holo_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_bookmark_on_holo_dark.png b/res/drawable-hdpi/ic_bookmark_on_holo_dark.png
index 1d67f1a..4651918 100644
--- a/res/drawable-hdpi/ic_bookmark_on_holo_dark.png
+++ b/res/drawable-hdpi/ic_bookmark_on_holo_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_bookmarks_holo_dark.png b/res/drawable-hdpi/ic_bookmarks_holo_dark.png
index d3070bf..76f54a1 100644
--- a/res/drawable-hdpi/ic_bookmarks_holo_dark.png
+++ b/res/drawable-hdpi/ic_bookmarks_holo_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_close_window_holo_dark.png b/res/drawable-hdpi/ic_close_window_holo_dark.png
index d459352..6e852ec 100644
--- a/res/drawable-hdpi/ic_close_window_holo_dark.png
+++ b/res/drawable-hdpi/ic_close_window_holo_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_incognito_holo_dark.png b/res/drawable-hdpi/ic_incognito_holo_dark.png
index f4997ae..9d6bc59 100644
--- a/res/drawable-hdpi/ic_incognito_holo_dark.png
+++ b/res/drawable-hdpi/ic_incognito_holo_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_new_window_holo_dark.png b/res/drawable-hdpi/ic_new_window_holo_dark.png
index bc4017a..2849a16 100644
--- a/res/drawable-hdpi/ic_new_window_holo_dark.png
+++ b/res/drawable-hdpi/ic_new_window_holo_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_refresh_holo_dark.png b/res/drawable-hdpi/ic_refresh_holo_dark.png
index 1da3ea8..f6c4f72 100644
--- a/res/drawable-hdpi/ic_refresh_holo_dark.png
+++ b/res/drawable-hdpi/ic_refresh_holo_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_search_holo_dark.png b/res/drawable-hdpi/ic_search_holo_dark.png
index 688ef5d..8ed044a 100644
--- a/res/drawable-hdpi/ic_search_holo_dark.png
+++ b/res/drawable-hdpi/ic_search_holo_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_snapshot.png b/res/drawable-hdpi/ic_snapshot.png
deleted file mode 100644
index a621cb4..0000000
--- a/res/drawable-hdpi/ic_snapshot.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_stop_holo_dark.png b/res/drawable-hdpi/ic_stop_holo_dark.png
index e31dd22..b68c60f 100644
--- a/res/drawable-hdpi/ic_stop_holo_dark.png
+++ b/res/drawable-hdpi/ic_stop_holo_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_web_holo_dark.png b/res/drawable-hdpi/ic_web_holo_dark.png
index d936c2c..1afe636 100644
--- a/res/drawable-hdpi/ic_web_holo_dark.png
+++ b/res/drawable-hdpi/ic_web_holo_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_windows_holo_dark.png b/res/drawable-hdpi/ic_windows_holo_dark.png
index 98d5693..c79005c 100644
--- a/res/drawable-hdpi/ic_windows_holo_dark.png
+++ b/res/drawable-hdpi/ic_windows_holo_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/nav_tab_bg.9.png b/res/drawable-hdpi/nav_tab_bg.9.png
new file mode 100644
index 0000000..203c358
--- /dev/null
+++ b/res/drawable-hdpi/nav_tab_bg.9.png
Binary files differ
diff --git a/res/drawable-mdpi/browsertab_add.png b/res/drawable-mdpi/browsertab_add.png
index f960c1d..3f20f2a 100644
--- a/res/drawable-mdpi/browsertab_add.png
+++ b/res/drawable-mdpi/browsertab_add.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_bookmark_off_holo_dark.png b/res/drawable-mdpi/ic_bookmark_off_holo_dark.png
index 7446bdf..a863fe6 100644
--- a/res/drawable-mdpi/ic_bookmark_off_holo_dark.png
+++ b/res/drawable-mdpi/ic_bookmark_off_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_bookmark_on_holo_dark.png b/res/drawable-mdpi/ic_bookmark_on_holo_dark.png
index 79a183f..5a6d469 100644
--- a/res/drawable-mdpi/ic_bookmark_on_holo_dark.png
+++ b/res/drawable-mdpi/ic_bookmark_on_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_bookmarks_holo_dark.png b/res/drawable-mdpi/ic_bookmarks_holo_dark.png
index ea45051..8cd9242 100644
--- a/res/drawable-mdpi/ic_bookmarks_holo_dark.png
+++ b/res/drawable-mdpi/ic_bookmarks_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_close_window_holo_dark.png b/res/drawable-mdpi/ic_close_window_holo_dark.png
index 9bb8e87..95d6f62 100644
--- a/res/drawable-mdpi/ic_close_window_holo_dark.png
+++ b/res/drawable-mdpi/ic_close_window_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_incognito_holo_dark.png b/res/drawable-mdpi/ic_incognito_holo_dark.png
index dfb380a..14747b6 100644
--- a/res/drawable-mdpi/ic_incognito_holo_dark.png
+++ b/res/drawable-mdpi/ic_incognito_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_new_window_holo_dark.png b/res/drawable-mdpi/ic_new_window_holo_dark.png
index b16aacc..5cdd4b5 100644
--- a/res/drawable-mdpi/ic_new_window_holo_dark.png
+++ b/res/drawable-mdpi/ic_new_window_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_refresh_holo_dark.png b/res/drawable-mdpi/ic_refresh_holo_dark.png
index 0aec8a0..bcb350f 100644
--- a/res/drawable-mdpi/ic_refresh_holo_dark.png
+++ b/res/drawable-mdpi/ic_refresh_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_search_holo_dark.png b/res/drawable-mdpi/ic_search_holo_dark.png
index a84edf3..b5eeb78 100644
--- a/res/drawable-mdpi/ic_search_holo_dark.png
+++ b/res/drawable-mdpi/ic_search_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_snapshot.png b/res/drawable-mdpi/ic_snapshot.png
deleted file mode 100644
index 6054acb..0000000
--- a/res/drawable-mdpi/ic_snapshot.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_stop_holo_dark.png b/res/drawable-mdpi/ic_stop_holo_dark.png
index 61edb02..b230ab9 100644
--- a/res/drawable-mdpi/ic_stop_holo_dark.png
+++ b/res/drawable-mdpi/ic_stop_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_web_holo_dark.png b/res/drawable-mdpi/ic_web_holo_dark.png
index fcf6785..b394fbb 100644
--- a/res/drawable-mdpi/ic_web_holo_dark.png
+++ b/res/drawable-mdpi/ic_web_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_windows_holo_dark.png b/res/drawable-mdpi/ic_windows_holo_dark.png
index 7eabd08..37891ee 100644
--- a/res/drawable-mdpi/ic_windows_holo_dark.png
+++ b/res/drawable-mdpi/ic_windows_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/nav_tab_bg.9.png b/res/drawable-mdpi/nav_tab_bg.9.png
new file mode 100644
index 0000000..8c466d8
--- /dev/null
+++ b/res/drawable-mdpi/nav_tab_bg.9.png
Binary files differ
diff --git a/res/drawable-nodpi/bg_browser.png b/res/drawable-nodpi/bg_browser.png
deleted file mode 100644
index c7907d7..0000000
--- a/res/drawable-nodpi/bg_browser.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/app_web_browser_sm.png b/res/drawable-xhdpi/app_web_browser_sm.png
new file mode 100644
index 0000000..35d857b
--- /dev/null
+++ b/res/drawable-xhdpi/app_web_browser_sm.png
Binary files differ
diff --git a/res/drawable-xhdpi/bg_bookmarks_widget_holo.9.png b/res/drawable-xhdpi/bg_bookmarks_widget_holo.9.png
new file mode 100644
index 0000000..62b411e
--- /dev/null
+++ b/res/drawable-xhdpi/bg_bookmarks_widget_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/bookmarks_widget_thumb_selector_focused.9.png b/res/drawable-xhdpi/bookmarks_widget_thumb_selector_focused.9.png
new file mode 100644
index 0000000..e95564f
--- /dev/null
+++ b/res/drawable-xhdpi/bookmarks_widget_thumb_selector_focused.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/bookmarks_widget_thumb_selector_longpressed.9.png b/res/drawable-xhdpi/bookmarks_widget_thumb_selector_longpressed.9.png
new file mode 100644
index 0000000..ed5a00b
--- /dev/null
+++ b/res/drawable-xhdpi/bookmarks_widget_thumb_selector_longpressed.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/bookmarks_widget_thumb_selector_pressed.9.png b/res/drawable-xhdpi/bookmarks_widget_thumb_selector_pressed.9.png
new file mode 100644
index 0000000..20941ec
--- /dev/null
+++ b/res/drawable-xhdpi/bookmarks_widget_thumb_selector_pressed.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/border_thumb_bookmarks_widget_holo.9.png b/res/drawable-xhdpi/border_thumb_bookmarks_widget_holo.9.png
new file mode 100644
index 0000000..40964eb
--- /dev/null
+++ b/res/drawable-xhdpi/border_thumb_bookmarks_widget_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/browser_thumbnail.png b/res/drawable-xhdpi/browser_thumbnail.png
new file mode 100644
index 0000000..a2db941
--- /dev/null
+++ b/res/drawable-xhdpi/browser_thumbnail.png
Binary files differ
diff --git a/res/drawable-xhdpi/browser_widget_preview.png b/res/drawable-xhdpi/browser_widget_preview.png
new file mode 100644
index 0000000..2112b9e
--- /dev/null
+++ b/res/drawable-xhdpi/browser_widget_preview.png
Binary files differ
diff --git a/res/drawable-xhdpi/browsertab_add.png b/res/drawable-xhdpi/browsertab_add.png
new file mode 100644
index 0000000..e44f72b
--- /dev/null
+++ b/res/drawable-xhdpi/browsertab_add.png
Binary files differ
diff --git a/res/drawable-xhdpi/browsertab_add_focused.png b/res/drawable-xhdpi/browsertab_add_focused.png
new file mode 100644
index 0000000..7039974
--- /dev/null
+++ b/res/drawable-xhdpi/browsertab_add_focused.png
Binary files differ
diff --git a/res/drawable-xhdpi/browsertab_inactive.png b/res/drawable-xhdpi/browsertab_inactive.png
new file mode 100644
index 0000000..28eeed4
--- /dev/null
+++ b/res/drawable-xhdpi/browsertab_inactive.png
Binary files differ
diff --git a/res/drawable-xhdpi/default_video_poster.png b/res/drawable-xhdpi/default_video_poster.png
new file mode 100644
index 0000000..5eff15c
--- /dev/null
+++ b/res/drawable-xhdpi/default_video_poster.png
Binary files differ
diff --git a/res/drawable-xhdpi/geolocation_permissions_prompt_background.9.png b/res/drawable-xhdpi/geolocation_permissions_prompt_background.9.png
new file mode 100644
index 0000000..19a35a3
--- /dev/null
+++ b/res/drawable-xhdpi/geolocation_permissions_prompt_background.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_add_string.png b/res/drawable-xhdpi/ic_add_string.png
new file mode 100644
index 0000000..7ea150d
--- /dev/null
+++ b/res/drawable-xhdpi/ic_add_string.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_back_disabled_holo_dark.png b/res/drawable-xhdpi/ic_back_disabled_holo_dark.png
new file mode 100644
index 0000000..9f99c00
--- /dev/null
+++ b/res/drawable-xhdpi/ic_back_disabled_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_back_hierarchy_holo_dark.png b/res/drawable-xhdpi/ic_back_hierarchy_holo_dark.png
new file mode 100644
index 0000000..e459b98
--- /dev/null
+++ b/res/drawable-xhdpi/ic_back_hierarchy_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_back_holo_dark.png b/res/drawable-xhdpi/ic_back_holo_dark.png
new file mode 100644
index 0000000..f79f20a
--- /dev/null
+++ b/res/drawable-xhdpi/ic_back_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_bookmark_off_holo_dark.png b/res/drawable-xhdpi/ic_bookmark_off_holo_dark.png
new file mode 100644
index 0000000..05e9ec8
--- /dev/null
+++ b/res/drawable-xhdpi/ic_bookmark_off_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_bookmark_on_holo_dark.png b/res/drawable-xhdpi/ic_bookmark_on_holo_dark.png
new file mode 100644
index 0000000..764adb3
--- /dev/null
+++ b/res/drawable-xhdpi/ic_bookmark_on_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_bookmark_widget_bookmark_holo_dark.png b/res/drawable-xhdpi/ic_bookmark_widget_bookmark_holo_dark.png
new file mode 100644
index 0000000..8025248
--- /dev/null
+++ b/res/drawable-xhdpi/ic_bookmark_widget_bookmark_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_bookmarks_history_holo_dark.png b/res/drawable-xhdpi/ic_bookmarks_history_holo_dark.png
new file mode 100644
index 0000000..702379b
--- /dev/null
+++ b/res/drawable-xhdpi/ic_bookmarks_history_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_bookmarks_holo_dark.png b/res/drawable-xhdpi/ic_bookmarks_holo_dark.png
new file mode 100644
index 0000000..68b0a61
--- /dev/null
+++ b/res/drawable-xhdpi/ic_bookmarks_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_close_window_holo_dark.png b/res/drawable-xhdpi/ic_close_window_holo_dark.png
new file mode 100644
index 0000000..dc17740
--- /dev/null
+++ b/res/drawable-xhdpi/ic_close_window_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dialog_browser_certificate_partially_secure.png b/res/drawable-xhdpi/ic_dialog_browser_certificate_partially_secure.png
new file mode 100644
index 0000000..37c0b91
--- /dev/null
+++ b/res/drawable-xhdpi/ic_dialog_browser_certificate_partially_secure.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dialog_browser_certificate_secure.png b/res/drawable-xhdpi/ic_dialog_browser_certificate_secure.png
new file mode 100644
index 0000000..036eba6
--- /dev/null
+++ b/res/drawable-xhdpi/ic_dialog_browser_certificate_secure.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dialog_browser_security_bad.png b/res/drawable-xhdpi/ic_dialog_browser_security_bad.png
new file mode 100644
index 0000000..1e3068b
--- /dev/null
+++ b/res/drawable-xhdpi/ic_dialog_browser_security_bad.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_dialog_browser_security_good.png b/res/drawable-xhdpi/ic_dialog_browser_security_good.png
new file mode 100644
index 0000000..e8badf6
--- /dev/null
+++ b/res/drawable-xhdpi/ic_dialog_browser_security_good.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_downloads_holo_dark.png b/res/drawable-xhdpi/ic_downloads_holo_dark.png
new file mode 100644
index 0000000..0681bd2
--- /dev/null
+++ b/res/drawable-xhdpi/ic_downloads_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_folder_holo_dark.png b/res/drawable-xhdpi/ic_folder_holo_dark.png
new file mode 100644
index 0000000..6bdb7d0
--- /dev/null
+++ b/res/drawable-xhdpi/ic_folder_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_forward_disabled_holo_dark.png b/res/drawable-xhdpi/ic_forward_disabled_holo_dark.png
new file mode 100644
index 0000000..bbe6571
--- /dev/null
+++ b/res/drawable-xhdpi/ic_forward_disabled_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_forward_holo_dark.png b/res/drawable-xhdpi/ic_forward_holo_dark.png
new file mode 100644
index 0000000..c0e8371
--- /dev/null
+++ b/res/drawable-xhdpi/ic_forward_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_go_holo_dark.png b/res/drawable-xhdpi/ic_go_holo_dark.png
new file mode 100644
index 0000000..e4b59b3
--- /dev/null
+++ b/res/drawable-xhdpi/ic_go_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_gps_denied_holo_dark.png b/res/drawable-xhdpi/ic_gps_denied_holo_dark.png
new file mode 100644
index 0000000..a695cda
--- /dev/null
+++ b/res/drawable-xhdpi/ic_gps_denied_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_gps_on_holo_dark.png b/res/drawable-xhdpi/ic_gps_on_holo_dark.png
new file mode 100644
index 0000000..38c1892
--- /dev/null
+++ b/res/drawable-xhdpi/ic_gps_on_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_home_holo_dark.png b/res/drawable-xhdpi/ic_home_holo_dark.png
new file mode 100644
index 0000000..177abe9
--- /dev/null
+++ b/res/drawable-xhdpi/ic_home_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_home_info_holo_dark.png b/res/drawable-xhdpi/ic_home_info_holo_dark.png
new file mode 100644
index 0000000..6f43ba5
--- /dev/null
+++ b/res/drawable-xhdpi/ic_home_info_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_incognito_holo_dark.png b/res/drawable-xhdpi/ic_incognito_holo_dark.png
new file mode 100644
index 0000000..50009e9
--- /dev/null
+++ b/res/drawable-xhdpi/ic_incognito_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_launcher_shortcut_browser_bookmark.png b/res/drawable-xhdpi/ic_launcher_shortcut_browser_bookmark.png
new file mode 100644
index 0000000..0711f92
--- /dev/null
+++ b/res/drawable-xhdpi/ic_launcher_shortcut_browser_bookmark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_list_data_large.png b/res/drawable-xhdpi/ic_list_data_large.png
new file mode 100644
index 0000000..4047c4d
--- /dev/null
+++ b/res/drawable-xhdpi/ic_list_data_large.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_list_data_off.png b/res/drawable-xhdpi/ic_list_data_off.png
new file mode 100644
index 0000000..b508b6b
--- /dev/null
+++ b/res/drawable-xhdpi/ic_list_data_off.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_list_data_small.png b/res/drawable-xhdpi/ic_list_data_small.png
new file mode 100644
index 0000000..680e69c
--- /dev/null
+++ b/res/drawable-xhdpi/ic_list_data_small.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_list_view_holo_dark.png b/res/drawable-xhdpi/ic_list_view_holo_dark.png
new file mode 100644
index 0000000..30270da
--- /dev/null
+++ b/res/drawable-xhdpi/ic_list_view_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_findonpage_normal.png b/res/drawable-xhdpi/ic_menu_findonpage_normal.png
new file mode 100644
index 0000000..287b029
--- /dev/null
+++ b/res/drawable-xhdpi/ic_menu_findonpage_normal.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_new_window.png b/res/drawable-xhdpi/ic_menu_new_window.png
new file mode 100644
index 0000000..6caa148
--- /dev/null
+++ b/res/drawable-xhdpi/ic_menu_new_window.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_new_incognito_holo_dark.png b/res/drawable-xhdpi/ic_new_incognito_holo_dark.png
new file mode 100644
index 0000000..2f21240
--- /dev/null
+++ b/res/drawable-xhdpi/ic_new_incognito_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_new_window_holo_dark.png b/res/drawable-xhdpi/ic_new_window_holo_dark.png
new file mode 100644
index 0000000..4f2e240
--- /dev/null
+++ b/res/drawable-xhdpi/ic_new_window_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_pageinfo_holo_dark.png b/res/drawable-xhdpi/ic_pageinfo_holo_dark.png
new file mode 100644
index 0000000..23e948a
--- /dev/null
+++ b/res/drawable-xhdpi/ic_pageinfo_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_partial_secure.png b/res/drawable-xhdpi/ic_partial_secure.png
new file mode 100644
index 0000000..82ff296
--- /dev/null
+++ b/res/drawable-xhdpi/ic_partial_secure.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_querybuilder_disabled.png b/res/drawable-xhdpi/ic_querybuilder_disabled.png
new file mode 100644
index 0000000..79fb478
--- /dev/null
+++ b/res/drawable-xhdpi/ic_querybuilder_disabled.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_querybuilder_normal.png b/res/drawable-xhdpi/ic_querybuilder_normal.png
new file mode 100644
index 0000000..cc3ce59
--- /dev/null
+++ b/res/drawable-xhdpi/ic_querybuilder_normal.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_querybuilder_pressed.png b/res/drawable-xhdpi/ic_querybuilder_pressed.png
new file mode 100644
index 0000000..0693fa3
--- /dev/null
+++ b/res/drawable-xhdpi/ic_querybuilder_pressed.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_refresh_holo_dark.png b/res/drawable-xhdpi/ic_refresh_holo_dark.png
new file mode 100644
index 0000000..716dd53
--- /dev/null
+++ b/res/drawable-xhdpi/ic_refresh_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_search_category_bookmark.png b/res/drawable-xhdpi/ic_search_category_bookmark.png
new file mode 100644
index 0000000..8b5ffa1
--- /dev/null
+++ b/res/drawable-xhdpi/ic_search_category_bookmark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_search_category_browser.png b/res/drawable-xhdpi/ic_search_category_browser.png
new file mode 100644
index 0000000..8b195c1
--- /dev/null
+++ b/res/drawable-xhdpi/ic_search_category_browser.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_search_category_history.png b/res/drawable-xhdpi/ic_search_category_history.png
new file mode 100644
index 0000000..8a0e828
--- /dev/null
+++ b/res/drawable-xhdpi/ic_search_category_history.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_search_category_suggest.png b/res/drawable-xhdpi/ic_search_category_suggest.png
new file mode 100644
index 0000000..985a201
--- /dev/null
+++ b/res/drawable-xhdpi/ic_search_category_suggest.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_search_holo_dark.png b/res/drawable-xhdpi/ic_search_holo_dark.png
new file mode 100644
index 0000000..e94096f
--- /dev/null
+++ b/res/drawable-xhdpi/ic_search_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_secure_holo_dark.png b/res/drawable-xhdpi/ic_secure_holo_dark.png
new file mode 100644
index 0000000..0842acc
--- /dev/null
+++ b/res/drawable-xhdpi/ic_secure_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_settings_holo_dark.png b/res/drawable-xhdpi/ic_settings_holo_dark.png
new file mode 100644
index 0000000..0541407
--- /dev/null
+++ b/res/drawable-xhdpi/ic_settings_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_share_holo_dark.png b/res/drawable-xhdpi/ic_share_holo_dark.png
new file mode 100644
index 0000000..5c3047a
--- /dev/null
+++ b/res/drawable-xhdpi/ic_share_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_stop_holo_dark.png b/res/drawable-xhdpi/ic_stop_holo_dark.png
new file mode 100644
index 0000000..11cd91f
--- /dev/null
+++ b/res/drawable-xhdpi/ic_stop_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_tab_close.png b/res/drawable-xhdpi/ic_tab_close.png
new file mode 100644
index 0000000..fa63021
--- /dev/null
+++ b/res/drawable-xhdpi/ic_tab_close.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_thumbnail_view_holo_dark.png b/res/drawable-xhdpi/ic_thumbnail_view_holo_dark.png
new file mode 100644
index 0000000..d03787b
--- /dev/null
+++ b/res/drawable-xhdpi/ic_thumbnail_view_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_voice_search_holo_dark.png b/res/drawable-xhdpi/ic_voice_search_holo_dark.png
new file mode 100644
index 0000000..bfeb7aa
--- /dev/null
+++ b/res/drawable-xhdpi/ic_voice_search_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_web_holo_dark.png b/res/drawable-xhdpi/ic_web_holo_dark.png
new file mode 100644
index 0000000..7271169
--- /dev/null
+++ b/res/drawable-xhdpi/ic_web_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_windows_holo_dark.png b/res/drawable-xhdpi/ic_windows_holo_dark.png
new file mode 100644
index 0000000..f57eb68
--- /dev/null
+++ b/res/drawable-xhdpi/ic_windows_holo_dark.png
Binary files differ
diff --git a/res/drawable-xhdpi/magnifying_glass.png b/res/drawable-xhdpi/magnifying_glass.png
new file mode 100644
index 0000000..62742b7
--- /dev/null
+++ b/res/drawable-xhdpi/magnifying_glass.png
Binary files differ
diff --git a/res/drawable-xhdpi/nav_tab_bg.9.png b/res/drawable-xhdpi/nav_tab_bg.9.png
new file mode 100644
index 0000000..816bbe7
--- /dev/null
+++ b/res/drawable-xhdpi/nav_tab_bg.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/overlay_url_bookmark_widget_holo.9.png b/res/drawable-xhdpi/overlay_url_bookmark_widget_holo.9.png
new file mode 100644
index 0000000..829ea7f
--- /dev/null
+++ b/res/drawable-xhdpi/overlay_url_bookmark_widget_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/progress.9.png b/res/drawable-xhdpi/progress.9.png
new file mode 100644
index 0000000..72a71cb
--- /dev/null
+++ b/res/drawable-xhdpi/progress.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/qc_background_normal.png b/res/drawable-xhdpi/qc_background_normal.png
new file mode 100644
index 0000000..bea09ca
--- /dev/null
+++ b/res/drawable-xhdpi/qc_background_normal.png
Binary files differ
diff --git a/res/drawable-xhdpi/row_activated_bookmark_widget_holo.9.png b/res/drawable-xhdpi/row_activated_bookmark_widget_holo.9.png
new file mode 100644
index 0000000..c4b1ab3
--- /dev/null
+++ b/res/drawable-xhdpi/row_activated_bookmark_widget_holo.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/tab_nr.png b/res/drawable-xhdpi/tab_nr.png
new file mode 100644
index 0000000..abc2937
--- /dev/null
+++ b/res/drawable-xhdpi/tab_nr.png
Binary files differ
diff --git a/res/drawable-xhdpi/textfield_active_holo_dark.9.png b/res/drawable-xhdpi/textfield_active_holo_dark.9.png
new file mode 100644
index 0000000..b0c52d5
--- /dev/null
+++ b/res/drawable-xhdpi/textfield_active_holo_dark.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/textfield_default_holo_dark.9.png b/res/drawable-xhdpi/textfield_default_holo_dark.9.png
new file mode 100644
index 0000000..c08ed41
--- /dev/null
+++ b/res/drawable-xhdpi/textfield_default_holo_dark.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/thumb_bookmark_widget_folder_back_holo.png b/res/drawable-xhdpi/thumb_bookmark_widget_folder_back_holo.png
new file mode 100644
index 0000000..6216ef1
--- /dev/null
+++ b/res/drawable-xhdpi/thumb_bookmark_widget_folder_back_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/thumb_bookmark_widget_folder_holo.png b/res/drawable-xhdpi/thumb_bookmark_widget_folder_holo.png
new file mode 100644
index 0000000..7e56f0f
--- /dev/null
+++ b/res/drawable-xhdpi/thumb_bookmark_widget_folder_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png b/res/drawable-xhdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png
new file mode 100644
index 0000000..7d24d4a
--- /dev/null
+++ b/res/drawable-xhdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png
Binary files differ
diff --git a/res/drawable-xhdpi/trashcan.png b/res/drawable-xhdpi/trashcan.png
new file mode 100644
index 0000000..8b9982c
--- /dev/null
+++ b/res/drawable-xhdpi/trashcan.png
Binary files differ
diff --git a/res/drawable/nav_tab_bg.9.png b/res/drawable/nav_tab_bg.9.png
deleted file mode 100644
index 9e0a23d..0000000
--- a/res/drawable/nav_tab_bg.9.png
+++ /dev/null
Binary files differ
diff --git a/res/layout-sw600dp/snapshot_item.xml b/res/layout-sw600dp/snapshot_item.xml
new file mode 100644
index 0000000..2fc6ca8
--- /dev/null
+++ b/res/layout-sw600dp/snapshot_item.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:padding="@dimen/combo_horizontalSpacing">
+    <ImageView
+        android:id="@+id/thumb"
+        android:src="@drawable/thumbnail_bookmarks_widget_no_bookmark_holo"
+        android:layout_width="@dimen/bookmarkThumbnailWidth"
+        android:layout_height="@dimen/bookmarkThumbnailHeight"
+        android:scaleType="centerCrop"
+        android:cropToPadding="true"
+        android:background="@drawable/border_thumb_bookmarks_widget_holo" />
+    <TextView
+        android:id="@+id/title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignBottom="@id/thumb"
+        android:layout_alignLeft="@id/thumb"
+        android:layout_alignRight="@id/thumb"
+        android:background="@drawable/overlay_url_bookmark_widget_holo"
+        android:singleLine="true"
+        android:ellipsize="end"
+        android:textSize="12sp"
+        android:typeface="sans"
+        android:textColor="@android:color/white"
+        android:paddingLeft="6dip"
+        android:paddingRight="2dip"
+        android:gravity="center_vertical" />
+    <ImageView
+        android:id="@+id/divider"
+        android:src="?android:attr/dividerVertical"
+        android:layout_width="wrap_content"
+        android:layout_height="24dip"
+        android:layout_below="@+id/thumb"
+        android:layout_alignLeft="@+id/thumb"
+        android:scaleType="fitXY"
+        android:layout_marginTop="12dip" />
+    <TextView android:id="@+id/date"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_toRightOf="@id/divider"
+        android:layout_alignTop="@id/divider"
+        android:layout_alignBottom="@id/divider"
+        android:paddingLeft="8dip"
+        android:gravity="center_vertical"
+        android:typeface="sans"
+        android:textSize="14sp"
+        android:textColor="#AAAAAA" />
+    <TextView android:id="@+id/size"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignTop="@id/divider"
+        android:layout_alignBottom="@id/divider"
+        android:layout_alignRight="@+id/thumb"
+        android:paddingRight="2dip"
+        android:gravity="center_vertical"
+        android:typeface="sans"
+        android:textSize="14sp"
+        android:textColor="#AAAAAA" />
+</RelativeLayout>
diff --git a/res/layout-sw600dp/title_bar_autologin.xml b/res/layout-sw600dp/title_bar_autologin.xml
new file mode 100644
index 0000000..783b4c3
--- /dev/null
+++ b/res/layout-sw600dp/title_bar_autologin.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+   Copyright 2011, The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<com.android.browser.AutologinBar
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:background="#FBF0A0"
+    android:gravity="center_vertical"
+    android:visibility="gone">
+    <TextView
+        android:text="@string/autologin_bar_text"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textColor="@android:color/primary_text_light"
+        android:paddingLeft="15dip"
+        android:paddingRight="15dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"/>
+    <Spinner
+        android:id="@+id/autologin_account"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        style="@android:style/Widget.Holo.Light.Spinner" />
+    <Button
+        android:id="@+id/autologin_login"
+        android:text="@string/autologin_bar_login_text"
+        style="@android:style/Widget.Holo.Light.Button"
+        android:layout_marginRight="15dip"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content" />
+    <ProgressBar
+        android:id="@+id/autologin_progress"
+        android:indeterminateOnly="true"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        android:visibility="gone" />
+    <TextView
+        android:id="@+id/autologin_error"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        android:textColor="#dd6826"
+        android:text="@string/autologin_bar_error"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:visibility="gone" />
+    <View
+        android:layout_width="2dip"
+        android:layout_height="match_parent"
+        android:layout_weight="1"/>
+    <ImageButton
+        android:id="@+id/autologin_close"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingRight="15dip"
+        android:background="@null"
+        android:src="@*android:drawable/btn_close"/>
+</com.android.browser.AutologinBar>
diff --git a/res/layout-sw600dp/title_bar_nav.xml b/res/layout-sw600dp/title_bar_nav.xml
new file mode 100644
index 0000000..818707e
--- /dev/null
+++ b/res/layout-sw600dp/title_bar_nav.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+   Copyright 2011, The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<com.android.browser.NavigationBarTablet
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:background="@drawable/bg_urlbar">
+    <LinearLayout
+        android:id="@+id/navbuttons"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:orientation="horizontal">
+        <ImageButton
+            android:id="@+id/back"
+            android:src="@drawable/ic_back_holo_dark"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:paddingLeft="16dip"
+            style="@style/HoloButton" />
+        <ImageButton
+            android:id="@+id/forward"
+            android:src="@drawable/ic_forward_holo_dark"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            style="@style/HoloButton" />
+        <ImageButton
+            android:id="@+id/stop"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            style="@style/HoloButton"
+            android:gravity="center_vertical"
+            android:src="@drawable/ic_stop_holo_dark" />
+    </LinearLayout>
+    <LinearLayout
+        android:id="@+id/urlbar_focused"
+        android:layout_width="0dip"
+        android:layout_height="match_parent"
+        android:layout_weight="1.0"
+        android:layout_marginLeft="8dip"
+        android:layout_marginRight="8dip"
+        android:orientation="horizontal"
+        android:background="@drawable/url_background">
+        <ImageView
+            android:id="@+id/url_icon"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:src="@drawable/ic_web_holo_dark"
+            style="@style/HoloIcon" />
+        <ImageView
+            android:id="@+id/lock"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            style="@style/HoloIcon"
+            android:visibility="gone" />
+        <com.android.browser.UrlInputView
+            android:id="@+id/url"
+            android:layout_width="0dip"
+            android:layout_weight="1.0"
+            android:layout_height="match_parent"
+            android:layout_marginLeft="16dip"
+            android:paddingLeft="0dip"
+            android:paddingRight="0dip"
+            android:background="@null"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:hint="@string/search_hint"
+            android:singleLine="true"
+            android:ellipsize="end"
+            android:lines="1"
+            android:scrollHorizontally="true"
+            android:inputType="textUri"
+            android:imeOptions="actionGo"
+            style="@style/Suggestions" />
+        <ImageButton
+            android:id="@+id/star"
+            android:src="@drawable/btn_imageview_star"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            style="@style/HoloButton" />
+        <ImageButton
+            android:id="@+id/clear"
+            android:src="@drawable/ic_stop_holo_dark"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            style="@style/HoloButton" />
+    </LinearLayout>
+    <ImageButton
+        android:id="@+id/go"
+        android:src="@drawable/ic_go_holo_dark"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:visibility="gone"
+        android:gravity="center_vertical"
+        style="@style/HoloButton" />
+    <ImageButton
+        android:id="@+id/voicesearch"
+        android:src="@drawable/ic_voice_search_holo_dark"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        style="@style/HoloButton" />
+    <ImageButton
+        android:id="@+id/search"
+        android:src="@drawable/ic_search_holo_dark"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:gravity="center_vertical"
+        style="@style/HoloButton" />
+    <ImageButton
+        android:id="@+id/all_btn"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:scaleType="center"
+        android:paddingRight="16dip"
+        style="@style/HoloButton"
+        android:src="@drawable/ic_bookmarks_history_holo_dark" />
+</com.android.browser.NavigationBarTablet>
diff --git a/res/layout-sw600dp/title_bar_snapshot.xml b/res/layout-sw600dp/title_bar_snapshot.xml
new file mode 100644
index 0000000..e844c36
--- /dev/null
+++ b/res/layout-sw600dp/title_bar_snapshot.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+   Copyright 2011, The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<com.android.browser.SnapshotBar
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:background="@drawable/bg_urlbar">
+    <ImageButton
+        android:id="@+id/date_icon"
+        android:src="@drawable/ic_search_category_history"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:paddingLeft="16dip"
+        style="@style/HoloButton" />
+    <TextView
+        android:id="@+id/date"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:paddingLeft="8dip"
+        android:singleLine="true"
+        android:gravity="center_vertical"
+        android:textAppearance="?android:attr/textAppearanceMedium" />
+    <TextView
+        android:id="@+id/title"
+        android:layout_width="0dip"
+        android:layout_height="match_parent"
+        android:layout_weight="1"
+        android:paddingLeft="16dip"
+        android:singleLine="true"
+        android:gravity="center_vertical"
+        android:textAppearance="?android:attr/textAppearanceMedium" />
+    <ImageButton
+        android:id="@+id/all_btn"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:scaleType="center"
+        android:paddingRight="16dip"
+        style="@style/HoloButton"
+        android:src="@drawable/ic_bookmarks_history_holo_dark" />
+</com.android.browser.SnapshotBar>
diff --git a/res/layout/active_tabs.xml b/res/layout/active_tabs.xml
deleted file mode 100644
index f9bd6b0..0000000
--- a/res/layout/active_tabs.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<merge xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <LinearLayout
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content">
-
-        <Button
-            android:id="@+id/new_tab"
-            android:text="@string/new_tab"
-            android:layout_width="0dip"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:singleLine="true"
-            android:textAppearance="?android:attr/textAppearanceSmall" />
-
-        <Button
-            android:id="@+id/new_incognito_tab"
-            android:text="@string/new_incognito_tab"
-            android:layout_width="0dip"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:singleLine="true"
-            android:textAppearance="?android:attr/textAppearanceSmall"
-            android:paddingLeft="0dip"
-            android:paddingRight="0dip" />
-
-    </LinearLayout>
-
-    <ListView
-        android:id="@android:id/list"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:listSelector="@drawable/bookmark_thumb_selector"
-        android:drawSelectorOnTop="true"
-        android:focusable="true"
-        android:focusableInTouchMode="true" />
-
-</merge>
diff --git a/res/layout/bookmarks_history.xml b/res/layout/bookmarks_history.xml
index 826fe49..5ec310c 100644
--- a/res/layout/bookmarks_history.xml
+++ b/res/layout/bookmarks_history.xml
@@ -17,6 +17,4 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/fragment"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@drawable/bg_browser"
-    android:paddingTop="?android:attr/actionBarSize" />
+    android:layout_height="match_parent" />
diff --git a/res/layout/nav_tab_view.xml b/res/layout/nav_tab_view.xml
index 543c26e..dbf9494 100644
--- a/res/layout/nav_tab_view.xml
+++ b/res/layout/nav_tab_view.xml
@@ -28,8 +28,7 @@
         android:layout_width="match_parent"
         android:layout_height="48dip"
         android:layout_gravity="center_horizontal"
-        android:paddingLeft="32dip"
-        android:paddingRight="24dip">
+        android:paddingLeft="16dip" >
         <TextView
             android:id="@+id/title"
             android:layout_width="0dip"
@@ -46,13 +45,13 @@
             android:src="@drawable/ic_stop_holo_dark"
             android:layout_gravity="center_vertical"
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content" />
+            android:layout_height="match_parent"
+            style="@style/HoloButton" />
     </LinearLayout>
-    <FrameLayout
+    <ImageView
         android:id="@+id/tab_view"
         android:layout_width="@dimen/nav_tab_width"
         android:layout_height="@dimen/nav_tab_height"
         android:layout_gravity="center_horizontal"
-        android:focusable="false">
-    </FrameLayout>
+        android:focusable="false" />
 </LinearLayout>
diff --git a/res/layout/qc_menu_item.xml b/res/layout/qc_menu_item.xml
index 9e4a2e8..6c84aa6 100644
--- a/res/layout/qc_menu_item.xml
+++ b/res/layout/qc_menu_item.xml
@@ -17,12 +17,12 @@
 <TextView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/title"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
+    android:layout_width="@dimen/menu_width"
+    android:layout_height="@dimen/menu_height"
     android:minHeight="44dip"
     android:background="@drawable/qc_menu_selector"
     android:textAppearance="?android:attr/textAppearanceMedium"
-    android:gravity="center"
+    android:gravity="center_vertical"
     android:paddingLeft="8dip"
     android:paddingRight="8dip"
     android:paddingTop="4dip"
diff --git a/res/layout/qc_tab.xml b/res/layout/qc_tab.xml
index 5379680..6fcd0f4 100644
--- a/res/layout/qc_tab.xml
+++ b/res/layout/qc_tab.xml
@@ -37,8 +37,8 @@
         />
     <ImageView
         android:id="@+id/thumb"
-        android:layout_height="wrap_content"
-        android:layout_width="wrap_content"
+        android:layout_height="@dimen/qc_thumb_width"
+        android:layout_width="@dimen/qc_thumb_height"
         android:layout_marginTop= "1dip"
         android:layout_marginLeft= "1dip"
         android:layout_marginRight= "1dip"
diff --git a/res/layout/snapshot_item.xml b/res/layout/snapshot_item.xml
index 2fc6ca8..128dedf 100644
--- a/res/layout/snapshot_item.xml
+++ b/res/layout/snapshot_item.xml
@@ -63,15 +63,4 @@
         android:typeface="sans"
         android:textSize="14sp"
         android:textColor="#AAAAAA" />
-    <TextView android:id="@+id/size"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignTop="@id/divider"
-        android:layout_alignBottom="@id/divider"
-        android:layout_alignRight="@+id/thumb"
-        android:paddingRight="2dip"
-        android:gravity="center_vertical"
-        android:typeface="sans"
-        android:textSize="14sp"
-        android:textColor="#AAAAAA" />
 </RelativeLayout>
diff --git a/res/layout/snapshots.xml b/res/layout/snapshots.xml
index 48d2883..54d4e01 100644
--- a/res/layout/snapshots.xml
+++ b/res/layout/snapshots.xml
@@ -33,8 +33,8 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center"
-        android:textAppearance="?android:attr/textAppearanceLarge"
-        android:text="@string/empty_bookmarks_folder"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:text="@string/empty_snapshots_folder"
         android:visibility="gone" />
 
 </FrameLayout>
diff --git a/res/layout/tab_bar.xml b/res/layout/tab_bar.xml
index 1710218..2790362 100644
--- a/res/layout/tab_bar.xml
+++ b/res/layout/tab_bar.xml
@@ -14,9 +14,8 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/tabbarcontent"
     android:layout_width="match_parent"
-    android:layout_height="56dip"
+    android:layout_height="?android:attr/actionBarSize"
     android:orientation="horizontal"
-    style="@style/ActionBarStyle"
     >
     <com.android.browser.TabScrollView
         android:id="@+id/tabs"
@@ -31,4 +30,4 @@
         android:layout_height="44dip"
         style="@style/HoloButton"
         android:background="@drawable/add_tab_selector" />
-</merge>
\ No newline at end of file
+</merge>
diff --git a/res/layout/tab_title.xml b/res/layout/tab_title.xml
index 7ac2ba0..589debc 100644
--- a/res/layout/tab_title.xml
+++ b/res/layout/tab_title.xml
@@ -28,7 +28,7 @@
         android:layout_width="wrap_content"
         android:layout_height="match_parent"
         android:gravity="center_vertical"
-        android:src="@drawable/ic_snapshot"
+        android:src="@drawable/ic_search_category_history"
         android:visibility="gone" />
     <ImageView
         android:id="@+id/favicon"
diff --git a/res/layout/title_bar.xml b/res/layout/title_bar.xml
index 9096418..cf500c8 100644
--- a/res/layout/title_bar.xml
+++ b/res/layout/title_bar.xml
@@ -19,149 +19,30 @@
     android:id="@+id/titlebar"
     android:layout_width="match_parent"
     android:layout_height="wrap_content">
-    <LinearLayout
+    <include
+        layout="@layout/title_bar_nav"
         android:id="@+id/taburlbar"
         android:layout_width="match_parent"
-        android:layout_height="@dimen/toolbar_height"
-        android:orientation="horizontal"
-        android:background="@drawable/bg_urlbar">
-        <LinearLayout
-            android:id="@+id/title_bg"
-            android:layout_width="0dip"
-            android:layout_weight="1.0"
-            android:layout_height="match_parent"
-            android:gravity="center_vertical"
-            android:orientation="horizontal">
-            <FrameLayout
-                android:id="@+id/iconcombo"
-                android:layout_width="52dip"
-                android:layout_height="match_parent"
-                style="@style/HoloButton">
-                <ImageView
-                    android:id="@+id/favicon"
-                    android:layout_width="36dip"
-                    android:layout_height="36dip"
-                    android:paddingLeft="8dip"
-                    android:paddingRight="8dip"
-                    android:layout_gravity="center_vertical" />
-                <ImageView
-                    android:id="@+id/lock"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="bottom|right"
-                    android:visibility="gone" />
-            </FrameLayout>
-            <ImageView
-                android:id="@+id/stop"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center_vertical"
-                android:src="@drawable/ic_stop_holo_dark"
-                style="@style/HoloButton" />
-            <com.android.browser.UrlInputView
-                android:id="@+id/url"
-                android:focusable="true"
-                android:layout_width="0dip"
-                android:layout_weight="1.0"
-                android:layout_height="match_parent"
-                android:fadingEdge="horizontal"
-                android:fadingEdgeLength="24dip"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:hint="@string/search_hint"
-                android:singleLine="true"
-                android:ellipsize="end"
-                android:lines="1"
-                android:scrollHorizontally="true"
-                android:inputType="text"
-                android:imeOptions="actionGo"
-                style="@style/Suggestions"
-                android:background="@null" />
-            <ImageView
-                android:id="@+id/voice"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
-                android:src="@drawable/ic_voice_search_holo_dark"
-                style="@style/HoloButton"
-                android:visibility="gone" />
-        </LinearLayout>
-        <ImageButton
-            android:id="@+id/tab_switcher"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:src="@drawable/ic_windows_holo_dark"
-            style="@style/HoloButton" />
-    </LinearLayout>
-    <LinearLayout
-        android:id="@+id/autologin"
-        android:background="#FBF0A0"
-        android:gravity="center_vertical"
-        android:paddingTop="3dip"
-        android:visibility="gone"
-        android:layout_below="@+id/taburlbar"
+        android:layout_height="@dimen/toolbar_height" />
+    <include
+        layout="@layout/title_bar_snapshot"
+        android:id="@+id/snapshotbar"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="vertical">
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:paddingLeft="8dip"
-            android:paddingRight="8dip">
-            <TextView
-                android:text="@string/autologin_bar_text"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:textColor="@android:color/primary_text_light"
-                android:textAppearance="?android:attr/textAppearanceMedium" />
-            <Spinner
-                android:id="@+id/autologin_account"
-                android:layout_height="wrap_content"
-                android:layout_width="match_parent"
-                android:paddingLeft="8dp"
-                android:paddingRight="24dp"
-                style="@android:style/Widget.Holo.Light.Spinner" />
-        </LinearLayout>
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:paddingLeft="8dip"
-            android:paddingRight="8dip">
-            <Button
-                android:id="@+id/autologin_close"
-                android:layout_width="0dip"
-                android:layout_weight="1"
-                android:layout_height="wrap_content"
-                android:text="@string/autologin_bar_hide_text"
-                style="@android:style/Widget.Holo.Light.Button" />
-            <ProgressBar
-                android:id="@+id/autologin_progress"
-                android:indeterminateOnly="true"
-                android:layout_height="wrap_content"
-                android:layout_width="wrap_content"
-                android:visibility="invisible" />
-            <Button
-                android:id="@+id/autologin_login"
-                android:text="@string/autologin_bar_login_text"
-                style="@android:style/Widget.Holo.Light.Button"
-                android:layout_height="wrap_content"
-                android:layout_width="0dip"
-                android:layout_weight="1" />
-        </LinearLayout>
-        <TextView
-            android:id="@+id/autologin_error"
-            android:layout_height="wrap_content"
-            android:layout_width="wrap_content"
-            android:textColor="#dd6826"
-            android:text="@string/autologin_bar_error"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:visibility="gone" />
-    </LinearLayout>
+        android:layout_height="@dimen/toolbar_height" />
+    <include
+        layout="@layout/title_bar_autologin"
+        android:id="@+id/autologin"
+        android:paddingTop="3dip"
+        android:layout_below="@id/taburlbar"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" />
     <com.android.browser.PageProgressView
         android:id="@+id/progress"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:background="@null"
-        android:layout_below="@+id/taburlbar"
+        android:layout_below="@id/taburlbar"
         android:src="@drawable/progress"
-        android:layout_marginTop="-8dip"
+        android:layout_marginTop="@dimen/progress_bar_margin"
         android:visibility="gone" />
 </RelativeLayout>
diff --git a/res/layout/title_bar_autologin.xml b/res/layout/title_bar_autologin.xml
new file mode 100644
index 0000000..839f875
--- /dev/null
+++ b/res/layout/title_bar_autologin.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+   Copyright 2011, The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<com.android.browser.AutologinBar
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:background="#FBF0A0"
+    android:gravity="center_vertical"
+    android:visibility="gone"
+    android:orientation="vertical">
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingLeft="8dip"
+        android:paddingRight="8dip">
+        <TextView
+            android:text="@string/autologin_bar_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textColor="@android:color/primary_text_light"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
+        <Spinner
+            android:id="@+id/autologin_account"
+            android:layout_height="wrap_content"
+            android:layout_width="match_parent"
+            android:paddingLeft="8dp"
+            android:paddingRight="24dp"
+            style="@android:style/Widget.Holo.Light.Spinner" />
+    </LinearLayout>
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingLeft="8dip"
+        android:paddingRight="8dip">
+        <Button
+            android:id="@+id/autologin_close"
+            android:layout_width="0dip"
+            android:layout_weight="1"
+            android:layout_height="wrap_content"
+            android:text="@string/autologin_bar_hide_text"
+            style="@android:style/Widget.Holo.Light.Button" />
+        <ProgressBar
+            android:id="@+id/autologin_progress"
+            android:indeterminateOnly="true"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:visibility="invisible" />
+        <Button
+            android:id="@+id/autologin_login"
+            android:text="@string/autologin_bar_login_text"
+            style="@android:style/Widget.Holo.Light.Button"
+            android:layout_height="wrap_content"
+            android:layout_width="0dip"
+            android:layout_weight="1" />
+    </LinearLayout>
+    <TextView
+        android:id="@+id/autologin_error"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        android:textColor="#dd6826"
+        android:text="@string/autologin_bar_error"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:visibility="gone" />
+</com.android.browser.AutologinBar>
diff --git a/res/layout/title_bar_nav.xml b/res/layout/title_bar_nav.xml
new file mode 100644
index 0000000..5a3c10e
--- /dev/null
+++ b/res/layout/title_bar_nav.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+   Copyright 2011, The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<com.android.browser.NavigationBarPhone
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:background="@drawable/bg_urlbar">
+    <LinearLayout
+        android:id="@+id/title_bg"
+        android:layout_width="0dip"
+        android:layout_weight="1.0"
+        android:layout_height="match_parent"
+        android:gravity="center_vertical"
+        android:orientation="horizontal">
+        <FrameLayout
+            android:id="@+id/iconcombo"
+            android:layout_width="52dip"
+            android:layout_height="match_parent"
+            style="@style/HoloButton">
+            <ImageView
+                android:id="@+id/favicon"
+                android:layout_width="36dip"
+                android:layout_height="36dip"
+                android:paddingLeft="8dip"
+                android:paddingRight="8dip"
+                android:layout_gravity="center_vertical" />
+            <ImageView
+                android:id="@+id/lock"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="bottom|right"
+                android:visibility="gone" />
+        </FrameLayout>
+        <ImageView
+            android:id="@+id/stop"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
+            android:src="@drawable/ic_stop_holo_dark"
+            style="@style/HoloButton" />
+        <com.android.browser.UrlInputView
+            android:id="@+id/url"
+            android:focusable="true"
+            android:layout_width="0dip"
+            android:layout_weight="1.0"
+            android:layout_height="match_parent"
+            android:fadingEdge="horizontal"
+            android:fadingEdgeLength="24dip"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:hint="@string/search_hint"
+            android:singleLine="true"
+            android:ellipsize="end"
+            android:lines="1"
+            android:scrollHorizontally="true"
+            android:inputType="text"
+            android:imeOptions="actionGo"
+            style="@style/Suggestions"
+            android:background="@null" />
+        <ImageView
+            android:id="@+id/voice"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:src="@drawable/ic_voice_search_holo_dark"
+            style="@style/HoloButton"
+            android:visibility="gone" />
+    </LinearLayout>
+    <ImageButton
+        android:id="@+id/tab_switcher"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:src="@drawable/ic_windows_holo_dark"
+        style="@style/HoloButton" />
+    <ImageButton
+        android:id="@+id/more"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        style="@style/HoloButton"
+        android:gravity="center_vertical"
+        android:src="@*android:drawable/ic_menu_moreoverflow_normal_holo_dark" />
+</com.android.browser.NavigationBarPhone>
diff --git a/res/layout/title_bar_snapshot.xml b/res/layout/title_bar_snapshot.xml
new file mode 100644
index 0000000..a5569c1
--- /dev/null
+++ b/res/layout/title_bar_snapshot.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+   Copyright 2011, The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<com.android.browser.SnapshotBar
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:background="@drawable/bg_urlbar">
+    <ImageButton
+        android:id="@+id/favicon"
+        android:layout_width="42dip"
+        android:layout_height="match_parent"
+        android:paddingLeft="16dip"
+        android:scaleType="fitCenter"
+        style="@style/HoloButton" />
+    <FrameLayout
+        android:id="@+id/toggle_container"
+        android:layout_width="0dip"
+        android:layout_height="match_parent"
+        android:layout_weight="1"
+        android:paddingLeft="8dip">
+        <TextView
+            android:id="@+id/title"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:singleLine="true"
+            android:gravity="center_vertical"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
+        <LinearLayout
+            android:id="@+id/date_container"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent">
+            <ImageView
+                android:src="@drawable/ic_search_category_history"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent" />
+            <TextView
+                android:id="@+id/date"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:paddingLeft="8dip"
+                android:singleLine="true"
+                android:gravity="center_vertical"
+                android:textAppearance="?android:attr/textAppearanceMedium" />
+         </LinearLayout>
+    </FrameLayout>
+    <ImageButton
+        android:id="@+id/tab_switcher"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:src="@drawable/ic_windows_holo_dark"
+        style="@style/HoloButton" />
+    <ImageButton
+        android:id="@+id/more"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        style="@style/HoloButton"
+        android:gravity="center_vertical"
+        android:src="@*android:drawable/ic_menu_moreoverflow_normal_holo_dark" />
+</com.android.browser.SnapshotBar>
diff --git a/res/layout/url_bar.xml b/res/layout/url_bar.xml
deleted file mode 100644
index 3864b7d..0000000
--- a/res/layout/url_bar.xml
+++ /dev/null
@@ -1,190 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-    <!--
-        Copyright 2010, The Android Open Source Project Licensed under the
-        Apache License, Version 2.0 (the "License"); you may not use this file
-        except in compliance with the License. You may obtain a copy of the
-        License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
-        applicable law or agreed to in writing, software distributed under the
-        License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-        CONDITIONS OF ANY KIND, either express or implied. See the License for
-        the specific language governing permissions and limitations under the
-        License.
-    -->
-<RelativeLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    >
-    <LinearLayout
-        android:id="@+id/autologin"
-        android:background="#FBF0A0"
-        android:gravity="center_vertical"
-        android:paddingTop="3dip"
-        android:visibility="gone"
-        android:layout_below="@+id/taburlbar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-        <TextView
-            android:text="@string/autologin_bar_text"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textColor="@android:color/primary_text_light"
-            android:paddingLeft="15dip"
-            android:paddingRight="15dip"
-            android:textAppearance="?android:attr/textAppearanceMedium"/>
-        <Spinner
-            android:id="@+id/autologin_account"
-            android:layout_height="wrap_content"
-            android:layout_width="wrap_content"
-            style="@android:style/Widget.Holo.Light.Spinner" />
-        <Button
-            android:id="@+id/autologin_login"
-            android:text="@string/autologin_bar_login_text"
-            style="@android:style/Widget.Holo.Light.Button"
-            android:layout_marginRight="15dip"
-            android:layout_height="wrap_content"
-            android:layout_width="wrap_content" />
-        <ProgressBar
-            android:id="@+id/autologin_progress"
-            android:indeterminateOnly="true"
-            android:layout_height="wrap_content"
-            android:layout_width="wrap_content"
-            android:visibility="gone" />
-        <TextView
-            android:id="@+id/autologin_error"
-            android:layout_height="wrap_content"
-            android:layout_width="wrap_content"
-            android:textColor="#dd6826"
-            android:text="@string/autologin_bar_error"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:visibility="gone" />
-        <View
-            android:layout_width="2dip"
-            android:layout_height="match_parent"
-            android:layout_weight="1"/>
-        <ImageButton
-            android:id="@+id/autologin_close"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:paddingRight="15dip"
-            android:background="@null"
-            android:src="@*android:drawable/btn_close"/>
-    </LinearLayout>
-    <LinearLayout
-        android:id="@+id/taburlbar"
-        android:layout_width="match_parent"
-        android:layout_height="48dip"
-        android:orientation="horizontal"
-        android:background="@drawable/bg_urlbar">
-        <ImageButton
-            android:id="@+id/back"
-            android:src="@drawable/ic_back_holo_dark"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:paddingLeft="16dip"
-            style="@style/HoloButton" />
-        <ImageButton
-            android:id="@+id/forward"
-            android:src="@drawable/ic_forward_holo_dark"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            style="@style/HoloButton" />
-        <ImageButton
-            android:id="@+id/stop"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            style="@style/HoloButton"
-            android:gravity="center_vertical"
-            android:src="@drawable/ic_stop_holo_dark" />
-        <LinearLayout
-            android:id="@+id/urlbar_focused"
-            android:layout_width="0dip"
-            android:layout_height="match_parent"
-            android:layout_weight="1.0"
-            android:layout_marginLeft="8dip"
-            android:layout_marginRight="8dip"
-            android:orientation="horizontal"
-            android:background="@drawable/url_background">
-            <ImageView
-                android:id="@+id/url_icon"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
-                android:src="@drawable/ic_web_holo_dark"
-                style="@style/HoloIcon" />
-            <ImageView
-                android:id="@+id/lock"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
-                style="@style/HoloIcon"
-                android:visibility="gone" />
-            <com.android.browser.UrlInputView
-                android:id="@+id/url"
-                android:layout_width="0dip"
-                android:layout_weight="1.0"
-                android:layout_height="match_parent"
-                android:layout_marginLeft="16dip"
-                android:paddingLeft="0dip"
-                android:paddingRight="0dip"
-                android:background="@null"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:hint="@string/search_hint"
-                android:singleLine="true"
-                android:ellipsize="end"
-                android:lines="1"
-                android:scrollHorizontally="true"
-                android:inputType="textUri"
-                android:imeOptions="actionGo"
-                style="@style/Suggestions" />
-            <ImageButton
-                android:id="@+id/star"
-                android:src="@drawable/btn_imageview_star"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
-                style="@style/HoloButton" />
-            <ImageButton
-                android:id="@+id/clear"
-                android:src="@drawable/ic_stop_holo_dark"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
-                style="@style/HoloButton" />
-        </LinearLayout>
-        <ImageButton
-            android:id="@+id/go"
-            android:src="@drawable/ic_go_holo_dark"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:visibility="gone"
-            android:gravity="center_vertical"
-            style="@style/HoloButton" />
-        <ImageButton
-            android:id="@+id/voicesearch"
-            android:src="@drawable/ic_voice_search_holo_dark"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            style="@style/HoloButton" />
-        <ImageButton
-            android:id="@+id/search"
-            android:src="@drawable/ic_search_holo_dark"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:gravity="center_vertical"
-            style="@style/HoloButton" />
-        <ImageButton
-            android:id="@+id/all_btn"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:scaleType="center"
-            android:paddingRight="16dip"
-            style="@style/HoloButton"
-            android:src="@drawable/ic_bookmarks_history_holo_dark" />
-    </LinearLayout>
-    <com.android.browser.PageProgressView
-        android:id="@+id/progress"
-        android:layout_width="match_parent"
-        android:layout_height="22dip"
-        android:background="@null"
-        android:layout_below="@+id/taburlbar"
-        android:src="@drawable/progress"
-        android:layout_marginTop="-11dip"
-        android:visibility="gone" />
-</RelativeLayout>
diff --git a/res/layout-sw600dp/bookmarks_history.xml b/res/menu-sw600dp/combined.xml
similarity index 65%
copy from res/layout-sw600dp/bookmarks_history.xml
copy to res/menu-sw600dp/combined.xml
index ae5e19b..97abc8d 100644
--- a/res/layout-sw600dp/bookmarks_history.xml
+++ b/res/menu-sw600dp/combined.xml
@@ -13,9 +13,13 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/fragment"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@drawable/bg_browser" />
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:id="@+id/preferences_menu_id"
+        android:title="@string/menu_preferences"
+        android:icon="@drawable/ic_settings_holo_dark"
+        android:alphabeticShortcut="p"
+        android:showAsAction="ifRoom"
+        android:orderInCategory="1000" />
+</menu>
diff --git a/res/layout-sw600dp/bookmarks_history.xml b/res/menu-sw600dp/history.xml
similarity index 67%
copy from res/layout-sw600dp/bookmarks_history.xml
copy to res/menu-sw600dp/history.xml
index ae5e19b..36ae6e4 100644
--- a/res/layout-sw600dp/bookmarks_history.xml
+++ b/res/menu-sw600dp/history.xml
@@ -13,9 +13,11 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/fragment"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@drawable/bg_browser" />
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@+id/clear_history_menu_id"
+        android:title="@string/clear_history"
+        android:icon="@android:drawable/ic_menu_close_clear_cancel"
+        android:showAsAction="ifRoom"
+        android:orderInCategory="1" />
+</menu>
diff --git a/res/menu-w500dp/bookmark.xml b/res/menu-w500dp/bookmark.xml
deleted file mode 100644
index a951373..0000000
--- a/res/menu-w500dp/bookmark.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:id="@+id/add_bookmark"
-        android:icon="@drawable/ic_bookmark_off_holo_dark"
-        android:title="@string/add_new_bookmark"
-        android:showAsAction="always" />
-    <item
-        android:id="@+id/go_home"
-        android:icon="@drawable/ic_home_holo_dark"
-        android:showAsAction="always" />
-    <item
-        android:id="@+id/thumbnail_view"
-        android:title="@string/bookmark_thumbnail_view"
-        android:icon="@drawable/ic_thumbnail_view_holo_dark" />
-    <item
-        android:id="@+id/list_view"
-        android:title="@string/bookmark_list_view"
-        android:icon="@drawable/ic_list_view_holo_dark" />
-    <item
-        android:id="@+id/preferences_menu_id"
-        android:title="@string/menu_preferences"
-        android:icon="@drawable/ic_settings_holo_dark"
-        android:alphabeticShortcut="p" />
-</menu>
diff --git a/res/menu-w720dp/bookmark.xml b/res/menu-w720dp/bookmark.xml
deleted file mode 100644
index 0adadac..0000000
--- a/res/menu-w720dp/bookmark.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:id="@+id/add_bookmark"
-        android:icon="@drawable/ic_bookmark_off_holo_dark"
-        android:title="@string/add_new_bookmark"
-        android:showAsAction="always|withText" />
-    <item
-        android:id="@+id/go_home"
-        android:icon="@drawable/ic_home_holo_dark"
-        android:showAsAction="always" />
-    <item
-        android:id="@+id/thumbnail_view"
-        android:title="@string/bookmark_thumbnail_view"/>
-    <item
-        android:id="@+id/list_view"
-        android:title="@string/bookmark_list_view"/>
-    <item
-        android:id="@+id/preferences_menu_id"
-        android:title="@string/menu_preferences"
-        android:alphabeticShortcut="p" />
-</menu>
diff --git a/res/menu/bookmark.xml b/res/menu/bookmark.xml
deleted file mode 100644
index eee1706..0000000
--- a/res/menu/bookmark.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:id="@+id/add_bookmark"
-        android:icon="@drawable/ic_bookmark_off_holo_dark"
-        android:title="@string/add_new_bookmark" />
-    <item
-        android:id="@+id/go_home"
-        android:title="@string/go_home"
-        android:icon="@drawable/ic_home_holo_dark" />
-    <item
-        android:id="@+id/thumbnail_view"
-        android:title="@string/bookmark_thumbnail_view"
-        android:icon="@drawable/ic_thumbnail_view_holo_dark" />
-    <item
-        android:id="@+id/list_view"
-        android:title="@string/bookmark_list_view"
-        android:icon="@drawable/ic_list_view_holo_dark" />
-    <item
-        android:id="@+id/preferences_menu_id"
-        android:title="@string/menu_preferences"
-        android:icon="@drawable/ic_settings_holo_dark"
-        android:alphabeticShortcut="p" />
-</menu>
diff --git a/res/menu/browser.xml b/res/menu/browser.xml
index 630bb87..0b46db6 100644
--- a/res/menu/browser.xml
+++ b/res/menu/browser.xml
@@ -20,21 +20,6 @@
         <group
             android:id="@+id/NAV_MENU">
             <item
-                android:id="@+id/new_tab_menu_id"
-                android:title="@string/new_tab"
-                android:icon="@drawable/ic_menu_new_window"
-                android:alphabeticShortcut="n" />
-            <item
-                android:id="@+id/bookmarks_menu_id"
-                android:title="@string/bookmarks"
-                android:alphabeticShortcut="b"
-                android:icon="@drawable/ic_bookmarks_holo_dark" />
-            <item
-                android:id="@+id/active_tabs_menu_id"
-                android:title="@string/active_tabs"
-                android:icon="@drawable/ic_windows_holo_dark"
-                android:alphabeticShortcut="t" />
-            <item
                 android:id="@+id/stop_reload_menu_id"
                 android:alphabeticShortcut="r" />
             <item
diff --git a/res/layout-sw600dp/bookmarks_history.xml b/res/menu/combined.xml
similarity index 73%
rename from res/layout-sw600dp/bookmarks_history.xml
rename to res/menu/combined.xml
index ae5e19b..559bb74 100644
--- a/res/layout-sw600dp/bookmarks_history.xml
+++ b/res/menu/combined.xml
@@ -13,9 +13,6 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/fragment"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@drawable/bg_browser" />
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+</menu>
diff --git a/res/menu/history.xml b/res/menu/history.xml
index 5b029b5..a8c1b29 100644
--- a/res/menu/history.xml
+++ b/res/menu/history.xml
@@ -4,9 +4,9 @@
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
      You may obtain a copy of the License at
-  
+
           http://www.apache.org/licenses/LICENSE-2.0
-  
+
      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -15,11 +15,4 @@
 -->
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:id="@+id/clear_history_menu_id"
-        android:title="@string/clear_history"
-        android:icon="@android:drawable/ic_menu_close_clear_cancel" />
-    <item android:id="@+id/preferences_menu_id"
-        android:title="@string/menu_preferences"
-        android:icon="@drawable/ic_settings_holo_dark"
-        android:alphabeticShortcut="p" />
 </menu>
diff --git a/res/menu/snapshots_context.xml b/res/menu/snapshots_context.xml
index 01880dd..af7a776 100644
--- a/res/menu/snapshots_context.xml
+++ b/res/menu/snapshots_context.xml
@@ -18,6 +18,6 @@
     <group android:id="@+id/CONTEXT_MENU">
         <item
             android:id="@+id/delete_context_menu_id"
-            android:title="@string/remove_bookmark"/>
+            android:title="@string/remove_snapshot"/>
     </group>
 </menu>
diff --git a/res/mipmap-hdpi/ic_launcher_browser.png b/res/mipmap-hdpi/ic_launcher_browser.png
index 1f3e584..ef42d38 100644
--- a/res/mipmap-hdpi/ic_launcher_browser.png
+++ b/res/mipmap-hdpi/ic_launcher_browser.png
Binary files differ
diff --git a/res/mipmap-mdpi/ic_launcher_browser.png b/res/mipmap-mdpi/ic_launcher_browser.png
index 93c83d4..588d9af 100644
--- a/res/mipmap-mdpi/ic_launcher_browser.png
+++ b/res/mipmap-mdpi/ic_launcher_browser.png
Binary files differ
diff --git a/res/mipmap-xhdpi/ic_launcher_browser.png b/res/mipmap-xhdpi/ic_launcher_browser.png
new file mode 100644
index 0000000..19e045b
--- /dev/null
+++ b/res/mipmap-xhdpi/ic_launcher_browser.png
Binary files differ
diff --git a/res/mipmap-xhdpi/ic_launcher_shortcut_browser_bookmark.png b/res/mipmap-xhdpi/ic_launcher_shortcut_browser_bookmark.png
new file mode 100644
index 0000000..3ef819f
--- /dev/null
+++ b/res/mipmap-xhdpi/ic_launcher_shortcut_browser_bookmark.png
Binary files differ
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 7d237ee..87df3ec 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -24,14 +24,14 @@
     <!-- no translation found for new_tab (4505722538297295141) -->
     <skip />
     <string name="new_incognito_tab" msgid="5821404839654751753">"Nuwe incognito-venster"</string>
-    <!-- no translation found for active_tabs (3050623868203544623) -->
-    <skip />
     <!-- no translation found for tab_bookmarks (2305793036003473653) -->
     <skip />
     <!-- no translation found for tab_most_visited (1077402532455000703) -->
     <skip />
     <!-- no translation found for tab_history (1979267558744613746) -->
     <skip />
+    <!-- no translation found for tab_snapshots (4435852763803720588) -->
+    <skip />
     <!-- no translation found for added_to_bookmarks (1020224130695956728) -->
     <skip />
     <!-- no translation found for removed_from_bookmarks (6063705902028438800) -->
@@ -165,11 +165,10 @@
     <skip />
     <!-- no translation found for share_page (593756995297268343) -->
     <skip />
-    <!-- no translation found for menu_freeze_tab (189603565552297099) -->
+    <!-- no translation found for menu_save_snapshot (6935080344031126139) -->
     <skip />
-    <!-- outdated translation 3934652434001459581 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Stoor as webargief"</string>
-    <!-- outdated translation 7045250341467345007 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Webargief gestoor."</string>
-    <!-- outdated translation 2880998204746620260 -->     <string name="webarchive_failed" msgid="19950914584285713">"Kon nie webargief stoor nie."</string>
+    <!-- no translation found for snapshot_failed (6176197364690207251) -->
+    <skip />
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> boekmerke"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Leë vouer"</string>
     <!-- no translation found for contextmenu_openlink (7237961252214188935) -->
@@ -238,7 +237,7 @@
     <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
     <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
     <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
     <!-- no translation found for pref_content_autofit (8260474534053660809) -->
     <skip />
@@ -287,6 +286,8 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profiel gestoor"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profiel uitgevee"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Vee profiel uit"</string>
+    <!-- no translation found for autofill_setup_dialog_title (1955613311837926540) -->
+    <skip />
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Blaaier kan webvorms soos hierdie outomaties voltooi. Wil jy jou profiel opstel?"</string>
     <!-- no translation found for autofill_setup_dialog_negative_toast (6990737008936188620) -->
     <skip />
@@ -413,6 +414,16 @@
     <skip />
     <!-- no translation found for pref_lab_fullscreen_summary (6853711692160711419) -->
     <skip />
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <!-- no translation found for pref_data_title (750316606686075162) -->
+    <skip />
+    <!-- no translation found for pref_data_preload_title (4479320472980292873) -->
+    <skip />
+    <!-- no translation found for pref_data_preload_summary (7488335627364473744) -->
+    <skip />
     <!-- no translation found for browserFrameNetworkErrorLabel (126892350904924893) -->
     <skip />
     <!-- no translation found for browserFrameFileErrorLabel (8063691502792670367) -->
@@ -624,4 +635,10 @@
     <skip />
     <!-- no translation found for ua_switcher_desktop (2535200543238676638) -->
     <skip />
+    <!-- no translation found for permission_preload_label (4856971662337877316) -->
+    <skip />
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index b70b43b..54f5731 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -22,10 +22,11 @@
     <skip />
     <string name="new_tab" msgid="4505722538297295141">"አዲሰ መስኮት"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"አዲስ incognito መስኮት"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"ዊንዶውስ"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"ዕልባቶች"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"በብዛት የተጎበኘ"</string>
     <string name="tab_history" msgid="1979267558744613746">"ታሪክ"</string>
+    <!-- no translation found for tab_snapshots (4435852763803720588) -->
+    <skip />
     <string name="added_to_bookmarks" msgid="1020224130695956728">"ወደ እልባቶች ታክሏል"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"ከዕልባት የተወገደ"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"ወደ <xliff:g id="HOSTNAME">%s1</xliff:g>\"<xliff:g id="REALM">%s2</xliff:g>\" ግባ"</string>
@@ -142,11 +143,10 @@
     <string name="copy_page_url" msgid="7635062169011319208">"url ገፅ ቅዳ"</string>
     <!-- no translation found for share_page (593756995297268343) -->
     <skip />
-    <!-- no translation found for menu_freeze_tab (189603565552297099) -->
+    <!-- no translation found for menu_save_snapshot (6935080344031126139) -->
     <skip />
-    <!-- outdated translation 3934652434001459581 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"እንደ ድረ መዝገብ አስቀምጥ"</string>
-    <!-- outdated translation 7045250341467345007 -->     <string name="webarchive_saved" msgid="2212053339474523406">"የድረ መዝገብ ተቀምጧል።"</string>
-    <!-- outdated translation 2880998204746620260 -->     <string name="webarchive_failed" msgid="19950914584285713">"የድረ መዝገብ ለማስቀመጥ ተሳነ"</string>
+    <!-- no translation found for snapshot_failed (6176197364690207251) -->
+    <skip />
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> ዕልባቶች"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"ባዶ አቃፊ"</string>
     <!-- no translation found for contextmenu_openlink (7237961252214188935) -->
@@ -211,7 +211,7 @@
     <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
     <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
     <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
     <!-- no translation found for pref_content_autofit (8260474534053660809) -->
     <skip />
@@ -260,6 +260,8 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"መገለጫ  አስቀምጧል"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"መገለጫ  ሰርዟል"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"መገለጫ ሰርዝ"</string>
+    <!-- no translation found for autofill_setup_dialog_title (1955613311837926540) -->
+    <skip />
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"አሳሽ እንደዚህ ያሉ የድረ ቅጾችን በራስ ሰር መሙላት ይችላል።መገለጫዎን መጫን ይፈልጋሉ?"</string>
     <!-- no translation found for autofill_setup_dialog_negative_toast (6990737008936188620) -->
     <skip />
@@ -375,6 +377,16 @@
     <skip />
     <!-- no translation found for pref_lab_fullscreen_summary (6853711692160711419) -->
     <skip />
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <!-- no translation found for pref_data_title (750316606686075162) -->
+    <skip />
+    <!-- no translation found for pref_data_preload_title (4479320472980292873) -->
+    <skip />
+    <!-- no translation found for pref_data_preload_summary (7488335627364473744) -->
+    <skip />
     <!-- no translation found for browserFrameNetworkErrorLabel (126892350904924893) -->
     <skip />
     <!-- no translation found for browserFrameFileErrorLabel (8063691502792670367) -->
@@ -549,4 +561,10 @@
     <skip />
     <!-- no translation found for ua_switcher_desktop (2535200543238676638) -->
     <skip />
+    <!-- no translation found for permission_preload_label (4856971662337877316) -->
+    <skip />
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 3a12844..9c82de4 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"تحميلات الملفات معطلة."</string>
     <string name="new_tab" msgid="4505722538297295141">"نافذة جديدة"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"نافذة جديدة للتصفح المتخفي"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"نظام التشغيل Windows"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"الإشارات"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"الأكثر زيارة"</string>
     <string name="tab_history" msgid="1979267558744613746">"سجلّ"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"الصفحات المحفوظة"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"تمت الإضافة إلى الإشارات"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"تمت إزالته من الإشارات"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"تسجيل الدخول إلى <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"التنزيلات"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"نسخ عنوان URL للصفحة"</string>
     <string name="share_page" msgid="593756995297268343">"مشاركة الصفحة"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"تجميد علامة التبويب"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"حفظ الصفحة"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"تم حفظ الصفحة."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"أخفق حفظ الصفحة."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"حفظ للقراءة في وضع عدم الاتصال"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"أخفق الحفظ للقراءة في وضع عدم الاتصال."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> من الإشارات المرجعية"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"المجلد فارغ"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"فتح"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"تعين محرك بحث"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"تحديد محرك بحث"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"تعيين على..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"احتواء تلقائي للصفحات"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"تنسيق صفحات الويب لاحتوائها في الشاشة"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"إعدادات عامة"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"تم حفظ الملف الشخصي"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"تم حذف الملف الشخصي"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"حذف الملف الشخصي"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"هل تريد إعداد الملء التلقائي؟"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"يستطيع المتصفح إكمال نماذج ويب مثل هذا النموذج. هل تريد إعداد ملفك الشخصي؟"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"يمكن تهيئة الملء التلقائي دائمًا من خلال إعدادات المتصفح."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"تعطيل الملء التلقائي"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"استخدم بحث Google الفوري عندما تستخدم بحث Google, لإظهار النتائج أثناء الكتابة (يمكن أن يزيد ذلك من استخدام البيانات)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"ملء الشاشة"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"استخدم وضع ملء الشاشة لإخفاء شريط الحالة."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"إدارة النطاق الترددي"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"التحميل المسبق لنتيجة البحث"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"السماح للمتصفح بتحميل نتائج بحث عالية الثقة في الخلفية مسبقًا"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"مشكلة في اتصال البيانات"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"مشكلة في الملف"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"تأكيد"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"محلية"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"الجوال"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"سطح المكتب"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"تحميل النتائج مسبقًا"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 902b549..1f5e584 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Качванията на файлове са деактивирани."</string>
     <string name="new_tab" msgid="4505722538297295141">"Нов прозорец"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Нов прозорец „инкогнито“"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Прозорци"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Отметки"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Най-посещавани"</string>
     <string name="tab_history" msgid="1979267558744613746">"История"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Запазени страници"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Добавено към отметките"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Премахната от отметки"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Влезте в <xliff:g id="HOSTNAME">%s1</xliff:g> „<xliff:g id="REALM">%s2</xliff:g>“"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Изтеглени"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Копиране на URL адреса на страницата"</string>
     <string name="share_page" msgid="593756995297268343">"Споделяне на страницата"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Фиксиране на раздел"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Запазване на страницата"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Страницата е запазена."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Запазването на страницата не бе успешно."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Запазване за четене офлайн"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Запазването за четене офлайн не бе успешно."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> отметки"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Празна папка"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Отваряне"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Задаване на търсеща машина"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Избор на търсеща машина"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Задаване на..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Автоматично побиране на страници"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Уеб страниците се форматират до размера на екрана"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Общи"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Потребителският профил бе запазен"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Потребителският профил бе изтрит"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Изтриване на профила"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Да се настрои авт. попълване?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Браузърът може автоматично да попълва уеб формуляри като този. Искате ли да настроите потребителския си профил?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Автоматичното попълване винаги може да се конфигурира от „Настройки на браузъра“."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Деактивиране на автоматичното попълване"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Използвайте Google Динамично търсене, за да се показват резултати, докато пишете (може да увеличи употребата на данни)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Цял екран"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Използване на режима на цял екран за скриване на лентата на състоянието."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Управление на капацитета"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Предв. зареждане на резултати от търс."</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Разр. на браузъра предв. да зарежда на заден план резултати с голяма сигурност"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблем с обмен на данни"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблем с файла"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Потвърждаване"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Локални"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Мобилна"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Настолна"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Предварително зареждане на резултати"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index b66427f..e966ad3 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Les càrregues de fitxers estan desactivades."</string>
     <string name="new_tab" msgid="4505722538297295141">"Finestra nova"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Nova finestra d\'incògnit"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Windows"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Adreces d\'interès"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Més visitats"</string>
     <string name="tab_history" msgid="1979267558744613746">"Historial"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Pàgines desades"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"S\'ha afegit a les adreces d\'interès"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Eliminat de les adreces d\'interès"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Inici de sessió a <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Baixades"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Copia l\'URL de la pàgina"</string>
     <string name="share_page" msgid="593756995297268343">"Comparteix la pàgina"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Congela la pestanya"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Desa la pàgina"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"S\'ha desat la pàgina."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"No s\'ha pogut desar la pàgina."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Desa per a lectura fora de línia"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Ha fallat el desament per a lectura fora de línia."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> marcadors"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Carpeta buida"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Obre"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Defineix el motor de cerca"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Selecciona un motor de cerca"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Defineix com a..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Ajusta les pàgines automàticament"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formata les pàgines web perquè s\'ajustin a la pantalla"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"General"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"S\'ha desat el perfil"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"S\'ha suprimit el perfil"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Suprimeix el perfil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Configur. emplenament automàtic?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"El navegador pot emplenar formularis web com aquest automàticament. Vols configurar el teu perfil?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"L\'emplenament automàtic sempre es pot establir mitjançant la configuració del navegador."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Desactiva l\'emplenament automàtic"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Utilitza Google Instant quan utilitzis la Cerca de Google per mostrar resultats mentre escrius (augmenta l\'ús de dades)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Pantalla completa"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Utilitza el mode de pantalla completa per amagar la barra d\'estat."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Gestió d\'amplada de banda"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Càrrega prèvia de resultats de la cerca"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Permet al naveg. carregar prèv. resultats cerca fiabilitat alta en process. fons"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema de connectivitat de dades"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problema amb el fitxer"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirma"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Local"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mòbil"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Escriptori"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Carrega prèviament els resultats"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 034b3a9..d2935bb 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Nahrávání souborů je deaktivováno."</string>
     <string name="new_tab" msgid="4505722538297295141">"Nové okno"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Nové anonymní okno"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Okna"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Záložky"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Nejnavštěvovanější"</string>
     <string name="tab_history" msgid="1979267558744613746">"Historie"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Uložené stránky"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Přidáno k záložkám"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Odstraněno ze záložek"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Přihlásit se: <xliff:g id="HOSTNAME">%s1</xliff:g> <xliff:g id="REALM">%s2</xliff:g>"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Stažené"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Kopírovat adresu URL stránky"</string>
     <string name="share_page" msgid="593756995297268343">"Sdílet stránku"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Zmrazit kartu"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Uložit stránku"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Stránka byla uložena."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Uložení stránky se nezdařilo."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Uložit ke čtení offline"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Uložení ke čtení offline se nezdařilo."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Počet záložek: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Prázdná složka"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Otevřít"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Nastavit vyhledávač"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Výběr vyhledávače"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Nastavit na..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Automaticky přizpůsobit"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Přizpůsobit velikost webových stránek obrazovce"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Obecné"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil uložen"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil byl smazán."</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Smazat profil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Nastavit automatické vyplnění?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Podobné webové formuláře může prohlížeč vyplňovat automaticky. Chcete nastavit profil?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automatické vyplňování lze vždy nakonfigurovat prostřednictvím nastavení prohlížeče."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Vypnout automatické vyplňování"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Dynamické vyhledávání ve Vyhledávání Google zobrazuje výsledky již při zadávání dotazu. (Může se zvýšit množství přenesených dat.)"</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Celá obrazovka"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Chcete-li skrýt stavový řádek, použijte režim zobrazení na celou obrazovku."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Správa rychlosti připojení"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Předběžné načítání výsledků vyhledávání"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Umožní prohlížeči na pozadí předběžně načítat relevantní výsledky vyhledávání"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problémy s datovým připojením"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problém se souborem"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Potvrdit"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Lokální"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Počítač"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Předběžné načítání výsledků"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index fd063f1..ea8770f 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Upload af filer er deaktiveret."</string>
     <string name="new_tab" msgid="4505722538297295141">"Nyt vindue"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Nyt inkognitovindue"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Vinduer"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Bogmærker"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Mest besøgte"</string>
     <string name="tab_history" msgid="1979267558744613746">"Oversigt"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Gemte sider"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Føjet til bogmærker"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Fjernet fra bogmærker"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Log ind på <xliff:g id="HOSTNAME">%s1</xliff:g>\"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Downloads"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Kopier sidens webadresse"</string>
     <string name="share_page" msgid="593756995297268343">"Del side"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Fanen Frys"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Gem side."</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Siden er gemt."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Siden kunne ikke gemmes."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Gem til læsning offline"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Siden kunne ikke gemmes til læsning offline."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> bogmærker"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Mappen er tom"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Åbn"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Angiv søgemaskine"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Vælg en søgemaskine"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Angiv som..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Tilpas sider automatisk"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Tilpas websider, så de passer til skærmen"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Generelt"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profilen er gemt"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profilen er slettet"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Slet profil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Vil du konfigurere AutoFyld?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Browseren kan automatisk udfylde webformularer som denne. Vil du konfigurere din profil?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"AutoFyld kan altid konfigureres via indstillingerne for Browser."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Deaktiver AutoFyld"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Brug Google Direkte, når du søger på Google for at få vist resultater ved indtastning (kan forøge dataforbruget)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Fuld skærm"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Brug fuldskærmstilstand til at skjule statuslinjen."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Admin. af båndvidde"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Forudindlæsning af søgeresultater"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Tillad, at browseren forudindlæser pålidelige søgeresultater i baggrunden"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Dataforbindelsesproblem"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Der er et problem med filen"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bekræft"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Lokal"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Computerversion"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Forudindlæs resultater"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index d510670..d0c2703 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Dateiuploads sind deaktiviert."</string>
     <string name="new_tab" msgid="4505722538297295141">"Neues Fenster"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Neues Inkognito-Fenster"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Fenster"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Lesezeichen"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Meistbesucht"</string>
     <string name="tab_history" msgid="1979267558744613746">"Verlauf"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Gespeicherte Seiten"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Zu Lesezeichen hinzugefügt"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Aus Lesezeichen entfernt"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Bei <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\" anmelden"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Downloads"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Seiten-URL kopieren"</string>
     <string name="share_page" msgid="593756995297268343">"Seitenlink weitergeben"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Tab fixieren"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Seite speichern"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Seite wurde gespeichert."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Seite konnte nicht gespeichert werden."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Für Offline-Lesen speichern"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Speichern für Offline-Lesen fehlgeschlagen"</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> Lesezeichen"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Leerer Ordner"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Öffnen"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Suchmaschine festlegen"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Suchmaschine auswählen"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Eingestellt auf..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Autom. Anpassung"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Webseiten an den Bildschirm anpassen"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Allgemein"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil wurde gespeichert."</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil gelöscht"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Profil löschen"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"AutoFill einrichten?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Browser können solche Webformulare automatisch vervollständigen. Möchten Sie Ihr Profil anlegen?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"AutoFill kann jederzeit über die Browsereinstellungen konfiguriert werden."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"AutoFill deaktivieren"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Nutzen Sie Google Instant bei der Google-Suche. Ergebnisse werden bei Eingabe angezeigt - ggf. mehr Speicher erforderlich."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Vollbild"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Vollbildmodus zum Ausblenden der Statusleiste verwenden"</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Bandbreitenverwaltung"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Vorabladen von Suchergebnissen"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Browser erlauben, vertrauenswürdige Suchergebnisse vorab im Hintergrund zu laden"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Datenverbindungsproblem"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem mit Datei"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bestätigen"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Lokal"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Desktop"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Ergebnisse vorab laden"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 5d59162..426d0e9 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Η μεταφόρτωση αρχείων είναι απενεργοποιημένη."</string>
     <string name="new_tab" msgid="4505722538297295141">"Νέο παράθυρο"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Νέο παράθυρο για ανώνυμη περιήγηση"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Παράθυρα"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Σελιδοδείκτες"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Οι πιο δημοφιλείς"</string>
     <string name="tab_history" msgid="1979267558744613746">"Ιστορικό"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Αποθηκευμένες σελίδες"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Έγινε προσθήκη στους σελιδοδείκτες"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Κατάργηση από τους σελιδοδείκτες"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Σύνδεση στο <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Λήψεις"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Αντιγραφή διεύθυνσης url της σελίδας"</string>
     <string name="share_page" msgid="593756995297268343">"Κοινή χρήση σελίδας"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Πάγωμα καρτέλας"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Αποθήκευση σελίδας"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Η σελίδα αποθηκεύτηκε."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Απέτυχε η αποθήκευση της σελίδας."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Αποθήκευση για ανάγνωση εκτός σύνδεσης"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Αποτυχία αποθήκευσης για ανάγνωση εκτός σύνδεσης."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> σελιδοδείκτες"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Κενός φάκελος"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Άνοιγμα"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Ορισμός μηχανής αναζήτησης"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Επιλέξτε μηχανή αναζήτησης"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Ορισμός σε..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Αυτόματη προσαρμογή σελίδων"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Μορφοποίηση ιστοσελίδων για την προσαρμογή τους στο μέγεθος της οθόνης"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Γενικές"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Το προφίλ αποθηκεύτηκε"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Το προφίλ διαγράφηκε"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Διαγραφή προφίλ"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Ρύθμιση αυτόματης συμπλήρωσης;"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Το πρόγραμμα περιήγησης μπορεί να ολοκληρώσει αυτόματα φόρμες ιστού σαν αυτήν. Θα θέλατε να δημιουργήσετε το δικό σας προφίλ;"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Μπορείτε να διαμορφώσετε τη λειτουργία αυτόματης συμπλήρωσης μέσα από τις ρυθμίσεις του προγράμματος περιήγησης."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Απενεργοποιήστε τη λειτουργία αυτόματης συμπλήρωσης"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Χρησιμοποιήστε το Instant μαζί με την Αναζήτηση για να εμφανίζονται αποτελ. καθώς πληκτρολ. (πιθανή αύξηση δεδομένων)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Πλήρης οθόνη"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Χρησιμοποιήστε τη λειτουργία πλήρους οθόνης για την απόκρυψη της γραμμής κατάστασης."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Διαχείριση εύρους ζώνης"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Προφόρτωση αποτελεσμάτων αναζήτησης"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Να επιτρέπεται η προφόρτωση αποτελεσμάτων αναζήτησης υψηλής αξιοπιστίας σε φόντο"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Πρόβλημα σύνδεσης δεδομένων"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Υπάρχει πρόβλημα με το αρχείο"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Επιβεβαίωση"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Τοπικά"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Για κινητά"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Για υπολογιστή"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Προφόρτωση αποτελεσμάτων"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index aa73aa9..b87bdd8 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"File uploads are disabled."</string>
     <string name="new_tab" msgid="4505722538297295141">"New window"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"New incognito window"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Windows"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Bookmarks"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Most visited"</string>
     <string name="tab_history" msgid="1979267558744613746">"History"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Saved Pages"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Added to bookmarks"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Removed from bookmarks"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Sign in to <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Downloads"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Copy page URL"</string>
     <string name="share_page" msgid="593756995297268343">"Share page"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Freeze tab"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Save page"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Page saved."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Failed to save page."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Save for offline reading"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Failed to save for offline reading."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> bookmarks"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Empty folder"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Open"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Set search engine"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Select a search engine"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Set to…"</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Auto-fit pages"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Format web pages to fit the screen"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"General"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profile saved"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profile deleted"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Delete profile"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Set up auto-fill?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Browser can complete web forms like this one automatically. Would you like to set up your profile?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Auto-fill can always be configured through Browser Settings."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Disable auto-fill"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Use Google Instant when you use Google Search, to show results as you type (this can increase data use)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Full screen"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Use full-screen mode to hide the status bar."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Bandwidth Management"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Search result preloading"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Allow the browser to preload high-confidence search results in the background"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Data connectivity problem"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem with file"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirm"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Local"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobile"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Desktop"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Preload results"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index f448331..92c273a 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Las cargas de archivo se desactivaron."</string>
     <string name="new_tab" msgid="4505722538297295141">"Ventana nueva"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Nueva ventana de incógnito"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Ventanas"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Marcadores"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Más visitados"</string>
     <string name="tab_history" msgid="1979267558744613746">"Historial"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Páginas guardadas"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Agregado a marcadores"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Suprimido de los marcadores"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Iniciar sesión en <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -74,7 +74,7 @@
     <string name="open_bookmark" msgid="8473581305759935790">"Abrir"</string>
     <string name="remove_bookmark" msgid="8407495852801410891">"Eliminar marcador"</string>
     <string name="remove_from_bookmarks" msgid="4374080666576982775">"Eliminar de marcadores"</string>
-    <string name="remove_history_item" msgid="5021424935726728618">"Suprimir del historial"</string>
+    <string name="remove_history_item" msgid="5021424935726728618">"Eliminar del historial"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Definir como página principal"</string>
     <string name="bookmark_saved" msgid="2766434679871317557">"Guardado en los marcadores."</string>
     <string name="bookmark_not_saved" msgid="700600955089376724">"No se pudo agregar a favoritos."</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Descargas"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Copiar URL de la página"</string>
     <string name="share_page" msgid="593756995297268343">"Compartir página"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Bloquear pestaña"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Guardar página"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Página guardada"</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Error al guardar la página"</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Guardar para leer sin conexión"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Se produjo un error al guardar para leer sin conexión."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> Marcadores"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Vaciar carpeta"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Abrir"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Establecer el motor de búsqueda"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Seleccionar un motor de búsqueda"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Configurado en"</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Ajuste automát. de pág."</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatea las páginas web para que se ajusten a la pantalla"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"General"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Perfil guardado"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Perfil eliminado"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Eliminar perfil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"¿Configurar Autocompletar?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"El navegador puede completar formularios web como este de forma automática. ¿Deseas configurar tu perfil?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"La función de autocompletar siempre se puede configurar mediante los Parámetros de configuración del navegador."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Inhabilitar Autocompletar"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Usa Google Instant con Búsq. de Google para que los resultados aparezcan mientras tipeas (esto puede aumentar el uso de datos)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Pantalla completa"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Usa el modo de pantalla completa para ocultar la barra de estado."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Gestión de ancho de banda"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Se están precargando los resultados de la búsqueda"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Permitir al navegador la precarga de resultados de búsqueda confiables en el fondo"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema de conectividad de datos"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problema con el archivo"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirmar"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Locales"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Versión para teléfonos celulares"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Versión para equipos de escritorio"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Precargar resultados"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 3485867..e0feba8 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Las subidas de archivos están inhabilitadas."</string>
     <string name="new_tab" msgid="4505722538297295141">"Nueva ventana"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Nueva ventana de incógnito"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Ventanas"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Marcadores"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Más visitados"</string>
     <string name="tab_history" msgid="1979267558744613746">"Historial"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Páginas guardadas"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Añadido a marcadores"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Eliminado de marcadores"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Acceder a <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Descargas"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Copiar URL de página"</string>
     <string name="share_page" msgid="593756995297268343">"Compartir página"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Bloquear pestaña"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Guardar página"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Página guardada"</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Error al guardar la página"</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Guardar para leer sin conexión"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Error al guardar para leer sin conexión"</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> marcadores"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Carpeta vacía"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Abrir"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Establecer motor de búsqueda"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Seleccionar un motor de búsqueda"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Establecer como…"</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Ajustar páginas automát."</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Configurar las páginas web para ajustarlas a la pantalla"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"General"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Perfil guardado"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Perfil eliminado"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Eliminar perfil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"¿Configurar autocompletar?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"El navegador puede completar de forma automática formularios web como este. ¿Te gustaría configurar tu perfil?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"La función Autocompletar se puede configurar a través de los ajustes del navegador."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Inhabilitar autocompletar"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Con Google Instant, aparecerán resultados de búsqueda de Google a medida que escribas (puede aumentar el uso de datos)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Pantalla completa"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Utiliza el modo de pantalla completa para ocultar la barra de estado."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Gestión de ancho de banda"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Carga previa de resultados de búsqueda"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Permitir que el navegador cargue resultados en segundo plano"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema de conectividad de datos"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problema con archivo"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"OK"</string>
@@ -377,7 +379,7 @@
     <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Siguiente"</string>
     <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Anterior"</string>
     <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Cancelar"</string>
-    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Listo"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Ok"</string>
     <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Añadir marcadores a la cuenta de Google"</string>
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Añadir tus marcadores de Android a marcadores de <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Compartir"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Locales"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Móvil"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Ordenador"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Precargar resultados"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 4c515c7..1db028b 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"آپلودهای فایل غیر فعال هستند."</string>
     <string name="new_tab" msgid="4505722538297295141">"پنجره جدید"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"پنجره ناشناخته جدید"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"پنجره ها"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"نشانک ها"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"بیشتر بازدید شده"</string>
     <string name="tab_history" msgid="1979267558744613746">"سابقه"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"صفحات ذخیره شده"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"به نشانک ها اضافه شد"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"از نشانک ها حذف شد"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"ورود به سیستم <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -51,7 +51,7 @@
     <string name="stop" msgid="5687251076030630074">"توقف"</string>
     <string name="reload" msgid="8585220783228408062">"تازه کردن"</string>
     <string name="back" msgid="8414603107175713668">"برگشت"</string>
-    <string name="forward" msgid="4288210890526641577">"هدایت"</string>
+    <string name="forward" msgid="4288210890526641577">"باز ارسال"</string>
     <string name="save" msgid="5922311934992468496">"تأیید"</string>
     <string name="do_not_save" msgid="6777633870113477714">"لغو"</string>
     <string name="location" msgid="3411848697912600125">"آدرس"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"دانلودها"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"کپی url صفحه"</string>
     <string name="share_page" msgid="593756995297268343">"اشتراک گذاری صفحه"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"ثابت کردن برگه"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"ذخیره صفحه"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"صفحه ذخیره شد."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"صفحه ذخیره نشد."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"ذخیره برای مطالعه در حالت آفلاین"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"ذخیره برای مطالعه بصورت آفلاین انجام نشد."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> نشانک"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"پوشه خالی"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"باز کردن"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"تنظیم موتور جستجو"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"انتخاب یک موتور جستجو"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"تنظیم به..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"تنظیم خودکار صفحات"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"قالب صفحات وب متناسب با صفحه"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"عمومی"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"نمایه ذخیره شد"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"نمایه حذف شد"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"حذف نمایه"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"تکمیل خودکار تنظیم شود؟"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"مرورگر می تواند بصورت خودکار فرم های وب مانند این یکی را پر کند. دوست دارید نمایه خود را تنظیم کنید؟"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"تکمیل خودکار را همیشه می توانید از طریق تنظیمات مرورگر پیکربندی کنید."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"غیرفعال کردن تکمیل خودکار"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"هنگام استفاده از جستجوی Google، برای نمایش نتایج در حین تایپ از Google Instant استفاده کنید (ممکن است مصرف داده بالا برود)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"تمام صفحه"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"استفاده از حالت تمام صفحه برای مخفی کردن نوار وضعیت."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"مدیریت پهنای باند"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"پیش بارگیری نتیجه جستجو"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"به مرورگر اجازه می دهد نتایجی را که در آنها اطمینان بالایی وجود دارد از پیش در پس زمینه بارگیری کند"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"مشکل اتصال داده"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"مشکل در فایل"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"تأیید"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"محلی"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"تلفن همراه"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"دسکتاپ"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"پیش بارگیری نتایج"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 3b86137..8e4fd85 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Tiedostojen lähettäminen ei ole käytössä."</string>
     <string name="new_tab" msgid="4505722538297295141">"Uusi ikkuna"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Uusi incognito-ikkuna"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Windows"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Kirjanmerkit"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Useimmin avatut"</string>
     <string name="tab_history" msgid="1979267558744613746">"Historia"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Tallennetut sivut"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Lisätty kirjanmerkkeihin"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Poistettu kirjanmerkeistä"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Kirjaudu sisään osoitteeseen <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Lataukset"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Kopioi sivun URL-osoite"</string>
     <string name="share_page" msgid="593756995297268343">"Jaa sivu"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Kuvakaappaus välilehdestä"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Tallenna sivu"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Sivu tallennettu."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Sivun tallennus epäonnistui."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Tallenna offline-tilassa luettavaksi"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Tallennus offline-tilassa luettavaksi epäonnistui"</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> kirjanmerkkiä"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Tyhjä kansio"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Avaa"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Aseta hakukone"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Valitse hakukone"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Aseta etusivuksi..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Automaattinen sovitus"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Sovita verkkosivut näytölle"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Yleinen"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profiili tallennettu"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profiili poistettu."</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Poista profiili"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Määritä autom. täytön asetukset?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Selain voi täydentää automaattisesti tämän kaltaisia verkkolomakkeita. Haluatko luoda profiilin?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automaattisen täytön asetuksia voi aina muuttaa selainasetuksista."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Poista automaattinen täyttö käytöstä"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Käyttämällä Google Instantia hakiessasi näet tuloksia jo hakua kirjoittaessasi (tämä voi kasvattaa tiedonsiirron määrää)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Koko ruutu"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Piilota tilapalkki käyttämällä koko ruudun tilaa."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Kaistanleveyden hallinta"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Hakutulosta esiladataan"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Anna selaimen esiladata luotettavat hakutulokset taustalla"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Datayhteysongelma"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Tiedosto-ongelma"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Vahvista"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Paikalliset kirjanmerkit"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobiili"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Tietokone"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Esilatauksen tulokset"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index d74a0db..44871b2 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Les transferts de fichiers sont désactivés."</string>
     <string name="new_tab" msgid="4505722538297295141">"Nouvelle fenêtre"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Fenêtre de navigation privée"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Fenêtres"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Favoris"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Les + visités"</string>
     <string name="tab_history" msgid="1979267558744613746">"Historique"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Pages enregistrées"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Ajouté aux favoris"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Supprimé des favoris"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Connectez-vous à <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Téléchargements"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Copier l\'URL de la page"</string>
     <string name="share_page" msgid="593756995297268343">"Partager la page"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Figer l\'onglet"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Enregistrer la page"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"La page a été enregistrée."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Échec de l\'enregistrement de la page"</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Enregistrer pour lire hors connexion"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Échec enregistrement pour lecture hors connexion."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> favori(s)"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Dossier vide"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Ouvrir"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Définir le moteur de recherche"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Sélectionner un moteur de recherche"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Définir comme..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Ajustement auto des pages"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Configurer les pages Web pour qu\'elles s\'ajustent à l\'écran"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Général"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil enregistré"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil supprimé"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Supprimer le profil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Configurer saisie automatique ?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Le navigateur peut remplir automatiquement des formulaires Web tels que celui-ci. Voulez-vous configurer votre profil ?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Notez que vous pouvez configurer la saisie automatique dans les paramètres du navigateur."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Désactiver la saisie automatique"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Affichez plus de résultats lors de la saisie avec la recherche instantanée Google. Peut utiliser plus de données."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Plein écran"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Utiliser le mode plein écran pour masquer la barre d\'état"</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Gestion bande passante"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Préchargement résultats de recherche…"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Autoriser le préchargement des résultats fiables de recherche en arrière-plan"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problème de connectivité des données"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problème de fichier"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirmer"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Favoris locaux"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobile"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Ordinateur"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Précharger les résultats"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 1cddc96..3a6deb0 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Prijenosi datoteka onemogućeni su."</string>
     <string name="new_tab" msgid="4505722538297295141">"Novi prozor"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Novi prozor anonimno"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Windows"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Oznake"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Najposjećenije"</string>
     <string name="tab_history" msgid="1979267558744613746">"Povijest"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Spremljene stranice"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Dodano u oznake"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Uklonjeno iz oznaka"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Prijavite se na <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Preuzimanja"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Kopiraj url stranice"</string>
     <string name="share_page" msgid="593756995297268343">"Dijeli stranicu"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Zamrzni karticu"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Spremi stranicu"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Stranica je spremljena."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Spremanje stranice nije uspjelo."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Spremi za izvanmrežno čitanje"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Neuspjelo spremanje za izvanmrežno čitanje."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Br. oznaka: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Prazna mapa"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Otvori"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Postavljanje tražilice"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Odabir tražilice"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Postavi na…"</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Automatsko prilagođavanje stranicama"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatirajte web-stranice kako bi odgovarale zaslonu"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Općenito"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil spremljen"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil izbrisan"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Izbriši profil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Postaviti automatsko ispunjavanje?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Preglednik može automatski popunjavati web-obrasce poput ovog. Želite li postaviti svoj profil?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automatsko popunjavanje može se bilo kada konfigurirati putem Postavki preglednika."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Onemogući automatsko popunjavanje"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Kada u Google Pretraživanju upotrebljavate Google Instant, rezultati se prikazuju dok tipkate (promet podataka može porasti)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Puni zaslon"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Upotrijebite način punog zaslona da biste sakrili traku stanja."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Upravljanje širinom pojasa"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Prethodno učitavanje rezultata pretraživanja"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Dopustite preglednik da prethodno učita rezultate pretraživanja visoke pouzdanosti u pozadini"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problem s podatkovnom povezivošću"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem s datotekom"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Potvrdi"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Lokalno"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobilni uređaj"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Stolno računalo"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Prethodno učitavanje rezultata"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 418269a..0301ded 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"A fájlok feltöltése le van tiltva."</string>
     <string name="new_tab" msgid="4505722538297295141">"Új ablak"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Új inkognitóablak"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Ablakok"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Könyvjelzők"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Leggyakrabban felkeresett"</string>
     <string name="tab_history" msgid="1979267558744613746">"Előzmények"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Mentett oldalak"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Hozzáadva a könyvjelzőkhöz"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Eltávolítva a könyvjelzők közül"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Jelentkezzen be ide: <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Letöltések"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Az oldal URL-jének másolása"</string>
     <string name="share_page" msgid="593756995297268343">"Oldal megosztása"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Lap rögzítése"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Oldal mentése"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Oldal mentve."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Nem sikerült menteni az oldalt."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Mentés offline olvasáshoz"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Nem sikerült menteni offline olvasáshoz."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> könyvjelző"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Üres mappa"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Megnyitás"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Keresőmotor beállítása"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Válasszon ki egy keresőmotort"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Beállítás a következőre:"</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Oldalak automatikus igazítása"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"A képernyőhöz igazítja a weboldalakat"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Általános"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"A profil elmentve"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"A profil törölve."</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Profil törlése"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Automatikus kitöltés beállítása?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"A böngésző automatikusan ki tudja tölteni az ilyen internetes űrlapokat. Beállítja a profilját?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Az Automatikus kitöltést bármikor konfigurálhatja a Böngésző beállításai között."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Automatikus kitöltés letiltása"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"A Google-keresésnél használja a Google Instantot, és a találatok gépelés közben megjelennek (az adatforgalom nőhet)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Teljes képernyő"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Használja a teljes képernyős módot az állapotsor elrejtéséhez."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Sávszélesség kezelése"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Keresési találatok előtöltése"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"A biztonságos keresési találatokat előre betöltheti a böngésző a háttérben"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Adatkapcsolat-probléma"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Probléma van a fájllal"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Megerősítés"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Helyi"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Asztali"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Találatok előtöltése"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 56c7789..556cff0 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Pengunggahan berkas dinonaktifkan."</string>
     <string name="new_tab" msgid="4505722538297295141">"Jendela baru"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Jendela penyamaran baru"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Windows"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Bookmark"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Paling sering dikunjungi"</string>
     <string name="tab_history" msgid="1979267558744613746">"Riwayat"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Laman Tersimpan"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Ditambahkan ke bookmark"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Dihapus dari bookmark"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Masuk ke <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Unduhan"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Salin URL laman"</string>
     <string name="share_page" msgid="593756995297268343">"Bagikan lama"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Bekukan tab"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Simpan laman"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Laman tersimpan."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Gagal menyimpan laman."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Simpan untuk dibaca secara luring"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Gagal menyimpan untuk dibaca secara luring."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> bookmark"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Map kosong"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Buka"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Setel mesin telusur"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Pilih mesin telusur"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Setel ke..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Sesuaikan dengan laman secara otomatis"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Format laman web agar sesuai dengan layar"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Umum"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil disimpan"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil dihapus"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Hapus profil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Siapkan isi-otomatis?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Peramban dapat melengkapi formulir web seperti ini. Apakah Anda ingin menyiapkan profil?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Isi-otomatis selalu dapat dikonfigurasi melalui Setelan Peramban."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Nonaktifkan isi-otomatis"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Gunakan Google Sekejap di Google Penelusuran agar hasilnya tampil selagi mengetik (ini dapat menambah pemakaian data)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Layar penuh"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Gunakan modus layar penuh untuk menyembunyikan bilah status."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Pengelolaan Lebar Pita"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Pramuat hasil penelusuran"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Mengizinkan peramban melakukan pramuat hasil penelusuran pasti di latar belakang"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Masalah konektivitas data"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Masalah dengan berkas"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Konfirmasi"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Lokal"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Seluler"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Desktop"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Lakukan pramuat hasil"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index eb6ffa2..fefab6b 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"I caricamenti di file sono disabilitati."</string>
     <string name="new_tab" msgid="4505722538297295141">"Nuova finestra"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Nuova finestra in incognito"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Finestre"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Segnalibri"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"I più visitati"</string>
     <string name="tab_history" msgid="1979267558744613746">"Cronologia"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Pagine salvate"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Aggiunto a segnalibri"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Rimosso da segnalibri"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Accedi a <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Download"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Copia URL della pagina"</string>
     <string name="share_page" msgid="593756995297268343">"Condividi pagina"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Blocca scheda"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Salva pagina"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Pagina salvata."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Impossibile salvare la pagina."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Salva per lettura offline"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Impossibile salvare per la lettura offline."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> segnalibri"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Cartella vuota"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Apri"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Imposta motore di ricerca"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Seleziona un motore di ricerca"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Imposta su..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Adatta autom. pagine"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Adatta le pagine web allo schermo"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Generali"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profilo salvato"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profilo eliminato"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Elimina profilo"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Impostare compilazione automatica?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Il browser può compilare automaticamente i moduli web come questo. Vuoi impostare il tuo profilo?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"È sempre possibile configurare la compilazione automatica tramite le impostazioni del browser."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Disattiva compilazione automatica"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Usa Google Instant con Ricerca Google per visualizzare i risultati mentre digiti (può aumentare l\'uso dei dati)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Schermo intero"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Usa la modalità a schermo intero per nascondere la barra di stato."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Gestione larghezza di banda"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Precaricamento risultati di ricerca"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Consenti al browser di precaricare i risultati di ricerca affidabili in background"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema di connettività dati"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problemi con il file"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Conferma"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Locali"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Cellulare"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Desktop"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Precaricamento risultati"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index b342dab..bd6930f 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"העלאות הקובץ הושבתו."</string>
     <string name="new_tab" msgid="4505722538297295141">"חלון חדש"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"חלון חדש של גלישה בסתר"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"חלונות"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"סימניות"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"אתרים שבהם אתה מבקר בתדירות הגבוהה ביותר"</string>
     <string name="tab_history" msgid="1979267558744613746">"היסטוריה"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"דפים שמורים"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"נוסף לסימניות"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"הוסר מסימניות"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"היכנס אל <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"הורדות"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"העתק כתובת אתר של דף"</string>
     <string name="share_page" msgid="593756995297268343">"שתף דף"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"הקפא כרטיסייה"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"שמור דף"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"הדף נשמר."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"שמירת הדף נכשלה."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"שמור לקריאה במצב לא מקוון"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"השמירה לקריאה במצב לא מקוון נכשלה."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> סימניות"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"תיקיה ריקה"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"פתח"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"הגדר מנוע חיפוש"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"בחר מנוע חיפוש"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"הוגדר ל..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"התאם דפים באופן אוטומטי"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"עצב דפי אינטרנט כך שיתאימו למסך"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"כללי"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"הפרופיל נשמר"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"הפרופיל נמחק"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"מחק את הפרופיל"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"להגדיר מילוי אוטומטי?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"הדפדפן יכול למלא טופסי אינטרנט כמו זה באופן אוטומטי. האם תרצה להגדיר את הפרופיל שלך?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"תוכל תמיד להגדיר את \'מילוי אוטומטי\' דרך \'הגדרות דפדפן\'."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"השבת את \'מילוי אוטומטי\'"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"השתמש ב-Google Instant כאשר אתה משתמש בחיפוש Google, כדי להציג תוצאות בעת ההקלדה (פעולה זו יכולה להגדיל שימוש בנתונים)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"מסך מלא"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"השתמש במצב מסך מלא כדי להסתיר את שורת המצב."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"ניהול רוחב פס"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"טעינה מוקדמת של תוצאות חיפוש"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"אפשר לדפדפן לטעון מראש תוצאות חיפוש בעלות אמינות גבוהה ברקע"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"בעיה בקישוריות נתונים"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"בעיה בקובץ"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"אשר"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"מקומי"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"נייד"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"שולחן עבודה"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"טעינה מוקדמת של תוצאות"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 922998f..98d1298 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"ファイルのアップロードが無効になっています。"</string>
     <string name="new_tab" msgid="4505722538297295141">"新しいウィンドウ"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"新しいシークレットウインドウ"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"ウィンドウ"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"ブックマーク"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"よく使用"</string>
     <string name="tab_history" msgid="1979267558744613746">"履歴"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"保存したページ"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"ブックマークに追加しました"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"ブックマークから削除しました"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"<xliff:g id="HOSTNAME">%s1</xliff:g>に「<xliff:g id="REALM">%s2</xliff:g>」でログイン"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"ダウンロード履歴"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"ページのURLをコピー"</string>
     <string name="share_page" msgid="593756995297268343">"ページを共有"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"タブをフリーズ"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"ページを保存"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"ページを保存しました。"</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"ページを保存できませんでした。"</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"オフラインで読めるよう保存"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"オフラインで読むための保存に失敗しました"</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g>件のブックマーク"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"空のフォルダ"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"開く"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"検索エンジンの設定"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"検索エンジンを選択する"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"設定先..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"ページの自動調整"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"画面に合わせてウェブページをフォーマットする"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"全般"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"プロフィールが保存されました"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"プロフィールを削除しました"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"プロフィールを削除"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"自動入力のセットアップ"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"このようなウェブフォームにブラウザで自動入力できます。プロフィールを設定しますか？"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"自動入力はいつでもブラウザの[設定]から設定できます。"</string>
     <string name="disable_autofill" msgid="8305901059849400354">"自動入力を無効にする"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Google検索時にGoogleインスタント検索を使用すると、入力中に結果が表示されます（データの使用量が増えることがあります）。"</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"全画面"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"全画面モードを使用してステータスバーを非表示にする。"</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"帯域幅の管理"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"検索結果のプリロード"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"ブラウザが信頼度の高い検索結果をバックグラウンドでプリロードできるようにします"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"データアクセスエラー"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"ファイルに問題があります"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"確認"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"ローカル"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"モバイル"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"デスクトップ"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"結果のプリロード"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 0d5cb33..aaed780 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"파일 업로드가 사용 중지되었습니다."</string>
     <string name="new_tab" msgid="4505722538297295141">"새 창"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"새 시크릿 창"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"창"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"북마크"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"자주 방문한 페이지"</string>
     <string name="tab_history" msgid="1979267558744613746">"기록"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"저장된 페이지"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"북마크에 추가되었습니다."</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"북마크에서 삭제됨"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"<xliff:g id="HOSTNAME">%s1</xliff:g> \'<xliff:g id="REALM">%s2</xliff:g>\'에 로그인"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"다운로드"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"페이지 URL 복사"</string>
     <string name="share_page" msgid="593756995297268343">"페이지 공유"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"새 탭에 캡처화면 만들기"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"페이지 저장"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"페이지가 저장되었습니다."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"페이지를 저장하지 못했습니다."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"오프라인 읽기용으로 저장"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"오프라인 읽기용으로 저장하지 못했습니다."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"북마크 <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>개"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"빈 폴더"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"열기"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"검색 엔진 설정"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"검색 엔진 선택"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"다음으로 설정:"</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"페이지 자동 맞춤"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"화면에 맞게 웹페이지 형식 지정"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"기본설정"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"프로필 저장됨"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"프로필이 삭제되었습니다."</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"프로필 삭제"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"자동 입력을 설정하시겠습니까?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"브라우저에서 이 양식과 같은 웹 양식을 자동으로 완성할 수 있습니다. 프로필을 설정하시겠습니까?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"브라우저 설정에서 언제든지 자동완성을 구성할 수 있습니다."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"자동 입력 사용중지"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Google 검색을 사용할 때 Google 순간 검색을 사용하면 입력하는 동안 결과가 표시됩니다(데이터 사용이 증가될 수 있음)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"전체화면"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"전체화면 모드를 사용하여 상태 표시줄을 숨깁니다."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"대역폭 관리"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"검색결과 미리 로드"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"브라우저가 신뢰도 높은 검색결과를 백그라운드에 미리 로드하도록 허용"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"데이터 연결에 문제 발생"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"파일 문제 발생"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"확인"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"로컬"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"모바일"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"데스크톱"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"결과 미리 로드"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index a1708d3..c493825 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Neleidžiama įkelti failų."</string>
     <string name="new_tab" msgid="4505722538297295141">"Naujas langas"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Naujas inkognito langas"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Windows"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Žymės"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Dažniausiai lankomos"</string>
     <string name="tab_history" msgid="1979267558744613746">"Istorija"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Išsaugoti puslapiai"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Pridėta prie žymių"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Pašalinta iš žymių"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Prisijungti prie <xliff:g id="HOSTNAME">%s1</xliff:g> „<xliff:g id="REALM">%s2</xliff:g>“"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Atsisiuntimai"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Kopijuoti puslapio URL"</string>
     <string name="share_page" msgid="593756995297268343">"Bendrinti puslapį"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Fiksuoti skirtuką"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Išsaugoti puslapį"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Puslapis išsaugotas."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Nepavyko išsaugoti puslapio."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Išsaugoti, kad būtų galima skaityti neprisijungus"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Nepavyko išsaugoti, kad būtų gal. skait. neprisij."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Žymių: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Tuščias aplankas"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Atidaryti"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Nustatyti paieškos variklį"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Pasirinkti paieškos variklį"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Nustatyti…"</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Automatiškai talpinti puslapius"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatuoti tinklalapius, kad tilptų ekrane"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Bendra"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profilis išsaugotas"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profilis ištrintas"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Ištrinti profilį"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Nustatyti automatinį pildymą?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Naršyklė gali automatiškai užpildyti į šią panašias žiniatinklio formas. Ar norite nustatyti profilį?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automatinį pildymą visada galima konfigūruoti skiltyje „Naršyklės nustatymai“."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Neleisti automatinio pildymo"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Kai naud. „Google“ paiešką, naud. Int. „Google“ paiešką, kad renk. tekst. b. rodomi rezult. (tai g. padid. duom. naud.)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Visas ekranas"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Jei norite paslėpti būsenos juostą, naudokite viso ekrano režimą."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Pralaidumo valdymas"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Iš anksto įkeliamas paieškos rezultatas"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Leisti naršyklei fone iš anksto įkelti itin patikimus paieškos rezultatus"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Duomenų jungiamumo problema"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Failo problema"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Patvirtinti"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Vietinės"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobilusis įrenginys"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Stalinis kompiuteris"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Iš anksto įkelti rezultatus"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 725a263..17a05ba 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Failu augšupielādes ir atspējotas."</string>
     <string name="new_tab" msgid="4505722538297295141">"Jauns logs"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Jauns inkognito logs"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Logi"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Grāmatzīmes"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Visvairāk apmeklētās"</string>
     <string name="tab_history" msgid="1979267558744613746">"Vēsture"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Saglabātās lapas"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Pievienots grāmatzīmēm"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Noņemts no grāmatzīmēm"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Pierakstīšanās domēnā <xliff:g id="HOSTNAME">%s1</xliff:g> “<xliff:g id="REALM">%s2</xliff:g>”"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Lejupielādes"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Kopēt lapas URL"</string>
     <string name="share_page" msgid="593756995297268343">"Kopīgot lapu"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Iesaldēt cilni"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Saglabāt lapu"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Lapa ir saglabāta."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Neizdevās saglabāt lapu."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Saglabāt, lai lasītu bezsaistē"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Neizdevās saglabāt, lai lasītu bezsaistē."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> grāmatzīmes"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Tukša mape"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Atvērt"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Iestatīt meklētājprogrammu"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Atlasīt meklētājprogrammu"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Iestatīt uz…"</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Automātiski pielāgot lapas"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatēt tīmekļa lapas, lai tās ietilptu ekrānā"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Vispārīgi"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profils ir saglabāts"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profils ir dzēsts"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Dzēst profilu"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Vai iestatīt autom. aizpildi?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Pārlūkprogramma var automātiski aizpildīt šāda veida tīmekļa veidlapas. Vai vēlaties iestatīt savu profilu?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automātisko aizpildi jebkurā brīdī var konfigurēt, izmantojot pārlūkprogrammas iestatījumus."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Atspējot automātisko aizpildi"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Izmantojiet Google dinamisko meklēšanu, kad lietojat Google meklēšanu, lai redzētu rezultātus rakstīšanas laikā (var tikt izmantots vairāk datu)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Pilnekrāna režīms"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Lai paslēptu statusa joslu, izmantojiet pilnekrāna režīmu."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Joslas platuma pārvaldība"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Meklēšanas rezultātu pirmsielāde"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Ļaut pārlūkprogrammai fonā veikt atbilstošu meklēšanas rezultātu pirmsielādi"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Datu savienojamības problēma"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Faila problēma"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Apstiprināt"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Vietējās"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Versija mobilajām ierīcēm"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Versija datoriem"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Veikt rezultātu pirmsielādi"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-ms-sw600dp/strings.xml b/res/values-ms-sw600dp/strings.xml
new file mode 100644
index 0000000..3a45dd6
--- /dev/null
+++ b/res/values-ms-sw600dp/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2010 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="new_tab" msgid="2448577107218085816">"Tab baru"</string>
+    <string name="new_incognito_tab" msgid="7101126413435433601">"Tab incognito baru"</string>
+    <string name="active_tabs" msgid="2049888145890815012">"Tab"</string>
+    <string name="contextmenu_openlink_newwindow" msgid="4034130612746354398">"Buka dalam tab baru"</string>
+    <string name="contextmenu_openlink_newwindow_background" msgid="7104473293755016241">"Buka dalam tab latar belakang baru"</string>
+    <string name="open_all_in_new_window" msgid="4294281492905397499">"Buka semua dalam tab baru"</string>
+    <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Buka tab baru di belakang tab semasa"</string>
+    <string name="recover_title" msgid="1558775426269800998">"Pulihkan tab?"</string>
+    <string name="recover_prompt" msgid="377456662058488205">"Adakah anda mahu memulihkan tab penyemak imbas anda kepada keadaan terakhirnya?"</string>
+</resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 6e811e2..43d08b7 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Muat naik fail dilumpuhkan."</string>
     <string name="new_tab" msgid="4505722538297295141">"Tetingkap baru"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Tetingkap penyamaran baru"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Tetingkap"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Penanda halaman"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Yang paling kerap dilawati"</string>
     <string name="tab_history" msgid="1979267558744613746">"Sejarah"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Halaman Disimpan"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Ditambah ke penanda halaman"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Dialih keluar daripada penanda halaman"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Log masuk ke \"<xliff:g id="REALM">%s2</xliff:g>\" <xliff:g id="HOSTNAME">%s1</xliff:g>"</string>
@@ -55,8 +55,7 @@
     <string name="save" msgid="5922311934992468496">"OK"</string>
     <string name="do_not_save" msgid="6777633870113477714">"Batal"</string>
     <string name="location" msgid="3411848697912600125">"Alamat"</string>
-    <!-- no translation found for account (5179824606448077042) -->
-    <skip />
+    <string name="account" msgid="5179824606448077042">"Akaun"</string>
     <string name="containing_folder" msgid="6771180232953030479">"Tambah ke"</string>
     <string name="new_folder" msgid="7743540149088867917">"Folder baru"</string>
     <string name="edit_folder" msgid="621817453133656156">"Edit folder"</string>
@@ -102,11 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Muat turun"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Salin url halaman"</string>
     <string name="share_page" msgid="593756995297268343">"Kongsi halaman"</string>
-    <!-- no translation found for menu_freeze_tab (189603565552297099) -->
-    <skip />
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Simpan halaman"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Halaman disimpan."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Gagal menyimpan halaman."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Simpan untuk pembacaan di luar talian"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Gagal menyimpan untuk pembacaan di luar talian."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> penanda halaman"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Folder kosong"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Buka"</string>
@@ -145,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Tetapkan enjin carian"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Pilih enjin carian"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Tetapkan pada..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Muat auto halaman"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Format halaman web agar padan dengan saiz skrin"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Umum"</string>
@@ -168,10 +160,9 @@
     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Masukkan dan simpan data untuk medan auto isi borang web"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Log masuk Google automatik"</string>
     <string name="pref_autologin_progress" msgid="8333244467048833461">"Melog masuk ke dalam tapak Google menggunakan <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <!-- outdated translation 8013977161879448141 -->     <string name="autologin_bar_text" msgid="3684581827167173371">"Log masuk automatik tersedia."</string>
+    <string name="autologin_bar_text" msgid="3684581827167173371">"Log masuk sebagai"</string>
     <string name="autologin_bar_login_text" msgid="7052816600314556734">"Log masuk"</string>
-    <!-- no translation found for autologin_bar_hide_text (3629355974385859580) -->
-    <skip />
+    <string name="autologin_bar_hide_text" msgid="3629355974385859580">"Sembunyikn"</string>
     <string name="autologin_bar_error" msgid="5132514366023044839">"Log masuk gagal."</string>
     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Masukkan data yang anda mahu auto isi dalam medan web apabila anda menyentuhnya."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Nama penuh:"</string>
@@ -191,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil disimpan"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil telah dipadamkan"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Padam profil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Sediakan auto-isi?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Penyemak imbas boleh melengkapkan borang web seperti ini secara automatik. Adakah anda mahu menyediakan profil anda?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Auto isi sentiasa boleh dikonfigurasikan melalui Tetapan Penyemak Imbas."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Lumpuhkan auto isi"</string>
@@ -235,14 +227,10 @@
     <item msgid="7201512237890458902">"Sangat Besar"</item>
   </string-array>
     <string name="pref_min_font_size" msgid="8811125835817449131">"Saiz fon minimum"</string>
-    <!-- no translation found for pref_min_font_size_value (2924708480509060209) -->
-    <skip />
-    <!-- no translation found for pref_text_zoom (8387229123479610157) -->
-    <skip />
-    <!-- no translation found for pref_force_userscalable (5641500562399892621) -->
-    <skip />
-    <!-- no translation found for pref_force_userscalable_summary (4431962409438162448) -->
-    <skip />
+    <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>pt"</string>
+    <string name="pref_text_zoom" msgid="8387229123479610157">"Zum teks"</string>
+    <string name="pref_force_userscalable" msgid="5641500562399892621">"Paksa dayakan zum"</string>
+    <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Samada mahu m\'atasi p\'mintn tpk web utk kwl klakuan zum atau tdk"</string>
     <string name="pref_default_zoom" msgid="8076142259097187395">"Zum lalai"</string>
   <string-array name="pref_default_zoom_choices">
     <item msgid="549583171195154919">"Jauh"</item>
@@ -274,17 +262,21 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Pengekodan teks"</string>
     <string name="pref_accessibility_title" msgid="5127836981587423215">"Kebolehaksesan"</string>
-    <!-- no translation found for pref_font_size_category (6288925476811083551) -->
-    <skip />
+    <string name="pref_font_size_category" msgid="6288925476811083551">"Saiz fon"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Makmal"</string>
     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Kawalan pantas"</string>
     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Leret jari dr kiri/kanan utk akses kawalan pantas dan sembunyikan bar Apl &amp; URL"</string>
     <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Guna Google Instant bila anda guna Carian Google, utk tunjuk hasil bila anda menaip (boleh menambah penggunaan data)."</string>
-    <!-- no translation found for pref_lab_fullscreen (8173609016657987973) -->
+    <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Skrin penuh"</string>
+    <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Gunakan mod skrin penuh untuk menyembunyikan bar status."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
     <skip />
-    <!-- no translation found for pref_lab_fullscreen_summary (6853711692160711419) -->
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
     <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Pengurusan Lebar Jalur"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Hasil carian sedang dipramuat"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Benarkan penyemak imbas mempramuat hasil carian berkeyakinan tinggi di ltr blkg"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Masalah kesambungan data"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Masalah dengan fail"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Sahkan"</string>
@@ -294,8 +286,7 @@
     <string name="clear_history" msgid="5998307092715979619">"Padam bersih sejarah"</string>
     <string name="browser_history" msgid="1038987118290272525">"Halaman terbaru dilawati"</string>
     <string name="empty_history" msgid="8738772352308207274">"Sejarah penyemak imbas kosong."</string>
-    <!-- no translation found for go_home (3140773562046381164) -->
-    <skip />
+    <string name="go_home" msgid="3140773562046381164">"Laman utama"</string>
     <string name="add_new_bookmark" msgid="8086367791400349049">"Tambah penanda halaman..."</string>
     <string name="add_bookmark_short" msgid="3783984330998103735">"Tambah"</string>
     <string name="search_hint" msgid="4647356319916631820">"Buat carian atau taipkan URL"</string>
@@ -395,14 +386,16 @@
     <string name="max_tabs_warning" msgid="4122034303809457570">"Tiada lagi tab yang sedia"</string>
     <string name="instant_search_label" msgid="8769284297650716935">"Google dengan Instant (Makmal)"</string>
     <string name="recover_title" msgid="8095611702406163360">"Pulihkan tetingkap?"</string>
-    <!-- outdated translation 5526783279696786755 -->     <string name="recover_prompt" msgid="6541354420842425606">"Penyemak imbas kelihatan seperti telah ranap. Adakah anda mahu memulihkan tetingkap anda kepada keadaan terakhirnya?"</string>
-    <!-- outdated translation 5837971910598069183 -->     <string name="recover_yes" msgid="4540538008955917099">"Ya"</string>
+    <string name="recover_prompt" msgid="6541354420842425606">"Adakah anda mahu memulihkan tab penyemak imbas anda kepada keadaan terakhirnya?"</string>
+    <string name="recover_yes" msgid="4540538008955917099">"Pulihkan"</string>
     <string name="recover_no" msgid="3121030267940592611">"Tidak"</string>
-    <!-- outdated translation 1470306351083271066 -->     <string name="preview" msgid="6450823514561689038">"Pratonton:"</string>
-    <!-- no translation found for local_bookmarks (533816851415228520) -->
+    <string name="preview" msgid="6450823514561689038">"Pratonton"</string>
+    <string name="local_bookmarks" msgid="533816851415228520">"Tempatan"</string>
+    <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mudah alih"</string>
+    <string name="ua_switcher_desktop" msgid="2535200543238676638">"Desktop"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Pramuat hasil"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
     <skip />
-    <!-- no translation found for ua_switcher_mobile (5103260404792449606) -->
-    <skip />
-    <!-- no translation found for ua_switcher_desktop (2535200543238676638) -->
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
     <skip />
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 51829da..0b1f4a3 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Filopplasting er deaktivert"</string>
     <string name="new_tab" msgid="4505722538297295141">"Ny fane"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Nytt inkognitovindu"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Vinduer"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Bokmerker"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Mest besøkt"</string>
     <string name="tab_history" msgid="1979267558744613746">"Logg"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Lagrede sider"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Lagt til bokmerker"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Fjernet fra bokmerker"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Logg på <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Nedlastinger"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Kopier nettstedsadresse"</string>
     <string name="share_page" msgid="593756995297268343">"Del side"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Frys fane"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Lagre siden"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Siden ble lagret."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Fikk ikke lagret siden."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Lagre for frakoblet lesing"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Lagring for frakoblet lesing mislyktes."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> bokmerker"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Tøm mappe"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Åpne"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Angi søkemotor"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Velg en søkemotor"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Satt til"</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Tilpass sider automatisk"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Tilpass nettsteder til skjermen"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Generelt"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profilen er lagret"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profilen ble slettet"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Slett profil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Vil du konfigurere autofyll?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Nettleseren kan automatisk fylle ut slike nettskjemaer. Vil du konfigurere profilen din?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Autofyll kan alltid konfigureres via nettleserinnstillingene."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Deaktiver automatisk utfylling"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Bruk Google Instant når du bruker Google Søk for å vise resultater mens du skriver (dette kan gi økt databruk)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Fullskjerm"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Bruk fullskjermmodus for å skjule statusfeltet."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Admin. av båndbredde"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Forhåndslaster søkeresultat"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"La nettleseren forhåndslaste søkeresultater med høy visshet i bakgrunnen"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Datatilkoblingsproblem"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem med fil"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bekreft"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Lokal"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Skrivebord"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Forhåndslaster resultater"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index b8ae5fa..67664fb 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Bestandsuploads zijn uitgeschakeld."</string>
     <string name="new_tab" msgid="4505722538297295141">"Nieuw venster"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Nieuw incognitovenster"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Vensters"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Bladwijzers"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Meest bezocht"</string>
     <string name="tab_history" msgid="1979267558744613746">"Geschiedenis"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Opgeslagen pagina\'s"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Toegevoegd aan bladwijzers"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Verwijderd uit bladwijzers"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Aanmelden bij <xliff:g id="HOSTNAME">%s1</xliff:g> \'<xliff:g id="REALM">%s2</xliff:g>\'"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Downloads"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Pagina-URL kopiëren"</string>
     <string name="share_page" msgid="593756995297268343">"Pagina delen"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Statische tabbladkopie maken"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Pagina opslaan"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Pagina opgeslagen."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Opslaan van pagina mislukt."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Opslaan voor offline lezen"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Het opslaan voor offline lezen is mislukt."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> bladwijzers"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Lege map"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Openen"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Zoekmachine instellen"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Selecteer een zoekmachine"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Ingesteld op..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Pagina\'s passend maken"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Webpagina\'s zo indelen dat deze op het scherm passen"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Algemeen"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profiel opgeslagen"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profiel verwijderd"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Profiel verwijderen"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Automatisch aanvullen instellen?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"De browser kan webformulieren zoals dit formulier automatisch invullen. Wilt u uw profiel instellen?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"U kunt Automatisch aanvullen altijd configureren via de browserinstellingen."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Automatisch aanvullen uitschakelen"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Gebruik Google Instant bij Google Zoeken voor resultaten tijdens het typen (kan resulteren in meer gegevensverbruik)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Volledig scherm"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Gebruik de modus voor volledig scherm om de statusbalk te verbergen."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Bandbreedtebeheer"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Zoekresultaten vooraf laden"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Browser toestaan resultaten met hoog betrouwbaarheidsniveau vooraf te laden"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Probleem met gegevensverbinding"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Probleem met bestand"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bevestigen"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Lokaal"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobiel"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Desktop"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Resultaten vooraf laden"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 99ad809..e4284d8 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Przesyłanie plików jest wyłączone."</string>
     <string name="new_tab" msgid="4505722538297295141">"Nowe okno"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Nowe okno incognito"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Okna"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Zakładki"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Popularne"</string>
     <string name="tab_history" msgid="1979267558744613746">"Historia"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Zapisane strony"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Dodano do zakładek"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Usunięto z zakładek"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Zaloguj się w witrynie <xliff:g id="HOSTNAME">%s1</xliff:g> „<xliff:g id="REALM">%s2</xliff:g>”"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Pobrane"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Kopiuj adres URL strony"</string>
     <string name="share_page" msgid="593756995297268343">"Udostępnij stronę"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Zablokuj kartę"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Zapisz stronę"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Strona została zapisana."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Nie można zapisać strony."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Zapisz do czytania offline"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Nie można zapisać do czytania w trybie offline."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Zakładki: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Pusty folder"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Otwórz"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Ustaw wyszukiwarkę"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Wybierz wyszukiwarkę"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Ustaw"</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Autodopasowanie stron"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatuj strony internetowe, by dopasować je do ekranu"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Ogólne"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil został zapisany"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil usunięto"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Usuń profil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Skonfigurować autouzupełnianie?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Takie formularze internetowe mogą być automatycznie wypełniane w przeglądarce. Czy chcesz skonfigurować swój profil?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Autouzupełnianie można zawsze skonfigurować w ustawieniach przeglądarki."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Wyłącz autouzupełnianie"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Użyj wyszukiwania dynamicznego Google, aby uzyskiwać wyniki podczas pisania (może być pobierana większa ilość danych)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Pełny ekran"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Użyj trybu pełnoekranowego, aby ukryć pasek stanu."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Zarządzanie przepustowością"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Wstępne wczytywanie wyników wyszukiwania"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Zezwalaj przeglądarce na wstępne wczytywanie sprawdzonych wyników wyszukiwania w tle"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problem z łącznością danych"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem z plikiem"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Potwierdzenie"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Lokalne"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Dla komórek"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Dla komputerów"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Wstępnie wczytaj wyniki"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 22dc833..b6322da 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Os carregamentos de ficheiros estão desativados."</string>
     <string name="new_tab" msgid="4505722538297295141">"Nova janela"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Nova janela de naveg. anónima"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Janelas"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Marcadores"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Os mais visitados"</string>
     <string name="tab_history" msgid="1979267558744613746">"Histórico"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Páginas Guardadas"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Adicionado aos marcadores"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Removido dos marcadores"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Iniciar sessão em <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Transferências"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Copiar URL da página"</string>
     <string name="share_page" msgid="593756995297268343">"Partilhar página"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Fixar separador"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Guardar página"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Página guardada."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Ocorreu uma falha ao guardar a página."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Guardar para leitura off-line"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Erro ao guardar para leitura off-line."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> marcadores"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Pasta vazia"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Abrir"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Definir motor de pesquisa"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Seleccionar um motor de pesquisa"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Definido para..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Ajuste auto de páginas"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatar páginas Web para se ajustarem ao ecrã"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Gerais"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Perfil guardado"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Perfil eliminado"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Eliminar perfil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Conf. preenchimento automático?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"O navegador pode preencher automaticamente os formulários Web deste tipo. Pretende configurar o seu perfil?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"O Preenchimento automático pode sempre ser configurado através das Definições do navegador."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Desativar preenchimento automático"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Utilize Google Instantâneo na Pesquisa do Google para mostrar resultados quando escreve (pode aumentar utiliz. dados)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Ecrã inteiro"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Utilizar o modo de ecrã inteiro para ocultar a barra de estado."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Gestão da Larg. de banda"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Pré-carreg. dos resultados da pesquisa"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Permitir ao navegador pré-carreg. em 2º plano result. de pesq. de alta confiança"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema de conectividade de dados"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problemas com o ficheiro"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirmar"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Local"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Telemóvel"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Computador"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Pré-carregar resultados"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 0a56ee9..b076553 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"O upload de arquivos está desativado."</string>
     <string name="new_tab" msgid="4505722538297295141">"Nova janela"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Nova janela anônima"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Janelas"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Favoritos"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Mais visitados"</string>
     <string name="tab_history" msgid="1979267558744613746">"Histórico"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Páginas salvas"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Adicionado aos favoritos"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Removido dos favoritos"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Fazer login no <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Downloads"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Copiar URL da página"</string>
     <string name="share_page" msgid="593756995297268343">"Compartilhar página"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Congelar guia"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Salvar a página"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Página salva."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Falha ao salvar página."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Salvar para leitura off-line"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Falha ao salvar para leitura off-line."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> favoritos"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Pasta vazia"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Abrir"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Definir mecanismo de pesquisa"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Selecionar um mecanismo de pesquisa"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Definir para..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Ajustar automaticamente"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatar páginas da web para se ajustarem à tela"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Geral"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Perfil salvo"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Perfil excluído"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Excluir perfil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Configurar preenchimento autom.?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"O navegador pode preencher automaticamente formulários da web como este. Gostaria de configurar seu perfil?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"O preenchimento automático sempre pode ser configurado através das configurações do navegador."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Desativar o preenchimento automático"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Use o Google Instant ao usar a Pesquisa Google para exibir resultados enquanto digita (o uso de dados pode aumentar)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Tela cheia"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Use o modo de tela cheia para ocultar a barra de status."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Gerenc. de larg. de banda"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Pré-carreg. dos resultados da pesquisa"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Permitir ao naveg. pré-carr. result. de busca de alta confiança em segundo plano"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema de conectividade de dados"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problema com o arquivo"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirmar"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Locais"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Celular"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Computador"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Pré-carregar resultados"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index 2ffa431..5aa74a2 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -22,10 +22,11 @@
     <skip />
     <string name="new_tab" msgid="4505722538297295141">"Nova fanestra"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Nova fanestra incognito"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Fanestra"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Segnapaginas"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Visità il pli savens"</string>
     <string name="tab_history" msgid="1979267558744613746">"Cronologia"</string>
+    <!-- no translation found for tab_snapshots (4435852763803720588) -->
+    <skip />
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Agiuntà als segnapaginas"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Allontanà dals segnapaginas"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"S\'annunziar tar <xliff:g id="HOSTNAME">%s1</xliff:g> «<xliff:g id="REALM">%s2</xliff:g>»"</string>
@@ -116,11 +117,10 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Telechargiadas"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Copiar la URL da la pagina"</string>
     <string name="share_page" msgid="593756995297268343">"Barattar la pagina"</string>
-    <!-- no translation found for menu_freeze_tab (189603565552297099) -->
+    <!-- no translation found for menu_save_snapshot (6935080344031126139) -->
     <skip />
-    <!-- outdated translation 3934652434001459581 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Memorisar sco archiv web"</string>
-    <!-- outdated translation 7045250341467345007 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Memorisà archiv da web"</string>
-    <!-- outdated translation 2880998204746620260 -->     <string name="webarchive_failed" msgid="19950914584285713">"Betg reussì da memorisar l\'archiv da web."</string>
+    <!-- no translation found for snapshot_failed (6176197364690207251) -->
+    <skip />
     <!-- no translation found for contextheader_folder_bookmarkcount (353987136645619089) -->
     <skip />
     <!-- no translation found for contextheader_folder_empty (974171637803391651) -->
@@ -168,7 +168,7 @@
     <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
     <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
     <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Adattar las paginas auto."</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Adattar las paginas web al visur"</string>
@@ -248,6 +248,8 @@
     <skip />
     <!-- no translation found for autofill_profile_editor_delete_profile (2754563301088418752) -->
     <skip />
+    <!-- no translation found for autofill_setup_dialog_title (1955613311837926540) -->
+    <skip />
     <!-- no translation found for autofill_setup_dialog_message (6605682320156223114) -->
     <skip />
     <!-- no translation found for autofill_setup_dialog_negative_toast (6990737008936188620) -->
@@ -358,6 +360,16 @@
     <skip />
     <!-- no translation found for pref_lab_fullscreen_summary (6853711692160711419) -->
     <skip />
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <!-- no translation found for pref_data_title (750316606686075162) -->
+    <skip />
+    <!-- no translation found for pref_data_preload_title (4479320472980292873) -->
+    <skip />
+    <!-- no translation found for pref_data_preload_summary (7488335627364473744) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problem da connectivitad da datas"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem da datoteca"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confermar"</string>
@@ -504,4 +516,10 @@
     <skip />
     <!-- no translation found for ua_switcher_desktop (2535200543238676638) -->
     <skip />
+    <!-- no translation found for permission_preload_label (4856971662337877316) -->
+    <skip />
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index bda392f..35a8e16 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Încărcarea fişierelor este dezactivată."</string>
     <string name="new_tab" msgid="4505722538297295141">"Fereastră nouă"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Fereastră incognito nouă"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Windows"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Marcaje"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Cele mai vizitate"</string>
     <string name="tab_history" msgid="1979267558744613746">"Istoric"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Pagini salvate"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Adăugat la marcaje"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Eliminat din marcaje"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Conectaţi-vă la <xliff:g id="HOSTNAME">%s1</xliff:g> „<xliff:g id="REALM">%s2</xliff:g>”"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Descărcări"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Copiaţi adresa URL a paginii"</string>
     <string name="share_page" msgid="593756995297268343">"Distribuiţi pagina"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Îngheţaţi fila"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Salvaţi pagina"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Pagina a fost salvată."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Pagina nu a fost salvată."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Salvaţi pentru lectură offline"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Salvarea pentru lectura offline a eşuat."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> (de) marcaje"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Dosar gol"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Deschideţi"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Setaţi motorul de căutare"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Selectaţi un motor de căutare"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Setaţi la..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Potriviţi paginile automat"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formataţi paginile web pentru a se potrivi cu ecranul"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"General"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profilul a fost salvat"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profilul a fost şters"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Ştergeţi profilul"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Config. completarea automată?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Browserul poate completa în mod automat formulare web ca acesta. Doriţi să vă configuraţi profilul?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Completarea automată poate fi configurată oricând din Setările browserului."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Dezactivaţi completarea automată"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Utilizaţi Google Instant în Căutarea Google şi vedeţi rezultate în timp ce introd. text (creşte vol. de date utilizate)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Ecran complet"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Utilizaţi modul ecran complet pentru a ascunde bara de stare."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Gestion. lăţimii de bandă"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Se preîncarcă rezultatele căutării"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Permiteţi browserului să preîncarce în fundal rezultatele cu încredere ridicată"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Există o problemă de conexiune la date"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problemă cu fişierul"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirmaţi"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Locale"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Desktop"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Se preîncarcă rezultatele"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index a4ff897..3f9bb45 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Добавление файлов отключено."</string>
     <string name="new_tab" msgid="4505722538297295141">"Новое окно"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Новое окно в режиме инкогнито"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Окна"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Закладки"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Часто посещаемые"</string>
     <string name="tab_history" msgid="1979267558744613746">"История"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Сохраненные страницы"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Добавлено в закладки"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Удалено из закладок"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Войти в <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Загрузки"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Копировать URL страницы"</string>
     <string name="share_page" msgid="593756995297268343">"Отправить страницу"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Зафиксировать вкладку"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Сохранить страницу"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Страница сохранена."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Не удалось сохранить страницу."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Сохранить для чтения офлайн"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Ошибка при сохранении для чтения офлайн."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Закладок: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Папка пуста"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Открыть"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Поисковая система"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Выберите поисковую систему"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"При запуске браузера"</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Мобильный вид"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Адаптировать контент к размеру экрана мобильного устройства"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Общие"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Профиль сохранен"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Профиль удален"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Удалить профиль"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Настроить автозаполнение?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Браузер может заполнять такие формы автоматически. Настроить профиль автозаполнения?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Автозаполнение всегда можно настроить в меню \"Настройки браузера\"."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Отключить автозаполнение"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"В Живом поиске результаты появляются прямо при вводе текста (возможно увеличение объема передаваемых данных)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Во весь экран"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Чтобы скрыть строку состояния, используйте полноэкранный режим."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Пропускная способность"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Загрузка результатов поиска"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Разрешить браузеру загружать достоверные результаты поиска в фоновом режиме"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблема с подключением"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблема с файлом"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Подтвердить"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Локальные"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Мобильная"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Обычная"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Загрузить результаты"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 63f6214..336e8a9 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Odovzdávanie súborov je zakázané."</string>
     <string name="new_tab" msgid="4505722538297295141">"Nové okno"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Nové okno inkognito"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Windows"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Záložky"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Najviac navštevované"</string>
     <string name="tab_history" msgid="1979267558744613746">"História"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Uložené stránky"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Pridané medzi záložky"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Odstránené zo záložiek"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Prihláste sa do služby <xliff:g id="HOSTNAME">%s1</xliff:g> „<xliff:g id="REALM">%s2</xliff:g>“"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Prevzatia"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Kopírovať adresu URL stránky"</string>
     <string name="share_page" msgid="593756995297268343">"Zdieľať stránku"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Zmraziť kartu"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Uložiť stránku"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Stránka bola uložená."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Ukladanie stránky zlyhalo."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Uložiť na čítanie offline"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Uloženie na čítanie offline zlyhalo."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Počet záložiek: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Prázdny priečinok"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Otvoriť"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Nastaviť vyhľadávací nástroj"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Výber vyhľadávacieho nástroja"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Nastaviť na..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Automaticky prispôsobiť"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Prispôsobiť veľkosť webových stránok obrazovke"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Všeobecné"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil uložený"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil bol odstránený."</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Odstrániť profil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Nastaviť automatické dopĺňanie?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Prehliadač dokáže automaticky vyplniť webové formuláre, ako je tento. Chcete nastaviť svoj profil?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automatické dopĺňanie môžete kedykoľvek nakonfigurovať v Nastaveniach prehliadača."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Zakázať automatické dopĺňanie"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Ak chcete zobrazovať výsl. počas zadávania textu, použite Dynamické vyhľ. Google (môže sa zvýšiť spotr. údajov)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Celá obrazovka"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Ak chcete skryť stavový riadok, použite režim celej obrazovky."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Správa šírky pásma"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Predbežné načít. výsledkov vyhľadávania"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Umožniť prehliadaču na pozadí predbežne načítať relevantné výsledky vyhľadávania"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problémy s dátovým pripojením"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problém so súborom"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Potvrdiť"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Miestne"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Stolný počítač"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Predbežné načítanie výsledkov"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 0e4ad47..78a954c 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Prenosi datotek so onemogočeni."</string>
     <string name="new_tab" msgid="4505722538297295141">"Novo okno"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Novo okno brez belež. zgod."</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Okna"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Zaznamki"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Najpogosteje obiskovano"</string>
     <string name="tab_history" msgid="1979267558744613746">"Zgodovina"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Shranjene strani"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Dodano med zaznamke"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Odstranjeno iz zaznamkov"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Prijavi se v <xliff:g id="HOSTNAME">%s1</xliff:g> »<xliff:g id="REALM">%s2</xliff:g>«"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Prenosi"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Kopiraj URL strani"</string>
     <string name="share_page" msgid="593756995297268343">"Stran deli z drugimi"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Zamrzni zavihek"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Shrani stran"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Stran je shranjena."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Shranjevanje strani ni uspelo."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Shrani za branje brez povezave"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Shranjevanje za branje brez povezave ni uspelo."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Število zaznamkov: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Prazna mapa"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Odpri"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Nastavi iskalnik"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Izberi iskalnik"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Nastavi na ..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Samodejno prilagodi velikost strani"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Oblikuj spletne strani, da se prilegajo zaslonu"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Splošno"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil je shranjen"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil je izbrisan"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Izbriši profil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Nastavitev samozapolnjevanja"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Brskalnik lahko samodejno izpolni spletne obrazce, kot je ta. Ali želite prilagoditi svoj profil?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Samodejno izpolnjevanje lahko nastavite v nastavitvah brskalnika."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Onemogoči samodejno izpolnjevanje"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Če uporabljate Google Dinamično iskanje, se rezultati prikazujejo že med tipkanjem, kar lahko poveča porabo podatkov."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Celozaslonsko"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Če želite skriti vrstico stanja, uporabite celozaslonski način."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Upravljanje pasov. širine"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Vnaprejšnje nalaganje rezultatov iskanja"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Dovoli brskalniku vnapr. nalag. rezult. z visoko stopnjo zanesljivosti v ozadju."</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Težava s povezljivostjo podatkov"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Težava z datoteko"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Potrdi"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Lokalno"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobilna različica"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Namizje"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Vnaprej naloži rezultate"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index acf98b8..654b1cf 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Отпремање датотека је онемогућено."</string>
     <string name="new_tab" msgid="4505722538297295141">"Нови прозор"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Нов прозор без архивирања"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Прозори"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Обележивачи"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Најпосећенији"</string>
     <string name="tab_history" msgid="1979267558744613746">"Историја"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Сачуване странице"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Додато у обележиваче"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Уклоњено из обележивача"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Пријављивање на <xliff:g id="HOSTNAME">%s1</xliff:g> „<xliff:g id="REALM">%s2</xliff:g>“"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Преузимања"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Копирај URL адресу странице"</string>
     <string name="share_page" msgid="593756995297268343">"Дели страницу"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Замрзни картицу"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Сачувај страницу"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Страница је сачувана."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Чување странице није успело."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Сачувај за читање ван мреже"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Чување за читање ван мреже није успело."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> обележивача"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Празан директоријум"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Отвори"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Подешавање претраживача"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Изаберите претраживач"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Подеси на…"</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Аутоматски уклопи странице"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Подешавање формата веб страница тако да се уклопе на екран"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Општa"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Профил је сачуван"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Профил је избрисан"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Избриши профил"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Желите да под. ауто. попуњавање?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Прегледач може аутоматски да попуњава веб обрасце попут овог. Желите ли да подесите профил?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Аутоматско попуњавање увек можете да конфигуришете у Подешавањима прегледача."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Онемогући аутоматско попуњавање"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Користите Google инстант са Google претрагом да бисте видели резултате док куцате (то може да повећа употребу података)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Цео екран"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Сакријте статусну траку помоћу режима целог екрана."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Управљање проп. опсегом"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Учитавање резултата претраге унапред"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Дозволи да прегледач у позадини унапред учита резултате претраге високог степена поузданости"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблем при повезивању са подацима"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблем са датотеком"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Потврда"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Локални"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Мобилни"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Рачунар"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Учитавање резултата унапред"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 69163a4..4c2c2a6 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Filöverföringen har inaktiverats."</string>
     <string name="new_tab" msgid="4505722538297295141">"Nytt fönster"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Nytt inkognitofönster"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Fönster"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Bokmärken"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Mest besökta"</string>
     <string name="tab_history" msgid="1979267558744613746">"Historik"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Sparade sidor"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Har lagts till i Bokmärken"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Har tagits bort från Bokmärken"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Logga in på <xliff:g id="HOSTNAME">%s1</xliff:g> <xliff:g id="REALM">%s2</xliff:g>"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Hämtningar"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Kopiera sidans webbadress"</string>
     <string name="share_page" msgid="593756995297268343">"Dela sida"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Frys fliken"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Spara sida"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Sidan har sparats."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Sidan kunde inte sparas."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Spara för läsning offline"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Det gick inte att spara för läsning offline."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> bokmärken"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Tom mapp"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Öppna"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Ange sökmotor"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Välj en sökmotor"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Ställ in på..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Autoanpassa sidor"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Anpassa webbsidor efter skärmen"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Allmänt"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profilen har sparats"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profilen har tagits bort"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Ta bort profil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Vill du konfigurera autofyll?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Webbläsaren kan fylla i den här typen av formulär automatiskt. Vill du skapa en profil?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Du kan när som helst ändra inställningarna för Autofyll bland inställningarna för webbläsaren."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Inaktivera Autofyll"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Använd Google Instant när du söker på Google så får du resultat medan du skriver (detta kan öka dataanvändningen)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Helskärm"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Använd helskärmsläge om du vill dölja statusfältet."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Bandbreddshantering"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Förinläsning av sökresultat"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Låt webbläsaren läsa in säkra sökresultat i förväg i bakgrunden"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problem med dataanslutning"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem med filen"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bekräfta"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Lokala"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Skrivbord"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Läs in resultat i förväg"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index bd274e9..b99edb0 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -22,10 +22,11 @@
     <skip />
     <string name="new_tab" msgid="4505722538297295141">"Dirisha jipya"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Dirisha fiche jipya"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Windows"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Alamisho"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Zilizotembelewa sana"</string>
     <string name="tab_history" msgid="1979267558744613746">"Historia"</string>
+    <!-- no translation found for tab_snapshots (4435852763803720588) -->
+    <skip />
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Imeongezwa kwa alamisho"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Imeondolewa kutoka kwa alamisho"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Ingia kwa <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -142,11 +143,10 @@
     <string name="copy_page_url" msgid="7635062169011319208">"Nakili url ya ukurasa"</string>
     <!-- no translation found for share_page (593756995297268343) -->
     <skip />
-    <!-- no translation found for menu_freeze_tab (189603565552297099) -->
+    <!-- no translation found for menu_save_snapshot (6935080344031126139) -->
     <skip />
-    <!-- outdated translation 3934652434001459581 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Hifadhi kama Jalada la Wavuti"</string>
-    <!-- outdated translation 7045250341467345007 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Jalada la wavuti limehifadhiwa."</string>
-    <!-- outdated translation 2880998204746620260 -->     <string name="webarchive_failed" msgid="19950914584285713">"Imeshindwa kuhifadhi jalada la wavuti"</string>
+    <!-- no translation found for snapshot_failed (6176197364690207251) -->
+    <skip />
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Alamisho <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Folda iko tupu"</string>
     <!-- no translation found for contextmenu_openlink (7237961252214188935) -->
@@ -211,7 +211,7 @@
     <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
     <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
     <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
     <!-- no translation found for pref_content_autofit (8260474534053660809) -->
     <skip />
@@ -259,6 +259,8 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Maelezo Mafupi yamehifadhiwa"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Maelezo mafupi yamefutwa"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Futa maelezo mafupi"</string>
+    <!-- no translation found for autofill_setup_dialog_title (1955613311837926540) -->
+    <skip />
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Kivinjari kinaweza kukamilisha fomu za wavuti  kama hii kiotomatiki. Je, ungependa kuweka maelezo yako mafupi?"</string>
     <!-- no translation found for autofill_setup_dialog_negative_toast (6990737008936188620) -->
     <skip />
@@ -374,6 +376,16 @@
     <skip />
     <!-- no translation found for pref_lab_fullscreen_summary (6853711692160711419) -->
     <skip />
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <!-- no translation found for pref_data_title (750316606686075162) -->
+    <skip />
+    <!-- no translation found for pref_data_preload_title (4479320472980292873) -->
+    <skip />
+    <!-- no translation found for pref_data_preload_summary (7488335627364473744) -->
+    <skip />
     <!-- no translation found for browserFrameNetworkErrorLabel (126892350904924893) -->
     <skip />
     <!-- no translation found for browserFrameFileErrorLabel (8063691502792670367) -->
@@ -548,4 +560,10 @@
     <skip />
     <!-- no translation found for ua_switcher_desktop (2535200543238676638) -->
     <skip />
+    <!-- no translation found for permission_preload_label (4856971662337877316) -->
+    <skip />
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-sw600dp/dimensions.xml b/res/values-sw600dp/dimensions.xml
index e1ed19e..2c4aaae 100644
--- a/res/values-sw600dp/dimensions.xml
+++ b/res/values-sw600dp/dimensions.xml
@@ -35,4 +35,6 @@
     <dimen name="qc_thumb_height">160dip</dimen>
     <dimen name="qc_item_size">48dip</dimen>
     <dimen name="suggest_item_padding">16dp</dimen>
+    <dimen name="toolbar_height">48dip</dimen>
+    <dimen name="progress_bar_margin">-11dip</dimen>
 </resources>
diff --git a/res/values-sw600dp/styles.xml b/res/values-sw600dp/styles.xml
index 1bd6172..41e09ae 100644
--- a/res/values-sw600dp/styles.xml
+++ b/res/values-sw600dp/styles.xml
@@ -20,7 +20,7 @@
         <item name="android:windowActionBar">true</item>
         <item name="android:windowNoTitle">false</item>
         <item name="android:actionBarStyle">@style/ActionBarStyle</item>
-        <item name="android:actionButtonStyle">@style/ActionButton</item>
+        <item name="android:actionBarSize">56dip</item>
     </style>
     <style name="Suggestions" parent="@android:style/Widget.Holo.AutoCompleteTextView">
     </style>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 34fcb53..993ded5 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"การอัปโหลดไฟล์ถูกปิดใช้งาน"</string>
     <string name="new_tab" msgid="4505722538297295141">"หน้าต่างใหม่"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"หน้าต่างใหม่ที่ไม่ระบุตัวตน"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Windows"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"บุ๊กมาร์ก"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"เข้าชมมากที่สุด"</string>
     <string name="tab_history" msgid="1979267558744613746">"ประวัติ"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"หน้าที่บันทึกไว้"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"เพิ่มลงในบุ๊กมาร์กแล้ว"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"นำออกจากบุ๊กมาร์ก"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"ลงชื่อเข้าใช้ที่ <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"สิ่งที่ดาวน์โหลด"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"คัดลอก URL หน้าเว็บ"</string>
     <string name="share_page" msgid="593756995297268343">"แบ่งปันหน้าเว็บ"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"ตรึงแท็บ"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"บันทึกหน้าเว็บ"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"บันทึกหน้าเว็บแล้ว"</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"ไม่สามารถบันทึกหน้าเว็บ"</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"บันทึกเพื่ออ่านแบบออฟไลน์"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"ไม่สามารถบันทึกเพื่ออ่านแบบออฟไลน์ได้"</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"บุ๊กมาร์ก <xliff:g id="BOOKMARK_COUNT">%d</xliff:g> รายการ"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"โฟลเดอร์ว่าง"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"เปิด"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"ตั้งค่าเครื่องมือค้นหา"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"เลือกเครื่องมือค้นหา"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"ตั้งค่าเป็น ..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"ปรับหน้าให้พอดีอัตโนมัติ"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"ปรับรูปแบบหน้าเว็บให้พอดีกับหน้าจอ"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"ทั่วไป"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"บันทึกโปรไฟล์แล้ว"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"ลบโปรไฟล์แล้ว"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"ลบโปรไฟล์"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"ตั้งค่าการป้อนอัตโนมัติหรือไม่"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"เบราว์เซอร์จะกรอกเว็บฟอร์มให้โดยอัตโนมัติเช่นฟอร์มนี้ คุณต้องการตั้งค่าโปรไฟล์ของคุณหรือไม่"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"การป้อนอัตโนมัติสามารถกำหนดค่าผ่านการตั้งค่าเบราว์เซอร์"</string>
     <string name="disable_autofill" msgid="8305901059849400354">"ปิดใช้งานการป้อนอัตโนมัติ"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"ใช้ Google ค้นหาทันใจเมื่อคุณใช้ Google Search เพื่อแสดงผลการค้นหาในขณะที่คุณพิมพ์ (ซึ่งสามารถเพิ่มการใช้งานข้อมูล)"</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"เต็มหน้าจอ"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"ใช้โหมดเต็มหน้าจอเพื่อซ่อนแถบสถานะ"</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"การจัดการแบนด์วิดท์"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"การโหลดผลการค้นหาล่วงหน้า"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"อนุญาตให้เบราว์เซอร์โหลดผลการค้นหาที่เชื่อถือได้สูงก่อนล่วงหน้าในเบื้องหลัง"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"ปัญหาการเชื่อมต่อข้อมูล"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"ปัญหาเกี่ยวกับไฟล์"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"ยืนยัน"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"ในตัวเครื่อง"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"มือถือ"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"เดสก์ท็อป"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"โหลดผลลัพธ์ล่วงหน้า"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 5ab9ae9..941ce28 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Hindi pinagana ang mga pag-upload ng file."</string>
     <string name="new_tab" msgid="4505722538297295141">"Bagong window"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Bagong incognito window"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Windows"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Mga Bookmark"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Pinaka-binibisita"</string>
     <string name="tab_history" msgid="1979267558744613746">"Kasaysayan"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Na-save na Pahina"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Idinagdag sa mga bookmark"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Inalis mula sa mga bookmark"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Mag-sign in sa <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Mga Pag-download"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Kopyahin ang url ng pahina"</string>
     <string name="share_page" msgid="593756995297268343">"Ibahagi ang pahina"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"I-freeze ang Tab"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"I-save ang pahina"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Na-save na ang pahina."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Nabigong ma-save ang pahina."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"I-save para sa offline na pagbabasa"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Nabigong i-save para sa offline na pagbabasa."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> (na) bookmark"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Walang lamang folder"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Buksan"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Itakda ang search engine"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Pumili ng search engine"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Itakda sa…"</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Mga auto-fit na pahina"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"I-format ang mga web page upang iakma sa screen"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Pangkalahatan"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Na-save na ang profile"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Natanggal na ang profile"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Tanggalin ang profile"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"I-setup ang auto-fill?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Maaaring awtomatikong kumpletuhin ng browser ang mga form ng web katulad nito. Gusto mo bang i-set up ang iyong profile?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Mako-configure anumang oras ang auto-fill sa pamamagitan ng Mga Setting ng Browser."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Huwag paganahin ang auto-fill"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Gamit Google Instant pag gumamit ka Google Search, para magpakita resulta habang type ka (mapataas nito paggamit data)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Fullscreen"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Gamitin ang mode na fullscreen upang itago ang status bar."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Pamamahala ng Bandwidth"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Pauna pag-load ng resulta sa paghahanap"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Payagan ang browser na una load ng taas na kumpyansa resulta paghanap sa background"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema sa pagkakakonekta ng data"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problema sa file"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Kumpirmahin"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Lokal"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobile"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Desktop"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Paunang i-load ang mga resulta"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 2c8885b..252d6be 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Dosya Yüklemeleri devre dışı bırakıldı."</string>
     <string name="new_tab" msgid="4505722538297295141">"Yeni pencere"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Yeni gizli pencere"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Pencereler"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Favoriler"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"En çok ziyaret edilenler"</string>
     <string name="tab_history" msgid="1979267558744613746">"Geçmiş"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Kayıtlı Sayfalar"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Favorilere eklendi"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Favorilerden kaldırıldı"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"<xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\" oturumu aç"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"İndirme işlemleri"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Sayfa url\'sini kopyala"</string>
     <string name="share_page" msgid="593756995297268343">"Sayfayı paylaş"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Sekmeyi dondur"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Sayfayı kaydet"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Sayfa kaydedildi."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Sayfa kaydedilemedi."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Çevrimdışı okuma için kaydet"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Çevrimdışı okuma için kaydedilemedi."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> yer işareti"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Boş klasör"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Aç"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Arama motoru ayarlayın"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Arama moturu seçin"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Ana sayfayı ayarla..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Sayfaları otomatik sığdır"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Web sayfalarını ekrana sığacak şekilde biçimlendir"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Genel"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil kaydedildi"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil silindi"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Profili sil"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Otomatik doldurma ayarlansın mı?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Tarayıcı bunun gibi web formlarını otomatik olarak tamamlayabilir. Profilinizi ayarlamak ister misiniz?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Otomatik doldurmayı istediğiniz zaman Tarayıcı Ayarları\'ndan yapılandırabilirsiniz."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Otomatik doldurmayı devre dışı bırak"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Yazarken sonuçların görüntülenmesi için, Google Arama\'yı kullanırken Google Anında Arama\'dan yararlanın (veri kullanımını artırabilir)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Tam ekran"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Durum çubuğunu gizlemek için tam ekran modunu kullanın"</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Bant Genişliği Yönetimi"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Arama sonucunu önyükleme"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Tarayıcının yüksek güvenli arama sonuçlarını arka planda önyüklemesine izin ver"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Veri bağlantısı sorunu"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Sorunlu dosya"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Doğrula"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Yerel"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Masaüstü"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Sonuçları önyükle"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index db77ea8..9e59bbc 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Завантаження файлів вимкнено."</string>
     <string name="new_tab" msgid="4505722538297295141">"Нове вікно"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Нове анонімне вікно"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Вікна"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Закладки"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Часто відвідувані"</string>
     <string name="tab_history" msgid="1979267558744613746">"Історія"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Збережені сторінки"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Додано до закладок"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Видалено із закладок"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Увійти в <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Завантаження"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Копіюв. URL стор."</string>
     <string name="share_page" msgid="593756995297268343">"Надісл. стор."</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Зафіксувати вкладку"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Зберегти сторінку"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Сторінку збережено."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Не вдалося зберегти сторінку."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Зберегти для читання в режимі офлайн"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Не вдалося зберегти для читання в режимі офлайн."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Закладок: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Порожня папка"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Відкр."</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Налашт. пошук. сист."</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Виберіть пошукову систему"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Установити…"</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Автомат. припасув."</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Форматув. сторінки до розмірів екрана"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Загальні"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Профіль збережено"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Профіль видалено"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Видалити профіль"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Налаштувати автозаповнення?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Веб-переглядач може автоматично заповнювати подібні веб-форми. Налаштувати ваш профіль?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Автозаповнення завжди можна налаштувати в налаштуваннях веб-переглядача."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Вимкнути автозаповнення"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Використовуйте Миттєвий пошук у пошуку Google для відображ. результ. під час введення (може збільшитись викорис. даних)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Повноекранний режим"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Використовуйте повноекранний режим, щоб ховати рядок стану."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Керув.пропускн.спроможн."</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Попереднє завантаж. результатів пошуку"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Дозволити переглядачу завантажувати достовірні рез-ти пошуку у фоновому режимі"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблема з доступом до даних"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблема з файлом"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Підтверд."</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Локальні"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Версія для мобільного пристрою"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Версія для комп’ютера"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Попередньо завантажувати результати"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index af441c8..7f7509d 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"Nội dung tải lên của tệp bị vô hiệu hóa."</string>
     <string name="new_tab" msgid="4505722538297295141">"Cửa sổ mới"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Cửa sổ ẩn danh mới"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"Windows"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Dấu trang"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Truy cập nhiều nhất"</string>
     <string name="tab_history" msgid="1979267558744613746">"Lịch sử"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"Trang đã lưu"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Đã thêm vào dấu trang"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Đã xoá khỏi dấu trang"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Đăng nhập vào <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -32,7 +32,7 @@
     <string name="password" msgid="1177138552305184404">"Mật khẩu"</string>
     <string name="action" msgid="183105774472071343">"Đăng nhập"</string>
     <string name="bookmarks_search" msgid="5229596268214362873">"Trình duyệt"</string>
-    <string name="cancel" msgid="3017274947407233702">"Huỷ"</string>
+    <string name="cancel" msgid="3017274947407233702">"Hủy"</string>
     <string name="ok" msgid="1509280796718850364">"OK"</string>
     <string name="title_bar_loading" msgid="7438217780834640678">"Đang tải…"</string>
     <string name="page_info" msgid="4048529256302257195">"Thông tin trang"</string>
@@ -53,7 +53,7 @@
     <string name="back" msgid="8414603107175713668">"Quay lại"</string>
     <string name="forward" msgid="4288210890526641577">"Chuyển tiếp"</string>
     <string name="save" msgid="5922311934992468496">"OK"</string>
-    <string name="do_not_save" msgid="6777633870113477714">"Huỷ"</string>
+    <string name="do_not_save" msgid="6777633870113477714">"Hủy"</string>
     <string name="location" msgid="3411848697912600125">"Địa chỉ"</string>
     <string name="account" msgid="5179824606448077042">"Tài khoản"</string>
     <string name="containing_folder" msgid="6771180232953030479">"Thêm vào"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Nội dung tải xuống"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Sao chép url của trang"</string>
     <string name="share_page" msgid="593756995297268343">"Chia sẻ trang"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"Cố định tab"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"Lưu trang"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"Đã lưu trang."</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"Không thể lưu trang."</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"Lưu để đọc ngoại tuyến"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"Không thể lưu để đọc ngoại tuyến."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> dấu trang"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Thư mục trống"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"Mở"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"Đặt công cụ tìm kiếm"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Chọn công cụ tìm kiếm"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Đặt thành…"</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"Tự động điều chỉnh kích thước các trang"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Định dạng trang web để vừa với màn hình"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Chung"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Đã lưu tiểu sử"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Đã xóa tiểu sử"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Xóa tiểu sử"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Thiết lập tự động điền vào?"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Trình duyệt có thể tự động hoàn thành biểu mẫu web như biểu mẫu này. Bạn có muốn thiết lập cấu hình của mình không?"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Luôn có thể định cấu hình tính năng Tự động điền thông qua Cài đặt trình duyệt."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Tắt tính năng tự động điền"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Sử dụng Google Instant khi bạn sử dụng Tìm kiếm của Google để hiển thị kết quả khi nhập (điều này có thể tăng việc sử dụng dữ liệu)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Toàn màn hình"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Sử dụng chế độ toàn màn hình để ẩn thanh trạng thái."</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"Quản lý băng thông"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Tải trước kết quả tìm kiếm"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"Cho phép trình duyệt tải trước các kết quả tìm kiếm có độ tin cậy cao trong nền"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Sự cố kết nối dữ liệu"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Sự cố với tệp"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Xác nhận"</string>
@@ -303,10 +305,10 @@
     <string name="download_menu_open" msgid="4888327480367757513">"Mở"</string>
     <string name="download_menu_clear" msgid="6264454531553418124">"Xoá khỏi danh sách"</string>
     <string name="download_menu_delete" msgid="8815502136393894148">"Xoá"</string>
-    <string name="download_menu_cancel" msgid="2545333007601851574">"Huỷ tải xuống"</string>
-    <string name="download_menu_cancel_all" msgid="2136550823151999166">"Huỷ tất cả nội dung tải xuống"</string>
-    <string name="download_cancel_dlg_title" msgid="8909108500262799748">"Huỷ nội dung tải xuống"</string>
-    <string name="download_cancel_dlg_msg" msgid="6285389170052357797">"Tất cả <xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> nội dung tải xuống sẽ bị huỷ và xoá khỏi lịch sử tải xuống."</string>
+    <string name="download_menu_cancel" msgid="2545333007601851574">"Hủy tải xuống"</string>
+    <string name="download_menu_cancel_all" msgid="2136550823151999166">"Hủy tất cả nội dung tải xuống"</string>
+    <string name="download_cancel_dlg_title" msgid="8909108500262799748">"Hủy nội dung tải xuống"</string>
+    <string name="download_cancel_dlg_msg" msgid="6285389170052357797">"Tất cả <xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> nội dung tải xuống sẽ bị hủy và xoá khỏi lịch sử tải xuống."</string>
     <string name="download_delete_file" msgid="5330036497843073249">"Tệp sẽ bị xoá"</string>
     <string name="download_file_error_dlg_title" msgid="2693630283595384874">"Hết dung lượng"</string>
     <string name="download_file_error_dlg_msg" msgid="5156405410324072471">"Không thể tải xuống <xliff:g id="FILENAME">%s</xliff:g>."\n"Tạo thêm dung lượng trên điện thoại của bạn và thử lại."</string>
@@ -329,7 +331,7 @@
     <string name="download_pending" msgid="2599683668575349559">"Đang bắt đầu tải xuống..."</string>
     <string name="download_pending_network" msgid="6548714525679461053">"Đang đợi kết nối dữ liệu…"</string>
     <string name="download_running_paused" msgid="6418029352085656495">"Đang đợi kết nối dữ liệu…"</string>
-    <string name="download_canceled" msgid="6057083743144492515">"Đã huỷ tải xuống."</string>
+    <string name="download_canceled" msgid="6057083743144492515">"Đã hủy tải xuống."</string>
     <string name="download_not_acceptable" msgid="313769696131563652">"Không thể tải xuống. Nội dung không được hỗ trợ trên điện thoại này."</string>
     <string name="download_file_error" msgid="1206648050615176113">"Không thể hoàn tất tải xuống. Không đủ dung lượng."</string>
     <string name="download_length_required" msgid="9038605488460437406">"Không thể tải xuống. Không thể xác định kích cỡ của mục."</string>
@@ -341,13 +343,13 @@
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Xoá dữ liệu đã lưu trữ"</string>
     <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Tất cả dữ liệu được lưu trữ bởi trang web này sẽ bị xoá"</string>
     <string name="webstorage_clear_data_dialog_ok_button" msgid="2516563534211898636">"Xoá tất cả"</string>
-    <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Huỷ"</string>
+    <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Hủy"</string>
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"MB được lưu trữ trên điện thoại"</string>
     <string name="loading_video" msgid="4887871585216091096">"Đang tải video"</string>
     <string name="geolocation_permissions_prompt_message" msgid="356796102004052471">"<xliff:g id="WEBSITE_ORIGIN">%s</xliff:g> muốn biết vị trí của bạn"</string>
     <string name="geolocation_permissions_prompt_share" msgid="9084486342048347976">"Chia sẻ vị trí"</string>
     <string name="geolocation_permissions_prompt_dont_share" msgid="6303025160237860300">"Từ chối"</string>
-    <string name="geolocation_permissions_prompt_remember" msgid="3118526300707348308">"Nhớ tuỳ chọn"</string>
+    <string name="geolocation_permissions_prompt_remember" msgid="3118526300707348308">"Nhớ tùy chọn"</string>
     <string name="geolocation_permissions_prompt_toast_allowed" msgid="987286072035125498">"Trang web này có thể truy cập vị trí của bạn. Thay đổi điều này trong Cài đặt -&gt; Cài đặt trang web"</string>
     <string name="geolocation_permissions_prompt_toast_disallowed" msgid="7695100950212692515">"Trang web này không thể truy cập vị trí của bạn. Thay đổi điều này trong Cài đặt -&gt; Cài đặt trang web"</string>
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Xóa truy cập vị trí"</string>
@@ -356,12 +358,12 @@
     <string name="geolocation_settings_page_dialog_title" msgid="1549842043381347668">"Xóa truy cập vị trí"</string>
     <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"Truy cập vị trí cho trang web này sẽ bị xoá"</string>
     <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Xoá truy cập"</string>
-    <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Huỷ"</string>
+    <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Hủy"</string>
     <string name="website_settings_clear_all" msgid="8739804325997655980">"Xoá tất cả"</string>
     <string name="website_settings_clear_all_dialog_title" msgid="7791826325122461718">"Xoá tất cả cài đặt trang web?"</string>
     <string name="website_settings_clear_all_dialog_message" msgid="6150502090601476333">"Tất cả các quyền về vị trí và dữ liệu trên trang web sẽ bị xoá."</string>
     <string name="website_settings_clear_all_dialog_ok_button" msgid="6401582240627669431">"Xoá tất cả dữ liệu"</string>
-    <string name="website_settings_clear_all_dialog_cancel_button" msgid="1896757051856611674">"Huỷ"</string>
+    <string name="website_settings_clear_all_dialog_cancel_button" msgid="1896757051856611674">"Hủy"</string>
     <string name="progress_dialog_setting_wallpaper" msgid="4871900779338536674">"Đang đặt hình nền..."</string>
     <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Dấu trang"</string>
     <string name="empty_bookmarks_folder" msgid="7843361614634930942">"Không có dấu trang"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"Địa phương"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"Điện thoại di động"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"Máy tính"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"Tải trước kết quả"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-w720dp/bools.xml b/res/values-w720dp/bools.xml
new file mode 100644
index 0000000..0d05b7f
--- /dev/null
+++ b/res/values-w720dp/bools.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2011 The Android Open Source Project Licensed under the
+    Apache License, Version 2.0 (the "License"); you may not use this file
+    except in compliance with the License. You may obtain a copy of the
+    License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+    applicable law or agreed to in writing, software distributed under the
+    License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+    CONDITIONS OF ANY KIND, either express or implied. See the License for
+    the specific language governing permissions and limitations under the
+    License.
+-->
+<resources
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <bool name="hide_nav_buttons">false</bool>
+</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index d4e3f56..24158c8 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"文件上传功能已停用。"</string>
     <string name="new_tab" msgid="4505722538297295141">"新窗口"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"新隐身窗口"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"窗口"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"书签"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"访问最多"</string>
     <string name="tab_history" msgid="1979267558744613746">"历史记录"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"保存的页面"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"已添加到书签"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"从书签中删除"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"登录 <xliff:g id="HOSTNAME">%s1</xliff:g>“<xliff:g id="REALM">%s2</xliff:g>”"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"下载内容"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"复制网页网址"</string>
     <string name="share_page" msgid="593756995297268343">"分享网页"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"冻结标签"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"保存网页"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"网页已保存。"</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"保存网页时失败。"</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"保存以供离线阅读"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"无法保存以供离线阅读。"</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> 个书签"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"空文件夹"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"打开"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"设置搜索引擎"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"选择搜索引擎"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"设置为..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"自动调整页面"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"调整网页版面以适合屏幕大小"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"常规"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"个人资料已保存"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"个人资料已删除"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"删除个人资料"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"要设置自动填充功能吗？"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"浏览器可自动填充网络表单（例如该表单）。您希望设置个人资料吗？"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"您可以随时通过“浏览器设置”配置自动填充功能。"</string>
     <string name="disable_autofill" msgid="8305901059849400354">"停用自动填充"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"借助 Google 即搜即得，您可以在使用 Google 搜索时一边键入内容一边查看结果（此功能可能会增加数据使用量）。"</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"全屏"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"使用全屏模式可隐藏状态栏。"</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"带宽管理"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"搜索结果预加载"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"允许浏览器在后台预加载相关度高的搜索结果"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"数据连接性问题"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"文件有问题"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"确认"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"本地"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"移动版"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"桌面版"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"预加载结果"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index b33a0d5..9405b28 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -21,10 +21,10 @@
     <string name="uploads_disabled" msgid="463761197575372994">"檔案上傳功能已停用。"</string>
     <string name="new_tab" msgid="4505722538297295141">"新視窗"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"新的無痕式視窗"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"視窗"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"書籤"</string>
-    <string name="tab_most_visited" msgid="1077402532455000703">"常用網頁"</string>
+    <string name="tab_most_visited" msgid="1077402532455000703">"最常造訪"</string>
     <string name="tab_history" msgid="1979267558744613746">"記錄"</string>
+    <string name="tab_snapshots" msgid="4435852763803720588">"儲存的網頁"</string>
     <string name="added_to_bookmarks" msgid="1020224130695956728">"已加入書籤"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"已自書籤中移除"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"登入到 <xliff:g id="HOSTNAME">%s1</xliff:g>「<xliff:g id="REALM">%s2</xliff:g>」"</string>
@@ -101,10 +101,8 @@
     <string name="menu_view_download" msgid="2124570321712995120">"下載"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"複製網頁網址"</string>
     <string name="share_page" msgid="593756995297268343">"分享網頁"</string>
-    <string name="menu_freeze_tab" msgid="189603565552297099">"凍結分頁"</string>
-    <string name="menu_save_webarchive" msgid="2474117375302625691">"儲存網頁"</string>
-    <string name="webarchive_saved" msgid="2212053339474523406">"網頁已儲存。"</string>
-    <string name="webarchive_failed" msgid="19950914584285713">"無法儲存網頁。"</string>
+    <string name="menu_save_snapshot" msgid="6935080344031126139">"儲存以供離線閱讀"</string>
+    <string name="snapshot_failed" msgid="6176197364690207251">"無法儲存頁面以供離線閱讀。"</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> 個書籤"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"空資料夾"</string>
     <string name="contextmenu_openlink" msgid="7237961252214188935">"開啟"</string>
@@ -143,11 +141,7 @@
     <string name="pref_content_search_engine" msgid="1620101310821644144">"設定搜尋引擎"</string>
     <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"選取搜尋引擎"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"設為..."</string>
-    <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
-    <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
-    <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
-    <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <string name="pref_content_autofit" msgid="8260474534053660809">"自動調整頁面"</string>
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"配合螢幕大小調整網頁版面"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"一般設定"</string>
@@ -188,6 +182,7 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"設定檔已儲存"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"個人資料已刪除"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"刪除設定檔"</string>
+    <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"設定自動填入功能？"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"瀏覽器可以自動填寫這類網路表單，您要建立個人資料嗎？"</string>
     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"您可隨時透過 [瀏覽器設定] 設定自動填入功能。"</string>
     <string name="disable_autofill" msgid="8305901059849400354">"停用自動填入功能"</string>
@@ -275,6 +270,13 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"使用「Google 搜尋」時啟用「Google 互動智慧搜尋」功能，您輸入查詢時可以即時獲得顯示搜尋結果 (這會增加資料傳輸量)。"</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"全螢幕"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"使用全螢幕模式以隱藏狀態列。"</string>
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <string name="pref_data_title" msgid="750316606686075162">"頻寬管理"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"正在預先載入搜尋結果"</string>
+    <string name="pref_data_preload_summary" msgid="7488335627364473744">"允許瀏覽器在背景預先載入可信度高的搜尋結果"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"資料連線問題"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"檔案有問題"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"確認"</string>
@@ -391,4 +393,9 @@
     <string name="local_bookmarks" msgid="533816851415228520">"本機"</string>
     <string name="ua_switcher_mobile" msgid="5103260404792449606">"行動版"</string>
     <string name="ua_switcher_desktop" msgid="2535200543238676638">"電腦版"</string>
+    <string name="permission_preload_label" msgid="4856971662337877316">"預先載入結果"</string>
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 8b207a1..8c679d7 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -22,10 +22,11 @@
     <skip />
     <string name="new_tab" msgid="4505722538297295141">"Iwindi elisha"</string>
     <string name="new_incognito_tab" msgid="5821404839654751753">"Iwindi elisha le-incognito"</string>
-    <string name="active_tabs" msgid="3050623868203544623">"I-Windows"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"Amabhukimakhi"</string>
     <string name="tab_most_visited" msgid="1077402532455000703">"Okuvakashelwa njalo"</string>
     <string name="tab_history" msgid="1979267558744613746">"Umlando"</string>
+    <!-- no translation found for tab_snapshots (4435852763803720588) -->
+    <skip />
     <string name="added_to_bookmarks" msgid="1020224130695956728">"Amabhukimakhi afakiwe"</string>
     <string name="removed_from_bookmarks" msgid="6063705902028438800">"Ikhishwe kumabhukimakhi"</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Ngena ngemvume ku-\"<xliff:g id="HOSTNAME">%s1</xliff:g>\" \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
@@ -142,11 +143,10 @@
     <string name="copy_page_url" msgid="7635062169011319208">"Kopisha i-url yekhasi"</string>
     <!-- no translation found for share_page (593756995297268343) -->
     <skip />
-    <!-- no translation found for menu_freeze_tab (189603565552297099) -->
+    <!-- no translation found for menu_save_snapshot (6935080344031126139) -->
     <skip />
-    <!-- outdated translation 3934652434001459581 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Londoloza njengeSigcinamlando seWebhu."</string>
-    <!-- outdated translation 7045250341467345007 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Isigcinamlando sewebhu silondoloziwe."</string>
-    <!-- outdated translation 2880998204746620260 -->     <string name="webarchive_failed" msgid="19950914584285713">"Yehlulekile ukulondoloza isigcinamlando sewebhu."</string>
+    <!-- no translation found for snapshot_failed (6176197364690207251) -->
+    <skip />
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> amabhukimakhi"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Ifolda engenalutho"</string>
     <!-- no translation found for contextmenu_openlink (7237961252214188935) -->
@@ -211,7 +211,7 @@
     <!-- no translation found for pref_homepage_choices:0 (844041670142910837) -->
     <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) -->
     <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) -->
-    <!-- no translation found for pref_homepage_choices:3 (723023698618841163) -->
+    <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) -->
     <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) -->
     <!-- no translation found for pref_content_autofit (8260474534053660809) -->
     <skip />
@@ -260,6 +260,8 @@
     <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Iphrofayli igciniwe"</string>
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Iphrofayli isusiwe"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Susa iphrofayli"</string>
+    <!-- no translation found for autofill_setup_dialog_title (1955613311837926540) -->
+    <skip />
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Isiphequluli ngokuzenzakalelayo singagcwalisa amafomu ewebhu anjengalawa. Ungathanda ukumisa iphrofayli yakho?"</string>
     <!-- no translation found for autofill_setup_dialog_negative_toast (6990737008936188620) -->
     <skip />
@@ -375,6 +377,16 @@
     <skip />
     <!-- no translation found for pref_lab_fullscreen_summary (6853711692160711419) -->
     <skip />
+    <!-- no translation found for pref_lab_inverted (1650585016924791747) -->
+    <skip />
+    <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) -->
+    <skip />
+    <!-- no translation found for pref_data_title (750316606686075162) -->
+    <skip />
+    <!-- no translation found for pref_data_preload_title (4479320472980292873) -->
+    <skip />
+    <!-- no translation found for pref_data_preload_summary (7488335627364473744) -->
+    <skip />
     <!-- no translation found for browserFrameNetworkErrorLabel (126892350904924893) -->
     <skip />
     <!-- no translation found for browserFrameFileErrorLabel (8063691502792670367) -->
@@ -435,15 +447,15 @@
     <string name="download_file_error_dlg_msg" msgid="5156405410324072471">"<xliff:g id="FILENAME">%s</xliff:g> ayikwazanga ukulandwa."\n"Khulula isikhala efonini yakho bese uzama futhi."</string>
     <!-- no translation found for download_failed_generic_dlg_title (6106781095337833391) -->
     <skip />
-    <string name="download_no_sdcard_dlg_title" product="nosdcard" msgid="56777245081568508">"Ukugcina nge-USB akutholakali"</string>
-    <!-- outdated translation 56777245081568508 -->     <string name="download_no_sdcard_dlg_title" product="default" msgid="605904452159416792">"Ukugcina nge-USB akutholakali"</string>
-    <string name="download_no_sdcard_dlg_msg" product="nosdcard" msgid="3144652102051031721">"Ukugcina nge-USB kuyadingeka ukuze ulande i-<xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="download_no_sdcard_dlg_title" product="nosdcard" msgid="56777245081568508">"Isitoreji se-USB asitholakali"</string>
+    <!-- outdated translation 56777245081568508 -->     <string name="download_no_sdcard_dlg_title" product="default" msgid="605904452159416792">"Isitoreji se-USB asitholakali"</string>
+    <string name="download_no_sdcard_dlg_msg" product="nosdcard" msgid="3144652102051031721">"Isitoreji se-USB siyadingeka ukuze ulande i-<xliff:g id="FILENAME">%s</xliff:g>."</string>
     <!-- no translation found for download_no_sdcard_dlg_msg (2616399456116301518) -->
     <skip />
-    <string name="download_sdcard_busy_dlg_title" product="nosdcard" msgid="8081445664689818973">"Ukugcina nge-USB akutholakali"</string>
+    <string name="download_sdcard_busy_dlg_title" product="nosdcard" msgid="8081445664689818973">"Isitoreji se-USB asitholakali"</string>
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Ikhadi le-SD alitholakali"</string>
-    <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Ukugcina nge-USB kumatasa. Ukuvumela ukulanda, khetha \"Vala ukugcina nge-USB\' kwisaziso."</string>
-    <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"Ikhadi le-SD limatasa. Ukuvumela ukulanda, khetha \"Vala ukulondoloza nge-USB\" kwisaziso."</string>
+    <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Isitoreji se-USB simatasa. Ukuvumela ukulanda, khetha \"Vala isitoreji se-USB\' kwisaziso."</string>
+    <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"Ikhadi le-SD limatasa. Ukuvumela ukulanda, khetha \"Vala isitoreji nge-USB\" kwisaziso."</string>
     <!-- no translation found for cannot_download (8150552478556798780) -->
     <skip />
     <string name="download_no_application_title" msgid="1286056729168874295">"Ayikwazi ukuvula ifayela"</string>
@@ -473,7 +485,7 @@
     <!-- no translation found for download_precondition_failed (8327584102874295580) -->
     <skip />
     <string name="search_the_web" msgid="6046130189241962337">"Sesha iwebhu"</string>
-    <string name="webstorage_outofspace_notification_title" msgid="1160474608059771788">"Ukulondoloza isiphequluli kugcwele"</string>
+    <string name="webstorage_outofspace_notification_title" msgid="1160474608059771788">"Isitoreji sesiphequluli sigcwele"</string>
     <string name="webstorage_outofspace_notification_text" msgid="7341075135051829692">"Qhafaza ukukhulula isikhala."</string>
     <string name="webstorage_clear_data_title" msgid="689484577124333977">"Sula idatha elondoloziwe"</string>
     <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Sula idatha elondoloziwe"</string>
@@ -549,4 +561,10 @@
     <skip />
     <!-- no translation found for ua_switcher_desktop (2535200543238676638) -->
     <skip />
+    <!-- no translation found for permission_preload_label (4856971662337877316) -->
+    <skip />
+    <!-- no translation found for empty_snapshots_folder (5788256228290785444) -->
+    <skip />
+    <!-- no translation found for remove_snapshot (1624447424544976849) -->
+    <skip />
 </resources>
diff --git a/res/values/bools.xml b/res/values/bools.xml
index 6217de1..55f8242 100644
--- a/res/values/bools.xml
+++ b/res/values/bools.xml
@@ -13,4 +13,5 @@
 <resources
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <bool name="isTablet">false</bool>
+    <bool name="hide_nav_buttons">true</bool>
 </resources>
diff --git a/res/values/dimensions.xml b/res/values/dimensions.xml
index c4ce151..3b57f19 100644
--- a/res/values/dimensions.xml
+++ b/res/values/dimensions.xml
@@ -30,13 +30,13 @@
     <dimen name="widgetItemMinHeight">48dip</dimen>
     <dimen name="favicon_size">16dip</dimen>
     <dimen name="favicon_padded_size">20dip</dimen>
-    <dimen name="qc_radius_start">30dip</dimen>
-    <dimen name="qc_radius_increment">60dip</dimen>
+    <dimen name="qc_radius_start">45dip</dimen>
+    <dimen name="qc_radius_increment">70dip</dimen>
     <dimen name="qc_slop">10dip</dimen>
     <dimen name="qc_touch_offset">15dip</dimen>
-    <dimen name="qc_tab_title_height">30dip</dimen>
-    <dimen name="qc_thumb_width">160dip</dimen>
-    <dimen name="qc_thumb_height">120dip</dimen>
+    <dimen name="qc_tab_title_height">24dip</dimen>
+    <dimen name="qc_thumb_width">150dip</dimen>
+    <dimen name="qc_thumb_height">100dip</dimen>
     <dimen name="qc_item_size">40dip</dimen>
     <dimen name="bookmark_widget_thumb_size">32dip</dimen>
     <dimen name="bookmark_widget_favicon_size">26dip</dimen>
@@ -65,6 +65,7 @@
     <dimen name="preference_widget_width">56dp</dimen>
     <dimen name="nav_tab_spacing">8dp</dimen>
     <dimen name="menu_width">240dip</dimen>
+    <dimen name="menu_height">32dip</dimen>
     <dimen name="toolbar_height">52dip</dimen>
     <dimen name="tab_capture_size">160dp</dimen>
     <dimen name="nav_tab_width">240dip</dimen>
@@ -72,4 +73,5 @@
     <dimen name="nav_tab_text_normal">18sp</dimen>
     <dimen name="nav_tab_text_small">14sp</dimen>
     <dimen name="suggest_item_padding">8dp</dimen>
+    <dimen name="progress_bar_margin">-8dip</dimen>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 253d811..ee3ce95 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -26,8 +26,6 @@
     <!-- Name of menu item of a new incognito tab.  Also used in the
          title bar when displaying a new tab [CHAR LIMIT=30] -->
     <string name="new_incognito_tab">New incognito window</string>
-    <!-- Name of menu item which brings up a list of the currently active tabs -->
-    <string name="active_tabs">Windows</string>
     <!-- Name of tab containing bookmarks -->
     <string name="tab_bookmarks">Bookmarks</string>
     <!-- Name of tab containing the user's most visited websites, organized by number of visits -->
@@ -324,8 +322,8 @@
         <item>Blank page</item>
         <!-- Setting choice to set the homepage to the default page [CHAR LIMIT=40] -->
         <item>Default page</item>
-        <!-- Setting choice to set the homepage to the "Most Visited" homepage feature [CHAR LIMIT=40] -->
-        <item>Most-visited homepage</item>
+        <!-- Setting choice to set the homepage to the "Most Visited" homepage feature, which is a list of most visited sites [CHAR LIMIT=40] -->
+        <item>Most visited sites</item>
         <!-- Setting choice to set the homepage to a user entered URL [CHAR LIMIT=40] -->
         <item>Other\u2026</item>
     </string-array>
@@ -593,6 +591,8 @@
         <item>5</item>
     </string-array>
     <string name="pref_development_error_console" translatable="false">Show JavaScript Console</string>
+    <!-- Do not translate. Development option to reset the prologin time [CHAR LIMIT=20] -->
+    <string name="pref_development_reset_prelogin" translatable="false">Reset prelogin</string>
     <!-- Settings screen, setting option name -->
     <string name="pref_default_text_encoding">Text encoding</string>
     <!-- Options in the Default encoding dialog box -->
@@ -644,6 +644,10 @@
     <!-- Summary for the fullscreen lab feature [CHAR LIMIT=120] -->
     <string name="pref_lab_fullscreen_summary">
       Use fullscreen mode to hide the status bar.</string>
+    <!-- Title for the inverted screen lab feature. This causes the screen to render with inverted colors (black becomes white and vice versa) [CHAR LIMIT=40] -->
+    <string name="pref_lab_inverted">Inverted Rendering</string>
+    <!-- Summary for the inverted screen lab feature. [CHAR LIMIT=120] -->
+    <string name="pref_lab_inverted_summary">Checking this causes the browser to invert colors. Black will become white and vice versa.</string>
     <!-- Title for bandwidth management preference [CHAR LIMIT=25] -->
     <string name="pref_data_title">Bandwidth Management</string>
     <!-- Title for search preloading [CHAR LIMIT=40] -->
@@ -1002,4 +1006,8 @@
     <string name="ua_switcher_desktop">Desktop</string>
     <!-- Preload permission label [CHAR LIMIT=40] -->
     <string name="permission_preload_label">Preload results</string>
+    <!-- Empty text for the "saved pages" tab that is shown when no saved pages exist. [CHAR LIMIT=None] -->
+    <string name="empty_snapshots_folder">There are no saved pages.</string>
+    <!-- Menu option to delete the currently selected saved page [CHAR LIMIT=50] -->
+    <string name="remove_snapshot">Delete saved page</string>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 061d600..76a698e 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -23,9 +23,8 @@
         <item name="android:colorBackground">#FFFFFFFF</item>
         <item name="android:windowActionBar">true</item>
         <item name="android:windowNoTitle">false</item>
-        <item name="android:windowActionBarOverlay">true</item>
+        <item name="android:windowActionBarOverlay">false</item>
         <item name="android:actionBarStyle">@style/ActionBarStyle</item>
-        <item name="android:actionButtonStyle">@style/ActionButton</item>
     </style>
     <style name="DialogWhenLarge" parent="@android:style/Theme.Holo.DialogWhenLarge" >
         <item name="android:windowActionBar">false</item>
@@ -40,14 +39,10 @@
         <item name="android:backgroundDimEnabled">false</item>
         <item name="android:windowIsTranslucent">true</item>
     </style>
-    <style name="ActionBarStyle">
-        <item name="android:height">56dip</item>
+    <style name="ActionBarStyle" parent="@android:style/Widget.Holo.ActionBar">
         <item name="android:background">@drawable/bg_browsertabs</item>
         <item name="android:displayOptions"></item>
     </style>
-    <style name="ActionButton">
-        <item name="android:background">?android:attr/selectableItemBackground</item>
-    </style>
     <style name="Suggestions" parent="@android:style/Widget.Holo.AutoCompleteTextView">
         <item name="android:popupBackground">#D0000000</item>
         <item name="android:dropDownVerticalOffset">0dip</item>
diff --git a/res/xml-sw600dp/lab_preferences.xml b/res/xml-sw600dp/lab_preferences.xml
index 1dbec88..512c8c1 100644
--- a/res/xml-sw600dp/lab_preferences.xml
+++ b/res/xml-sw600dp/lab_preferences.xml
@@ -16,17 +16,19 @@
 
 <PreferenceScreen
         xmlns:android="http://schemas.android.com/apk/res/android" >
-
     <CheckBoxPreference
         android:key="enable_quick_controls"
         android:defaultValue="false"
         android:title="@string/pref_lab_quick_controls"
         android:summary="@string/pref_lab_quick_controls_summary" />
-
     <CheckBoxPreference
         android:key="use_instant_search"
         android:defaultValue="false"
         android:title="@string/pref_use_instant_search"
         android:summary="@string/pref_use_instant_search_summary" />
-
+    <CheckBoxPreference
+        android:key="inverted"
+        android:defaultValue="false"
+        android:title="@string/pref_lab_inverted"
+        android:summary="@string/pref_lab_inverted_summary" />
 </PreferenceScreen>
diff --git a/res/xml/debug_preferences.xml b/res/xml/debug_preferences.xml
index 5126b0d..1fc4f4c 100644
--- a/res/xml/debug_preferences.xml
+++ b/res/xml/debug_preferences.xml
@@ -76,4 +76,8 @@
         android:title="@string/js_engine_flags"
         android:singleLine="true" />
 
+    <Preference
+        android:key="reset_prelogin"
+        android:title="@string/pref_development_reset_prelogin" />
+
 </PreferenceScreen>
diff --git a/res/xml/lab_preferences.xml b/res/xml/lab_preferences.xml
index 3320cee..a3de6ca 100644
--- a/res/xml/lab_preferences.xml
+++ b/res/xml/lab_preferences.xml
@@ -26,4 +26,9 @@
         android:defaultValue="false"
         android:title="@string/pref_lab_fullscreen"
         android:summary="@string/pref_lab_fullscreen_summary" />
+    <CheckBoxPreference
+        android:key="inverted"
+        android:defaultValue="false"
+        android:title="@string/pref_lab_inverted"
+        android:summary="@string/pref_lab_inverted_summary" />
 </PreferenceScreen>
diff --git a/src/com/android/browser/ActiveTabsPage.java b/src/com/android/browser/ActiveTabsPage.java
deleted file mode 100644
index 0feba9a..0000000
--- a/src/com/android/browser/ActiveTabsPage.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.browser;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.text.TextUtils;
-import android.util.AttributeSet;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.AbsListView;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.ImageView.ScaleType;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-interface OnCloseTab {
-    void onCloseTab(int position);
-}
-
-public class ActiveTabsPage extends LinearLayout implements OnClickListener,
-        OnItemClickListener, OnCloseTab {
-
-    private Context mContext;
-    private UiController mController;
-    private TabControl mTabControl;
-    private View mNewTab, mNewIncognitoTab;
-    private TabAdapter mAdapter;
-    private AbsListView mTabsList;
-
-    public ActiveTabsPage(Context context, UiController controller) {
-        super(context);
-        mContext = context;
-        mController = controller;
-        mTabControl = mController.getTabControl();
-        setOrientation(VERTICAL);
-        setBackgroundResource(R.drawable.bg_browser);
-        LayoutInflater inflate = LayoutInflater.from(mContext);
-        inflate.inflate(R.layout.active_tabs, this, true);
-        mNewTab = findViewById(R.id.new_tab);
-        mNewIncognitoTab = findViewById(R.id.new_incognito_tab);
-        mNewTab.setOnClickListener(this);
-        mNewIncognitoTab.setOnClickListener(this);
-        int visibility = mTabControl.canCreateNewTab() ? View.VISIBLE : View.GONE;
-        mNewTab.setVisibility(visibility);
-        mNewIncognitoTab.setVisibility(visibility);
-        mTabsList = (AbsListView) findViewById(android.R.id.list);
-        mAdapter = new TabAdapter(mContext, mTabControl);
-        mAdapter.setOnCloseListener(this);
-        mTabsList.setAdapter(mAdapter);
-        mTabsList.setOnItemClickListener(this);
-    }
-
-    @Override
-    public void onClick(View v) {
-        if (v == mNewTab) {
-            mController.openTabToHomePage();
-        } else if (v == mNewIncognitoTab) {
-            mController.openIncognitoTab();
-        }
-        mController.removeActiveTabsPage(false);
-    }
-
-    @Override
-    public void onItemClick(
-            AdapterView<?> parent, View view, int position, long id) {
-        final Tab tab = mTabControl.getTab(position);
-        boolean needToAttach = !mController.switchToTab(tab);
-        mController.removeActiveTabsPage(needToAttach);
-    }
-
-    @Override
-    public void onCloseTab(int position) {
-        Tab tab = mTabControl.getTab(position);
-        if (tab != null) {
-            mController.closeTab(tab);
-            if (mTabControl.getTabCount() == 0) {
-                mController.openTabToHomePage();
-                mController.removeActiveTabsPage(false);
-            } else {
-                mAdapter.notifyDataSetChanged();
-            }
-        }
-    }
-
-    /**
-     * Special class to hold the close drawable.  Its sole purpose is to allow
-     * the parent to be pressed without being pressed itself.  This way the line
-     * of a tab can be pressed, but the close button itself is not.
-     */
-    public static class CloseHolder extends ImageView {
-        public CloseHolder(Context context, AttributeSet attrs) {
-            super(context, attrs);
-        }
-
-        @Override
-        public void setPressed(boolean pressed) {
-            // If the parent is pressed, do not set to pressed.
-            if (pressed && ((View) getParent()).isPressed()) {
-                return;
-            }
-            super.setPressed(pressed);
-        }
-    }
-
-    static class TabAdapter extends BaseAdapter implements OnClickListener {
-
-        LayoutInflater mInflater;
-        OnCloseTab mCloseListener;
-        TabControl mTabControl;
-
-        TabAdapter(Context context, TabControl tabs) {
-            mInflater = LayoutInflater.from(context);
-            mTabControl = tabs;
-        }
-
-        void setOnCloseListener(OnCloseTab listener) {
-            mCloseListener = listener;
-        }
-
-        @Override
-        public View getView(int position, View view, ViewGroup parent) {
-            if (view == null) {
-                view = mInflater.inflate(R.layout.tab_view, parent, false);
-            }
-            ImageView favicon = (ImageView) view.findViewById(R.id.favicon);
-            ImageView thumbnail = (ImageView) view.findViewById(R.id.thumb);
-            TextView title = (TextView) view.findViewById(R.id.label);
-            Tab tab = getItem(position);
-
-            String label = tab.getTitle();
-            if (TextUtils.isEmpty(label)) {
-                label = tab.getUrl();
-            }
-            title.setText(label);
-            Bitmap thumbnailBitmap = tab.getScreenshot();
-            if (thumbnailBitmap == null) {
-                thumbnail.setImageResource(R.drawable.browser_thumbnail);
-            } else {
-                thumbnail.setImageBitmap(thumbnailBitmap);
-            }
-            Bitmap faviconBitmap = tab.getFavicon();
-            if (tab.isPrivateBrowsingEnabled()) {
-                favicon.setImageResource(R.drawable.ic_incognito_holo_dark);
-            } else {
-                if (faviconBitmap == null) {
-                    favicon.setImageResource(R.drawable.app_web_browser_sm);
-                } else {
-                    favicon.setImageBitmap(faviconBitmap);
-                }
-            }
-            View close = view.findViewById(R.id.close);
-            close.setTag(position);
-            close.setOnClickListener(this);
-            return view;
-        }
-
-        @Override
-        public void onClick(View v) {
-            int position = (Integer) v.getTag();
-            if (mCloseListener != null) {
-                mCloseListener.onCloseTab(position);
-            }
-        }
-
-        @Override
-        public int getCount() {
-            return mTabControl.getTabCount();
-        }
-
-        @Override
-        public Tab getItem(int position) {
-            return mTabControl.getTab(position);
-        }
-
-        @Override
-        public long getItemId(int position) {
-            return position;
-        }
-    }
-}
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index f330cd5..45b1f8b 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -759,7 +759,7 @@
             try {
                 final ContentResolver cr = getContentResolver();
                 Bookmarks.addBookmark(AddBookmarkPage.this, false, url,
-                        title, thumbnail, true, mCurrentFolder);
+                        title, thumbnail, mCurrentFolder);
                 if (touchIconUrl != null) {
                     new DownloadTouchIcon(mContext, cr, url).execute(mTouchIconUrl);
                 }
@@ -959,6 +959,7 @@
             long root = mAccountAdapter.getItem(position).rootFolderId;
             if (root != mRootFolder) {
                 onRootFolderFound(root);
+                mFolderAdapter.clearRecentFolder();
             }
         }
     }
diff --git a/src/com/android/browser/AutologinBar.java b/src/com/android/browser/AutologinBar.java
new file mode 100644
index 0000000..e57d614
--- /dev/null
+++ b/src/com/android/browser/AutologinBar.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.browser;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.ContextThemeWrapper;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+import com.android.browser.DeviceAccountLogin.AutoLoginCallback;
+
+public class AutologinBar extends LinearLayout implements OnClickListener,
+        AutoLoginCallback {
+
+    protected Spinner mAutoLoginAccount;
+    protected Button mAutoLoginLogin;
+    protected ProgressBar mAutoLoginProgress;
+    protected TextView mAutoLoginError;
+    protected View mAutoLoginCancel;
+    protected DeviceAccountLogin mAutoLoginHandler;
+    protected ArrayAdapter<String> mAccountsAdapter;
+    protected TitleBar mTitleBar;
+
+    public AutologinBar(Context context) {
+        super(context);
+    }
+
+    public AutologinBar(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public AutologinBar(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+        mAutoLoginAccount = (Spinner) findViewById(R.id.autologin_account);
+        mAutoLoginLogin = (Button) findViewById(R.id.autologin_login);
+        mAutoLoginLogin.setOnClickListener(this);
+        mAutoLoginProgress = (ProgressBar) findViewById(R.id.autologin_progress);
+        mAutoLoginError = (TextView) findViewById(R.id.autologin_error);
+        mAutoLoginCancel = findViewById(R.id.autologin_close);
+        mAutoLoginCancel.setOnClickListener(this);
+    }
+
+    public void setTitleBar(TitleBar titleBar) {
+        mTitleBar = titleBar;
+    }
+
+    @Override
+    public void onClick(View v) {
+        if (mAutoLoginCancel == v) {
+            if (mAutoLoginHandler != null) {
+                mAutoLoginHandler.cancel();
+                mAutoLoginHandler = null;
+            }
+            hideAutoLogin(true);
+        } else if (mAutoLoginLogin == v) {
+            if (mAutoLoginHandler != null) {
+                mAutoLoginAccount.setEnabled(false);
+                mAutoLoginLogin.setEnabled(false);
+                mAutoLoginProgress.setVisibility(View.VISIBLE);
+                mAutoLoginError.setVisibility(View.GONE);
+                mAutoLoginHandler.login(
+                        mAutoLoginAccount.getSelectedItemPosition(), this);
+            }
+        }
+    }
+
+    public void updateAutoLogin(Tab tab, boolean animate) {
+        DeviceAccountLogin login = tab.getDeviceAccountLogin();
+        if (login != null) {
+            mAutoLoginHandler = login;
+            ContextThemeWrapper wrapper = new ContextThemeWrapper(mContext,
+                    android.R.style.Theme_Holo_Light);
+            mAccountsAdapter = new ArrayAdapter<String>(wrapper,
+                    android.R.layout.simple_spinner_item, login.getAccountNames());
+            mAccountsAdapter.setDropDownViewResource(
+                    android.R.layout.simple_spinner_dropdown_item);
+            mAutoLoginAccount.setAdapter(mAccountsAdapter);
+            mAutoLoginAccount.setSelection(0);
+            mAutoLoginAccount.setEnabled(true);
+            mAutoLoginLogin.setEnabled(true);
+            mAutoLoginProgress.setVisibility(View.INVISIBLE);
+            mAutoLoginError.setVisibility(View.GONE);
+            switch (login.getState()) {
+                case DeviceAccountLogin.PROCESSING:
+                    mAutoLoginAccount.setEnabled(false);
+                    mAutoLoginLogin.setEnabled(false);
+                    mAutoLoginProgress.setVisibility(View.VISIBLE);
+                    break;
+                case DeviceAccountLogin.FAILED:
+                    mAutoLoginProgress.setVisibility(View.INVISIBLE);
+                    mAutoLoginError.setVisibility(View.VISIBLE);
+                    break;
+                case DeviceAccountLogin.INITIAL:
+                    break;
+                default:
+                    throw new IllegalStateException();
+            }
+            showAutoLogin(animate);
+        } else {
+            hideAutoLogin(animate);
+        }
+    }
+
+    void showAutoLogin(boolean animate) {
+        mTitleBar.showAutoLogin(animate);
+    }
+
+    void hideAutoLogin(boolean animate) {
+        mTitleBar.hideAutoLogin(animate);
+    }
+
+    @Override
+    public void loginFailed() {
+        mAutoLoginAccount.setEnabled(true);
+        mAutoLoginLogin.setEnabled(true);
+        mAutoLoginProgress.setVisibility(View.INVISIBLE);
+        mAutoLoginError.setVisibility(View.VISIBLE);
+    }
+
+}
diff --git a/src/com/android/browser/BackgroundHandler.java b/src/com/android/browser/BackgroundHandler.java
new file mode 100644
index 0000000..a0d9243
--- /dev/null
+++ b/src/com/android/browser/BackgroundHandler.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.browser;
+
+import android.os.HandlerThread;
+import android.os.Looper;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+public class BackgroundHandler {
+
+    static HandlerThread sLooperThread;
+    static ExecutorService mThreadPool;
+
+    static {
+        sLooperThread = new HandlerThread("BackgroundHandler", HandlerThread.MIN_PRIORITY);
+        sLooperThread.start();
+        mThreadPool = Executors.newCachedThreadPool();
+    }
+
+    public static void execute(Runnable runnable) {
+        mThreadPool.execute(runnable);
+    }
+
+    public static Looper getLooper() {
+        return sLooperThread.getLooper();
+    }
+
+    private BackgroundHandler() {}
+}
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 8e24353..b270dea 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -17,7 +17,7 @@
 package com.android.browser;
 
 import android.app.Activity;
-import android.content.pm.PackageManager;
+import android.content.Intent;
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
@@ -35,6 +35,7 @@
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.Menu;
+import android.view.MenuItem;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.View.OnClickListener;
@@ -75,7 +76,7 @@
         Gravity.CENTER);
 
     private static final int MSG_HIDE_TITLEBAR = 1;
-    private static final int HIDE_TITLEBAR_DELAY = 1500; // in ms
+    public static final int HIDE_TITLEBAR_DELAY = 1500; // in ms
 
     Activity mActivity;
     UiController mUiController;
@@ -94,8 +95,6 @@
     private WebChromeClient.CustomViewCallback mCustomViewCallback;
     private int mOriginalOrientation;
 
-    private CombinedBookmarkHistoryView mComboView;
-
     private LinearLayout mErrorConsoleContainer = null;
 
     private Toast mStopToast;
@@ -110,6 +109,8 @@
 
     private boolean mActivityPaused;
     protected boolean mUseQuickControls;
+    protected TitleBar mTitleBar;
+    private NavigationBarBase mNavigationBar;
 
     public BaseUi(Activity browser, UiController controller) {
         mActivity = browser;
@@ -140,6 +141,10 @@
                 config.getScaledOverscrollDistance());
         mTitlebarScrollTriggerSlop = Math.max(mTitlebarScrollTriggerSlop,
                 config.getScaledTouchSlop());
+        mTitleBar = new TitleBar(mActivity, mUiController, this,
+                mContentView);
+        mTitleBar.setProgress(100);
+        mNavigationBar = mTitleBar.getNavigationBar();
     }
 
     private void cancelStopToast() {
@@ -170,16 +175,14 @@
     public void onConfigurationChanged(Configuration config) {
     }
 
+    public Activity getActivity() {
+        return mActivity;
+    }
+
     // key handling
 
     @Override
     public boolean onBackKey() {
-        if (mComboView != null) {
-            if (!mComboView.onBackPressed()) {
-                mUiController.removeComboView();
-            }
-            return true;
-        }
         if (mCustomView != null) {
             mUiController.hideCustomView();
             return true;
@@ -199,13 +202,14 @@
         setFavicon(tab);
         updateLockIconToLatest(tab);
         updateNavigationState(tab);
+        mTitleBar.onTabDataChanged(tab);
     }
 
     @Override
     public void bookmarkedStatusHasChanged(Tab tab) {
         if (tab.inForeground()) {
             boolean isBookmark = tab.isBookmarkedSite();
-            getTitleBar().setCurrentUrlIsBookmark(isBookmark);
+            mNavigationBar.setCurrentUrlIsBookmark(isBookmark);
         }
     }
 
@@ -248,10 +252,11 @@
         onTabDataChanged(tab);
         onProgressChanged(tab);
         boolean incognito = mActiveTab.getWebView().isPrivateBrowsingEnabled();
-        getTitleBar().setIncognitoMode(incognito);
+        mNavigationBar.setIncognitoMode(incognito);
         updateAutoLogin(tab, false);
         if (web != null && web.getVisibleTitleHeight()
-                != getTitleBar().getEmbeddedHeight()) {
+                != mTitleBar.getEmbeddedHeight()
+                && !mUseQuickControls) {
             showTitleBarForDuration();
         }
     }
@@ -421,7 +426,9 @@
             mUiController.endActionMode();
         }
         showTitleBar();
-        getTitleBar().startEditingUrl(clearInput);
+        if (!getActiveTab().isSnapshot()) {
+            mNavigationBar.startEditingUrl(clearInput);
+        }
     }
 
     boolean canShowTitleBar() {
@@ -432,27 +439,30 @@
                 && !mUiController.isInCustomActionMode();
     }
 
-    void showTitleBar() {
+    protected void showTitleBar() {
+        mHandler.removeMessages(MSG_HIDE_TITLEBAR);
         if (canShowTitleBar()) {
-            getTitleBar().show();
+            mTitleBar.show();
         }
     }
 
     protected void hideTitleBar() {
-        if (getTitleBar().isShowing()) {
-            getTitleBar().hide();
+        if (mTitleBar.isShowing()) {
+            mTitleBar.hide();
         }
     }
 
     protected boolean isTitleBarShowing() {
-        return getTitleBar().isShowing();
+        return mTitleBar.isShowing();
     }
 
     public boolean isEditingUrl() {
-        return getTitleBar().isEditingUrl();
+        return mTitleBar.isEditingUrl();
     }
 
-    protected abstract TitleBarBase getTitleBar();
+    public TitleBar getTitleBar() {
+        return mTitleBar;
+    }
 
     protected void setTitleGravity(int gravity) {
         WebView web = getWebView();
@@ -463,63 +473,34 @@
 
     @Override
     public void showVoiceTitleBar(String title, List<String> results) {
-        getTitleBar().setInVoiceMode(true, results);
-        getTitleBar().setDisplayTitle(title);
+        mNavigationBar.setInVoiceMode(true, results);
+        mNavigationBar.setDisplayTitle(title);
     }
 
     @Override
     public void revertVoiceTitleBar(Tab tab) {
-        getTitleBar().setInVoiceMode(false, null);
+        mNavigationBar.setInVoiceMode(false, null);
         String url = tab.getUrl();
-        getTitleBar().setDisplayTitle(url);
+        mNavigationBar.setDisplayTitle(url);
     }
 
     @Override
     public void registerDropdownChangeListener(DropdownChangeListener d) {
-        getTitleBar().registerDropdownChangeListener(d);
+        mNavigationBar.registerDropdownChangeListener(d);
     }
 
     @Override
     public void showComboView(ComboViews startingView, Bundle extras) {
-        if (mComboView != null) {
-            return;
+        Intent intent = new Intent(mActivity, ComboViewActivity.class);
+        intent.putExtra(ComboViewActivity.EXTRA_INITIAL_VIEW, startingView.name());
+        intent.putExtra(ComboViewActivity.EXTRA_COMBO_ARGS, extras);
+        Tab t = getActiveTab();
+        if (t != null) {
+            intent.putExtra(ComboViewActivity.EXTRA_CURRENT_URL, t.getUrl());
         }
-        mComboView = new CombinedBookmarkHistoryView(mActivity,
-                mUiController,
-                startingView,
-                extras);
-        FrameLayout wrapper =
-            (FrameLayout) mContentView.findViewById(R.id.webview_wrapper);
-        wrapper.setVisibility(View.GONE);
-        getTitleBar().stopEditingUrl();
-        dismissIME();
-        hideTitleBar();
-        if (mActiveTab != null) {
-            mActiveTab.putInBackground();
-        }
-        mContentView.addView(mComboView, COVER_SCREEN_PARAMS);
-    }
-
-    public boolean isComboViewShowing() {
-        return (mComboView != null);
-    }
-
-    /**
-     * dismiss the ComboPage
-     */
-    @Override
-    public void hideComboView() {
-        if (mComboView != null) {
-            mContentView.removeView(mComboView);
-            FrameLayout wrapper =
-                (FrameLayout) mContentView.findViewById(R.id.webview_wrapper);
-            wrapper.setVisibility(View.VISIBLE);
-            mComboView = null;
-        }
-        if (mActiveTab != null) {
-            mActiveTab.putInForeground();
-        }
-        mActivity.invalidateOptionsMenu();
+        intent.putExtra(ComboViewActivity.EXTRA_BOOKMARK_PAGE,
+                mUiController.createBookmarkCurrentPageIntent(false));
+        mActivity.startActivityForResult(intent, Controller.COMBO_VIEW);
     }
 
     @Override
@@ -578,8 +559,7 @@
 
     @Override
     public boolean showsWeb() {
-        return mCustomView == null
-            && mComboView == null;
+        return mCustomView == null;
     }
 
     @Override
@@ -598,7 +578,7 @@
     }
 
     protected void updateAutoLogin(Tab tab, boolean animate) {
-        getTitleBar().updateAutoLogin(tab, animate);
+        mTitleBar.updateAutoLogin(tab, animate);
     }
 
     /**
@@ -620,7 +600,7 @@
         } else if (lockIconType == LockIcon.LOCK_ICON_MIXED) {
             d = mMixLockIcon;
         }
-        getTitleBar().setLock(d);
+        mNavigationBar.setLock(d);
     }
 
     protected void setUrlTitle(Tab tab) {
@@ -631,7 +611,7 @@
         }
         if (tab.isInVoiceSearchMode()) return;
         if (tab.inForeground()) {
-            getTitleBar().setDisplayTitle(url);
+            mNavigationBar.setDisplayTitle(url);
         }
     }
 
@@ -639,7 +619,7 @@
     protected void setFavicon(Tab tab) {
         if (tab.inForeground()) {
             Bitmap icon = tab.getFavicon();
-            getTitleBar().setFavicon(icon);
+            mNavigationBar.setFavicon(icon);
         }
     }
 
@@ -674,6 +654,11 @@
     }
 
     @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        return false;
+    }
+
+    @Override
     public void onOptionsMenuClosed(boolean inLoad) {
     }
 
@@ -792,7 +777,7 @@
         }
     }
 
-    protected Drawable getFaviconDrawable(Bitmap icon) {
+    public Drawable getFaviconDrawable(Bitmap icon) {
         Drawable[] array = new Drawable[3];
         array[0] = new PaintDrawable(Color.BLACK);
         PaintDrawable p = new PaintDrawable(Color.WHITE);
@@ -818,13 +803,12 @@
      * as if the user is editing the URL bar or if the page is loading
      */
     public void suggestHideTitleBar() {
-        if (!isLoading() && !isEditingUrl()) {
+        if (!isLoading() && !isEditingUrl() && !mTitleBar.wantsToBeVisible()) {
             hideTitleBar();
         }
     }
 
-    private void showTitleBarForDuration() {
-        mHandler.removeMessages(MSG_HIDE_TITLEBAR);
+    protected void showTitleBarForDuration() {
         showTitleBar();
         Message msg = Message.obtain(mHandler, MSG_HIDE_TITLEBAR);
         mHandler.sendMessageDelayed(msg, HIDE_TITLEBAR_DELAY);
@@ -842,7 +826,6 @@
                     && !isTitleBarShowing()
                     && web.getVisibleTitleHeight() == 0
                     && event.getY() > (mInitialY + mTitlebarScrollTriggerSlop)) {
-                mHandler.removeMessages(MSG_HIDE_TITLEBAR);
                 showTitleBar();
             } else if (event.getY() < mInitialY) {
                 mInitialY = event.getY();
diff --git a/src/com/android/browser/BookmarkUtils.java b/src/com/android/browser/BookmarkUtils.java
index 23765f4..2e96613 100644
--- a/src/com/android/browser/BookmarkUtils.java
+++ b/src/com/android/browser/BookmarkUtils.java
@@ -22,7 +22,6 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.content.SharedPreferences;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
@@ -38,7 +37,6 @@
 import android.graphics.drawable.PaintDrawable;
 import android.net.Uri;
 import android.os.Message;
-import android.preference.PreferenceManager;
 import android.provider.Browser;
 import android.provider.BrowserContract;
 
diff --git a/src/com/android/browser/Bookmarks.java b/src/com/android/browser/Bookmarks.java
index bd3b872..190ff9d 100644
--- a/src/com/android/browser/Bookmarks.java
+++ b/src/com/android/browser/Bookmarks.java
@@ -67,7 +67,7 @@
      *  @param parent ID of the parent folder.
      */
     /* package */ static void addBookmark(Context context, boolean showToast, String url,
-            String name, Bitmap thumbnail, boolean retainIcon, long parent) {
+            String name, Bitmap thumbnail, long parent) {
         // Want to append to the beginning of the list
         ContentValues values = new ContentValues();
         try {
@@ -82,9 +82,6 @@
         } catch (IllegalStateException e) {
             Log.e(LOGTAG, "addBookmark", e);
         }
-        if (retainIcon) {
-            WebIconDatabase.getInstance().retainIconForPageUrl(url);
-        }
         if (showToast) {
             Toast.makeText(context, R.string.added_to_bookmarks,
                     Toast.LENGTH_LONG).show();
diff --git a/src/com/android/browser/Browser.java b/src/com/android/browser/Browser.java
index c4412e2..76aaa0b 100644
--- a/src/com/android/browser/Browser.java
+++ b/src/com/android/browser/Browser.java
@@ -17,13 +17,9 @@
 package com.android.browser;
 
 import android.app.Application;
-import android.content.Intent;
-import android.os.AsyncTask;
 import android.util.Log;
 import android.webkit.CookieSyncManager;
 
-import dalvik.system.VMRuntime;
-
 public class Browser extends Application { 
 
     private final static String LOGTAG = "browser";
@@ -37,15 +33,6 @@
     // Set to true to enable extra debug logging.
     final static boolean LOGD_ENABLED = true;
 
-    /**
-     * Specifies a heap utilization ratio that works better
-     * for the browser than the default ratio does.
-     */
-    private final static float TARGET_HEAP_UTILIZATION = 0.75f;
-
-    public Browser() {
-    }
-
     @Override
     public void onCreate() {
         super.onCreate();
@@ -53,20 +40,11 @@
         if (LOGV_ENABLED)
             Log.v(LOGTAG, "Browser.onCreate: this=" + this);
 
-        // Fix AsyncTask to use multiple threads
-        AsyncTask.setDefaultExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
-        // Fix heap utilization for better heap size characteristics.
-        VMRuntime.getRuntime().setTargetHeapUtilization(
-                TARGET_HEAP_UTILIZATION);
         // create CookieSyncManager with current Context
         CookieSyncManager.createInstance(this);
         BrowserSettings.initialize(getApplicationContext());
         Preloader.initialize(getApplicationContext());
     }
 
-    static Intent createBrowserViewIntent() {
-        Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
-        return intent;
-    }
 }
 
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index 1e1698b..0df2e94 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -16,15 +16,10 @@
 
 package com.android.browser;
 
-import com.google.common.annotations.VisibleForTesting;
-
 import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Configuration;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.PixelFormat;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.ActionMode;
@@ -38,6 +33,8 @@
 import android.view.WindowManager;
 import android.view.accessibility.AccessibilityManager;
 
+import com.google.common.annotations.VisibleForTesting;
+
 public class BrowserActivity extends Activity {
 
     public static final String ACTION_SHOW_BOOKMARKS = "show_bookmarks";
@@ -60,6 +57,13 @@
         }
         super.onCreate(icicle);
 
+        // If this was a web search request, pass it on to the default web
+        // search provider and finish this activity.
+        if (IntentHandler.handleWebSearchIntent(this, null, getIntent())) {
+            finish();
+            return;
+        }
+
         BrowserSettings settings = BrowserSettings.getInstance();
 
         // render the browser in OpenGL
@@ -72,19 +76,13 @@
             this.getWindow().setFlags(0, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
         }
 
-        // If this was a web search request, pass it on to the default web
-        // search provider and finish this activity.
-        if (IntentHandler.handleWebSearchIntent(this, null, getIntent())) {
-            finish();
-            return;
-        }
-
-        if (((AccessibilityManager) getSystemService(ACCESSIBILITY_SERVICE))
-                .isEnabled()) {
+        AccessibilityManager accessibilityManager = (AccessibilityManager)
+                getSystemService(ACCESSIBILITY_SERVICE);
+        if (accessibilityManager != null && accessibilityManager.isEnabled()) {
             setDefaultKeyMode(DEFAULT_KEYS_DISABLE);
         }
 
-        mController = new Controller(this);
+        mController = new Controller(this, icicle == null);
         boolean xlarge = isTablet(this);
         if (xlarge) {
             mUi = new XLargeUi(this, mController);
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index b6a50da..241eb1d 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -26,8 +26,6 @@
 import android.content.CursorLoader;
 import android.content.Intent;
 import android.content.Loader;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.database.Cursor;
@@ -36,7 +34,6 @@
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
-import android.preference.PreferenceManager;
 import android.provider.BrowserContract;
 import android.provider.BrowserContract.Accounts;
 import android.provider.BrowserContract.ChromeSyncColumns;
@@ -53,7 +50,6 @@
 import android.widget.ExpandableListView.OnChildClickListener;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
-import android.widget.PopupMenu.OnMenuItemClickListener;
 import android.widget.Toast;
 
 import com.android.browser.BookmarkDragHandler.BookmarkDragController;
@@ -67,7 +63,7 @@
     // Return true if handled
     boolean onBookmarkSelected(Cursor c, boolean isFolder);
     // Return true if handled
-    boolean onOpenInNewWindow(Cursor c);
+    boolean onOpenInNewWindow(String... urls);
 }
 
 /**
@@ -75,7 +71,7 @@
  */
 public class BrowserBookmarksPage extends Fragment implements View.OnCreateContextMenuListener,
         LoaderManager.LoaderCallbacks<Cursor>, BreadCrumbView.Controller,
-        OnMenuItemClickListener, OnChildClickListener {
+        OnChildClickListener {
 
     public static class ExtraDragState {
         public int childPosition;
@@ -94,7 +90,6 @@
 
     public static final int VIEW_THUMBNAILS = 1;
     public static final int VIEW_LIST = 2;
-    static final String PREF_SELECTED_VIEW = "bookmarks_view";
 
     BookmarksPageCallbacks mCallbacks;
     View mRoot;
@@ -102,7 +97,6 @@
     boolean mDisableNewWindow;
     boolean mEnableContextMenu = true;
     View mEmptyView;
-    int mCurrentView;
     View mHeader;
     HashMap<Integer, BrowserBookmarksAdapter> mBookmarkAdapters = new HashMap<Integer, BrowserBookmarksAdapter>();
     BookmarkDragHandler mDragHandler;
@@ -142,7 +136,7 @@
                 args.putString(ACCOUNT_NAME, accountName);
                 args.putString(ACCOUNT_TYPE, accountType);
                 BrowserBookmarksAdapter adapter = new BrowserBookmarksAdapter(
-                        getActivity(), mCurrentView);
+                        getActivity(), VIEW_THUMBNAILS);
                 mBookmarkAdapters.put(id, adapter);
                 mGrid.addAccount(accountName, adapter);
                 lm.restartLoader(id, args, this);
@@ -252,11 +246,6 @@
     };
 
     @Override
-    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
-        inflater.inflate(R.menu.bookmark, menu);
-    }
-
-    @Override
     public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
         BookmarkContextMenuInfo info = (BookmarkContextMenuInfo) menuInfo;
         BrowserBookmarksAdapter adapter = getChildAdapter(info.groupPosition);
@@ -319,13 +308,8 @@
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        SharedPreferences prefs = PreferenceManager
-            .getDefaultSharedPreferences(getActivity());
-        mCurrentView = prefs.getInt(PREF_SELECTED_VIEW, getDefaultView());
-
         Bundle args = getArguments();
         mDisableNewWindow = args == null ? false : args.getBoolean(EXTRA_DISABLE_WINDOW, false);
-
         setHasOptionsMenu(true);
     }
 
@@ -350,13 +334,6 @@
         return mRoot;
     }
 
-     private int getDefaultView() {
-        if (BrowserActivity.isTablet(getActivity())) {
-            return VIEW_THUMBNAILS;
-        }
-        return VIEW_LIST;
-    }
-
     @Override
     public void onDestroyView() {
         super.onDestroyView();
@@ -425,7 +402,7 @@
                 long id = c.getLong(BookmarksLoader.COLUMN_INDEX_ID);
                 new OpenAllInTabsTask(id).execute();
             } else {
-                mCallbacks.onOpenInNewWindow(c);
+                mCallbacks.onOpenInNewWindow(BrowserBookmarksPage.getUrl(c));
             }
         }
     }
@@ -447,10 +424,13 @@
 
         @Override
         protected void onPostExecute(Cursor result) {
-            if (mCallbacks != null) {
+            if (mCallbacks != null && result.getCount() > 0) {
+                String[] urls = new String[result.getCount()];
+                int i = 0;
                 while (result.moveToNext()) {
-                    mCallbacks.onOpenInNewWindow(result);
+                    urls[i++] = BrowserBookmarksPage.getUrl(result);
                 }
+                mCallbacks.onOpenInNewWindow(urls);
             }
         }
 
@@ -505,19 +485,6 @@
     }
 
     @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-        case R.id.thumbnail_view:
-            selectView(VIEW_THUMBNAILS);
-            return true;
-        case R.id.list_view:
-            selectView(VIEW_LIST);
-            return true;
-        }
-        return super.onOptionsItemSelected(item);
-    }
-
-    @Override
     public void onConfigurationChanged(Configuration newConfig) {
         super.onConfigurationChanged(newConfig);
         Resources res = getActivity().getResources();
@@ -527,28 +494,6 @@
         getActivity().invalidateOptionsMenu();
     }
 
-    @Override
-    public void onPrepareOptionsMenu(Menu menu) {
-        super.onPrepareOptionsMenu(menu);
-        menu.findItem(R.id.list_view).setVisible(mCurrentView != VIEW_LIST);
-        menu.findItem(R.id.thumbnail_view).setVisible(mCurrentView != VIEW_THUMBNAILS);
-    }
-
-    void selectView(int view) {
-        if (view == mCurrentView) {
-            return;
-        }
-        mCurrentView = view;
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
-        Editor edit = prefs.edit();
-        edit.putInt(PREF_SELECTED_VIEW, mCurrentView);
-        edit.apply();
-        if (mEmptyView.getVisibility() == View.VISIBLE) {
-            return;
-        }
-        mGrid.selectView(mCurrentView);
-    }
-
     /**
      * BreadCrumb controller callback
      */
@@ -575,19 +520,6 @@
         loader.forceLoad();
     }
 
-    @Override
-    public boolean onMenuItemClick(MenuItem item) {
-        switch (item.getItemId()) {
-        case R.id.list_view:
-            selectView(BrowserBookmarksPage.VIEW_LIST);
-            return true;
-        case R.id.thumbnail_view:
-            selectView(BrowserBookmarksPage.VIEW_THUMBNAILS);
-            return true;
-        }
-        return false;
-    }
-
     public boolean onBackPressed() {
         return false;
     }
diff --git a/src/com/android/browser/BrowserHistoryPage.java b/src/com/android/browser/BrowserHistoryPage.java
index bcc33e2..942a8fd 100644
--- a/src/com/android/browser/BrowserHistoryPage.java
+++ b/src/com/android/browser/BrowserHistoryPage.java
@@ -29,18 +29,14 @@
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.Loader;
-import android.content.SharedPreferences;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.database.Cursor;
 import android.database.DataSetObserver;
-import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Bundle;
-import android.preference.PreferenceManager;
 import android.provider.Browser;
 import android.provider.BrowserContract;
 import android.provider.BrowserContract.Combined;
@@ -53,7 +49,6 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewStub;
-import android.webkit.WebIconDatabase.IconListener;
 import android.widget.AbsListView;
 import android.widget.AdapterView;
 import android.widget.AdapterView.AdapterContextMenuInfo;
@@ -66,6 +61,8 @@
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.android.browser.CombinedBookmarkHistoryView.CombinedBookmarksCallbacks;
+
 /**
  * Activity for displaying the browser's history, divided into
  * days of viewing.
@@ -76,7 +73,7 @@
     static final int LOADER_HISTORY = 1;
     static final int LOADER_MOST_VISITED = 2;
 
-    BookmarksHistoryCallbacks mCallbacks;
+    CombinedBookmarksCallbacks mCallback;
     HistoryAdapter mAdapter;
     HistoryChildWrapper mChildWrapper;
     boolean mDisableNewWindow;
@@ -87,16 +84,6 @@
     private FragmentBreadCrumbs mFragmentBreadCrumbs;
     private ExpandableListView mHistoryList;
 
-    // Implementation of WebIconDatabase.IconListener
-    class IconReceiver implements IconListener {
-        @Override
-        public void onReceivedIcon(String url, Bitmap icon) {
-            mAdapter.notifyDataSetChanged();
-        }
-    }
-
-    // Instance of IconReceiver
-    final IconReceiver mIconReceiver = new IconReceiver();
     private View mRoot;
 
     static interface HistoryQuery {
@@ -125,17 +112,15 @@
         cm.setText(text);
     }
 
-    static BrowserHistoryPage newInstance(BookmarksHistoryCallbacks cb, Bundle args) {
+    static BrowserHistoryPage newInstance(CombinedBookmarksCallbacks cb, Bundle args) {
         BrowserHistoryPage bhp = new BrowserHistoryPage();
-        bhp.mCallbacks = cb;
+        bhp.mCallback = cb;
         bhp.setArguments(args);
         return bhp;
     }
 
     @Override
     public Loader<Cursor> onCreateLoader(int id, Bundle args) {
-        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(
-                getActivity());
         Uri.Builder combinedBuilder = Combined.CONTENT_URI.buildUpon();
 
         switch (id) {
@@ -241,8 +226,6 @@
         getLoaderManager().restartLoader(LOADER_HISTORY, null, this);
         getLoaderManager().restartLoader(LOADER_MOST_VISITED, null, this);
 
-        // Register to receive icons in case they haven't all been loaded.
-        CombinedBookmarkHistoryView.getIconListenerSet().addListener(mIconReceiver);
         return mRoot;
     }
 
@@ -289,77 +272,69 @@
         @Override
         public void onItemClick(
                 AdapterView<?> parent, View view, int position, long id) {
-            mCallbacks.onUrlSelected(((HistoryItem) view).getUrl(), false);
+            mCallback.openUrl(((HistoryItem) view).getUrl());
         }
     };
 
     @Override
     public boolean onChildClick(ExpandableListView parent, View view,
             int groupPosition, int childPosition, long id) {
-        mCallbacks.onUrlSelected(((HistoryItem) view).getUrl(), false);
+        mCallback.openUrl(((HistoryItem) view).getUrl());
         return true;
     }
 
     @Override
     public void onDestroy() {
         super.onDestroy();
-        CombinedBookmarkHistoryView.getIconListenerSet().removeListener(mIconReceiver);
         getLoaderManager().destroyLoader(LOADER_HISTORY);
         getLoaderManager().destroyLoader(LOADER_MOST_VISITED);
     }
 
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        super.onCreateOptionsMenu(menu, inflater);
         inflater.inflate(R.menu.history, menu);
     }
 
+    void promptToClearHistory() {
+        final ContentResolver resolver = getActivity().getContentResolver();
+        final ClearHistoryTask clear = new ClearHistoryTask(resolver);
+        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
+                .setTitle(R.string.clear)
+                .setMessage(R.string.pref_privacy_clear_history_dlg)
+                .setIcon(android.R.drawable.ic_dialog_alert)
+                .setNegativeButton(R.string.cancel, null)
+                .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+                     @Override
+                     public void onClick(DialogInterface dialog, int which) {
+                         if (which == DialogInterface.BUTTON_POSITIVE) {
+                             clear.start();
+                         }
+                     }
+                });
+        final Dialog dialog = builder.create();
+        dialog.show();
+    }
+
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case R.id.clear_history_menu_id:
-                final ContentResolver resolver = getActivity().getContentResolver();
-                final ClearHistoryTask clear = new ClearHistoryTask(resolver, mCallbacks);
-                AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
-                        .setTitle(R.string.clear)
-                        .setMessage(R.string.pref_privacy_clear_history_dlg)
-                        .setIcon(android.R.drawable.ic_dialog_alert)
-                        .setNegativeButton(R.string.cancel, null)
-                        .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
-                             @Override
-                             public void onClick(DialogInterface dialog, int which) {
-                                 if (which == DialogInterface.BUTTON_POSITIVE) {
-                                     clear.execute();
-                                 }
-                             }
-                        });
-                final Dialog dialog = builder.create();
-                dialog.show();
-                return true;
-
-            default:
-                break;
+        if (item.getItemId() == R.id.clear_history_menu_id) {
+            promptToClearHistory();
+            return true;
         }
         return super.onOptionsItemSelected(item);
     }
 
-    static class ClearHistoryTask extends AsyncTask<Void, Void, Void> {
+    static class ClearHistoryTask extends Thread {
         ContentResolver mResolver;
-        BookmarksHistoryCallbacks mCallbacks;
 
-        public ClearHistoryTask(ContentResolver resolver,
-                BookmarksHistoryCallbacks callbacks) {
+        public ClearHistoryTask(ContentResolver resolver) {
             mResolver = resolver;
-            mCallbacks = callbacks;
-        }
-        @Override
-        protected Void doInBackground(Void... params) {
-            Browser.clearHistory(mResolver);
-            return null;
         }
 
         @Override
-        protected void onPostExecute(Void result) {
-            mCallbacks.onRemoveParentChildRelationships();
+        public void run() {
+            Browser.clearHistory(mResolver);
         }
     }
 
@@ -427,10 +402,10 @@
         Activity activity = getActivity();
         switch (item.getItemId()) {
             case R.id.open_context_menu_id:
-                mCallbacks.onUrlSelected(url, false);
+                mCallback.openUrl(url);
                 return true;
             case R.id.new_window_context_menu_id:
-                mCallbacks.onUrlSelected(url, true);
+                mCallback.openInNewTab(url);
                 return true;
             case R.id.save_to_bookmarks_menu_id:
                 if (historyItem.isBookmark()) {
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 22fc3c3..8461d30 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -102,10 +102,17 @@
     private WebStorageSizeManager mWebStorageSizeManager;
     private AutofillHandler mAutofillHandler;
     private WeakHashMap<WebSettings, String> mCustomUserAgents;
+    private static boolean sInitialized = false;
+
+    // Cached values
+    private int mPageCacheCapacity = 1;
+    private String mAppCachePath;
 
     // Cached settings
     private SearchEngine mSearchEngine;
 
+    private static String sFactoryResetUrl;
+
     public static void initialize(final Context context) {
         sInstance = new BrowserSettings(context);
     }
@@ -117,43 +124,12 @@
     private BrowserSettings(Context context) {
         mContext = context;
         mPrefs = PreferenceManager.getDefaultSharedPreferences(mContext);
-        if (Build.VERSION.CODENAME.equals("REL")) {
-            // This is a release build, always startup with debug disabled
-            setDebugEnabled(false);
-        }
-        if (mPrefs.contains(PREF_TEXT_SIZE)) {
-            /*
-             * Update from TextSize enum to zoom percent
-             * SMALLEST is 50%
-             * SMALLER is 75%
-             * NORMAL is 100%
-             * LARGER is 150%
-             * LARGEST is 200%
-             */
-            switch (getTextSize()) {
-            case SMALLEST:
-                setTextZoom(50);
-                break;
-            case SMALLER:
-                setTextZoom(75);
-                break;
-            case LARGER:
-                setTextZoom(150);
-                break;
-            case LARGEST:
-                setTextZoom(200);
-                break;
-            }
-            mPrefs.edit().remove(PREF_TEXT_SIZE).apply();
-        }
         mAutofillHandler = new AutofillHandler(mContext);
         mManagedSettings = new LinkedList<WeakReference<WebSettings>>();
         mCustomUserAgents = new WeakHashMap<WebSettings, String>();
-        mWebStorageSizeManager = new WebStorageSizeManager(mContext,
-                new WebStorageSizeManager.StatFsDiskInfo(getAppCachePath()),
-                new WebStorageSizeManager.WebKitAppCacheInfo(getAppCachePath()));
         mPrefs.registerOnSharedPreferenceChangeListener(this);
         mAutofillHandler.asyncLoadFromDb();
+        BackgroundHandler.execute(mSetup);
     }
 
     public void setController(Controller controller) {
@@ -173,6 +149,73 @@
         }
     }
 
+    private Runnable mSetup = new Runnable() {
+
+        @Override
+        public void run() {
+            // the cost of one cached page is ~3M (measured using nytimes.com). For
+            // low end devices, we only cache one page. For high end devices, we try
+            // to cache more pages, currently choose 5.
+            if (ActivityManager.staticGetMemoryClass() > 16) {
+                mPageCacheCapacity = 5;
+            }
+            mWebStorageSizeManager = new WebStorageSizeManager(mContext,
+                    new WebStorageSizeManager.StatFsDiskInfo(getAppCachePath()),
+                    new WebStorageSizeManager.WebKitAppCacheInfo(getAppCachePath()));
+            if (Build.VERSION.CODENAME.equals("REL")) {
+                // This is a release build, always startup with debug disabled
+                setDebugEnabled(false);
+            }
+            if (mPrefs.contains(PREF_TEXT_SIZE)) {
+                /*
+                 * Update from TextSize enum to zoom percent
+                 * SMALLEST is 50%
+                 * SMALLER is 75%
+                 * NORMAL is 100%
+                 * LARGER is 150%
+                 * LARGEST is 200%
+                 */
+                switch (getTextSize()) {
+                case SMALLEST:
+                    setTextZoom(50);
+                    break;
+                case SMALLER:
+                    setTextZoom(75);
+                    break;
+                case LARGER:
+                    setTextZoom(150);
+                    break;
+                case LARGEST:
+                    setTextZoom(200);
+                    break;
+                }
+                mPrefs.edit().remove(PREF_TEXT_SIZE).apply();
+            }
+
+            sFactoryResetUrl = mContext.getResources().getString(R.string.homepage_base);
+            if (sFactoryResetUrl.indexOf("{CID}") != -1) {
+                sFactoryResetUrl = sFactoryResetUrl.replace("{CID}",
+                    BrowserProvider.getClientId(mContext.getContentResolver()));
+            }
+
+            synchronized (BrowserSettings.class) {
+                sInitialized = true;
+                BrowserSettings.class.notifyAll();
+            }
+        }
+    };
+
+    private static void requireInitialization() {
+        synchronized (BrowserSettings.class) {
+            while (!sInitialized) {
+                try {
+                    BrowserSettings.class.wait();
+                } catch (InterruptedException e) {
+                }
+            }
+        }
+    }
+
     /**
      * Syncs all the settings that have a Preference UI
      */
@@ -205,6 +248,9 @@
         } else {
             settings.setUserAgentString(USER_AGENTS[getUserAgent()]);
         }
+
+        settings.setProperty("gfxInvertedScreen",
+                useInvertedRendering() ? "true" : "false");
     }
 
     /**
@@ -233,7 +279,7 @@
         settings.setWorkersEnabled(true);  // This only affects V8.
 
         // HTML5 configuration parametersettings.
-        settings.setAppCacheMaxSize(mWebStorageSizeManager.getAppCacheMaxSize());
+        settings.setAppCacheMaxSize(getWebStorageSizeManager().getAppCacheMaxSize());
         settings.setAppCachePath(getAppCachePath());
         settings.setDatabasePath(mContext.getDir("databases", 0).getPath());
         settings.setGeolocationDatabasePath(mContext.getDir("geolocation", 0).getPath());
@@ -276,16 +322,16 @@
             if (mController.getUi() != null) {
                 mController.getUi().setFullscreen(useFullscreen());
             }
+        } else if (PREF_ENABLE_QUICK_CONTROLS.equals(key)) {
+            if (mController.getUi() != null) {
+                mController.getUi().setUseQuickControls(sharedPreferences.getBoolean(key, false));
+            }
         }
     }
 
     public static String getFactoryResetHomeUrl(Context context) {
-        String url = context.getResources().getString(R.string.homepage_base);
-        if (url.indexOf("{CID}") != -1) {
-            url = url.replace("{CID}",
-                    BrowserProvider.getClientId(context.getContentResolver()));
-        }
-        return url;
+        requireInitialization();
+        return sFactoryResetUrl;
     }
 
     public LayoutAlgorithm getLayoutAlgorithm() {
@@ -307,25 +353,21 @@
         return layoutAlgorithm;
     }
 
-    // TODO: Cache
     public int getPageCacheCapacity() {
-        // the cost of one cached page is ~3M (measured using nytimes.com). For
-        // low end devices, we only cache one page. For high end devices, we try
-        // to cache more pages, currently choose 5.
-        if (ActivityManager.staticGetMemoryClass() > 16) {
-            return 5;
-        } else {
-            return 1;
-        }
+        requireInitialization();
+        return mPageCacheCapacity;
     }
 
     public WebStorageSizeManager getWebStorageSizeManager() {
+        requireInitialization();
         return mWebStorageSizeManager;
     }
 
-    // TODO: Cache
     private String getAppCachePath() {
-        return mContext.getDir("appcache", 0).getPath();
+        if (mAppCachePath == null) {
+            mAppCachePath = mContext.getDir("appcache", 0).getPath();
+        }
+        return mAppCachePath;
     }
 
     private void updateSearchEngine(boolean force) {
@@ -359,6 +401,7 @@
     }
 
     public boolean isDebugEnabled() {
+        requireInitialization();
         return mPrefs.getBoolean(PREF_DEBUG_MENU, false);
     }
 
@@ -469,6 +512,10 @@
         return (percent - 100) / TEXT_ZOOM_STEP + TEXT_ZOOM_START_VAL;
     }
 
+    public SharedPreferences getPreferences() {
+        return mPrefs;
+    }
+
     // -----------------------------
     // getter/setters for accessibility_preferences.xml
     // -----------------------------
@@ -489,6 +536,7 @@
     }
 
     public int getTextZoom() {
+        requireInitialization();
         int textZoom = mPrefs.getInt(PREF_TEXT_ZOOM, 10);
         return getAdjustedTextZoom(textZoom);
     }
@@ -670,6 +718,10 @@
         return mPrefs.getBoolean(PREF_FULLSCREEN, false);
     }
 
+    public boolean useInvertedRendering() {
+        return mPrefs.getBoolean(PREF_INVERTED, false);
+    }
+
     // -----------------------------
     // getter/setters for privacy_security_preferences.xml
     // -----------------------------
diff --git a/src/com/android/browser/BrowserSnapshotPage.java b/src/com/android/browser/BrowserSnapshotPage.java
index 72da15b..0953879 100644
--- a/src/com/android/browser/BrowserSnapshotPage.java
+++ b/src/com/android/browser/BrowserSnapshotPage.java
@@ -43,6 +43,7 @@
 import android.widget.ResourceCursorAdapter;
 import android.widget.TextView;
 
+import com.android.browser.CombinedBookmarkHistoryView.CombinedBookmarksCallbacks;
 import com.android.browser.provider.SnapshotProvider.Snapshots;
 
 import java.text.DateFormat;
@@ -73,12 +74,12 @@
     GridView mGrid;
     View mEmpty;
     SnapshotAdapter mAdapter;
-    UiController mUiController;
+    CombinedBookmarksCallbacks mCallback;
 
-    public static BrowserSnapshotPage newInstance(UiController uiController,
+    public static BrowserSnapshotPage newInstance(CombinedBookmarksCallbacks cb,
             Bundle extras) {
         BrowserSnapshotPage instance = new BrowserSnapshotPage();
-        instance.mUiController = uiController;
+        instance.mCallback = cb;
         instance.setArguments(extras);
         return instance;
     }
@@ -98,8 +99,10 @@
     public void onDestroyView() {
         super.onDestroyView();
         getLoaderManager().destroyLoader(LOADER_SNAPSHOTS);
-        mAdapter.changeCursor(null);
-        mAdapter = null;
+        if (mAdapter != null) {
+            mAdapter.changeCursor(null);
+            mAdapter = null;
+        }
     }
 
     void setupGrid(LayoutInflater inflater) {
@@ -192,8 +195,7 @@
     @Override
     public void onItemClick(AdapterView<?> parent, View view, int position,
             long id) {
-        mUiController.removeComboView();
-        mUiController.createNewSnapshotTab(id, true);
+        mCallback.openSnapshot(id);
     }
 
     private static class SnapshotAdapter extends ResourceCursorAdapter {
@@ -216,8 +218,10 @@
             TextView title = (TextView) view.findViewById(R.id.title);
             title.setText(cursor.getString(SNAPSHOT_TITLE));
             TextView size = (TextView) view.findViewById(R.id.size);
-            int stateLen = cursor.getInt(SNAPSHOT_VIEWSTATE_LENGTH);
-            size.setText(String.format("%.2fMB", stateLen / 1024f / 1024f));
+            if (size != null) {
+                int stateLen = cursor.getInt(SNAPSHOT_VIEWSTATE_LENGTH);
+                size.setText(String.format("%.2fMB", stateLen / 1024f / 1024f));
+            }
             long timestamp = cursor.getLong(SNAPSHOT_DATE_CREATED);
             TextView date = (TextView) view.findViewById(R.id.date);
             DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT);
diff --git a/src/com/android/browser/BrowserWebView.java b/src/com/android/browser/BrowserWebView.java
index 80f4a53..38bbf90 100644
--- a/src/com/android/browser/BrowserWebView.java
+++ b/src/com/android/browser/BrowserWebView.java
@@ -17,14 +17,10 @@
 package com.android.browser;
 
 import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
 import android.util.AttributeSet;
 import android.view.View;
 import android.webkit.WebView;
 
-import com.android.browser.NavTabView.WebProxyView;
-
 import java.util.Map;
 
 /**
@@ -33,10 +29,7 @@
 public class BrowserWebView extends WebView {
 
     private boolean mBackgroundRemoved = false;
-    private TitleBarBase mTitleBar;
-    private int mCaptureSize;
-    private Bitmap mCapture;
-    private WebProxyView mProxyView;
+    private TitleBar mTitleBar;
 
     /**
      * @param context
@@ -57,7 +50,6 @@
     public BrowserWebView(
             Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) {
         super(context, attrs, defStyle, privateBrowsing);
-        init();
     }
 
     /**
@@ -66,7 +58,6 @@
      */
     public BrowserWebView(Context context, AttributeSet attrs) {
         super(context, attrs);
-        init();
     }
 
     /**
@@ -74,25 +65,6 @@
      */
     public BrowserWebView(Context context) {
         super(context);
-        init();
-    }
-
-    private void init() {
-        mCaptureSize = mContext.getResources().getDimensionPixelSize(R.dimen.tab_capture_size);
-        mCapture = Bitmap.createBitmap(mCaptureSize, mCaptureSize,
-                Bitmap.Config.RGB_565);
-    }
-
-    protected void setProxyView(WebProxyView p) {
-        mProxyView = p;
-    }
-
-    @Override
-    public void invalidate() {
-        super.invalidate();
-        if (mProxyView != null) {
-            mProxyView.invalidate();
-        }
     }
 
     @Override
@@ -107,25 +79,13 @@
     @Override
     public void setEmbeddedTitleBar(final View title) {
         super.setEmbeddedTitleBar(title);
-        mTitleBar = (TitleBarBase) title;
+        mTitleBar = (TitleBar) title;
     }
 
     public boolean hasTitleBar() {
         return (mTitleBar != null);
     }
 
-    protected Bitmap capture() {
-        if (mCapture == null) return null;
-        Canvas c = new Canvas(mCapture);
-        final int left = getScrollX();
-        final int top = getScrollY() + getVisibleTitleHeight();
-        c.translate(-left, -top);
-        float scale = mCaptureSize / (float) Math.max(getWidth(), getHeight());
-        c.scale(scale, scale, left, top);
-        onDraw(c);
-        return mCapture;
-    }
-
     @Override
     protected void onDraw(android.graphics.Canvas c) {
         super.onDraw(c);
@@ -139,13 +99,4 @@
         }
     }
 
-    @Override
-    protected void updateCachedTextfield(String updatedText) {
-        super.updateCachedTextfield(updatedText);
-        CrashRecoveryHandler handler = CrashRecoveryHandler.getInstance();
-        if (handler != null) {
-            handler.backupState();
-        }
-    }
-
 }
diff --git a/src/com/android/browser/CombinedBookmarkHistoryView.java b/src/com/android/browser/CombinedBookmarkHistoryView.java
index 184314e..7903709 100644
--- a/src/com/android/browser/CombinedBookmarkHistoryView.java
+++ b/src/com/android/browser/CombinedBookmarkHistoryView.java
@@ -17,31 +17,22 @@
 package com.android.browser;
 
 
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
 import android.app.ActionBar;
 import android.app.ActionBar.Tab;
 import android.app.ActionBar.TabListener;
 import android.app.Activity;
 import android.app.FragmentManager;
 import android.app.FragmentTransaction;
-import android.content.Intent;
 import android.content.res.Configuration;
-import android.content.res.Resources;
 import android.database.Cursor;
 import android.graphics.Bitmap;
-import android.os.AsyncTask;
 import android.os.Bundle;
-import android.provider.Browser;
 import android.view.Gravity;
 import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuItem;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.View.OnTouchListener;
 import android.view.ViewGroup;
-import android.webkit.WebIconDatabase;
 import android.webkit.WebIconDatabase.IconListener;
 import android.widget.FrameLayout;
 import android.widget.LinearLayout;
@@ -51,13 +42,8 @@
 import java.util.HashMap;
 import java.util.Vector;
 
-interface BookmarksHistoryCallbacks {
-    public void onUrlSelected(String url, boolean newWindow);
-    public void onRemoveParentChildRelationships();
-}
-
 public class CombinedBookmarkHistoryView extends LinearLayout
-        implements OnTouchListener, TabListener, OptionsMenuHandler {
+        implements OnTouchListener, TabListener {
 
     final static String STARTING_FRAGMENT = "fragment";
 
@@ -66,7 +52,6 @@
     final static int FRAGMENT_ID_HISTORY = 2;
     final static int FRAGMENT_ID_SNAPSHOTS = 3;
 
-    private UiController mUiController;
     private Activity mActivity;
     private ActionBar mActionBar;
 
@@ -82,7 +67,14 @@
     BrowserBookmarksPage mBookmarks;
     BrowserHistoryPage mHistory;
     BrowserSnapshotPage mSnapshots;
-    boolean mIsAnimating;
+    CombinedBookmarksCallbacks mCallback;
+
+    public static interface CombinedBookmarksCallbacks {
+        void openUrl(String url);
+        void openInNewTab(String... urls);
+        void openSnapshot(long id);
+        void close();
+    }
 
     static class IconListenerSet implements IconListener {
         // Used to store favicons as we get them from the database
@@ -121,19 +113,18 @@
         return sIconListenerSet;
     }
 
-    public CombinedBookmarkHistoryView(Activity activity, UiController controller,
-            ComboViews startingView, Bundle extras) {
+    public CombinedBookmarkHistoryView(Activity activity,
+            CombinedBookmarksCallbacks cb, ComboViews startingView,
+            Bundle extras) {
         super(activity);
-        mUiController = controller;
         mActivity = activity;
         mExtras = extras;
         mActionBar = mActivity.getActionBar();
+        mCallback = cb;
 
         View v = LayoutInflater.from(activity).inflate(R.layout.bookmarks_history, this);
         v.setOnTouchListener(this);
 
-//        setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
-
         mBookmarksHeader = new FrameLayout(mActivity);
         mBookmarksHeader.setLayoutParams(new FrameLayout.LayoutParams(
                 FrameLayout.LayoutParams.WRAP_CONTENT,
@@ -143,40 +134,7 @@
         // Start up the default fragment
         initFragments(mExtras);
 
-        // XXX: Must do this before launching the AsyncTask to avoid a
-        // potential crash if the icon database has not been created.
-        WebIconDatabase.getInstance();
-
-        // Do this every time the view is created in case a new favicon was
-        // added to the webkit db.
-        (new AsyncTask<Void, Void, Void>() {
-            @Override
-            public Void doInBackground(Void... v) {
-                Browser.requestAllIcons(mActivity.getContentResolver(),
-                        Browser.BookmarkColumns.FAVICON + " is NULL", getIconListenerSet());
-                return null;
-            }
-        }).execute();
-
-        mIsAnimating = true;
-        setAlpha(0f);
-        Resources res = mActivity.getResources();
-        animate().alpha(1f)
-                .setDuration(res.getInteger(R.integer.comboViewFadeInDuration))
-                .setListener(new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationEnd(Animator animation) {
-                super.onAnimationEnd(animation);
-                mIsAnimating = false;
-                FragmentManager fm = mActivity.getFragmentManager();
-                FragmentTransaction ft = fm.beginTransaction();
-                onTabSelected(mActionBar.getSelectedTab(), ft);
-                ft.commit();
-            }
-        });
-
         setupActionBar(startingView);
-        mUiController.registerOptionsMenuHandler(this);
     }
 
     void setupActionBar(ComboViews startingView) {
@@ -224,15 +182,15 @@
             // Warning, ugly hack below
             // This is done because history uses orientation-specific padding
             FragmentManager fm = mActivity.getFragmentManager();
-            mHistory = BrowserHistoryPage.newInstance(mUiController, mHistory.getArguments());
+            mHistory = BrowserHistoryPage.newInstance(mCallback, mHistory.getArguments());
             fm.beginTransaction().replace(R.id.fragment, mHistory).commit();
         }
     }
 
     private BookmarksPageCallbacks mBookmarkCallbackWrapper = new BookmarksPageCallbacks() {
         @Override
-        public boolean onOpenInNewWindow(Cursor c) {
-            mUiController.onUrlSelected(BrowserBookmarksPage.getUrl(c), true);
+        public boolean onOpenInNewWindow(String... urls) {
+            mCallback.openInNewTab(urls);
             return true;
         }
 
@@ -241,7 +199,7 @@
             if (isFolder) {
                 return false;
             }
-            mUiController.onUrlSelected(BrowserBookmarksPage.getUrl(c), false);
+            mCallback.openUrl(BrowserBookmarksPage.getUrl(c));
             return true;
         }
     };
@@ -249,8 +207,8 @@
     private void initFragments(Bundle extras) {
         mBookmarks = BrowserBookmarksPage.newInstance(mBookmarkCallbackWrapper,
                 extras, mBookmarksHeader);
-        mHistory = BrowserHistoryPage.newInstance(mUiController, extras);
-        mSnapshots = BrowserSnapshotPage.newInstance(mUiController, extras);
+        mHistory = BrowserHistoryPage.newInstance(mCallback, extras);
+        mSnapshots = BrowserSnapshotPage.newInstance(mCallback, extras);
     }
 
     private void loadFragment(int id, FragmentTransaction ft) {
@@ -296,16 +254,12 @@
             }
             mCurrentFragment = INVALID_ID;
         }
-        mUiController.unregisterOptionsMenuHandler(this);
     }
 
     /**
      * callback for back key presses
      */
     boolean onBackPressed() {
-        if (mIsAnimating) {
-            return true;
-        }
         if (mCurrentFragment == FRAGMENT_ID_BOOKMARKS) {
             return mBookmarks.onBackPressed();
         }
@@ -328,13 +282,6 @@
 
     @Override
     public void onTabSelected(Tab tab, FragmentTransaction ft) {
-        if (mIsAnimating) {
-            // We delay set while animating (smooth animations)
-            // TODO: Signal to the fragment in advance so that it can start
-            // loading its data asynchronously
-            return;
-        }
-
         if (tab == mTabBookmarks) {
             loadFragment(FRAGMENT_ID_BOOKMARKS, ft);
         } else if (tab == mTabHistory) {
@@ -349,44 +296,4 @@
         // Ignore
     }
 
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        // Handled by fragment
-        return false;
-    }
-
-    @Override
-    public boolean onPrepareOptionsMenu(Menu menu) {
-        // Handled by fragment
-        return false;
-    }
-
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-        case android.R.id.home:
-            mUiController.getUi().onBackKey();
-            return true;
-        case R.id.go_home:
-            BrowserSettings settings = BrowserSettings.getInstance();
-            mUiController.onUrlSelected(settings.getHomePage(), false);
-            return true;
-        case R.id.add_bookmark:
-            mUiController.bookmarkCurrentPage(false);
-            return true;
-        case R.id.preferences_menu_id:
-            Intent intent = new Intent(mActivity, BrowserPreferencesPage.class);
-            intent.putExtra(BrowserPreferencesPage.CURRENT_PAGE,
-                    mUiController.getCurrentTopWebView().getUrl());
-            mActivity.startActivityForResult(intent, Controller.PREFERENCES_PAGE);
-            return true;
-        }
-
-        switch (mCurrentFragment) {
-        case FRAGMENT_ID_BOOKMARKS:
-            return mBookmarks.onOptionsItemSelected(item);
-        case FRAGMENT_ID_HISTORY:
-            return mHistory.onOptionsItemSelected(item);
-        }
-        return false;
-    }
 }
diff --git a/src/com/android/browser/ComboViewActivity.java b/src/com/android/browser/ComboViewActivity.java
new file mode 100644
index 0000000..cea1884
--- /dev/null
+++ b/src/com/android/browser/ComboViewActivity.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.browser;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import com.android.browser.CombinedBookmarkHistoryView.CombinedBookmarksCallbacks;
+import com.android.browser.UI.ComboViews;
+
+public class ComboViewActivity extends Activity implements CombinedBookmarksCallbacks {
+
+    public static final String EXTRA_COMBO_ARGS = "combo_args";
+    public static final String EXTRA_INITIAL_VIEW = "initial_view";
+
+    public static final String EXTRA_OPEN_SNAPSHOT = "snapshot_id";
+    public static final String EXTRA_OPEN_ALL = "open_all";
+    public static final String EXTRA_CURRENT_URL = "url";
+    public static final String EXTRA_BOOKMARK_PAGE = "create_bookmark";
+
+    private CombinedBookmarkHistoryView mComboView;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setResult(RESULT_CANCELED);
+        Bundle extras = getIntent().getExtras();
+        Bundle args = extras.getBundle(EXTRA_COMBO_ARGS);
+        String svStr = extras.getString(EXTRA_INITIAL_VIEW, null);
+        ComboViews startingView = svStr != null
+                ? ComboViews.valueOf(svStr)
+                : ComboViews.Bookmarks;
+        mComboView = new CombinedBookmarkHistoryView(this, this,
+                startingView, args);
+        setContentView(mComboView);
+    }
+
+    @Override
+    public void openUrl(String url) {
+        Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+        setResult(RESULT_OK, i);
+        finish();
+    }
+
+    @Override
+    public void openInNewTab(String... urls) {
+        Intent i = new Intent();
+        i.putExtra(EXTRA_OPEN_ALL, urls);
+        setResult(RESULT_OK, i);
+        finish();
+    }
+
+    @Override
+    public void close() {
+        finish();
+    }
+
+    @Override
+    public void openSnapshot(long id) {
+        Intent i = new Intent();
+        i.putExtra(EXTRA_OPEN_SNAPSHOT, id);
+        setResult(RESULT_OK, i);
+        finish();
+    }
+
+    @Override
+    public void onBackPressed() {
+        if (!mComboView.onBackPressed()) {
+            super.onBackPressed();
+        }
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.combined, menu);
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            finish();
+            return true;
+        } else if (item.getItemId() == R.id.preferences_menu_id) {
+            String url = getIntent().getStringExtra(EXTRA_CURRENT_URL);
+            Intent intent = new Intent(this, BrowserPreferencesPage.class);
+            intent.putExtra(BrowserPreferencesPage.CURRENT_PAGE, url);
+            startActivityForResult(intent, Controller.PREFERENCES_PAGE);
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+}
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 09c7cd1..92682c1 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -30,6 +30,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.res.Configuration;
+import android.content.res.TypedArray;
 import android.database.ContentObserver;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
@@ -67,7 +68,6 @@
 import android.webkit.CookieManager;
 import android.webkit.CookieSyncManager;
 import android.webkit.HttpAuthHandler;
-import android.webkit.SearchBox;
 import android.webkit.SslErrorHandler;
 import android.webkit.ValueCallback;
 import android.webkit.WebChromeClient;
@@ -119,6 +119,7 @@
     private static final int EMPTY_MENU = -1;
 
     // activity requestCode
+    final static int COMBO_VIEW = 1;
     final static int PREFERENCES_PAGE = 3;
     final static int FILE_SELECTED = 4;
     final static int AUTOFILL_SETUP = 5;
@@ -146,7 +147,6 @@
     private TabControl mTabControl;
     private BrowserSettings mSettings;
     private WebViewFactory mFactory;
-    private OptionsMenuHandler mOptionsMenuHandler = null;
 
     private WakeLock mWakeLock;
 
@@ -206,9 +206,10 @@
     // Checks to see when the bookmarks database has changed, and updates the
     // Tabs' notion of whether they represent bookmarked sites.
     private ContentObserver mBookmarksObserver;
-    private DataController mDataController;
     private CrashRecoveryHandler mCrashRecoveryHandler;
 
+    private boolean mSimulateActionBarOverlayMode;
+
     private static class ClearThumbnails extends AsyncTask<File, Void, Void> {
         @Override
         public Void doInBackground(File... files) {
@@ -223,13 +224,15 @@
         }
     }
 
-    public Controller(Activity browser) {
+    public Controller(Activity browser, boolean preloadCrashState) {
         mActivity = browser;
         mSettings = BrowserSettings.getInstance();
-        mDataController = DataController.getInstance(mActivity);
         mTabControl = new TabControl(this);
         mSettings.setController(this);
         mCrashRecoveryHandler = CrashRecoveryHandler.initialize(this);
+        if (preloadCrashState) {
+            mCrashRecoveryHandler.preloadCrashState();
+        }
         mFactory = new BrowserWebViewFactory(browser);
 
         mUrlHandler = new UrlHandler(this);
@@ -237,10 +240,6 @@
         mPageDialogsHandler = new PageDialogsHandler(mActivity, this);
         mNfcHandler = new NfcHandler(mActivity, this);
 
-        PowerManager pm = (PowerManager) mActivity
-                .getSystemService(Context.POWER_SERVICE);
-        mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Browser");
-
         startHandler();
         mBookmarksObserver = new ContentObserver(mHandler) {
             @Override
@@ -261,7 +260,8 @@
                 new SystemAllowGeolocationOrigins(mActivity.getApplicationContext());
         mSystemAllowGeolocationOrigins.start();
 
-        retainIconsOnStartup();
+        openIconDatabase();
+        mSimulateActionBarOverlayMode = !BrowserActivity.isTablet(mActivity);
     }
 
     void start(final Bundle icicle, final Intent intent) {
@@ -418,43 +418,17 @@
         return mTabControl.getTabs();
     }
 
-    // Open the icon database and retain all the icons for visited sites.
-    // This is done on a background thread so as not to stall startup.
-    private void retainIconsOnStartup() {
-        // WebIconDatabase needs to be retrieved on the UI thread so that if
-        // it has not been created successfully yet the Handler is started on the
-        // UI thread.
-        new RetainIconsOnStartupTask(WebIconDatabase.getInstance()).execute();
-    }
+    // Open the icon database.
+    private void openIconDatabase() {
+        // We have to call getInstance on the UI thread
+        final WebIconDatabase instance = WebIconDatabase.getInstance();
+        BackgroundHandler.execute(new Runnable() {
 
-    private class RetainIconsOnStartupTask extends AsyncTask<Void, Void, Void> {
-        private WebIconDatabase mDb;
-
-        public RetainIconsOnStartupTask(WebIconDatabase db) {
-            mDb = db;
-        }
-
-        @Override
-        protected Void doInBackground(Void... unused) {
-            mDb.open(mActivity.getDir("icons", 0).getPath());
-            Cursor c = null;
-            try {
-                c = Browser.getAllBookmarks(mActivity.getContentResolver());
-                if (c.moveToFirst()) {
-                    int urlIndex = c.getColumnIndex(Browser.BookmarkColumns.URL);
-                    do {
-                        String url = c.getString(urlIndex);
-                        mDb.retainIconForPageUrl(url);
-                    } while (c.moveToNext());
-                }
-            } catch (IllegalStateException e) {
-                Log.e(LOGTAG, "retainIconsOnStartup", e);
-            } finally {
-                if (c != null) c.close();
+            @Override
+            public void run() {
+                instance.open(mActivity.getDir("icons", 0).getPath());
             }
-
-            return null;
-        }
+        });
     }
 
     private void startHandler() {
@@ -515,7 +489,7 @@
                         break;
 
                     case RELEASE_WAKELOCK:
-                        if (mWakeLock.isHeld()) {
+                        if (mWakeLock != null && mWakeLock.isHeld()) {
                             mWakeLock.release();
                             // if we reach here, Browser should be still in the
                             // background loading after WAKELOCK_TIMEOUT (5-min).
@@ -536,7 +510,7 @@
 
     }
 
-
+    @Override
     public Tab getCurrentTab() {
         return mTabControl.getCurrentTab();
     }
@@ -619,6 +593,11 @@
         if (tab != null) {
             tab.pause();
             if (!pauseWebViewTimers(tab)) {
+                if (mWakeLock == null) {
+                    PowerManager pm = (PowerManager) mActivity
+                            .getSystemService(Context.POWER_SERVICE);
+                    mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Browser");
+                }
                 mWakeLock.acquire();
                 mHandler.sendMessageDelayed(mHandler
                         .obtainMessage(RELEASE_WAKELOCK), WAKELOCK_TIMEOUT);
@@ -641,7 +620,7 @@
         // focused view XXX has no id".
 
         // Save all the tabs
-        mTabControl.saveState(outState, saveImages);
+        mTabControl.saveState(outState, false);
         if (!outState.isEmpty()) {
             // Save time so that we know how old incognito tabs (if any) are.
             outState.putSerializable("lastActiveDate", Calendar.getInstance());
@@ -659,10 +638,7 @@
             current.resume();
             resumeWebViewTimers(current);
         }
-        if (mWakeLock.isHeld()) {
-            mHandler.removeMessages(RELEASE_WAKELOCK);
-            mWakeLock.release();
-        }
+        releaseWakeLock();
 
         mUi.onResume();
         mNetworkHandler.onResume();
@@ -670,6 +646,13 @@
         WebView.enablePlatformNotifications();
     }
 
+    private void releaseWakeLock() {
+        if (mWakeLock != null && mWakeLock.isHeld()) {
+            mHandler.removeMessages(RELEASE_WAKELOCK);
+            mWakeLock.release();
+        }
+    }
+
     /**
      * resume all WebView timers using the WebView instance of the given tab
      * @param tab guaranteed non-null
@@ -679,9 +662,7 @@
         if ((!mActivityPaused && !inLoad) || (mActivityPaused && inLoad)) {
             CookieSyncManager.getInstance().startSync();
             WebView w = tab.getWebView();
-            if (w != null) {
-                w.resumeTimers();
-            }
+            WebViewTimersControl.getInstance().onBrowserActivityResume(w);
         }
     }
 
@@ -695,10 +676,7 @@
             return true;
         } else if (!tab.inPageLoad()) {
             CookieSyncManager.getInstance().stopSync();
-            WebView w = getCurrentWebView();
-            if (w != null) {
-                w.pauseTimers();
-            }
+            WebViewTimersControl.getInstance().onBrowserActivityPause(getCurrentWebView());
             return true;
         }
         return false;
@@ -819,22 +797,22 @@
         if (!tab.isPrivateBrowsingEnabled()
                 && !TextUtils.isEmpty(tab.getUrl())
                 && !tab.isSnapshot()) {
+            // Only update the bookmark screenshot if the user did not
+            // cancel the load early and there is not already
+            // a pending update for the tab.
             if (tab.inForeground() && !didUserStopLoading()
                     || !tab.inForeground()) {
-                // Only update the bookmark screenshot if the user did not
-                // cancel the load early.
-                mHandler.sendMessageDelayed(mHandler.obtainMessage(
-                        UPDATE_BOOKMARK_THUMBNAIL, 0, 0, tab),
-                        500);
+                if (!mHandler.hasMessages(UPDATE_BOOKMARK_THUMBNAIL, tab)) {
+                    mHandler.sendMessageDelayed(mHandler.obtainMessage(
+                            UPDATE_BOOKMARK_THUMBNAIL, 0, 0, tab),
+                            500);
+                }
             }
         }
         // pause the WebView timer and release the wake lock if it is finished
         // while BrowserActivity is in pause state.
         if (mActivityPaused && pauseWebViewTimers(tab)) {
-            if (mWakeLock.isHeld()) {
-                mHandler.removeMessages(RELEASE_WAKELOCK);
-                mWakeLock.release();
-            }
+            releaseWakeLock();
         }
 
         // Performance probe
@@ -889,7 +867,7 @@
         }
         // Update the title in the history database if not in private browsing mode
         if (!tab.isPrivateBrowsingEnabled()) {
-            mDataController.updateHistoryTitle(pageUrl, title);
+            DataController.getInstance(mActivity).updateHistoryTitle(pageUrl, title);
         }
     }
 
@@ -936,8 +914,7 @@
                 || url.regionMatches(true, 0, "about:", 0, 6)) {
             return;
         }
-        mDataController.updateVisitedHistory(url);
-        WebIconDatabase.getInstance().retainIconForPageUrl(url);
+        DataController.getInstance(mActivity).updateVisitedHistory(url);
         if (!mActivityPaused) {
             // Since we clear the state in onPause, don't backup the current
             // state if we are already paused
@@ -1155,6 +1132,30 @@
                     mAutoFillSetupMessage = null;
                 }
                 break;
+            case COMBO_VIEW:
+                if (intent == null || resultCode != Activity.RESULT_OK) {
+                    break;
+                }
+                if (Intent.ACTION_VIEW.equals(intent.getAction())) {
+                    Tab t = getCurrentTab();
+                    Uri uri = intent.getData();
+                    loadUrl(t, uri.toString());
+                } else if (intent.hasExtra(ComboViewActivity.EXTRA_OPEN_ALL)) {
+                    String[] urls = intent.getStringArrayExtra(
+                            ComboViewActivity.EXTRA_OPEN_ALL);
+                    Tab parent = getCurrentTab();
+                    for (String url : urls) {
+                        parent = openTab(url, parent,
+                                !mSettings.openInBackground(), true);
+                    }
+                } else if (intent.hasExtra(ComboViewActivity.EXTRA_OPEN_SNAPSHOT)) {
+                    long id = intent.getLongExtra(
+                            ComboViewActivity.EXTRA_OPEN_SNAPSHOT, -1);
+                    if (id >= 0) {
+                        createNewSnapshotTab(id, true);
+                    }
+                }
+                break;
             default:
                 break;
         }
@@ -1192,56 +1193,6 @@
         mTabControl.removeParentChildRelationShips();
     }
 
-    /**
-     * callback from ComboPage when bookmark/history selection
-     */
-    @Override
-    public void onUrlSelected(String url, boolean newTab) {
-        removeComboView();
-        if (!TextUtils.isEmpty(url)) {
-            if (newTab) {
-                final Tab parent = mTabControl.getCurrentTab();
-                openTab(url,
-                        (parent != null) && parent.isPrivateBrowsingEnabled(),
-                        !mSettings.openInBackground(),
-                        true);
-            } else {
-                final Tab currentTab = mTabControl.getCurrentTab();
-                loadUrl(currentTab, url);
-            }
-        }
-    }
-
-    /**
-     * dismiss the ComboPage
-     */
-    @Override
-    public void removeComboView() {
-        mUi.hideComboView();
-    }
-
-    // active tabs page handling
-
-    protected void showActiveTabsPage() {
-        mMenuState = EMPTY_MENU;
-        mUi.showActiveTabsPage();
-    }
-
-    /**
-     * Remove the active tabs page.
-     * @param needToAttach If true, the active tabs page did not attach a tab
-     *                     to the content view, so we need to do that here.
-     */
-    @Override
-    public void removeActiveTabsPage(boolean needToAttach) {
-        mMenuState = R.id.MAIN_MENU;
-        mUi.removeActiveTabsPage();
-        if (needToAttach) {
-            setActiveTab(mTabControl.getCurrentTab());
-        }
-        getCurrentTopWebView().requestFocus();
-    }
-
     // key handling
     protected void onBackKey() {
         if (!mUi.onBackKey()) {
@@ -1266,10 +1217,6 @@
     // TODO: maybe put into separate handler
 
     protected boolean onCreateOptionsMenu(Menu menu) {
-        if (mOptionsMenuHandler != null) {
-            return mOptionsMenuHandler.onCreateOptionsMenu(menu);
-        }
-
         if (mMenuState == EMPTY_MENU) {
             return false;
         }
@@ -1284,7 +1231,7 @@
 
     protected void onCreateContextMenu(ContextMenu menu, View v,
             ContextMenuInfo menuInfo) {
-        if (v instanceof TitleBarBase) {
+        if (v instanceof TitleBar) {
             return;
         }
         if (!(v instanceof WebView)) {
@@ -1462,9 +1409,6 @@
     }
 
     boolean onPrepareOptionsMenu(Menu menu) {
-        if (mOptionsMenuHandler != null) {
-            return mOptionsMenuHandler.onPrepareOptionsMenu(menu);
-        }
         // Note: setVisible will decide whether an item is visible; while
         // setEnabled() will decide whether an item is enabled, which also means
         // whether the matching shortcut key will function.
@@ -1482,65 +1426,62 @@
                     menu.setGroupEnabled(R.id.MAIN_MENU, true);
                     menu.setGroupEnabled(R.id.MAIN_SHORTCUT_MENU, true);
                 }
-                final WebView w = getCurrentTopWebView();
-                boolean canGoBack = false;
-                boolean canGoForward = false;
-                boolean isHome = false;
-                if (w != null) {
-                    canGoBack = w.canGoBack();
-                    canGoForward = w.canGoForward();
-                    isHome = mSettings.getHomePage().equals(w.getUrl());
-                }
-                final MenuItem back = menu.findItem(R.id.back_menu_id);
-                back.setEnabled(canGoBack);
-
-                final MenuItem home = menu.findItem(R.id.homepage_menu_id);
-                home.setEnabled(!isHome);
-
-                final MenuItem forward = menu.findItem(R.id.forward_menu_id);
-                forward.setEnabled(canGoForward);
-
-                // decide whether to show the share link option
-                PackageManager pm = mActivity.getPackageManager();
-                Intent send = new Intent(Intent.ACTION_SEND);
-                send.setType("text/plain");
-                ResolveInfo ri = pm.resolveActivity(send,
-                        PackageManager.MATCH_DEFAULT_ONLY);
-                menu.findItem(R.id.share_page_menu_id).setVisible(ri != null);
-
-                boolean isNavDump = mSettings.enableNavDump();
-                final MenuItem nav = menu.findItem(R.id.dump_nav_menu_id);
-                nav.setVisible(isNavDump);
-                nav.setEnabled(isNavDump);
-
-                boolean showDebugSettings = mSettings.isDebugEnabled();
-                final MenuItem counter = menu.findItem(R.id.dump_counters_menu_id);
-                counter.setVisible(showDebugSettings);
-                counter.setEnabled(showDebugSettings);
-
-                final MenuItem newtab = menu.findItem(R.id.new_tab_menu_id);
-                newtab.setEnabled(getTabControl().canCreateNewTab());
-
-                MenuItem saveSnapshot = menu.findItem(R.id.save_snapshot_menu_id);
-                Tab tab = getCurrentTab();
-                saveSnapshot.setVisible(tab != null && !tab.isSnapshot());
+                updateMenuState(getCurrentTab(), menu);
                 break;
         }
         mCurrentMenuState = mMenuState;
         return mUi.onPrepareOptionsMenu(menu);
     }
 
-    public boolean onOptionsItemSelected(MenuItem item) {
-        if (mOptionsMenuHandler != null &&
-                mOptionsMenuHandler.onOptionsItemSelected(item)) {
-            return true;
+    @Override
+    public void updateMenuState(Tab tab, Menu menu) {
+        boolean canGoBack = false;
+        boolean canGoForward = false;
+        boolean isHome = false;
+        if (tab != null) {
+            canGoBack = tab.canGoBack();
+            canGoForward = tab.canGoForward();
+            isHome = mSettings.getHomePage().equals(tab.getUrl());
+        }
+        final MenuItem back = menu.findItem(R.id.back_menu_id);
+        back.setEnabled(canGoBack);
+
+        final MenuItem home = menu.findItem(R.id.homepage_menu_id);
+        home.setEnabled(!isHome);
+
+        final MenuItem forward = menu.findItem(R.id.forward_menu_id);
+        forward.setEnabled(canGoForward);
+
+        final MenuItem source = menu.findItem(mInLoad ? R.id.stop_menu_id : R.id.reload_menu_id);
+        final MenuItem dest = menu.findItem(R.id.stop_reload_menu_id);
+        if (source != null && dest != null) {
+            dest.setTitle(source.getTitle());
+            dest.setIcon(source.getIcon());
         }
 
-        if (item.getGroupId() != R.id.CONTEXT_MENU) {
-            // menu remains active, so ensure comboview is dismissed
-            // if main menu option is selected
-            removeComboView();
-        }
+        // decide whether to show the share link option
+        PackageManager pm = mActivity.getPackageManager();
+        Intent send = new Intent(Intent.ACTION_SEND);
+        send.setType("text/plain");
+        ResolveInfo ri = pm.resolveActivity(send,
+                PackageManager.MATCH_DEFAULT_ONLY);
+        menu.findItem(R.id.share_page_menu_id).setVisible(ri != null);
+
+        boolean isNavDump = mSettings.enableNavDump();
+        final MenuItem nav = menu.findItem(R.id.dump_nav_menu_id);
+        nav.setVisible(isNavDump);
+        nav.setEnabled(isNavDump);
+
+        boolean showDebugSettings = mSettings.isDebugEnabled();
+        final MenuItem counter = menu.findItem(R.id.dump_counters_menu_id);
+        counter.setVisible(showDebugSettings);
+        counter.setEnabled(showDebugSettings);
+
+        MenuItem saveSnapshot = menu.findItem(R.id.save_snapshot_menu_id);
+        saveSnapshot.setVisible(tab != null && !tab.isSnapshot());
+    }
+
+    public boolean onOptionsItemSelected(MenuItem item) {
         if (null == getCurrentTopWebView()) {
             return false;
         }
@@ -1551,6 +1492,10 @@
             // won't get onKeyUp for MENU. So it is important to reset it here.
             mMenuIsDown = false;
         }
+        if (mUi.onOptionsItemSelected(item)) {
+            // ui callback handled it
+            return true;
+        }
         switch (item.getItemId()) {
             // -- Main menu
             case R.id.new_tab_menu_id:
@@ -1569,12 +1514,8 @@
                 bookmarksOrHistoryPicker(false);
                 break;
 
-            case R.id.active_tabs_menu_id:
-                showActiveTabsPage();
-                break;
-
             case R.id.add_bookmark_menu_id:
-                bookmarkCurrentPage(false);
+                mActivity.startActivity(createBookmarkCurrentPageIntent(false));
                 break;
 
             case R.id.stop_reload_menu_id:
@@ -1586,11 +1527,11 @@
                 break;
 
             case R.id.back_menu_id:
-                getCurrentTopWebView().goBack();
+                getCurrentTab().goBack();
                 break;
 
             case R.id.forward_menu_id:
-                getCurrentTopWebView().goForward();
+                getCurrentTab().goForward();
                 break;
 
             case R.id.close_menu_id:
@@ -1831,11 +1772,28 @@
         mActivity.startActivity(intent);
     }
 
+    int getActionModeHeight() {
+        TypedArray actionBarSizeTypedArray = mActivity.obtainStyledAttributes(
+                    new int[] { android.R.attr.actionBarSize });
+        int size = (int) actionBarSizeTypedArray.getDimension(0, 0f);
+        actionBarSizeTypedArray.recycle();
+        return size;
+    }
+
     // action mode
 
     void onActionModeStarted(ActionMode mode) {
         mUi.onActionModeStarted(mode);
         mActionMode = mode;
+        if (mSimulateActionBarOverlayMode) {
+            WebView web = getCurrentWebView();
+            // Simulate overlay mode by scrolling the webview the amount it will be
+            // pushed down. Actual overlay mode doesn't work for us as otherwise
+            // the CAB will, well, overlay the content, which breaks things like
+            // find on page.
+            int scrollBy = getActionModeHeight();
+            web.scrollBy(0, scrollBy);
+        }
     }
 
     /*
@@ -1864,6 +1822,11 @@
         if (!isInCustomActionMode()) return;
         mUi.onActionModeFinished(mInLoad);
         mActionMode = null;
+        if (mSimulateActionBarOverlayMode) {
+            WebView web = getCurrentWebView();
+            int scrollBy = getActionModeHeight();
+            web.scrollBy(0, -scrollBy);
+        }
     }
 
     boolean isInLoad() {
@@ -1875,13 +1838,13 @@
     /**
      * add the current page as a bookmark to the given folder id
      * @param folderId use -1 for the default folder
-     * @param canBeAnEdit If true, check to see whether the site is already
+     * @param editExisting If true, check to see whether the site is already
      *          bookmarked, and if it is, edit that bookmark.  If false, and
      *          the site is already bookmarked, do not attempt to edit the
      *          existing bookmark.
      */
     @Override
-    public void bookmarkCurrentPage(boolean canBeAnEdit) {
+    public Intent createBookmarkCurrentPageIntent(boolean editExisting) {
         Intent i = new Intent(mActivity,
                 AddBookmarkPage.class);
         WebView w = getCurrentTopWebView();
@@ -1900,13 +1863,13 @@
                 createScreenshot(w, getDesiredThumbnailWidth(mActivity),
                 getDesiredThumbnailHeight(mActivity)));
         i.putExtra(BrowserContract.Bookmarks.FAVICON, w.getFavicon());
-        if (canBeAnEdit) {
+        if (editExisting) {
             i.putExtra(AddBookmarkPage.CHECK_FOR_DUPE, true);
         }
         // Put the dialog at the upper right of the screen, covering the
         // star on the title bar.
         i.putExtra("gravity", Gravity.RIGHT | Gravity.TOP);
-        mActivity.startActivity(i);
+        return i;
     }
 
     // file chooser
@@ -2300,8 +2263,6 @@
      */
     @Override
     public boolean switchToTab(Tab tab) {
-        // hide combo view if open
-        removeComboView();
         Tab currentTab = mTabControl.getCurrentTab();
         if (tab == null || tab == currentTab) {
             return false;
@@ -2312,9 +2273,8 @@
 
     @Override
     public void closeCurrentTab() {
-        // hide combo view if open
-        removeComboView();
         if (mTabControl.getTabCount() == 1) {
+            mCrashRecoveryHandler.clearState();
             mActivity.finish();
             return;
         }
@@ -2339,8 +2299,6 @@
      */
     @Override
     public void closeTab(Tab tab) {
-        // hide combo view if open
-        removeComboView();
         removeTab(tab);
     }
 
@@ -2396,12 +2354,11 @@
 
     @Override
     public void onUserCanceledSsl(Tab tab) {
-        WebView web = tab.getWebView();
         // TODO: Figure out the "right" behavior
-        if (web.canGoBack()) {
-            web.goBack();
+        if (tab.canGoBack()) {
+            tab.goBack();
         } else {
-            web.loadUrl(mSettings.getHomePage());
+            tab.loadUrl(mSettings.getHomePage(), null);
         }
     }
 
@@ -2418,9 +2375,8 @@
             mActivity.moveTaskToBack(true);
             return;
         }
-        WebView w = current.getWebView();
-        if (w.canGoBack()) {
-            w.goBack();
+        if (current.canGoBack()) {
+            current.goBack();
         } else {
             // Check to see if we are closing a window that was created by
             // another window. If so, we switch back to that window.
@@ -2512,14 +2468,6 @@
         boolean noModifiers = event.hasNoModifiers();
         // Even if MENU is already held down, we need to call to super to open
         // the IME on long press.
-        if (KeyEvent.KEYCODE_MENU == keyCode) {
-            if (mOptionsMenuHandler != null) {
-                return false;
-            } else {
-                event.startTracking();
-                return true;
-            }
-        }
         if (!noModifiers
                 && ((KeyEvent.KEYCODE_MENU == keyCode)
                         || (KeyEvent.KEYCODE_CTRL_LEFT == keyCode)
@@ -2529,7 +2477,8 @@
         }
 
         WebView webView = getCurrentTopWebView();
-        if (webView == null) return false;
+        Tab tab = getCurrentTab();
+        if (webView == null || tab == null) return false;
 
         boolean ctrl = event.hasModifiers(KeyEvent.META_CTRL_ON);
         boolean shift = event.hasModifiers(KeyEvent.META_SHIFT_ON);
@@ -2561,15 +2510,19 @@
                 if (!noModifiers) break;
                 event.startTracking();
                 return true;
+            case KeyEvent.KEYCODE_FORWARD:
+                if (!noModifiers) break;
+                tab.goForward();
+                return true;
             case KeyEvent.KEYCODE_DPAD_LEFT:
                 if (ctrl) {
-                    webView.goBack();
+                    tab.goBack();
                     return true;
                 }
                 break;
             case KeyEvent.KEYCODE_DPAD_RIGHT:
                 if (ctrl) {
-                    webView.goForward();
+                    tab.goForward();
                     return true;
                 }
                 break;
@@ -2677,18 +2630,6 @@
     }
 
     @Override
-    public void registerOptionsMenuHandler(OptionsMenuHandler handler) {
-        mOptionsMenuHandler = handler;
-    }
-
-    @Override
-    public void unregisterOptionsMenuHandler(OptionsMenuHandler handler) {
-        if (mOptionsMenuHandler == handler) {
-            mOptionsMenuHandler = null;
-        }
-    }
-
-    @Override
     public void registerDropdownChangeListener(DropdownChangeListener d) {
         mUi.registerDropdownChangeListener(d);
     }
diff --git a/src/com/android/browser/CrashRecoveryHandler.java b/src/com/android/browser/CrashRecoveryHandler.java
index ca538bd..02636c0 100644
--- a/src/com/android/browser/CrashRecoveryHandler.java
+++ b/src/com/android/browser/CrashRecoveryHandler.java
@@ -25,9 +25,8 @@
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.os.Handler;
-import android.os.HandlerThread;
+import android.os.Message;
 import android.os.Parcel;
-import android.os.Process;
 import android.util.Log;
 
 import java.io.ByteArrayOutputStream;
@@ -35,6 +34,7 @@
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
+import java.io.IOException;
 
 public class CrashRecoveryHandler {
 
@@ -51,11 +51,20 @@
      */
     private static final long PROMPT_INTERVAL = 30 * 60 * 1000; // 30 minutes
 
+    private static final int MSG_WRITE_STATE = 1;
+    private static final int MSG_CLEAR_STATE = 2;
+    private static final int MSG_PRELOAD_STATE = 3;
+
     private static CrashRecoveryHandler sInstance;
 
     private Controller mController;
+    private Context mContext;
     private Handler mForegroundHandler;
     private Handler mBackgroundHandler;
+    private boolean mIsPreloading = false;
+    private boolean mDidPreload = false;
+    private boolean mShouldPrompt = false;
+    private Bundle mRecoveryState = null;
 
     public static CrashRecoveryHandler initialize(Controller controller) {
         if (sInstance == null) {
@@ -72,11 +81,46 @@
 
     private CrashRecoveryHandler(Controller controller) {
         mController = controller;
+        mContext = mController.getActivity().getApplicationContext();
         mForegroundHandler = new Handler();
-        HandlerThread thread = new HandlerThread(LOGTAG,
-                Process.THREAD_PRIORITY_BACKGROUND);
-        thread.start();
-        mBackgroundHandler = new Handler(thread.getLooper());
+        mBackgroundHandler = new Handler(BackgroundHandler.getLooper()) {
+
+            @Override
+            public void handleMessage(Message msg) {
+                switch (msg.what) {
+                case MSG_WRITE_STATE:
+                    Parcel p = Parcel.obtain();
+                    try {
+                        Bundle state = (Bundle) msg.obj;
+                        state.writeToParcel(p, 0);
+                        File stateFile = new File(mContext.getCacheDir(), STATE_FILE);
+                        FileOutputStream fout = new FileOutputStream(stateFile);
+                        fout.write(p.marshall());
+                        fout.close();
+                    } catch (Throwable e) {
+                        Log.i(LOGTAG, "Failed to save persistent state", e);
+                    } finally {
+                        p.recycle();
+                    }
+                    break;
+                case MSG_CLEAR_STATE:
+                    File state = new File(mContext.getCacheDir(), STATE_FILE);
+                    if (state.exists()) {
+                        state.delete();
+                    }
+                    break;
+                case MSG_PRELOAD_STATE:
+                    mRecoveryState = loadCrashState();
+                    mShouldPrompt = shouldPrompt();
+                    synchronized (CrashRecoveryHandler.this) {
+                        mIsPreloading = false;
+                        mDidPreload = true;
+                        CrashRecoveryHandler.this.notifyAll();
+                    }
+                    break;
+                }
+            }
+        };
     }
 
     public void backupState() {
@@ -90,9 +134,8 @@
             try {
                 final Bundle state = new Bundle();
                 mController.onSaveInstanceState(state, false);
-                Context context = mController.getActivity()
-                        .getApplicationContext();
-                mBackgroundHandler.post(new WriteState(context, state));
+                Message.obtain(mBackgroundHandler, MSG_WRITE_STATE, state)
+                        .sendToTarget();
                 // Remove any queued up saves
                 mForegroundHandler.removeCallbacks(mCreateState);
             } catch (Throwable t) {
@@ -103,42 +146,8 @@
 
     };
 
-    static class WriteState implements Runnable {
-        private Context mContext;
-        private Bundle mState;
-
-        WriteState(Context context, Bundle state) {
-            mContext = context;
-            mState = state;
-        }
-
-        @Override
-        public void run() {
-            if (mState.isEmpty()) {
-                clearState(mContext);
-                return;
-            }
-            Parcel p = Parcel.obtain();
-            try {
-                mState.writeToParcel(p, 0);
-                File state = new File(mContext.getCacheDir(), STATE_FILE);
-                FileOutputStream fout = new FileOutputStream(state);
-                fout.write(p.marshall());
-                fout.close();
-            } catch (Throwable e) {
-                Log.i(LOGTAG, "Failed to save persistent state", e);
-            } finally {
-                p.recycle();
-            }
-        }
-
-    }
-
-    private static void clearState(Context context) {
-        File state = new File(context.getCacheDir(), STATE_FILE);
-        if (state.exists()) {
-            state.delete();
-        }
+    public void clearState() {
+        mBackgroundHandler.sendEmptyMessage(MSG_CLEAR_STATE);
     }
 
     public void promptToRecover(final Bundle state, final Intent intent) {
@@ -162,7 +171,7 @@
                 .setOnCancelListener(new OnCancelListener() {
                     @Override
                     public void onCancel(DialogInterface dialog) {
-                        clearState(mController.getActivity());
+                        clearState();
                         mController.doStart(null, intent);
                     }
                 })
@@ -170,13 +179,9 @@
     }
 
     private boolean shouldPrompt() {
-        // STOPSHIP TODO: Remove once b/4971724 is fixed
-        if (true) return false;
-        Context context = mController.getActivity();
-        SharedPreferences prefs = context.getSharedPreferences(
+        SharedPreferences prefs = mContext.getSharedPreferences(
                 RECOVERY_PREFERENCES, Context.MODE_PRIVATE);
-        long lastRecovered = prefs.getLong(KEY_LAST_RECOVERED,
-                System.currentTimeMillis());
+        long lastRecovered = prefs.getLong(KEY_LAST_RECOVERED, 0);
         long timeSinceLastRecover = System.currentTimeMillis() - lastRecovered;
         if (timeSinceLastRecover > PROMPT_INTERVAL) {
             return false;
@@ -185,21 +190,20 @@
     }
 
     private void updateLastRecovered() {
-        Context context = mController.getActivity();
-        SharedPreferences prefs = context.getSharedPreferences(
+        SharedPreferences prefs = mContext.getSharedPreferences(
                 RECOVERY_PREFERENCES, Context.MODE_PRIVATE);
         prefs.edit()
             .putLong(KEY_LAST_RECOVERED, System.currentTimeMillis())
-            .commit();
+            .apply();
     }
 
-    public void startRecovery(Intent intent) {
+    private Bundle loadCrashState() {
         Bundle state = null;
         Parcel parcel = Parcel.obtain();
+        FileInputStream fin = null;
         try {
-            Context context = mController.getActivity();
-            File stateFile = new File(context.getCacheDir(), STATE_FILE);
-            FileInputStream fin = new FileInputStream(stateFile);
+            File stateFile = new File(mContext.getCacheDir(), STATE_FILE);
+            fin = new FileInputStream(stateFile);
             ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
             byte[] buffer = new byte[BUFFER_SIZE];
             int read;
@@ -210,21 +214,53 @@
             parcel.unmarshall(data, 0, data.length);
             parcel.setDataPosition(0);
             state = parcel.readBundle();
-            if (shouldPrompt()) {
-                promptToRecover(state, intent);
-                return;
-            } else {
-                updateLastRecovered();
-            }
         } catch (FileNotFoundException e) {
             // No state to recover
             state = null;
-        } catch (Exception e) {
+        } catch (Throwable e) {
             Log.w(LOGTAG, "Failed to recover state!", e);
             state = null;
         } finally {
             parcel.recycle();
+            if (fin != null) {
+                try {
+                    fin.close();
+                } catch (IOException e) { }
+            }
         }
-        mController.doStart(state, intent);
+        return state;
     }
+
+    public void startRecovery(Intent intent) {
+        synchronized (CrashRecoveryHandler.this) {
+            while (mIsPreloading) {
+                try {
+                    CrashRecoveryHandler.this.wait();
+                } catch (InterruptedException e) {}
+            }
+        }
+        if (!mDidPreload) {
+            mRecoveryState = loadCrashState();
+            mShouldPrompt = shouldPrompt();
+        }
+        if (mShouldPrompt) {
+            promptToRecover(mRecoveryState, intent);
+            return;
+        } else {
+            updateLastRecovered();
+        }
+        mController.doStart(mRecoveryState, intent);
+        mRecoveryState = null;
+    }
+
+    public void preloadCrashState() {
+        synchronized (CrashRecoveryHandler.this) {
+            if (mIsPreloading) {
+                return;
+            }
+            mIsPreloading = true;
+        }
+        mBackgroundHandler.sendEmptyMessage(MSG_PRELOAD_STATE);
+    }
+
 }
diff --git a/src/com/android/browser/GoogleAccountLogin.java b/src/com/android/browser/GoogleAccountLogin.java
index c7d1924..cd96346 100644
--- a/src/com/android/browser/GoogleAccountLogin.java
+++ b/src/com/android/browser/GoogleAccountLogin.java
@@ -16,12 +16,6 @@
 
 package com.android.browser;
 
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.util.EntityUtils;
-
 import android.accounts.Account;
 import android.accounts.AccountManager;
 import android.accounts.AccountManagerCallback;
@@ -35,13 +29,17 @@
 import android.net.Uri;
 import android.net.http.AndroidHttpClient;
 import android.os.Bundle;
-import android.os.Handler;
-import android.preference.PreferenceManager;
 import android.util.Log;
 import android.webkit.CookieSyncManager;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
 
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpStatus;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.util.EntityUtils;
+
 public class GoogleAccountLogin implements Runnable,
         AccountManagerCallback<Bundle>, OnCancelListener {
 
@@ -56,14 +54,11 @@
     // Google account type
     private static final String GOOGLE = "com.google";
     // Last auto login time
-    private static final String PREF_AUTOLOGIN_TIME = "last_autologin_time";
+    public static final String PREF_AUTOLOGIN_TIME = "last_autologin_time";
 
     private final Activity mActivity;
     private final Account mAccount;
     private final WebView mWebView;
-    // Does not matter if this is initialized in a non-ui thread.
-    // Dialog.dismiss() will post to the right handler.
-    private final Handler mHandler = new Handler();
     private Runnable mRunnable;
     private ProgressDialog mProgressDialog;
 
@@ -84,7 +79,7 @@
         // resumeWebViewTimers. So to avoid problems with timers not running, we
         // duplicate the work here using the off-screen WebView.
         CookieSyncManager.getInstance().startSync();
-        mWebView.resumeTimers();
+        WebViewTimersControl.getInstance().onBrowserActivityResume(mWebView);
 
         mWebView.setWebViewClient(new WebViewClient() {
             @Override
@@ -93,15 +88,13 @@
             }
             @Override
             public void onPageFinished(WebView view, String url) {
-                saveLoginTime();
                 done();
             }
         });
     }
 
     private void saveLoginTime() {
-        Editor ed = PreferenceManager.
-                getDefaultSharedPreferences(mActivity).edit();
+        Editor ed = BrowserSettings.getInstance().getPreferences().edit();
         ed.putLong(PREF_AUTOLOGIN_TIME, System.currentTimeMillis());
         ed.apply();
     }
@@ -228,7 +221,7 @@
     public static void startLoginIfNeeded(Activity activity,
             Runnable runnable) {
         // Already logged in?
-        if (isLoggedIn(activity)) {
+        if (isLoggedIn()) {
             runnable.run();
             return;
         }
@@ -246,6 +239,7 @@
     }
 
     private void startLogin() {
+        saveLoginTime();
         mProgressDialog = ProgressDialog.show(mActivity,
                 mActivity.getString(R.string.pref_autologin_title),
                 mActivity.getString(R.string.pref_autologin_progress,
@@ -263,11 +257,10 @@
     }
 
     // Checks if we already did pre-login.
-    private static boolean isLoggedIn(Context ctx) {
+    private static boolean isLoggedIn() {
         // See if we last logged in less than a week ago.
-        long lastLogin = PreferenceManager.
-                getDefaultSharedPreferences(ctx).
-                getLong(PREF_AUTOLOGIN_TIME, -1);
+        long lastLogin = BrowserSettings.getInstance().getPreferences()
+                .getLong(PREF_AUTOLOGIN_TIME, -1);
         if (lastLogin == -1) {
             return false;
         }
@@ -281,16 +274,7 @@
             Log.d(LOGTAG, "Finished login attempt for " + mAccount.name);
             mActivity.runOnUiThread(mRunnable);
 
-            // Post a delayed message to dismiss the dialog in order to avoid a
-            // flash of the progress dialog.
-                mHandler.postDelayed(new Runnable() {
-                    @Override
-                    public void run() {
-                        if (mProgressDialog.isShowing()) {
-                            mProgressDialog.dismiss();
-                        }
-                    }
-                }, 2000);
+            mProgressDialog.dismiss();
             mRunnable = null;
             mActivity.runOnUiThread(new Runnable() {
                 @Override
diff --git a/src/com/android/browser/InstantSearchEngine.java b/src/com/android/browser/InstantSearchEngine.java
index e2e9c8a..4dd83fa 100644
--- a/src/com/android/browser/InstantSearchEngine.java
+++ b/src/com/android/browser/InstantSearchEngine.java
@@ -85,10 +85,10 @@
 
         mSearchBox.setQuery(query);
         mSearchBox.setVerbatim(true);
-        mSearchBox.onsubmit();
+        mSearchBox.onsubmit(null);
     }
 
-    private final class BrowserSearchboxListener implements SearchBox.SearchBoxListener {
+    private final class BrowserSearchboxListener extends SearchBox.SearchBoxListener {
         /*
          * The maximum number of out of order suggestions we accept
          * before giving up the wait.
@@ -199,7 +199,7 @@
             return false;
         }
 
-        final String currentUrl = current.getUrl();
+        final String currentUrl = mController.getCurrentTab().getUrl();
 
         if (currentUrl != null) {
             Uri uri = Uri.parse(currentUrl);
@@ -253,7 +253,7 @@
         }
 
         mSearchBox.setDimensions(0, 0, 0, mHeight);
-        mSearchBox.onresize();
+        mSearchBox.onresize(null);
 
         if (TextUtils.isEmpty(query)) {
             // To force the SRP to render an empty (no results) page.
@@ -262,7 +262,7 @@
             mSearchBox.setVerbatim(false);
         }
         mSearchBox.setQuery(query);
-        mSearchBox.onchange();
+        mSearchBox.onchange(null);
 
         // Don't bother waiting for suggestions for an empty query. We still
         // set the query so that the SRP clears itself.
@@ -327,7 +327,7 @@
             mHeight = rescaledHeight;
             if (mSearchBox != null) {
                 mSearchBox.setDimensions(0, 0, 0, rescaledHeight);
-                mSearchBox.onresize();
+                mSearchBox.onresize(null);
             }
         }
     }
diff --git a/src/com/android/browser/IntentHandler.java b/src/com/android/browser/IntentHandler.java
index 1a72a23..6ed5b72 100644
--- a/src/com/android/browser/IntentHandler.java
+++ b/src/com/android/browser/IntentHandler.java
@@ -88,7 +88,6 @@
             mController.bookmarksOrHistoryPicker(false);
             return;
         }
-        mController.removeComboView();
 
         // In case the SearchDialog is open.
         ((SearchManager) mActivity.getSystemService(Context.SEARCH_SERVICE))
diff --git a/src/com/android/browser/NavScreen.java b/src/com/android/browser/NavScreen.java
index a841989..ee20535 100644
--- a/src/com/android/browser/NavScreen.java
+++ b/src/com/android/browser/NavScreen.java
@@ -23,25 +23,22 @@
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
+import android.view.ViewConfiguration;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.webkit.WebView;
 import android.widget.BaseAdapter;
 import android.widget.FrameLayout;
-import android.widget.Gallery;
 import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
-import android.widget.ListPopupWindow;
+import android.widget.PopupMenu;
+import android.widget.PopupMenu.OnMenuItemClickListener;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
-import com.android.browser.view.Gallery.OnItemSelectedListener;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class NavScreen extends RelativeLayout implements OnClickListener {
+public class NavScreen extends RelativeLayout
+        implements OnClickListener, OnMenuItemClickListener {
 
     UiController mUiController;
     PhoneUi mUi;
@@ -61,12 +58,9 @@
     ImageButton mCloseTab;
 
     NavTabGallery mScroller;
-    float mTabAspect = 0.66f;
-    int mTabWidth;
-    int mTabHeight;
     TabAdapter mAdapter;
-    ListPopupWindow mPopup;
     int mOrientation;
+    boolean mNeedsMenu;
 
     public NavScreen(Activity activity, UiController ctl, PhoneUi ui) {
         super(activity);
@@ -82,32 +76,24 @@
     }
 
     protected void showMenu() {
-        Menu menu = mUi.getMenu();
-        menu.setGroupVisible(R.id.NAV_MENU, false);
-
-        MenuAdapter menuAdapter = new MenuAdapter(mContext);
-        menuAdapter.setMenu(menu);
-        ListPopupWindow popup = new ListPopupWindow(mContext);
-        popup.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NOT_NEEDED);
-        popup.setAdapter(menuAdapter);
-        popup.setModal(true);
-        popup.setAnchorView(mMore);
-        popup.setWidth((int) mContext.getResources().getDimension(
-                R.dimen.menu_width));
+        PopupMenu popup = new PopupMenu(mContext, mMore);
+        Menu menu = popup.getMenu();
+        popup.getMenuInflater().inflate(R.menu.browser, menu);
+        mUiController.updateMenuState(mScroller.getSelectedItem(), menu);
+        popup.setOnMenuItemClickListener(this);
         popup.show();
-        mPopup = popup;
+    }
+
+    @Override
+    public boolean onMenuItemClick(MenuItem item) {
+        mUi.hideNavScreen(false);
+        return mUiController.onOptionsItemSelected(item);
     }
 
     protected float getToolbarHeight() {
         return mActivity.getResources().getDimension(R.dimen.toolbar_height);
     }
 
-    protected void dismissMenu() {
-        if (mPopup != null) {
-            mPopup.dismiss();
-        }
-    }
-
     // for configuration changes
     @Override
     protected void onConfigurationChanged(Configuration newconfig) {
@@ -138,6 +124,10 @@
                 ? LinearLayout.HORIZONTAL : LinearLayout.VERTICAL);
         // update state for active tab
         mScroller.setSelection(mUiController.getTabControl().getTabPosition(mUi.getActiveTab()));
+        mNeedsMenu = !ViewConfiguration.get(getContext()).hasPermanentMenuKey();
+        if (!mNeedsMenu) {
+            mMore.setVisibility(View.GONE);
+        }
     }
 
     @Override
@@ -146,7 +136,7 @@
         if (web != null) {
             if (mForward == v) {
                 mUi.hideNavScreen(true);
-                web.goForward();
+                mTab.goForward();
             } else if (mRefresh == v) {
                 mUi.hideNavScreen(true);
                 web.reload();
@@ -173,8 +163,11 @@
 
     private void onCloseTab(Tab tab) {
         if (tab != null) {
-            switchToSelected();
-            mUiController.closeCurrentTab();
+            if (tab == mUiController.getCurrentTab()) {
+                mUiController.closeCurrentTab();
+            } else {
+                mUiController.closeTab(tab);
+            }
             mAdapter.notifyDataSetChanged();
         }
     }
@@ -213,25 +206,6 @@
         mUi.hideNavScreen(animate);
     }
 
-    class TabGallery extends Gallery {
-
-        public TabGallery(Context ctx) {
-            super(ctx);
-            setUnselectedAlpha(0.3f);
-        }
-
-       @Override
-       protected ViewGroup.LayoutParams generateDefaultLayoutParams() {
-           return new Gallery.LayoutParams(mTabWidth, mTabHeight);
-       }
-
-       @Override
-       protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
-           return generateDefaultLayoutParams();
-       }
-
-    }
-
     class TabAdapter extends BaseAdapter {
 
         Context context;
@@ -260,14 +234,15 @@
         public View getView(final int position, View convertView, ViewGroup parent) {
             final NavTabView tabview = new NavTabView(mActivity);
             final Tab tab = getItem(position);
-            final BrowserWebView web = (BrowserWebView) tab.getWebView();
             tabview.setWebView(mUi, tab);
             tabview.setOnClickListener(new OnClickListener() {
                 @Override
                 public void onClick(View v) {
                     if (tabview.isClose(v)) {
-                        onCloseTab((Tab) (mScroller.getSelectedItem()));
+                        onCloseTab(tab);
                     } else if (tabview.isTitle(v)) {
+                        mScroller.setSelection(position);
+                        switchToSelected();
                         mUi.getTitleBar().setSkipTitleBarAnimations(true);
                         close(false);
                         mUi.editUrl(false);
@@ -275,7 +250,6 @@
                     } else if (tabview.isWebView(v)) {
                         mScroller.setSelection(position);
                         close();
-
                     }
                 }
             });
@@ -284,64 +258,4 @@
 
     }
 
-    private class MenuAdapter extends BaseAdapter implements OnClickListener {
-
-        List<MenuItem> mItems;
-        LayoutInflater mInflater;
-
-        public MenuAdapter(Context ctx) {
-            mInflater = LayoutInflater.from(ctx);
-            mItems = new ArrayList<MenuItem>();
-        }
-
-        public void setMenu(Menu menu) {
-            mItems.clear();
-            for (int i = 0; i < menu.size(); i++) {
-                MenuItem item = menu.getItem(i);
-                if (item.isEnabled() && item.isVisible()) {
-                    mItems.add(item);
-                }
-            }
-            notifyDataSetChanged();
-        }
-
-        @Override
-        public int getCount() {
-            return mItems.size();
-        }
-
-        @Override
-        public MenuItem getItem(int position) {
-            return mItems.get(position);
-        }
-
-        @Override
-        public long getItemId(int position) {
-            return position;
-        }
-
-        @Override
-        public void onClick(View v) {
-            if (v.getTag() != null) {
-                dismissMenu();
-                mActivity.closeOptionsMenu();
-                mUi.hideNavScreen(false);
-                mUiController.onOptionsItemSelected((MenuItem) v.getTag());
-            }
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            final MenuItem item = mItems.get(position);
-            View view = mInflater.inflate(R.layout.qc_menu_item, null);
-            TextView label = (TextView) view.findViewById(R.id.title);
-            label.setText(item.getTitle());
-            label.setTag(item);
-            label.setOnClickListener(this);
-            return label;
-        }
-
-    }
-
-
 }
diff --git a/src/com/android/browser/NavTabView.java b/src/com/android/browser/NavTabView.java
index 7b547b8..23ad2f1 100644
--- a/src/com/android/browser/NavTabView.java
+++ b/src/com/android/browser/NavTabView.java
@@ -17,16 +17,10 @@
 package com.android.browser;
 
 import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Canvas;
-import android.graphics.drawable.Drawable;
+import android.graphics.Bitmap;
 import android.util.AttributeSet;
-import android.util.TypedValue;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
@@ -34,12 +28,10 @@
 public class NavTabView extends LinearLayout {
 
     private Tab mTab;
-    private BrowserWebView mWebView;
-    private WebProxyView mProxy;
     private ImageView mClose;
-    private FrameLayout mContainer;
     private TextView mTitle;
     private View mTitleBar;
+    private ImageView mImage;
     private OnClickListener mClickListener;
     private boolean mHighlighted;
 
@@ -60,10 +52,10 @@
 
     private void init() {
         LayoutInflater.from(mContext).inflate(R.layout.nav_tab_view, this);
-        mContainer = (FrameLayout) findViewById(R.id.tab_view);
         mClose = (ImageView) findViewById(R.id.closetab);
         mTitle = (TextView) findViewById(R.id.title);
         mTitleBar = findViewById(R.id.titlebar);
+        mImage = (ImageView) findViewById(R.id.tab_view);
     }
 
     protected boolean isClose(View v) {
@@ -75,7 +67,7 @@
     }
 
     protected boolean isWebView(View v) {
-        return v == mProxy;
+        return v == mImage;
     }
 
     protected void setHighlighted(boolean highlighted) {
@@ -103,12 +95,9 @@
     protected void setWebView(PhoneUi ui, Tab tab) {
         mTab = tab;
         setTitle();
-        BrowserWebView web = (BrowserWebView) tab.getWebView();
-        if (web != null) {
-            mWebView = web;
-            removeFromParent(mWebView);
-            mProxy = new WebProxyView(mContext, mWebView);
-            mContainer.addView(mProxy, 0);
+        Bitmap image = tab.getScreenshot();
+        if (image != null) {
+            mImage.setImageBitmap(image);
         }
     }
 
@@ -121,52 +110,9 @@
         mClickListener = listener;
         mTitleBar.setOnClickListener(mClickListener);
         mClose.setOnClickListener(mClickListener);
-        if (mProxy != null) {
-            mProxy.setOnClickListener(mClickListener);
+        if (mImage != null) {
+            mImage.setOnClickListener(mClickListener);
         }
     }
 
-    @Override
-    public void onDetachedFromWindow() {
-        if (mWebView != null) {
-            mWebView.setProxyView(null);
-        }
-    }
-
-    @Override
-    public void onAttachedToWindow() {
-        if (mWebView != null) {
-            mWebView.invalidate();
-        }
-    }
-
-    private static void removeFromParent(View v) {
-        if (v.getParent() != null) {
-            ((ViewGroup) v.getParent()).removeView(v);
-        }
-    }
-
-    static class WebProxyView extends View {
-
-        private BrowserWebView mWeb;
-
-        public WebProxyView(Context context, BrowserWebView web) {
-            super(context);
-            setWillNotDraw(false);
-            mWeb = web;
-            mWeb.setProxyView(this);
-
-        }
-
-        public void onDraw(Canvas c) {
-            float scale = 0.7f;
-            int sx = mWeb.getScrollX();
-            int sy = mWeb.getScrollY();
-            c.scale(scale, scale);
-            c.translate(-sx, -sy);
-            mWeb.onDraw(c);
-        }
-
-    }
-
 }
diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java
new file mode 100644
index 0000000..a059352
--- /dev/null
+++ b/src/com/android/browser/NavigationBarBase.java
@@ -0,0 +1,333 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.browser;
+
+import android.app.SearchManager;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.speech.RecognizerResultsIntent;
+import android.util.AttributeSet;
+import android.view.KeyEvent;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.View.OnFocusChangeListener;
+import android.webkit.WebView;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.PopupMenu;
+import android.widget.PopupMenu.OnMenuItemClickListener;
+
+import com.android.browser.UI.DropdownChangeListener;
+import com.android.browser.UrlInputView.UrlInputListener;
+import com.android.browser.autocomplete.SuggestedTextController.TextChangeWatcher;
+
+import java.util.List;
+
+public class NavigationBarBase extends LinearLayout implements OnClickListener,
+        OnMenuItemClickListener, UrlInputListener, OnFocusChangeListener,
+        TextChangeWatcher {
+
+    protected BaseUi mBaseUi;
+    protected TitleBar mTitleBar;
+    protected UiController mUiController;
+    protected UrlInputView mUrlInput;
+    protected boolean mInVoiceMode = false;
+
+    private ImageView mFavicon;
+    private ImageView mLockIcon;
+    private View mUaSwitcher;
+
+    public NavigationBarBase(Context context) {
+        super(context);
+    }
+
+    public NavigationBarBase(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public NavigationBarBase(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+        mLockIcon = (ImageView) findViewById(R.id.lock);
+        mFavicon = (ImageView) findViewById(R.id.favicon);
+        mUrlInput = (UrlInputView) findViewById(R.id.url);
+        mUrlInput.setUrlInputListener(this);
+        mUrlInput.setController(mUiController);
+        mUrlInput.setOnFocusChangeListener(this);
+        mUrlInput.setSelectAllOnFocus(true);
+        mUrlInput.addQueryTextWatcher(this);
+    }
+
+    public void setTitleBar(TitleBar titleBar) {
+        mTitleBar = titleBar;
+        mBaseUi = mTitleBar.getUi();
+        mUiController = mTitleBar.getUiController();
+    }
+
+    public void setLock(Drawable d) {
+        if (mLockIcon == null) return;
+        if (d == null) {
+            mLockIcon.setVisibility(View.GONE);
+        } else {
+            mLockIcon.setImageDrawable(d);
+            mLockIcon.setVisibility(View.VISIBLE);
+        }
+    }
+
+    public void setFavicon(Bitmap icon) {
+        if (mFavicon == null) return;
+        mFavicon.setImageDrawable(mBaseUi.getFaviconDrawable(icon));
+    }
+
+    public void setUaSwitcher(View v) {
+        if (mUaSwitcher != null) {
+            mUaSwitcher.setOnClickListener(null);
+        }
+        mUaSwitcher = v;
+        mUaSwitcher.setOnClickListener(this);
+    }
+
+    @Override
+    public void onClick(View v) {
+        if (mUaSwitcher == v) {
+            BrowserSettings settings = BrowserSettings.getInstance();
+            WebView web = mTitleBar.getCurrentWebView();
+            if (web == null) return;
+            boolean desktop = settings.hasDesktopUseragent(web);
+            PopupMenu popup = new PopupMenu(mContext, mUaSwitcher);
+            Menu menu = popup.getMenu();
+            popup.getMenuInflater().inflate(R.menu.ua_switcher, menu);
+            menu.findItem(R.id.ua_mobile_menu_id).setChecked(!desktop);
+            menu.findItem(R.id.ua_desktop_menu_id).setChecked(desktop);
+            popup.setOnMenuItemClickListener(this);
+            popup.show();
+        }
+    }
+
+    @Override
+    public boolean onMenuItemClick(MenuItem item) {
+        BrowserSettings settings = BrowserSettings.getInstance();
+        WebView web = mTitleBar.getCurrentWebView();
+        if (web == null) return false;
+        boolean desktop = settings.hasDesktopUseragent(web);
+        switch (item.getItemId()) {
+        case R.id.ua_mobile_menu_id:
+            if (desktop) {
+                settings.toggleDesktopUseragent(web);
+                web.loadUrl(web.getOriginalUrl());
+            }
+            return true;
+        case R.id.ua_desktop_menu_id:
+            if (!desktop) {
+                settings.toggleDesktopUseragent(web);
+                web.loadUrl(web.getOriginalUrl());
+            }
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public void onFocusChange(View view, boolean hasFocus) {
+        // if losing focus and not in touch mode, leave as is
+        if (hasFocus || view.isInTouchMode() || mUrlInput.needsUpdate()) {
+            setFocusState(hasFocus);
+        }
+        if (hasFocus) {
+            mBaseUi.showTitleBar();
+            mUrlInput.forceIme();
+            if (mInVoiceMode) {
+                mUrlInput.forceFilter();
+            }
+        } else if (!mUrlInput.needsUpdate()) {
+            mUrlInput.dismissDropDown();
+            mUrlInput.hideIME();
+            if (mUrlInput.getText().length() == 0) {
+                Tab currentTab = mUiController.getTabControl().getCurrentTab();
+                if (currentTab != null) {
+                    mUrlInput.setText(currentTab.getUrl(), false);
+                }
+            }
+            mBaseUi.suggestHideTitleBar();
+        }
+        mUrlInput.clearNeedsUpdate();
+    }
+
+    protected void setFocusState(boolean focus) {
+    }
+
+    protected void setSearchMode(boolean voiceSearchEnabled) {}
+
+    public boolean isEditingUrl() {
+        return mUrlInput.hasFocus();
+    }
+
+    void stopEditingUrl() {
+        mUrlInput.clearFocus();
+    }
+
+    void setDisplayTitle(String title) {
+        if (!isEditingUrl()) {
+            mUrlInput.setText(title, false);
+        }
+    }
+
+    // UrlInput text watcher
+
+    @Override
+    public void onTextChanged(String newText) {
+        if (mUrlInput.hasFocus()) {
+            // clear voice mode when user types
+            setInVoiceMode(false, null);
+        }
+    }
+
+    // voicesearch
+
+    public void setInVoiceMode(boolean voicemode, List<String> voiceResults) {
+        mInVoiceMode = voicemode;
+        mUrlInput.setVoiceResults(voiceResults);
+    }
+
+    void setIncognitoMode(boolean incognito) {
+        mUrlInput.setIncognitoMode(incognito);
+    }
+
+    void clearCompletions() {
+        mUrlInput.setSuggestedText(null);
+    }
+
+ // UrlInputListener implementation
+
+    /**
+     * callback from suggestion dropdown
+     * user selected a suggestion
+     */
+    @Override
+    public void onAction(String text, String extra, String source) {
+        mUiController.getCurrentTopWebView().requestFocus();
+        if (UrlInputView.TYPED.equals(source)) {
+            String url = UrlUtils.smartUrlFilter(text, false);
+            Tab t = mBaseUi.getActiveTab();
+            // Only shortcut javascript URIs for now, as there is special
+            // logic in UrlHandler for other schemas
+            if (url != null && t != null && url.startsWith("javascript:")) {
+                mUiController.loadUrl(t, url);
+                setDisplayTitle(text);
+                return;
+            }
+        }
+        Intent i = new Intent();
+        String action = null;
+        if (UrlInputView.VOICE.equals(source)) {
+            action = RecognizerResultsIntent.ACTION_VOICE_SEARCH_RESULTS;
+            source = null;
+        } else {
+            action = Intent.ACTION_SEARCH;
+        }
+        i.setAction(action);
+        i.putExtra(SearchManager.QUERY, text);
+        if (extra != null) {
+            i.putExtra(SearchManager.EXTRA_DATA_KEY, extra);
+        }
+        if (source != null) {
+            Bundle appData = new Bundle();
+            appData.putString(com.android.common.Search.SOURCE, source);
+            i.putExtra(SearchManager.APP_DATA, appData);
+        }
+        mUiController.handleNewIntent(i);
+        setDisplayTitle(text);
+    }
+
+    @Override
+    public void onDismiss() {
+        final Tab currentTab = mBaseUi.getActiveTab();
+        mBaseUi.hideTitleBar();
+        post(new Runnable() {
+            public void run() {
+                clearFocus();
+                if ((currentTab != null) && !mInVoiceMode) {
+                    setDisplayTitle(currentTab.getUrl());
+                }
+            }
+        });
+    }
+
+    /**
+     * callback from the suggestion dropdown
+     * copy text to input field and stay in edit mode
+     */
+    @Override
+    public void onCopySuggestion(String text) {
+        mUrlInput.setText(text, true);
+        if (text != null) {
+            mUrlInput.setSelection(text.length());
+        }
+    }
+
+    public void setCurrentUrlIsBookmark(boolean isBookmark) {
+    }
+
+    @Override
+    public boolean dispatchKeyEventPreIme(KeyEvent evt) {
+        if (evt.getKeyCode() == KeyEvent.KEYCODE_BACK) {
+            // catch back key in order to do slightly more cleanup than usual
+            mUrlInput.clearFocus();
+            return true;
+        }
+        return super.dispatchKeyEventPreIme(evt);
+    }
+
+    void registerDropdownChangeListener(DropdownChangeListener d) {
+        mUrlInput.registerDropdownChangeListener(d);
+    }
+
+    /**
+     * called from the Ui when the user wants to edit
+     * @param clearInput clear the input field
+     */
+    void startEditingUrl(boolean clearInput) {
+        // editing takes preference of progress
+        setVisibility(View.VISIBLE);
+        if (mTitleBar.useQuickControls()) {
+            mTitleBar.getProgressView().setVisibility(View.GONE);
+        }
+        if (!mUrlInput.hasFocus()) {
+            mUrlInput.requestFocus();
+        }
+        if (clearInput) {
+            mUrlInput.setText("");
+        } else if (mInVoiceMode) {
+            mUrlInput.showDropDown();
+        }
+    }
+
+    public void onProgressStarted() {
+    }
+
+    public void onProgressStopped() {
+    }
+
+}
diff --git a/src/com/android/browser/NavigationBarPhone.java b/src/com/android/browser/NavigationBarPhone.java
new file mode 100644
index 0000000..400b695
--- /dev/null
+++ b/src/com/android/browser/NavigationBarPhone.java
@@ -0,0 +1,231 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.browser;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.view.ContextMenu;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewConfiguration;
+import android.webkit.WebView;
+import android.widget.ImageView;
+import android.widget.PopupMenu;
+import android.widget.PopupMenu.OnDismissListener;
+
+import com.android.browser.UrlInputView.StateListener;
+
+public class NavigationBarPhone extends NavigationBarBase implements
+        StateListener, OnDismissListener {
+
+    private ImageView mStopButton;
+    private ImageView mVoiceButton;
+    private Drawable mStopDrawable;
+    private Drawable mRefreshDrawable;
+    private View mTabSwitcher;
+    private View mComboIcon;
+    private View mTitleContainer;
+    private View mMore;
+    private Drawable mTextfieldBgDrawable;
+    private PopupMenu mPopupMenu;
+    private boolean mMenuShowing;
+    private boolean mNeedsMenu;
+
+    public NavigationBarPhone(Context context) {
+        super(context);
+    }
+
+    public NavigationBarPhone(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public NavigationBarPhone(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+        mStopButton = (ImageView) findViewById(R.id.stop);
+        mStopButton.setOnClickListener(this);
+        mVoiceButton = (ImageView) findViewById(R.id.voice);
+        mVoiceButton.setOnClickListener(this);
+        mTabSwitcher = findViewById(R.id.tab_switcher);
+        mTabSwitcher.setOnClickListener(this);
+        mMore = findViewById(R.id.more);
+        mMore.setOnClickListener(this);
+        mComboIcon = findViewById(R.id.iconcombo);
+        mTitleContainer = findViewById(R.id.title_bg);
+        setFocusState(false);
+        Resources res = getContext().getResources();
+        mStopDrawable = res.getDrawable(R.drawable.ic_stop_holo_dark);
+        mRefreshDrawable = res.getDrawable(R.drawable.ic_refresh_holo_dark);
+        mTextfieldBgDrawable = res.getDrawable(R.drawable.textfield_active_holo_dark);
+        setUaSwitcher(mComboIcon);
+        mUrlInput.setContainer(this);
+        mUrlInput.setStateListener(this);
+        mNeedsMenu = !ViewConfiguration.get(getContext()).hasPermanentMenuKey();
+    }
+
+    @Override
+    public void createContextMenu(ContextMenu menu) {
+        Activity activity = mBaseUi.getActivity();
+        MenuInflater inflater = activity.getMenuInflater();
+        inflater.inflate(R.menu.title_context, menu);
+        activity.onCreateContextMenu(menu, this, null);
+    }
+
+    @Override
+    protected void setSearchMode(boolean voiceSearchEnabled) {
+        boolean showvoicebutton = voiceSearchEnabled &&
+                mUiController.supportsVoiceSearch();
+        mVoiceButton.setVisibility(showvoicebutton ? View.VISIBLE :
+                View.GONE);
+    }
+
+    @Override
+    public void onProgressStarted() {
+        super.onProgressStarted();
+        if (mStopButton.getDrawable() != mStopDrawable) {
+            mStopButton.setImageDrawable(mStopDrawable);
+            if (mStopButton.getVisibility() != View.VISIBLE) {
+                mComboIcon.setVisibility(View.GONE);
+                mStopButton.setVisibility(View.VISIBLE);
+            }
+        }
+    }
+
+    @Override
+    public void onProgressStopped() {
+        super.onProgressStopped();
+        mStopButton.setImageDrawable(mRefreshDrawable);
+        if (!isEditingUrl()) {
+            mComboIcon.setVisibility(View.VISIBLE);
+        }
+        onStateChanged(mUrlInput.getState());
+    }
+
+    /**
+     * Update the text displayed in the title bar.
+     * @param title String to display.  If null, the new tab string will be
+     *      shown.
+     */
+    @Override
+    void setDisplayTitle(String title) {
+        if (!isEditingUrl()) {
+            if (title == null) {
+                mUrlInput.setText(R.string.new_tab);
+            } else {
+                mUrlInput.setText(title);
+            }
+            mUrlInput.setSelection(0);
+        }
+    }
+
+    @Override
+    public void onClick(View v) {
+        if (v == mStopButton) {
+            if (mTitleBar.isInLoad()) {
+                mUiController.stopLoading();
+            } else {
+                WebView web = mBaseUi.getWebView();
+                if (web != null) {
+                    stopEditingUrl();
+                    web.reload();
+                }
+            }
+        } else if (v == mVoiceButton) {
+            mUiController.startVoiceSearch();
+        } else if (v == mTabSwitcher) {
+            ((PhoneUi) mBaseUi).toggleNavScreen();
+        } else if (mMore == v) {
+            showMenu(mMore);
+        } else {
+            super.onClick(v);
+        }
+    }
+
+    public boolean isMenuShowing() {
+        return mMenuShowing;
+    }
+
+    void showMenu(View anchor) {
+        mMenuShowing = true;
+        mPopupMenu = new PopupMenu(mContext, anchor);
+        Menu menu = mPopupMenu.getMenu();
+        mPopupMenu.getMenuInflater().inflate(R.menu.browser, menu);
+        mUiController.updateMenuState(mBaseUi.getActiveTab(), menu);
+        mPopupMenu.setOnMenuItemClickListener(this);
+        mPopupMenu.setOnDismissListener(this);
+        mPopupMenu.show();
+    }
+
+    @Override
+    public void onDismiss(PopupMenu menu) {
+        onMenuHidden();
+    }
+
+    @Override
+    public boolean onMenuItemClick(MenuItem item) {
+        onMenuHidden();
+        boolean res = mUiController.onOptionsItemSelected(item);
+        if (!res) {
+            return super.onMenuItemClick(item);
+        }
+        return res;
+    }
+
+    private void onMenuHidden() {
+        mMenuShowing = false;
+        mPopupMenu = null;
+        mBaseUi.showTitleBarForDuration();
+    }
+
+    @Override
+    public void onStateChanged(int state) {
+        switch(state) {
+        case StateListener.STATE_NORMAL:
+            mComboIcon.setVisibility(View.VISIBLE);
+            mStopButton.setVisibility(View.GONE);
+            setSearchMode(mInVoiceMode);
+            mTabSwitcher.setVisibility(View.VISIBLE);
+            mTitleContainer.setBackgroundDrawable(null);
+            mMore.setVisibility(mNeedsMenu ? View.VISIBLE : View.GONE);
+            break;
+        case StateListener.STATE_HIGHLIGHTED:
+            mComboIcon.setVisibility(View.GONE);
+            mStopButton.setVisibility(View.VISIBLE);
+            setSearchMode(true);
+            mTabSwitcher.setVisibility(View.GONE);
+            mMore.setVisibility(View.GONE);
+            mTitleContainer.setBackgroundDrawable(mTextfieldBgDrawable);
+            break;
+        case StateListener.STATE_EDITED:
+            mComboIcon.setVisibility(View.GONE);
+            mStopButton.setVisibility(View.GONE);
+            setSearchMode(false);
+            mTabSwitcher.setVisibility(View.GONE);
+            mMore.setVisibility(View.GONE);
+            mTitleContainer.setBackgroundDrawable(mTextfieldBgDrawable);
+            break;
+        }
+    }
+}
diff --git a/src/com/android/browser/TitleBarXLarge.java b/src/com/android/browser/NavigationBarTablet.java
similarity index 62%
rename from src/com/android/browser/TitleBarXLarge.java
rename to src/com/android/browser/NavigationBarTablet.java
index 6aed86c..9cb8ff2 100644
--- a/src/com/android/browser/TitleBarXLarge.java
+++ b/src/com/android/browser/NavigationBarTablet.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 The Android Open Source Project
+ * Copyright (C) 2011 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,38 +13,25 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package com.android.browser;
 
-import com.android.browser.autocomplete.SuggestedTextController.TextChangeWatcher;
-
-import android.app.Activity;
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
 import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
+import android.content.res.Configuration;
 import android.content.res.Resources;
-import android.graphics.Bitmap;
 import android.graphics.drawable.Drawable;
-import android.preference.PreferenceManager;
 import android.text.TextUtils;
+import android.util.AttributeSet;
 import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.View.OnFocusChangeListener;
-import android.webkit.WebView;
-import android.widget.FrameLayout;
 import android.widget.ImageButton;
 import android.widget.ImageView;
 
 import java.util.List;
 
-/**
- * tabbed title bar for xlarge screen browser
- */
-public class TitleBarXLarge extends TitleBarBase
-        implements OnClickListener, OnFocusChangeListener, TextChangeWatcher,
-        DeviceAccountLogin.AutoLoginCallback {
-
-    private XLargeUi mUi;
+public class NavigationBarTablet extends NavigationBarBase {
 
     private Drawable mStopDrawable;
     private Drawable mReloadDrawable;
@@ -60,37 +47,50 @@
     private View mAllButton;
     private View mClearButton;
     private ImageView mVoiceSearch;
+    private View mNavButtons;
     private Drawable mFocusDrawable;
     private Drawable mUnfocusDrawable;
+    private boolean mHideNavButtons;
 
-    public TitleBarXLarge(Activity activity, UiController controller,
-            XLargeUi ui, FrameLayout parent) {
-        super(activity, controller, ui, parent);
-        mUi = ui;
-        Resources resources = activity.getResources();
+    public NavigationBarTablet(Context context) {
+        super(context);
+        init(context);
+    }
+
+    public NavigationBarTablet(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init(context);
+    }
+
+    public NavigationBarTablet(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+        init(context);
+    }
+
+    private void init(Context context) {
+        Resources resources = context.getResources();
         mStopDrawable = resources.getDrawable(R.drawable.ic_stop_holo_dark);
         mReloadDrawable = resources.getDrawable(R.drawable.ic_refresh_holo_dark);
         mFocusDrawable = resources.getDrawable(
                 R.drawable.textfield_active_holo_dark);
         mUnfocusDrawable = resources.getDrawable(
                 R.drawable.textfield_default_holo_dark);
-        mInVoiceMode = false;
-        initLayout(activity, R.layout.url_bar);
+        mHideNavButtons = resources.getBoolean(R.bool.hide_nav_buttons);
     }
 
     @Override
-    protected void initLayout(Context context, int layoutId) {
-        super.initLayout(context, layoutId);
+    protected void onFinishInflate() {
+        super.onFinishInflate();
         mAllButton = findViewById(R.id.all_btn);
         // TODO: Change enabled states based on whether you can go
         // back/forward.  Probably should be done inside onPageStarted.
+        mNavButtons = findViewById(R.id.navbuttons);
         mBackButton = (ImageButton) findViewById(R.id.back);
         mForwardButton = (ImageButton) findViewById(R.id.forward);
         mUrlIcon = (ImageView) findViewById(R.id.url_icon);
         mStar = (ImageView) findViewById(R.id.star);
         mStopButton = (ImageView) findViewById(R.id.stop);
         mSearchButton = (ImageView) findViewById(R.id.search);
-        mLockIcon = (ImageView) findViewById(R.id.lock);
         mGoButton = findViewById(R.id.go);
         mClearButton = findViewById(R.id.clear);
         mVoiceSearch = (ImageView) findViewById(R.id.voicesearch);
@@ -106,16 +106,38 @@
         mVoiceSearch.setOnClickListener(this);
         setUaSwitcher(mUrlIcon);
         mUrlInput.setContainer(mUrlContainer);
+    }
+
+    public void onConfigurationChanged(Configuration config) {
+        super.onConfigurationChanged(config);
+        Resources res = mContext.getResources();
+        mHideNavButtons = res.getBoolean(R.bool.hide_nav_buttons);
+        if (mUrlInput.hasFocus()) {
+            if (mHideNavButtons && (mNavButtons.getVisibility() == View.VISIBLE)) {
+                int aw = mNavButtons.getMeasuredWidth();
+                mNavButtons.setVisibility(View.GONE);
+                mNavButtons.setAlpha(0f);
+                mNavButtons.setTranslationX(-aw);
+            } else if (!mHideNavButtons && (mNavButtons.getVisibility() == View.GONE)) {
+                mNavButtons.setVisibility(View.VISIBLE);
+                mNavButtons.setAlpha(1f);
+                mNavButtons.setTranslationX(0);
+            }
+        }
+    }
+
+    @Override
+    public void setTitleBar(TitleBar titleBar) {
+        super.setTitleBar(titleBar);
         setFocusState(false);
     }
 
     void updateNavigationState(Tab tab) {
-        WebView web = tab.getWebView();
-        if (web != null) {
-            mBackButton.setImageResource(web.canGoBack()
+        if (tab != null) {
+            mBackButton.setImageResource(tab.canGoBack()
                     ? R.drawable.ic_back_holo_dark
                     : R.drawable.ic_back_disabled_holo_dark);
-            mForwardButton.setImageResource(web.canGoForward()
+            mForwardButton.setImageResource(tab.canGoForward()
                     ? R.drawable.ic_forward_holo_dark
                     : R.drawable.ic_forward_disabled_holo_dark);
         }
@@ -127,19 +149,18 @@
         mStar.setActivated(isBookmark);
     }
 
-
     @Override
     public void onClick(View v) {
         if (mBackButton == v) {
-            mUiController.getCurrentTopWebView().goBack();
+            mUiController.getCurrentTab().goBack();
         } else if (mForwardButton == v) {
-            mUiController.getCurrentTopWebView().goForward();
+            mUiController.getCurrentTab().goForward();
         } else if (mStar == v) {
-            mUiController.bookmarkCurrentPage(true);
+            getContext().startActivity(mUiController.createBookmarkCurrentPageIntent(true));
         } else if (mAllButton == v) {
             mUiController.bookmarksOrHistoryPicker(false);
         } else if (mSearchButton == v) {
-            mUi.editUrl(true);
+            mBaseUi.editUrl(true);
         } else if (mStopButton == v) {
             stopOrRefresh();
         } else if (mGoButton == v) {
@@ -156,9 +177,6 @@
         }
     }
 
-    @Override
-    void setFavicon(Bitmap icon) { }
-
     private void clearOrClose() {
         if (TextUtils.isEmpty(mUrlInput.getUserText())) {
             // close
@@ -179,17 +197,23 @@
     protected void setFocusState(boolean focus) {
         super.setFocusState(focus);
         if (focus) {
+            if (mHideNavButtons) {
+                hideNavButtons();
+            }
             mSearchButton.setVisibility(View.GONE);
             mStar.setVisibility(View.GONE);
             mClearButton.setVisibility(View.VISIBLE);
             mUrlIcon.setImageResource(R.drawable.ic_search_holo_dark);
             updateSearchMode(false);
         } else {
+            if (mHideNavButtons) {
+                showNavButtons();
+            }
             mGoButton.setVisibility(View.GONE);
             mVoiceSearch.setVisibility(View.GONE);
             mStar.setVisibility(View.VISIBLE);
             mClearButton.setVisibility(View.GONE);
-            if (mUseQuickControls) {
+            if (mTitleBar.useQuickControls()) {
                 mSearchButton.setVisibility(View.GONE);
             } else {
                 mSearchButton.setVisibility(View.VISIBLE);
@@ -201,7 +225,7 @@
     }
 
     private void stopOrRefresh() {
-        if (mInLoad) {
+        if (mTitleBar.isInLoad()) {
             mUiController.stopLoading();
         } else {
             mUiController.getCurrentTopWebView().reload();
@@ -209,12 +233,12 @@
     }
 
     @Override
-    protected void onProgressStarted() {
+    public void onProgressStarted() {
         mStopButton.setImageDrawable(mStopDrawable);
     }
 
     @Override
-    protected void onProgressStopped() {
+    public void onProgressStopped() {
         mStopButton.setImageDrawable(mReloadDrawable);
     }
 
@@ -240,12 +264,34 @@
         }
     }
 
-    @Override
-    public View focusSearch(View focused, int dir) {
-        if (FOCUS_DOWN == dir && hasFocus()) {
-            return getCurrentWebView();
-        }
-        return super.focusSearch(focused, dir);
+    private void hideNavButtons() {
+        int awidth = mNavButtons.getMeasuredWidth();
+        Animator anim1 = ObjectAnimator.ofFloat(mNavButtons, View.TRANSLATION_X, 0, - awidth);
+        Animator anim2 = ObjectAnimator.ofInt(mUrlContainer, "left", mUrlContainer.getLeft(),
+                mUrlContainer.getPaddingLeft());
+        Animator anim3 = ObjectAnimator.ofFloat(mNavButtons, View.ALPHA, 1f, 0f);
+        AnimatorSet combo = new AnimatorSet();
+        combo.playTogether(anim1, anim2, anim3);
+        combo.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                mNavButtons.setVisibility(View.GONE);
+            }
+        });
+        combo.setDuration(150);
+        combo.start();
+    }
+
+    private void showNavButtons() {
+        int awidth = mNavButtons.getMeasuredWidth();
+        Animator anim1 = ObjectAnimator.ofFloat(mNavButtons, View.TRANSLATION_X, -awidth, 0);
+        Animator anim2 = ObjectAnimator.ofInt(mUrlContainer, "left", 0, awidth);
+        Animator anim3 = ObjectAnimator.ofFloat(mNavButtons, View.ALPHA, 0f, 1f);
+        AnimatorSet combo = new AnimatorSet();
+        combo.playTogether(anim1, anim2, anim3);
+        mNavButtons.setVisibility(View.VISIBLE);
+        combo.setDuration(150);
+        combo.start();
     }
 
 }
diff --git a/src/com/android/browser/NfcHandler.java b/src/com/android/browser/NfcHandler.java
index bc19950..a8e11d3 100644
--- a/src/com/android/browser/NfcHandler.java
+++ b/src/com/android/browser/NfcHandler.java
@@ -21,6 +21,10 @@
 import android.nfc.NdefRecord;
 import android.nfc.NfcAdapter;
 import android.os.AsyncTask;
+import android.os.Handler;
+import android.os.Message;
+
+import java.util.concurrent.CountDownLatch;
 
 /** This class implements sharing the URL of the currently
   * shown browser page over NFC. Sharing is only active
@@ -31,42 +35,26 @@
     private NfcAdapter mNfcAdapter;
     private Activity mActivity;
     private Controller mController;
+    private Handler mHandler;
+    private Tab mCurrentTab;
+    private boolean mIsPrivate;
+    private CountDownLatch mPrivateBrowsingSignal;
 
-    /** We need an async task to check whether the tab is private
-      * on the UI thread.
-      */
-    private class CreateMessageTask extends AsyncTask<Void, Void, NdefMessage> {
-        private boolean mIsPrivate = false;
-        private Tab mCurrentTab;
-
-        @Override
-        protected void onPreExecute() {
-            mCurrentTab = mController.getCurrentTab();
-            if ((mCurrentTab != null) && (mCurrentTab.getWebView() != null)) {
-                mIsPrivate = mCurrentTab.getWebView().isPrivateBrowsingEnabled();
-            }
-        }
-
-        @Override
-        protected NdefMessage doInBackground(Void... params) {
-            if ((mCurrentTab == null) || mIsPrivate) {
-                return null;
-            }
-            String currentUrl = mCurrentTab.getUrl();
-            if (currentUrl != null) {
-                NdefRecord record = NdefRecord.createUri(currentUrl);
-                NdefMessage msg = new NdefMessage(new NdefRecord[] { record });
-                return msg;
-            } else {
-                return null;
-            }
-        }
-    }
+    private static final int GET_PRIVATE_BROWSING_STATE_MSG = 100;
 
     public NfcHandler(Activity browser, Controller controller) {
         mActivity = browser;
         mController = controller;
         mNfcAdapter = NfcAdapter.getDefaultAdapter(mActivity);
+        mHandler = new Handler() {
+            @Override
+            public void handleMessage(Message msg) {
+                if (msg.what == GET_PRIVATE_BROWSING_STATE_MSG) {
+                    mIsPrivate = mCurrentTab.getWebView().isPrivateBrowsingEnabled();
+                    mPrivateBrowsingSignal.countDown();
+                }
+            }
+        };
     }
 
     void onPause() {
@@ -83,11 +71,29 @@
 
     @Override
     public NdefMessage createMessage() {
-        CreateMessageTask task = new CreateMessageTask();
-        task.execute();
-        try {
-            return task.get();
-        } catch (Exception e) {
+        mCurrentTab = mController.getCurrentTab();
+        if ((mCurrentTab != null) && (mCurrentTab.getWebView() != null)) {
+            // We can only read the WebView state on the UI thread, so post
+            // a message and wait.
+            mPrivateBrowsingSignal = new CountDownLatch(1);
+            mHandler.sendMessage(mHandler.obtainMessage(GET_PRIVATE_BROWSING_STATE_MSG));
+            try {
+                mPrivateBrowsingSignal.await();
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+
+        if ((mCurrentTab == null) || mIsPrivate) {
+            return null;
+        }
+
+        String currentUrl = mCurrentTab.getUrl();
+        if (currentUrl != null) {
+            NdefRecord record = NdefRecord.createUri(currentUrl);
+            NdefMessage msg = new NdefMessage(new NdefRecord[] { record });
+            return msg;
+        } else {
             return null;
         }
     }
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index 0c236af..28db6f0 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -23,10 +23,13 @@
 import android.view.Gravity;
 import android.view.KeyEvent;
 import android.view.Menu;
+import android.view.MenuItem;
 import android.view.View;
 import android.webkit.WebView;
 import android.widget.FrameLayout;
 
+import com.android.browser.UrlInputView.StateListener;
+
 /**
  * Ui for regular phone screen sizes
  */
@@ -34,10 +37,9 @@
 
     private static final String LOGTAG = "PhoneUi";
 
-    private TitleBarPhone mTitleBar;
-    private ActiveTabsPage mActiveTabsPage;
-    private PieControl mPieControl;
+    private PieControlPhone mPieControl;
     private NavScreen mNavScreen;
+    private NavigationBarPhone mNavigationBar;
 
     boolean mExtendedMenuOpen;
     boolean mOptionsMenuOpen;
@@ -49,33 +51,9 @@
      */
     public PhoneUi(Activity browser, UiController controller) {
         super(browser, controller);
-        mTitleBar = new TitleBarPhone(mActivity, mUiController, this,
-                mContentView);
-        // mTitleBar will be always be shown in the fully loaded mode on
-        // phone
-        mTitleBar.setProgress(100);
         mActivity.getActionBar().hide();
         setUseQuickControls(BrowserSettings.getInstance().useQuickControls());
-    }
-
-    @Override
-    public void hideComboView() {
-        super.hideComboView();
-        mActivity.getActionBar().hide();
-    }
-
-    // lifecycle
-
-    @Override
-    public void onPause() {
-        // FIXME: This removes the active tabs page and resets the menu to
-        // MAIN_MENU.  A better solution might be to do this work in onNewIntent
-        // but then we would need to save it in onSaveInstanceState and restore
-        // it in onCreate/onRestoreInstanceState
-        if (mActiveTabsPage != null) {
-            mUiController.removeActiveTabsPage(true);
-        }
-        super.onPause();
+        mNavigationBar = (NavigationBarPhone) mTitleBar.getNavigationBar();
     }
 
     @Override
@@ -86,18 +64,14 @@
     @Override
     public void editUrl(boolean clearInput) {
         if (mUseQuickControls) {
-            getTitleBar().setShowProgressOnly(false);
+            mTitleBar.setShowProgressOnly(false);
         }
         super.editUrl(clearInput);
     }
 
     @Override
     public boolean onBackKey() {
-        if (mActiveTabsPage != null) {
-            // if tab page is showing, hide it
-            mUiController.removeActiveTabsPage(true);
-            return true;
-        } else if (mNavScreen != null) {
+        if (mNavScreen != null) {
             mNavScreen.close();
             return true;
         }
@@ -105,23 +79,7 @@
     }
 
     @Override
-    public boolean onMenuKey() {
-        if (!isComboViewShowing()) {
-            if (mNavScreen == null) {
-                showNavScreen();
-            } else {
-                mNavScreen.close();
-            }
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    @Override
     public boolean dispatchKey(int code, KeyEvent event) {
-        if (!isComboViewShowing()) {
-        }
         return false;
     }
 
@@ -151,7 +109,6 @@
 
     @Override
     public void setActiveTab(final Tab tab) {
-        captureTab(mActiveTab);
         super.setActiveTab(tab);
         BrowserWebView view = (BrowserWebView) tab.getWebView();
         // TabControl.setCurrentTab has been called before this,
@@ -174,35 +131,22 @@
         } else {
             revertVoiceTitleBar(tab);
         }
+        // update nav bar state
+        mNavigationBar.onStateChanged(StateListener.STATE_NORMAL);
         updateLockIconToLatest(tab);
         tab.getTopWindow().requestFocus();
     }
 
-    @Override
-    protected TitleBarBase getTitleBar() {
-        return mTitleBar;
-    }
-
-    // active tabs page
-
-    @Override
-    public void showActiveTabsPage() {
-        captureTab(mActiveTab);
-        mActiveTabsPage = new ActiveTabsPage(mActivity, mUiController);
-        mTitleBar.setVisibility(View.GONE);
-        hideTitleBar();
-        mContentView.addView(mActiveTabsPage, COVER_SCREEN_PARAMS);
-        mActiveTabsPage.requestFocus();
-    }
-
     /**
-     * Remove the active tabs page.
+     * Suggest to the UI that the title bar can be hidden. The UI will then
+     * decide whether or not to hide based off a number of factors, such
+     * as if the user is editing the URL bar or if the page is loading
      */
     @Override
-    public void removeActiveTabsPage() {
-        mContentView.removeView(mActiveTabsPage);
-        mTitleBar.setVisibility(View.VISIBLE);
-        mActiveTabsPage = null;
+    public void suggestHideTitleBar() {
+        if (!mNavigationBar.isMenuShowing()) {
+            super.suggestHideTitleBar();
+        }
     }
 
     @Override
@@ -213,12 +157,21 @@
         super.showComboView(startWith, extras);
     }
 
+    // menu handling callbacks
+
     @Override
-    public boolean showsWeb() {
-        return super.showsWeb() && mActiveTabsPage == null;
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        menu.setGroupVisible(R.id.NAV_MENU, (mNavScreen == null));
+        return true;
     }
 
-    // menu handling callbacks
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (mNavScreen != null) {
+            hideNavScreen(false);
+        }
+        return false;
+    }
 
     @Override
     public void onContextMenuCreated(Menu menu) {
@@ -254,23 +207,26 @@
     protected void setTitleGravity(int gravity) {
         if (mUseQuickControls) {
             FrameLayout.LayoutParams lp =
-                    (FrameLayout.LayoutParams) getTitleBar().getLayoutParams();
+                    (FrameLayout.LayoutParams) mTitleBar.getLayoutParams();
             lp.gravity = gravity;
-            getTitleBar().setLayoutParams(lp);
+            mTitleBar.setLayoutParams(lp);
         } else {
             super.setTitleGravity(gravity);
         }
     }
 
-    private void setUseQuickControls(boolean useQuickControls) {
+    @Override
+    public void setUseQuickControls(boolean useQuickControls) {
         mUseQuickControls = useQuickControls;
-        getTitleBar().setUseQuickControls(mUseQuickControls);
+        mTitleBar.setUseQuickControls(mUseQuickControls);
         if (useQuickControls) {
-            mPieControl = new PieControl(mActivity, mUiController, this);
+            mPieControl = new PieControlPhone(mActivity, mUiController, this);
             mPieControl.attachToContainer(mContentView);
             WebView web = getWebView();
             if (web != null) {
                 web.setEmbeddedTitleBar(null);
+                // don't show url bar on scrolling
+                web.setOnTouchListener(null);
             }
         } else {
             if (mPieControl != null) {
@@ -279,20 +235,13 @@
             WebView web = getWebView();
             if (web != null) {
                 web.setEmbeddedTitleBar(mTitleBar);
+                // show url bar on scrolling
+                web.setOnTouchListener(this);
             }
             setTitleGravity(Gravity.NO_GRAVITY);
         }
     }
 
-    @Override
-    protected void captureTab(final Tab tab) {
-        if (tab == null) return;
-        BrowserWebView web = (BrowserWebView) tab.getWebView();
-        if (web != null) {
-            tab.setScreenshot(web.capture());
-        }
-    }
-
     void showNavScreen() {
         detachTab(mActiveTab);
         mNavScreen = new NavScreen(mActivity, mUiController, this);
@@ -314,4 +263,17 @@
         mContentView.setVisibility(View.VISIBLE);
     }
 
+    @Override
+    public boolean needsRestoreAllTabs() {
+        return false;
+    }
+
+    public void toggleNavScreen() {
+        if (mNavScreen == null) {
+            showNavScreen();
+        } else {
+            hideNavScreen(false);
+        }
+    }
+
 }
diff --git a/src/com/android/browser/PieControl.java b/src/com/android/browser/PieControl.java
deleted file mode 100644
index 8bcd972..0000000
--- a/src/com/android/browser/PieControl.java
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.browser;
-
-import com.android.browser.view.PieItem;
-import com.android.browser.view.PieListView;
-import com.android.browser.view.PieMenu;
-import com.android.browser.view.PieMenu.PieView.OnLayoutListener;
-import com.android.browser.view.PieStackView;
-import com.android.browser.view.PieStackView.OnCurrentListener;
-
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.view.ViewGroup.LayoutParams;
-import android.webkit.WebView;
-import android.widget.BaseAdapter;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.ImageView.ScaleType;
-import android.widget.TextView;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * controller for Quick Controls pie menu
- */
-public class PieControl implements OnClickListener, PieMenu.PieController {
-
-    private Activity mActivity;
-    private UiController mUiController;
-    private BaseUi mUi;
-    private PieMenu mPie;
-    private PieItem mBack;
-    private PieItem mForward;
-    private PieItem mRefresh;
-    private PieItem mUrl;
-    private PieItem mOptions;
-    private PieItem mBookmarks;
-    private PieItem mNewTab;
-    private PieItem mClose;
-    private MenuAdapter mMenuAdapter;
-    private PieItem mShowTabs;
-    private TabAdapter mTabAdapter;
-    private TextView mTabsCount;
-    private int mItemSize;
-
-    public PieControl(Activity activity, UiController controller, BaseUi ui) {
-        mActivity = activity;
-        mUiController = controller;
-        mUi = ui;
-        mItemSize = (int) activity.getResources().getDimension(R.dimen.qc_item_size);
-    }
-
-    protected void attachToContainer(FrameLayout container) {
-        if (mPie == null) {
-            mPie = new PieMenu(mActivity);
-            LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT,
-                    LayoutParams.MATCH_PARENT);
-            mPie.setLayoutParams(lp);
-            mBack = makeItem(R.drawable.ic_back_holo_dark, 1);
-            mUrl = makeItem(R.drawable.ic_web_holo_dark, 1);
-            mBookmarks = makeItem(R.drawable.ic_bookmarks_holo_dark, 1);
-            mRefresh = makeItem(R.drawable.ic_refresh_holo_dark, 2);
-            mForward = makeItem(R.drawable.ic_forward_holo_dark, 2);
-            mNewTab = makeItem(R.drawable.ic_new_window_holo_dark, 2);
-            mClose = makeItem(R.drawable.ic_close_window_holo_dark, 2);
-            View tabs = makeTabsView();
-            mShowTabs = new PieItem(tabs, 2);
-            mOptions = makeItem(
-                    com.android.internal.R.drawable.ic_menu_moreoverflow_normal_holo_dark,
-                    2);
-            mMenuAdapter = new MenuAdapter(mActivity, mUiController);
-            mTabAdapter = new TabAdapter(mActivity, mUiController);
-            PieStackView stack = new PieStackView(mActivity);
-            stack.setLayoutListener(new OnLayoutListener() {
-                @Override
-                public void onLayout(int ax, int ay, boolean left) {
-                    buildTabs();
-                }
-            });
-            stack.setOnCurrentListener(mTabAdapter);
-            stack.setAdapter(mTabAdapter);
-            mShowTabs.setPieView(stack);
-            PieListView menuview = new PieListView(mActivity);
-            menuview.setLayoutListener(new OnLayoutListener() {
-                @Override
-                public void onLayout(int ax, int ay, boolean left) {
-                    buildMenu();
-                }
-            });
-
-            mOptions.setPieView(menuview);
-            menuview.setAdapter(mMenuAdapter);
-            setClickListener(mBack,
-                    mRefresh,
-                    mForward,
-                    mUrl,
-                    mBookmarks,
-                    mNewTab,
-                    mClose
-                    );
-            // level 1
-            mPie.addItem(mBack);
-            mPie.addItem(mUrl);
-            mPie.addItem(mBookmarks);
-            // level 2
-            mPie.addItem(mForward);
-            mPie.addItem(mRefresh);
-            mPie.addItem(mOptions);
-            mPie.addItem(mShowTabs);
-            mPie.addItem(mNewTab);
-            mPie.addItem(mClose);
-            mPie.setController(this);
-        }
-        container.addView(mPie);
-    }
-
-    private void buildTabs() {
-        final List<Tab> tabs = mUiController.getTabs();
-        mUi.captureTab(mUi.getActiveTab());
-        mTabAdapter.setTabs(tabs);
-        PieStackView sym = (PieStackView) mShowTabs.getPieView();
-        sym.setCurrent(mUiController.getTabControl().getCurrentPosition());
-
-    }
-
-    private void buildMenu() {
-        Menu menu = mUi.getMenu();
-        menu.setGroupVisible(R.id.NAV_MENU, false);
-        mMenuAdapter.setMenu(menu);
-    }
-
-    protected void removeFromContainer(FrameLayout container) {
-        container.removeView(mPie);
-    }
-
-    private View makeTabsView() {
-        View v = mActivity.getLayoutInflater().inflate(R.layout.qc_tabs_view, null);
-        mTabsCount = (TextView) v.findViewById(R.id.label);
-        mTabsCount.setText("1");
-        ImageView image = (ImageView) v.findViewById(R.id.icon);
-        image.setImageResource(R.drawable.ic_windows_holo_dark);
-        image.setScaleType(ScaleType.CENTER);
-        LayoutParams lp = new LayoutParams(mItemSize, mItemSize);
-        v.setLayoutParams(lp);
-        return v;
-    }
-
-    private PieItem makeItem(int image, int l) {
-        ImageView view = new ImageView(mActivity);
-        view.setImageResource(image);
-        view.setMinimumWidth(mItemSize);
-        view.setMinimumHeight(mItemSize);
-        view.setScaleType(ScaleType.CENTER);
-        LayoutParams lp = new LayoutParams(mItemSize, mItemSize);
-        view.setLayoutParams(lp);
-        return new PieItem(view, l);
-    }
-
-    private void setClickListener(PieItem... items) {
-        for (PieItem item : items) {
-            item.getView().setOnClickListener(this);
-        }
-    }
-
-    protected void forceToTop(FrameLayout container) {
-        if (mPie.getParent() != null) {
-            container.removeView(mPie);
-            container.addView(mPie);
-        }
-    }
-
-    @Override
-    public void onClick(View v) {
-        Tab tab = mUiController.getTabControl().getCurrentTab();
-        WebView web = tab.getWebView();
-        if (mBack.getView() == v) {
-            web.goBack();
-        } else if (mForward.getView() == v) {
-            web.goForward();
-        } else if (mRefresh.getView() == v) {
-            if (tab.inPageLoad()) {
-                web.stopLoading();
-            } else {
-                web.reload();
-            }
-        } else if (mUrl.getView() == v) {
-            mUi.editUrl(false);
-        } else if (mBookmarks.getView() == v) {
-            mUiController.bookmarksOrHistoryPicker(false);
-        } else if (mNewTab.getView() == v) {
-            mUiController.openTabToHomePage();
-            mUi.editUrl(false);
-        } else if (mClose.getView() == v) {
-            mUiController.closeCurrentTab();
-        }
-    }
-
-    @Override
-    public boolean onOpen() {
-        int n = mUiController.getTabControl().getTabCount();
-        mTabsCount.setText(Integer.toString(n));
-        return true;
-    }
-
-    private static class TabAdapter extends BaseAdapter implements OnCurrentListener {
-
-        LayoutInflater mInflater;
-        UiController mUiController;
-        private List<Tab> mTabs;
-        private int mCurrent;
-
-        public TabAdapter(Context ctx, UiController ctl) {
-            mInflater = LayoutInflater.from(ctx);
-            mUiController = ctl;
-            mTabs = new ArrayList<Tab>();
-            mCurrent = -1;
-        }
-
-        public void setTabs(List<Tab> tabs) {
-            mTabs = tabs;
-            notifyDataSetChanged();
-        }
-
-        @Override
-        public int getCount() {
-            return mTabs.size();
-        }
-
-        @Override
-        public Tab getItem(int position) {
-            return mTabs.get(position);
-        }
-
-        @Override
-        public long getItemId(int position) {
-            return position;
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            final Tab tab = mTabs.get(position);
-            View view = mInflater.inflate(R.layout.qc_tab,
-                    null);
-            ImageView thumb = (ImageView) view.findViewById(R.id.thumb);
-            TextView title1 = (TextView) view.findViewById(R.id.title1);
-            TextView title2 = (TextView) view.findViewById(R.id.title2);
-            Bitmap b = tab.getScreenshot();
-            if (b != null) {
-                thumb.setImageBitmap(b);
-            }
-            if (position > mCurrent) {
-                title1.setVisibility(View.GONE);
-                title2.setText(tab.getTitle());
-            } else {
-                title2.setVisibility(View.GONE);
-                title1.setText(tab.getTitle());
-            }
-            view.setOnClickListener(new OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    mUiController.switchToTab(tab);
-                }
-            });
-            return view;
-        }
-
-        @Override
-        public void onSetCurrent(int index) {
-            mCurrent = index;
-        }
-
-    }
-
-    private static class MenuAdapter extends BaseAdapter
-            implements OnClickListener {
-
-        List<MenuItem> mItems;
-        UiController mUiController;
-        LayoutInflater mInflater;
-
-        public MenuAdapter(Context ctx, UiController ctl) {
-            mUiController = ctl;
-            mInflater = LayoutInflater.from(ctx);
-            mItems = new ArrayList<MenuItem>();
-        }
-
-        public void setMenu(Menu menu) {
-            mItems.clear();
-            for (int i = 0; i < menu.size(); i++) {
-                MenuItem item = menu.getItem(i);
-                if (item.isEnabled() && item.isVisible()) {
-                    mItems.add(item);
-                }
-            }
-            notifyDataSetChanged();
-        }
-
-        @Override
-        public int getCount() {
-            return mItems.size();
-        }
-
-        @Override
-        public MenuItem getItem(int position) {
-            return mItems.get(position);
-        }
-
-        @Override
-        public long getItemId(int position) {
-            return position;
-        }
-
-        @Override
-        public void onClick(View v) {
-            if (v.getTag() != null) {
-                mUiController.onOptionsItemSelected((MenuItem) v.getTag());
-            }
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            final MenuItem item = mItems.get(position);
-            View view = mInflater.inflate(
-                    R.layout.qc_menu_item, null);
-            TextView label =
-                    (TextView) view.findViewById(R.id.title);
-            label.setText(item.getTitle());
-            label.setTag(item);
-            label.setOnClickListener(this);
-            label.setLayoutParams(new LayoutParams(240, 32));
-            return label;
-        }
-
-    }
-
-}
diff --git a/src/com/android/browser/PieControlBase.java b/src/com/android/browser/PieControlBase.java
new file mode 100644
index 0000000..830afea
--- /dev/null
+++ b/src/com/android/browser/PieControlBase.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+import android.widget.BaseAdapter;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.ImageView.ScaleType;
+import android.widget.TextView;
+
+import com.android.browser.view.PieItem;
+import com.android.browser.view.PieMenu;
+import com.android.browser.view.PieStackView.OnCurrentListener;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * base controller for Quick Controls pie menu
+ */
+public abstract class PieControlBase implements PieMenu.PieController {
+
+    protected Activity mActivity;
+    protected UiController mUiController;
+    protected PieMenu mPie;
+    protected int mItemSize;
+    protected TextView mTabsCount;
+
+    public PieControlBase(Activity activity, UiController controller) {
+        mActivity = activity;
+        mUiController = controller;
+        mItemSize = (int) activity.getResources().getDimension(R.dimen.qc_item_size);
+    }
+
+    protected void attachToContainer(FrameLayout container) {
+        if (mPie == null) {
+            mPie = new PieMenu(mActivity);
+            LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT,
+                    LayoutParams.MATCH_PARENT);
+            mPie.setLayoutParams(lp);
+            populateMenu();
+            mPie.setController(this);
+        }
+        container.addView(mPie);
+    }
+
+    protected void removeFromContainer(FrameLayout container) {
+        container.removeView(mPie);
+    }
+
+    protected void forceToTop(FrameLayout container) {
+        if (mPie.getParent() != null) {
+            container.removeView(mPie);
+            container.addView(mPie);
+        }
+    }
+
+    protected abstract void populateMenu();
+
+    protected void setClickListener(OnClickListener listener, PieItem... items) {
+        for (PieItem item : items) {
+            item.getView().setOnClickListener(listener);
+        }
+    }
+
+    @Override
+    public boolean onOpen() {
+        int n = mUiController.getTabControl().getTabCount();
+        mTabsCount.setText(Integer.toString(n));
+        return true;
+    }
+
+    protected PieItem makeItem(int image, int l) {
+        ImageView view = new ImageView(mActivity);
+        view.setImageResource(image);
+        view.setMinimumWidth(mItemSize);
+        view.setMinimumHeight(mItemSize);
+        view.setScaleType(ScaleType.CENTER);
+        LayoutParams lp = new LayoutParams(mItemSize, mItemSize);
+        view.setLayoutParams(lp);
+        return new PieItem(view, l);
+    }
+
+    protected View makeTabsView() {
+        View v = mActivity.getLayoutInflater().inflate(R.layout.qc_tabs_view, null);
+        mTabsCount = (TextView) v.findViewById(R.id.label);
+        mTabsCount.setText("1");
+        ImageView image = (ImageView) v.findViewById(R.id.icon);
+        image.setImageResource(R.drawable.ic_windows_holo_dark);
+        image.setScaleType(ScaleType.CENTER);
+        LayoutParams lp = new LayoutParams(mItemSize, mItemSize);
+        v.setLayoutParams(lp);
+        return v;
+    }
+
+    static class TabAdapter extends BaseAdapter implements OnCurrentListener {
+
+        LayoutInflater mInflater;
+        UiController mUiController;
+        private List<Tab> mTabs;
+        private int mCurrent;
+
+        public TabAdapter(Context ctx, UiController ctl) {
+            mInflater = LayoutInflater.from(ctx);
+            mUiController = ctl;
+            mTabs = new ArrayList<Tab>();
+            mCurrent = -1;
+        }
+
+        public void setTabs(List<Tab> tabs) {
+            mTabs = tabs;
+            notifyDataSetChanged();
+        }
+
+        @Override
+        public int getCount() {
+            return mTabs.size();
+        }
+
+        @Override
+        public Tab getItem(int position) {
+            return mTabs.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            final Tab tab = mTabs.get(position);
+            View view = mInflater.inflate(R.layout.qc_tab,
+                    null);
+            ImageView thumb = (ImageView) view.findViewById(R.id.thumb);
+            TextView title1 = (TextView) view.findViewById(R.id.title1);
+            TextView title2 = (TextView) view.findViewById(R.id.title2);
+            Bitmap b = tab.getScreenshot();
+            if (b != null) {
+                thumb.setImageBitmap(b);
+            }
+            if (position > mCurrent) {
+                title1.setVisibility(View.GONE);
+                title2.setText(tab.getTitle());
+            } else {
+                title2.setVisibility(View.GONE);
+                title1.setText(tab.getTitle());
+            }
+            view.setOnClickListener(new OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    mUiController.switchToTab(tab);
+                }
+            });
+            return view;
+        }
+
+        @Override
+        public void onSetCurrent(int index) {
+            mCurrent = index;
+        }
+
+    }
+
+}
diff --git a/src/com/android/browser/PieControlPhone.java b/src/com/android/browser/PieControlPhone.java
new file mode 100644
index 0000000..c4b28fa
--- /dev/null
+++ b/src/com/android/browser/PieControlPhone.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import android.app.Activity;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup.LayoutParams;
+import android.webkit.WebView;
+import android.widget.ImageView;
+import android.widget.ImageView.ScaleType;
+import android.widget.TextView;
+
+import com.android.browser.view.PieItem;
+import com.android.browser.view.PieMenu.PieView.OnLayoutListener;
+import com.android.browser.view.PieStackView;
+
+import java.util.List;
+
+/**
+ * controller for Quick Controls pie menu
+ */
+public class PieControlPhone extends PieControlBase implements OnClickListener {
+
+    private PhoneUi mUi;
+    private PieItem mBack;
+    private PieItem mUrl;
+    private PieItem mShowTabs;
+    private TabAdapter mTabAdapter;
+
+    public PieControlPhone(Activity activity, UiController controller, PhoneUi ui) {
+        super(activity, controller);
+        mUi = ui;
+    }
+
+    protected void populateMenu() {
+        mBack = makeItem(R.drawable.ic_back_holo_dark, 1);
+        mUrl = makeItem(R.drawable.ic_web_holo_dark, 1);
+        View tabs = makeTabsView();
+        mShowTabs = new PieItem(tabs, 1);
+        mTabAdapter = new TabAdapter(mActivity, mUiController);
+        PieStackView stack = new PieStackView(mActivity);
+        stack.setLayoutListener(new OnLayoutListener() {
+            @Override
+            public void onLayout(int ax, int ay, boolean left) {
+                buildTabs();
+            }
+        });
+        stack.setOnCurrentListener(mTabAdapter);
+        stack.setAdapter(mTabAdapter);
+        mShowTabs.setPieView(stack);
+        // level 1
+        mPie.addItem(mBack);
+        mPie.addItem(mUrl);
+        mPie.addItem(mShowTabs);
+        setClickListener(this, mBack, mUrl, mShowTabs);
+    }
+
+    private void buildTabs() {
+        final List<Tab> tabs = mUiController.getTabs();
+        mUi.captureTab(mUi.getActiveTab());
+        mTabAdapter.setTabs(tabs);
+        PieStackView sym = (PieStackView) mShowTabs.getPieView();
+        sym.setCurrent(mUiController.getTabControl().getCurrentPosition());
+
+    }
+
+    @Override
+    public void onClick(View v) {
+        Tab tab = mUiController.getTabControl().getCurrentTab();
+        if (mBack.getView() == v) {
+            tab.goBack();
+        } else if (mUrl.getView() == v) {
+            mUi.editUrl(false);
+        } else if (mShowTabs.getView() == v) {
+            mUi.showNavScreen();
+        }
+    }
+
+
+}
diff --git a/src/com/android/browser/PieControlXLarge.java b/src/com/android/browser/PieControlXLarge.java
new file mode 100644
index 0000000..a036e0d
--- /dev/null
+++ b/src/com/android/browser/PieControlXLarge.java
@@ -0,0 +1,215 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import android.app.Activity;
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+import android.webkit.WebView;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.android.browser.view.PieItem;
+import com.android.browser.view.PieListView;
+import com.android.browser.view.PieMenu.PieView.OnLayoutListener;
+import com.android.browser.view.PieStackView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * controller for Quick Controls pie menu
+ */
+public class PieControlXLarge extends PieControlBase implements OnClickListener {
+
+    private BaseUi mUi;
+    private PieItem mBack;
+    private PieItem mForward;
+    private PieItem mRefresh;
+    private PieItem mUrl;
+    private PieItem mOptions;
+    private PieItem mBookmarks;
+    private PieItem mNewTab;
+    private PieItem mClose;
+    private MenuAdapter mMenuAdapter;
+    private PieItem mShowTabs;
+    private TabAdapter mTabAdapter;
+
+    public PieControlXLarge(Activity activity, UiController controller, BaseUi ui) {
+        super(activity, controller);
+        mUiController = controller;
+        mUi = ui;
+    }
+
+    protected void populateMenu() {
+        mBack = makeItem(R.drawable.ic_back_holo_dark, 1);
+        mUrl = makeItem(R.drawable.ic_web_holo_dark, 1);
+        mBookmarks = makeItem(R.drawable.ic_bookmarks_holo_dark, 1);
+        mRefresh = makeItem(R.drawable.ic_refresh_holo_dark, 2);
+        mForward = makeItem(R.drawable.ic_forward_holo_dark, 2);
+        mNewTab = makeItem(R.drawable.ic_new_window_holo_dark, 2);
+        mClose = makeItem(R.drawable.ic_close_window_holo_dark, 2);
+        View tabs = makeTabsView();
+        mShowTabs = new PieItem(tabs, 2);
+        mOptions = makeItem(com.android.internal.R.drawable.ic_menu_moreoverflow_normal_holo_dark,
+                                        2);
+        mMenuAdapter = new MenuAdapter(mActivity, mUiController);
+        mTabAdapter = new TabAdapter(mActivity, mUiController);
+        PieStackView stack = new PieStackView(mActivity);
+        stack.setLayoutListener(new OnLayoutListener() {
+            @Override
+            public void onLayout(int ax, int ay, boolean left) {
+                buildTabs();
+            }
+        });
+        stack.setOnCurrentListener(mTabAdapter);
+        stack.setAdapter(mTabAdapter);
+        mShowTabs.setPieView(stack);
+        PieListView menuview = new PieListView(mActivity);
+        menuview.setLayoutListener(new OnLayoutListener() {
+            @Override
+            public void onLayout(int ax, int ay, boolean left) {
+                buildMenu();
+            }
+        });
+
+        mOptions.setPieView(menuview);
+        menuview.setAdapter(mMenuAdapter);
+        setClickListener(this, mBack, mRefresh, mForward, mUrl, mBookmarks, mNewTab,
+                mClose);
+        // level 1
+        mPie.addItem(mBack);
+        mPie.addItem(mUrl);
+        mPie.addItem(mBookmarks);
+        // level 2
+        mPie.addItem(mForward);
+        mPie.addItem(mRefresh);
+        mPie.addItem(mOptions);
+        mPie.addItem(mShowTabs);
+        mPie.addItem(mNewTab);
+        mPie.addItem(mClose);
+    }
+
+    private void buildTabs() {
+        final List<Tab> tabs = mUiController.getTabs();
+        mUi.captureTab(mUi.getActiveTab());
+        mTabAdapter.setTabs(tabs);
+        PieStackView sym = (PieStackView) mShowTabs.getPieView();
+        sym.setCurrent(mUiController.getTabControl().getCurrentPosition());
+    }
+
+    private void buildMenu() {
+        Menu menu = mUi.getMenu();
+        menu.setGroupVisible(R.id.NAV_MENU, false);
+        mMenuAdapter.setMenu(menu);
+    }
+
+    @Override
+    public void onClick(View v) {
+        Tab tab = mUiController.getTabControl().getCurrentTab();
+        WebView web = tab.getWebView();
+        if (mBack.getView() == v) {
+            tab.goBack();
+        } else if (mForward.getView() == v) {
+            tab.goForward();
+        } else if (mRefresh.getView() == v) {
+            if (tab.inPageLoad()) {
+                web.stopLoading();
+            } else {
+                web.reload();
+            }
+        } else if (mUrl.getView() == v) {
+            mUi.editUrl(false);
+        } else if (mBookmarks.getView() == v) {
+            mUiController.bookmarksOrHistoryPicker(false);
+        } else if (mNewTab.getView() == v) {
+            mUiController.openTabToHomePage();
+            mUi.editUrl(false);
+        } else if (mClose.getView() == v) {
+            mUiController.closeCurrentTab();
+        }
+    }
+
+    private static class MenuAdapter extends BaseAdapter
+            implements OnClickListener {
+
+        List<MenuItem> mItems;
+        UiController mUiController;
+        LayoutInflater mInflater;
+
+        public MenuAdapter(Context ctx, UiController ctl) {
+            mUiController = ctl;
+            mInflater = LayoutInflater.from(ctx);
+            mItems = new ArrayList<MenuItem>();
+        }
+
+        public void setMenu(Menu menu) {
+            mItems.clear();
+            for (int i = 0; i < menu.size(); i++) {
+                MenuItem item = menu.getItem(i);
+                if (item.isEnabled() && item.isVisible()) {
+                    mItems.add(item);
+                }
+            }
+            notifyDataSetChanged();
+        }
+
+        @Override
+        public int getCount() {
+            return mItems.size();
+        }
+
+        @Override
+        public MenuItem getItem(int position) {
+            return mItems.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        @Override
+        public void onClick(View v) {
+            if (v.getTag() != null) {
+                mUiController.onOptionsItemSelected((MenuItem) v.getTag());
+            }
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            final MenuItem item = mItems.get(position);
+            View view = mInflater.inflate(
+                    R.layout.qc_menu_item, null);
+            TextView label =
+                    (TextView) view.findViewById(R.id.title);
+            label.setText(item.getTitle());
+            label.setTag(item);
+            label.setOnClickListener(this);
+            label.setLayoutParams(new LayoutParams(240, 32));
+            return label;
+        }
+
+    }
+
+}
diff --git a/src/com/android/browser/PreferenceKeys.java b/src/com/android/browser/PreferenceKeys.java
index 08ee91f..ce8ec9f 100644
--- a/src/com/android/browser/PreferenceKeys.java
+++ b/src/com/android/browser/PreferenceKeys.java
@@ -70,6 +70,7 @@
     static final String PREF_NORMAL_LAYOUT = "normal_layout";
     static final String PREF_SMALL_SCREEN = "small_screen";
     static final String PREF_WIDE_VIEWPORT = "wide_viewport";
+    static final String PREF_RESET_PRELOGIN = "reset_prelogin";
 
     // ----------------------
     // Keys for lab_preferences.xml
@@ -77,6 +78,7 @@
     static final String PREF_ENABLE_QUICK_CONTROLS = "enable_quick_controls";
     static final String PREF_USE_INSTANT_SEARCH = "use_instant_search";
     static final String PREF_FULLSCREEN = "fullscreen";
+    static final String PREF_INVERTED = "inverted";
 
     // ----------------------
     // Keys for privacy_security_preferences.xml
diff --git a/src/com/android/browser/PreloadController.java b/src/com/android/browser/PreloadController.java
index 6528410..652ea8e 100644
--- a/src/com/android/browser/PreloadController.java
+++ b/src/com/android/browser/PreloadController.java
@@ -22,6 +22,7 @@
 import android.net.Uri;
 import android.net.http.SslError;
 import android.os.Message;
+import android.util.Log;
 import android.view.KeyEvent;
 import android.view.View;
 import android.webkit.HttpAuthHandler;
@@ -34,6 +35,9 @@
 
 public class PreloadController implements WebViewController {
 
+    private static final boolean LOGD_ENABLED = false;
+    private static final String LOGTAG = "PreloadController";
+
     private Context mContext;
 
     public PreloadController(Context ctx) {
@@ -48,177 +52,228 @@
 
     @Override
     public Activity getActivity() {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "getActivity()");
         return null;
     }
 
     @Override
     public TabControl getTabControl() {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "getTabControl()");
         return null;
     }
 
     @Override
     public WebViewFactory getWebViewFactory() {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "getWebViewFactory()");
         return null;
     }
 
     @Override
     public void onSetWebView(Tab tab, WebView view) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "onSetWebView()");
     }
 
     @Override
     public void createSubWindow(Tab tab) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "createSubWindow()");
     }
 
     @Override
     public void onPageStarted(Tab tab, WebView view, Bitmap favicon) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "onPageStarted()");
+        if (view != null) {
+            // Clear history of all previously visited pages. When the
+            // user visits a preloaded tab, the only item in the history
+            // list should the currently viewed page.
+            view.clearHistory();
+        }
     }
 
     @Override
     public void onPageFinished(Tab tab) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "onPageFinished()");
+        if (tab != null) {
+            final WebView view = tab.getWebView();
+            if (view != null) {
+                // Clear history of all previously visited pages. When the
+                // user visits a preloaded tab.
+                view.clearHistory();
+            }
+        }
     }
 
     @Override
     public void onProgressChanged(Tab tab) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "onProgressChanged()");
     }
 
     @Override
     public void onReceivedTitle(Tab tab, String title) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "onReceivedTitle()");
     }
 
     @Override
     public void onFavicon(Tab tab, WebView view, Bitmap icon) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "onFavicon()");
     }
 
     @Override
     public boolean shouldOverrideUrlLoading(Tab tab, WebView view, String url) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "shouldOverrideUrlLoading()");
         return false;
     }
 
     @Override
     public boolean shouldOverrideKeyEvent(KeyEvent event) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "shouldOverrideKeyEvent()");
         return false;
     }
 
     @Override
     public void onUnhandledKeyEvent(KeyEvent event) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "onUnhandledKeyEvent()");
     }
 
     @Override
     public void doUpdateVisitedHistory(Tab tab, boolean isReload) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "doUpdateVisitedHistory()");
     }
 
     @Override
     public void getVisitedHistory(ValueCallback<String[]> callback) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "getVisitedHistory()");
     }
 
     @Override
     public void onReceivedHttpAuthRequest(Tab tab, WebView view,
                                     HttpAuthHandler handler, String host,
                                     String realm) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "onReceivedHttpAuthRequest()");
     }
 
     @Override
     public void onDownloadStart(Tab tab, String url, String useragent,
                                     String contentDisposition, String mimeType,
                                     long contentLength) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "onDownloadStart()");
     }
 
     @Override
     public void showCustomView(Tab tab, View view, int requestedOrientation,
                                     CustomViewCallback callback) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "showCustomView()");
     }
 
     @Override
     public void hideCustomView() {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "hideCustomView()");
     }
 
     @Override
     public Bitmap getDefaultVideoPoster() {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "getDefaultVideoPoster()");
         return null;
     }
 
     @Override
     public View getVideoLoadingProgressView() {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "getVideoLoadingProgressView()");
         return null;
     }
 
     @Override
     public void showSslCertificateOnError(WebView view,
                                     SslErrorHandler handler, SslError error) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "showSslCertificateOnError()");
     }
 
     @Override
     public void onUserCanceledSsl(Tab tab) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "onUserCanceledSsl()");
     }
 
     @Override
     public void activateVoiceSearchMode(String title, List<String> results) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "activateVoiceSearchMode()");
     }
 
     @Override
     public void revertVoiceSearchMode(Tab tab) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "revertVoiceSearchMode()");
     }
 
     @Override
     public boolean shouldShowErrorConsole() {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "shouldShowErrorConsole()");
         return false;
     }
 
     @Override
     public void onUpdatedLockIcon(Tab tab) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "onUpdatedLockIcon()");
     }
 
     @Override
     public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "openFileChooser()");
     }
 
     @Override
     public void endActionMode() {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "endActionMode()");
     }
 
     @Override
     public void attachSubWindow(Tab tab) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "attachSubWindow()");
     }
 
     @Override
     public void dismissSubWindow(Tab tab) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "dismissSubWindow()");
     }
 
     @Override
-    public Tab openTab(String url, boolean incognito, boolean setActive,
-                                    boolean useCurrent) {
+    public Tab openTab(String url, boolean incognito, boolean setActive, boolean useCurrent) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "openTab()");
         return null;
     }
 
     @Override
-    public Tab openTab(String url, Tab parent, boolean setActive,
-                                    boolean useCurrent) {
+    public Tab openTab(String url, Tab parent, boolean setActive, boolean useCurrent) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "openTab()");
         return null;
     }
 
     @Override
     public boolean switchToTab(Tab tab) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "switchToTab()");
         return false;
     }
 
     @Override
     public void closeTab(Tab tab) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "closeTab()");
     }
 
     @Override
     public void setupAutoFill(Message message) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "setupAutoFill()");
     }
 
     @Override
     public void bookmarkedStatusHasChanged(Tab tab) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "bookmarkedStatusHasChanged()");
     }
 
     @Override
     public void showAutoLogin(Tab tab) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "showAutoLogin()");
     }
 
     @Override
     public void hideAutoLogin(Tab tab) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "hideAutoLogin()");
     }
 
 }
diff --git a/src/com/android/browser/PreloadedTabControl.java b/src/com/android/browser/PreloadedTabControl.java
index 99592fb..d2482a4 100644
--- a/src/com/android/browser/PreloadedTabControl.java
+++ b/src/com/android/browser/PreloadedTabControl.java
@@ -15,6 +15,7 @@
  */
 package com.android.browser;
 
+import android.net.Uri;
 import android.text.TextUtils;
 import android.util.Log;
 import android.webkit.SearchBox;
@@ -25,7 +26,7 @@
  * Class to manage the controlling of preloaded tab.
  */
 public class PreloadedTabControl {
-    private static final boolean LOGD_ENABLED = true;//com.android.browser.Browser.LOGD_ENABLED;
+    private static final boolean LOGD_ENABLED = com.android.browser.Browser.LOGD_ENABLED;
     private static final String LOGTAG = "PreloadedTabControl";
 
     final Tab mTab;
@@ -33,17 +34,26 @@
     private boolean mDestroyed;
 
     public PreloadedTabControl(Tab t) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "PreloadedTabControl.<init>");
         mTab = t;
     }
 
-    private void maybeSetQuery(String query, SearchBox sb) {
+    private void maybeSetQuery(final String query, SearchBox sb) {
         if (!TextUtils.equals(mLastQuery, query)) {
             if (sb != null) {
                 if (LOGD_ENABLED) Log.d(LOGTAG, "Changing searchbox query to " + query);
                 sb.setVerbatim(true);
                 sb.setQuery(query);
-                sb.onchange();
-                mLastQuery = query;
+                sb.onchange(new SearchBox.SearchBoxListener() {
+                    @Override
+                    public void onChangeComplete(boolean called) {
+                        if (mDestroyed) return;
+                        if (LOGD_ENABLED) Log.d(LOGTAG, "Changed searchbox query: " + called);
+                        if (called) {
+                            mLastQuery = query;
+                        }
+                    }
+                });
             } else {
                 if (LOGD_ENABLED) Log.d(LOGTAG, "Cannot set query: no searchbox interface");
             }
@@ -62,30 +72,34 @@
             if (LOGD_ENABLED) Log.d(LOGTAG, "No searchbox, cannot submit query");
             return false;
         }
-        sb.isSupported(new SearchBox.IsSupportedCallback() {
+        maybeSetQuery(query, sb);
+        if (LOGD_ENABLED) Log.d(LOGTAG, "Submitting query " + query);
+        sb.onsubmit(new SearchBox.SearchBoxListener() {
             @Override
-            public void searchBoxIsSupported(boolean supported) {
-                if (LOGD_ENABLED) Log.d(LOGTAG, "SearchBox supported: " + supported);
-                if (mDestroyed) {
-                    if (LOGD_ENABLED) Log.d(LOGTAG, "tab has been destroyed");
-                    return;
-                }
-                if (supported) {
-                    maybeSetQuery(query, sb);
-                    if (LOGD_ENABLED) Log.d(LOGTAG, "Submitting query " + query);
-                    sb.onsubmit();
-                } else {
-                    if (LOGD_ENABLED) Log.d(LOGTAG, "SearchBox not supported; falling back");
+            public void onSubmitComplete(boolean called) {
+                if (mDestroyed) return;
+                if (LOGD_ENABLED) Log.d(LOGTAG, "Query submitted: " + called);
+                if (!called) {
+                    if (LOGD_ENABLED) Log.d(LOGTAG, "Query not submitted; falling back");
                     loadUrl(fallbackUrl, fallbackHeaders);
                 }
                 mTab.getWebView().clearHistory();
-            }
-        });
+            }});
         return true;
     }
 
     public void loadUrlIfChanged(String url, Map<String, String> headers) {
-        if (!TextUtils.equals(url, mTab.getUrl())) {
+        String currentUrl = mTab.getUrl();
+        if (!TextUtils.isEmpty(currentUrl)) {
+            try {
+                // remove fragment:
+                currentUrl = Uri.parse(currentUrl).buildUpon().fragment(null).build().toString();
+            } catch (UnsupportedOperationException e) {
+                // carry on
+            }
+        }
+        if (LOGD_ENABLED) Log.d(LOGTAG, "loadUrlIfChanged\nnew: " + url + "\nold: " +currentUrl);
+        if (!TextUtils.equals(url, currentUrl)) {
             loadUrl(url, headers);
         }
     }
@@ -96,6 +110,7 @@
     }
 
     public void destroy() {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "PreloadedTabControl.destroy");
         mDestroyed = true;
         mTab.destroy();
     }
diff --git a/src/com/android/browser/Preloader.java b/src/com/android/browser/Preloader.java
index 336b77a..cc71f34 100644
--- a/src/com/android/browser/Preloader.java
+++ b/src/com/android/browser/Preloader.java
@@ -19,8 +19,8 @@
 import android.os.Handler;
 import android.os.Looper;
 import android.util.Log;
+import android.webkit.WebView;
 
-import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -38,7 +38,7 @@
     private final Context mContext;
     private final Handler mHandler;
     private final BrowserWebViewFactory mFactory;
-    private final HashMap<String, PreloaderSession> mSessions;
+    private volatile PreloaderSession mSession;
 
     public static void initialize(Context context) {
         sInstance = new Preloader(context);
@@ -51,32 +51,52 @@
     private Preloader(Context context) {
         mContext = context;
         mHandler = new Handler(Looper.getMainLooper());
-        mSessions = new HashMap<String, PreloaderSession>();
+        mSession = null;
         mFactory = new BrowserWebViewFactory(context);
 
     }
 
     private PreloaderSession getSession(String id) {
-        PreloaderSession s = mSessions.get(id);
-        if (s == null) {
+        if (mSession == null) {
             if (LOGD_ENABLED) Log.d(LOGTAG, "Create new preload session " + id);
-            s = new PreloaderSession(id);
-            mSessions.put(id, s);
+            mSession = new PreloaderSession(id);
+            WebViewTimersControl.getInstance().onPrerenderStart(
+                    mSession.getWebView());
+            return mSession;
+        } else if (mSession.mId.equals(id)) {
+            if (LOGD_ENABLED) Log.d(LOGTAG, "Returning existing preload session " + id);
+            return mSession;
         }
-        return s;
+
+        if (LOGD_ENABLED) Log.d(LOGTAG, "Existing session in progress : " + mSession.mId +
+                " returning null.");
+        return null;
     }
 
     private PreloaderSession takeSession(String id) {
-        PreloaderSession s = mSessions.remove(id);
+        PreloaderSession s = null;
+        if (mSession != null && mSession.mId.equals(id)) {
+            s = mSession;
+            mSession = null;
+        }
+
         if (s != null) {
             s.cancelTimeout();
         }
+
+        WebViewTimersControl.getInstance().onPrerenderDone(s == null ? null : s.getWebView());
         return s;
     }
 
     public void handlePreloadRequest(String id, String url, Map<String, String> headers,
             String searchBoxQuery) {
         PreloaderSession s = getSession(id);
+        if (s == null) {
+            if (LOGD_ENABLED) Log.d(LOGTAG, "Discarding preload request, existing"
+                    + " session in progress");
+            return;
+        }
+
         s.touch(); // reset timer
         PreloadedTabControl tab = s.getTabControl();
         if (searchBoxQuery != null) {
@@ -139,6 +159,11 @@
             return mTabControl;
         }
 
+        public WebView getWebView() {
+            Tab t = mTabControl.getTab();
+            return t == null? null : t.getWebView();
+        }
+
     }
 
 }
diff --git a/src/com/android/browser/ShortcutActivity.java b/src/com/android/browser/ShortcutActivity.java
index af1788d..134bf23 100644
--- a/src/com/android/browser/ShortcutActivity.java
+++ b/src/com/android/browser/ShortcutActivity.java
@@ -19,7 +19,6 @@
 import android.app.Activity;
 import android.content.Intent;
 import android.database.Cursor;
-import android.net.Uri;
 import android.os.Bundle;
 import android.view.View;
 import android.view.View.OnClickListener;
@@ -59,7 +58,7 @@
     }
 
     @Override
-    public boolean onOpenInNewWindow(Cursor c) {
+    public boolean onOpenInNewWindow(String... urls) {
         return false;
     }
 
diff --git a/src/com/android/browser/SnapshotBar.java b/src/com/android/browser/SnapshotBar.java
new file mode 100644
index 0000000..9fb68cf
--- /dev/null
+++ b/src/com/android/browser/SnapshotBar.java
@@ -0,0 +1,219 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.browser;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.os.Handler;
+import android.os.Message;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewConfiguration;
+import android.view.ViewPropertyAnimator;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import java.text.DateFormat;
+import java.util.Date;
+
+public class SnapshotBar extends LinearLayout implements OnClickListener {
+
+    private static final int MSG_SHOW_TITLE = 1;
+    private static final long DURATION_SHOW_DATE = BaseUi.HIDE_TITLEBAR_DELAY;
+
+    private ImageView mFavicon;
+    private View mGoLive;
+    private TextView mDate;
+    private TextView mTitle;
+    private View mBookmarks;
+    private TitleBar mTitleBar;
+    private View mTabSwitcher;
+    private View mOverflowMenu;
+    private View mToggleContainer;
+    private boolean mIsAnimating;
+    private ViewPropertyAnimator mTitleAnimator, mDateAnimator;
+    private float mAnimRadius = 20f;
+    private View mDateContainer;
+
+    public SnapshotBar(Context context) {
+        super(context);
+    }
+
+    public SnapshotBar(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public SnapshotBar(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    public void setTitleBar(TitleBar titleBar) {
+        mTitleBar = titleBar;
+        setFavicon(null);
+    }
+
+    private Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            if (msg.what == MSG_SHOW_TITLE) {
+                mIsAnimating = false;
+                showTitle();
+                mTitleBar.getUi().showTitleBarForDuration();
+            }
+        }
+    };
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+        mGoLive = mFavicon = (ImageView) findViewById(R.id.favicon);
+        if (mGoLive == null) {
+            mGoLive = findViewById(R.id.date_icon);
+        }
+        mDate = (TextView) findViewById(R.id.date);
+        mTitle = (TextView) findViewById(R.id.title);
+        mBookmarks = findViewById(R.id.all_btn);
+        mTabSwitcher = findViewById(R.id.tab_switcher);
+        mOverflowMenu = findViewById(R.id.more);
+        mToggleContainer = findViewById(R.id.toggle_container);
+        mDateContainer = findViewById(R.id.date_container);
+
+        if (mBookmarks != null) {
+            mBookmarks.setOnClickListener(this);
+        }
+        if (mTabSwitcher != null) {
+            mTabSwitcher.setOnClickListener(this);
+        }
+        if (mOverflowMenu != null) {
+            mOverflowMenu.setOnClickListener(this);
+            boolean showMenu = !ViewConfiguration.get(getContext())
+                    .hasPermanentMenuKey();
+            mOverflowMenu.setVisibility(showMenu ? VISIBLE : GONE);
+        }
+        if (mToggleContainer != null) {
+            mToggleContainer.setOnClickListener(this);
+            resetAnimation();
+        }
+        mGoLive.setOnClickListener(this);
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int l, int t, int r, int b) {
+        super.onLayout(changed, l, t, r, b);
+        if (mToggleContainer != null) {
+            mAnimRadius = mToggleContainer.getHeight() / 2f;
+        }
+    }
+
+    void resetAnimation() {
+        if (mToggleContainer == null) {
+            // No animation needed/used
+            return;
+        }
+        if (mTitleAnimator != null) {
+            mTitleAnimator.cancel();
+            mTitleAnimator = null;
+        }
+        if (mDateAnimator != null) {
+            mDateAnimator.cancel();
+            mDateAnimator = null;
+        }
+        mIsAnimating = false;
+        mHandler.removeMessages(MSG_SHOW_TITLE);
+        mTitle.setAlpha(1f);
+        mTitle.setTranslationY(0f);
+        mTitle.setRotationX(0f);
+        mDateContainer.setAlpha(0f);
+        mDateContainer.setTranslationY(-mAnimRadius);
+        mDateContainer.setRotationX(90f);
+    }
+
+    private void showDate() {
+        mTitleAnimator = mTitle.animate()
+                .alpha(0f)
+                .translationY(mAnimRadius)
+                .rotationX(-90f);
+        mDateAnimator = mDateContainer.animate()
+                .alpha(1f)
+                .translationY(0f)
+                .rotationX(0f);
+    }
+
+    private void showTitle() {
+        mTitleAnimator = mTitle.animate()
+                .alpha(1f)
+                .translationY(0f)
+                .rotationX(0f);
+        mDateAnimator = mDateContainer.animate()
+                .alpha(0f)
+                .translationY(-mAnimRadius)
+                .rotationX(90f);
+    }
+
+    @Override
+    public void onClick(View v) {
+        if (mBookmarks == v) {
+            mTitleBar.getUiController().bookmarksOrHistoryPicker(false);
+        } else if (mGoLive == v) {
+            goLive();
+        } else if (mTabSwitcher == v) {
+            ((PhoneUi) mTitleBar.getUi()).toggleNavScreen();
+        } else if (mOverflowMenu == v) {
+            NavigationBarBase navBar = mTitleBar.getNavigationBar();
+            if (navBar instanceof NavigationBarPhone) {
+                ((NavigationBarPhone)navBar).showMenu(mOverflowMenu);
+            }
+        } else if (mToggleContainer == v && !mIsAnimating) {
+            mIsAnimating = true;
+            showDate();
+            mTitleBar.getUi().showTitleBar();
+            Message m = mHandler.obtainMessage(MSG_SHOW_TITLE);
+            mHandler.sendMessageDelayed(m, DURATION_SHOW_DATE);
+        }
+    }
+
+    private void goLive() {
+        Tab t = mTitleBar.getUi().getActiveTab();
+        t.loadUrl(t.getUrl(), null);
+    }
+
+    public void onTabDataChanged(Tab tab) {
+        if (!tab.isSnapshot()) return;
+        SnapshotTab snapshot = (SnapshotTab) tab;
+        DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG);
+        mDate.setText(dateFormat.format(new Date(snapshot.getDateCreated())));
+        String title = snapshot.getTitle();
+        if (TextUtils.isEmpty(title)) {
+            title = UrlUtils.stripUrl(snapshot.getUrl());
+        }
+        mTitle.setText(title);
+        setFavicon(tab.getFavicon());
+        resetAnimation();
+    }
+
+    public void setFavicon(Bitmap icon) {
+        if (mFavicon == null) return;
+        mFavicon.setImageDrawable(mTitleBar.getUi().getFaviconDrawable(icon));
+    }
+
+    public boolean isAnimating() {
+        return mIsAnimating;
+    }
+
+}
diff --git a/src/com/android/browser/SnapshotTab.java b/src/com/android/browser/SnapshotTab.java
index f0abf58..e57502f 100644
--- a/src/com/android/browser/SnapshotTab.java
+++ b/src/com/android/browser/SnapshotTab.java
@@ -28,6 +28,7 @@
 import com.android.browser.provider.SnapshotProvider.Snapshots;
 
 import java.io.ByteArrayInputStream;
+import java.util.Map;
 import java.util.zip.GZIPInputStream;
 
 
@@ -38,19 +39,16 @@
     private long mSnapshotId;
     private LoadData mLoadTask;
     private WebViewFactory mWebViewFactory;
-    // TODO: Support non-persistent webview's on phone
-    private boolean mPersistentWebview;
     private int mBackgroundColor;
+    private long mDateCreated;
+    private boolean mIsLive;
 
     public SnapshotTab(WebViewController wvcontroller, long snapshotId) {
         super(wvcontroller, null);
         mSnapshotId = snapshotId;
         mWebViewFactory = mWebViewController.getWebViewFactory();
-        mPersistentWebview = !BrowserActivity.isTablet(wvcontroller.getActivity());
-        if (mPersistentWebview) {
-            WebView web = mWebViewFactory.createWebView(false);
-            setWebView(web);
-        }
+        WebView web = mWebViewFactory.createWebView(false);
+        setWebView(web);
         loadData();
     }
 
@@ -71,9 +69,6 @@
     void putInBackground() {
         if (getWebView() == null) return;
         super.putInBackground();
-        if (!mPersistentWebview) {
-            super.destroy();
-        }
     }
 
     void loadData() {
@@ -90,7 +85,7 @@
 
     @Override
     public boolean isSnapshot() {
-        return true;
+        return !mIsLive;
     }
 
     public long getSnapshotId() {
@@ -107,6 +102,40 @@
         return false;
     }
 
+    public long getDateCreated() {
+        return mDateCreated;
+    }
+
+    @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;
+    }
+
+    @Override
+    public boolean canGoForward() {
+        return mIsLive && super.canGoForward();
+    }
+
+    @Override
+    public void goBack() {
+        if (super.canGoBack()) {
+            super.goBack();
+        } else {
+            mIsLive = false;
+            getWebView().stopLoading();
+            loadData();
+        }
+    }
+
     static class LoadData extends AsyncTask<Void, Void, Cursor> {
 
         static final String[] PROJECTION = new String[] {
@@ -116,6 +145,7 @@
             Snapshots.FAVICON, // 3
             Snapshots.VIEWSTATE, // 4
             Snapshots.BACKGROUND, // 5
+            Snapshots.DATE_CREATED, // 6
         };
 
         private SnapshotTab mTab;
@@ -156,6 +186,7 @@
                         }
                     }
                     mTab.mBackgroundColor = result.getInt(5);
+                    mTab.mDateCreated = result.getLong(6);
                     mTab.mWebViewController.onPageFinished(mTab);
                 }
             } finally {
diff --git a/src/com/android/browser/SystemAllowGeolocationOrigins.java b/src/com/android/browser/SystemAllowGeolocationOrigins.java
index b53611f..a01541f 100644
--- a/src/com/android/browser/SystemAllowGeolocationOrigins.java
+++ b/src/com/android/browser/SystemAllowGeolocationOrigins.java
@@ -73,49 +73,48 @@
     }
 
     void maybeApplySettingAsync() {
-        new AsyncTask<Void,Void,Void>() {
-            @Override
-            protected Void doInBackground(Void... params) {
-                maybeApplySetting();
-                return null;
-            }
-        }.execute();
+        BackgroundHandler.execute(mMaybeApplySetting);
     }
 
     /**
      * Checks to see if the system setting has changed and if so,
      * updates the Geolocation permissions accordingly.
      */
-    private void maybeApplySetting() {
-        // Get the new value
-        String newSetting = getSystemSetting();
+    private Runnable mMaybeApplySetting = new Runnable() {
 
-        // Get the last read value
-        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
-        String lastReadSetting =
-                preferences.getString(LAST_READ_ALLOW_GEOLOCATION_ORIGINS, "");
+        @Override
+        public void run() {
+         // Get the new value
+            String newSetting = getSystemSetting();
 
-        // If the new value is the same as the last one we read, we're done.
-        if (TextUtils.equals(lastReadSetting, newSetting)) {
-            return;
+            // Get the last read value
+            SharedPreferences preferences = BrowserSettings.getInstance()
+                    .getPreferences();
+            String lastReadSetting =
+                    preferences.getString(LAST_READ_ALLOW_GEOLOCATION_ORIGINS, "");
+
+            // If the new value is the same as the last one we read, we're done.
+            if (TextUtils.equals(lastReadSetting, newSetting)) {
+                return;
+            }
+
+            // Save the new value as the last read value
+            preferences.edit()
+                    .putString(LAST_READ_ALLOW_GEOLOCATION_ORIGINS, newSetting)
+                    .apply();
+
+            Set<String> oldOrigins = parseAllowGeolocationOrigins(lastReadSetting);
+            Set<String> newOrigins = parseAllowGeolocationOrigins(newSetting);
+            Set<String> addedOrigins = setMinus(newOrigins, oldOrigins);
+            Set<String> removedOrigins = setMinus(oldOrigins, newOrigins);
+
+            // Remove the origins in the last read value
+            removeOrigins(removedOrigins);
+
+            // Add the origins in the new value
+            addOrigins(addedOrigins);
         }
-
-        // Save the new value as the last read value
-        preferences.edit()
-                .putString(LAST_READ_ALLOW_GEOLOCATION_ORIGINS, newSetting)
-                .apply();
-
-        Set<String> oldOrigins = parseAllowGeolocationOrigins(lastReadSetting);
-        Set<String> newOrigins = parseAllowGeolocationOrigins(newSetting);
-        Set<String> addedOrigins = setMinus(newOrigins, oldOrigins);
-        Set<String> removedOrigins = setMinus(oldOrigins, newOrigins);
-
-        // Remove the origins in the last read value
-        removeOrigins(removedOrigins);
-
-        // Add the origins in the new value
-        addOrigins(addedOrigins);
-    }
+    };
 
     /**
      * Parses the value of the default geolocation permissions setting.
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index d8a3af9..beac2ff 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -26,11 +26,14 @@
 import android.content.DialogInterface.OnCancelListener;
 import android.content.Intent;
 import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
 import android.graphics.Bitmap.CompressFormat;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Picture;
 import android.net.Uri;
 import android.net.http.SslError;
 import android.os.Bundle;
+import android.os.Handler;
 import android.os.Message;
 import android.os.SystemClock;
 import android.security.KeyChain;
@@ -57,6 +60,7 @@
 import android.webkit.WebResourceResponse;
 import android.webkit.WebStorage;
 import android.webkit.WebView;
+import android.webkit.WebView.PictureListener;
 import android.webkit.WebViewClient;
 import android.widget.CheckBox;
 import android.widget.LinearLayout;
@@ -79,7 +83,7 @@
 /**
  * Class for maintaining Tabs with a main WebView and a subwindow.
  */
-class Tab {
+class Tab implements PictureListener {
 
     // Log Tag
     private static final String LOGTAG = "Tab";
@@ -88,6 +92,9 @@
     // of the browser.
     private static final String CONSOLE_LOGTAG = "browser";
 
+    private static final int MSG_CAPTURE = 42;
+    private static final int CAPTURE_DELAY = 500;
+
     public enum LockIcon {
         LOCK_ICON_UNSECURE,
         LOCK_ICON_SECURE,
@@ -148,8 +155,12 @@
     // AsyncTask for downloading touch icons
     DownloadTouchIcon mTouchIconLoader;
 
-    private Bitmap mScreenshot;
     private BrowserSettings mSettings;
+    private int mCaptureWidth;
+    private int mCaptureHeight;
+    private Bitmap mCapture;
+    private Handler mHandler;
+
 
     // All the state needed for a page
     protected static class PageState {
@@ -555,6 +566,11 @@
 
         @Override
         public void onPageFinished(WebView view, String url) {
+            if (!mInPageLoad) {
+                // In page navigation links (www.something.com#footer) will
+                // trigger an onPageFinished which we don't care about.
+                return;
+            }
             if (!isPrivateBrowsingEnabled()) {
                 LogTag.logPageFinishedLoading(
                         url, SystemClock.uptimeMillis() - mLoadStartTime);
@@ -1378,6 +1394,16 @@
         };
 
         setWebView(w);
+        mCaptureWidth = mContext.getResources().getDimensionPixelSize(R.dimen.nav_tab_width);
+        mCaptureHeight = mContext.getResources().getDimensionPixelSize(R.dimen.nav_tab_height);
+        mCapture = Bitmap.createBitmap(mCaptureWidth, mCaptureHeight,
+                Bitmap.Config.RGB_565);
+        mHandler = new Handler() {
+            public void handleMessage(Message m) {
+                Tab.this.capture();
+            }
+        };
+
     }
 
     public void setController(WebViewController ctl) {
@@ -1421,6 +1447,7 @@
             // switched to another tab while waiting for the download to start.
             mMainView.setDownloadListener(mDownloadListener);
             mMainView.setWebBackForwardListClient(mWebBackForwardListClient);
+            mMainView.setPictureListener(this);
         }
     }
 
@@ -1430,6 +1457,8 @@
     void destroy() {
         if (mMainView != null) {
             dismissSubWindow();
+            // Make sure the embedded title bar isn't still attached
+            mMainView.setEmbeddedTitleBar(null);
             // save the WebView to call destroy() after detach it from the tab
             WebView webView = mMainView;
             setWebView(null);
@@ -1775,9 +1804,9 @@
     }
 
     Bundle getSavedState(boolean saveImages) {
-        if (saveImages && mScreenshot != null) {
+        if (saveImages && mCapture != null) {
             Bundle b = new Bundle(mSavedState);
-            b.putParcelable(SCREENSHOT, mScreenshot);
+            b.putParcelable(SCREENSHOT, mCapture);
             return b;
         }
         return mSavedState;
@@ -1836,7 +1865,10 @@
         mSavedState = null;
         mId = b.getLong(ID);
         mAppId = b.getString(APPID);
-        mScreenshot = b.getParcelable(SCREENSHOT);
+        final Bitmap sshot = b.getParcelable(SCREENSHOT);
+        if (sshot != null) {
+            mCapture = sshot;
+        }
         if (b.getBoolean(USERAGENT)
                 != mSettings.hasDesktopUseragent(getWebView())) {
             mSettings.toggleDesktopUseragent(getWebView());
@@ -1865,11 +1897,11 @@
     };
 
     public void setScreenshot(Bitmap screenshot) {
-        mScreenshot = screenshot;
+        mCapture = screenshot;
     }
 
     public Bitmap getScreenshot() {
-        return mScreenshot;
+        return mCapture;
     }
 
     public boolean isSnapshot() {
@@ -1922,4 +1954,43 @@
         }
     }
 
+    protected void capture() {
+        if (mMainView == null || mCapture == null) return;
+        Canvas c = new Canvas(mCapture);
+        final int left = mMainView.getScrollX();
+        final int top = mMainView.getScrollY() + mMainView.getVisibleTitleHeight();
+        c.translate(-left, -top);
+        float scale = mCaptureWidth / (float) mMainView.getWidth();
+        c.scale(scale, scale, left, top);
+        mMainView.draw(c);
+    }
+
+    @Override
+    public void onNewPicture(WebView view, Picture picture) {
+        //update screenshot
+        if (!mHandler.hasMessages(MSG_CAPTURE)) {
+            mHandler.sendEmptyMessageDelayed(MSG_CAPTURE, CAPTURE_DELAY);
+        }
+    }
+
+    public boolean canGoBack() {
+        return mMainView != null ? mMainView.canGoBack() : false;
+    }
+
+    public boolean canGoForward() {
+        return mMainView != null ? mMainView.canGoForward() : false;
+    }
+
+    public void goBack() {
+        if (mMainView != null) {
+            mMainView.goBack();
+        }
+    }
+
+    public void goForward() {
+        if (mMainView != null) {
+            mMainView.goForward();
+        }
+    }
+
 }
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 5f3995f..7055ef3 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -155,7 +155,7 @@
     }
 
     boolean canCreateNewTab() {
-        return mMaxTabs != mTabs.size();
+        return mMaxTabs > mTabs.size();
     }
 
     /**
@@ -186,11 +186,10 @@
      *         number of open tabs.
      */
     Tab createNewTab(boolean privateBrowsing) {
-        int size = mTabs.size();
-        // Return false if we have maxed out on tabs
-        if (mMaxTabs == size) {
+        if (!canCreateNewTab()) {
             return null;
         }
+
         final WebView w = createNewWebView(privateBrowsing);
 
         // Create a new tab and add it to the tab list
@@ -297,10 +296,12 @@
         long[] ids = new long[numTabs];
         int i = 0;
         for (Tab tab : mTabs) {
-            ids[i++] = tab.getId();
             if (tab.saveState()) {
+                ids[i++] = tab.getId();
                 outState.putBundle(Long.toString(tab.getId()),
                         tab.getSavedState(saveImages));
+            } else {
+                ids[i++] = -1;
             }
         }
         if (!outState.isEmpty()) {
@@ -327,13 +328,12 @@
         }
         final long oldcurrent = inState.getLong(CURRENT);
         long current = -1;
-        if (restoreIncognitoTabs ||
-                !inState.getBundle(Long.toString(oldcurrent)).getBoolean(Tab.INCOGNITO)) {
+        if (restoreIncognitoTabs || (hasState(oldcurrent, inState) && !isIncognito(oldcurrent, inState))) {
                 current = oldcurrent;
         } else {
             // pick first non incognito tab
             for (long id : ids) {
-                if (!inState.getBundle(Long.toString(id)).getBoolean(Tab.INCOGNITO)) {
+                if (hasState(id, inState) && !isIncognito(id, inState)) {
                     current = id;
                     break;
                 }
@@ -342,6 +342,20 @@
         return current;
     }
 
+    private boolean hasState(long id, Bundle state) {
+        if (id == -1) return false;
+        Bundle tab = state.getBundle(Long.toString(id));
+        return ((tab != null) && !tab.isEmpty());
+    }
+
+    private boolean isIncognito(long id, Bundle state) {
+        Bundle tabstate = state.getBundle(Long.toString(id));
+        if ((tabstate != null) && !tabstate.isEmpty()) {
+            return tabstate.getBoolean(Tab.INCOGNITO);
+        }
+        return false;
+    }
+
     /**
      * Restore the state of all the tabs.
      * @param currentId The tab id to restore.
@@ -374,6 +388,11 @@
                 // ignore tab
             } else if (id == currentId || restoreAll) {
                 Tab t = createNewTab();
+                if (t == null) {
+                    // We could "break" at this point, but we want
+                    // sNextId to be set correctly.
+                    continue;
+                }
                 tabMap.put(id, t);
                 // Me must set the current tab before restoring the state
                 // so that all the client classes are set.
@@ -401,11 +420,12 @@
                 // added the tab to the front as they are not current
                 mTabQueue.add(0, t);
             }
-            // make sure that there is no id overlap between the restored
-            // and new tabs
-            sNextId = maxId + 1;
-
         }
+
+        // make sure that there is no id overlap between the restored
+        // and new tabs
+        sNextId = maxId + 1;
+
         if (mCurrentTab == -1) {
             if (getTabCount() > 0) {
                 setCurrentTab(getTab(0));
diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java
new file mode 100644
index 0000000..9848a39
--- /dev/null
+++ b/src/com/android/browser/TitleBar.java
@@ -0,0 +1,361 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import android.animation.Animator;
+import android.animation.Animator.AnimatorListener;
+import android.animation.ObjectAnimator;
+import android.content.Context;
+import android.content.res.Resources;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.animation.Animation;
+import android.view.animation.Animation.AnimationListener;
+import android.view.animation.AnimationUtils;
+import android.view.animation.DecelerateInterpolator;
+import android.webkit.WebView;
+import android.widget.AbsoluteLayout;
+import android.widget.FrameLayout;
+import android.widget.RelativeLayout;
+
+
+/**
+ * Base class for a title bar used by the browser.
+ */
+public class TitleBar extends RelativeLayout {
+
+    private static final int PROGRESS_MAX = 100;
+    private static final float ANIM_TITLEBAR_DECELERATE = 2.5f;
+
+    private UiController mUiController;
+    private BaseUi mBaseUi;
+    private FrameLayout mParent;
+    private PageProgressView mProgress;
+
+    private AutologinBar mAutoLogin;
+    private NavigationBarBase mNavBar;
+    private boolean mUseQuickControls;
+    private SnapshotBar mSnapshotBar;
+
+    //state
+    private boolean mShowing;
+    private boolean mInLoad;
+    private boolean mSkipTitleBarAnimations;
+    private Animator mTitleBarAnimator;
+
+    public TitleBar(Context context, UiController controller, BaseUi ui,
+            FrameLayout parent) {
+        super(context, null);
+        mUiController = controller;
+        mBaseUi = ui;
+        mParent = parent;
+        initLayout(context);
+    }
+
+    private void initLayout(Context context) {
+        LayoutInflater factory = LayoutInflater.from(context);
+        factory.inflate(R.layout.title_bar, this);
+        mProgress = (PageProgressView) findViewById(R.id.progress);
+        mAutoLogin = (AutologinBar) findViewById(R.id.autologin);
+        mAutoLogin.setTitleBar(this);
+        mNavBar = (NavigationBarBase) findViewById(R.id.taburlbar);
+        mNavBar.setTitleBar(this);
+        mSnapshotBar = (SnapshotBar) findViewById(R.id.snapshotbar);
+        mSnapshotBar.setTitleBar(this);
+    }
+
+    public BaseUi getUi() {
+        return mBaseUi;
+    }
+
+    public UiController getUiController() {
+        return mUiController;
+    }
+
+    public void setUseQuickControls(boolean use) {
+        mUseQuickControls = use;
+        setLayoutParams(makeLayoutParams());
+    }
+
+    void setShowProgressOnly(boolean progress) {
+        if (progress && !wantsToBeVisible()) {
+            mNavBar.setVisibility(View.GONE);
+        } else {
+            mNavBar.setVisibility(View.VISIBLE);
+        }
+    }
+
+    void setSkipTitleBarAnimations(boolean skip) {
+        mSkipTitleBarAnimations = skip;
+    }
+
+    void setupTitleBarAnimator(Animator animator) {
+        Resources res = mContext.getResources();
+        int duration = res.getInteger(R.integer.titlebar_animation_duration);
+        animator.setInterpolator(new DecelerateInterpolator(
+                ANIM_TITLEBAR_DECELERATE));
+        animator.setDuration(duration);
+    }
+
+    void show() {
+        if (mUseQuickControls) {
+            mParent.addView(this);
+        } else {
+            if (!mSkipTitleBarAnimations) {
+                cancelTitleBarAnimation(false);
+                int visibleHeight = getVisibleTitleHeight();
+                float startPos = (-getEmbeddedHeight() + visibleHeight);
+                if (getTranslationY() != 0) {
+                    startPos = Math.max(startPos, getTranslationY());
+                }
+                mTitleBarAnimator = ObjectAnimator.ofFloat(this,
+                        "translationY",
+                        startPos, 0);
+                setupTitleBarAnimator(mTitleBarAnimator);
+                mTitleBarAnimator.start();
+            }
+            mBaseUi.setTitleGravity(Gravity.TOP);
+        }
+        mShowing = true;
+    }
+
+    void hide() {
+        if (mUseQuickControls) {
+            mParent.removeView(this);
+        } else {
+            if (!mSkipTitleBarAnimations) {
+                cancelTitleBarAnimation(false);
+                int visibleHeight = getVisibleTitleHeight();
+                mTitleBarAnimator = ObjectAnimator.ofFloat(this,
+                        "translationY", getTranslationY(),
+                        (-getEmbeddedHeight() + visibleHeight));
+                mTitleBarAnimator.addListener(mHideTileBarAnimatorListener);
+                setupTitleBarAnimator(mTitleBarAnimator);
+                mTitleBarAnimator.start();
+            } else {
+                mBaseUi.setTitleGravity(Gravity.NO_GRAVITY);
+            }
+        }
+        mShowing = false;
+    }
+
+    boolean isShowing() {
+        return mShowing;
+    }
+
+    void cancelTitleBarAnimation(boolean reset) {
+        if (mTitleBarAnimator != null) {
+            mTitleBarAnimator.cancel();
+            mTitleBarAnimator = null;
+        }
+        if (reset) {
+            setTranslationY(0);
+        }
+    }
+
+    private AnimatorListener mHideTileBarAnimatorListener = new AnimatorListener() {
+
+        boolean mWasCanceled;
+        @Override
+        public void onAnimationStart(Animator animation) {
+            mWasCanceled = false;
+        }
+
+        @Override
+        public void onAnimationRepeat(Animator animation) {
+        }
+
+        @Override
+        public void onAnimationEnd(Animator animation) {
+            if (!mWasCanceled) {
+                setTranslationY(0);
+            }
+            mBaseUi.setTitleGravity(Gravity.NO_GRAVITY);
+        }
+
+        @Override
+        public void onAnimationCancel(Animator animation) {
+            mWasCanceled = true;
+        }
+    };
+
+    private int getVisibleTitleHeight() {
+        Tab tab = mBaseUi.getActiveTab();
+        WebView webview = tab != null ? tab.getWebView() : null;
+        return webview != null ? webview.getVisibleTitleHeight() : 0;
+    }
+
+    /**
+     * Update the progress, from 0 to 100.
+     */
+    public void setProgress(int newProgress) {
+        if (newProgress >= PROGRESS_MAX) {
+            mProgress.setProgress(PageProgressView.MAX_PROGRESS);
+            mProgress.setVisibility(View.GONE);
+            mInLoad = false;
+            mNavBar.onProgressStopped();
+            // check if needs to be hidden
+            if (!isEditingUrl() && !wantsToBeVisible()) {
+                hide();
+                if (mUseQuickControls) {
+                    setShowProgressOnly(false);
+                }
+            }
+        } else {
+            if (!mInLoad) {
+                mProgress.setVisibility(View.VISIBLE);
+                mInLoad = true;
+                mNavBar.onProgressStarted();
+            }
+            mProgress.setProgress(newProgress * PageProgressView.MAX_PROGRESS
+                    / PROGRESS_MAX);
+            if (!mShowing) {
+                if (mUseQuickControls && !isEditingUrl()) {
+                    setShowProgressOnly(true);
+                }
+                show();
+            }
+        }
+    }
+
+    public int getEmbeddedHeight() {
+        int height = mNavBar.getHeight();
+        if (mAutoLogin.getVisibility() == View.VISIBLE) {
+            height += mAutoLogin.getHeight();
+        }
+        return height;
+    }
+
+    public void updateAutoLogin(Tab tab, boolean animate) {
+        mAutoLogin.updateAutoLogin(tab, animate);
+    }
+
+    public void showAutoLogin(boolean animate) {
+        if (mUseQuickControls) {
+            mBaseUi.showTitleBar();
+        }
+        mAutoLogin.setVisibility(View.VISIBLE);
+        if (animate) {
+            mAutoLogin.startAnimation(AnimationUtils.loadAnimation(
+                    getContext(), R.anim.autologin_enter));
+        }
+    }
+
+    public void hideAutoLogin(boolean animate) {
+        if (mUseQuickControls) {
+            mBaseUi.hideTitleBar();
+            mAutoLogin.setVisibility(View.GONE);
+            mBaseUi.refreshWebView();
+        } else {
+            if (animate) {
+                Animation anim = AnimationUtils.loadAnimation(getContext(),
+                        R.anim.autologin_exit);
+                anim.setAnimationListener(new AnimationListener() {
+                    @Override
+                    public void onAnimationEnd(Animation a) {
+                        mAutoLogin.setVisibility(View.GONE);
+                        mBaseUi.refreshWebView();
+                    }
+
+                    @Override
+                    public void onAnimationStart(Animation a) {
+                    }
+
+                    @Override
+                    public void onAnimationRepeat(Animation a) {
+                    }
+                });
+                mAutoLogin.startAnimation(anim);
+            } else if (mAutoLogin.getAnimation() == null) {
+                mAutoLogin.setVisibility(View.GONE);
+                mBaseUi.refreshWebView();
+            }
+        }
+    }
+
+    public boolean wantsToBeVisible() {
+        return inAutoLogin()
+            || (mSnapshotBar.getVisibility() == View.VISIBLE
+                    && mSnapshotBar.isAnimating());
+    }
+
+    private boolean inAutoLogin() {
+        return mAutoLogin.getVisibility() == View.VISIBLE;
+    }
+
+    public boolean isEditingUrl() {
+        return mNavBar.isEditingUrl();
+    }
+
+    public WebView getCurrentWebView() {
+        Tab t = mBaseUi.getActiveTab();
+        if (t != null) {
+            return t.getWebView();
+        } else {
+            return null;
+        }
+    }
+
+    public PageProgressView getProgressView() {
+        return mProgress;
+    }
+
+    public NavigationBarBase getNavigationBar() {
+        return mNavBar;
+    }
+
+    public boolean useQuickControls() {
+        return mUseQuickControls;
+    }
+
+    public boolean isInLoad() {
+        return mInLoad;
+    }
+
+    private ViewGroup.LayoutParams makeLayoutParams() {
+        if (mUseQuickControls) {
+            return new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,
+                    LayoutParams.WRAP_CONTENT);
+        } else {
+            return new AbsoluteLayout.LayoutParams(
+                    LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT,
+                    0, 0);
+        }
+    }
+
+    @Override
+    public View focusSearch(View focused, int dir) {
+        if (FOCUS_DOWN == dir && hasFocus()) {
+            return getCurrentWebView();
+        }
+        return super.focusSearch(focused, dir);
+    }
+
+    public void onTabDataChanged(Tab tab) {
+        mSnapshotBar.onTabDataChanged(tab);
+        if (tab.isSnapshot()) {
+            mSnapshotBar.setVisibility(VISIBLE);
+            mNavBar.setVisibility(GONE);
+        } else {
+            mSnapshotBar.setVisibility(GONE);
+            mNavBar.setVisibility(VISIBLE);
+        }
+    }
+
+}
diff --git a/src/com/android/browser/TitleBarBase.java b/src/com/android/browser/TitleBarBase.java
deleted file mode 100644
index 17b9e19..0000000
--- a/src/com/android/browser/TitleBarBase.java
+++ /dev/null
@@ -1,664 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.browser;
-
-import android.animation.Animator;
-import android.animation.Animator.AnimatorListener;
-import android.animation.ObjectAnimator;
-import android.app.SearchManager;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.drawable.Drawable;
-import android.os.Bundle;
-import android.speech.RecognizerResultsIntent;
-import android.text.TextUtils;
-import android.view.ContextThemeWrapper;
-import android.view.Gravity;
-import android.view.KeyEvent;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.View.OnFocusChangeListener;
-import android.view.ViewGroup;
-import android.view.animation.Animation;
-import android.view.animation.Animation.AnimationListener;
-import android.view.animation.AnimationUtils;
-import android.view.animation.DecelerateInterpolator;
-import android.webkit.WebView;
-import android.widget.AbsoluteLayout;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.PopupMenu;
-import android.widget.PopupMenu.OnMenuItemClickListener;
-import android.widget.ProgressBar;
-import android.widget.RelativeLayout;
-import android.widget.Spinner;
-import android.widget.TextView;
-
-import com.android.browser.UI.DropdownChangeListener;
-import com.android.browser.UrlInputView.UrlInputListener;
-import com.android.browser.autocomplete.SuggestedTextController.TextChangeWatcher;
-
-import java.util.List;
-
-/**
- * Base class for a title bar used by the browser.
- */
-public class TitleBarBase extends RelativeLayout
-        implements OnClickListener, OnFocusChangeListener, UrlInputListener,
-        TextChangeWatcher, DeviceAccountLogin.AutoLoginCallback,
-        OnMenuItemClickListener {
-
-    protected static final int PROGRESS_MAX = 100;
-    private static final float ANIM_TITLEBAR_DECELERATE = 2.5f;
-
-    // These need to be set by the subclass.
-    protected ImageView mFavicon;
-    protected ImageView mLockIcon;
-
-    protected UiController mUiController;
-    protected BaseUi mBaseUi;
-    protected FrameLayout mParent;
-    protected PageProgressView mProgress;
-    protected UrlInputView mUrlInput;
-    protected boolean mInVoiceMode;
-    protected View mContainer;
-    private View mUaSwitcher;
-
-    // Auto-login UI
-    protected View mAutoLogin;
-    protected Spinner mAutoLoginAccount;
-    protected Button mAutoLoginLogin;
-    protected ProgressBar mAutoLoginProgress;
-    protected TextView mAutoLoginError;
-    protected View mAutoLoginCancel;
-    protected DeviceAccountLogin mAutoLoginHandler;
-    protected ArrayAdapter<String> mAccountsAdapter;
-    protected boolean mUseQuickControls;
-
-    //state
-    protected boolean mShowing;
-    protected boolean mInLoad;
-    protected boolean mSkipTitleBarAnimations;
-    private Animator mTitleBarAnimator;
-
-    public TitleBarBase(Context context, UiController controller, BaseUi ui,
-            FrameLayout parent) {
-        super(context, null);
-        mUiController = controller;
-        mBaseUi = ui;
-        mParent = parent;
-    }
-
-    protected void initLayout(Context context, int layoutId) {
-        LayoutInflater factory = LayoutInflater.from(context);
-        factory.inflate(layoutId, this);
-        mContainer = findViewById(R.id.taburlbar);
-        mProgress = (PageProgressView) findViewById(R.id.progress);
-        mUrlInput = (UrlInputView) findViewById(R.id.url);
-        mLockIcon = (ImageView) findViewById(R.id.lock);
-        mUrlInput.setUrlInputListener(this);
-        mUrlInput.setController(mUiController);
-        mUrlInput.setOnFocusChangeListener(this);
-        mUrlInput.setSelectAllOnFocus(true);
-        mUrlInput.addQueryTextWatcher(this);
-        mAutoLogin = findViewById(R.id.autologin);
-        mAutoLoginAccount = (Spinner) findViewById(R.id.autologin_account);
-        mAutoLoginLogin = (Button) findViewById(R.id.autologin_login);
-        mAutoLoginLogin.setOnClickListener(this);
-        mAutoLoginProgress = (ProgressBar) findViewById(R.id.autologin_progress);
-        mAutoLoginError = (TextView) findViewById(R.id.autologin_error);
-        mAutoLoginCancel = mAutoLogin.findViewById(R.id.autologin_close);
-        mAutoLoginCancel.setOnClickListener(this);
-    }
-
-    protected void setupUrlInput() {
-    }
-
-    protected void setUseQuickControls(boolean use) {
-        mUseQuickControls = use;
-        setLayoutParams(makeLayoutParams());
-    }
-
-    void setShowProgressOnly(boolean progress) {
-        if (progress && !inAutoLogin()) {
-            mContainer.setVisibility(View.GONE);
-        } else {
-            mContainer.setVisibility(View.VISIBLE);
-        }
-    }
-
-    void setSkipTitleBarAnimations(boolean skip) {
-        mSkipTitleBarAnimations = skip;
-    }
-
-    void setupTitleBarAnimator(Animator animator) {
-        Resources res = mContext.getResources();
-        int duration = res.getInteger(R.integer.titlebar_animation_duration);
-        animator.setInterpolator(new DecelerateInterpolator(
-                ANIM_TITLEBAR_DECELERATE));
-        animator.setDuration(duration);
-    }
-
-    void show() {
-        if (mUseQuickControls) {
-            mParent.addView(this);
-        } else {
-            if (!mSkipTitleBarAnimations) {
-                cancelTitleBarAnimation(false);
-                int visibleHeight = getVisibleTitleHeight();
-                float startPos = (-getEmbeddedHeight() + visibleHeight);
-                if (getTranslationY() != 0) {
-                    startPos = Math.max(startPos, getTranslationY());
-                }
-                mTitleBarAnimator = ObjectAnimator.ofFloat(this,
-                        "translationY",
-                        startPos, 0);
-                setupTitleBarAnimator(mTitleBarAnimator);
-                mTitleBarAnimator.start();
-            }
-            mBaseUi.setTitleGravity(Gravity.TOP);
-        }
-        mShowing = true;
-    }
-
-    void hide() {
-        if (mUseQuickControls) {
-            mParent.removeView(this);
-        } else {
-            if (!mSkipTitleBarAnimations) {
-                cancelTitleBarAnimation(false);
-                int visibleHeight = getVisibleTitleHeight();
-                mTitleBarAnimator = ObjectAnimator.ofFloat(this,
-                        "translationY", getTranslationY(),
-                        (-getEmbeddedHeight() + visibleHeight));
-                mTitleBarAnimator.addListener(mHideTileBarAnimatorListener);
-                setupTitleBarAnimator(mTitleBarAnimator);
-                mTitleBarAnimator.start();
-            } else {
-                mBaseUi.setTitleGravity(Gravity.NO_GRAVITY);
-            }
-        }
-        mShowing = false;
-    }
-
-    boolean isShowing() {
-        return mShowing;
-    }
-
-    void cancelTitleBarAnimation(boolean reset) {
-        if (mTitleBarAnimator != null) {
-            mTitleBarAnimator.cancel();
-            mTitleBarAnimator = null;
-        }
-        if (reset) {
-            setTranslationY(0);
-        }
-    }
-
-    private AnimatorListener mHideTileBarAnimatorListener = new AnimatorListener() {
-
-        boolean mWasCanceled;
-        @Override
-        public void onAnimationStart(Animator animation) {
-            mWasCanceled = false;
-        }
-
-        @Override
-        public void onAnimationRepeat(Animator animation) {
-        }
-
-        @Override
-        public void onAnimationEnd(Animator animation) {
-            if (!mWasCanceled) {
-                setTranslationY(0);
-            }
-            mBaseUi.setTitleGravity(Gravity.NO_GRAVITY);
-        }
-
-        @Override
-        public void onAnimationCancel(Animator animation) {
-            mWasCanceled = true;
-        }
-    };
-
-    private int getVisibleTitleHeight() {
-        Tab tab = mBaseUi.getActiveTab();
-        WebView webview = tab != null ? tab.getWebView() : null;
-        return webview != null ? webview.getVisibleTitleHeight() : 0;
-    }
-
-    /**
-     * Update the progress, from 0 to 100.
-     */
-    void setProgress(int newProgress) {
-        if (newProgress >= PROGRESS_MAX) {
-            mProgress.setProgress(PageProgressView.MAX_PROGRESS);
-            mProgress.setVisibility(View.GONE);
-            mInLoad = false;
-            onProgressStopped();
-            // check if needs to be hidden
-            if (!isEditingUrl() && !inAutoLogin()) {
-                hide();
-                if (mUseQuickControls) {
-                    setShowProgressOnly(false);
-                }
-            }
-        } else {
-            if (!mInLoad) {
-                mProgress.setVisibility(View.VISIBLE);
-                mInLoad = true;
-                onProgressStarted();
-            }
-            mProgress.setProgress(newProgress * PageProgressView.MAX_PROGRESS
-                    / PROGRESS_MAX);
-            if (!mShowing) {
-                if (mUseQuickControls && !isEditingUrl()) {
-                    setShowProgressOnly(true);
-                }
-                show();
-            }
-        }
-    }
-
-    protected void onProgressStarted() {
-    }
-
-    protected void onProgressStopped() {
-    }
-
-    /* package */ void setLock(Drawable d) {
-        assert mLockIcon != null;
-        if (null == d) {
-            mLockIcon.setVisibility(View.GONE);
-        } else {
-            mLockIcon.setImageDrawable(d);
-            mLockIcon.setVisibility(View.VISIBLE);
-        }
-    }
-
-    /* package */ void setFavicon(Bitmap icon) {
-        mFavicon.setImageDrawable(mBaseUi.getFaviconDrawable(icon));
-    }
-
-    public int getEmbeddedHeight() {
-        int height = mContainer.getHeight();
-        if (mAutoLogin.getVisibility() == View.VISIBLE) {
-            height += mAutoLogin.getHeight();
-        }
-        return height;
-    }
-
-    protected void updateAutoLogin(Tab tab, boolean animate) {
-        DeviceAccountLogin login = tab.getDeviceAccountLogin();
-        if (login != null) {
-            mAutoLoginHandler = login;
-            ContextThemeWrapper wrapper = new ContextThemeWrapper(mContext,
-                    android.R.style.Theme_Holo_Light);
-            mAccountsAdapter = new ArrayAdapter<String>(wrapper,
-                    android.R.layout.simple_spinner_item, login.getAccountNames());
-            mAccountsAdapter.setDropDownViewResource(
-                    android.R.layout.simple_spinner_dropdown_item);
-            mAutoLoginAccount.setAdapter(mAccountsAdapter);
-            mAutoLoginAccount.setSelection(0);
-            mAutoLoginAccount.setEnabled(true);
-            mAutoLoginLogin.setEnabled(true);
-            mAutoLoginProgress.setVisibility(View.INVISIBLE);
-            mAutoLoginError.setVisibility(View.GONE);
-            switch (login.getState()) {
-                case DeviceAccountLogin.PROCESSING:
-                    mAutoLoginAccount.setEnabled(false);
-                    mAutoLoginLogin.setEnabled(false);
-                    mAutoLoginProgress.setVisibility(View.VISIBLE);
-                    break;
-                case DeviceAccountLogin.FAILED:
-                    mAutoLoginProgress.setVisibility(View.INVISIBLE);
-                    mAutoLoginError.setVisibility(View.VISIBLE);
-                    break;
-                case DeviceAccountLogin.INITIAL:
-                    break;
-                default:
-                    throw new IllegalStateException();
-            }
-            showAutoLogin(animate);
-        } else {
-            hideAutoLogin(animate);
-        }
-    }
-
-    protected void showAutoLogin(boolean animate) {
-        if (mUseQuickControls) {
-            mBaseUi.showTitleBar();
-        }
-        mAutoLogin.setVisibility(View.VISIBLE);
-        if (animate) {
-            mAutoLogin.startAnimation(AnimationUtils.loadAnimation(
-                    getContext(), R.anim.autologin_enter));
-        }
-    }
-
-    protected void hideAutoLogin(boolean animate) {
-        mAutoLoginHandler = null;
-        if (mUseQuickControls) {
-            mBaseUi.hideTitleBar();
-            mAutoLogin.setVisibility(View.GONE);
-            mBaseUi.refreshWebView();
-        } else {
-            if (animate) {
-                Animation anim = AnimationUtils.loadAnimation(getContext(),
-                        R.anim.autologin_exit);
-                anim.setAnimationListener(new AnimationListener() {
-                    @Override
-                    public void onAnimationEnd(Animation a) {
-                        mAutoLogin.setVisibility(View.GONE);
-                        mBaseUi.refreshWebView();
-                    }
-
-                    @Override
-                    public void onAnimationStart(Animation a) {
-                    }
-
-                    @Override
-                    public void onAnimationRepeat(Animation a) {
-                    }
-                });
-                mAutoLogin.startAnimation(anim);
-            } else if (mAutoLogin.getAnimation() == null) {
-                mAutoLogin.setVisibility(View.GONE);
-                mBaseUi.refreshWebView();
-            }
-        }
-    }
-
-    @Override
-    public void loginFailed() {
-        mAutoLoginAccount.setEnabled(true);
-        mAutoLoginLogin.setEnabled(true);
-        mAutoLoginProgress.setVisibility(View.INVISIBLE);
-        mAutoLoginError.setVisibility(View.VISIBLE);
-    }
-
-
-    protected boolean inAutoLogin() {
-        return mAutoLoginHandler != null;
-    }
-
-    public void setUaSwitcher(View v) {
-        if (mUaSwitcher != null) {
-            mUaSwitcher.setOnClickListener(null);
-        }
-        mUaSwitcher = v;
-        mUaSwitcher.setOnClickListener(this);
-    }
-
-    @Override
-    public void onClick(View v) {
-        if (mAutoLoginCancel == v) {
-            if (mAutoLoginHandler != null) {
-                mAutoLoginHandler.cancel();
-                mAutoLoginHandler = null;
-            }
-            hideAutoLogin(true);
-        } else if (mAutoLoginLogin == v) {
-            if (mAutoLoginHandler != null) {
-                mAutoLoginAccount.setEnabled(false);
-                mAutoLoginLogin.setEnabled(false);
-                mAutoLoginProgress.setVisibility(View.VISIBLE);
-                mAutoLoginError.setVisibility(View.GONE);
-                mAutoLoginHandler.login(
-                        mAutoLoginAccount.getSelectedItemPosition(), this);
-            }
-        } else if (mUaSwitcher == v) {
-            BrowserSettings settings = BrowserSettings.getInstance();
-            WebView web = getCurrentWebView();
-            if (web == null) return;
-            boolean desktop = settings.hasDesktopUseragent(web);
-            PopupMenu popup = new PopupMenu(mContext, mUaSwitcher);
-            Menu menu = popup.getMenu();
-            popup.getMenuInflater().inflate(R.menu.ua_switcher, menu);
-            menu.findItem(R.id.ua_mobile_menu_id).setChecked(!desktop);
-            menu.findItem(R.id.ua_desktop_menu_id).setChecked(desktop);
-            popup.setOnMenuItemClickListener(this);
-            popup.show();
-        }
-    }
-
-    @Override
-    public boolean onMenuItemClick(MenuItem item) {
-        BrowserSettings settings = BrowserSettings.getInstance();
-        WebView web = getCurrentWebView();
-        if (web == null) return false;
-        boolean desktop = settings.hasDesktopUseragent(web);
-        switch (item.getItemId()) {
-        case R.id.ua_mobile_menu_id:
-            if (desktop) {
-                settings.toggleDesktopUseragent(web);
-                web.loadUrl(web.getOriginalUrl());
-            }
-            return true;
-        case R.id.ua_desktop_menu_id:
-            if (!desktop) {
-                settings.toggleDesktopUseragent(web);
-                web.loadUrl(web.getOriginalUrl());
-            }
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public void onFocusChange(View view, boolean hasFocus) {
-        // if losing focus and not in touch mode, leave as is
-        if (hasFocus || view.isInTouchMode() || mUrlInput.needsUpdate()) {
-            setFocusState(hasFocus);
-        }
-        if (hasFocus) {
-            mBaseUi.showTitleBar();
-            mUrlInput.forceIme();
-            if (mInVoiceMode) {
-                mUrlInput.forceFilter();
-            }
-        } else if (!mUrlInput.needsUpdate()) {
-            mUrlInput.dismissDropDown();
-            mUrlInput.hideIME();
-            if (mUrlInput.getText().length() == 0) {
-                Tab currentTab = mUiController.getTabControl().getCurrentTab();
-                if (currentTab != null) {
-                    mUrlInput.setText(currentTab.getUrl(), false);
-                }
-            }
-            mBaseUi.suggestHideTitleBar();
-        }
-        mUrlInput.clearNeedsUpdate();
-    }
-
-    protected void setFocusState(boolean focus) {
-    }
-
-    protected void setSearchMode(boolean voiceSearchEnabled) {}
-
-    boolean isEditingUrl() {
-        return mUrlInput.hasFocus();
-    }
-
-    void stopEditingUrl() {
-        mUrlInput.clearFocus();
-    }
-
-    void setDisplayTitle(String title) {
-        if (!isEditingUrl()) {
-            mUrlInput.setText(title, false);
-        }
-    }
-
-    // UrlInput text watcher
-
-    @Override
-    public void onTextChanged(String newText) {
-        if (mUrlInput.hasFocus()) {
-            // clear voice mode when user types
-            setInVoiceMode(false, null);
-        }
-    }
-
-    // voicesearch
-
-    public void setInVoiceMode(boolean voicemode, List<String> voiceResults) {
-        mInVoiceMode = voicemode;
-        mUrlInput.setVoiceResults(voiceResults);
-    }
-
-    void setIncognitoMode(boolean incognito) {
-        mUrlInput.setIncognitoMode(incognito);
-    }
-
-    void clearCompletions() {
-        mUrlInput.setSuggestedText(null);
-    }
-
-    // UrlInputListener implementation
-
-    /**
-     * callback from suggestion dropdown
-     * user selected a suggestion
-     */
-    @Override
-    public void onAction(String text, String extra, String source) {
-        mUiController.getCurrentTopWebView().requestFocus();
-        if (UrlInputView.TYPED.equals(source)) {
-            String url = UrlUtils.smartUrlFilter(text, false);
-            Tab t = mBaseUi.getActiveTab();
-            // Only shortcut javascript URIs for now, as there is special
-            // logic in UrlHandler for other schemas
-            if (url != null && t != null && url.startsWith("javascript:")) {
-                mUiController.loadUrl(t, url);
-                setDisplayTitle(text);
-                return;
-            }
-        }
-        Intent i = new Intent();
-        String action = null;
-        if (UrlInputView.VOICE.equals(source)) {
-            action = RecognizerResultsIntent.ACTION_VOICE_SEARCH_RESULTS;
-            source = null;
-        } else {
-            action = Intent.ACTION_SEARCH;
-        }
-        i.setAction(action);
-        i.putExtra(SearchManager.QUERY, text);
-        if (extra != null) {
-            i.putExtra(SearchManager.EXTRA_DATA_KEY, extra);
-        }
-        if (source != null) {
-            Bundle appData = new Bundle();
-            appData.putString(com.android.common.Search.SOURCE, source);
-            i.putExtra(SearchManager.APP_DATA, appData);
-        }
-        mUiController.handleNewIntent(i);
-        setDisplayTitle(text);
-    }
-
-    @Override
-    public void onDismiss() {
-        final Tab currentTab = mBaseUi.getActiveTab();
-        mBaseUi.hideTitleBar();
-        post(new Runnable() {
-            public void run() {
-                clearFocus();
-                if ((currentTab != null) && !mInVoiceMode) {
-                    setDisplayTitle(currentTab.getUrl());
-                }
-            }
-        });
-    }
-
-    /**
-     * callback from the suggestion dropdown
-     * copy text to input field and stay in edit mode
-     */
-    @Override
-    public void onCopySuggestion(String text) {
-        mUrlInput.setText(text, true);
-        if (text != null) {
-            mUrlInput.setSelection(text.length());
-        }
-    }
-
-    public void setCurrentUrlIsBookmark(boolean isBookmark) {
-    }
-
-    @Override
-    public boolean dispatchKeyEventPreIme(KeyEvent evt) {
-        if (evt.getKeyCode() == KeyEvent.KEYCODE_BACK) {
-            // catch back key in order to do slightly more cleanup than usual
-            mUrlInput.clearFocus();
-            return true;
-        }
-        return super.dispatchKeyEventPreIme(evt);
-    }
-
-    protected WebView getCurrentWebView() {
-        Tab t = mBaseUi.getActiveTab();
-        if (t != null) {
-            return t.getWebView();
-        } else {
-            return null;
-        }
-    }
-
-    void registerDropdownChangeListener(DropdownChangeListener d) {
-        mUrlInput.registerDropdownChangeListener(d);
-    }
-
-    /**
-     * called from the Ui when the user wants to edit
-     * @param clearInput clear the input field
-     */
-    void startEditingUrl(boolean clearInput) {
-        // editing takes preference of progress
-        mContainer.setVisibility(View.VISIBLE);
-        if (mUseQuickControls) {
-            mProgress.setVisibility(View.GONE);
-        }
-        if (!mUrlInput.hasFocus()) {
-            mUrlInput.requestFocus();
-        }
-        if (clearInput) {
-            mUrlInput.setText("");
-        } else if (mInVoiceMode) {
-            mUrlInput.showDropDown();
-        }
-    }
-
-    private ViewGroup.LayoutParams makeLayoutParams() {
-        if (mUseQuickControls) {
-            return new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,
-                    LayoutParams.WRAP_CONTENT);
-        } else {
-            return new AbsoluteLayout.LayoutParams(
-                    LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT,
-                    0, 0);
-        }
-    }
-
-}
diff --git a/src/com/android/browser/TitleBarPhone.java b/src/com/android/browser/TitleBarPhone.java
deleted file mode 100644
index f41eca7..0000000
--- a/src/com/android/browser/TitleBarPhone.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.browser;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
-import android.view.ContextMenu;
-import android.view.MenuInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.View.OnFocusChangeListener;
-import android.webkit.WebView;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-
-import com.android.browser.UrlInputView.StateListener;
-import com.android.browser.autocomplete.SuggestedTextController.TextChangeWatcher;
-
-import java.util.List;
-
-/**
- * This class represents a title bar for a particular "tab" or "window" in the
- * browser.
- */
-public class TitleBarPhone extends TitleBarBase implements OnFocusChangeListener,
-        OnClickListener, TextChangeWatcher, StateListener {
-
-    private Activity mActivity;
-    private ImageView mStopButton;
-    private ImageView mVoiceButton;
-    private Drawable mStopDrawable;
-    private Drawable mRefreshDrawable;
-    private View mTabSwitcher;
-    private View mComboIcon;
-    private View mTitleContainer;
-    private Drawable mTextfieldBgDrawable;
-
-    public TitleBarPhone(Activity activity, UiController controller, PhoneUi ui,
-            FrameLayout parent) {
-        super(activity, controller, ui, parent);
-        mActivity = activity;
-        initLayout(activity, R.layout.title_bar);
-    }
-
-    @Override
-    protected void initLayout(Context context, int layoutId) {
-        super.initLayout(context, layoutId);
-        mLockIcon = (ImageView) findViewById(R.id.lock);
-        mFavicon = (ImageView) findViewById(R.id.favicon);
-        mStopButton = (ImageView) findViewById(R.id.stop);
-        mStopButton.setOnClickListener(this);
-        mVoiceButton = (ImageView) findViewById(R.id.voice);
-        mVoiceButton.setOnClickListener(this);
-        mTabSwitcher = findViewById(R.id.tab_switcher);
-        mTabSwitcher.setOnClickListener(this);
-        mComboIcon = findViewById(R.id.iconcombo);
-        mTitleContainer = findViewById(R.id.title_bg);
-        setFocusState(false);
-        Resources res = context.getResources();
-        mStopDrawable = res.getDrawable(R.drawable.ic_stop_holo_dark);
-        mRefreshDrawable = res.getDrawable(R.drawable.ic_refresh_holo_dark);
-        mTextfieldBgDrawable = res.getDrawable(R.drawable.textfield_active_holo_dark);
-        setUaSwitcher(mComboIcon);
-        mUrlInput.setContainer(this);
-        mUrlInput.setStateListener(this);
-    }
-
-    @Override
-    public void createContextMenu(ContextMenu menu) {
-        MenuInflater inflater = mActivity.getMenuInflater();
-        inflater.inflate(R.menu.title_context, menu);
-        mActivity.onCreateContextMenu(menu, this, null);
-    }
-
-    @Override
-    public void setInVoiceMode(boolean voicemode, List<String> voiceResults) {
-        super.setInVoiceMode(voicemode, voiceResults);
-    }
-
-    @Override
-    protected void setSearchMode(boolean voiceSearchEnabled) {
-        boolean showvoicebutton = voiceSearchEnabled &&
-                mUiController.supportsVoiceSearch();
-        mVoiceButton.setVisibility(showvoicebutton ? View.VISIBLE :
-                View.GONE);
-    }
-
-    @Override
-    void setProgress(int progress) {
-        super.setProgress(progress);
-        if (progress == 100) {
-            mStopButton.setVisibility(View.GONE);
-            mStopButton.setImageDrawable(mRefreshDrawable);
-            if (!isEditingUrl()) {
-                mComboIcon.setVisibility(View.VISIBLE);
-            }
-        } else {
-            if (mStopButton.getDrawable() != mStopDrawable) {
-                mStopButton.setImageDrawable(mStopDrawable);
-                if (mStopButton.getVisibility() != View.VISIBLE) {
-                    mComboIcon.setVisibility(View.GONE);
-                    mStopButton.setVisibility(View.VISIBLE);
-                }
-            }
-        }
-    }
-
-    /**
-     * Update the text displayed in the title bar.
-     * @param title String to display.  If null, the new tab string will be
-     *      shown.
-     */
-    @Override
-    void setDisplayTitle(String title) {
-        if (!isEditingUrl()) {
-            if (title == null) {
-                mUrlInput.setText(R.string.new_tab);
-            } else {
-                mUrlInput.setText(title);
-            }
-            mUrlInput.setSelection(0);
-        }
-    }
-
-    @Override
-    public void onFocusChange(View v, boolean hasFocus) {
-        if (v == mUrlInput) {
-            if (hasFocus) {
-                mActivity.closeOptionsMenu();
-            }
-        }
-        super.onFocusChange(v, hasFocus);
-    }
-
-    @Override
-    public void onClick(View v) {
-        if (v == mStopButton) {
-            if (mInLoad) {
-                mUiController.stopLoading();
-            } else {
-                WebView web = mBaseUi.getWebView();
-                if (web != null) {
-                    stopEditingUrl();
-                    web.reload();
-                }
-            }
-        } else if (v == mVoiceButton) {
-            mUiController.startVoiceSearch();
-        } else if (v == mTabSwitcher) {
-            mBaseUi.onMenuKey();
-        } else {
-            super.onClick(v);
-        }
-    }
-
-    @Override
-    public void onStateChanged(int state) {
-        switch(state) {
-        case StateListener.STATE_NORMAL:
-            mComboIcon.setVisibility(View.VISIBLE);
-            mStopButton.setVisibility(View.GONE);
-            setSearchMode(false);
-            mTabSwitcher.setVisibility(View.VISIBLE);
-            mTitleContainer.setBackgroundDrawable(null);
-            break;
-        case StateListener.STATE_HIGHLIGHTED:
-            mComboIcon.setVisibility(View.GONE);
-            mStopButton.setVisibility(View.VISIBLE);
-            setSearchMode(true);
-            mTabSwitcher.setVisibility(View.GONE);
-            mTitleContainer.setBackgroundDrawable(mTextfieldBgDrawable);
-            break;
-        case StateListener.STATE_EDITED:
-            mComboIcon.setVisibility(View.GONE);
-            mStopButton.setVisibility(View.GONE);
-            setSearchMode(false);
-            mTabSwitcher.setVisibility(View.GONE);
-            mTitleContainer.setBackgroundDrawable(mTextfieldBgDrawable);
-            break;
-        }
-    }
-
-}
diff --git a/src/com/android/browser/UI.java b/src/com/android/browser/UI.java
index 93f6e63..23897f7 100644
--- a/src/com/android/browser/UI.java
+++ b/src/com/android/browser/UI.java
@@ -22,6 +22,7 @@
 import android.view.ActionMode;
 import android.view.KeyEvent;
 import android.view.Menu;
+import android.view.MenuItem;
 import android.view.View;
 import android.webkit.WebChromeClient.CustomViewCallback;
 import android.webkit.WebView;
@@ -85,8 +86,6 @@
 
     public void showComboView(ComboViews startingView, Bundle extra);
 
-    public void hideComboView();
-
     public void showCustomView(View view, int requestedOrientation,
             CustomViewCallback callback);
 
@@ -104,6 +103,8 @@
 
     public void onExtendedMenuOpened();
 
+    public boolean onOptionsItemSelected(MenuItem item);
+
     public void onOptionsMenuClosed(boolean inLoad);
 
     public void onExtendedMenuClosed(boolean inLoad);
@@ -143,4 +144,7 @@
     void hideAutoLogin(Tab tab);
 
     void setFullscreen(boolean enabled);
+
+    void setUseQuickControls(boolean enabled);
+
 }
diff --git a/src/com/android/browser/UiController.java b/src/com/android/browser/UiController.java
index 6045d86..14d498c 100644
--- a/src/com/android/browser/UiController.java
+++ b/src/com/android/browser/UiController.java
@@ -16,19 +16,20 @@
 
 package com.android.browser;
 
-import com.android.browser.UI.DropdownChangeListener;
-
 import android.content.Intent;
+import android.view.Menu;
 import android.view.MenuItem;
 import android.webkit.WebView;
 
+import com.android.browser.UI.DropdownChangeListener;
+
 import java.util.List;
 
 
 /**
  * UI aspect of the controller
  */
-public interface UiController extends BookmarksHistoryCallbacks {
+public interface UiController {
 
     UI getUi();
 
@@ -36,6 +37,8 @@
 
     WebView getCurrentTopWebView();
 
+    Tab getCurrentTab();
+
     TabControl getTabControl();
 
     List<Tab> getTabs();
@@ -57,7 +60,7 @@
 
     void stopLoading();
 
-    void bookmarkCurrentPage(boolean canBeAnEdit);
+    Intent createBookmarkCurrentPageIntent(boolean canBeAnEdit);
 
     void bookmarksOrHistoryPicker(boolean openHistory);
 
@@ -69,14 +72,10 @@
 
     void editUrl();
 
-    void removeActiveTabsPage(boolean attach);
-
     void handleNewIntent(Intent intent);
 
     boolean shouldShowErrorConsole();
 
-    void removeComboView();
-
     void hideCustomView();
 
     void attachSubWindow(Tab tab);
@@ -89,9 +88,7 @@
 
     void shareCurrentPage();
 
-    void registerOptionsMenuHandler(OptionsMenuHandler handler);
-
-    void unregisterOptionsMenuHandler(OptionsMenuHandler handler);
+    void updateMenuState(Tab tab, Menu menu);
 
     void registerDropdownChangeListener(DropdownChangeListener d);
 
diff --git a/src/com/android/browser/UrlHandler.java b/src/com/android/browser/UrlHandler.java
index 17d4062..74a58f3 100644
--- a/src/com/android/browser/UrlHandler.java
+++ b/src/com/android/browser/UrlHandler.java
@@ -257,6 +257,8 @@
         }
 
         protected void onPostExecute(String result) {
+            // abort if we left browser already
+            if (mController.isActivityPaused()) return;
             // Make sure the Tab was not closed while handling the task
             if (mController.getTabControl().getTabPosition(mTab) != -1) {
                 // If the Activity Manager is not invoked, load the URL directly
diff --git a/src/com/android/browser/UrlInputView.java b/src/com/android/browser/UrlInputView.java
index 8b5c292..2acc69b 100644
--- a/src/com/android/browser/UrlInputView.java
+++ b/src/com/android/browser/UrlInputView.java
@@ -187,6 +187,10 @@
         }
     }
 
+    int getState() {
+        return mState;
+    }
+
     void setVoiceResults(List<String> voiceResults) {
         mAdapter.setVoiceResults(voiceResults);
     }
diff --git a/src/com/android/browser/WebViewTimersControl.java b/src/com/android/browser/WebViewTimersControl.java
new file mode 100644
index 0000000..d6d1726
--- /dev/null
+++ b/src/com/android/browser/WebViewTimersControl.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.browser;
+
+import android.os.Looper;
+import android.util.Log;
+import android.webkit.WebView;
+
+/**
+ * Centralised point for controlling WebView timers pausing and resuming.
+ *
+ * All methods on this class should only be called from the UI thread.
+ */
+public class WebViewTimersControl {
+
+    private static final boolean LOGD_ENABLED = com.android.browser.Browser.LOGD_ENABLED;
+    private static final String LOGTAG = "WebViewTimersControl";
+
+    private static WebViewTimersControl sInstance;
+
+    private boolean mBrowserActive;
+    private boolean mPrerenderActive;
+
+    /**
+     * Get the static instance. Must be called from UI thread.
+     */
+    public static WebViewTimersControl getInstance() {
+        if (Looper.myLooper() != Looper.getMainLooper()) {
+            throw new IllegalStateException("WebViewTimersControl.get() called on wrong thread");
+        }
+        if (sInstance == null) {
+            sInstance = new WebViewTimersControl();
+        }
+        return sInstance;
+    }
+
+    private WebViewTimersControl() {
+    }
+
+    private void resumeTimers(WebView wv) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "Resuming webview timers, view=" + wv);
+        if (wv != null) {
+            wv.resumeTimers();
+        }
+    }
+
+    private void maybePauseTimers(WebView wv) {
+        if (!mBrowserActive && !mPrerenderActive && wv != null) {
+            if (LOGD_ENABLED) Log.d(LOGTAG, "Pausing webview timers, view=" + wv);
+            wv.pauseTimers();
+        }
+    }
+
+    public void onBrowserActivityResume(WebView wv) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "onBrowserActivityResume");
+        mBrowserActive = true;
+        resumeTimers(wv);
+    }
+
+    public void onBrowserActivityPause(WebView wv) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "onBrowserActivityPause");
+        mBrowserActive = false;
+        maybePauseTimers(wv);
+    }
+
+    public void onPrerenderStart(WebView wv) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "onPrerenderStart");
+        mPrerenderActive = true;
+        resumeTimers(wv);
+    }
+
+    public void onPrerenderDone(WebView wv) {
+        if (LOGD_ENABLED) Log.d(LOGTAG, "onPrerenderDone");
+        mPrerenderActive = false;
+        maybePauseTimers(wv);
+    }
+
+}
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index 6fcfab7..73821bf 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -40,9 +40,9 @@
     private ActionBar mActionBar;
     private TabBar mTabBar;
 
-    private TitleBarXLarge mTitleBar;
+    private NavigationBarTablet mNavBar;
 
-    private PieControl mPieControl;
+    private PieControlXLarge mPieControl;
     private Handler mHandler;
 
     /**
@@ -52,9 +52,7 @@
     public XLargeUi(Activity browser, UiController controller) {
         super(browser, controller);
         mHandler = new Handler();
-        mTitleBar = new TitleBarXLarge(mActivity, mUiController, this,
-                mContentView);
-        mTitleBar.setProgress(100);
+        mNavBar = (NavigationBarTablet) mTitleBar.getNavigationBar();
         mTabBar = new TabBar(mActivity, mUiController, this);
         mActionBar = mActivity.getActionBar();
         setupActionBar();
@@ -75,25 +73,19 @@
     }
 
     @Override
-    public void hideComboView() {
-        if (isComboViewShowing()) {
-            super.hideComboView();
-            // ComboView changes the action bar, set it back up to what we want
-            setupActionBar();
-            checkTabCount();
-        }
-    }
-
-    private void setUseQuickControls(boolean useQuickControls) {
+    public void setUseQuickControls(boolean useQuickControls) {
         mUseQuickControls = useQuickControls;
         mTitleBar.setUseQuickControls(mUseQuickControls);
         if (useQuickControls) {
             checkTabCount();
-            mPieControl = new PieControl(mActivity, mUiController, this);
+            mPieControl = new PieControlXLarge(mActivity, mUiController, this);
             mPieControl.attachToContainer(mContentView);
             WebView web = getWebView();
             if (web != null) {
                 web.setEmbeddedTitleBar(null);
+                // don't show url bar on scrolling
+                web.setOnTouchListener(null);
+
             }
         } else {
             mActivity.getActionBar().show();
@@ -103,6 +95,8 @@
             WebView web = getWebView();
             if (web != null) {
                 web.setEmbeddedTitleBar(mTitleBar);
+                // show url bar on scrolling
+                web.setOnTouchListener(this);
             }
             setTitleGravity(Gravity.NO_GRAVITY);
         }
@@ -123,7 +117,7 @@
     public void onResume() {
         super.onResume();
         if (!BrowserSettings.getInstance().useInstantSearch()) {
-            mTitleBar.clearCompletions();
+            mNavBar.clearCompletions();
         }
     }
 
@@ -163,11 +157,6 @@
     public void setActiveTab(final Tab tab) {
         mTitleBar.cancelTitleBarAnimation(true);
         mTitleBar.setSkipTitleBarAnimations(true);
-        if (mUseQuickControls) {
-            if (mActiveTab != null) {
-                captureTab(mActiveTab);
-            }
-        }
         super.setActiveTab(tab);
         BrowserWebView view = (BrowserWebView) tab.getWebView();
         // TabControl.setCurrentTab has been called before this,
@@ -181,7 +170,7 @@
             mPieControl.forceToTop(mContentView);
         } else {
             // check if title bar is already attached by animation
-            if (mTitleBar.getParent() == null && !tab.isSnapshot()) {
+            if (mTitleBar.getParent() == null) {
                 view.setEmbeddedTitleBar(mTitleBar);
             }
         }
@@ -225,13 +214,13 @@
     @Override
     public void editUrl(boolean clearInput) {
         if (mUseQuickControls) {
-            getTitleBar().setShowProgressOnly(false);
+            mTitleBar.setShowProgressOnly(false);
         }
         super.editUrl(clearInput);
     }
 
     void stopEditingUrl() {
-        mTitleBar.stopEditingUrl();
+        mTitleBar.getNavigationBar().stopEditingUrl();
     }
 
     @Override
@@ -249,11 +238,6 @@
     }
 
     @Override
-    protected TitleBarBase getTitleBar() {
-        return mTitleBar;
-    }
-
-    @Override
     protected void setTitleGravity(int gravity) {
         if (!mUseQuickControls) {
             super.setTitleGravity(gravity);
@@ -285,7 +269,7 @@
 
     @Override
     protected void updateNavigationState(Tab tab) {
-        mTitleBar.updateNavigationState(tab);
+        mNavBar.updateNavigationState(tab);
     }
 
     @Override
@@ -302,19 +286,6 @@
     }
 
     @Override
-    public void showVoiceTitleBar(String title, List<String> vsresults) {
-        mTitleBar.setInVoiceMode(true, vsresults);
-        mTitleBar.setDisplayTitle(title);
-    }
-
-    @Override
-    public void revertVoiceTitleBar(Tab tab) {
-        mTitleBar.setInVoiceMode(false, null);
-        String url = tab.getUrl();
-        mTitleBar.setDisplayTitle(url);
-    }
-
-    @Override
     public void showCustomView(View view, int requestedOrientation,
             CustomViewCallback callback) {
         super.showCustomView(view, requestedOrientation, callback);
diff --git a/src/com/android/browser/addbookmark/FolderSpinnerAdapter.java b/src/com/android/browser/addbookmark/FolderSpinnerAdapter.java
index 67563c0..f86c9c6 100644
--- a/src/com/android/browser/addbookmark/FolderSpinnerAdapter.java
+++ b/src/com/android/browser/addbookmark/FolderSpinnerAdapter.java
@@ -154,4 +154,10 @@
         notifyDataSetChanged();
     }
 
+    public void clearRecentFolder() {
+        if (mIncludesRecentFolder) {
+            mIncludesRecentFolder = false;
+            notifyDataSetChanged();
+        }
+    }
 }
diff --git a/src/com/android/browser/preferences/DebugPreferencesFragment.java b/src/com/android/browser/preferences/DebugPreferencesFragment.java
index 984c12a..566eee2 100644
--- a/src/com/android/browser/preferences/DebugPreferencesFragment.java
+++ b/src/com/android/browser/preferences/DebugPreferencesFragment.java
@@ -18,6 +18,7 @@
 
 import com.android.browser.BrowserActivity;
 import com.android.browser.BrowserSettings;
+import com.android.browser.GoogleAccountLogin;
 import com.android.browser.PreferenceKeys;
 import com.android.browser.R;
 
@@ -25,10 +26,11 @@
 import android.os.Bundle;
 import android.preference.Preference;
 import android.preference.Preference.OnPreferenceChangeListener;
+import android.preference.Preference.OnPreferenceClickListener;
 import android.preference.PreferenceFragment;
 
 public class DebugPreferencesFragment extends PreferenceFragment
-        implements OnPreferenceChangeListener {
+        implements OnPreferenceChangeListener, OnPreferenceClickListener {
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -38,6 +40,8 @@
 
         Preference e = findPreference(PreferenceKeys.PREF_ENABLE_HARDWARE_ACCEL);
         e.setOnPreferenceChangeListener(this);
+        e = findPreference(PreferenceKeys.PREF_RESET_PRELOGIN);
+        e.setOnPreferenceClickListener(this);
     }
 
     @Override
@@ -47,4 +51,15 @@
                 getActivity(), BrowserActivity.class));
         return true;
     }
+
+    @Override
+    public boolean onPreferenceClick(Preference preference) {
+        if (PreferenceKeys.PREF_RESET_PRELOGIN.equals(preference.getKey())) {
+            BrowserSettings.getInstance().getPreferences().edit()
+                    .remove(GoogleAccountLogin.PREF_AUTOLOGIN_TIME)
+                    .apply();
+            return true;
+        }
+        return false;
+    }
 }
diff --git a/src/com/android/browser/preferences/LabPreferencesFragment.java b/src/com/android/browser/preferences/LabPreferencesFragment.java
index 0dd8805..ca3a86a 100644
--- a/src/com/android/browser/preferences/LabPreferencesFragment.java
+++ b/src/com/android/browser/preferences/LabPreferencesFragment.java
@@ -16,23 +16,16 @@
 
 package com.android.browser.preferences;
 
-import com.android.browser.BrowserActivity;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+
 import com.android.browser.BrowserSettings;
 import com.android.browser.PreferenceKeys;
 import com.android.browser.R;
 import com.android.browser.search.SearchEngine;
 
-import android.app.AlertDialog;
-import android.content.Intent;
-import android.os.Bundle;
-import android.preference.Preference;
-import android.preference.Preference.OnPreferenceChangeListener;
-import android.preference.PreferenceFragment;
-import android.view.LayoutInflater;
-import android.view.View;
-
-public class LabPreferencesFragment extends PreferenceFragment
-        implements OnPreferenceChangeListener {
+public class LabPreferencesFragment extends PreferenceFragment {
     private BrowserSettings mBrowserSettings;
     private Preference useInstantPref;
 
@@ -44,17 +37,9 @@
 
         // Load the XML preferences file
         addPreferencesFromResource(R.xml.lab_preferences);
-        registerChangeListener(PreferenceKeys.PREF_ENABLE_QUICK_CONTROLS);
         useInstantPref = findPreference(PreferenceKeys.PREF_USE_INSTANT_SEARCH);
     }
 
-    private void registerChangeListener(String key) {
-        Preference e = findPreference(key);
-        if (e != null) {
-            e.setOnPreferenceChangeListener(this);
-        }
-    }
-
     @Override
     public void onResume() {
         super.onResume();
@@ -72,14 +57,4 @@
         }
     }
 
-    @Override
-    public boolean onPreferenceChange(Preference preference, Object newValue) {
-        String key = preference.getKey();
-        if (PreferenceKeys.PREF_ENABLE_QUICK_CONTROLS.equals(key)) {
-            // Attempt to restart
-            startActivity(new Intent(BrowserActivity.ACTION_RESTART, null,
-                    getActivity(), BrowserActivity.class));
-        }
-        return true;
-    }
 }
diff --git a/src/com/android/browser/preferences/WebsiteSettingsFragment.java b/src/com/android/browser/preferences/WebsiteSettingsFragment.java
index 6339d72..844a597 100644
--- a/src/com/android/browser/preferences/WebsiteSettingsFragment.java
+++ b/src/com/android/browser/preferences/WebsiteSettingsFragment.java
@@ -16,27 +16,22 @@
 
 package com.android.browser.preferences;
 
-import com.android.browser.R;
-import com.android.browser.WebStorageSizeManager;
-
 import android.app.AlertDialog;
-import android.app.FragmentTransaction;
 import android.app.ListFragment;
 import android.content.Context;
 import android.content.DialogInterface;
-import android.content.res.Resources;
 import android.database.Cursor;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
 import android.preference.PreferenceActivity;
-import android.preference.PreferenceFragment;
 import android.provider.BrowserContract.Bookmarks;
 import android.util.Log;
 import android.view.LayoutInflater;
-import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
@@ -44,12 +39,13 @@
 import android.webkit.ValueCallback;
 import android.webkit.WebStorage;
 import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
 import android.widget.ArrayAdapter;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import java.io.Serializable;
+import com.android.browser.R;
+import com.android.browser.WebStorageSizeManager;
+
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -69,7 +65,7 @@
     private SiteAdapter mAdapter = null;
     private Site mSite = null;
 
-    static class Site implements Serializable {
+    static class Site implements Parcelable {
         private String mOrigin;
         private String mTitle;
         private Bitmap mIcon;
@@ -160,6 +156,38 @@
             Uri uri = Uri.parse(str);
             return "http".equals(uri.getScheme()) ?  str.substring(7) : str;
         }
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        @Override
+        public void writeToParcel(Parcel dest, int flags) {
+            dest.writeString(mOrigin);
+            dest.writeString(mTitle);
+            dest.writeInt(mFeatures);
+            dest.writeParcelable(mIcon, flags);
+        }
+
+        private Site(Parcel in) {
+            mOrigin = in.readString();
+            mTitle = in.readString();
+            mFeatures = in.readInt();
+            mIcon = in.readParcelable(null);
+        }
+
+        public static final Parcelable.Creator<Site> CREATOR
+                = new Parcelable.Creator<Site>() {
+            public Site createFromParcel(Parcel in) {
+                return new Site(in);
+            }
+
+            public Site[] newArray(int size) {
+                return new Site[size];
+            }
+        };
+
     }
 
     class SiteAdapter extends ArrayAdapter<Site>
@@ -597,7 +625,7 @@
                 PreferenceActivity activity = (PreferenceActivity) getActivity();
                 if (activity != null) {
                     Bundle args = new Bundle();
-                    args.putSerializable(EXTRA_SITE, site);
+                    args.putParcelable(EXTRA_SITE, site);
                     activity.startPreferencePanel(WebsiteSettingsFragment.class.getName(), args, 0,
                             site.getPrettyTitle(), null, 0);
                 }
@@ -615,7 +643,7 @@
         View view = inflater.inflate(R.layout.website_settings, container, false);
         Bundle args = getArguments();
         if (args != null) {
-            mSite = (Site) args.getSerializable(EXTRA_SITE);
+            mSite = (Site) args.getParcelable(EXTRA_SITE);
         }
         if (mSite == null) {
             View clear = view.findViewById(R.id.clear_all_button);
diff --git a/src/com/android/browser/view/Gallery.java b/src/com/android/browser/view/Gallery.java
index fa3f97a..0c73537 100644
--- a/src/com/android/browser/view/Gallery.java
+++ b/src/com/android/browser/view/Gallery.java
@@ -224,6 +224,7 @@
                 // Nothing selected
                 checkSelectionChanged();
             }
+            layout(0, false);
         } else {
             // checkFocus();
             mOldSelectedPosition = INVALID_POSITION;
@@ -231,6 +232,7 @@
             resetList();
             // Nothing selected
             checkSelectionChanged();
+            invalidate();
         }
     }
 
@@ -240,7 +242,6 @@
     void resetList() {
         mDataChanged = false;
         removeAllViewsInLayout();
-        invalidate();
     }
 
     public void setCallbackDuringFling(boolean shouldCallback) {
@@ -261,9 +262,7 @@
 
     @Override
     protected boolean getChildStaticTransformation(View child, Transformation t) {
-        t.clear();
-        t.setAlpha(child == mSelectedChild ? 1.0f : mUnselectedAlpha);
-        return true;
+        return false;
     }
 
     @Override
@@ -393,8 +392,6 @@
             // Similarly, empty space on the left
             fillToGalleryLeft();
         }
-        // Clear unused views
-        mRecycler.clear();
         setSelectionToCenterChild();
         invalidate();
     }
@@ -1199,24 +1196,6 @@
     }
 
     @Override
-    protected int getChildDrawingOrder(int childCount, int i) {
-        int selectedIndex = mSelectedPosition - mFirstPosition;
-        // Just to be safe
-        if (selectedIndex < 0)
-            return i;
-        if (i == childCount - 1) {
-            // Draw the selected child last
-            return selectedIndex;
-        } else if (i >= selectedIndex) {
-            // Move the children to the right of the selected child earlier one
-            return i + 1;
-        } else {
-            // Keep the children to the left of the selected child the same
-            return i;
-        }
-    }
-
-    @Override
     protected void onFocusChanged(boolean gainFocus, int direction,
             Rect previouslyFocusedRect) {
         super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
diff --git a/src/com/android/browser/view/PieMenu.java b/src/com/android/browser/view/PieMenu.java
index cded435..99750f9 100644
--- a/src/com/android/browser/view/PieMenu.java
+++ b/src/com/android/browser/view/PieMenu.java
@@ -310,7 +310,6 @@
         float x = evt.getX();
         float y = evt.getY();
         int action = evt.getActionMasked();
-        int edges = evt.getEdgeFlags();
         if (MotionEvent.ACTION_DOWN == action) {
             if ((x > getWidth() - mSlop) || (x < mSlop)) {
                 setCenter((int) x, (int) y);
diff --git a/tests/src/com/android/browser/PopularUrlsTest.java b/tests/src/com/android/browser/PopularUrlsTest.java
index f1ab71b..cbe8324 100644
--- a/tests/src/com/android/browser/PopularUrlsTest.java
+++ b/tests/src/com/android/browser/PopularUrlsTest.java
@@ -21,6 +21,7 @@
 import android.net.Uri;
 import android.net.http.SslError;
 import android.os.Environment;
+import android.provider.Browser;
 import android.test.ActivityInstrumentationTestCase2;
 import android.text.TextUtils;
 import android.util.Log;
@@ -458,7 +459,7 @@
 
         while (mStatus.getIteration() < loopCount) {
             if (clearCache) {
-                webView.clearCache(true);
+                clearCacheUiThread(webView, true);
             }
             while(iterator.hasNext()) {
                 page = iterator.next();
@@ -467,6 +468,8 @@
                 Log.i(TAG, "start: " + page);
                 Uri uri = Uri.parse(page);
                 final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
+                intent.putExtra(Browser.EXTRA_APPLICATION_ID,
+                    getInstrumentation().getTargetContext().getPackageName());
 
                 long startTime = System.currentTimeMillis();
                 resetForNewPage();
@@ -480,7 +483,7 @@
                 waitForLoad();
                 long stopTime = System.currentTimeMillis();
 
-                String url = webView.getUrl();
+                String url = getUrlUiThread(webView);
                 Log.i(TAG, "finish: " + url);
 
                 if (writer != null) {
@@ -534,4 +537,44 @@
             }
         }
     }
+
+    private void clearCacheUiThread(final WebView webView, final boolean includeDiskFiles) {
+        Runnable runner = new Runnable() {
+
+            @Override
+            public void run() {
+                webView.clearCache(includeDiskFiles);
+            }
+        };
+        getInstrumentation().runOnMainSync(runner);
+    }
+
+    private String getUrlUiThread(final WebView webView) {
+        WebViewUrlGetter urlGetter = new WebViewUrlGetter(webView);
+        getInstrumentation().runOnMainSync(urlGetter);
+        return urlGetter.getUrl();
+    }
+
+    private class WebViewUrlGetter implements Runnable {
+
+        private WebView mWebView;
+        private String mUrl;
+
+        public WebViewUrlGetter(WebView webView) {
+            mWebView = webView;
+        }
+
+        @Override
+        public void run() {
+                mUrl = null;
+                mUrl = mWebView.getUrl();
+        }
+
+        public String getUrl() {
+            if (mUrl != null) {
+                return mUrl;
+            } else
+                throw new IllegalStateException("url has not been fetched yet");
+        }
+    }
 }
