am 0c3789b2: (-s ours) Adding search_client_id which includes the "ms-" or "tablet-" client-id prefix, set in GooglePartnerSetup. Retaining client-id (which does not include the client-id prefix) for legacy purposes, if Browser is used with an older version of GooglePartnerSetu

* commit '0c3789b217a41b8d8084ba42281e3e08208a4044':
  Adding search_client_id which includes the "ms-" or "tablet-" client-id prefix, set in GooglePartnerSetup. Retaining client-id (which does not include the client-id prefix) for legacy purposes, if Browser is used with an older version of GooglePartnerSetup.
diff --git a/Android.mk b/Android.mk
index a5a47b3..b85a869 100644
--- a/Android.mk
+++ b/Android.mk
@@ -17,6 +17,9 @@
 
 LOCAL_EMMA_COVERAGE_FILTER := *,-com.android.common.*
 
+# We need the sound recorder for the Media Capture API.
+LOCAL_REQUIRED_MODULES := SoundRecorder
+
 include $(BUILD_PACKAGE)
 
 # additionally, build tests in sub-folders in a separate .apk
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index f88dfd9..9ddc7b5 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -35,6 +35,7 @@
     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
     <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
     <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
+    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
     <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
     <uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/>
     <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
@@ -165,7 +166,7 @@
         </activity>
 
         <activity android:name="AddBookmarkPage" android:label="Save bookmark"
-                  android:theme="@style/Dialog"
+                  android:theme="@style/DialogWhenLarge"
                   android:configChanges="orientation|keyboardHidden"
                   android:windowSoftInputMode="stateHidden|adjustPan">
             <intent-filter>
@@ -193,6 +194,9 @@
             android:name=".widget.BookmarkThumbnailWidgetService"
             android:permission="android.permission.BIND_REMOTEVIEWS"
             android:exported="false" />
+        <receiver
+            android:name=".widget.BookmarkWidgetProxy"
+            android:exported="false" />
 
         <!-- Makes .BrowserActivity the search target for any activity in Browser -->
         <meta-data android:name="android.app.default_searchable" android:value=".BrowserActivity" />
diff --git a/res/drawable-hdpi/bookmarks_widget_thumb_selector_focused.9.png b/res/drawable-hdpi/bookmarks_widget_thumb_selector_focused.9.png
new file mode 100644
index 0000000..9983890
--- /dev/null
+++ b/res/drawable-hdpi/bookmarks_widget_thumb_selector_focused.9.png
Binary files differ
diff --git a/res/drawable-hdpi/bookmarks_widget_thumb_selector_longpressed.9.png b/res/drawable-hdpi/bookmarks_widget_thumb_selector_longpressed.9.png
new file mode 100644
index 0000000..34704ef
--- /dev/null
+++ b/res/drawable-hdpi/bookmarks_widget_thumb_selector_longpressed.9.png
Binary files differ
diff --git a/res/drawable-mdpi/bookmarks_widget_thumb_selector_focused.9.png b/res/drawable-mdpi/bookmarks_widget_thumb_selector_focused.9.png
new file mode 100644
index 0000000..5bcc7c8
--- /dev/null
+++ b/res/drawable-mdpi/bookmarks_widget_thumb_selector_focused.9.png
Binary files differ
diff --git a/res/drawable-mdpi/browsertab_add_focused.png b/res/drawable-mdpi/browsertab_add_focused.png
new file mode 100644
index 0000000..53fda75
--- /dev/null
+++ b/res/drawable-mdpi/browsertab_add_focused.png
Binary files differ
diff --git a/res/drawable-mdpi/pie_bg_selected.png b/res/drawable-mdpi/pie_bg_selected.png
new file mode 100644
index 0000000..787984a
--- /dev/null
+++ b/res/drawable-mdpi/pie_bg_selected.png
Binary files differ
diff --git a/res/drawable-mdpi/qc_background_normal.png b/res/drawable-mdpi/qc_background_normal.png
new file mode 100644
index 0000000..947722d
--- /dev/null
+++ b/res/drawable-mdpi/qc_background_normal.png
Binary files differ
diff --git a/res/drawable-mdpi/qc_background_selected.png b/res/drawable-mdpi/qc_background_selected.png
new file mode 100644
index 0000000..c0a6efc
--- /dev/null
+++ b/res/drawable-mdpi/qc_background_selected.png
Binary files differ
diff --git a/res/drawable-mdpi/tab_nr.png b/res/drawable-mdpi/tab_nr.png
new file mode 100644
index 0000000..93e7598
--- /dev/null
+++ b/res/drawable-mdpi/tab_nr.png
Binary files differ
diff --git a/res/drawable/add_tab_selector.xml b/res/drawable/add_tab_selector.xml
new file mode 100644
index 0000000..4898f8f
--- /dev/null
+++ b/res/drawable/add_tab_selector.xml
@@ -0,0 +1,24 @@
+<?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.
+-->
+
+<!-- Custom background for the new tab button -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_focused="false"
+        android:drawable="@drawable/browsertab_add" />
+    <item android:state_focused="true"
+         android:drawable="@drawable/browsertab_add_focused" />
+</selector>
diff --git a/res/drawable/bookmark_thumb_selector.xml b/res/drawable/bookmark_thumb_selector.xml
index 59d9405..d4a12a3 100644
--- a/res/drawable/bookmark_thumb_selector.xml
+++ b/res/drawable/bookmark_thumb_selector.xml
@@ -16,6 +16,7 @@
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android"
         android:exitFadeDuration="@android:integer/config_mediumAnimTime">
+    <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/bookmarks_widget_thumb_selector_focused" />
     <item android:state_pressed="true" android:drawable="@drawable/bookmark_thumb_selector_transition" />
     <item android:drawable="@android:color/transparent" />
 </selector>
diff --git a/res/drawable/qc_item_selector.xml b/res/drawable/qc_item_selector.xml
new file mode 100644
index 0000000..77f8023
--- /dev/null
+++ b/res/drawable/qc_item_selector.xml
@@ -0,0 +1,21 @@
+<?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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_selected="true"
+        android:drawable="@drawable/pie_bg_selected" />
+    <item android:state_selected="false" android:drawable="@drawable/clear" />
+</selector>
diff --git a/res/drawable/qc_menu_selector.xml b/res/drawable/qc_menu_selector.xml
new file mode 100644
index 0000000..141f165
--- /dev/null
+++ b/res/drawable/qc_menu_selector.xml
@@ -0,0 +1,21 @@
+<?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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true"
+        android:drawable="@*android:drawable/list_selector_pressed_holo_dark" />
+    <item android:state_pressed="false" android:drawable="@drawable/clear" />
+</selector>
diff --git a/res/layout-land/http_authentication.xml b/res/layout-land/http_authentication.xml
deleted file mode 100644
index 3fa7e4f..0000000
--- a/res/layout-land/http_authentication.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:gravity="center_horizontal"
-    android:orientation="vertical" >
-
-    <TableLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="12dip"
-        android:gravity="center_horizontal" >
-    
-        <TableRow>
-            <TextView android:id="@+id/username_view"
-                android:text="@string/username"
-                android:gravity="right"
-                android:layout_marginLeft="20dip" />
-
-            <EditText android:id="@+id/username_edit"
-                android:scrollHorizontally="true"
-                android:autoText="false"
-                android:capitalize="none"
-                android:gravity="fill_horizontal"
-                android:layout_weight="1"
-                android:layout_marginLeft="10dip"
-                android:layout_marginRight="20dip"
-                android:layout_marginBottom="12dip" />
-        </TableRow>
-
-        <TableRow>
-            <TextView android:id="@+id/password_view"
-                android:text="@string/password"
-                android:gravity="right"
-                android:layout_marginLeft="20dip" />
-    
-            <EditText android:id="@+id/password_edit"
-                android:scrollHorizontally="true"
-                android:autoText="false"
-                android:capitalize="none"
-                android:gravity="fill_horizontal"
-                android:layout_weight="1"
-                android:layout_marginLeft="10dip"
-                android:layout_marginRight="20dip"
-                android:layout_marginBottom="12dip"
-                android:password="true" />
-        </TableRow>
-    </TableLayout>
-
-</LinearLayout>
diff --git a/res/layout-xlarge/browser_add_bookmark.xml b/res/layout-xlarge/browser_add_bookmark.xml
new file mode 100644
index 0000000..14edecf
--- /dev/null
+++ b/res/layout-xlarge/browser_add_bookmark.xml
@@ -0,0 +1,25 @@
+<?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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="@dimen/add_bookmark_width"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    >
+
+    <include layout="@layout/browser_add_bookmark_content" />
+
+</LinearLayout>
diff --git a/res/layout/bookmark_sync_wizard.xml b/res/layout/bookmark_sync_wizard.xml
new file mode 100644
index 0000000..3a3d9da
--- /dev/null
+++ b/res/layout/bookmark_sync_wizard.xml
@@ -0,0 +1,78 @@
+<?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.
+-->
+<view class="com.android.browser.view.EventRedirectingFrameLayout"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/pages"
+    android:paddingTop="6dip">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:background="@android:color/black">
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/import_bookmarks_dialog_description"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:textColor="?android:attr/textColorAlertDialogListItem" />
+
+        <ListView
+            android:id="@+id/add_remove_bookmarks"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp"
+            android:divider="?android:attr/listDividerAlertDialog"
+            android:scrollbars="vertical"
+            android:overScrollMode="ifContentScrolls"
+            android:choiceMode="singleChoice" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:background="@android:color/black">
+
+        <TextView
+            android:id="@+id/select_account_description"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:textColor="?android:attr/textColorAlertDialogListItem" />
+
+        <ListView
+            android:id="@+id/select_account"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp"
+            android:divider="?android:attr/listDividerAlertDialog"
+            android:scrollbars="vertical"
+            android:overScrollMode="ifContentScrolls"
+            android:choiceMode="singleChoice" />
+
+    </LinearLayout>
+
+    <TextView
+        android:id="@+id/confirm"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@android:color/black"
+        android:textAppearance="?android:attr/textAppearanceMedium" />
+
+</view>
diff --git a/res/layout/bookmark_sync_wizard_item.xml b/res/layout/bookmark_sync_wizard_item.xml
new file mode 100644
index 0000000..91ec3de
--- /dev/null
+++ b/res/layout/bookmark_sync_wizard_item.xml
@@ -0,0 +1,26 @@
+<?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.
+-->
+
+<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@android:id/text1"
+    android:layout_width="match_parent"
+    android:layout_height="?android:attr/listPreferredItemHeight"
+    android:textAppearance="?android:attr/textAppearanceMedium"
+    android:gravity="center_vertical"
+    android:checkMark="?android:attr/listChoiceIndicatorSingle"
+    android:paddingLeft="6dip"
+    android:paddingRight="6dip"
+/>
diff --git a/res/layout/bookmarkthumbnailwidget_item.xml b/res/layout/bookmarkthumbnailwidget_item.xml
index b67b386..3247806 100644
--- a/res/layout/bookmarkthumbnailwidget_item.xml
+++ b/res/layout/bookmarkthumbnailwidget_item.xml
@@ -21,7 +21,7 @@
     android:layout_height="wrap_content">
     <ImageView
         android:id="@+id/thumb"
-        android:src="@drawable/browser_thumbnail"
+        android:src="@drawable/thumbnail_bookmarks_widget_no_bookmark_holo"
         android:layout_width="match_parent"
         android:layout_height="@dimen/widgetThumbnailHeight"
         android:scaleType="centerCrop"
diff --git a/res/layout/browser_add_bookmark.xml b/res/layout/browser_add_bookmark.xml
index f5c09a9..3720790 100644
--- a/res/layout/browser_add_bookmark.xml
+++ b/res/layout/browser_add_bookmark.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,209 +15,10 @@
 -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="@dimen/add_bookmark_width"
-    android:layout_height="wrap_content"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
     android:orientation="vertical"
     >
-    <RelativeLayout android:id="@+id/crumb_holder"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:minHeight="?android:attr/listPreferredItemHeight"
-        android:gravity="center_vertical"
-        android:visibility="gone"
-        android:paddingLeft="5dip"
-        android:paddingRight="5dip"
-        >
-        <com.android.browser.BreadCrumbView android:id="@+id/crumbs"
-            android:layout_width="wrap_content"
-            android:layout_height="?android:attr/listPreferredItemHeight"
-            android:layout_alignParentLeft="true"
-            android:layout_toLeftOf="@+id/add_divider"
-            android:layout_centerVertical="true"
-            />
-        <TextView
-            android:id="@+id/add_new_folder"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignParentRight="true"
-            android:layout_alignBaseline="@+id/crumbs"
-            android:drawableLeft="@drawable/ic_add_string"
-            android:gravity="center_vertical"
-            android:text="@string/new_folder"
-            android:visibility="gone"
-            android:layout_centerVertical="true"
-            android:textAppearance="?android:attr/textAppearanceMedium" />
-        <ImageView android:id="@+id/add_divider"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_toLeftOf="@+id/add_new_folder"
-            android:src="@drawable/crumb_divider"
-            android:layout_centerVertical="true"
-            />
-    </RelativeLayout>
-    <LinearLayout android:id="@+id/title_holder"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal"
-        android:minHeight="?android:attr/listPreferredItemHeight"
-        android:paddingLeft="5dip"
-        android:paddingRight="5dip"
-        >
-        <TextView android:id="@+id/fake_title"
-            android:layout_width="0dip"
-            android:layout_weight="1"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center_vertical"
-            android:gravity="center_vertical"
-            android:drawableLeft="@drawable/ic_bookmark_on_holo_dark"
-            android:text="@string/bookmark_this_page"
-            android:textAppearance="?android:attr/textAppearanceMedium" />
-        <ImageView android:id="@+id/remove_divider"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center_vertical"
-            android:src="@drawable/crumb_divider"
-            android:layout_centerVertical="true"
-            android:visibility="gone"
-            />
-        <TextView android:id="@+id/remove"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center_vertical"
-            android:gravity="center_vertical"
-            android:text="@string/remove"
-            android:drawableLeft="@drawable/trashcan"
-            android:visibility="gone"
-            android:textAppearance="?android:attr/textAppearanceMedium" />
-    </LinearLayout>
-    <View android:id="@+id/titleDivider"
-        android:layout_width="match_parent"
-        android:layout_height="1dip"
-        android:gravity="fill_horizontal"
-        android:background="?android:attr/colorForeground"
-        />
-
-    <TableLayout android:id="@+id/default_view"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/folder_selector_height"
-        android:layout_weight="1"
-        android:stretchColumns="1"
-        android:shrinkColumns="1"
-        android:paddingTop="20dip"
-        android:paddingLeft="20dip"
-        android:paddingRight="20dip" >
-      <TableRow>
-        <TextView 
-            android:id="@+id/titleText"
-            android:layout_height="wrap_content"
-            android:layout_width="wrap_content"
-            android:layout_marginBottom="40dip"
-            android:text="@string/name"
-            android:textAppearance="?android:attr/textAppearanceMedium" />
-                
-        <EditText
-            android:id="@+id/title"
-            android:layout_height="wrap_content"
-            android:layout_width="wrap_content"
-            android:layout_marginRight="20dip"
-            android:layout_marginLeft="20dip"
-            android:gravity="fill_horizontal"
-            android:inputType="textCapSentences"
-            android:ellipsize="end"
-            android:textAppearance="?android:attr/textAppearanceMedium" />
-      </TableRow>
-
-      <TableRow
-          android:id="@+id/row_address">
-        <TextView
-            android:id="@+id/addressText"
-            android:layout_height="wrap_content"
-            android:layout_width="wrap_content"
-            android:text="@string/location"
-            android:gravity="left"
-            android:layout_marginBottom="40dip"
-            android:textAppearance="?android:attr/textAppearanceMedium" />
-                
-        <EditText
-            android:id="@+id/address"
-            android:layout_height="wrap_content"
-            android:layout_width="wrap_content"
-            android:layout_marginRight="20dip"
-            android:layout_marginLeft="20dip"
-            android:hint="@string/http"
-            android:gravity="fill_horizontal"
-            android:inputType="textUri"
-            android:ellipsize="end"
-            android:textAppearance="?android:attr/textAppearanceMedium" />
-      </TableRow>
-      <TableRow>
-        <TextView
-            android:id="@+id/add_to"
-            android:layout_height="wrap_content"
-            android:layout_width="wrap_content"
-            android:text="@string/containing_folder"
-            android:textAppearance="?android:attr/textAppearanceMedium" />
-
-        <view class="com.android.browser.addbookmark.FolderSpinner"
-            android:id="@+id/folder"
-            android:layout_height="wrap_content"
-            android:layout_width="wrap_content"
-            android:layout_marginRight="20dip"
-            android:layout_marginLeft="20dip"
-            android:spinnerMode="dropdown"
-            android:gravity="center_vertical"
-            />
-      </TableRow>
-    </TableLayout>
-
-    <LinearLayout android:id="@+id/folder_selector"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/folder_selector_height"
-        android:orientation="vertical"
-        android:visibility="gone"
-        >
-
-        <view class="com.android.browser.AddBookmarkPage$CustomListView"
-            android:id="@+id/list"
-            android:layout_marginLeft="16dip"
-            android:layout_marginRight="16dip"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            />
-        <TextView
-            android:id="@+id/empty"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:visibility="gone"
-            android:layout_marginLeft="16dip"
-            android:layout_marginTop="16dip"
-            android:text="@string/no_subfolders"
-            android:textStyle="italic"
-            android:textAppearance="?android:attr/textAppearanceMedium" />
-    </LinearLayout>
-
-    <LinearLayout 
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:minHeight="54dip"
-        android:orientation="horizontal"
-        android:paddingTop="4dip"
-        android:paddingLeft="2dip"
-        android:paddingRight="2dip" >
-        <Button android:id="@+id/OK" 
-            android:text="@string/save"
-            android:layout_width="0dip"
-            android:layout_gravity="left"
-            android:layout_weight="1"
-            android:maxLines="2"
-            android:layout_height="wrap_content" />
-        <Button android:id="@+id/cancel" 
-            android:text="@string/do_not_save"
-            android:layout_width="0dip"
-            android:layout_gravity="right"
-            android:layout_weight="1"
-            android:maxLines="2"
-            android:layout_height="wrap_content" />
-    </LinearLayout>
+    <include layout="@layout/browser_add_bookmark_content" />
 
 </LinearLayout>
diff --git a/res/layout/browser_add_bookmark_content.xml b/res/layout/browser_add_bookmark_content.xml
new file mode 100644
index 0000000..6ee7a5a
--- /dev/null
+++ b/res/layout/browser_add_bookmark_content.xml
@@ -0,0 +1,222 @@
+<?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.
+-->
+
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+    <RelativeLayout android:id="@+id/crumb_holder"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:minHeight="?android:attr/listPreferredItemHeight"
+        android:gravity="center_vertical"
+        android:visibility="gone"
+        android:paddingLeft="5dip"
+        android:paddingRight="5dip"
+        >
+        <com.android.browser.BreadCrumbView android:id="@+id/crumbs"
+            android:layout_width="wrap_content"
+            android:layout_height="?android:attr/listPreferredItemHeight"
+            android:layout_alignParentLeft="true"
+            android:layout_toLeftOf="@+id/add_divider"
+            android:layout_centerVertical="true"
+            />
+        <TextView
+            android:id="@+id/add_new_folder"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_alignBaseline="@+id/crumbs"
+            android:drawableLeft="@drawable/ic_add_string"
+            android:gravity="center_vertical"
+            android:text="@string/new_folder"
+            android:visibility="gone"
+            android:layout_centerVertical="true"
+            android:layout_alignTop="@+id/crumbs"
+            android:layout_alignBottom="@+id/crumbs"
+            android:focusable="true"
+            android:background="?android:attr/selectableItemBackground"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
+        <ImageView android:id="@+id/add_divider"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_toLeftOf="@+id/add_new_folder"
+            android:src="@drawable/crumb_divider"
+            android:layout_centerVertical="true"
+            />
+    </RelativeLayout>
+    <LinearLayout android:id="@+id/title_holder"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:minHeight="?android:attr/listPreferredItemHeight"
+        android:paddingLeft="5dip"
+        android:paddingRight="5dip"
+        >
+        <TextView android:id="@+id/fake_title"
+            android:layout_width="0dip"
+            android:layout_weight="1"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
+            android:gravity="center_vertical"
+            android:drawableLeft="@drawable/ic_bookmark_on_holo_dark"
+            android:text="@string/bookmark_this_page"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
+        <ImageView android:id="@+id/remove_divider"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
+            android:src="@drawable/crumb_divider"
+            android:layout_centerVertical="true"
+            android:visibility="gone"
+            />
+        <TextView android:id="@+id/remove"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical"
+            android:gravity="center_vertical"
+            android:text="@string/remove"
+            android:drawableLeft="@drawable/trashcan"
+            android:visibility="gone"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
+    </LinearLayout>
+    <View android:id="@+id/titleDivider"
+        android:layout_width="match_parent"
+        android:layout_height="1dip"
+        android:gravity="fill_horizontal"
+        android:background="?android:attr/colorForeground"
+        />
+
+    <TableLayout android:id="@+id/default_view"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:stretchColumns="1"
+        android:shrinkColumns="1"
+        android:paddingTop="10dip"
+        android:paddingLeft="20dip"
+        android:paddingRight="20dip" >
+      <TableRow>
+        <TextView
+            android:id="@+id/titleText"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_marginBottom="30dip"
+            android:text="@string/name"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
+
+        <EditText
+            android:id="@+id/title"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_marginRight="20dip"
+            android:layout_marginLeft="20dip"
+            android:gravity="fill_horizontal"
+            android:inputType="textCapSentences"
+            android:ellipsize="end"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
+      </TableRow>
+
+      <TableRow
+          android:id="@+id/row_address">
+        <TextView
+            android:id="@+id/addressText"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:text="@string/location"
+            android:gravity="left"
+            android:layout_marginBottom="20dip"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
+
+        <EditText
+            android:id="@+id/address"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_marginRight="20dip"
+            android:layout_marginLeft="20dip"
+            android:hint="@string/http"
+            android:gravity="fill_horizontal"
+            android:inputType="textUri"
+            android:ellipsize="end"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
+      </TableRow>
+      <TableRow>
+        <TextView
+            android:id="@+id/add_to"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:text="@string/containing_folder"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
+
+        <view class="com.android.browser.addbookmark.FolderSpinner"
+            android:id="@+id/folder"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_marginRight="20dip"
+            android:layout_marginLeft="20dip"
+            android:spinnerMode="dropdown"
+            android:gravity="center_vertical"
+            />
+      </TableRow>
+    </TableLayout>
+
+    <LinearLayout android:id="@+id/folder_selector"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/folder_selector_height"
+        android:orientation="vertical"
+        android:visibility="gone"
+        >
+
+        <view class="com.android.browser.AddBookmarkPage$CustomListView"
+            android:id="@+id/list"
+            android:layout_marginLeft="16dip"
+            android:layout_marginRight="16dip"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            />
+        <TextView
+            android:id="@+id/empty"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:visibility="gone"
+            android:layout_marginLeft="16dip"
+            android:layout_marginTop="16dip"
+            android:text="@string/no_subfolders"
+            android:textStyle="italic"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:minHeight="54dip"
+        android:orientation="horizontal"
+        android:paddingTop="4dip"
+        android:paddingLeft="2dip"
+        android:paddingRight="2dip" >
+        <Button android:id="@+id/OK"
+            android:text="@string/save"
+            android:layout_width="0dip"
+            android:layout_gravity="left"
+            android:layout_weight="1"
+            android:maxLines="2"
+            android:layout_height="wrap_content" />
+        <Button android:id="@+id/cancel"
+            android:text="@string/do_not_save"
+            android:layout_width="0dip"
+            android:layout_gravity="right"
+            android:layout_weight="1"
+            android:maxLines="2"
+            android:layout_height="wrap_content" />
+    </LinearLayout>
+
+</merge>
diff --git a/res/layout/http_authentication.xml b/res/layout/http_authentication.xml
index cee3a42..856c45c 100644
--- a/res/layout/http_authentication.xml
+++ b/res/layout/http_authentication.xml
@@ -14,49 +14,48 @@
      limitations under the License.
 -->
 
-<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:gravity="center_horizontal"
     android:orientation="vertical"
     >
 
     <TextView 
-        android:id="@+id/username_view"
         android:layout_height="wrap_content"
         android:layout_width="wrap_content"
         android:text="@string/username"
-        android:gravity="left"
         android:layout_marginTop="12dip"
         android:layout_marginLeft="20dip"
         android:layout_marginRight="20dip" />
             
     <EditText
         android:id="@+id/username_edit"
+        android:layout_height="wrap_content"
+        android:layout_width="match_parent"
         android:scrollHorizontally="true"
         android:inputType="text"
-        android:gravity="fill_horizontal"
-        android:layout_weight="1"
         android:layout_marginLeft="20dip"
         android:layout_marginRight="20dip"
-        android:layout_marginBottom="12dip" />
+        android:layout_marginBottom="12dip"
+        android:singleLine="true"
+        android:imeOptions="actionNext" />
 
     <TextView
-        android:id="@+id/password_view"
         android:layout_height="wrap_content"
         android:layout_width="wrap_content"
         android:text="@string/password"
-        android:gravity="left"
         android:layout_marginLeft="20dip"
         android:layout_marginRight="20dip" />
             
     <EditText
         android:id="@+id/password_edit"
+        android:layout_height="wrap_content"
+        android:layout_width="match_parent"
         android:scrollHorizontally="true"
         android:inputType="textPassword"
-        android:gravity="fill_horizontal"
-        android:layout_weight="1"
         android:layout_marginLeft="20dip"
         android:layout_marginRight="20dip"
-        android:layout_marginBottom="12dip" />
-</TableLayout>
+        android:layout_marginBottom="12dip"
+        android:singleLine="true"
+        android:imeOptions="actionDone" />
+</LinearLayout>
diff --git a/res/layout/qc_menu_item.xml b/res/layout/qc_menu_item.xml
new file mode 100644
index 0000000..9e4a2e8
--- /dev/null
+++ b/res/layout/qc_menu_item.xml
@@ -0,0 +1,30 @@
+<?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.
+-->
+
+<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:minHeight="44dip"
+    android:background="@drawable/qc_menu_selector"
+    android:textAppearance="?android:attr/textAppearanceMedium"
+    android:gravity="center"
+    android:paddingLeft="8dip"
+    android:paddingRight="8dip"
+    android:paddingTop="4dip"
+    android:paddingBottom="4dip"
+     />
diff --git a/res/layout/qc_tab.xml b/res/layout/qc_tab.xml
new file mode 100644
index 0000000..5379680
--- /dev/null
+++ b/res/layout/qc_tab.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:background="@color/black"
+    android:padding="0dip"
+    >
+    <TextView android:id="@+id/title1"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingLeft="8dip"
+        android:paddingRight="2dip"
+        android:paddingTop="1dip"
+        android:paddingBottom="1dip"
+        android:gravity="center_vertical"
+        android:singleLine="true"
+        android:ellipsize="marquee"
+        android:typeface="sans"
+        android:textSize="12sp"
+        android:textColor="#DDDDDD"
+        />
+    <ImageView
+        android:id="@+id/thumb"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        android:layout_marginTop= "1dip"
+        android:layout_marginLeft= "1dip"
+        android:layout_marginRight= "1dip"
+        android:layout_marginBottom= "1dip"
+        android:src="@drawable/browser_thumbnail"
+        android:scaleType="centerCrop"
+        />
+    <TextView android:id="@+id/title2"
+        android:layout_width="match_parent"
+        android:layout_height="20dip"
+        android:paddingLeft="8dip"
+        android:paddingRight="2dip"
+        android:gravity="center_vertical"
+        android:singleLine="true"
+        android:ellipsize="marquee"
+        android:typeface="sans"
+        android:textSize="12sp"
+        android:textColor="#DDDDDD"
+        />
+</LinearLayout>
diff --git a/res/layout/qc_tabs_view.xml b/res/layout/qc_tabs_view.xml
new file mode 100644
index 0000000..accae68
--- /dev/null
+++ b/res/layout/qc_tabs_view.xml
@@ -0,0 +1,39 @@
+<?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="0dip"
+    >
+    <ImageView
+        android:id="@+id/icon"
+        android:layout_width="48dip"
+        android:layout_height="48dip"
+        />
+    <TextView android:id="@+id/label"
+        android:layout_height="24dip"
+        android:layout_width="24dip"
+        android:layout_alignParentRight="true"
+        android:layout_alignParentBottom="true"
+        android:gravity="center_horizontal|center_vertical"
+        android:typeface="sans"
+        android:textSize="12sp"
+        android:textStyle="bold"
+        android:textColor="#ffffff"
+        android:background="@drawable/tab_nr"
+        />
+</RelativeLayout>
diff --git a/res/layout/suggestion_item.xml b/res/layout/suggestion_item.xml
index b85911f..c08ba84 100644
--- a/res/layout/suggestion_item.xml
+++ b/res/layout/suggestion_item.xml
@@ -57,8 +57,7 @@
                 style="@style/SuggestionLineSmall"
                 android:singleLine="true"
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:textColor="@color/urlTextColor" />
+                android:layout_height="wrap_content" />
         </LinearLayout>
     </LinearLayout>
     <ImageView
diff --git a/res/layout/tab_bar.xml b/res/layout/tab_bar.xml
index d3683b1..1710218 100644
--- a/res/layout/tab_bar.xml
+++ b/res/layout/tab_bar.xml
@@ -30,5 +30,5 @@
         android:layout_width="wrap_content"
         android:layout_height="44dip"
         style="@style/HoloButton"
-        android:background="@drawable/browsertab_add" />
+        android:background="@drawable/add_tab_selector" />
 </merge>
\ No newline at end of file
diff --git a/res/layout/title_bar.xml b/res/layout/title_bar.xml
index 9bfba35..99ac04d 100644
--- a/res/layout/title_bar.xml
+++ b/res/layout/title_bar.xml
@@ -18,77 +18,81 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:orientation="vertical"
-    android:paddingLeft="8dip"
-    android:paddingRight="12dip"
-    android:paddingTop="2dip"
-    android:paddingBottom="1dip"
-    android:background="@drawable/search_plate_browser" >
-
-    <ProgressBar android:id="@+id/progress_horizontal"
-        style="?android:attr/progressBarStyleHorizontal"
-        android:layout_width="match_parent"
-        android:layout_height="5dip"
-        android:layout_marginLeft="1dip"
-        android:max="100"
-        />
+    android:orientation="vertical" >
 
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
+        android:background="@drawable/bg_urlbar"
+        android:paddingLeft="4dip"
+        android:paddingRight="4dip"
+        android:paddingTop="2dip"
+        android:paddingBottom="1dip"
         >
 
         <LinearLayout android:id="@+id/title_bg"
-            android:background="@drawable/title_text"
             android:layout_width="0dip"
             android:layout_weight="1.0"
-            android:layout_height="wrap_content"
+            android:layout_height="48dip"
             android:layout_marginBottom="4dip"
             android:gravity="center_vertical"
             android:orientation="horizontal"
+            android:background="@drawable/url_background"
             >
                 <ImageView android:id="@+id/favicon"
                     android:layout_width="20dip"
                     android:layout_height="20dip"
-                    android:layout_marginLeft="3dip"
                     />
                 <ImageView android:id="@+id/lock"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_marginLeft="6dip"
+                    android:layout_marginLeft="3dip"
                     android:visibility="gone"
                     />
-                <TextView
-                    android:id="@+id/title"
-                    android:layout_height="wrap_content"
+                <com.android.browser.UrlInputView
+                    android:id="@+id/url_input"
+                    android:focusable="true"
                     android:layout_width="0dip"
                     android:layout_weight="1.0"
+                    android:layout_height="match_parent"
                     android:layout_marginLeft="3dip"
-                    android:gravity="center_vertical"
+                    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" />
         </LinearLayout>
-        <ImageView android:id="@+id/stop"
-            android:background="@drawable/stop_background"
+        <ImageButton
+            android:id="@+id/stop"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
-            android:layout_marginBottom="4dip"
-            android:src="@drawable/ic_btn_stop_v2"
+            style="@style/HoloButton"
+            android:src="@drawable/ic_stop_holo_dark"
             android:visibility="gone"
         />
-        <ImageView
-            android:id="@+id/rt_btn"
+        <ImageButton
+            android:id="@+id/bookmark"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
-            android:layout_marginLeft="-2dip"
-            android:layout_marginTop="-6.5dip"
-            android:layout_marginBottom="-2dip"
-            android:layout_marginRight="-5dip"
-            android:scaleType="center"
-            android:background="@drawable/btn_bookmark"
-            android:src="@drawable/ic_bookmark_on_holo_dark"
+            style="@style/HoloButton"
+            android:src="@drawable/btn_imageview_star"
         />
     </LinearLayout>
+
+    <com.android.browser.PageProgressView
+        android:id="@+id/progress_horizontal"
+        android:layout_width="match_parent"
+        android:layout_height="22dip"
+        android:background="@null"
+        android:src="@drawable/progress"
+        android:layout_marginTop="-11dip"
+        android:visibility="gone" />
 </LinearLayout>
diff --git a/res/layout/url_bar.xml b/res/layout/url_bar.xml
index 526e44c..f2b32c4 100644
--- a/res/layout/url_bar.xml
+++ b/res/layout/url_bar.xml
@@ -12,7 +12,6 @@
     -->
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/content"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:orientation="vertical">
@@ -52,19 +51,12 @@
             android:orientation="horizontal"
             android:background="@drawable/url_background">
             <ImageView
-                android:id="@+id/web_icon"
+                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/voice_icon"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
-                android:src="@drawable/ic_search_holo_dark"
-                style="@style/HoloIcon"
-                android:visibility="gone" />
-            <ImageView
                 android:id="@+id/lock"
                 android:layout_width="wrap_content"
                 android:layout_height="match_parent"
@@ -72,7 +64,6 @@
                 android:visibility="gone" />
             <com.android.browser.UrlInputView
                 android:id="@+id/url_focused"
-                android:focusable="true"
                 android:layout_width="0dip"
                 android:layout_weight="1.0"
                 android:layout_height="match_parent"
diff --git a/res/menu-xlarge/browser.xml b/res/menu-xlarge/browser.xml
index 1b52c9a..be4a521 100644
--- a/res/menu-xlarge/browser.xml
+++ b/res/menu-xlarge/browser.xml
@@ -32,6 +32,8 @@
             android:title="@string/share_page"
             android:icon="@drawable/ic_share_holo_dark"
             android:alphabeticShortcut="s" />
+        <item android:id="@+id/save_webarchive_menu_id"
+            android:title="@string/menu_save_webarchive" />
         <item android:id="@+id/page_info_menu_id"
             android:title="@string/page_info"
             android:icon="@drawable/ic_pageinfo_holo_dark"
diff --git a/res/menu/bookmarkscontext.xml b/res/menu/bookmarkscontext.xml
index 3a13b9a..df6f9af 100644
--- a/res/menu/bookmarkscontext.xml
+++ b/res/menu/bookmarkscontext.xml
@@ -20,7 +20,7 @@
     <item android:id="@+id/open_context_menu_id"
       android:title="@string/open_bookmark"/>
     <item android:id="@+id/new_window_context_menu_id"
-      android:title="@string/open_in_new_window"/>
+      android:title="@string/contextmenu_openlink_newwindow"/>
     <item android:id="@+id/edit_context_menu_id"
       android:title="@string/edit_bookmark"/>
     <item android:id="@+id/shortcut_context_menu_id"
diff --git a/res/menu/browser.xml b/res/menu/browser.xml
index beaa8f3..abe3716 100644
--- a/res/menu/browser.xml
+++ b/res/menu/browser.xml
@@ -45,6 +45,8 @@
             android:title="@string/share_page"
             android:icon="@drawable/ic_share_holo_dark"
             android:alphabeticShortcut="s" />
+        <item android:id="@+id/save_webarchive_menu_id"
+            android:title="@string/menu_save_webarchive" />
         <item android:id="@+id/page_info_menu_id"
             android:title="@string/page_info"
             android:icon="@drawable/ic_pageinfo_holo_dark"
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index fd97a7f..e5a5e06 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"المتصفح"</string>
     <string name="choose_upload" msgid="3649366287575002063">"اختر ملفًا لتحميله"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"قائمة"</string>
     <string name="current_page" msgid="7510129573681663135">"من "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"سيتم حذف الإشارة \"<xliff:g id="BOOKMARK">%s</xliff:g>\"."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"فتح في نافذة جديدة"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"فتح الكل في نوافذ جديدة"</string>
     <string name="goto_dot" msgid="3895839050522602723">"تنفيذ"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"فتح علامة تبويب جديدة للتصفح المتخفي"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"حفظ كأرشيف ويب"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"تم حفظ أرشيف الويب."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"أخفق حفظ أرشيف الويب."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"حفظ كأرشيف ويب"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"تم حفظ أرشيف الويب."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"أخفق حفظ أرشيف الويب."</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"إعدادات محتوى الصفحة"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"تحميل الصور"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"عرض الصور على صفحات الويب"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"حظر النوافذ المنبثقة"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"حظر النوافذ المنبثقة"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"تمكين جافا سكريبت"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"فتح في الخلفية"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"تمكين المكونات الإضافية"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"إيقاف"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"فتح نوافذ جديدة وراء النافذة الحالية"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"تعيين الصفحة الرئيسية"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"تعيين الصفحة الرئيسية"</string>
     <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>
@@ -158,7 +158,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"تنسيق صفحات الويب لاحتوائها في الشاشة"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"إعدادات عامة"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"المزامنة"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"الملء التلقائي"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"الملء التلقائي"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"المزامنة مع Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"مشاركة الإشارات والبيانات الأخرى بين متصفح Android وGoogle Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"حساب Google"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"مزامنة الإشارات بين متصفح Android وGoogle Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"بدء المزامنة"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"تحديد حساب Google لمشاركته مع"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"الملء التلقائي للنموذج"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"الملء التلقائي للنموذج"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"ملء نماذج الويب بنقرة واحدة"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"إعدادات الملء التلقائي"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"إعداد وإدارة البيانات للنماذج التي يتم ملؤها تلقائيًا"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"إعدادات الملء التلقائي"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"إعداد وإدارة البيانات للنماذج التي يتم ملؤها تلقائيًا"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"تسجيل الدخول تلقائيًا إلى Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"لم يتم العثور على أي حسابات."</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"تسجيل الدخول إلى مواقع Google تلقائيًا باستخدام <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"تسجيل الدخول إلى مواقع Google باستخدام <xliff:g id="ID_1">%s</xliff:g>"\n"تتحكم إعدادات الخصوصية والأمان في تسجيل الدخول التلقائي إلى Google"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"عدم تسجيل الدخول تلقائيًا"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"سيستخدم الملء التلقائي ملفك الشخصي لمساعدتك على إكمال نماذج الويب بنقرة واحدة."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"سيستخدم الملء التلقائي ملفك الشخصي لمساعدتك على إكمال نماذج الويب بنقرة واحدة."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"الاسم بالكامل:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"البريد الإلكتروني:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"اسم الشركة:"</string>
@@ -194,9 +201,10 @@
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"تم حذف الملف الشخصي"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"حذف الملف الشخصي"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"يستطيع المتصفح إكمال نماذج ويب مثل هذا النموذج. هل تريد إعداد ملفك الشخصي؟"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="4337372830506338827">"يمكن تهيئة الملء التلقائي دائمًا عبر إعدادات المتصفح."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"تعطيل الملء التلقائي"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"الخصوصية والأمان"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"يمكن تهيئة ميزة الملء التلقائي من خلال إعدادات المتصفح -&amp;gt; الإعدادات الشخصية."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"تعطيل الملء التلقائي"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"الخصوصية والأمان"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"محو ذاكرة التخزين المؤقت"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"محو قواعد البيانات والمحتوى المخزن مؤقتًا محليًا"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"سيتم حذف قواعد البيانات والمحتوى المخزن مؤقتًا محليًا."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"تشفير النص"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"الميزات الاختبارية"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"عناصر التحكم السريعة"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"مرر الإبهام من الحافة اليسرى أو اليمنى للدخول إلى عناصر التحكم السريعة."</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"الصفحة الرئيسية الأكثر زيارة"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"لتعيين صفحتك الرئيسية لعرض الصفحات الأكثر زيارة."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"عناصر تحكم سريعة"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"تمرير الإبهام بسرعة من الحافة اليسرى إلى الحافة اليمنى للدخول إلى عناصر التحكم السريعة"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"الصفحة الرئيسية الأكثر زيارة"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"لتعيين صفحتك الرئيسية لعرض الصفحات الأكثر زيارة."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"مشكلة في اتصال البيانات"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"مشكلة في الملف"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"تأكيد"</string>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"بطاقة SD غير متوفرة"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"وحدة تخزين USB مشغولة. للسماح بالتنزيلات، حدد \"إيقاف تشغيل وحدة تخزين USB\" في التنبيه."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"بطاقة SD مشغولة. للسماح بالتنزيلات، حدد \"إيقاف تشغيل تخزين USB\" في التنبيه."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"يمكن تنزيل عناوين URL لـ \"http\" أو \"https\" فقط."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"لا يمكن فتح الملف"</string>
     <string name="retry" msgid="1835923075542266721">"إعادة المحاولة"</string>
     <string name="no_downloads" msgid="3947445710685021498">"سجل التنزيل فارغ."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"اختيار حساب"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"المزامنة مع حساب Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"لم يتم إقران إشارات Android مع حساب Google"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"إزالة إشارات Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"لم يتم إقران إشارات Android مع حساب Google"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"إزالة إشارات Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"إضافة إشارات Android إلى إشارات <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"مشاركة"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"لا يتوفر المزيد من علامات التبويب"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 993d1d1..6972156 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Браузър"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Избор на файл за качване"</string>
+    <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>
@@ -98,7 +99,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Списък"</string>
     <string name="current_page" msgid="7510129573681663135">"от "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Отметката „<xliff:g id="BOOKMARK">%s</xliff:g>“ ще бъде изтрита."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Отваряне в нов прозорец"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Отваряне на всички в нови прозорци"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Старт"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Нов раздел „инкогнито“"</string>
@@ -111,9 +111,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Запазване като уеб архив"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Уеб архивът бе запазен."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Запазването на уеб архив не бе успешно."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Запазване като уеб архив"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Уеб архивът бе запазен."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Запазването на уеб архив не бе успешно."</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>
@@ -138,7 +138,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Настройки за съдържанието на страници"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Зареждане на изображенията"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Показване на изображенията в уеб страници"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Блокиране на изскачащи прозорци"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Блокиране на изскачащи прозорци"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Активиране на JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Отваряне на заден план"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Активиране на приставки"</string>
@@ -148,7 +148,7 @@
     <item msgid="8547442717307793863">"Изкл."</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Отваряне на нови прозорци зад текущия"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Задаване на начална страница"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Задаване на начална страница"</string>
     <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>
@@ -159,7 +159,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Уеб страниците се форматират до размера на екрана"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Общи"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Синхронизиране"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Автоматично попълване"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Автоматично попълване"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Синхронизиране с Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Споделяйте отметки и други данни между браузъра в Android и Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Профил в Google"</string>
@@ -167,16 +167,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Синхронизирайте отметки между браузъра в Android и Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Старт на синхрона"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Избор на профил в Google, с който да се споделя"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Авт. попълване на формуляри"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Автоматично попълване на формуляри"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Попълвайте формуляри в мрежата с едно кликване"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Настройки за авт. попълване"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Настройка и управление на данните за формуляри с автоматично попълване"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Настройки за автоматично попълване"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Настройка и управление на данните за формуляри с автоматично попълване"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Автоматичен вход в Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Няма намерени профили"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Автоматично влизане в сайтовете на Google посредством <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Влизате в сайтове на Google посредством <xliff:g id="ID_1">%s</xliff:g>"\n"Настройките ви за поверителност и сигурност контролират автоматичния вход в Google"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Да не се влиза автоматично"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Автоматичното попълване ще използва потребителския ви профил, за да ви помогне да попълвате уеб формуляри с едно кликване."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Автоматичното попълване ще използва потребителския ви профил, за да ви помогне да попълвате уеб формуляри с едно кликване."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Пълно име:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Имейл адрес:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Име на фирмата:"</string>
@@ -195,9 +202,10 @@
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Потребителският профил бе изтрит"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Изтриване на профила"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Браузърът може автоматично да попълва уеб формуляри като този. Искате ли да настроите потребителския си профил?"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="4337372830506338827">"Автоматичното попълване винаги може да се конфигурира от „Настройки на браузъра“."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Деактивиране на автоматичното попълване"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Поверителност и сигурност"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Автоматичното попълване винаги може да се конфигурира от „Настройки на браузъра“ -&amp;gt; „Лични настройки“."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Деактивиране на автоматичното попълване"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Поверителност и сигурност"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Изчистване на кеша"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Изчистване на съдържанието и базите от данни от локалния кеш"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Съдържанието и базите от данни в локалния кеш ще бъдат изтрити."</string>
@@ -270,10 +278,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Текстово кодиране"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Лаборатория"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Бързи контроли"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Прокарайте палец от левия или десния край за достъп до бързите контроли"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Най-посещавана начална страница"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Задава началната ви страница да показва най-посещаваните страници."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Бързи контроли"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Прокарайте палец от левия или десния край за достъп до бързите контроли"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Най-посещавана начална страница"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Задава началната ви страница да показва най-посещаваните страници."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблем с обмен на данни"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблем с файла"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Потвърждаване"</string>
@@ -317,6 +329,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Няма SD карта"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"USB хранилището е заето. За да разрешите изтегляния, изберете „Изключване на USB хранилището“ в известието."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"SD картата е заета. За да разрешите изтегляния, изберете „Изключване на USB устройството за съхранение“ в известието."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Могат да се изтеглят само URL адреси от тип „http“ или „https“."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Файлът не може да се отвори"</string>
     <string name="retry" msgid="1835923075542266721">"Повторен опит"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Историята на изтеглянията е празна."</string>
@@ -365,9 +378,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Изберете профил"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Синхронизиране с профил в Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Отметките ви в Android не са свързани с профил в Google"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Премахване на отметките ви в Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Отметките ви в Android не са свързани с профил в Google"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Премахване на отметките ви в Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Добавяне на отметките ви в Android към тези на <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Споделяне"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Не се предлагат повече раздели"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 3e33f4c..3670542 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Navegador"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Trieu un fitxer per penjar-lo"</string>
+    <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>
@@ -98,7 +99,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Llista"</string>
     <string name="current_page" msgid="7510129573681663135">"de "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Se suprimirà l\'adreça d\'interès \"<xliff:g id="BOOKMARK">%s</xliff:g>\"."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Obre en una finestra nova"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Obre-ho tot en finestres noves"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Vés"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Obre una nova pest. d\'incògnit"</string>
@@ -111,9 +111,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Desa com a arxiu web"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Arxiu web desat."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Error en desar l\'arxiu web."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Desa com a arxiu web"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Arxiu web desat."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Error en desar l\'arxiu web."</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>
@@ -138,7 +138,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Configuració del contingut de la pàgina"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Carrega les imatges"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Mostra les imatges a les pàgines web"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Bloqueja les finestres emergents"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Bloqueja les finestres emergents"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Activa JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Obre en segon terme"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Activa els complements"</string>
@@ -148,7 +148,7 @@
     <item msgid="8547442717307793863">"Desactivat"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Obre finestres noves darrera la finestra actual"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Defineix la pàgina d\'inici"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Defineix la pàgina d\'inici"</string>
     <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>
@@ -159,7 +159,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Sincronització"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Emplenament automàtic"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Emplenament automàtic"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Sincronitza amb Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Comparteix els marcadors i altres dades entre el navegador d\'Android i Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Compte de Google"</string>
@@ -167,16 +167,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Sincronitza els marcadors entre el navegador d\'Android i Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Inicia la sincron."</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Selecciona el Compte de Google amb el qual vols compartir"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Emplenament automàtic del formulari"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Emplenament automàtic del formulari"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Emplena formularis web amb un simple clic"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Configuració d\'emplenament automàtic"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Configura i gestiona les dades per a formularis emplenats automàticament"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Configuració d\'emplenament automàtic"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Configura i gestiona les dades per a formularis emplenats automàticament"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Inici sessió automàtic a Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"No s\'ha trobat cap compte"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Inicia la sessió a Llocs web de Google automàticament mitjançant <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"S\'està iniciant la sessió a Llocs web de Google amb <xliff:g id="ID_1">%s</xliff:g>"\n"La configuració de privadesa i de seguretat controla l\'inici de sessió automàtic de Google"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"No iniciïs la sessió automàticament"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Emplenament automàtic utilitzarà el teu perfil per ajudar-te a emplenar formularis web amb un sol clic."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"L\'Emplenament automàtic utilitzarà el teu perfil per ajudar-te a emplenar formularis web amb un sol clic."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Nom complet:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Correu electrònic:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Nom de l\'empresa:"</string>
@@ -195,9 +202,10 @@
     <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_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="4337372830506338827">"L\'emplenament automàtic sempre es pot establir mitjançant la configuració del navegador."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Desactiva l\'emplenament automàtic"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Privadesa i seguretat"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"L\'emplenament automàtic es pot configurar en qualsevol moment mitjançant la configuració del navegador -&amp;gt; configuració personal."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Desactiva l\'emplenament automàtic"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Privadesa i seguretat"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Esborra la memòria cau"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Esborra el contingut i les bases de dades de la memòria cau local"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Se suprimiran el contingut i les bases de dades de la memòria cau local."</string>
@@ -270,10 +278,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codificació del text"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Controls ràpids"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Fes lliscar el polze cap a la dreta o cap a l\'esquerra per accedir als controls ràpids"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Pàgina principal més visitada"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Estableix la pàgina d\'inici perquè mostri les pàgines més visitades."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controls ràpids"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Fes lliscar el polze des de la vora esquerra o dreta per accedir als controls ràpids"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Pàgina principal més visitada"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Estableix la pàgina d\'inici perquè mostri les pàgines més visitades."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -317,6 +329,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"La targeta SD no està disponible"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"L\'emmagatzematge USB està ocupat. Per permetre les baixades, selecciona \"Desactiva l\'emmagatzematge USB\" a la notificació."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"La targeta SD està ocupada. Per permetre les baixades, seleccioneu \"Desactiva l\'emmagatzematge d\'USB\" a la notificació."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Només pot baixar URL \"http\" o \"https\"."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"No pot obrir el fitxer"</string>
     <string name="retry" msgid="1835923075542266721">"Torna-ho a provar"</string>
     <string name="no_downloads" msgid="3947445710685021498">"L\'historial de baixades és buit."</string>
@@ -365,9 +378,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Tria d\'un compte"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronitza amb el Compte de Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Els teus marcadors d\'Android no estan associades amb un Compte de Google"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Elimina els teus marcadors d\'Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Els teus marcadors d\'Android no estan associats amb un Compte de Google"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Elimina els teus marcadors d\'Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Afegeix els marcadors d\'Android als marcadors de <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Comparteix"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"No hi ha cap més pestanya disponible"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index c83ae1f..f30f26f 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Prohlížeč"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Zvolit soubor, který chcete nahrát."</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Seznam"</string>
     <string name="current_page" msgid="7510129573681663135">"od "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Záložka <xliff:g id="BOOKMARK">%s</xliff:g> bude smazána."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Otevřít v novém okně"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Otevřít vše v nových oknech"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Přejít"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Otevřít novou anonymní kartu"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Uložit jako webový archiv"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Webový archiv byl uložen."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Uložení webového archivu se nezdařilo."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Uložit jako webový archiv"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Webový archiv byl uložen."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Uložení webového archivu 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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Nastavení obsahu stránky"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Načíst obrázky"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Zobrazovat na webových stránkách obrázky"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Blokovat vyskakovací okna"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Blokovat vyskakovací okna"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Povolit JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Otevřít na pozadí"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Povolit pluginy"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Vypnuto"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Otevírat nová okna za aktuálním oknem"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Nastavit domovskou stránku"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Nastavit domovskou stránku"</string>
     <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>
@@ -158,7 +158,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Synchronizace"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Automatické vyplňování"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Automatické vyplňování"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Synchronizovat s prohlížečem Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Sdílet záložky a jiná data mezi Prohlížečem systému Android a aplikací Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Účet Google"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Synchronizovat záložky mezi Prohlížečem systému Android a aplikací Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Synchronizovat"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Vyberte účet Google pro sdílení"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Automatické vyplňování formulářů"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Automatické vyplňování formulářů"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Vyplňování webových formulářů jediným kliknutím"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Nastavení autom. vyplňování"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Nastavení a správa automaticky vyplněných formulářů"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Nastavení automatického vyplňování"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Nastavení a správa automaticky vyplněných formulářů"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Automatické přihlášení do Googlu"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Nebyly nalezeny žádné účty"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Automaticky se přihlašovat k webům Google pomocí účtu <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Přihlášení na stránky Google pomocí uživatelského jména <xliff:g id="ID_1">%s</xliff:g>"\n" Automatické přihlášení Google se řídí vaším nastavením ochrany osobních údajů a zabezpečení"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Nepřihlašovat se automaticky"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Automatické vyplňování umožňuje vyplnit webové formuláře jediným kliknutím pomocí údajů z vašeho profilu."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Automatické vyplňování umožňuje vyplnit webové formuláře jediným kliknutím pomocí údajů z vašeho profilu."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Jméno a příjmení:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-mail:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Název společnosti:"</string>
@@ -194,9 +201,10 @@
     <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_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="4337372830506338827">"Automatické vyplňování lze vždy nakonfigurovat prostřednictvím nastavení prohlížeče."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Deaktivovat Automatické vyplňování"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Ochrana osobních údajů a zabezpečení"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automatické vyplňování je možné nastavit v nabídce Nastavení prohlížeče -&amp;gt; Osobní nastavení."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Deaktivovat Automatické vyplňování"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Ochrana osobních údajů a zabezpečení"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Vymazat mezipaměť"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Vymazat všechen obsah a databáze uložené do místní mezipaměti"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Obsah a databáze uložené v místní mezipaměti budou vymazány."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Kódování textu"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Laboratoř Google"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Rychlé ovládací prvky"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Posunutím palce z levého nebo pravého okraje otevřete rychlé ovládací prvky."</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Nejnavštěvovanější domovská stránka"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Nastaví domovskou stránku tak, aby zobrazovala nejčastěji navštěvované stránky."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Rychlé ovládací prvky"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Rychlé ovládací prvky zobrazíte posunutím prstu od levého nebo pravého okraje"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Nejnavštěvovanější domovská stránka"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Nastaví domovskou stránku tak, aby zobrazovala nejčastěji navštěvované stránky."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Karta SD není dostupná"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Úložiště USB je zaneprázdněno. Chcete-li povolit stahování, vyberte v oznámení možnost Vypnout úložiště USB."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"Karta SD je zaneprázdněna. Chcete-li povolit stahování, vyberte v oznámení možnost Vypnout úložiště USB."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Lze stahovat pouze adresy URL začínající jako http nebo https."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Soubor nelze otevřít"</string>
     <string name="retry" msgid="1835923075542266721">"Zkusit znovu"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Historie stahování je prázdná."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Vyberte účet"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synchronizovat s účtem Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Vaše záložky v systému Android nejsou přidruženy k účtu Google."</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Odebrat záložky systému Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Vaše záložky v systému Android nejsou přidruženy k účtu Google."</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Odebrat záložky systému Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Přidat všechny záložky systému Android do záložek účtu <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Sdílet"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Žádné další karty nejsou k dispozici"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 74c1333..5a7f55e 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Browser"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Vælg fil til upload"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Liste"</string>
     <string name="current_page" msgid="7510129573681663135">"fra "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Bogmærket \"<xliff:g id="BOOKMARK">%s</xliff:g>\" slettes."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Åbn i et nyt vindue"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Åbn alle i nye vinduer"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Gå"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Åbn ny inkognitofane"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Gem som webarkiv"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Webarkivet blev gemt."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Webarkivet blev ikke gemt."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Gem som webarkiv"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Webarkivet blev gemt."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Webarkivet blev ikke gemt."</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Indstillinger for sideindhold"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Indlæs billeder"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Vis billeder på websider"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Bloker pop op-vinduer"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Bloker pop op-vinduer"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Aktiver Javascript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Åbn i baggrunden"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Aktiver plugins"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Fra"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Åbn nye vinduer bag det aktive"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Angiv startside"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Angiv startside"</string>
     <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>
@@ -158,7 +158,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Synkronisering"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"AutoFyld"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"AutoFyld"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Synkroniser med Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Del bogmærker og andre data mellem Android-browser og Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google-konto"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Synkroniser bogmærker mellem Android-browser og Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Start synkronisering"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Vælg Google-konto at dele med"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"AutoFyld-formular"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"AutoFyld-formular"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Udfyld webformularer med et enkelt klik"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Indstillinger for AutoFyld"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Konfigurer og administrer data for AutoFyld-formularer"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Indstillinger for AutoFyld"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Konfigurer og administrer data for AutoFyld-formularer"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Automatisk Google-login"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Der blev ikke fundet nogen konti"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Log automatisk ind på Googles websteder med <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Logger ind på Google-websteder ved hjælp af <xliff:g id="ID_1">%s</xliff:g>"\n"Dine indstillinger for sikkerhed og beskyttelse af personlige oplysninger kontrollerer automatisk login til Google"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Log ikke ind automatisk"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"AutoFyld bruger din profil til at hjælpe dig med at udfylde webformularer med et enkelt klik."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"AutoFyld bruger din profil til at hjælpe dig med at udfylde webformularer med et enkelt klik."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Fulde navn:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-mail:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Virksomhedsnavn:"</string>
@@ -194,9 +201,10 @@
     <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_message" msgid="6605682320156223114">"Browseren kan automatisk udfylde webformularer som denne. Vil du konfigurere din profil?"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="4337372830506338827">"AutoFyld kan altid konfigureres via indstillingerne for Browser."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Deaktiver AutoFyld"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Sikkerhed og beskyttelse af personlige oplysninger"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"AutoFyld kan altid konfigureres i Browserindstillinger -&amp;gt; Personlige indstillinger."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Deaktiver AutoFyld"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Sikkerhed og beskyttelse af personlige oplysninger"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Ryd cache"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Ryd lokalt cachelagret indhold og databaser"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Lokalt cachelagret indhold og databaser slettes."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Tekstkodning"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Hurtig betjening"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Lad tommelfingeren glide hurtigt fra venstre eller højre side for at få adgang til hurtig betjening"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Mest besøgte hjemmeside"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Indstiller din hjemmeside til at vise de mest besøgte sider."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Hurtigknapper"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Glid hurtigt fra venstre eller højre side for at få adgang til hurtigknapper"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Mest besøgte hjemmeside"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Indstiller din hjemmeside til at vise de mest besøgte sider."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"SD-kortet er ikke tilgængeligt"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"USB-lager er optaget. Vælg \"Slå USB-lager fra\" i meddelelsen for at tillade downloads."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"SD-kortet er optaget. Vælg \"Slå USB-lagring fra\" i meddelelsen for at tillade downloads."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Kan kun downloade webadresser, der starter med \"http\" eller https\"."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Kan ikke åbne filen"</string>
     <string name="retry" msgid="1835923075542266721">"Prøv igen"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Downloadoversigten er tom."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Vælg konto"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synkroniser med Google-konto"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Dine Android-bogmærker er ikke tilknyttet en Google-konto"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Fjern dine Android-bogmærker"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Dine Android-bogmærker er ikke tilknyttet en Google-konto"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Fjern dine Android-bogmærker"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Føj dine Android-bogmærker til bogmærker for <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Del"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Der er ikke flere tilgængelige faner"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 2c7a909..762484b 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Browser"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Datei zum Hochladen auswählen"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Liste"</string>
     <string name="current_page" msgid="7510129573681663135">"von "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Lesezeichen \"<xliff:g id="BOOKMARK">%s</xliff:g>\" wird gelöscht."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"In neuem Fenster öffnen"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Alle in jeweils neuem Fenster öffnen"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Los"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Neuen Inkognito-Tab öffnen"</string>
@@ -109,17 +109,17 @@
     <string name="history" msgid="2451240511251410032">"Verlauf"</string>
     <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 weiterleiten"</string>
-    <string name="menu_save_webarchive" msgid="3934652434001459581">"Als Webarchiv speichern"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Webarchiv gespeichert."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Das Webarchiv wurde nicht gespeichert."</string>
+    <string name="share_page" msgid="593756995297268343">"Seitenlink weitergeben"</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Als Webarchiv speichern"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Webarchiv gespeichert."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Das Webarchiv wurde nicht gespeichert."</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>
     <string name="contextmenu_openlink_newwindow" msgid="992765050093960353">"In neuem Fenster öffnen"</string>
     <string name="contextmenu_openlink_newwindow_background" msgid="5556131402560251639">"In neuem Hintergrundfenster öffnen"</string>
     <string name="contextmenu_savelink" msgid="5508554930832538184">"Link speichern"</string>
-    <string name="contextmenu_sharelink" msgid="5392275392280130331">"Link weiterleiten"</string>
+    <string name="contextmenu_sharelink" msgid="5392275392280130331">"Link weitergeben"</string>
     <string name="contextmenu_copy" msgid="398860586635404030">"Kopieren"</string>
     <string name="contextmenu_copylink" msgid="5153657160294534270">"Link-URL kopieren"</string>
     <string name="contextmenu_download_image" msgid="4243829645180686912">"Bild speichern"</string>
@@ -129,7 +129,7 @@
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Kontakt hinzufügen"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"E-Mail senden"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"Karte"</string>
-    <string name="choosertitle_sharevia" msgid="4600490613341909086">"Weiterleiten über"</string>
+    <string name="choosertitle_sharevia" msgid="4600490613341909086">"Weitergeben über"</string>
     <string name="clear" msgid="7070043081700011461">"Löschen"</string>
     <string name="replace" msgid="4843033491070384047">"Ersetzen"</string>
     <string name="browser_bookmarks_page_bookmarks_text" msgid="6787605028726162673">"Lesezeichen"</string>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Einstellungen für Seiteninhalt"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Bilder laden"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Bilder auf Webseiten anzeigen"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Pop-ups blockieren"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Pop-up-Fenster blockieren"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"JavaScript aktivieren"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Im Hintergrund öffnen"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Plug-ins aktivieren"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Aus"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Neues Fenster hinter dem aktuellen Fenster öffnen"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Startseite festlegen"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Startseite festlegen"</string>
     <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>
@@ -158,7 +158,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Webseiten an den Bildschirm anpassen"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Allgemein"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Synchronisierung"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"AutoFill"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"AutoFill"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Mit Google Chrome synchronisieren"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Lesezeichen und andere Daten zwischen Android-Browser und Google Chrome austauschen"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google-Konto"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Lesezeichen zwischen Android-Browser und Google Chrome synchronisieren"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Synchronis. starten"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Google-Konto wählen"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Formulare automatisch ausfüllen"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Formulare automatisch ausfüllen"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Onlineformulare mit einem einzigen Klick ausfüllen"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"AutoFill-Einstellungen"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Angaben für das automatische Ausfüllen von Formularen festlegen und verwalten"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"AutoFill-Einstellungen"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Angaben für das automatische Ausfüllen von Formularen festlegen und verwalten"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Automatische Google-Anmeldung"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Keine Konten gefunden"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Bei Google-Websites automatisch mit <xliff:g id="ID_1">%s</xliff:g> anmelden"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Die Anmeldung auf Google-Websites anhand <xliff:g id="ID_1">%s</xliff:g>"\n"Ihrer Einstellungen für Datenschutz und Sicherheit steuert die automatische Google-Anmeldung."</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Nicht automatisch anmelden"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"AutoFill verwendet Ihr Profil, damit Sie Onlineformulare mit einem einzigen Klick ausfüllen können."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"AutoFill verwendet Ihr Profil, damit Sie Onlineformulare mit einem einzigen Klick ausfüllen können."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Vollständiger Name:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-Mail:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Name des Unternehmens:"</string>
@@ -194,9 +201,10 @@
     <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_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="4337372830506338827">"AutoFill kann stets über die Browsereinstellungen konfiguriert werden."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"AutoFill deaktivieren"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Datenschutz und Sicherheit"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"AutoFill kann jederzeit über \"Browsereinstellungen\" &amp;gt; \"Persönliche Einstellungen\" konfiguriert werden."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"AutoFill deaktivieren"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Datenschutz und Sicherheit"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Cache löschen"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Content und Datenbanken aus dem lokalen Cache löschen"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Content und Datenbanken werden aus dem lokalen Cache gelöscht."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Textcodierung"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Schnellsteuerung"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Daumen zum Zugriff auf Schnellsteuerung von linker oder rechte Ecke ziehen"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Startseite - am häufigsten besucht"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Legt fest, dass auf der Starts. die am häufigsten besuchten Seiten angez. werden"</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Schnellsteuerung"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Daumen zum Zugriff auf Schnellsteuerung von linker oder rechte Ecke ziehen"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Startseite - am häufigsten besucht"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Legt fest, dass auf der Starts. die am häufigsten besuchten Seiten angez. werden"</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Datenverbindungsproblem"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem mit Datei"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bestätigen"</string>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"SD-Karte nicht verfügbar"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Der USB-Speicher ist ausgelastet. Wählen Sie in der Benachrichtigung \"USB-Speicher deaktivieren\", um Downloads zuzulassen."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"Die SD-Karte wird benutzt. Wählen Sie in der Benachrichtigung \"USB-Speicher deaktivieren\" aus, um Downloads zuzulassen."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Nur Download von URLs mit \"http\" oder \"https\" möglich"</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Datei kann nicht geöffnet werden."</string>
     <string name="retry" msgid="1835923075542266721">"Wiederholen"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Downloadverlauf ist leer."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Konto auswählen"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Mit Google-Konto synchronisieren"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Ihre Android-Lesezeichen sind mit keinem Google-Konto verknüpft."</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Android-Lesezeichen entfernen"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Ihre Android-Lesezeichen sind mit keinem Google-Konto verknüpft."</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Android-Lesezeichen entfernen"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Ihre Android-Lesezeichen den Lesezeichen für <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> hinzufügen"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Weitergeben"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Es sind keine weiteren Tabs verfügbar."</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index b43d812..37dc42b 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Internet"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Επιλογή αρχείου για μεταφόρτωση"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Λίστα"</string>
     <string name="current_page" msgid="7510129573681663135">"από "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Ο σελιδοδείκτης \"<xliff:g id="BOOKMARK">%s</xliff:g>\" θα διαγραφεί."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Άνοιγμα σε νέο παράθυρο"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Άνοιγμα όλων σε νέα παράθυρα"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Μετάβαση"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Άνοιγμα νέας καρτέλας ανώνυμης περιήγησης"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Αποθήκευση ως αρχείου ιστού"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Το αρχείο ιστού αποθηκεύθηκε."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Η αποθήκευση του αρχείου ιστού απέτυχε."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Αποθήκευση ως αρχείου ιστού"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Το αρχείο ιστού αποθηκεύθηκε."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Η αποθήκευση του αρχείου ιστού απέτυχε."</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Ρυθμίσεις περιεχομένου σελίδας"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Φόρτωση εικόνων"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Προβολή εικόνων στις ιστοσελίδες"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Αποκλεισμός αναδυόμενων παραθύρων"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Αποκλεισμός αναδυόμενων παραθύρων"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Ενεργοποίηση JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Άνοιγμα στο παρασκήνιο"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Ενεργοποίηση πρόσθετων"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Απενεργοποιημένο"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Άνοιγμα νέων παραθύρων πίσω από το τρέχον"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Ορισμός ως αρχική σελίδα"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Ορισμός ως αρχική σελίδα"</string>
     <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>
@@ -158,7 +158,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Μορφοποίηση ιστοσελίδων για την προσαρμογή τους στο μέγεθος της οθόνης"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Γενικές"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Συγχρονισμός"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Αυτόματη συμπλήρωση"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Αυτόματη συμπλήρωση"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Συγχρονισμός με Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Κάντε κοινή χρήση σελιδοδεικτών και άλλων δεδομένων μεταξύ του Προγράμματος περιήγησης του Android και του Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Λογαριασμός Google"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Συγχρονισμός σελιδοδεικτών μεταξύ του Προγράμματος περιήγησης του Android και του Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Έναρξη συγχρονισμού"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Επιλογή λογαριασμού"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Αυτόματη συμπλήρωση φόρμας"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Αυτόματη συμπλήρωση φόρμας"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Συμπληρώστε φόρμες ιστού με ένα κλικ"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Ρυθμίσεις αυτόματης συμπλήρωσης"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Ρύθμιση και διαχείριση δεδομένων για φόρμες Αυτόματης συμπλήρωσης"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Ρυθμίσεις αυτόματης συμπλήρωσης"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Ρύθμιση και διαχείριση δεδομένων για φόρμες Αυτόματης συμπλήρωσης"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Αυτόματη σύνδεση στο Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Δεν βρέθηκαν λογαριασμοί"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Συνδεθείτε αυτόματα σε Ιστότοπους Google χρησιμοποιώντας το λογαριασμό <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Σύνδεση σε Ιστότοπους Google χρησιμοποιώντας το αναγνωριστικό <xliff:g id="ID_1">%s</xliff:g>"\n"Οι ρυθμίσεις Απόρρητο και Ασφάλεια ελέγχουν την αυτόματη σύνδεση στο Google"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Να μην γίνεται αυτόματη σύνδεση"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Η Αυτόματη Συμπλήρωση θα χρησιμοποιήσει το προφίλ σας για να σας βοηθήσει να συμπληρώσετε φόρμες ιστού με ένα κλικ."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Η Αυτόματη Συμπλήρωση θα χρησιμοποιήσει το προφίλ σας για να σας βοηθήσει να συμπληρώσετε φόρμες ιστού με ένα κλικ."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Πλήρες όνομα:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Ηλεκτρονικό ταχυδρομείο:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Επωνυμία εταιρείας:"</string>
@@ -194,9 +201,10 @@
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Το προφίλ διαγράφηκε"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Διαγραφή προφίλ"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Το πρόγραμμα περιήγησης μπορεί να ολοκληρώσει αυτόματα φόρμες ιστού σαν αυτήν. Θα θέλατε να δημιουργήσετε το δικό σας προφίλ;"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="4337372830506338827">"Μπορείτε να διαμορφώσετε τη λειτουργία αυτόματης συμπλήρωσης μέσα από τις ρυθμίσεις του προγράμματος περιήγησης."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Απενεργοποίηση αυτόματης συμπλήρωσης"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Απόρρητο και Ασφάλεια"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Είναι πάντοτε δυνατή η διαμόρφωση της Αυτόματης συμπλήρωσης μέσω των επιλογών Ρυθμίσεις προγράμματος περιήγησης -&amp;gt; Προσωπικές ρυθμίσεις"</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Απενεργοποίηση αυτόματης συμπλήρωσης"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Απόρρητο και Ασφάλεια"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Εκκαθάριση προσωρινής μνήμης"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Εκκαθάριση τοπικά αποθηκευμένου στη μνήμη cache περιεχομένου και βάσεων δεδομένων"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Περιεχόμενο και βάσεις δεδομένων που έχουν αποθηκευτεί στην τοπική προσωρινή μνήμη θα διαγραφούν."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Κωδικοποίηση κειμένου"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Εργαστήρια"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Στοιχεία γρήγορου ελέγχου"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Σύρετε τον αντίχειρα από αριστερά ή δεξιά για τα στοιχεία γρήγορου ελέγχου"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Αρχική σελίδα με τις περισ. επισκέψεις"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Ορίζει στην αρχική σελίδα την εμφάνιση των σελίδων με τις περισσότ. επισκέψεις"</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Στοιχεία γρήγορου ελέγχου"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Σύρετε τον αντίχειρά σας από το αριστερό ή το δεξί άκρο για να έχετε πρόσβαση στα στοιχεία γρήγορου ελέγχου"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Αρχική σελίδα με τις περισ. επισκέψεις"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Ορίζει στην αρχική σελίδα την εμφάνιση των σελίδων με τις περισσότ. επισκέψεις"</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Πρόβλημα σύνδεσης δεδομένων"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Υπάρχει πρόβλημα με το αρχείο"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Επιβεβαίωση"</string>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Η κάρτα SD δεν είναι διαθέσιμη"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Ο χώρος αποθήκευσης USB είναι απασχολημένος. Για να επιτρέψετε τις λήψεις, επιλέξτε \"Απενεργοποίηση χώρου αποθήκευσης USB\" στην ειδοποίηση."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"Η κάρτα SD είναι απασχολημένη. Για να επιτρέψετε τις λήψεις, επιλέξτε \"Απενεργοποίηση χώρου αποθήκευσης USB\" στην ειδοποίηση."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Είναι δυνατή η λήψη μόνο διευθύνσεων URL \"http\" ή \"https\"."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Δεν είναι δυνατό το άνοιγμα του αρχείου"</string>
     <string name="retry" msgid="1835923075542266721">"Επανάληψη"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Το ιστορικό λήψεων του προγράμματος περιήγησης είναι κενό."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Επιλογή λογαριασμού"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Συγχρον. με Λογαριασμό Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Οι σελιδοδείκτες σας Android δεν σχετίζονται με κάποιον Λογαριασμό Google"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Καταργήστε τους σελιδοδείκτες σας Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Οι σελιδοδείκτες σας Android δεν σχετίζονται με κάποιον Λογαριασμό Google"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Καταργήστε τους σελιδοδείκτες σας Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Προσθ. τους σελιδοδείκτες Android στους σελιδοδείκτες του <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Κοινή χρήση"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Δεν υπάρχουν άλλες διαθέσιμες καρτέλες"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index e2bb5fe..f933c51 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Browser"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Choose file for upload"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"List"</string>
     <string name="current_page" msgid="7510129573681663135">"from "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Bookmark \"<xliff:g id="BOOKMARK">%s</xliff:g>\" will be deleted."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Open in new window"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Open all in new windows"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Go"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Open new incognito tab"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Save as Web Archive"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Web archive saved."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Failed to save web archive."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Save as Web Archive"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Web archive saved."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Failed to save web archive."</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Page content settings"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Load images"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Display images on web pages"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Block pop-up windows"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Block pop-up windows"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Enable JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Open in background"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Enable plug-ins"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Off"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Open new windows behind the current one"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Set homepage"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Set homepage"</string>
     <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>
@@ -158,7 +158,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Sync"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Auto-fill"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Auto-fill"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Sync with Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Share bookmarks &amp; other data between Android Browser and Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google account"</string>
@@ -166,16 +166,24 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Sync bookmarks between Android Browser and Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Start syncing"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Select Google account to share with"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Form AutoFill"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Form Auto-Fill"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Fill in web forms with a single click"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"AutoFill Settings"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Set up &amp; manage data for AutoFilled forms"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Auto-Fill Settings"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Set up &amp;amp; manage data for Auto-Filled forms"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Automatic Google sign-in"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"No accounts found"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Sign in to Google sites automatically, using <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Signing into Google sites, using <xliff:g id="ID_1">%s</xliff:g>"\n"Your Privacy &amp; Security settings control automatic Google sign-in"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Don\'t sign in automatically"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"AutoFill will use your profile to help you complete web forms with a single click."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Auto-Fill will use your profile to help you complete web forms with a single click."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Full name:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Email:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Company name:"</string>
@@ -194,9 +202,10 @@
     <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_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="4337372830506338827">"Auto-Fill can always be configured through Browser Settings."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Disable Auto-Fill"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Privacy &amp; Security"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Auto-Fill can always be configured through Browser Settings -&amp;gt; Personal Settings."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Disable Auto-Fill"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Privacy &amp; Security"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Clear cache"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Clear locally cached content and databases"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Locally cached content and databases will be deleted."</string>
@@ -269,10 +278,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Text encoding"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Quick Controls"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Swipe thumb from left or right edge to access quick controls"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Most Visited Homepage"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Sets your homepage to show the most visited pages."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Quick Controls"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Swipe thumb from left or right edge to access quick controls"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Most Visited Homepage"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Sets your homepage to show the most visited pages."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -316,6 +329,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"SD card unavailable"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"The USB storage is busy. To allow downloads, select \"Turn off USB storage\" in the notification."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"The SD card is busy. To allow downloads, select \"Turn off USB storage\" in the notification."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Can only download \"http\" or \"https\" URLs."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Cannot open file"</string>
     <string name="retry" msgid="1835923075542266721">"Retry"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Download history is empty."</string>
@@ -364,9 +378,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Choose account"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sync with Google account"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Your Android bookmarks are not associated with a Google account"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Remove your Android bookmarks"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Your Android bookmarks are not associated with a Google account"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Remove your Android bookmarks"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Add your Android bookmarks to bookmarks for <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Share"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"No more tabs available"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 829e5c4..3d19b4e 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Navegador"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Elegir el archivo para cargar"</string>
+    <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>
@@ -86,18 +87,17 @@
     <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>
-    <string name="homepage_set" msgid="8768087280310966395">"Configuración de página principal."</string>
+    <string name="homepage_set" msgid="8768087280310966395">"Página principal establecida."</string>
     <string name="bookmark_needs_title" msgid="6245900436119218187">"El marcador debe tener un nombre."</string>
     <string name="bookmark_needs_url" msgid="7809876865972755158">"El marcador debe tener una ubicación."</string>
     <string name="bookmark_url_not_valid" msgid="6719785633980202419">"La URL no es válida."</string>
     <string name="bookmark_cannot_save_url" msgid="791722768778386941">"No se puede agregar esta URL a los marcadores."</string>
     <string name="delete_bookmark" msgid="2422989994934201992">"Eliminar"</string>
-    <string name="bookmark_page" msgid="6845189305130307274">"Última página vista del marcador"</string>
+    <string name="bookmark_page" msgid="6845189305130307274">"Agregar marcador a última página vista"</string>
     <string name="bookmark_thumbnail_view" msgid="3164068314718522138">"Miniaturas"</string>
     <string name="bookmark_list_view" msgid="7848510619500937839">"Lista"</string>
     <string name="current_page" msgid="7510129573681663135">"de "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"El marcador \"<xliff:g id="BOOKMARK">%s</xliff:g>\" se eliminará."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Abrir en una ventana nueva"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Abrir todos en ventanas nuevas"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Ir"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Abrir nueva pestaña de incógnito"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Guardar como Archivo web"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Archivo web guardado."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Error al guardar el archivo web."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Guardar como Archivo web"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Archivo web guardado."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Error al guardar el archivo web."</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>
@@ -137,17 +137,17 @@
     <string name="pref_content_title" msgid="722227111894838633">"Configuración del contenido de la página"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Cargar imágenes"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Visualizar imágenes en páginas web"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Bloq. ventanas emerg."</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Bloquear ventanas emergentes"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Habilitar JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Abrir en modo subord."</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Activar complementos"</string>
   <string-array name="pref_content_plugins_choices">
-    <item msgid="6745108155096660725">"Siempre en"</item>
+    <item msgid="6745108155096660725">"Siempre activado"</item>
     <item msgid="2484126708670016519">"A pedido"</item>
     <item msgid="8547442717307793863">"Apagado"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Abrir ventanas nuevas detrás de la actual"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Definir página de inicio"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Definir página principal"</string>
     <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>
@@ -158,31 +158,39 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Sincronización"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Autocompletar"</string>
+    <!-- outdated translation 3214478293686374847 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Autocompletar"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Sincronización con Google Chrome"</string>
-    <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Compartir favoritos &amp; otros datos entre el navegador Android y Google Chrome"</string>
+    <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Compartir favoritos y otros datos entre el navegador de Android y Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Cuenta de Google"</string>
     <string name="pref_personal_sync_bookmarks" msgid="59237515966184432">"Sincronizar favoritos"</string>
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Sincronizar favoritos entre el navegador Android y Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Iniciar la sincr."</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Selec cta Google p/comp"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Formulario de autollenado"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Formulario de autollenado"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Completa formularios web con un clic"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Configuración de autollenado"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Configurar y administrar datos para los formularios de autollenado"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Configuración de autollenado"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Configurar &amp;amp; administrar datos para los formularios de autocompletado"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Acceso automático a Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"No se encontraron las cuentas"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Acceder automáticamente a sitios de Google utilizando <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Accediendo a Google Sites utilizando<xliff:g id="ID_1">%s</xliff:g>"\n"Tu control de configuración de seguridad &amp; privacidad automático para acceso a Google"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"No accedas de manera automática"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"La función Autocompletar utilizará tu perfil para ayudarte a rellenar formularios web con un solo clic."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"La función Autocompletar utilizará tu perfil para ayudarte a completar los formularios web con solo un clic."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Nombre completo:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Correo electrónico:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Nombre de la empresa:"</string>
     <string name="autofill_profile_editor_address_line_1" msgid="836433242509243081">"Dirección línea 1:"</string>
     <string name="autofill_profile_editor_address_line_1_hint" msgid="5965659598509327172">"Dirección postal, código postal, A/A"</string>
     <string name="autofill_profile_editor_address_line_2" msgid="8194745202893822479">"Dirección línea 2:"</string>
-    <string name="autofill_profile_editor_address_line_2_hint" msgid="2048330295853546405">"Apartamento, suite, unidad, edificio, suelo, etc."</string>
+    <string name="autofill_profile_editor_address_line_2_hint" msgid="2048330295853546405">"Departamento, oficina, unidad, edificio, piso, etc."</string>
     <string name="autofill_profile_editor_city" msgid="4193225955409148508">"Ciudad/Pueblo:"</string>
     <string name="autofill_profile_editor_state" msgid="8549739922338171458">"Estado / Provincia / Región:"</string>
     <string name="autofill_profile_editor_zip_code" msgid="283668573295656671">"Código postal:"</string>
@@ -194,26 +202,26 @@
     <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_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="4337372830506338827">"Autocompletar siempre se puede configurar mediante los Parámetros de configuración del navegador."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Desactivar Autocompletar"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Privacidad y seguridad"</string>
+    <!-- outdated translation 8290973940003625025 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Autocomp. se configura en cualquier momento con Configuración del navegador."</string>
+    <!-- outdated translation 7984096318749960909 -->     <string name="disable_autofill" msgid="8305901059849400354">"Inhabilitar Autocompl."</string>
+    <!-- outdated translation 1547485785692120937 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Privacidad &amp; Seguridad"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Borrar memoria caché"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Borrar el contenido y las bases de datos de la memoria caché local"</string>
-    <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Se suprimirá el contenido y las bases de datos de la memoria caché local."</string>
+    <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Se eliminará el contenido y las bases de datos de la memoria caché local."</string>
     <string name="pref_privacy_cookies_title" msgid="6763274282214830526">"Cookies"</string>
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Borrar datos de cookies"</string>
     <string name="pref_privacy_clear_cookies_summary" msgid="6962742063990677520">"Eliminar todas las cookies del navegador"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="552855688091432682">"Se suprimirán todas las cookies."</string>
+    <string name="pref_privacy_clear_cookies_dlg" msgid="552855688091432682">"Se eliminarán todas las cookies."</string>
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Borrar historial"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Borrar el historial de navegación del navegador"</string>
-    <string name="pref_privacy_clear_history_dlg" msgid="544903007914753853">"Se suprimirá el historial del navegador."</string>
+    <string name="pref_privacy_clear_history_dlg" msgid="544903007914753853">"Se eliminará el historial del navegador."</string>
     <string name="pref_privacy_formdata_title" msgid="6549813837982050424">"Datos de formulario"</string>
     <string name="pref_privacy_clear_form_data" msgid="4232668196344383987">"Borrar datos del formulario"</string>
     <string name="pref_privacy_clear_form_data_summary" msgid="1790390894719517167">"Borrar todos los datos guardados del formulario"</string>
-    <string name="pref_privacy_clear_form_data_dlg" msgid="4443621086781197928">"Se suprimirán todos los datos guardados del formulario."</string>
+    <string name="pref_privacy_clear_form_data_dlg" msgid="4443621086781197928">"Se eliminarán todos los datos guardados del formulario."</string>
     <string name="pref_privacy_clear_passwords" msgid="4750234112289277480">"Borrar contraseñas"</string>
     <string name="pref_privacy_clear_passwords_summary" msgid="8856782718942903335">"Eliminar todas las contraseñas guardadas"</string>
-    <string name="pref_privacy_clear_passwords_dlg" msgid="2083869328824248255">"Se suprimirán todas las contraseñas guardadas."</string>
+    <string name="pref_privacy_clear_passwords_dlg" msgid="2083869328824248255">"Se eliminarán todas las contraseñas guardadas."</string>
     <string name="pref_privacy_location_title" msgid="7458378016606081067">"Ubicación"</string>
     <string name="pref_privacy_enable_geolocation" msgid="1395040170290765686">"Activar ubicación"</string>
     <string name="pref_privacy_enable_geolocation_summary" msgid="8437020934664306205">"Permitir que los sitios soliciten acceso a tu ubicación"</string>
@@ -231,20 +239,20 @@
     <string name="pref_security_accept_cookies_summary" msgid="1465118934875026920">"Permitir que los sitios guarden y lean datos de las \"cookies\""</string>
     <string name="pref_text_size" msgid="3827031324346612208">"Tamaño del texto"</string>
   <string-array name="pref_text_size_choices">
-    <item msgid="4952686548944739548">"Más pequeño"</item>
+    <item msgid="4952686548944739548">"Diminuto"</item>
     <item msgid="1950030433642671460">"Pequeño"</item>
     <item msgid="4338347520133294584">"Normal"</item>
     <item msgid="5043128215356351184">"Grande"</item>
     <item msgid="7201512237890458902">"Enorme"</item>
   </string-array>
     <string name="pref_text_size_dialogtitle" msgid="3625388833512647865">"Tamaño del texto"</string>
-    <string name="pref_default_zoom" msgid="8076142259097187395">"Predeterminar zoom"</string>
+    <string name="pref_default_zoom" msgid="8076142259097187395">"Zoom predeterminado"</string>
   <string-array name="pref_default_zoom_choices">
     <item msgid="549583171195154919">"Lejos"</item>
     <item msgid="5619034257768161024">"Medio"</item>
     <item msgid="3840999588443167001">"Cerca"</item>
   </string-array>
-    <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Predeterminar zoom"</string>
+    <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Zoom predeterminado"</string>
     <string name="pref_content_load_page" msgid="2219810141690955452">"Abrir las páginas en descripción general"</string>
     <string name="pref_content_load_page_summary" msgid="8792093504054149369">"Mostrar la descripción general de las páginas nuevas abiertas"</string>
     <string name="pref_extras_title" msgid="7075456173747370647">"Avanzado"</string>
@@ -258,7 +266,7 @@
     <string name="pref_development_title" msgid="3263854204533056480">"Depurar"</string>
     <string name="pref_default_text_encoding" msgid="5742965543955558478">"Codificación de texto"</string>
   <string-array name="pref_default_text_encoding_choices">
-    <item msgid="7275223955790513818">"Latino-1 (ISO-8859-1)"</item>
+    <item msgid="7275223955790513818">"Latin-1 (ISO-8859-1)"</item>
     <item msgid="2456597866837587140">"Unicode (UTF-8)"</item>
     <item msgid="6122474363777211732">"Chino (GBK)"</item>
     <item msgid="373372275931607040">"Chino (Big5)"</item>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codificación de texto"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Controles rápidos"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Desliza el pulgar del borde izquierdo o derecho y accede a los controles rápidos."</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Página de inicio más visitada"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Configura tu página principal para que muestre las páginas más visitadas."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controles rápidos"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Desliza el pulgar del borde izquierdo/derecho y accede a los controles rápidos."</string>
+    <!-- outdated translation 5370897089855764337 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Página principal más visitada"</string>
+    <!-- outdated translation 209045361369363184 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Configura tu página principal para que muestre las páginas más visitadas"</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -315,7 +327,8 @@
     <string name="download_sdcard_busy_dlg_title" product="nosdcard" msgid="8081445664689818973">"Almacenamiento USB no disponible"</string>
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Tarjeta SD no disponible"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"El almacenamiento USB está ocupado. Para permitir descargas, selecciona \"Desactivar almacenamiento USB\" en la notificación."</string>
-    <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"La tarjeta SD está llena. Para permitir descargas, selecciona \"Desactivar almacenamiento USB\" en la notificación."</string>
+    <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"La tarjeta SD está ocupada. Para permitir descargas, selecciona \"Desactivar almacenamiento USB\" en la notificación."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Solo se pueden descargar URL de \"http\" o de \"https\"."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"No se puede abrir el archivo."</string>
     <string name="retry" msgid="1835923075542266721">"Intentar nuevamente"</string>
     <string name="no_downloads" msgid="3947445710685021498">"El historial de descarga está vacío."</string>
@@ -355,7 +368,7 @@
     <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Cancelar"</string>
     <string name="website_settings_clear_all" msgid="8739804325997655980">"Eliminar todos"</string>
     <string name="website_settings_clear_all_dialog_title" msgid="7791826325122461718">"¿Deseas eliminar toda la configuración del sitio web?"</string>
-    <string name="website_settings_clear_all_dialog_message" msgid="6150502090601476333">"Se suprimirán todos los datos del sitio web y los permisos de ubicación."</string>
+    <string name="website_settings_clear_all_dialog_message" msgid="6150502090601476333">"Se eliminarán todos los permisos de ubicación y los datos del sitio web."</string>
     <string name="website_settings_clear_all_dialog_ok_button" msgid="6401582240627669431">"Eliminar todos los datos"</string>
     <string name="website_settings_clear_all_dialog_cancel_button" msgid="1896757051856611674">"Cancelar"</string>
     <string name="progress_dialog_setting_wallpaper" msgid="4871900779338536674">"Estableciendo fondo de pantalla..."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Seleccionar la cuenta"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronización con cta de Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Tus favoritos de Android no están asociados con una cuenta de Google."</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Eliminar tus favoritos de Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Tus favoritos de Android no están asociados con una cuenta de Google."</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Eliminar tus favoritos de Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Agrega tus favoritos de Android a tus favoritos para <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Compartir"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"No hay más pestañas disponibles."</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 6da6458..f8bb984 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Navegador"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Seleccionar archivo para subir"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Lista"</string>
     <string name="current_page" msgid="7510129573681663135">"de "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Se eliminará el marcador \"<xliff:g id="BOOKMARK">%s</xliff:g>\"."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Abrir en ventana nueva"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Abrir todo en ventanas nuevas"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Ir"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Abrir nueva pestaña de incógnito"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Guardar como archivo web"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Archivo web guardado"</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Error al guardar archivo web"</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Guardar como archivo web"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Archivo web guardado"</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Error al guardar archivo web"</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Ajustes de contenido de la página"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Cargar imágenes"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Mostrar imágenes en páginas web"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Bloquear pop-ups"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Bloquear ventanas emergentes"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Habilitar JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Abrir en segundo plano"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Habilitar complementos"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Desactivado"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Abrir nuevas ventanas detrás de la actual"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Escritorio"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Página de inicio"</string>
     <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>
@@ -158,7 +158,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Sincronización"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Autocompletar"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Autocompletar"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Sincronizar con Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Compartir marcadores y otros datos entre el navegador de Android y Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Cuenta de Google"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Sincronizar marcadores entre el navegador de Android y Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Iniciar sincronización"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Elegir cuenta para compartir"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Autocompletar formulario"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Autocompletar formulario"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Rellenar formularios web con un solo clic"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Ajustes de autocompletado"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Configurar y administrar los datos de los formularios rellenados automáticamente"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Ajustes de autocompletado"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Configurar y administrar los datos de los formularios rellenados automáticamente"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Acceso automático a Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"No se han encontrado cuentas."</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Accede a los sitios de Google de forma automática mediante la cuenta <xliff:g id="ID_1">%s</xliff:g>."</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Accediendo a Google Sites mediante el <xliff:g id="ID_1">%s</xliff:g>"\n"acceso automático de Google de control de los ajustes de seguridad y de privacidad"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"No acceder automáticamente"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"La función Autocompletar utilizará tu perfil para ayudarte a rellenar formularios web con un solo clic."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"La función Autocompletar utilizará tu perfil para ayudarte a rellenar formularios web con un solo clic."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Nombre completo:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Email:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Nombre de la empresa:"</string>
@@ -194,9 +201,10 @@
     <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_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="4337372830506338827">"La función Autocompletar se puede configurar en cualquier momento a través de los ajustes del navegador."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Inhabilitar Autocompletar"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Privacidad y seguridad"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"La función Autocompletar se puede configurar en cualquier momento a través de Ajustes del navegador -&amp;gt; Configuración personal."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Inhabilitar Autocompletar"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Privacidad y seguridad"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Borrar caché"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Borrar bases de datos y contenido de la memoria caché local"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Las bases de datos y el contenido se eliminarán de la memoria caché local."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codificación de texto"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Controles rápidos"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Desliza el pulgar de izquierda a derecha para acceder a los controles rápidos."</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Página principal más visitada"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Configura tu página principal para que muestre las páginas más visitadas."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controles rápidos"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Desliza el pulgar desde el borde izquierdo o derecho para acceder a los controles rápidos."</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Página principal más visitada"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Configura tu página principal para que muestre las páginas más visitadas."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Tarjeta SD no disponible"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"El almacenamiento USB está ocupado. Para permitir descargas, selecciona \"Desactivar almacenamiento USB\" en la notificación."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"La tarjeta SD está ocupada. Para permitir descargas, selecciona \"Desactivar almacenamiento USB\" en la notificación."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Solo se pueden descargar URL del tipo \"http\" o \"https\"."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"No se puede abrir el archivo"</string>
     <string name="retry" msgid="1835923075542266721">"Reintentar"</string>
     <string name="no_downloads" msgid="3947445710685021498">"El historial de descargas está vacío."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Seleccionar cuenta"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronizar con cuenta de Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Tus marcadores de Android no se han asociado a una cuenta de Google."</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Eliminar los marcadores de Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Tus marcadores de Android no se han asociado a una cuenta de Google."</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Eliminar los marcadores de Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <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>
     <string name="max_tabs_warning" msgid="4122034303809457570">"No hay más pestañas disponibles."</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 71f9aae..0c4a713 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"مرورگر"</string>
     <string name="choose_upload" msgid="3649366287575002063">"انتخاب فایل برای آپلود"</string>
+    <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>
@@ -98,7 +99,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"لیست"</string>
     <string name="current_page" msgid="7510129573681663135">"از "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"نشانک \"<xliff:g id="BOOKMARK">%s</xliff:g>\" حذف می شود."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"باز کردن در پنجره جدید"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"باز کردن همه در پنجره های جدید"</string>
     <string name="goto_dot" msgid="3895839050522602723">"برو"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"باز کردن زبانه ناشناخته جدید"</string>
@@ -111,9 +111,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"ذخیره به عنوان بایگانی وب"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"بایگانی وب ذخیره شد."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"ذخیره بایگانی وب ناموفق بود."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"ذخیره به عنوان بایگانی وب"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"بایگانی وب ذخیره شد."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"ذخیره بایگانی وب ناموفق بود."</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>
@@ -138,7 +138,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"تنظیمات محتوای صفحه"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"بارگیری تصاویر"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"نمایش تصاویر در صفحات وب"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"مسدود کردن پنجره های بازشو"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"مسدود کردن پنجره های بازشو"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"فعال کردن جاوا اسکریپت"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"باز کردن در پس زمینه"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"فعال کردن افزونه ها"</string>
@@ -148,7 +148,7 @@
     <item msgid="8547442717307793863">"خاموش"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"باز کردن پنجره های جدید پشت پنجره فعلی"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"تنظیم صفحه اصلی"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"تنظیم صفحه اصلی"</string>
     <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>
@@ -159,7 +159,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"قالب صفحات وب متناسب با صفحه"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"عمومی"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"همگامسازی"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"تکمیل خودکار"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"تکمیل خودکار"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"همگام سازی با Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"اشتراک گذاری نشانک ها و سایر داده ها بین مرورگر Android و Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"حساب Google"</string>
@@ -167,16 +167,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"همگام سازی نشانک ها بین مرورگر Android و Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"شروع همگام سازی"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"انتخاب حساب Google جهت اشتراک گذاری"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"تکمیل خودکار فرم"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"تکمیل خودکار فرم"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"تکمیل کردن فرم ها با یک کلیک"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"تنظیمات تکمیل خودکار"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"تنظیم و مدیریت داده برای فرم های تکمیل شده به طور خودکار"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"تنظیمات تکمیل خودکار"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"تنظیم و مدیریت داده برای فرم های تکمیل شده به طور خودکار"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"ورود به سیستم خودکار Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"حسابی یافت نشد"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"با استفاده از <xliff:g id="ID_1">%s</xliff:g> به صورت خودکار به سایت های Google وارد شوید"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"ورود به سایت های Google با استفاده از <xliff:g id="ID_1">%s</xliff:g>"\n"تنظیمات حریم خصوصی و امنیت خود، ورود به سیستم خودکار Google را کنترل می کند"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"به صورت خودکار به سیستم وارد نشوید"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"تکمیل خودکار از نمایه شما استفاده می کند تا به شما کمک کند فرم های وب را با یک کلیک پر کنید."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"تکمیل خودکار از نمایه شما استفاده می کند تا به شما کمک کند فرم های وب را با یک کلیک پر کنید."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"نام کامل:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"ایمیل:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"نام شرکت:"</string>
@@ -195,9 +202,10 @@
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"نمایه حذف شد"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"حذف نمایه"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"مرورگر می تواند بصورت خودکار فرم های وب مانند این یکی را پر کند. دوست دارید نمایه خود را تنظیم کنید؟"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="4337372830506338827">"تکمیل خودکار را همیشه می توانید از طریق تنظیمات مرورگر پیکربندی کنید."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"غیرفعال کردن تکمیل خودکار"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"حریم خصوصی و ایمنی"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"تکمیل خودکار را همیشه می توان از طریق تنظیمات مرورگر -&amp;gt; تنظیمات شخصی پیکربندی کرد."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"غیرفعال کردن تکمیل خودکار"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"حریم خصوصی و ایمنی"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"پاک کردن حافظه پنهان"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"پاک کردن پایگاه های داده و محتوای موجود در حافظه پنهان محلی"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"پایگاه داده ها و محتوای موجود در حافظه پنهان محلی حذف می شوند."</string>
@@ -270,10 +278,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"رمزگذاری متن"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"کنترل های سریع"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"برای دسترسی به کنترل های سریع، انگشت شست خود را در لبه های چپ یا راست جابجا کنید"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"صفحه اصلی بیشتر بازدید شده"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"صفحه اصلی شما را برای نمایش صفحات بیشتر بازدید شده تنظیم می کند."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"کنترل های سریع"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"برای دسترسی به کنترل های سریع، انگشت شست خود را از چپ به راست جابجا کنید"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"صفحه اصلی بیشتر بازدید شده"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"صفحه اصلی شما را برای نمایش صفحات بیشتر بازدید شده تنظیم می کند."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"مشکل اتصال داده"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"مشکل در فایل"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"تأیید"</string>
@@ -317,6 +329,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"کارت SD موجود نیست"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"حافظه USB مشغول است. برای اجازه به دانلودها، \"خاموش کردن حافظه USB\" را در اعلان انتخاب کنید."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"کارت SD مشغول است. برای اجازه به دانلودها، \"خاموش کردن ذخیره USB\" را در اعلان انتخاب کنید."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"فقط می تواند URL های \"http\" یا \"https\" را دانلود کند."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"فایل باز نمی شود"</string>
     <string name="retry" msgid="1835923075542266721">"امتحان مجدد"</string>
     <string name="no_downloads" msgid="3947445710685021498">"سابقه دانلود خالی است."</string>
@@ -365,9 +378,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"انتخاب حساب"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"همگام سازی با حساب Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"نشانک های Android شما با حساب Google مرتبط نیستند"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"حذف نشانک های Android خود"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"نشانک های Android شما با حساب Google مرتبط نیستند"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"حذف نشانک های Android خود"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"افزودن نشانک های Android خود به نشانک های <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"اشتراک گذاری"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"برگه بیشتری در دسترس نیست"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 6bfe70e..23504cb 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Selain"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Valitse lähetettävä tiedosto"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Luettelo"</string>
     <string name="current_page" msgid="7510129573681663135">"kohteesta "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Kirjanmerkki \"<xliff:g id="BOOKMARK">%s</xliff:g>\" poistetaan."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Avaa uudessa ikkunassa"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Avaa kaikki uusissa ikkunoissa"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Siirry"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Avaa uusi incognito-välilehti"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Tallenna verkkoarkistona"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Verkkoarkisto tallennettu."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Verkkoarkiston tallentaminen epäonnistui."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Tallenna verkkoarkistona"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Verkkoarkisto tallennettu."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Verkkoarkiston tallentaminen 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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Sivun sisältöasetukset"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Lataa kuvat"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Näytä verkkosivujen kuvat"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Ponnahdusikkunoiden esto"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Ponnahdusikkunoiden esto"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Ota JavaScript käyttöön"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Avaa taustalla"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Ota laajennukset käyttöön"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Pois käytöstä"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Avaa uudet ikkunat nykyisen taakse"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Aseta aloitussivu"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Aseta aloitussivu"</string>
     <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>
@@ -158,7 +158,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Sovita verkkosivut näytölle"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Yleinen"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Synkronointi"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Automaattinen täyttö"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Automaattinen täyttö"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Synkronoi Google Chromen kanssa"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Jaa kirjanmerkkejä ja muita tietoja Android-selaimen ja Google Chromen välillä"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google-tili"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Synkronoi kirjanmerkit Android-selaimen ja Google Chromen välillä"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Aloita synkronointi"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Valitse, minkä Google-tilin kanssa jaetaan"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Lomakkeen automaattinen täyttö"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Lomakkeen automaattinen täyttö"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Täytä verkkolomakkeita yhdellä napsautuksella"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Automaattisen täytön asetukset"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Aseta automaattisesti täytettyjen lomakkeiden tiedot ja hallinnoi tietoja"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Automaattisen täytön asetukset"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Aseta automaattisesti täytettyjen lomakkeiden tiedot ja hallinnoi tietoja"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Automaattinen Google-sisäänkirjaus"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Ei tilejä"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Kirjaudu sisään Googlen sivustoihin automaattisesti käyttäen tiliä <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Kirjaudutaan sisään Googlen sivustoihin käyttäen tiliä <xliff:g id="ID_1">%s</xliff:g>"\n"Automaattista Google-sisäänkirjautumista säätelevät tietosuoja- ja turvallisuusasetuksesi"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Älä kirjaudu sisään automaattisesti"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Automaattinen täyttö käyttää profiiliasi, jotta voit täyttää verkkolomakkeita yhdellä napsautuksella."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Automaattinen täyttö käyttää profiiliasi, jotta voit täyttää verkkolomakkeita yhdellä napsautuksella."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Koko nimi:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Sähköposti:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Yrityksen nimi:"</string>
@@ -194,9 +201,10 @@
     <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_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="4337372830506338827">"Automaattisen täytön asetuksia voi aina muuttaa selainasetuksista."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Poista automaattinen täyttö käytöstä"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Tietosuoja ja turvallisuus"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automaattisen täytön asetuksia voi aina muokata kohdassa Selaimen asetukset &amp;gt;  Omat asetukset."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Poista automaattinen täyttö käytöstä"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Tietosuoja ja turvallisuus"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Tyhjennä välimuisti"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Poista paikallisen välimuistin sisältö ja tietokannat"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Paikallisen välimuistin sisältö ja tietokannat poistetaan."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Tekstin koodaus"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Pikasäätimet"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Saat pikasäätimet käyttöösi liu\'uttamalla vasemmalta tai oikealta reunalta"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Useimmin napsautetut etusivulla"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Asettaa etusivusi näyttämään vierailluimmat sivut."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Pikaohjaimet"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Saat pikaohjaimet käyttöön pyyhkäisemällä peukalolla vasemmasta tai oikeasta reunasta"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Useimmin napsautetut etusivulla"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Asettaa etusivusi näyttämään vierailluimmat sivut."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Datayhteysongelma"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Tiedosto-ongelma"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Vahvista"</string>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"SD-kortti ei käytettävissä"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"USB-tallennustila on varattu. Voit sallia lataukset valitsemalla ilmoituksessa Poista USB-tallennustila käytöstä."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"SD-kortti on varattu. Voit sallia lataukset valitsemalla ilmoituksessa \"Poista USB-tallennustila käytöstä\"."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Vain http- tai https-URL-osoitteista voi ladata"</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Tiedostoa ei voi avata"</string>
     <string name="retry" msgid="1835923075542266721">"Yritä uudelleen"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Lataushistoria on tyhjä."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Valitse tili"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synkronoi Google-tilin kanssa"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Android-kirjanmerkkejä ei ole yhdistetty Google-tiliin"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Poista Android-kirjanmerkkisi"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Android-kirjanmerkkejä ei ole yhdistetty Google-tiliin"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Poista Android-kirjanmerkkisi"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Lisää Android-kirjanmerkit tilin <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> kirjanmerkkeihin"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Jaa"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Välilehtiä ei ole enempää saatavilla"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index e511420..effe65b 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Navigateur"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Choisir le fichier à importer"</string>
+    <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>
@@ -79,7 +80,7 @@
     <string name="remove" msgid="7820112494467011374">"Supprimer"</string>
     <string name="edit_bookmark" msgid="5024089053490231905">"Modifier le favori"</string>
     <string name="create_shortcut_bookmark" msgid="1995095662095484289">"Créer un raccourci sur la page d\'accueil"</string>
-    <string name="open_bookmark" msgid="8473581305759935790">"Ouverture"</string>
+    <string name="open_bookmark" msgid="8473581305759935790">"Ouvrir"</string>
     <string name="remove_bookmark" msgid="8407495852801410891">"Supprimer le favori"</string>
     <string name="remove_from_bookmarks" msgid="4374080666576982775">"Supprimer des favoris"</string>
     <string name="remove_history_item" msgid="5021424935726728618">"Supprimer de l\'historique"</string>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Liste"</string>
     <string name="current_page" msgid="7510129573681663135">"de "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Le favori \"<xliff:g id="BOOKMARK">%s</xliff:g>\" sera supprimé."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Nouvelle fenêtre"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Toujours ouvrir dans une nouvelle fenêtre"</string>
     <string name="goto_dot" msgid="3895839050522602723">"OK"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Ouvrir un onglet de navigation privée"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Enregistrer comme archive Web"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Archive Web enregistrée"</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Échec de l\'enregistrement de l\'archive Web"</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Enregistrer comme archive Web"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Archive Web enregistrée"</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Échec de l\'enregistrement de l\'archive Web"</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Paramètres du contenu de la page"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Charger les images"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Afficher les images des pages Web"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Bloquer les pop-up"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Bloquer les pop-up"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Activer JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Ouvrir en arrière-plan"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Activer les plug-ins"</string>
@@ -147,9 +147,9 @@
     <item msgid="8547442717307793863">"Désactivé"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Ouvrir les nouvelles fenêtres derrière la fenêtre actuelle"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Page d\'accueil"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Configurer la page d\'accueil"</string>
     <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électionnez un 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>
     <string name="pref_use_current" msgid="1778622474040406672">"Page en cours"</string>
     <string name="pref_use_blank" msgid="8503238592551111169">"Page vierge"</string>
@@ -158,7 +158,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Synchronisation"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Saisie automatique"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Saisie automatique"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Synchroniser avec Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Partager les favoris et d\'autres données entre le navigateur Android et Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Compte Google"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Synchroniser les favoris entre le navigateur Android et Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Démarrer la synchro"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Sélection du compte Google"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Remplissage auto des formulaires"</string>
-    <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Remplissez les formulaires Web en un clic."</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Paramètres de saisie automatique"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Configurez et gérez les données de remplissage automatique des formulaires."</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Remplissage automatique des formulaires"</string>
+    <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Remplir les formulaires Web en un clic"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Paramètres de saisie automatique"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Configurer et gérer les données de remplissage automatique des formulaires"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Connexion automatique à Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Aucun compte trouvé"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Se connecter automatiquement à Google Sites à l\'aide de <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Connexion à Google Sites avec <xliff:g id="ID_1">%s</xliff:g>"\n"Vos paramètres de confidentialité et de sécurité contrôlent la connexion automatique à Google."</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Ne pas se connecter automatiquement"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"La fonctionnalité de saisie automatique utilise les données de votre profil pour vous aider à remplir les formulaires Web en un seul clic."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"La fonctionnalité de saisie automatique utilise les données de votre profil pour vous aider à remplir les formulaires Web en un seul clic."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Nom et prénom :"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Adresse e-mail :"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Nom de la société :"</string>
@@ -194,9 +201,10 @@
     <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_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="4337372830506338827">"La saisie automatique peut être configurée dans les paramètres du navigateur."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Désactiver la saisie automatique"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Confidentialité et sécurité"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Vous pouvez configurer la saisie automatique à tout moment dans Paramètres du navigateur -&amp;gt; Paramètres personnels."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Désactiver la saisie automatique"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Confidentialité et sécurité"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Effacer le cache"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Supprimer les bases de données et le contenu localement en cache"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Les bases de données et le contenu mis localement en cache vont être supprimés."</string>
@@ -250,7 +258,7 @@
     <string name="pref_extras_title" msgid="7075456173747370647">"Options avancées"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Paramètres du site Web"</string>
     <string name="pref_extras_website_settings_summary" msgid="1656771443223494406">"Paramètres avancés de sites Web individuels"</string>
-    <string name="pref_extras_reset_default_title" msgid="3579760449455761762">"Réinitialiser les valeurs par défaut"</string>
+    <string name="pref_extras_reset_default_title" msgid="3579760449455761762">"Rétablir les valeurs par défaut"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Valeurs par défaut"</string>
     <string name="pref_extras_reset_default_summary" msgid="4247870778270414501">"Rétablir les paramètres par défaut"</string>
     <string name="pref_extras_reset_default_dlg" msgid="6640261575874704022">"Les paramètres par défaut seront rétablis."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codage du texte"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Commandes rapides"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Glisser votre pouce vers la droite ou la gauche pour accéder aux commandes rapides"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Page d\'accueil Les plus visitées"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Votre page d\'accueil affiche les pages les plus visitées."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Commandes rapides"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Faites glisser·votre doigt de droite à gauche ou de gauche à droite pour accéder aux commandes rapides."</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Page d\'accueil Les plus visitées"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Votre page d\'accueil affiche les pages les plus visitées."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -304,19 +316,20 @@
     <string name="download_menu_cancel_all" msgid="2136550823151999166">"Annuler tous les téléchargements"</string>
     <string name="download_cancel_dlg_title" msgid="8909108500262799748">"Annuler les téléchargements"</string>
     <string name="download_cancel_dlg_msg" msgid="6285389170052357797">"Les <xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> téléchargements seront annulés et effacés de l\'historique des téléchargements."</string>
-    <string name="download_delete_file" msgid="5330036497843073249">"Suppression du fichier"</string>
+    <string name="download_delete_file" msgid="5330036497843073249">"Ce fichier sera supprimé."</string>
     <string name="download_file_error_dlg_title" msgid="2693630283595384874">"Espace insuffisant"</string>
-    <string name="download_file_error_dlg_msg" msgid="5156405410324072471">"Impossible d\'afficher <xliff:g id="FILENAME">%s</xliff:g>"\n". Libérez de l\'espace sur votre téléphone, puis réessayez."</string>
+    <string name="download_file_error_dlg_msg" msgid="5156405410324072471">"Impossible de télécharger <xliff:g id="FILENAME">%s</xliff:g>"\n". Libérez de l\'espace sur votre téléphone, puis réessayez."</string>
     <string name="download_failed_generic_dlg_title" msgid="6106781095337833391">"Échec de téléchargement"</string>
-    <string name="download_no_sdcard_dlg_title" product="nosdcard" msgid="56777245081568508">"Mémoire USB indisponible"</string>
+    <string name="download_no_sdcard_dlg_title" product="nosdcard" msgid="56777245081568508">"Mémoire USB non disponible"</string>
     <string name="download_no_sdcard_dlg_title" product="default" msgid="605904452159416792">"Aucune carte SD"</string>
     <string name="download_no_sdcard_dlg_msg" product="nosdcard" msgid="3144652102051031721">"Une mémoire de stockage USB est requise pour télécharger <xliff:g id="FILENAME">%s</xliff:g>."</string>
     <string name="download_no_sdcard_dlg_msg" product="default" msgid="2616399456116301518">"Le téléchargement de <xliff:g id="FILENAME">%s</xliff:g> requiert une carte SD."</string>
-    <string name="download_sdcard_busy_dlg_title" product="nosdcard" msgid="8081445664689818973">"Mémoire USB indisponible"</string>
+    <string name="download_sdcard_busy_dlg_title" product="nosdcard" msgid="8081445664689818973">"Mémoire USB non disponible"</string>
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Carte SD non disponible"</string>
-    <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"La mémoire de stockage USB est occupée. Pour autoriser les téléchargements, sélectionnez l\'option \"Désactiver le stockage USB\" dans la notification."</string>
-    <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"La carte SD est occupée. Pour autoriser les téléchargements, sélectionnez l\'option \"Désactiver le stockage USB\" dans la notification."</string>
-    <string name="download_no_application_title" msgid="1286056729168874295">"Fichier impossible à ouvrir"</string>
+    <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"La mémoire de stockage USB est occupée. Pour autoriser les téléchargements, sélectionnez l\'option \"Désactiver la mémoire de stockage USB\" dans la notification."</string>
+    <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"La carte SD est occupée. Pour autoriser les téléchargements, sélectionnez l\'option \"Désactiver la mémoire de stockage USB\" dans la notification."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Vous ne pouvez télécharger que des URL de type \"http\" et \"https\"."</string>
+    <string name="download_no_application_title" msgid="1286056729168874295">"Impossible d\'ouvrir le fichier."</string>
     <string name="retry" msgid="1835923075542266721">"Réessayer"</string>
     <string name="no_downloads" msgid="3947445710685021498">"L\'historique de téléchargement est vide."</string>
     <string name="download_error" msgid="413496839831257187">"Échec du téléchargement"</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Choisir un compte"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synchronisation avec un compte Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Vos favoris Android ne sont associés à aucun compte Google."</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Supprimer vos favoris Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Vos favoris Android ne sont associés à aucun compte Google."</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Supprimer vos favoris Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Ajouter vos favoris Android à ceux de <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
-    <string name="menu_share_url" msgid="5851814357333739700">"Partagez"</string>
+    <string name="menu_share_url" msgid="5851814357333739700">"Partager"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Plus aucun onglet n\'est disponible."</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 21d76bb..b5c4db3 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Preglednik"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Odaberite datoteku za prijenos"</string>
+    <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>
@@ -98,7 +99,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Popis"</string>
     <string name="current_page" msgid="7510129573681663135">"s lokacije "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Oznaka \"<xliff:g id="BOOKMARK">%s</xliff:g>\" izbrisat će se."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Otvori u novom prozoru"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Otvori sve u novim prozorima"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Idi"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Otvori novu karticu anonimno"</string>
@@ -111,9 +111,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Spremi web-arhivu"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Web-arhiva spremljena."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Spremanje web-arhive nije uspjelo."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Spremi web-arhivu"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Web-arhiva spremljena."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Spremanje web-arhive nije uspjelo."</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>
@@ -138,7 +138,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Postavke sadržaja stranice"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Učitaj slike"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Prikaži slike na web-stranicama"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Blokiraj skočne prozore"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Blokiraj skočne prozore"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Omogući JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Otvori u pozadini"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Omogući priključke"</string>
@@ -148,7 +148,7 @@
     <item msgid="8547442717307793863">"Isključeno"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Otvori nove prozore iza trenutnog"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Postavi početnu stranicu"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Postavi početnu stranicu"</string>
     <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>
@@ -159,7 +159,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Sinkronizacija"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Automatska ispuna"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Automatska ispuna"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Sinkronizacija s uslugom Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Dijeljenje oznaka &amp; ostalih podataka među uslugama Android preglednik i Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google Račun"</string>
@@ -167,16 +167,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Sinkroniziranje oznaka među uslugama Android preglednik i Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Počni sinkronizaciju"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Odaberite Google Račun s kojim ćete dijeliti"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Oblikuj automatsko popunjavanje"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Oblikuj automatsko popunjavanje"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Ispunite web-obrasce jednim klikom"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Postavke automat. popunjavanja"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Postavljanje &amp; upravljanja podacima za oblike automatskog popunjavanja"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Postavke automat. popunjavanja"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Postavljanje i upravljanje podacima za obrasce automatskog popunjavanja"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Automatska prijava na Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Nema pronađenih računa"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Prijavite se na Googleove web-lokacije automatski koristeći <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Prijavljivanjem u Google Web-lokacije pomoću postavki <xliff:g id="ID_1">%s</xliff:g>"\n"Vaša privatnost i sigurnost nadzire se automatska prijava na Google"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Nemojte se automatski prijavljivati"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Automatsko ispunjavanje upotrebljavat će vaš profil kako biste lakše ispunili web-obrasce jednim klikom."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Automatsko ispunjavanje upotrebljavat će vaš profil kako biste lakše ispunili web-obrasce jednim klikom."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Puno ime:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-pošta:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Naziv tvrtke:"</string>
@@ -195,9 +202,10 @@
     <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_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="4337372830506338827">"Automatsko popunjavanje može se konfigurirati u bilo kojem trenutku putem Postavki preglednika."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Onemogući automatsko popunjavanje"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Privatnost i sigurnost"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automatsko popunjavanje uvijek se može konfigurirati putem Postavki preglednika -&amp;gt; Osobnih postavki."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Onemogući automatsko popunjavanje"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Privatnost i sigurnost"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Očisti predmemoriju"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Izbriši sadržaj i baze podataka spremljene u lokalnu predmemoriju"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Izbrisat će se sadržaj i baze podataka koji su spremljeni u lokalnu predmemoriju."</string>
@@ -270,10 +278,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Kodiranje teksta"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Brze kontrole"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Pomaknite se slijeva ili zdesna kako biste pristupili brzim kontrolama"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Najposjećenija početna stranica"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Na vašoj početnoj stranici postavlja najposjećenije stranice."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Brze kontrole"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Prijeđite palcem od lijevog ili desnog ruba za pristup brzim kontrolama"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Najposjećenija početna stranica"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Na vašoj početnoj stranici postavlja najposjećenije stranice."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -317,6 +329,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"SD kartica nije dostupna"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Memorija USB je zauzeta. Kako biste omogućili preuzimanja, odaberite \"Isključi USB pohranjivanje\" u obavijesti."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"SD kartica je zauzeta. Kako biste omogućili preuzimanja, odaberite \"Isključi USB pohranjivanje\" u obavijesti."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Mogu se preuzeti samo \"http\" ili \"https\" URL-ovi."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Datoteka se ne može otvoriti"</string>
     <string name="retry" msgid="1835923075542266721">"Pokušaj ponovo"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Povijest preuzimanja je prazna."</string>
@@ -365,9 +378,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Odaberite račun"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sinkronizacija s Google Računom"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Vaše Android oznake nisu povezane s Google Računom"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Izbrišite oznake programa Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Vaše Android oznake nisu povezane s Google Računom"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Izbrišite oznake programa Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Dodajte svoje Android oznake oznakama za <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Dijeli"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Nema više rasp. kartica"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 496bd20..e5f4126 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Böngésző"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Válassza ki a feltölteni kívánt fájlt"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Lista"</string>
     <string name="current_page" msgid="7510129573681663135">"innen: "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"A(z) \"<xliff:g id="BOOKMARK">%s</xliff:g>\" könyvjelző törlésre kerül."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Megnyitás új ablakban"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Összes megnyitása új ablakban"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Ugrás"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Új inkognitólap megnyitása"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Mentés internetes archívumként"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Az internetes archívum elmentve."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Nem sikerült menteni az internetes archívumot."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Mentés internetes archívumként"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Az internetes archívum elmentve."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Nem sikerült menteni az internetes archívumot."</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Oldaltartalom-beállítások"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Képek betöltése"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Képek megjelenítése a weboldalakon"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Előugró ablakok letiltása"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Előugró ablakok letiltása"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"JavaScript engedélyezése"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Megnyitás a háttérben"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Plug-inek engedélyezése"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Ki"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Új ablakok megnyitása a jelenlegi mögött"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Főoldal beállítása"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Főoldal beállítása"</string>
     <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>
@@ -158,7 +158,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Szinkronizálás"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Automatikus kitöltés"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Automatikus kitöltés"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Szinkronizálás a Google Chrome-mal"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Könyvjelzők és egyéb adatok megosztása az Android böngészője és a Google Chrome között"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google Fiók"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Az Android böngésző és a Google Chrome könyvjelzőinek szinkronizálása"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Szinkronizálás most"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Fiók kiválasztása"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Űrlap automatikus kitöltése"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Űrlap automatikus kitöltése"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Internetes űrlapok kitöltése egyetlen kattintással"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Automatikus kitöltés beállításai"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Automatikusan kitöltött űrlapadatok megadása és kezelése"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Automatikus kitöltés beállításai"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Automatikusan kitöltött űrlapadatok megadása és kezelése"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Automatikus Google-bejelentkezés"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Nem található fiók"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Automatikus bejelentkezés a Google-webhelyekre <xliff:g id="ID_1">%s</xliff:g> fiókkal"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Bejelentkezés a Google webhelyeire a következő használatával: <xliff:g id="ID_1">%s</xliff:g>"\n"Az automatikus Google-bejelentkezést adatvédelmi és biztonsági beállításai szabályozzák"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Ne lépjen be automatikusan"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Az Automatikus kitöltés az Ön profilja alapján egyetlen kattintással kitölti a webes űrlapokat."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Az Automatikus kitöltés az Ön profilja alapján egyetlen kattintással kitölti a webes űrlapokat."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Teljes név:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-mail:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Vállalat neve:"</string>
@@ -194,9 +201,10 @@
     <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_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="4337372830506338827">"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="3706426217720202898">"Automatikus kitöltés kikapcsolása"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Adatvédelem és biztonság"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Az Automatikus kitöltést bármikor beállíthatja a Böngésző beállításai -&amp;gt; Személyes beállítások menüpontban."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Automatikus kitöltés kikapcsolása"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Adatvédelem és biztonság"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"A gyorsítótár törlése"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"A helyileg gyorsítótárazott tartalmak és adatbázisok törlése"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"A helyileg gyorsítótárazott tartalmak és adatbázisok törlésre kerülnek."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Szöveg kódolása"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Gyorsvezérlők"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"A gyorsvezérlők eléréséhez csúsztassa hüvelykujját befelé a bal vagy jobb széltől"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"A leglátogatottabb honlap"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Kezdőlap beállítása, hogy a leglátogatottabb oldalakat mutassa."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Gyorsbeállítások"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Húzza ujját a jobb vagy bal szegély felől a gyorsbeállítások eléréséhez"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"A leglátogatottabb honlap"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Kezdőlap beállítása, hogy a leglátogatottabb oldalakat mutassa."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Az SD-kártya nem érhető el"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Az USB-tár dolgozik. A letöltések engedélyezéséhez válassza az \"USB-tár kikapcsolása\" lehetőséget."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"Az SD-kártya dolgozik. A letöltések engedélyezéséhez válassza az \"USB-tár kikapcsolása\" lehetőséget."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Csak \"http\" vagy \"https\" URL-ek letöltése lehetséges."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"A fájlt nem lehet megnyitni"</string>
     <string name="retry" msgid="1835923075542266721">"Újra"</string>
     <string name="no_downloads" msgid="3947445710685021498">"A letöltési előzmények listája üres."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Fiók kiválasztása"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Szinkronizálás Google Fiókkal"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Androidos könyvjelzői nincsenek Google Fiókhoz társítva"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Az Androidos könyvjelzők törlése"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Androidos könyvjelzői nincsenek Google Fiókhoz társítva"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Az Androidos könyvjelzők törlése"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Az Androidos könyvjelzők hozzáadása <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> fiók könyvjelzőihez"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Megosztás"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Nem nyitható meg több lap"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 206edba..b5886de 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Peramban"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Pilih berkas untuk diunggah"</string>
+    <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>
@@ -98,7 +99,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Daftar"</string>
     <string name="current_page" msgid="7510129573681663135">"dari "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Bookmark \"<xliff:g id="BOOKMARK">%s</xliff:g>\" akan dihapus."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Buka di jendela baru"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Buka semua di jendela baru"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Buka"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Buka tab penyamaran baru"</string>
@@ -111,9 +111,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Simpan sebagai Arsip Web"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Arsip web disimpan."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Gagal menyimpan arsip web."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Simpan sebagai Arsip Web"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Arsip web disimpan."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Gagal menyimpan arsip web."</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>
@@ -138,7 +138,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Setelan konten laman"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Muat gambar"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Tampilkan gambar pada laman web"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Cekal jendela munculan"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Cekal jendela munculan"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Aktifkan JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Buka di latar belakang"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Aktifkan pengaya"</string>
@@ -148,7 +148,7 @@
     <item msgid="8547442717307793863">"Mati"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Buka jendela baru di belakang jendela ini"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Setel beranda"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Setel beranda"</string>
     <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>
@@ -159,7 +159,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Sinkronisasi"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"IsiOtomatis"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"IsiOtomatis"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Sinkronkan dengan Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Bagikan bookmark &amp; dan data lain antara Peramban Android dan Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Akun Google"</string>
@@ -167,16 +167,24 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Sinkronkan bookmark antara Peramban Android dan Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Mulai sinkronisasi"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Pilih akun Google untuk berbagi dengan"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"IsiOtomatis Formulir"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"IsiOtomatis Formulir"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Isi formulir web dengan sekali klik"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Setelan IsiOtomatis"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Menyiapkan &amp; mengelola data untuk formulir IsiOtomatis"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Setelan IsiOtomatis"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Menyiapkan &amp;amp; mengelola data untuk formulir IsiOtomatis"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Masuk ke Google secara otomatis"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Tidak ada akun yang ditemukan"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Masuk ke situs Google secara otomatis menggunakan <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Masuk ke situs Google menggunakan <xliff:g id="ID_1">%s</xliff:g>"\n"setelan Privasi &amp; Keamanan mengontrol aktivitas masuk otomatis ke Google"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Jangan masuk secara otomatis"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"IsiOtomatis akan menggunakan profil Anda untuk membantu mengisi formulir web dengan sekali klik."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"IsiOtomatis akan menggunakan profil Anda untuk membantu mengisi formulir web dengan sekali klik."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Nama lengkap:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Email:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Nama perusahaan:"</string>
@@ -195,9 +203,10 @@
     <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_message" msgid="6605682320156223114">"Peramban dapat melengkapi formulir web seperti ini. Apakah Anda ingin menyiapkan profil?"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="4337372830506338827">"IsiOtomatis selalu dapat dikonfigurasi melalui Setelan Peramban."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Nonaktifkan IsiOtomatis"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Privasi &amp; Keamanan"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"IsiOtomatis dapat dikonfigurasi melalui Setelan Peramban -&amp;gt; Setelan Pribadi."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Nonaktifkan IsiOtomatis"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Privasi &amp; Keamanan"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Hapus tembolok"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Hapus konten dan database yang disimpan dalam tembolok secara lokal"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Konten dan database yang disimpan dalam tembolok secara lokal akan dihapus."</string>
@@ -270,10 +279,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Penyandiaksaraan teks"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Kontrol Cepat"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Gesek ibu jari dari tepi kiri atau kanan untuk mengakses kontrol cepat"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Beranda yang Paling Sering Dikunjungi"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Menyetel beranda Anda untuk menampilkan laman yang paling sering dikunjungi."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Kontrol Cepat"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Gesek jempol dari pojok kiri atau kanan untuk mengakses kontrol cepat"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Beranda yang Paling Sering Dikunjungi"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Menyetel beranda Anda untuk menampilkan laman yang paling sering dikunjungi."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -317,6 +330,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Kartu SD tidak tersedia"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Penyimpanan USB sibuk. Untuk mengizinkan pengunduhan, pilih \"Matikan penyimpanan USB\" pada pemberitahuan."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"Kartu SD sibuk. Untuk mengizinkan unduhan, pilih \"Matikan penyimpanan USB\" pada pemberitahuan."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Hanya dapat mengunduh URL \"http\" atau \"https\"."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Tidak dapat membuka berkas"</string>
     <string name="retry" msgid="1835923075542266721">"Coba Lagi"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Riwayat unduhan kosong."</string>
@@ -365,9 +379,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Pilih akun"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sinkronkan dengan akun Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Bookmark Android Anda tidak terkait dengan akun Google"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Hapus bookmark Android Anda"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Bookmark Android Anda tidak terkait dengan akun Google"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Hapus bookmark Android Anda"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Tambahkan bookmark Android ke bookmark untuk <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Bagikan"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Tidak ada lagi tab yang tersedia"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 32b84af..12236ca 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Browser"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Scegli il file per il caricamento"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Elenco"</string>
     <string name="current_page" msgid="7510129573681663135">"da "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Il segnalibro \"<xliff:g id="BOOKMARK">%s</xliff:g>\" verrà eliminato."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Apri in nuova finestra"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Apri tutto in nuove finestre"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Vai"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Apri nuova scheda in incognito"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Salva come archivio web"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Archivio web salvato"</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Salvataggio archivio web non riuscito."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Salva come archivio web"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Archivio web salvato."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Salvataggio archivio web non riuscito."</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Impostazioni contenuti pagina"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Carica immagini"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Visualizza immagini in pagine web"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Blocca finestre pop-up"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Blocca finestre popup"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Attiva JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Apri in secondo piano"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Attiva plug-in"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Non attivo"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Apri le nuove finestre dietro la finestra corrente"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Imposta pagina iniziale"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Imposta home page"</string>
     <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>
@@ -158,7 +158,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Adatta le pagine web allo schermo"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Generali"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Sincronizzazione"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Compilazione automatica"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Compilazione automatica"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Sincronizza con Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Condividi Segnalibri e altri dati tra il Browser di Android e Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Account Google"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Sincronizza Segnalibri tra il Browser di Android e Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Avvia sincronizzazione"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Seleziona account Google"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Compilazione automatica moduli"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Compilazione automatica moduli"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Compila i moduli web con un clic"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Impost. Compilazione automatica"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Imposta e gestisci i dati per i moduli compilati automaticamente"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Impostazioni Compilazione automatica"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Imposta e gestisci i dati per i moduli compilati automaticamente"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Accesso Google automatico"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Nessun account trovato"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Accedi automaticamente ai siti Google utilizzando <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Accesso ai siti di Google con <xliff:g id="ID_1">%s</xliff:g>"\n"L\'accesso automatico a Google è controllato dalle tue impostazioni di privacy e sicurezza"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Non accedere automaticamente"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"La Compilazione automatica utilizzerà il tuo profilo per aiutarti a completare i moduli web con un solo clic."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"La Compilazione automatica utilizzerà il tuo profilo per aiutarti a completare i moduli web con un solo clic."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Nome e cognome:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Email:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Nome azienda:"</string>
@@ -194,9 +201,10 @@
     <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_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="4337372830506338827">"È sempre possibile configurare la compilazione automatica tramite le impostazioni del browser."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Disabilita compilazione automatica"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Privacy e sicurezza"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"La funzione Compilazione automatica può essere sempre configurata da Impostazioni browser -&amp;gt; Impostazioni personali."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Disabilita compilazione automatica"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Privacy e sicurezza"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Cancella cache"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Cancella i contenuti e i database memorizzati localmente nella cache"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"I contenuti e i database memorizzati localmente nella cache verranno eliminati."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codifica testo"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Controlli rapidi"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Fai scorrere il pollice dal bordo sinistro/destro per accedere ai controlli rapidi"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Più visitati in pagina iniziale"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Imposta pagina iniziale che mostri le pagine più visitate."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controlli rapidi"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Fai scorrere il pollice dal lato sinistro o destro per accedere ai controlli rapidi"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Più visitati in pagina iniziale"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Imposta pagina iniziale che mostri le pagine più visitate."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Scheda SD non disponibile"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"L\'archivio USB è già in uso. Per consentire i download, seleziona \"Disattiva archivio USB\" nella notifica."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"La scheda SD è piena. Per consentire i download, seleziona \"Disattiva archivio USB\" nella notifica."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"È possibile scaricare soltanto URL \"http\" o \"https\"."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Impossibile aprire il file"</string>
     <string name="retry" msgid="1835923075542266721">"Riprova"</string>
     <string name="no_downloads" msgid="3947445710685021498">"La cronologia download è vuota."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Scegli account"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronizza con l\'account Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"I tuoi Segnalibri Android non sono associati a un account Google"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Rimuovi i tuoi Segnalibri Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"I tuoi segnalibri Android non sono associati a un account Google"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Rimuovi i tuoi segnalibri Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Aggiungi i tuoi Segnalibri Android a quelli per <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Condividi"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Nessun\'altra scheda disponibile"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 47a3e20..7f612e7 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"דפדפן"</string>
     <string name="choose_upload" msgid="3649366287575002063">"בחר קובץ להעלאה"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"רשימה"</string>
     <string name="current_page" msgid="7510129573681663135">"מ "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"הסימניה \"<xliff:g id="BOOKMARK">%s</xliff:g>\" תימחק."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"פתח בחלון חדש"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"פתח הכל בחלונות חדשים"</string>
     <string name="goto_dot" msgid="3895839050522602723">"בצע"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"פתח כרטיסיה חדשה של גלישה בסתר"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"שמור כארכיון אינטרנט"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"ארכיון אינטרנט נשמר."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"נכשלה שמירת ארכיון אינטרנט."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"שמור כארכיון אינטרנט"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"ארכיון אינטרנט נשמר."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"שמירת ארכיון אינטרנט נכשלה."</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"הגדרות תוכן דף"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"טען תמונות"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"הצג תמונות בדפי אינטרנט"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"חסום חלונות קופצים"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"חסום חלונות קופצים"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"הפוך JavaScript לפעיל"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"פתוח ברקע"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"הפוך רכיבי פלאג אין לפעילים"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"כבוי"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"פתח חלונות חדשים מאחורי החלון הנוכחי"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"הגדר דף בית"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"הגדר דף בית"</string>
     <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>
@@ -158,7 +158,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"עצב דפי אינטרנט כך שיתאימו למסך"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"כללי"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"סנכרון"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"מילוי אוטומטי"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"מילוי אוטומטי"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"סנכרן עם Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"שתף סימניות ונתונים אחרים בין דפדפן Android ו-Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"חשבון Google"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"סנכרן סימניות בין דפדפן Android ובין Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"התחל סנכרון"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"בחר חשבון Google לשיתוף"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"מילוי אוטומטי של טפסים"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"מילוי אוטומטי של טפסים"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"מלא טופסי אינטרנט בלחיצה אחת"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"הגדרות מילוי אוטומטי"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"הגדר ונהל נתונים לטפסים במילוי אוטומטי"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"הגדרות מילוי אוטומטי"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"הגדר ונהל נתונים לטפסים במילוי אוטומטי"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"כניסה אוטומטית ל-Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"לא נמצאו חשבונות"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"היכנס ל-Google Sites באופן אוטומטי באמצעות <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"כניסה ל-Google Sites בעזרת <xliff:g id="ID_1">%s</xliff:g>"\n"הגדרות הפרטיות והאבטחה שלך שולטות בכניסה האוטומטית ל-Google"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"אל תיכנס באופן אוטומטי"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"\'מילוי אוטומטי\' ישתמש בפרופיל שלך כדי לעזור לך להשלים טופסי אינטרנט בלחיצה אחת."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"מילוי אוטומטי ישתמש בפרופיל שלך כדי לעזור לך להשלים טופסי אינטרנט בלחיצה אחת."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"שם מלא:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"דוא\"ל:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"שם חברה:"</string>
@@ -194,9 +201,10 @@
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"הפרופיל נמחק"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"מחק את הפרופיל"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"הדפדפן יכול למלא טופסי אינטרנט כמו זה באופן אוטומטי. האם תרצה להגדיר את הפרופיל שלך?"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="4337372830506338827">"ניתן תמיד להגדיר את \'מילוי אוטומטי\' דרך \'הגדרות דפדפן\'."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"הפוך \'מילוי אוטומטי\' ללא זמין"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"פרטיות ואבטחה"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"ניתן תמיד להגדיר \'מילוי אוטומטי\' באמצעות \'הגדרות דפדפן\' -&amp;gt; \'הגדרות אישיות\'."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"הפוך \'מילוי אוטומטי\' ללא זמין"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"פרטיות ואבטחה"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"נקה קובץ שמור"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"נקה תוכן ומסדי נתונים בקובץ השמור המקומי"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"תוכן ומסדי נתונים בקובץ השמור המקומי יימחקו."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"קידוד טקסט"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"פקדים מהירים"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"החלק את האגודל מהקצה הימני או השמאלי כדי לגשת לפקדים המהירים"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"דף הבית הפופולרי ביותר"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"מגדיר את דף הבית שלך להציג את הדפים הפופולריים ביותר."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"פקדים מהירים"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"העבר את האגודל מהקצה השמאלי לימני כדי לגשת לפקדים מהירים"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"דף הבית הפופולרי ביותר"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"מגדיר את דף הבית שלך להציג את הדפים הפופולריים ביותר."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"בעיה בקישוריות נתונים"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"בעיה בקובץ"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"אשר"</string>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"כרטיס SD לא זמין"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"אמצעי אחסון מסוג USB אינו פנוי. כדי לאפשר הורדות, בחר \"כבה אמצעי אחסון מסוג USB\" בהתראה."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"כרטיס ה-SD אינו פנוי. כדי לאפשר הורדות, בחר \"כבה אחסון USB\" בהתראה."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"ניתן להוריד רק כתובות אתרים המתחילות ב-\"http\" או \"https\"."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"אין אפשרות לפתוח את הקובץ"</string>
     <string name="retry" msgid="1835923075542266721">"נסה שוב"</string>
     <string name="no_downloads" msgid="3947445710685021498">"היסטוריית ההורדות ריקה."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"בחירת חשבון"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"סנכרן עם חשבון Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"סימניות Android שלך אינן משויכות לחשבון Google"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"הסר את הסימניות של Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"סימניות Android שלך אינן משויכות לחשבון Google"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"הסר את הסימניות של Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"הוסף את סימניות Android לסימניות של <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"שתף"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"אין עוד כרטיסיות זמינות"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index d45b0ef..dfa8c0c 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"ブラウザ"</string>
     <string name="choose_upload" msgid="3649366287575002063">"アップロードするファイルを選択"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"リスト"</string>
     <string name="current_page" msgid="7510129573681663135">"URL "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"ブックマーク「<xliff:g id="BOOKMARK">%s</xliff:g>」を削除します。"</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"新しいウィンドウで開く"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"常に新しいウィンドウで開く"</string>
     <string name="goto_dot" msgid="3895839050522602723">"移動"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"新しいシークレットタブを開く"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"ウェブアーカイブとして保存"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"ウェブアーカイブを保存しました。"</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"ウェブアーカイブを保存できませんでした。"</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"ウェブアーカイブとして保存"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"ウェブアーカイブを保存しました。"</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"ウェブアーカイブを保存できませんでした。"</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"ページコンテンツ設定"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"画像の読み込み"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"ウェブページに画像を表示する"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"ポップアップウィンドウをブロック"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"ポップアップウィンドウをブロック"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"JavaScriptを有効にする"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"バックグラウンドで開く"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"プラグインを有効にする"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"OFF"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"現在のウィンドウの後ろに新しいウィンドウを開く"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"ホームページ設定"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"ホームページ設定"</string>
     <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>
@@ -158,7 +158,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"画面に合わせてウェブページをフォーマットする"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"全般"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"同期"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"自動入力"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"自動入力"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Google Chromeと同期する"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"AndroidブラウザとGoogle Chromeの間でブックマークなどのデータを共有する"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Googleアカウント"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"AndroidブラウザとGoogle Chromeの間でブックマークを同期"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"同期を開始"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Googleアカウントを選択"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"フォームの自動入力"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"フォームの自動入力"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"1回タップするだけでウェブフォームに入力できます"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"自動入力設定"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"自動入力フォーム用のデータの設定と管理"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"自動入力設定"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"自動入力フォーム用のデータの設定と管理"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Googleへの自動ログイン"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"アカウントが見つかりません"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"<xliff:g id="ID_1">%s</xliff:g>で自動的にGoogleにログインする"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"<xliff:g id="ID_1">%s</xliff:g>を使用してGoogleサイトにログインしています"\n"Googleへの自動ログインは、プライバシーとセキュリティの設定で管理されます"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"自動的にログインしない"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"プロフィールは自動入力機能で使用され、1回タップするだけでウェブフォームに入力することができます。"</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"プロフィールは自動入力機能で使用され、1回タップするだけでウェブフォームに入力することができます。"</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"氏名:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"メール:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"会社名:"</string>
@@ -194,9 +201,10 @@
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"プロフィールを削除しました"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"プロフィールを削除"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"このようなウェブフォームにブラウザで自動入力できます。プロフィールを設定しますか?"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="4337372830506338827">"自動入力はいつでもブラウザの[設定]から設定できます。"</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"自動入力を無効にする"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"プライバシーとセキュリティ"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"自動入力はいつでも[ブラウザ設定]-&amp;gt;[個人設定]から設定できます。"</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"自動入力を無効にする"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"プライバシーとセキュリティ"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"キャッシュを消去"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"ローカルにキャッシュしたコンテンツとデータベースを消去する"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"ローカルにキャッシュしたコンテンツとデータベースを削除します。"</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"テキストエンコード"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"クイックコントロール"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"クイックコントロールにアクセスするには左端または右端から親指をスワイプします"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"アクセス数が最も多いホームページ"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"アクセス数が最も多いページが表示されるようにホームページを設定します。"</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"クイックコントロール"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"クイックコントロールにアクセスするには左端または右端から親指をスワイプします"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"アクセス数が最も多いホームページ"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"アクセス数が最も多いページが表示されるようにホームページを設定します。"</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"データアクセスエラー"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"ファイルに問題があります"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"確認"</string>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"SDカードは利用できません"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"USBストレージは使用中です。[USBストレージをOFFにする]を選択してからダウンロードしてください。"</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"SDカードは使用中です。[USBストレージをOFFにする]を選択してからダウンロードしてください。"</string>
+    <string name="cannot_download" msgid="8150552478556798780">"ダウンロードできるのは「http」または「https」のURLのみです。"</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"ファイルを開けません"</string>
     <string name="retry" msgid="1835923075542266721">"やり直す"</string>
     <string name="no_downloads" msgid="3947445710685021498">"ダウンロード履歴はありません。"</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"アカウントの選択"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Googleアカウントと同期"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"AndroidのブックマークはGoogleアカウントに関連付けられていません"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Androidのブックマークを削除"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"AndroidのブックマークはGoogleアカウントに関連付けられていません"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Androidのブックマークを削除"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Androidのブックマークを<xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>のブックマークに追加"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"共有"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"タブ数が上限に達しました"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 5aad619..d2454a7 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"인터넷"</string>
     <string name="choose_upload" msgid="3649366287575002063">"업로드할 파일 선택"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"목록"</string>
     <string name="current_page" msgid="7510129573681663135">"북마크할 페이지 "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"\'<xliff:g id="BOOKMARK">%s</xliff:g>\' 북마크가 삭제됩니다."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"새 창에서 열기"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"새 창에서 모두 열기"</string>
     <string name="goto_dot" msgid="3895839050522602723">"이동"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"새 시크릿 탭 열기"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"웹 아카이브로 저장"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"웹 아카이브를 저장했습니다."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"웹 아카이브를 저장하지 못했습니다."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"웹 아카이브로 저장"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"웹 아카이브를 저장했습니다."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"웹 아카이브를 저장하지 못했습니다."</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"페이지 콘텐츠 설정"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"이미지 로드"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"웹페이지에 이미지 표시"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"팝업 창 차단"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"팝업 창 차단"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"자바스크립트 사용"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"백그라운드에서 열기"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"플러그인 사용"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"사용 안함"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"현재 창 뒤에 새 창 열기"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"홈페이지 설정"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"홈페이지 설정"</string>
     <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>
@@ -158,7 +158,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"화면에 맞게 웹페이지 형식 지정"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"기본설정"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"동기화"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"자동완성"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"자동완성"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Google 크롬과 동기화"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Android 브라우저와 Google 크롬 간에 북마크 및 기타 데이터 공유"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google 계정"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Android 브라우저와 Google 크롬 간의 북마크 동기화"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"동기화 시작"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"공유할 Google 계정 선택"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"양식 자동완성"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"양식 자동완성"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"클릭 한 번으로 웹 양식 작성"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"자동완성 설정"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"자동완성된 양식의 데이터 설정 및 관리"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"자동완성 설정"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"자동완성된 양식의 데이터 설정 및 관리"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"자동 Google 로그인"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"계정이 없습니다."</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"<xliff:g id="ID_1">%s</xliff:g>을(를) 사용하여 Google 사이트에 자동으로 로그인"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"개인정보 및 보안 설정 컨트롤<xliff:g id="ID_1">%s</xliff:g>"\n"자동 Google 로그인을 사용하여 Google 사이트에 로그인"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"자동 로그인 안함"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"자동완성 기능은 사용자의 프로필을 사용하여 단 한번의 클릭으로 웹 양식을 작성할 수 있도록 도와줍니다."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"자동완성 기능은 사용자의 프로필을 사용하여 단 한번의 클릭으로 웹 양식을 작성할 수 있도록 도와줍니다."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"이름:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"이메일:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"회사 이름:"</string>
@@ -194,9 +201,10 @@
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"프로필이 삭제되었습니다."</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"프로필 삭제"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"브라우저에서 이 양식과 같은 웹 양식을 자동으로 완성할 수 있습니다. 프로필을 설정하시겠습니까?"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="4337372830506338827">"브라우저 설정에서 언제든지 자동완성을 구성할 수 있습니다."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"자동완성 사용 안함"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"개인정보 보호 및 보안"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"브라우저 설정 -&amp;gt; 개인 설정에서 언제든지 자동완성을 구성할 수 있습니다."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"자동완성 사용 안함"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"개인정보 보호 및 보안"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"캐시 지우기"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"로컬로 캐시된 콘텐츠 및 데이터베이스 삭제"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"로컬로 캐시된 콘텐츠 및 데이터베이스가 삭제됩니다."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"텍스트 인코딩"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"실험실"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"빠른 컨트롤"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"왼쪽이나 오른쪽 끝에서 엄지손가락으로 스와이프하여 빠른 컨트롤에 액세스"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"자주 방문한 홈페이지"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"자주 방문한 페이지를 표시하도록 홈페이지를 설정합니다."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"빠른 컨트롤"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"빠른 컨트롤에 액세스하려면 엄지 손가락을 왼쪽 또는 오른쪽 가장자리로 스와이프하세요."</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"자주 방문한 홈페이지"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"자주 방문한 페이지를 표시하도록 홈페이지를 설정합니다."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"데이터 연결에 문제 발생"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"파일 문제 발생"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"확인"</string>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"SD 카드를 사용할 수 없음"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"USB 저장소가 사용 중입니다. 다운로드를 허용하려면 알림에서 \'USB 저장소 사용 안함\'을 선택하세요."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"SD 카드가 사용 중입니다. 다운로드를 허용하려면 알림에서 \'USB 저장소 끄기\'를 선택하세요."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"\'http\' 또는 \'https\' URL만 다운로드할 수 있습니다."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"파일을 열 수 없음"</string>
     <string name="retry" msgid="1835923075542266721">"다시 시도"</string>
     <string name="no_downloads" msgid="3947445710685021498">"다운로드 기록이 비어 있습니다."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"계정 선택"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Google 계정과 동기화"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"사용자의 Android 북마크는 Google 계정과 연결되지 않았습니다."</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Android 북마크 삭제"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"사용자의 Android 북마크는 Google 계정과 연결되지 않았습니다."</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Android 북마크 삭제"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"<xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>에 대한 북마크에 Android 북마크 추가"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"공유"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"탭이 더 이상 없습니다."</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 30bac67..55e6783 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Naršyklė"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Pasirinkti failą, kurį norite įkelti"</string>
+    <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>
@@ -98,7 +99,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Sąrašas"</string>
     <string name="current_page" msgid="7510129573681663135">"nuo "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Žymė „<xliff:g id="BOOKMARK">%s</xliff:g>“ bus ištrinta."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Atidaryti naujame lange"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Atidaryti visas naujuose languose"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Pradėti"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Atidaryti naują inkogn. skirt."</string>
@@ -111,9 +111,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Išsaugoti kaip žiniatinklio archyvą"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Žiniatinklio archyvas išsaugotas."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Nepavyko išsaugoti žiniatinklio archyvo."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Išsaugoti kaip žiniatinklio archyvą"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Žiniatinklio archyvas išsaugotas."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Nepavyko išsaugoti žiniatinklio archyvo."</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>
@@ -138,7 +138,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Puslapio turinio nustatymai"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Įkelti vaizdus"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Pateikti vaizdus tinklalapiuose"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Blokuoti iššokančiuosius langus"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Blokuoti iššokančiuosius langus"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Įgalinti „JavaScript“"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Atidaryti fone"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Įgalinti papildinius"</string>
@@ -148,7 +148,7 @@
     <item msgid="8547442717307793863">"Išjungta"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Atidaryti naujus langus už dabartinio lango"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Nustatyti pagrindinį puslapį"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Nustatyti pagrindinį puslapį"</string>
     <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>
@@ -159,7 +159,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatuoti tinklalapius, kad tilptų ekrane"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Bendra"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Sinchronizavimas"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Automatinis užpildymas"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Automatinis užpildymas"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Sinchronizuoti su „Google Chrome“"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Bendrinti žymes ir kitus duomenis tarp „Android“ naršyklės ir „Google Chrome“"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"„Google“ paskyra"</string>
@@ -167,16 +167,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Sinchronizuoti žymes tarp „Android“ naršyklės ir „Google Chrome“"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Pradėti sinchroniz."</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Pas. bendr. „Google“ pask."</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Automatinio pildymo forma"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Automatinio pildymo forma"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Vienu paspaudimu užpildykite žiniatinklio formas"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Automatinio pildymo nustatymai"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Nustatyti ir valdyti automatinio pildymo formų duomenis"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Automatinio pildymo nustatymai"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Nustatyti ir valdyti automatinio pildymo formų duomenis"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Autom. prisijung. prie „Google“"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Nerasta jokių paskyrų"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Automatiškai prisijunkite prie „Google“ svetainių naudodami „<xliff:g id="ID_1">%s</xliff:g>“"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Prisijungiama prie „Google“ svetainių naudojant <xliff:g id="ID_1">%s</xliff:g>"\n"Automatinis prisijungimas prie „Google“ valdomas pagal „Privatumo ir saugos“ nustatymus"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Neprisijungti automatiškai"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Naudojant automatinį pildymą bus naudojamas profilis, kad galėtumėte vos vienu paspaudimu užpildyti žiniatinklio formas."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Naudojant automatinį pildymą bus naudojamas profilis, kad galėtumėte vos vienu paspaudimu užpildyti žiniatinklio formas."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Vardas ir pavardė:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"El. paštas:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Įmonės pavadinimas:"</string>
@@ -195,9 +202,10 @@
     <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_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="4337372830506338827">"Automatinį pildymą visada galima konfigūruoti apsilankius skiltyje „Naršyklės nustatymai“."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Neleisti automatinio pildymo"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Privatumas ir sauga"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automatinį pildymą visada galima konfigūruoti apsilankius skiltyje „Naršyklės nustatymai“ -&amp;gt; „Asmeniniai nustatymai“."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Neleisti automatinio pildymo"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Privatumas ir sauga"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Išvalyti talpyklą"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Išvalyti vietinėje talpykloje saugomą turinį ir duomenis"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Vietinėje talpykloje saugomas turinys ir duomenys bus ištrinti."</string>
@@ -270,10 +278,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Teksto koduotė"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Laboratorijos"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Spartieji valdikliai"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Braukite nykščiu iš kairiojo ar dešiniojo krašto, kad pasiektumėte sparč. vald."</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Lankomiausias pagrindinis puslapis"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Nustatoma, kad pagrindiniame puslapyje būtų rodomi lankomiausi puslapiai."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Spartieji valdikliai"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Jei norite pasiekti sparčiuosius valdiklius, braukite pirštą iš kairiojo arba dešiniojo krašto"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Lankomiausias pagrindinis puslapis"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Nustatoma, kad pagrindiniame puslapyje būtų rodomi lankomiausi puslapiai."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Duomenų jungiamumo problema"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Failo problema"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Patvirtinti"</string>
@@ -317,6 +329,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"SD kortelė negalima"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"USB atmintinė užimta. Jei norite leisti atsisiuntimus, pranešime pasirinkite „Išjungti USB atmintinę“."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"SD kortelė užimta. Jei norite leisti atsisiuntimus, pranešime pasirinkite „Išjungti USB saugyklą“."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Galima atsisiųsti tik „http“ ar „https“ prasidedančius URL."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Nepavyksta atidaryti failo"</string>
     <string name="retry" msgid="1835923075542266721">"Bandyti dar kartą"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Atsisiuntimo istorija tuščia."</string>
@@ -365,9 +378,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Pasirinkite paskyrą"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sinchron. su „Google“ paskyra"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"„Android“ žymės nėra susietos su „Google“ paskyra"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Pašalinti „Android“ žymes"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"„Android“ žymės nėra susietos su „Google“ paskyra"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Pašalinti „Android“ žymes"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Pridėkite „Android“ žymes prie <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> žymių"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Bendrinti"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Daugiau galimų skirtukų nėra"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 277d82b..3a81adc 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Pārlūkprogramma"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Izvēlieties augšupielādējamo failu"</string>
+    <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>
@@ -98,7 +99,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Saraksts"</string>
     <string name="current_page" msgid="7510129573681663135">"no "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Grāmatzīme “<xliff:g id="BOOKMARK">%s</xliff:g>” tiks dzēsta."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Atvērt jaunā logā"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Atvērt visas jaunos logos"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Sākt"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Atvērt jaunu inkognito cilni"</string>
@@ -111,9 +111,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Saglabāt kā tīmekļa arhīvu"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Tīmekļa arhīvs ir saglabāts."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Neizdevās saglabāt tīmekļa arhīvu."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Saglabāt kā tīmekļa arhīvu"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Tīmekļa arhīvs ir saglabāts."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Neizdevās saglabāt tīmekļa arhīvu."</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>
@@ -138,7 +138,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Lapas satura iestatījumi"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Ielādēt attēlus"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Rādīt attēlus tīmekļa lapās"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Bloķēt uznirstošos logus"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Bloķēt uznirstošos logus"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Iespējot JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Atvērt fonā"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Iespējot spraudņus"</string>
@@ -148,7 +148,7 @@
     <item msgid="8547442717307793863">"Izslēgt"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Atvērt jaunus logus aiz pašreizējā loga"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Iestatīt mājaslapu"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Iestatīt mājaslapu"</string>
     <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>
@@ -159,7 +159,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Sinhronizācija"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Automātiskā aizpilde"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Automātiskā aizpilde"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Sinhronizēt ar Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Kopīgot grāmatzīmes un citus datus Android pārlūkprogrammā un pārlūkprogrammā Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google konts"</string>
@@ -167,16 +167,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Sinhronizēt Android pārlūkprogrammas un Google Chrome grāmatzīmes"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Sākt sinhronizāciju"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Kopīg. Google konts"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Veidot automātisko aizpildi"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Veidot automātisko aizpildi"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Tīmekļa veidlapas aizpildīšana ar vienu klikšķi"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Autom. aizpildes iestatījumi"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Iestatīt un pārvaldīt automātiski aizpildīto veidlapu datus"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Automātiskās aizpildes iestatījumi"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Iestatīt un pārvaldīt automātiski aizpildīto veidlapu datus"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Autom. pierakst. vietnē Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Netika atrasts neviens konts."</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Automātiski pierakstieties Google vietnēs, izmantojot <xliff:g id="ID_1">%s</xliff:g>."</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Pierakstīšanās Google vietnēs, izmantojot <xliff:g id="ID_1">%s</xliff:g>"\n" Jūsu konfidencialitātes un drošības iestatījumi nosaka automātisko pierakstīšanos Google"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Nepierakstīties automātiski"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Automātiskās aizpildes funkcija izmantos profilā sniegto informāciju, lai ātri aizpildītu tīmekļa veidlapas."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Automātiskās aizpildes funkcija izmantos profilā sniegto informāciju, lai ātri aizpildītu tīmekļa veidlapas."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Vārds, uzvārds:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-pasta adrese:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Uzņēmuma nosaukums:"</string>
@@ -195,9 +202,10 @@
     <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_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="4337372830506338827">"Automātisko aizpildi var konfigurēt jebkurā laikā, izmantojot pārlūkprogrammas iestatījumus."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Atspējot automātisko aizpildi"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Konfidencialitāte un drošība"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automātisko aizpildi vienmēr var konfigurēt sadaļā Pārlūkprogrammas iestatījumi -&amp;gt; Personiskie iestatījumi."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Atspējot automātisko aizpildi"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Konfidencialitāte un drošība"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Notīrīt kešatmiņu"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Notīrīt lokālajā kešatmiņā saglabāto saturu un datu bāzes"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Lokālajā kešatmiņā ievietots saturs un datu bāzes tiks dzēstas."</string>
@@ -270,10 +278,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Teksta kodējums"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Laboratorijas"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Ātrās vadīklas"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Lai piekļūtu ātrajām vadīklām, velciet īkšķi no kreisās malas uz labo."</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Visvairāk apmeklētā mājaslapa"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Iestata mājaslapu, lai tiktu parādītas visvairāk apmeklētās lapas."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Ātrās piekļuves vadīklas"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Lai piekļūtu ātrās piekļuves vadīklām, ekrāna labajā vai kreisajā malā pavelciet ar īkšķi."</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Visvairāk apmeklētā mājaslapa"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Iestata mājaslapu, lai tiktu parādītas visvairāk apmeklētās lapas."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -317,6 +329,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"SD karte nav pieejama"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"USB atmiņa ir aizņemta. Lai atļautu lejupielādes, paziņojumā atlasiet Izslēgt USB atmiņu."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"SD karte ir aizņemta. Lai atļautu lejupielādes, paziņojumā atlasiet “Izslēgt USB krātuvi”."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Var lejupielādēt tikai tādus vietrāžus URL, kuri sākas ar “http” vai “https”."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Nevar atvērt failu"</string>
     <string name="retry" msgid="1835923075542266721">"Mēģināt vēlreiz"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Lejupielāžu vēsture ir tukša."</string>
@@ -365,9 +378,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Konta izvēle"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sinhronizācija ar Google kontu"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Jūsu Android grāmatzīmes nav saistītas ar jūsu Google kontu."</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Noņemt Android grāmatzīmes"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Jūsu Android grāmatzīmes nav saistītas ar jūsu Google kontu."</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Noņemt Android grāmatzīmes"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Pievienot Android grāmatzīmes konta <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> grāmatzīmēm"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Kopīgot"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Vairs nav pieejamu ciļņu"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 0584755..ec8d8d0 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Nettleser"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Velg fil for opplasting"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Liste"</string>
     <string name="current_page" msgid="7510129573681663135">"fra "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Bokmerket \"<xliff:g id="BOOKMARK">%s</xliff:g>\" vil bli slettet."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Åpne i nytt vindu"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Åpne alle i nye vinduer"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Gå til"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Åpne ny inkognitofane"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Lagre som nettarkiv"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Nettarkiv lagret."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Kunne ikke lagre nettarkivet."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Lagre som nettarkiv"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Nettarkiv lagret."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Kan ikke lagre nettarkivet."</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Sideinnhold"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Last bilder"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Vis bilder på nettsteder"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Blokker popup-vinduer"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Blokkér forgrunnsvinduer"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Aktiver JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Åpne i bakgrunnen"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Aktiver utvidelser"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Av"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Nye vinduer åpnes bak det gjeldende"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Angi startside"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Angi startside"</string>
     <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>
@@ -158,7 +158,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Tilpass nettsteder til skjermen"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Generelt"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Synkronisering"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Autofyll"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Autofyll"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Synkroniser med Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Lagre bokmerker og andre data mellom Android-nettleseren og Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google-konto"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Synkroniser bokmerker mellom Android-nettleseren og Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Start synkronisering"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Velg kto. å dele med"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Autoutfylling av skjemaer"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Autoutfylling av skjemaer"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Fyll ut nettskjemaer med ett enkelt klikk"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Innstillinger for autofyll"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Konfigurer og vedlikehold data for automatisk utfylte skjemaer"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Innstillinger for autofyll"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Konfigurer og vedlikehold data for automatisk utfylte skjemaer"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Automatisk Google-pålogging"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Finner ingen kontoer"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Logg deg på Google-nettsteder automatisk ved å bruke <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Pålogging for Google-nettsteder med <xliff:g id="ID_1">%s</xliff:g>"\n"dine innstillinger for personvern og sikkerhet styrer automatisk Google-pålogging"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Ikke logg deg på automatisk"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Autofyll bruker din profil til å hjelpe deg med å fullføre nettskjemaer ved hjelp av ett enkelt klikk."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Autofyll bruker din profil til å hjelpe deg med å fullføre nettskjemaer ved hjelp av ett enkelt klikk."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Fullt navn:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-post:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Firmanavn:"</string>
@@ -194,9 +201,10 @@
     <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_message" msgid="6605682320156223114">"Nettleseren kan automatisk fylle ut slike nettskjemaer. Vil du konfigurere profilen din?"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="4337372830506338827">"Autofyll kan alltid konfigureres via Nettleserinnstillinger."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Deaktiver Autofyll"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Personvern og sikkerhet"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Autofyll kan alltid konfigureres gjennom Nettleserinnstillinger -&amp;gt; Personlige innstillinger."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Deaktiver Autofyll"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Personvern og sikkerhet"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Fjern hurtiglager"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Fjern lokalt bufret innhold og databaser"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Lokalt bufret innhold og databaser vil bli fjernet."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Tekstkoding"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Prøvefunksjoner"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Hurtigkontroller"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Sveip tommelen fra venstre el. høyre kant for å få tilgang til hurtigkontroller"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Mest besøkte startside"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Angir at hjemmesiden din skal vise de mest besøkte sidene."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Hurtigkontroller"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Sveip tommelen fra venstre til høyre kant for å få tilgang til hurtigkontroller"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Mest besøkte startside"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Angir at hjemmesiden din skal vise de mest besøkte sidene."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Datatilkoblingsproblem"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem med fil"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bekreft"</string>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Minnekort utilgjengelig"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"USB-lagring er opptatt. Velg alternativet for å slå av USB-lagring i varselet for å tillate nedlastinger."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"SD-kortet er opptatt. Velg alternativet for å slå av USB-lagring i varselet for å tillate nedlastinger."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Kan kun laste ned «http»- eller «https»-nettadresser."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Får ikke åpnet filen"</string>
     <string name="retry" msgid="1835923075542266721">"Prøv igjen"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Nedlastingsloggen er tom."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Velg konto"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synkroniser med Google-konto"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Dine Android-bokmerker er ikke tilknyttet en Google-konto"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Fjern Android-bokmerkene"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Dine Android-bokmerker er ikke tilknyttet en Google-konto"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Fjern Android-bokmerkene"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Legg til Android-bokmerker i bokmerker for <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Del"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Ingen flere faner tilgjengelig"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 6152107..80bb84a 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Browser"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Bestand selecteren voor uploaden"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Lijst"</string>
     <string name="current_page" msgid="7510129573681663135">"van "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Bladwijzer \'<xliff:g id="BOOKMARK">%s</xliff:g>\' wordt verwijderd."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Openen in een nieuw venster"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Alle bladwijzers openen in nieuwe vensters"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Ga"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Nieuw incognitotabblad openen"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Opslaan als webarchief"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Webarchief opgeslagen."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Opslaan van webarchief is mislukt."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Opslaan als webarchief"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Webarchief opgeslagen."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Opslaan van webarchief 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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Instellingen voor pagina-inhoud"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Afbeeldingen laden"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Afbeeldingen op webpagina\'s weergeven"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Pop-ups blokkeren"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Pop-upvensters blokkeren"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"JavaScript inschakelen"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Openen op achtergrond"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Plug-ins inschakelen"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Uit"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Nieuwe vensters openen achter het huidige venster"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Startpagina instellen"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Startpagina instellen"</string>
     <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>
@@ -158,7 +158,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Synchronisatie"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Automatisch aanvullen"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Automatisch aanvullen"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Synchroniseren met Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Bladwijzers en andere gegevens delen tussen Android Browser en Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google-account"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Bladwijzers synchroniseren tussen Android Browser en Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Synchr. starten"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Selecteer Google-account voor delen"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Formulieren autom. aanvullen"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Formulieren automatisch aanvullen"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Webformulier invullen met één klik"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Instellingen voor auto-aanvullen"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Gegevens instellen en beheren voor automatisch ingevulde formulieren"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Instellingen voor auto-aanvullen"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Gegevens instellen en beheren voor automatisch ingevulde formulieren"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Automatische Google-aanmelding"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Geen accounts gevonden"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Automatisch aanmelden bij Google-sites met <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Aanmelden bij Google-sites met <xliff:g id="ID_1">%s</xliff:g>"\n"Uw instellingen voor Privacy en beveiliging zijn van toepassing op uw automatische Google-aanmelding"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Niet automatisch aanmelden"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Automatisch aanvullen gebruikt uw profiel om u te helpen met één klik formulieren in te vullen."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Automatisch aanvullen gebruikt uw profiel om u te helpen met één klik formulieren in te vullen."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Volledige naam:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-mail:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Bedrijfsnaam:"</string>
@@ -194,9 +201,10 @@
     <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_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="4337372830506338827">"U kunt Automatisch aanvullen altijd configureren via de browserinstellingen."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Automatisch aanvullen uitschakelen"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Privacy en beveiliging"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automatisch aanvullen kan altijd worden geconfigureerd via \'Browserinstellingen\' -&amp;gt; \'Persoonlijke instellingen\'."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Automatisch aanvullen uitschakelen"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Privacy en beveiliging"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Cache wissen"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Lokaal opgeslagen inhoud en databases wissen"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Lokaal opgeslagen inhoud en databases worden gewist."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Tekstcodering"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Quick Controls"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Veeg met uw duim van de linker- of rechterkant voor toegang tot Quick Controls"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Most Visited Homepage"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Stelt uw startpagina in op het weergeven van de meest bezochte pagina\'s."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Snelle bedieningselementen"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Schuif uw duim vanaf de linker- of de rechterkant voor toegang tot snelkoppelingen"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Most Visited Homepage"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Stelt uw startpagina in op het weergeven van de meest bezochte pagina\'s."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"SD-kaart niet beschikbaar"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"De USB-opslag wordt gebruikt. Als u downloads wilt toestaan, selecteert u \'USB-opslag uitschakelen\' in de melding."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"De SD-kaart wordt gebruikt. Als u downloads wilt toestaan, selecteert u \'USB-opslag uitschakelen\' in de melding."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Kan alleen URL\'s met \'http\' of \'https\' downloaden."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Kan bestand niet openen"</string>
     <string name="retry" msgid="1835923075542266721">"Opnieuw proberen"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Downloadgeschiedenis is leeg."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"J1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Account selecteren"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synchroniseren met Google-account"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Uw Android-bladwijzers zijn niet gekoppeld aan een Google-account"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Uw Android-bladwijzers verwijderen"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Uw Android-bladwijzers zijn niet gekoppeld aan een Google-account"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Uw Android-bladwijzers verwijderen"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Uw Android-bladwijzers toevoegen aan bladwijzers voor <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Delen"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Er zijn niet meer tabbladen beschikbaar"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 3f8c0fd..d1151fb 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Internet"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Wybierz plik do przesłania"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Lista"</string>
     <string name="current_page" msgid="7510129573681663135">"z "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Zakładka „<xliff:g id="BOOKMARK">%s</xliff:g>” zostanie usunięta."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Otwórz w nowym oknie"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Otwórz wszystkie w nowych oknach"</string>
     <string name="goto_dot" msgid="3895839050522602723">"OK"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Otwórz nową kartę incognito"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Zapisz jako archiwum internetowe"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Archiwum internetowe zostało zapisane."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Nie można zapisać archiwum internetowego."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Zapisz jako archiwum internetowe"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Archiwum internetowe zostało zapisane."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Nie można zapisać archiwum internetowego."</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Ustawienia zawartości stron"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Wczytuj obrazy"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Wyświetlaj obrazy na stronach internetowych"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Blokuj wyskakujące okna"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Blokuj wyskakujące okienka"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Włącz skrypty JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Otwieraj w tle"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Obsługa wtyczek"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Wyłączona"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Otwieraj nowe okna za bieżącym"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Ustaw stronę główną"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Ustaw stronę główną"</string>
     <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>
@@ -158,7 +158,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatuj strony internetowe w celu dopasowania do ekranu"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Ogólne"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Synchronizacja"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Autouzupełnianie"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Autouzupełnianie"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Synchronizuj z przeglądarką Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Udostępniaj zakładki i inne dane między przeglądarką w systemie Android i przeglądarką Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Konto Google"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Synchronizuj zakładki między przeglądarką w systemie Android i przeglądarką Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Synchronizuj"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Wybierz konto Google dla udostępniania"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Autouzupełnianie formularzy"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Autouzupełnianie formularzy"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Wypełniaj formularze internetowe za pomocą jednego kliknięcia"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Ustawienia autouzupełniania"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Skonfiguruj dane dla automatycznie uzupełnianych formularzy i zarządzaj nimi"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Ustawienia autouzupełniania"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Skonfiguruj dane dla automatycznie uzupełnianych formularzy i zarządzaj nimi"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Automatyczne logowanie do Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Nie znaleziono kont"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Automatycznie loguj się do witryn Google, używając konta <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Logowanie do witryn Google przy użyciu identyfikatora <xliff:g id="ID_1">%s</xliff:g>"\n"Ustawienia automatycznego logowania do Google znajdują się w sekcji Prywatność i bezpieczeństwo."</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Nie loguj automatycznie"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Twój profil będzie używany w funkcji autouzupełniania do wypełniania formularzy internetowych za pomocą jednego kliknięcia."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Twój profil będzie używany w funkcji autouzupełniania do wypełniania formularzy internetowych za pomocą jednego kliknięcia."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Imię i nazwisko:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-mail:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Nazwa firmy:"</string>
@@ -194,9 +201,10 @@
     <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_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="4337372830506338827">"Autouzupełnianie można zawsze skonfigurować w opcjach przeglądarki."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Wyłącz autouzupełnianie"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Prywatność i bezpieczeństwo"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Autouzupełnianie można zawsze skonfigurować, wybierając kolejno opcje Ustawienia przeglądarki -&amp;gt; Ustawienia osobiste."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Wyłącz autouzupełnianie"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Prywatność i bezpieczeństwo"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Wyczyść pamięć podręczną"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Wyczyść zawartość lokalnej pamięci podręcznej i baz danych"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Zawartość lokalnej pamięci podręcznej i baz danych zostanie usunięta."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Kodowanie tekstu"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Laboratorium"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Szybkie sterowanie"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Przesuń kciukiem od lewej lub prawej krawędzi, aby przejść do szybkiego sterowania"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Strona główna Popularne"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Ustawia wyświetlanie popularnych stron na stronie głównej."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Elementy szybkiego sterowania"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Przesuń kciukiem od lewej lub prawej krawędzi, aby uzyskać dostęp do szybkich elementów sterujących"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Strona główna Popularne"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Ustawia wyświetlanie popularnych stron na stronie głównej."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Karta SD jest niedostępna"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Nośnik USB jest zajęty. Aby umożliwić pobieranie, wybierz w powiadomieniu opcję „Wyłącz nośnik USB”."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"Karta SD jest zajęta. Aby umożliwić pobieranie, wybierz w powiadomieniu opcję „Wyłącz nośnik USB”."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Pobieranie jest możliwe tylko z adresów „http” lub „https”."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Nie można otworzyć pliku"</string>
     <string name="retry" msgid="1835923075542266721">"Spróbuj ponownie"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Historia pobierania jest pusta."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Wybierz konto"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synchronizuj z kontem Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Zakładki w systemie Android nie są powiązane z kontem Google"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Usuń zakładki w systemie Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Zakładki w systemie Android nie są powiązane z kontem Google"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Usuń zakładki w systemie Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Dodaj zakładki z systemu Android do zakładek na koncie <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Udostępnij"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Brak dostępnych kart"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 5846b16..75d22d0 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Navegad."</string>
     <string name="choose_upload" msgid="3649366287575002063">"Escolher ficheiro a carregar"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Lista"</string>
     <string name="current_page" msgid="7510129573681663135">"de "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"O marcador \"<xliff:g id="BOOKMARK">%s</xliff:g>\" será eliminado."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Abrir numa janela nova"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Abrir tudo em janelas novas"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Ir"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Abrir novo separador de navegação anónima"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Guardar como arquivo Web"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Arquivo Web guardado."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Não foi possível guardar o arquivo Web."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Guardar como arquivo Web"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Arquivo Web guardado."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Não foi possível guardar o arquivo Web."</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Definições de conteúdo da página"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Carregar imagens"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Apresentar imagens em páginas Web"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Bloquear janelas pop-up"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Bloquear janelas de pop-up"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Activar JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Abrir em segundo plano"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Activar plug-ins"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Desligado"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Abrir novas janelas atrás da actual"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Definir página inicial"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Definir página inicial"</string>
     <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>
@@ -158,7 +158,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Sincronizar"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Preenchimento automático"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Preenchimento automático"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Sincronizar com o Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Partilhar marcadores e outros dados entre o navegador do Android e o Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Conta Google"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Sincronizar marcadores entre o navegador do Android e o Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Inic. sincronização"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Selec. conta Google p/ partilhar c/"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Preench. autom. do formulário"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Preenchimento automático do formulário"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Preencher formulários Web com um único clique"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Def. do preenchimento automático"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Configurar e gerir dados para formulários preenchidos automaticamente"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Def. do preenchimento automático"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Configurar e gerir dados para formulários preenchidos automaticamente"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Início sessão automático Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Nenhuma conta encontrada"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Iniciar sessão automaticamente nos Web sites da Google utilizando <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Iniciar sessão em sites Google utilizando <xliff:g id="ID_1">%s</xliff:g>"\n"o início de sessão automático do Google do controlo de definições de Privacidade e Segurança"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Não iniciar sessão automaticamente"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"O preenchimento automático vai utilizar o seu perfil para o ajudar a preencher formulários Web com um único clique."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"O preenchimento automático vai utilizar o seu perfil para o ajudar a preencher formulários Web com um único clique."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Nome completo:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-mail:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Nome da empresa:"</string>
@@ -194,9 +201,10 @@
     <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_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="4337372830506338827">"O Preenchimento automático pode sempre ser configurado através das Definições do navegador."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Desactivar preenchimento automático"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Privacidade e segurança"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"O preenchimento automático pode ser configurado através de Definições do navegador -&amp;gt; Definições pessoais."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Desactivar preenchimento automático"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Privacidade e segurança"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Limpar cache"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Limpar bases de dados e conteúdos colocados em cache localmente"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"As bases de dados e os conteúdos colocados em cache localmente serão eliminados."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codificação do texto"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Controlos rápidos"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Passe o polegar na margem esquerda ou direita para aceder aos controlos rápidos"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Página inicial mais visitada"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Define a sua página inicial para mostrar as páginas mais visitadas."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controlos rápidos"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Deslize rapid. dedo no canto esquerdo ou direito p/ aceder aos controlos rápidos"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Página inicial mais visitada"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Define a sua página inicial para mostrar as páginas mais visitadas."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Cartão SD não disponível"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"O armazenamento USB está ocupado. Para permitir as transferências, seleccione \"Desactivar armazenamento USB\" na notificação."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"O cartão SD está ocupado. Para permitir as transferências, seleccione \"Desactivar armazenamento USB\" na notificação."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Apenas é possível transferir URLs \"http\" ou \"https\"."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Não é possível abrir o ficheiro"</string>
     <string name="retry" msgid="1835923075542266721">"Tentar novamente"</string>
     <string name="no_downloads" msgid="3947445710685021498">"O histórico de transferências está vazio."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Escolher conta"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronizar com conta Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Os seus marcadores do Android não estão associados a uma conta Google"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Remover marcadores do Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Os seus marcadores do Android não estão associados a uma conta Google"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Remover marcadores do Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Adicionar os seus marcadores do Android aos marcadores da <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Partilhar"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Atingiu o limite de separadores"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 86ddbff..2616438 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Navegador"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Escolha o arquivo para envio"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Lista"</string>
     <string name="current_page" msgid="7510129573681663135">"de "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"O favorito \"<xliff:g id="BOOKMARK">%s</xliff:g>\" será excluído."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Abrir em uma nova janela"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Abrir todos em novas janelas"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Ir"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Abrir nova guia anônima"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Salvar como arquivo da web"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Arquivo da web salvo."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Falha ao salvar arquivo da web."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Salvar como arquivo da web"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Arquivo da web salvo."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Falha ao salvar arquivo da web."</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Configurações do conteúdo da página"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Carregar imagens"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Exibir imagens nas páginas da web"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Bloquear janelas pop-up"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Bloquear janelas pop-up"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Ativar JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Abrir em segundo plano"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Ativar plug-ins"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Desativado"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Abrir novas janelas atrás da janela atual"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Definir a página inicial"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Definir a página inicial"</string>
     <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>
@@ -158,7 +158,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Sincronização"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Preencher automaticamente"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Preencher automaticamente"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Sincronizar com o Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Compartilhar favoritos e outros dados entre o navegador do Android e o Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Conta do Google"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Sincronizar favoritos entre o navegador do Android e o Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Iniciar sincroniz."</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Sel. conta p/ comp."</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Preench. autom. de formulários"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Preenchimento automático de formulários"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Preencher formulários da web com apenas um clique"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Config. de Preench. automático"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Configurar e gerenciar os dados de formulários preenchidos automaticamente"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Configuração de Preenchimento automático"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Configurar e gerenciar os dados de formulários preenchidos automaticamente"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Login automático do Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Nenhuma conta encontrada"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Faça login automaticamente em sites do Google usando <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Fazendo login no Google Sites usando o login automático do Google de controle de configurações de <xliff:g id="ID_1">%s</xliff:g>"\n"Privacidade e Segurança &amp;"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Não fazer login automaticamente"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"O preenchimento automático usará seu perfil para ajudá-lo a preencher formulários na web com um único clique."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"O preenchimento automático usará seu perfil para ajudá-lo a preencher formulários na web com um único clique."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Nome completo:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-mail:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Nome da empresa:"</string>
@@ -194,9 +201,10 @@
     <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_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="4337372830506338827">"O Preenchimento automático sempre pode ser configurado através das Configurações do Navegador."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Desativar o Preenchimento automático"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Privacidade e segurança"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"O preenchimento automático pode ser configurado a qualquer momento por meio das \"Configurações do navegador -&amp;gt; Configurações pessoais\"."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Desativar o Preenchimento automático"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Privacidade e segurança"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Limpar cache"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Limpar conteúdo e bancos de dados armazenados localmente em cache"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"O conteúdo e os bancos de dados armazenados localmente em cache serão excluídos."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codificação de texto"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Google Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Controles rápidos"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Passe o polegar da margem esquerda ou direita para acessar os controles rápidos"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Página inicial mais visitada"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Definir sua página inicial para mostrar as páginas mais visitadas."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controles rápidos"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Deslize o polegar da esquerda para a direita para acessar os controles rápidos"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Página inicial mais visitada"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Definir sua página inicial para mostrar as páginas mais visitadas."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Cartão SD não disponível"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"O armazenamento USB está ocupado. Para permitir downloads, selecione \"Desativar o armazenamento USB\" na notificação."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"O cartão SD está ocupado. Para permitir downloads, selecione \"Desativar armazenamento USB\" na notificação."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Somente é possível fazer download de URLs \"http\" ou \"https\""</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Não é possível abrir o arquivo."</string>
     <string name="retry" msgid="1835923075542266721">"Tentar novamente"</string>
     <string name="no_downloads" msgid="3947445710685021498">"O histórico de downloads está vazio."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Escolher conta"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronizar com Conta do Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Seus favoritos do Android não estão associados a uma Conta do Google"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Remover os favoritos do Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Seus favoritos do Android não estão associados a uma Conta do Google"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Remover os favoritos do Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Adicionar favoritos do Android aos favoritos de <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Compartilhar"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Não há mais guias disponíveis"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index 777e778..91d7da2 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -18,6 +18,8 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Navigatur"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Tscherner ina datoteca per importar"</string>
+    <!-- no translation found for uploads_disabled (463761197575372994) -->
+    <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>
@@ -109,7 +111,6 @@
     <skip />
     <string name="current_page" msgid="7510129573681663135">"da "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"\"Il segnapagina \"\"<xliff:g id="BOOKMARK">%s</xliff:g>\"\" vegn stizzà.\""</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Avrir en ina nova fanestra"</string>
     <!-- no translation found for open_all_in_new_window (6514602245828366045) -->
     <skip />
     <string name="goto_dot" msgid="3895839050522602723">"Dai"</string>
@@ -123,9 +124,9 @@
     <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>
-    <string name="menu_save_webarchive" msgid="3934652434001459581">"Memorisar sco archiv web"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Memorisà archiv da web"</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Betg reussì da memorisar l\'archiv da web."</string>
+    <!-- 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 contextheader_folder_bookmarkcount (353987136645619089) -->
     <skip />
     <!-- no translation found for contextheader_folder_empty (974171637803391651) -->
@@ -153,7 +154,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Parameters dal cuntegn da la pagina"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Chargiar ils maletgs"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Mussar ils maletgs da las paginas web"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Bloccar las fanestras pop-up"</string>
+    <!-- outdated translation 7808433807197256726 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Bloccar las fanestras pop-up"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Activar JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Avrir davos las culissas"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Activar ils plug-ins"</string>
@@ -163,7 +164,7 @@
     <item msgid="8547442717307793863">"Deactivà"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Avrir las novas fanestras davos la fanestra actuala"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Definir la pagina da partenza"</string>
+    <!-- outdated translation 6082437160778559806 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Definir la pagina da partenza"</string>
     <!-- no translation found for pref_content_search_engine (1620101310821644144) -->
     <skip />
     <!-- no translation found for pref_content_search_engine_summary (5162667665858487316) -->
@@ -181,7 +182,7 @@
     <skip />
     <!-- no translation found for pref_general_sync_title (3138637035975860324) -->
     <skip />
-    <!-- no translation found for pref_general_autofill_title (64638897890112873) -->
+    <!-- no translation found for pref_general_autofill_title (547881256865816858) -->
     <skip />
     <!-- no translation found for pref_personal_sync_with_chrome (1695182180332194033) -->
     <skip />
@@ -197,13 +198,13 @@
     <skip />
     <!-- no translation found for pref_personal_account_dialog_title (1390867119887955530) -->
     <skip />
-    <!-- no translation found for pref_autofill_enabled (1174197447388234595) -->
+    <!-- no translation found for pref_autofill_enabled (1015751713312396713) -->
     <skip />
     <!-- no translation found for pref_autofill_enabled_summary (422640696197018914) -->
     <skip />
-    <!-- no translation found for pref_autofill_profile_editor (1350709161524642663) -->
+    <!-- no translation found for pref_autofill_profile_editor (3864116896052437796) -->
     <skip />
-    <!-- no translation found for pref_autofill_profile_editor_summary (6748434431641768870) -->
+    <!-- no translation found for pref_autofill_profile_editor_summary (3653552312512743181) -->
     <skip />
     <!-- no translation found for pref_autologin_title (2362827272595366379) -->
     <skip />
@@ -211,11 +212,17 @@
     <skip />
     <!-- no translation found for pref_autologin_summary (8168866316823968574) -->
     <skip />
-    <!-- no translation found for pref_autologin_progress (8643826219376543293) -->
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
     <skip />
     <!-- no translation found for pref_autologin_disable (3342145058494577628) -->
     <skip />
-    <!-- no translation found for autofill_profile_editor_heading (5009490178189728877) -->
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- no translation found for autofill_profile_editor_heading (8392952553626722083) -->
     <skip />
     <!-- no translation found for autofill_profile_editor_name (8566130291459685955) -->
     <skip />
@@ -253,11 +260,11 @@
     <skip />
     <!-- no translation found for autofill_setup_dialog_message (6605682320156223114) -->
     <skip />
-    <!-- no translation found for autofill_setup_dialog_negative_toast (4337372830506338827) -->
+    <!-- no translation found for autofill_setup_dialog_negative_toast (6990737008936188620) -->
     <skip />
-    <!-- no translation found for disable_autofill (3706426217720202898) -->
+    <!-- no translation found for disable_autofill (8305901059849400354) -->
     <skip />
-    <!-- no translation found for pref_privacy_security_title (1705642466867300373) -->
+    <!-- no translation found for pref_privacy_security_title (3480313968942160914) -->
     <skip />
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Stizzar il cache"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Stizzar las bancas da datas ed il cuntegn ord il cache local"</string>
@@ -337,13 +344,17 @@
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codaziun dal text"</string>
     <!-- no translation found for pref_lab_title (5571091610359629423) -->
     <skip />
-    <!-- no translation found for pref_lab_quick_controls (2105979166017257647) -->
+    <!-- no translation found for pref_lab_quick_controls (3267606522082281367) -->
     <skip />
-    <!-- no translation found for pref_lab_quick_controls_summary (8025196176636589803) -->
+    <!-- no translation found for pref_lab_quick_controls_summary (1564546156544675707) -->
     <skip />
-    <!-- no translation found for pref_lab_most_visited_homepage (547134501893835512) -->
+    <!-- no translation found for pref_lab_most_visited_homepage (7597766876952506909) -->
     <skip />
-    <!-- no translation found for pref_lab_most_visited_homepage_summary (6857702350834122532) -->
+    <!-- no translation found for pref_lab_most_visited_homepage_summary (4132511544800457513) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
     <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problem da connectivitad da datas"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem da datoteca"</string>
@@ -389,6 +400,8 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Carta SD betg disponibla"</string>
     <!-- outdated translation 3473883538192835204 -->     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"La carta SD è occupada. Tscherni «Deactivar la memoria USB» en l\'avis per permetter telechargiadas."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"La carta SD è occupada. Tscherni «Deactivar la memoria USB» en l\'avis per permetter telechargiadas."</string>
+    <!-- no translation found for cannot_download (8150552478556798780) -->
+    <skip />
     <string name="download_no_application_title" msgid="1286056729168874295">"Impussibel dad avrir la datoteca"</string>
     <string name="retry" msgid="1835923075542266721">"Repeter"</string>
     <string name="no_downloads" msgid="3947445710685021498">"La cronologia da telechargiadas è vida."</string>
@@ -441,9 +454,27 @@
     <skip />
     <!-- no translation found for import_bookmarks_dialog_title (3325557652271172128) -->
     <skip />
-    <!-- no translation found for import_bookmarks_dialog_description (2187665745413495303) -->
+    <!-- no translation found for import_bookmarks_dialog_description (1942452375564381488) -->
     <skip />
-    <!-- no translation found for import_bookmarks_dialog_remove (8105572409059113340) -->
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_remove (5984607822851800902) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
     <skip />
     <!-- no translation found for import_bookmarks_dialog_import (6933613853573899218) -->
     <skip />
@@ -451,4 +482,6 @@
     <skip />
     <!-- no translation found for max_tabs_warning (4122034303809457570) -->
     <skip />
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 1d22788..5dc8053 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Browser"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Alegeţi fişierul pentru a fi încărcat"</string>
+    <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>
@@ -98,7 +99,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Listă"</string>
     <string name="current_page" msgid="7510129573681663135">"din "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Marcajul „<xliff:g id="BOOKMARK">%s</xliff:g>” va fi şters."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Deschideţi într-o fereastră nouă"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Deschideţi-le pe toate în ferestre noi"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Accesaţi"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Deschideţi filă incognito nouă"</string>
@@ -111,9 +111,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Salvaţi ca arhivă web"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Arhiva web a fost salvată."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Salvarea arhivei web nu a reuşit."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Salvaţi ca arhivă web"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Arhiva web a fost salvată."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Salvarea arhivei web nu a reuşit."</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>
@@ -138,7 +138,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Setările conţinutului paginii"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Încărcaţi imagini"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Afişaţi imagini din paginile web"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Blocaţi ferestrele de tip pop-up"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Blocaţi ferestrele de tip pop-up"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Activaţi JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Deschideţi în fundal"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Activaţi pluginurile"</string>
@@ -148,7 +148,7 @@
     <item msgid="8547442717307793863">"Dezactivat"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Deschideţi noi ferestre în spatele celei curente"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Setaţi pagina de pornire"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Setaţi pagina de pornire"</string>
     <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>
@@ -159,7 +159,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Sincronizaţi"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Completare automată"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Completare automată"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Sincronizaţi cu Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Distribuiţi marcaje şi alte date între browserul Android şi Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Cont Google"</string>
@@ -167,16 +167,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Sincronizaţi marcaje între browserul Android şi Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Începeţi sincroniz."</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Sel. cont pt. dist."</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Completare automată formulare"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Completare automată formulare"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Completaţi formulare web cu un singur clic"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Setări Completare automată"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Configuraţi şi gestionaţi date pentru formularele cu completare automată"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Setări Completare automată"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Configuraţi şi gestionaţi date pentru formularele cu completare automată"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Conectare automată la Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Nu au fost găsite conturi"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Conectaţi-vă automat la site-urile Google utilizând <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Se face conectarea la site-urile Google utilizând <xliff:g id="ID_1">%s</xliff:g>"\n"Setările dvs. de confidenţialitate şi securitate controlează conectarea automată la Google"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Nu doresc să mă conectez automat"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Completarea automată va utiliza informaţiile din profilul dvs. pentru a vă ajuta să completaţi formularele de pe web cu un singur clic."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Completarea automată va utiliza informaţiile din profilul dvs. pentru a vă ajuta să completaţi formularele de pe web cu un singur clic."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Numele complet:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-mail:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Numele companiei:"</string>
@@ -195,9 +202,10 @@
     <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_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="4337372830506338827">"Completarea automată poate fi configurată oricând din Setările browserului."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Dezactivaţi Completarea automată"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Confidenţialitate şi securitate"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Completarea automată poate fi întotdeauna configurată din Setări browser -&amp;gt; Setări personale."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Dezactivaţi Completarea automată"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Confidenţialitate şi securitate"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Goliţi memoria cache"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Ştergeţi conţinutul memoriei cache şi bazele de date"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Conţinutul local al memoriei cache şi bazele de date se vor şterge."</string>
@@ -270,10 +278,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codificare text"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Laborator"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Comenzi rapide"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Glisaţi degetul dinspre marg. din st. sau din dr. pt. a accesa comenzile rapide"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Pagina de pornire Cele mai vizitate"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Vă setează pagina de pornire pentru a afişa cele mai vizitate pagini."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Comenzi rapide"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Glisaţi degetul mare de la marginea stângă sau dreaptă pentru a accesa comenzile rapide"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Pagina de pornire Cele mai vizitate"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Vă setează pagina de pornire pentru a afişa cele mai vizitate pagini."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -317,6 +329,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Card SD nedisponibil"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Dispozitivul de stocare USB este ocupat. Pentru a permite descărcări, selectaţi în notificare opţiunea „Dezactivaţi stocarea USB”."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"Cardul SD este ocupat. Pentru a permite descărcări, selectaţi în notificare opţiunea „Dezactivaţi stocarea pe USB”."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Puteţi descărca numai de la adrese URL care încep cu „http” sau „https”."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Fişierul nu poate fi deschis"</string>
     <string name="retry" msgid="1835923075542266721">"Încercaţi din nou"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Istoricul de descărcări este gol."</string>
@@ -365,9 +378,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Alegeţi un cont"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronizaţi cu un Cont Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Marcajele dvs. Android nu sunt asociate unui Cont Google"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Eliminaţi marcajele Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Marcajele dvs. Android nu sunt asociate unui Cont Google"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Eliminaţi marcajele Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Adăugaţi marcajele Android la marcajele <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Distribuiţi"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Nu mai există file disponibile"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 82a416a..fc2da60 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Браузер"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Выберите файл для загрузки"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Список"</string>
     <string name="current_page" msgid="7510129573681663135">"на "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Закладка \"<xliff:g id="BOOKMARK">%s</xliff:g>\" будет удалена."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Открыть в новом окне"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Открыть все в новых окнах"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Поиск"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Открыть новую вкладку в режиме инкогнито"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Сохранить как веб-архив"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Веб-архив сохранен."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Не удалось сохранить веб-архив."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Сохранить как веб-архив"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Веб-архив сохранен."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Не удалось сохранить веб-архив."</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Настройки отображения"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Загружать графику"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Показывать изображения на веб-страницах"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Блокир. всплыв. окна"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Блокировать всплывающие окна"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Разрешить JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Открывать в фоновом режиме"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Разрешить плагины"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Нет"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Открывать новые окна позади текущего окна"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Домашняя страница"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Выбрать главную страницу"</string>
     <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>
@@ -158,7 +158,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Адаптировать контент к размеру экрана мобильного устройства"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Общие"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Синхронизация"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Автозаполнение"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Автозаполнение"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Синхронизировать с Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Совместно использовать закладки и другие данные в браузере Android и Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Аккаунт Google"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Синхронизировать закладки браузера Android и Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Синхронизировать"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Выберите аккаунт Google"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Автозаполнение форм"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Автозаполнение форм"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Заполнение веб-форм одним кликом"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Настройки автозаполнения"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Настройка и управление данными для автозаполняемых форм"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Настройки автозаполнения"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Настройка и управление данными для автозаполняемых форм"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Автоматический вход в Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Аккаунты не найдены"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Автоматически входить на сайты Google с помощью аккаунта <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Вход на сайты Google с использованием <xliff:g id="ID_1">%s</xliff:g>"\n"настроек функции \"Конфиденциальность и безопасность\" для автоматического входа в Google"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Запретить автоматический вход"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Автозаполнение будет использовать ваш профиль, чтобы вы могли заполнять веб-формы одним щелчком."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Автозаполнение будет использовать ваш профиль, чтобы вы могли заполнять веб-формы одним щелчком."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Полное имя:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Эл. почта:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Название компании:"</string>
@@ -194,9 +201,10 @@
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Профиль удален"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Удалить профиль"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Браузер может заполнять такие формы автоматически. Настроить профиль автозаполнения?"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="4337372830506338827">"Автозаполнение настраивается в диалоговом окне \"Настройки браузера\""</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Отключить автозаполнение"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Конфиденциальность и безопасность"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Автозаполнение можно настроить в меню \"Настройки браузера\" -&amp;gt; \"Личные настройки\"."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Отключить автозаполнение"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Конфиденциальность и безопасность"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Очистить кэш"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Удалить контент и данные, сохраненные браузером"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Контент и данные, сохраненные браузером, будут удалены."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Кодировка текста"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Лаборатория Google"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Панель инструментов"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Чтобы открыть панель инструментов, проведите пальцем в правом или левом углу экрана"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Главная страница \"Часто посещаемых\""</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Настройка отображения часто посещаемых страниц на главной странице."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Элементы быстрого управления"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Проведите пальцем слева на право, чтобы вызвать элементы быстрого управления"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Главная страница \"Часто посещаемых\""</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Настройка отображения часто посещаемых страниц на главной странице."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблема с подключением"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблема с файлом"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Подтвердить"</string>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"SD-карта недоступна"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"USB-накопитель занят. Чтобы разрешить загрузки, выберите \"Выключить USB-накопитель\" в уведомлении."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"SD-карта занята. Чтобы разрешить загрузки, выберите \"Отключить USB-накопитель\" в уведомлении."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Загрузка возможна только с URL, начинающихся с \"http\" или \"https\"."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Невозможно открыть файл"</string>
     <string name="retry" msgid="1835923075542266721">"Повторить попытку"</string>
     <string name="no_downloads" msgid="3947445710685021498">"История загрузок пуста."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Выберите аккаунт"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Синхронизация с аккаунтом Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Закладки Android не связаны с аккаунтом Google"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Удалить закладки Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Закладки Android не связаны с аккаунтом Google"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Удалить закладки Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Добавить закладки Android в аккаунт <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Отправить"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Достигнут предел количества вкладок"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index edd1253..223c843 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Prehliadač"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Zvoliť súbor, ktorý chcete odovzdať"</string>
+    <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>
@@ -98,7 +99,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Zoznam"</string>
     <string name="current_page" msgid="7510129573681663135">"od "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Záložka <xliff:g id="BOOKMARK">%s</xliff:g> bude odstránená."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Otvoriť v novom okne"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Otvoriť všetky v nových oknách"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Hľadať"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Nová karta v režime inkognito"</string>
@@ -111,9 +111,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Uložiť ako webový archív"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Webový archív bol uložený."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Uloženie webového archívu zlyhalo."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Uložiť ako webový archív"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Webový archív bol uložený."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Uloženie webového archívu 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>
@@ -138,7 +138,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Nastavenia obsahu stránky"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Načítať obrázky"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Zobrazovať obrázky na webových stránkach"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Blokovať kontextové okná"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Blokovať kontextové okná"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Povoliť JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Otvoriť na pozadí"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Povoliť doplnky"</string>
@@ -148,7 +148,7 @@
     <item msgid="8547442717307793863">"Vypnuté"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Otvárať nové okná za aktuálnym oknom"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Nastaviť domovskú stránku"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Nastaviť domovskú stránku"</string>
     <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>
@@ -159,7 +159,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Synchronizácia"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Automatické dopĺňanie"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Automatické dopĺňanie"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Synchronizovať s prehliadačom Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Zdieľať záložky a iné údaje medzi Prehliadačom systému Android a prehliadačom Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Účet Google"</string>
@@ -167,16 +167,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Synchronizovať záložky medzi Prehliadačom systému Android a aplikáciou Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Synchronizovať"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Vyberte účet Google na zdieľ."</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Automatické dopĺňanie formulárov"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Automatické dopĺňanie formulárov"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Vyplňovanie webových formulárov jediným kliknutím"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Nastavenia autom. dopĺňania"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Nastavenie a správa automaticky doplnených formulárov"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Nastavenia autom. dopĺňania"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Nastavenie a správa automaticky doplnených formulárov"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Automatické prihlasovanie Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Neboli nájdené žiadne účty"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Na webových stránkach Google sa automaticky prihlasovať pomocou účtu <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Prihlásenie na stránky služby Google pomocou <xliff:g id="ID_1">%s</xliff:g>"\n"Automatického prihlásenia Google s vašimi nastaveniami ochrany osobných údajov a zabezpečenia"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Neprihlasovať sa automaticky"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Funkcia Automatické dopĺňanie bude používať váš profil na dokončenie webových formulárov jediným kliknutím."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Funkcia Automatické dopĺňanie bude používať váš profil na dokončenie webových formulárov jediným kliknutím."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Celé meno:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-mail:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Názov spoločnosti:"</string>
@@ -195,9 +202,10 @@
     <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_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="4337372830506338827">"Automatické dopĺňanie môžete kedykoľvek nakonfigurovať v Nastaveniach prehliadača."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Zakázať Automatické dopĺňanie"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Ochrana osobných údajov a zabezpečenie"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Funkciu Automatické dopĺňanie môžete nakonfigurovať prechodom na položku Nastavenia prehliadača –&amp;gt; Osobné nastavenia."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Zakázať Automatické dopĺňanie"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Ochrana osobných údajov a zabezpečenie"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Vymazať medzipamäť"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Vymazať všetok obsah a databázy uložené do miestnej medzipamäte"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Obsah a databázy uložené v miestnej medzipamäti budú odstránené."</string>
@@ -270,10 +278,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Kódovanie textu"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Rýchle ovládacie prvky"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Posunutím palca z ľavého alebo pravého okraja pristúpite k rýchlym ovl. prvkom"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Najnavštevovanejšie na domovskej stránke"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Nastaví na domovskej stránke zobrazovanie najviac navštevovaných stránok."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Rýchle ovládacie prvky"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Posuňte prstom v smere od ľavého alebo pravého okraja, čím rýchlo pristúpite k ovládacím prvkom"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Najnavštevovanejšie na domovskej stránke"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Nastaví na domovskej stránke zobrazovanie najviac navštevovaných stránok."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -317,6 +329,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Karta SD nie je dostupná"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Ukladací priestor USB je zaneprázdnený. Ak chcete povoliť preberanie, vyberte v upozornení možnosť „Vypnúť ukladací priestor USB“."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"Karta SD je zaneprázdnená. Ak chcete povoliť preberanie, vyberte v upozornení možnosť Vypnúť pamäť USB."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Môžete prevziať len adresy URL začínajúce na „http“ alebo „https“."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Súbor nemožno otvoriť"</string>
     <string name="retry" msgid="1835923075542266721">"Skúsiť znova"</string>
     <string name="no_downloads" msgid="3947445710685021498">"História preberania je prázdna."</string>
@@ -365,9 +378,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Vyberte účet"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synchronizovať s účtom Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Vaše záložky v systéme Android nie sú priradené k účtu Google."</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Odstrániť záložky systému Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Vaše záložky v systéme Android nie sú priradené k účtu Google."</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Odstrániť záložky systému Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Pridať všetky záložky systému Android medzi záložky účtu <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Zdieľať"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"K dispozícii nie sú žiadne ďalšie záložky"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 212d883..34c7d1b 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Brskalnik"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Izberite datoteko za prenos v strežnik"</string>
+    <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>
@@ -98,7 +99,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Seznam"</string>
     <string name="current_page" msgid="7510129573681663135">"od "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Zaznamek »<xliff:g id="BOOKMARK">%s</xliff:g>« bo izbrisan"</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Odpri v novem oknu"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Odpri vse v novih oknih"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Pojdi"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Odpri nov zav. brez bel. zg."</string>
@@ -111,9 +111,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Shrani kot spletni arhiv"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Spletni arhiv je shranjen."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Spletnega arhiva ni bilo mogoče shraniti."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Shrani kot spletni arhiv"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Spletni arhiv je shranjen."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Spletnega arhiva ni bilo mogoče shraniti."</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>
@@ -138,7 +138,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Nastavitve vsebine strani"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Naloži slike"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Prikaži slike na spletnih straneh"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Blokiraj pojavna okna"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Blokiraj pojavna okna"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Omogoči JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Odpri v ozadju"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Omogoči vtičnike"</string>
@@ -148,7 +148,7 @@
     <item msgid="8547442717307793863">"Izključen"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Odpri nova okna za trenutnim"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Nastavi domačo stran"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Nastavi domačo stran"</string>
     <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>
@@ -159,7 +159,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Sinhronizacija"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Samodejno izpolnjevanje"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Samodejno izpolnjevanje"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Sinhroniziraj z Google Chromom"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Delite si zaznamke in druge podatke med brskalnikom Android in Google Chromom"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google Račun"</string>
@@ -167,16 +167,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Sinhroniziraj zaznamke med brskalnikom Android in Google Chromom"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Začni sinhronizacijo"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Google rač. za delj."</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Samodejno izpolnjevanje obrazcev"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Samodejno izpolnjevanje obrazcev"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Izpolnite spletne obrazce z enim klikom"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Nastavitve za sam. izpolnjevanje"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Nastavi in upravljaj podatke za samodejno izpolnjene obrazce"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Nastavitve za sam. izpolnjevanje"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Nastavi in upravljaj podatke za samodejno izpolnjene obrazce"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Samodejna prijava v Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Ni računov"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Samodejna prijava v spletna mesta Google z računom <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Samodejna prijava v Googlova spletna mesta z <xliff:g id="ID_1">%s</xliff:g>"\n"Samodejna prijava v Google je določena v nastavitvah zasebnosti in varnosti"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Brez samodejne prijave"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"AutoFill bo uporabil vaš profil za izpolnjevanje spletnih obrazcev z enim klikom."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Samozapolnjevanje uporabi vaš profil za izpolnjevanje spletnih obrazcev z enim klikom."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Polno ime:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-pošta:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Ime podjetja:"</string>
@@ -195,9 +202,10 @@
     <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_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="4337372830506338827">"Samodejno izpolnjevanje lahko nastavite v nastavitvah brskalnika."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Onemogoči samodejno izpolnjevanje"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Zasebnost in varnost"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Samodejno izpolnjevanje lahko vedno urejate v razdelku »Nastavitve brskalnika« -&amp;gt; »Osebne nastavitve«."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Onemogoči samodejno izpolnjevanje"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Zasebnost in varnost"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Počisti predpomnilnik"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Počisti lokalno predpomnjeno vsebino in zbirke podatkov"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Lokalno predpomnjena vsebina in zbirke podatkov bodo izbrisane."</string>
@@ -270,10 +278,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Kodiranje besedila"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Laboratoriji"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Hitro upravljanje"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Za dostop do hitrega upravljanja s palcem podrsajte od levega ali desnega roba"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Najbolj obiskana domača stran"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Nastavi domačo stran za prikaz najbolj obiskanih strani."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Hitri kontrolniki"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Povlecite palec od levega ali desnega roba, da odprete hitre kontrolnike"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Najbolj obiskana domača stran"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Nastavi domačo stran za prikaz najbolj obiskanih strani."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -317,6 +329,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Kartica SD ni na voljo"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Pomnilnik USB je zaseden. Če želite omogočiti prenose, izberite »Izklopi pomnilnik USB« v območju za obvestila."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"Kartica SD je zasedena. Če želite omogočiti prenose, izberite »Izklopi pomnilnik USB« v območju za obvestila."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Prenesti je možno le URL-je »http« ali »https«."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Ne morem odpreti datoteke"</string>
     <string name="retry" msgid="1835923075542266721">"Poskusi znova"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Zgodovina prenosov je prazna."</string>
@@ -365,9 +378,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Izberite račun"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sinhroniziraj z Google Računom"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Vaši Androidovi zaznamki niso povezani z Googlovim računom"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Odstranite Androidove zaznamke"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Vaši Androidovi zaznamki niso povezani z Googlovim računom"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Odstranite Androidove zaznamke"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Dodaj Androidove zaznamke k zaznamkom za <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Skupna raba"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Ni več razpoložljivih zavihkov"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index cd76430..32e7150 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Прегледач"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Одаберите датотеку за отпремање"</string>
+    <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>
@@ -98,7 +99,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Листа"</string>
     <string name="current_page" msgid="7510129573681663135">"са "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Обележивач „<xliff:g id="BOOKMARK">%s</xliff:g>“ ће бити избрисан."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Отвори у новом прозору"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Отвори све у новим прозорима"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Иди"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Нова картица без архивирања"</string>
@@ -111,9 +111,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Сачувај као веб архиву"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Сачувана је Веб архива"</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Неуспешно чување Веб архиве."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Сачувај као веб архиву"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Сачувана је Веб архива"</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Неуспешно чување Веб архиве."</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>
@@ -138,7 +138,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Подешавања садржаја странице"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Учитај слике"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Прикажи слике на веб страницама"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Блокирај искачуће прозоре"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Блокирај искачуће прозоре"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Омогући JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Отвори у позадини"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Омогући програмске додатке"</string>
@@ -148,7 +148,7 @@
     <item msgid="8547442717307793863">"Искључено"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Отварање нових прозора иза тренутног прозора"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Постави почетну страницу"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Постави почетну страницу"</string>
     <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>
@@ -159,7 +159,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Подешавање формата веб страница тако да се уклопе на екран"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Општa"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Синхронизација"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Аутоматско попуњавање"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Аутоматско попуњавање"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Синхронизуј са програмом Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Делите обележиваче и друге податке између Android прегледача и програма Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google налог"</string>
@@ -167,16 +167,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Синхронизуј обележиваче између Android прегледача и програма Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Започни синхронизацију"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Изаберите Google налог са којим ћете делити"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Аутоматско попуњавање обрасца"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Аутоматско попуњавање обрасца"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Попуните Веб обрасце само једним кликом"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Подешавања аутоматског попуњавања"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Подешавајте и управљајте подацима за аутоматски попуњене обрасце"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Подешавања аутоматског попуњавања"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Подешавајте и управљајте подацима за аутоматски попуњене обрасце"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Аутоматска пријава на Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Није пронађен ниједан налог"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Пријавите се на Google сајтове аутоматски помоћу налога <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Пријављивање на Google сајтове помоћу <xliff:g id="ID_1">%s</xliff:g>"\n"Подешавања приватности и безбедности контролишу аутоматско Google пријављивање"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Не пријављуј ме аутоматски"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Аутоматско попуњавање ће користити ваш профил како би вам помогло у попуњавању веб образаца једним кликом."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Аутоматско попуњавање ће користити ваш профил како би вам помогло у попуњавању веб образаца једним кликом."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Пуно име:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Е-пошта:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Назив предузећа:"</string>
@@ -195,9 +202,10 @@
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Профил је избрисан"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Избриши профил"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Прегледач може аутоматски да попуњава веб обрасце попут овог. Желите ли да подесите профил?"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="4337372830506338827">"Аутоматско попуњавање увек можете да конфигуришете у Подешавањима прегледача."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Онемогући аутоматско попуњавање"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Приватност и безбедност"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Аутоматско попуњавање увек можете да конфигуришете преко Подешавања прегледача – &amp;gt; Лична подешавања."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Онемогући аутоматско попуњавање"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Приватност и безбедност"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Обриши кеш"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Брисање садржаја и база података из локалног кеша"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Садржај и базе података биће избрисани из локалног кеша."</string>
@@ -270,10 +278,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Кодирање текста"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Брзе контроле"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Листајте палцем са леве или десне ивице да бисте приступили брзим контролама"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Најпосећеније на почетној страници"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Подешава почетну страницу тако да се на њој приказују најпосећеније странице."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Брзе контроле"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Листајте палцем са леве или десне ивице да бисте приступили брзим контролама"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Најпосећеније на почетној страници"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Подешава почетну страницу тако да се на њој приказују најпосећеније странице."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблем при повезивању са подацима"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблем са датотеком"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Потврда"</string>
@@ -317,6 +329,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"SD картица је недоступна"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"USB меморија је заузета. Да бисте дозволили преузимања, изаберите „Искључи USB меморију“ у обавештењу."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"SD картица је заузета. Да бисте омогућили преузимања, у оквиру обавештења изаберите „Искључи USB складиште“."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Могуће је преузети само URL адресе које садрже „http“ или „https“."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Није могуће отворити датотеку"</string>
     <string name="retry" msgid="1835923075542266721">"Покушај поново"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Историја преузимања је празна."</string>
@@ -365,9 +378,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Избор налога"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Синхронизуј са Google налогом"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Android обележивачи нису повезани са Google налогом"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Уклоните Android обележиваче"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Android обележивачи нису повезани са Google налогом"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Уклоните Android обележиваче"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Додајте Android обележиваче у обележиваче за <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Дели"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Нема више доступних картица"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 6e23ccb..2459a4c 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Webbläs."</string>
     <string name="choose_upload" msgid="3649366287575002063">"Välj filen som du vill överföra"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Lista"</string>
     <string name="current_page" msgid="7510129573681663135">"från "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Bokmärket <xliff:g id="BOOKMARK">%s</xliff:g> tas bort."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Öppna i nytt fönster"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Öppna alla i nytt ett fönster"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Kör"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Öppna ny inkognitoflik"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Spara som webbarkiv"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Webbarkivet har sparats"</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Det gick inte att spara webbarkivet."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Spara som webbarkiv"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Webbarkivet har sparats"</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Det gick inte att spara webbarkivet."</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Inställningar för sidinnehåll"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Överför bilder"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Visa bilder på webbsidor"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Blockera popup-fönster"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Blockera popup-fönster"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Aktivera JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Öppen i bakgrunden"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Aktivera plugin-program"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Av"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Öppna nya fönster bakom det aktiva"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Ange startsida"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Ange startsida"</string>
     <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>
@@ -158,7 +158,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Anpassa webbsidor efter skärmen"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Allmänt"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Synka"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Autofyll"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Autofyll"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Synkronisera med Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Dela bokmärken och andra data mellan Androids webbläsare och Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google-konto"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Synkronisera bokmärken mellan Androids webbläsare och Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Synkronisera nu"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Välj Google-konto"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Automatisk ifyllning av formulär"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Automatisk ifyllning av formulär"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Fyll i webbformulär med ett enda klick"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Inställningar för Autofyll"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Konfigurera och hantera data för automatisk ifyllning av formulär"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Inställningar för Autofyll"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Konfigurera och hantera data för automatisk ifyllning av formulär"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Automatiskt inloggning på Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Inga konton hittades"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Logga in automatiskt på Googles webbplatser med <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Loggar in på Googles webbplatser med <xliff:g id="ID_1">%s</xliff:g>"\n"Automatisk inloggning på Google styrs med inställningarna i Sekretess och säkerhet"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Logga inte in automatiskt"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Autofyll använder din profil och hjälper dig att fylla i webbformulär med ett enda klick."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Autofyll använder din profil och hjälper dig att fylla i webbformulär med ett enda klick."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Fullständigt namn:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-post:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Företagsnamn:"</string>
@@ -194,9 +201,10 @@
     <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_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="4337372830506338827">"Du kan när som helst ändra inställningarna för Autofyll under webbläsarens inställningar."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Inaktivera Autofyll"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Sekretess och säkerhet"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Du kan när som helst ändra inställningarna för Autofyll under webbläsarens inställningar -&amp;gt; Personliga inställningar."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Inaktivera Autofyll"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Sekretess och säkerhet"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Rensa cacheminne"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Ta bort innehåll och databaser som cachelagrats lokalt"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Innehåll och databaser som cachelagrats lokalt tas bort."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Textkodning"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Snabbkontroller"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Svep tummen från vänster eller höger kant så kommer du åt snabbkontrollerna"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Startsida med de mest besökta sidorna"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"De mest besökta sidorna visas på startsidan."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Snabbkontroller"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Svep tummen från vänster eller höger kant så kommer du åt snabbkontrollerna"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Startsida med de mest besökta sidorna"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"De mest besökta sidorna visas på startsidan."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"SD-kortet är inte tillgängligt"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"USB-lagringsenheten är upptagen. Om du vill tillåta hämtning väljer du Inaktivera USB-lagring i aviseringen."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"SD-kortet är upptaget. Om du vill tillåta hämtning väljer du Inaktivera USB-lagring i meddelandet."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Det går bara att hämta webbadresser som inleds med http eller https."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Det går inte att öppna filen"</string>
     <string name="retry" msgid="1835923075542266721">"Försök igen"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Det finns ingen hämtningshistorik."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Välj konto"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synkronisera med Google-konto"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Dina Android-bokmärken har inte kopplats till något Google-konto"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Ta bort dina Android-bokmärken"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Dina Android-bokmärken har inte kopplats till något Google-konto"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Ta bort dina Android-bokmärken"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Lägg till dina Android-bokmärken i bokmärkena för <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Dela"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Det finnns inga fler flikar"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index cd74d53..52dfb86 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"เบราว์เซอร์"</string>
     <string name="choose_upload" msgid="3649366287575002063">"เลือกไฟล์ที่จะอัปโหลด"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"รายการ"</string>
     <string name="current_page" msgid="7510129573681663135">"จาก "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"บุ๊กมาร์ก \"<xliff:g id="BOOKMARK">%s</xliff:g>\" จะถูกลบ"</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"เปิดในหน้าต่างใหม่"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"เปิดทั้งหมดในหน้าต่างใหม่"</string>
     <string name="goto_dot" msgid="3895839050522602723">"ไป"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"เปิดแท็บใหม่ที่ไม่ระบุตัวตน"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"บันทึกเป็นที่เก็บถาวรเว็บ"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"บันทึกที่เก็บถาวรเว็บแล้ว"</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"บันทึกที่เก็บถาวรเว็บไม่สำเร็จ"</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"บันทึกเป็นที่เก็บถาวรเว็บ"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"บันทึกที่เก็บถาวรเว็บแล้ว"</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"บันทึกที่เก็บถาวรเว็บไม่สำเร็จ"</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"การตั้งค่าเนื้อหาหน้าเว็บ"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"โหลดภาพ"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"แสดงรูปภาพบนหน้าเว็บ"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"ปิดกั้นหน้าต่างป๊อปอัป"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"ปิดกั้นหน้าต่างป๊อปอัป"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"เปิดการใช้งาน JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"เปิดในพื้นหลัง"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"เปิดการใช้งานปลั๊กอิน"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"ปิด"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"เปิดหน้าต่างใหม่ใต้หน้าต่างปัจจุบัน"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"ตั้งค่าหน้าแรก"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"ตั้งค่าหน้าแรก"</string>
     <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>
@@ -158,7 +158,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"ปรับรูปแบบหน้าเว็บให้พอดีกับหน้าจอ"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"ทั่วไป"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"ซิงค์"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"ป้อนอัตโนมัติ"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"ป้อนอัตโนมัติ"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"ซิงค์กับ Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"แบ่งปันบุ๊กมาร์กและข้อมูลอื่นๆ ระหว่างเบราว์เซอร์ Android กับ Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"บัญชี Google"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"ซิงค์บุ๊กมาร์กระหว่างเบราว์เซอร์ Android และ Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"เริ่มการซิงค์"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"เลือกบัญชี Google ที่จะแบ่งปัน"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"ป้อนข้อมูลฟอร์มอัตโนมัติ"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"ป้อนข้อมูลฟอร์มอัตโนมัติ"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"กรอกข้อมูลเว็บฟอร์มได้ในคลิกเดียว"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"การตั้งค่าป้อนอัตโนมัติ"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"ตั้งค่าและจัดการข้อมูลสำหรับฟอร์มที่ป้อนข้อมูลอัตโนมัติ"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"การตั้งค่าป้อนอัตโนมัติ"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"ตั้งค่าและจัดการข้อมูลสำหรับฟอร์มที่ป้อนข้อมูลอัตโนมัติ"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"ลงชื่อเข้าใช้ Google อัตโนมัติ"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"ไม่พบบัญชี"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"ลงชื่อเข้าใช้ Google Sites อัตโนมัติโดยใช้ <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"กำลังลงชื่อเข้าใช้ Google Sites ด้วย <xliff:g id="ID_1">%s</xliff:g>"\n"การตั้งค่าข้อมูลส่วนบุคคลและความปลอดภัยจะควบคุมการลงชื่อเข้าใช้อัตโนมัติของ Google"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"อย่าลงชื่อเข้าใช้โดยอัตโนมัติ"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"การป้อนอัตโนมัติจะใช้โปรไฟล์ของคุณเพื่อช่วยให้คุณกรอกเว็บฟอร์มได้ในคลิกเดียว"</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"การป้อนอัตโนมัติจะใช้โปรไฟล์ของคุณเพื่อช่วยให้คุณกรอกเว็บฟอร์มได้ในคลิกเดียว"</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"ชื่อเต็ม:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"อีเมล:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"ชื่อบริษัท:"</string>
@@ -194,9 +201,10 @@
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"ลบโปรไฟล์แล้ว"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"ลบโปรไฟล์"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"เบราว์เซอร์จะกรอกเว็บฟอร์มให้โดยอัตโนมัติเช่นฟอร์มนี้ คุณต้องการตั้งค่าโปรไฟล์ของคุณหรือไม่"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="4337372830506338827">"ป้อนอัตโนมัติ สามารถกำหนดค่าผ่านการตั้งค่าเบราว์เซอร์"</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"ปิดใช้งานการป้อนอัตโนมัติ"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"ข้อมูลส่วนบุคคลและความปลอดภัย"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"ฟังก์ชันป้อนอัตโนมัติสามารถกำหนดค่าได้ผ่านการตั้งค่าเบราว์เซอร์ -&amp;gt; การตั้งค่าส่วนบุคคล"</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"ปิดใช้งานการป้อนอัตโนมัติ"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"ข้อมูลส่วนบุคคลและความปลอดภัย"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"ล้างแคช"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"ล้างเนื้อหาและฐานข้อมูลที่เก็บไว้ในเครื่อง"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"เนื้อหาและฐานข้อมูลที่เก็บไว้ในเครื่องจะถูกลบ"</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"การเข้ารหัสข้อความ"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"การควบคุมอย่างรวดเร็ว"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"กวาดนิ้วหัวแม่มือจากขอบซ้ายหรือขวาเพื่อเข้าถึงการควบคุมอย่างรวดเร็ว"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"หน้าแรกที่มีผู้เข้าชมสูงสุด"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"ตั้งหน้าแรกของคุณให้แสดงหน้าเว็บที่มีผู้เข้าชมมากที่สุด"</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"การควบคุมอย่างรวดเร็ว"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"กวาดนิ้วหัวแม่มือจากขอบซ้ายหรือขวาเพื่อเข้าถึงการควบคุมอย่างรวดเร็ว"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"หน้าแรกที่มีผู้เข้าชมสูงสุด"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"ตั้งหน้าแรกของคุณให้แสดงหน้าเว็บที่มีผู้เข้าชมมากที่สุด"</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"ปัญหาการเชื่อมต่อข้อมูล"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"ปัญหาเกี่ยวกับไฟล์"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"ยืนยัน"</string>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"การ์ด SD ใช้งานไม่ได้"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"ที่เก็บข้อมูล USB ไม่ว่าง หากต้องการอนุญาตให้ดาวน์โหลด ให้เลือก \"ปิดที่เก็บข้อมูล USB\" ในการแจ้งเตือน"</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"การ์ด SD ไม่ว่าง หากต้องการอนุญาตให้ดาวน์โหลด เลือก \"ปิดพื้นที่จัดเก็บ USB\" ในการแจ้งเตือน"</string>
+    <string name="cannot_download" msgid="8150552478556798780">"ดาวน์โหลดได้เฉพาะ URL \"http\" หรือ \"https\""</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"ไม่สามารถเปิดไฟล์ได้"</string>
     <string name="retry" msgid="1835923075542266721">"ลองอีกครั้ง"</string>
     <string name="no_downloads" msgid="3947445710685021498">"ประวัติการดาวน์โหลดว่างเปล่า"</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"เลือกบัญชี"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"ซิงค์กับบัญชี Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"บุ๊กมาร์ก Android ของคุณไม่เชื่อมโยงกับบัญชี Google"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"ลบบุ๊กมาร์ก Android ของคุณ"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"บุ๊กมาร์ก Android ของคุณไม่เชื่อมโยงกับบัญชี Google"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"ลบบุ๊กมาร์ก Android ของคุณ"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"เพิ่มบุ๊กมาร์ก Android ของคุณลงในบุ๊กมาร์กสำหรับ <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"แบ่งปัน"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"ไม่สามารถใช้แท็บเพิ่มได้"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 04ff6c2..6b94ef4 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Browser"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Pumili ng file para sa pag-upload"</string>
+    <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>
@@ -98,7 +99,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Listahan"</string>
     <string name="current_page" msgid="7510129573681663135">"mula sa "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Tatanggalin ang bookmark na \"<xliff:g id="BOOKMARK">%s</xliff:g>\"."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Buksan sa bagong window"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Buksan lahat sa bagong windows"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Pumunta"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Magbukas ng bago incognito tab"</string>
@@ -111,9 +111,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"I-save bilang Web Archive"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Na-save na ang web archive."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Nabigong i-save ang web archive."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"I-save bilang Web Archive"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Na-save na ang web archive."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Nabigong i-save ang web archive."</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>
@@ -138,7 +138,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Mga setting ng nilalaman ng pahina"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"I-load ang mga larawan"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Ipakita ang mga larawan sa mga web page"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"I-block ang mga pop-up window"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"I-block ang mga pop-up window"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Paganahin ang JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Buksan sa background"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Paganahin ang mga plug-in"</string>
@@ -148,7 +148,7 @@
     <item msgid="8547442717307793863">"Naka-off"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Buksan ang bagong windows sa likuran ng kasalukuyang isa"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Itakda ang home page"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Itakda ang home page"</string>
     <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>
@@ -159,7 +159,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Sync"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Autofill"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Autofill"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Mag-sync sa Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Ibahagi ang mga bookmark &amp; iba pang data sa pagitan ng Android Browser at Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google account"</string>
@@ -167,16 +167,24 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"I-sync ang mga bookmark sa pagitan ng Android Browser at Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Simulan ang pag-sync"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Pili Google account"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Form AutoFill"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Form AutoFill"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Punan ang mga web form sa isang click"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Mga Setting ng AutoFill"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"I-set up &amp; pamahalaan ang data para sa mga Na-AutoFill na form"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Mga Setting ng AutoFill"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"I-set up &amp;amp; pamahalaan ang data para sa mga Na-AutoFill na form"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Awtomatiko pag-sign in sa Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Walang nakitang mga account"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Awtomatikong mag-sign in sa mga site ng Google gamit ang <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Nagsa-sign in sa mga site ng Google gamit ang <xliff:g id="ID_1">%s</xliff:g>"\n"Kinokontrol ng iyong mga setting ng Privacy at Seguridad ang awtomatikong pag-sign-in ng Google"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Huwag awtomatikong mag-sign in"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Gagamitin ng AutoFill ang iyong profile upang matulungan kang makumpleto ang mga form ng web sa isahang pag-click."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Gagamitin ng AutoFill ang iyong profile upang matulungan kang makumpleto ang mga form ng web sa isahang pag-click."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Buong pangalan:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Email:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Pangalan ng Kompanya:"</string>
@@ -195,9 +203,10 @@
     <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_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="4337372830506338827">"Palaging mako-configure ang AutoFill sa pamamagitan ng Mga Setting ng Browser."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Huwag paganahin ang AutoFill"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Privacy at Seguridad"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Maaaring palaging i-configure ang AutoFill sa pamamagitan ng Mga Setting ng Browser -&amp;gt; Mga Personal na Setting."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Huwag paganahin ang AutoFill"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Privacy at Seguridad"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"I-clear ang cache"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"I-clear ang lokal na naka-cache na nilalaman at mga database"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Tatanggalin ang lokal na na-cache na nilalaman at mga database."</string>
@@ -270,10 +279,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Pag-encode ng teksto"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Mga Lab"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Mga Mabilisang Control"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"I-swipe ang hinlalaki mula sa kaliwa hanggang sa kanang kanto upang ma-access ang mga mabilisang control"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Pinaka-binibisitang Homepage"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Itakda ang iyong homepage upang ipakita ang pinaka-binibisitang mga pahina."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Mga Mabilis na Kontrol"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"I-swipe ang hinlalaki mula kaliwa pakanan upang i-access ang mga mabilis na kontrol"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Pinaka-binibisitang Homepage"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Itakda ang iyong homepage upang ipakita ang pinaka-binibisitang mga pahina."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -317,6 +330,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Hindi available ang SD card."</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Abala ang SD card. Upang payagan ang mga pag-download, piliin ang \"I-off ang imbakan na USB\" sa notification."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"Abala ang SD card. Upang payagan ang mga pag-download, piliin ang \"I-off ang USB storage\" sa notification."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Maaari lang mag-download ng mga URL ng \"http\" o \"https\"."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Hindi mabuksan ang file"</string>
     <string name="retry" msgid="1835923075542266721">"Subukang muli"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Walang laman ang kasaysayan ng pag-download."</string>
@@ -365,9 +379,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Pumili ng account"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Mag-sync sa Google account"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Walang kaugnayan ang iyong mga Android bookmark sa isang Google account"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Alisin ang iyong mga Android bookmark"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Walang kaugnayan ang iyong mga Android bookmark sa isang Google account"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Alisin ang iyong mga Android bookmark"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Idagdag ang iyong mga Android bookmark sa mga bookmark para sa <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Ibahagi"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Wala nang available na mga tab"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 9ca233a..40c2da5 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Tarayıcı"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Yükleme için dosya seçin"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Liste"</string>
     <string name="current_page" msgid="7510129573681663135">"kaynak: "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Favori \"<xliff:g id="BOOKMARK">%s</xliff:g>\" silinecek."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Yeni pencerede aç"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Tümünü yeni pencerelerde aç"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Git"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Yeni gizli sekme aç"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Web Arşivi olarak Kaydet"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Web arşivi kaydedildi."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Web arşivi kaydedilemedi."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Web Arşivi olarak Kaydet"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Web arşivi kaydedildi."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Web arşivi 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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Sayfa içeriği ayarları"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Görselleri yükle"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Web sayfalarındaki görselleri görüntüle"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Pop-up\'ları engelle"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Pop-up\'ları engelle"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"JavaScript\'i etkinleştir"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Arka planda aç"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Eklentileri etkinleştir"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"Kapalı"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Geçerli pencerenin arkasında yeni pencereler aç"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Ana sayfayı ayarla"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Ana sayfayı ayarla"</string>
     <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>
@@ -158,7 +158,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Senkronizasyon"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Otomatik Doldur"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Otomatik Doldur"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Google Chrome ile senkronize et"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Yer işaretlerini ve diğer verileri Android Tarayıcı ile Google Chrome arasında paylaş"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google hesabı"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Yer işaretlerini Android Tarayıcı ve Google Chrome arasında senkronize et"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Senk. başlat"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Paylaşım için Google hesabını seçin"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Formu Otomatik Doldur"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Formu Otomatik Doldur"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Web formlarını tek bir tıklamayla doldurun"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Otomatik Doldurma Ayarları"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Otomatik Doldurulan formlara ilişkin verileri ayarlayın ve yönetin"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Otomatik Doldurma Ayarları"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Otomatik Doldurulan formlara ilişkin verileri ayarlayın ve yönetin"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Otomatik Google oturumu açma"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Hesap bulunamadı"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"<xliff:g id="ID_1">%s</xliff:g> adını kullanarak Google Sites\'da otomatik olarak oturum aç"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"<xliff:g id="ID_1">%s</xliff:g> hesabı ile Google Sites hizmetinde oturum açılıyor"\n"Google\'da otomatik oturum açmanız Gizlilik ve Güvenlik ayarlarınız tarafından denetlenir."</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Otomatik olarak oturum açma"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Otomatik Doldurma özelliği web formlarını tek bir tıklamayla doldurmanıza yardımcı olmak için profilinizi kullanır."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Otomatik Doldurma özelliği web formlarını tek bir tıklamayla doldurmanıza yardımcı olmak için profilinizi kullanır."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Tam ad:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-posta:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Şirket adı:"</string>
@@ -194,9 +201,10 @@
     <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_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="4337372830506338827">"Otomatik Doldurma\'yı istediğiniz zaman Tarayıcı Ayarları\'ndan yapılandırabilirsiniz."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Otomatik Doldurma\'yı devre dışı bırak"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Gizlilik ve Güvenlik"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Otomatik Doldurma\'yı istediğiniz zaman Tarayıcı Ayarları -&amp;gt; Kişisel Ayarlar menüsünden yapılandırabilirsiniz."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Otomatik Doldurma\'yı devre dışı bırak"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Gizlilik ve Güvenlik"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Önbelleği temizle"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Yerel olarak önbelleğe alınmış içeriği ve veritabanlarını temizle"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Yerel olarak önbelleğe alınmış içerik ve veritabanları silinecek."</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Metin kodlama"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Hızlı Denetimler"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Hızlı denetimlere erişmek için başparmağınızı soldan sağa doğru hızla kaydırın"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"En Çok Ziyaret Edilenler Ana Sayfası"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Ana sayfanızı en çok ziyaret edilen sayfaları gösterecek şekilde ayarlar."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Hızlı Denetimler"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Hızlı denetimlere erişmek için başparmağınızı hızlıca sola veya sağa kaydırın"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"En Çok Ziyaret Edilenler Ana Sayfası"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Ana sayfanızı en çok ziyaret edilen sayfaları gösterecek şekilde ayarlar."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"SD kart kullanılamıyor"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"USB depolama birimi meşgul. İndirme işlemlerine izin vermek için bildirim alanında \"USB depolama birimini kapat\"ı seçin."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"SD kart meşgul. İndirme işlemlerine izin vermek için bildirim alanında \"USB\'de depolamayı kapat\"ı seçin."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Yalnızca \"http\" veya \"https\" URL\'leri indirilebilir."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Dosya açılamıyor"</string>
     <string name="retry" msgid="1835923075542266721">"Tekrar Dene"</string>
     <string name="no_downloads" msgid="3947445710685021498">"İndirme geçmişi boş."</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Hesap seçin"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Google hesabı ile senkronize et"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Android yer işaretleriniz bir Google hesabı ile ilişkilendirilmemiş"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Android yer işaretlerinizi kaldırın"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Android yer işaretleriniz bir Google hesabı ile ilişkilendirilmemiş"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Android yer işaretlerinizi kaldırın"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Android yer işaretlerinizi <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> yer işaretlerine ekleyin"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Paylaş"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Kullanılabilir başka sekme yok"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index b774d03..1943acf 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Переглядач"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Вибер. файл для завантаж."</string>
+    <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>
@@ -98,7 +99,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Список"</string>
     <string name="current_page" msgid="7510129573681663135">"з "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Закладку \"<xliff:g id="BOOKMARK">%s</xliff:g>\" буде видалено."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Відкрити в нов. вікні"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Відкрити все в нових вікнах"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Викон."</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Відкрити нову анонімну вкладку"</string>
@@ -111,9 +111,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"Зберегти як веб-архів"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Веб-архів збережено."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Помилка збереження веб-архіву."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Зберегти як веб-архів"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Веб-архів збережено."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Помилка збереження веб-архіву."</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>
@@ -138,7 +138,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Налашт-ня вмісту стор."</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Завантаж. зобр."</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Відобр. зображ. на веб-стор."</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Блок. спливаючі вікна"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Блокувати спливаючі вікна"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Увімк. JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Відкр. у фон. режимі"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Увімкнути плагіни"</string>
@@ -148,7 +148,7 @@
     <item msgid="8547442717307793863">"Вимк."</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Відкривати нові вікна за поточним"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Устан. дом. стор."</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Установити домашньою сторінкою"</string>
     <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>
@@ -159,7 +159,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Форматув. сторінки до розмірів екрана"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"Загальні"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Синхронізація"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Автозаповнення"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Автозаповнення"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Синхронізувати з Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Здійснювати обмін закладками й іншими даними між веб-переглядачем Android і Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Облік. запис Google"</string>
@@ -167,16 +167,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Синхронізуйте закладки у веб-переглядачі Android і Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Почати синхронізацію"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Вибрати обл.зап. Google для надсил."</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Автозаповнення форм"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Автозаповнення форм"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Заповнюйте веб-форми за допомогою лише одного кліка"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Налаштування автозаповнення"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Налаштовуйте дані для автозаповнення форм і керуйте ними"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Налаштування автозаповнення"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Налаштовуйте дані для автозаповнення форм і керуйте ними"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Автоматичний вхід у Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Облікових записів не знайдено"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Автоматично ввійти в Google Sites за допомогою <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Вхід у Google Sites за допомогою <xliff:g id="ID_1">%s</xliff:g>"\n"Ваші налаштування конфіденційності та безпеки контролюють автоматичний вхід у Google"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Не входити автоматично"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Функція \"Автозаповнення\" буде використовувати ваш профіль, щоб заповнювати веб-форми за допомогою лише одного кліка."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Функція \"Автозаповнення\" буде використовувати ваш профіль, щоб заповнювати веб-форми за допомогою лише одного кліка."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Повне ім\'я:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Електронна адреса:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Назва компанії:"</string>
@@ -195,9 +202,10 @@
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Профіль видалено"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Видалити профіль"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Веб-переглядач може автоматично заповнювати подібні веб-форми. Налаштувати ваш профіль?"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="4337372830506338827">"Автозаповнення завжди можна налаштувати в налаштуваннях веб-переглядача."</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"Вимкнути автозаповнення"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Конфіденційність і безпека"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Автозаповнення можна завжди налаштувати за допомогою меню \"Налаштування веб-переглядача\" –&amp;gt; \"Персональні налаштування\"."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Вимкнути автозаповнення"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Конфіденційність і безпека"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Очистити кеш"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Очистити локально кешов. вміст і бази даних"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Локально кешований вміст і бази даних буде видалено."</string>
@@ -270,10 +278,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Кодування тексту"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Лабораторії"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Елементи швидкого керування"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Проведіть пальцем від лівого/правого краю для доступу до елем. швидк. керування"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Дом. стор. функції \"Часто відвідувані\""</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Налаштовує на домашній сторінці показ найчастіше відвідуваних сторінок."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Швидкі елементи керування"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Гортайте з лівого чи правого кінця, щоб відкрити швидкі елементи керування"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Дом. стор. функції \"Часто відвідувані\""</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Налаштовує на домашній сторінці показ найчастіше відвідуваних сторінок."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблема з доступом до даних"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблема з файлом"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Підтверд."</string>
@@ -317,6 +329,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Карта SD недоступна"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Носій USB зайнятий. Щоб дозволити завантаження, виберіть у сповіщенні \"Вимкнути носій USB\"."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"Карта SD зайнята. Щоб дозвол. завантаж., виберіть у сповіщенні \"Вимкнути зберігання на USB\"."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Можна завантажувати лише URL-адреси \"http\" або \"https\"."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Файл не відкривається"</string>
     <string name="retry" msgid="1835923075542266721">"Повтор."</string>
     <string name="no_downloads" msgid="3947445710685021498">"Історія завантажень порожня."</string>
@@ -365,9 +378,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Виберіть обліковий запис"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Синхроніз. з обл. записом Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Ваші закладки Android не пов\'язано з обліковим записом Google"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Видалити закладки Android"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Ваші закладки Android не пов\'язано з обліковим записом Google"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Видалити закладки Android"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Додати закладки Android до закладок для <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Надіслати"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Більше немає вкладок"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index b24c8b4..ff58337 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"Trình duyệt"</string>
     <string name="choose_upload" msgid="3649366287575002063">"Chọn tệp để tải lên"</string>
+    <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>
@@ -98,7 +99,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"Danh sách"</string>
     <string name="current_page" msgid="7510129573681663135">"từ "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"Dấu trang \"<xliff:g id="BOOKMARK">%s</xliff:g>\" sẽ bị xoá."</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"Mở trong cửa sổ mới"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"Mở tất cả trong cửa sổ mới"</string>
     <string name="goto_dot" msgid="3895839050522602723">"Đến"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"Mở tab ẩn danh mới"</string>
@@ -111,9 +111,9 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Nội dung tải xuống"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Sao chép url của trang"</string>
     <string name="share_page" msgid="593756995297268343">"Chia sẻ trang"</string>
-    <string name="menu_save_webarchive" msgid="3934652434001459581">"Lưu dưới dạng Lưu trữ web"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"Đã lưu kho lưu trữ web."</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"Không thể lưu kho lưu trữ web."</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"Lưu dưới dạng Lưu trữ web"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"Đã lưu kho lưu trữ web."</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"Không thể lưu kho lưu trữ web."</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>
@@ -138,7 +138,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"Cài đặt nội dung trang"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Tải hình ảnh"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Hiển thị hình ảnh trên trang web"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"Chặn cửa sổ bật lên"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"Chặn cửa sổ bật lên"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Bật JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Mở dưới nền"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"Bật trình cắm"</string>
@@ -148,7 +148,7 @@
     <item msgid="8547442717307793863">"Tắt"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"Mở cửa sổ mới phía sau cửa sổ hiện tại"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"Đặt trang chủ"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"Đặt trang chủ"</string>
     <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>
@@ -159,7 +159,7 @@
     <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>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Đồng bộ hóa"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Tự động điền"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"Tự động điền"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Đồng bộ hóa với Google Chrome"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Chia sẻ dấu trang &amp; các dữ liệu khác giữa Trình duyệt Android và Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Tài khoản Google"</string>
@@ -167,16 +167,24 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Đồng bộ hóa dấu trang giữa Trình duyệt Android và Google Chrome"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Bắt đầu đồng bộ hóa"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Chọn tk Google để c.sẻ"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"Tự động điền biểu mẫu"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Tự động điền biểu mẫu"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Điền biểu mẫu web chỉ với một cú nhấp"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"Cài đặt tự động điền"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"Thiết lập &amp; quản lý dữ liệu cho biểu mẫu Tự động điền"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Cài đặt tự động điền"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Thiết lập &amp;amp; quản lý dữ liệu cho biểu mẫu Tự động điền"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"Tự động đăng nhập Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"Không tìm thấy tài khoản nào"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"Tự động đăng nhập vào các trang của Google bằng <xliff:g id="ID_1">%s</xliff:g>"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"Đang đăng nhập vào các trang web của Google bằng <xliff:g id="ID_1">%s</xliff:g>"\n"Cài đặt Riêng tư &amp; Bảo mật kiểm soát đăng nhập Google tự động"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"Không đăng nhập tự động"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Tự động điền sẽ sử dụng tiểu sử của bạn để giúp bạn hoàn thành biểu mẫu web chỉ bằng một cú nhấp chuột."</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Tự động điền sẽ sử dụng tiểu sử của bạn để giúp bạn hoàn thành biểu mẫu web chỉ bằng một cú nhấp chuột."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Tên đầy đủ:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Email:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Tên công ty:"</string>
@@ -195,9 +203,10 @@
     <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_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="4337372830506338827">"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="3706426217720202898">"Tắt Tự động điền"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"Quyền riêng tư &amp; Bảo mật"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <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 -&amp;gt; Cài đặt cá nhân."</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"Tắt Tự động điền"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Quyền riêng tư &amp; Bảo mật"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Xoá bộ nhớ cache"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Xoá nội dung và cơ sở dữ liệu được lưu trong bộ nhớ cache cục bộ"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"Nội dung và cơ sở dữ liệu được lưu trong bộ nhớ cache cục bộ sẽ bị xoá."</string>
@@ -270,10 +279,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Mã hoá văn bản"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"Lab"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"Điều khiển nhanh"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"Ấn ngón tay từ cạnh trái hoặc phải để truy cập điều khiển nhanh"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"Trang chủ được truy cập nhiều nhất"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"Đặt trang chủ của bạn để hiển thị các trang được truy cập nhiều nhất."</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Các điều khiển nhanh"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Trượt ngón tay từ cạnh trái hoặc phải để truy cập điều khiển nhanh"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Trang chủ được truy cập nhiều nhất"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Đặt trang chủ của bạn để hiển thị các trang được truy cập nhiều nhất."</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <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>
@@ -317,6 +330,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Thẻ SD không khả dụng"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Thẻ SD đang bận. Để cho phép tải xuống, hãy chọn \"Tắt bộ bộ nhớ USB\" trong thông báo."</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"Thẻ SD đang bận. Để cho phép tải xuống, hãy chọn \"Tắt bộ lưu trữ USB\" trong thông báo."</string>
+    <string name="cannot_download" msgid="8150552478556798780">"Chỉ có thể tải xuống URL \"http\" hoặc \"https\"."</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"Không thể mở tệp"</string>
     <string name="retry" msgid="1835923075542266721">"Thử lại"</string>
     <string name="no_downloads" msgid="3947445710685021498">"Lịch sử tải xuống trống."</string>
@@ -365,9 +379,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Chọn tài khoản"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Đồng bộ hóa với tài khoản Google"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Dấu trang Android của bạn không được kết hợp với tài khoản Google"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"Xóa dấu trang Android của bạn"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Dấu trang Android của bạn không được kết hợp với tài khoản Google"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Xóa dấu trang Android của bạn"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Thêm dấu trang Android của bạn vào dấu trang cho <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Chia sẻ"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Không có thêm tab nào"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-xlarge/dimensions.xml b/res/values-xlarge/dimensions.xml
index 27c1ce2..613c133 100644
--- a/res/values-xlarge/dimensions.xml
+++ b/res/values-xlarge/dimensions.xml
@@ -17,6 +17,7 @@
     <dimen name="widgetHorizontalSpacing">14dip</dimen>
     <dimen name="widgetVerticalSpacing">12dip</dimen>
     <dimen name="favicon_padded_size">28dip</dimen>
+    <dimen name="add_bookmark_width">500dip</dimen>
     <!-- For the most visited page -->
     <dimen name="mv_max_width">1010dp</dimen>
     <dimen name="mv_item_width">231dp</dimen>
diff --git a/res/values-xlarge/integers.xml b/res/values-xlarge/integers.xml
new file mode 100644
index 0000000..abdafbf
--- /dev/null
+++ b/res/values-xlarge/integers.xml
@@ -0,0 +1,19 @@
+<?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:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- The number of lines in the suggestions dropdown in landscape -->
+    <integer name="max_suggest_lines_landscape">5</integer>
+    <!-- The number of lines in the suggestions dropdown in portrait -->
+    <integer name="max_suggest_lines_portrait">12</integer>
+</resources>
diff --git a/res/values-xlarge/styles.xml b/res/values-xlarge/styles.xml
deleted file mode 100644
index 473b170..0000000
--- a/res/values-xlarge/styles.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- *
- * Copyright 2006,2007,2008 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>
-    <style name="BrowserTheme" parent="@android:Theme.Holo">
-        <item name="android:windowBackground">@color/white</item>
-        <item name="android:colorBackground">#FFFFFFFF</item>
-        <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>
-    </style>
-    <style name="Dialog" parent="@android:style/Theme.Holo.Dialog" >
-        <item name="android:windowActionBar">false</item>
-    </style>
-    <style name="BookmarkTheme" parent="@android:Theme.Holo">
-        <item name="android:windowActionBar">false</item>
-        <item name="android:windowNoTitle">true</item>
-        <item name="android:colorBackgroundCacheHint">@null</item>
-        <item name="android:windowFrame">@null</item>
-        <item name="android:windowContentOverlay">@null</item>
-        <item name="android:windowIsFloating">true</item>
-        <item name="android:backgroundDimEnabled">false</item>
-        <item name="android:windowIsTranslucent">true</item>
-    </style>
-    <style name="ShortCutTheme" parent="@android:Theme.Holo">
-    </style>
-    <style name="ActionBarStyle">
-        <item name="android:height">56dip</item>
-        <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.Light.AutoCompleteTextView">
-    </style>
-    <style name="SuggestionLineMedium"
-            parent="@android:style/TextAppearance.Holo.Medium.Inverse">
-        <item name="android:textSize">16sp</item>
-    </style>
-    <style name="SuggestionLineSmall"
-            parent="@android:style/TextAppearance.Holo.Small.Inverse">
-        <item name="android:textSize">12sp</item>
-    </style>
-</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 16bee5c..f1fc414 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"浏览器"</string>
     <string name="choose_upload" msgid="3649366287575002063">"选择要上传的文件"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"列表"</string>
     <string name="current_page" msgid="7510129573681663135">"来源 "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"将会删除书签“<xliff:g id="BOOKMARK">%s</xliff:g>”。"</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"在新窗口中打开"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"在新窗口中打开全部书签"</string>
     <string name="goto_dot" msgid="3895839050522602723">"转至"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"打开新的隐身标签页"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"另存为网络存档"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"网络存档已保存。"</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"无法保存网络存档。"</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"另存为网络存档"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"网络存档已保存。"</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"保存网络存档失败。"</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"网页内容设置"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"载入图片"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"显示网页上的图片"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"阻止弹出式窗口"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"阻止弹出式窗口"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"启用 JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"在后方打开"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"启用插件"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"关"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"在当前窗口后方打开新窗口"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"设置主页"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"设置主页"</string>
     <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>
@@ -158,7 +158,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"调整网页版面以适合屏幕大小"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"常规"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"同步"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"自动填充"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"自动填充"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"与谷歌浏览器同步"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"在 Android 浏览器和谷歌浏览器之间共享书签和其他数据"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google 帐户"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"在 Android 浏览器和谷歌浏览器之间同步书签"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"开始同步"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"选择要与其共享数据的 Google 帐户"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"表单自动填充"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"表单自动填充"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"只需点击一下,即可填完网络表单"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"自动填充设置"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"设置和管理自动填充表单的数据"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"自动填充设置"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"设置和管理自动填充表单的数据"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"自动登录 Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"未找到帐户"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"使用 <xliff:g id="ID_1">%s</xliff:g> 自动登录 Google 网站"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"使用 <xliff:g id="ID_1">%s</xliff:g> 登录 Google 网站"\n"您的“隐私权与安全”设置会控制 Google 自动登录功能"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"不自动登录"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"只需点击一下,自动填充功能即可使用您的个人资料帮助您完成网络表单。"</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"只需点击一下,自动填充功能即可使用您的个人资料帮助您完成网络表单。"</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"全名:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"电子邮件地址:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"公司名称:"</string>
@@ -194,9 +201,10 @@
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"个人资料已删除"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"删除个人资料"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"浏览器可自动填充网络表单(例如该表单)。您希望设置个人资料吗?"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="4337372830506338827">"您可以随时通过“浏览器设置”对自动填充功能进行配置。"</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"停用自动填充"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"隐私与安全"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"您可以随时通过“浏览器设置”-&amp;gt;“个人设置”对自动填充功能进行配置。"</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"停用自动填充"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"隐私与安全"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"清除缓存"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"清除存储在本地缓存中的内容和数据库"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"此操作将会刪除存储在本地缓存中的内容和数据库。"</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"文字编码"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"实验室"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"快速控制"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"从左侧或右侧边缘滑动拇指以使用快速控制"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"“访问最多”首页"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"设置您的主页,以显示访问最多的页面。"</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"快速控制"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"从左边缘或右边缘滑动拇指可访问快速控制"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"“访问最多”首页"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"设置您的主页,以显示访问最多的页面。"</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"数据连接性问题"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"文件有问题"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"确认"</string>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"SD 卡不可用"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"USB 存储设备正忙。要允许下载,请在通知中选择“关闭 USB 存储设备”。"</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"SD 卡正忙。要允许下载,请在通知中选择“关闭 USB 存储设备”。"</string>
+    <string name="cannot_download" msgid="8150552478556798780">"只能从“http”或“https”网址下载。"</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"无法打开文件"</string>
     <string name="retry" msgid="1835923075542266721">"重试"</string>
     <string name="no_downloads" msgid="3947445710685021498">"下载历史记录为空。"</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"选择帐户"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"与 Google 帐户同步"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"Android 书签尚未与 Google 帐户关联"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"删除 Android 书签"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Android 书签尚未与 Google 帐户关联"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"删除 Android 书签"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"将 Android 书签添加到 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> 的书签中"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"分享"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"没有更多标签可用"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index e5df8ec..311341f 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -18,6 +18,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="1935869255545976415">"瀏覽器"</string>
     <string name="choose_upload" msgid="3649366287575002063">"選擇要上載的檔案"</string>
+    <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>
@@ -97,7 +98,6 @@
     <string name="bookmark_list_view" msgid="7848510619500937839">"清單"</string>
     <string name="current_page" msgid="7510129573681663135">"來源 "</string>
     <string name="delete_bookmark_warning" msgid="758043186202032205">"刪除「<xliff:g id="BOOKMARK">%s</xliff:g>」書籤?"</string>
-    <string name="open_in_new_window" msgid="6596775546468054510">"在新視窗開啟"</string>
     <string name="open_all_in_new_window" msgid="6514602245828366045">"於新視窗開啟所有書籤"</string>
     <string name="goto_dot" msgid="3895839050522602723">"前往"</string>
     <string name="incognito_tab" msgid="5419458065370134289">"開啟新的無痕式分頁"</string>
@@ -110,9 +110,9 @@
     <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_save_webarchive" msgid="3934652434001459581">"另存為網頁封存"</string>
-    <string name="webarchive_saved" msgid="7045250341467345007">"已儲存網頁封存。"</string>
-    <string name="webarchive_failed" msgid="2880998204746620260">"無法儲存網頁封存。"</string>
+    <!-- outdated translation 8958653585486282458 -->     <string name="menu_save_webarchive" msgid="2474117375302625691">"另存為網頁封存"</string>
+    <!-- outdated translation 5802751653711363507 -->     <string name="webarchive_saved" msgid="2212053339474523406">"已儲存網頁封存。"</string>
+    <!-- outdated translation 2203934475956524304 -->     <string name="webarchive_failed" msgid="19950914584285713">"無法儲存網頁封存。"</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>
@@ -137,7 +137,7 @@
     <string name="pref_content_title" msgid="722227111894838633">"頁面內容設定"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"載入圖片"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"顯示網頁上的圖片"</string>
-    <string name="pref_content_block_popups" msgid="7808433807197256726">"封鎖快顯視窗"</string>
+    <!-- outdated translation 6871160654981179930 -->     <string name="pref_content_block_popups" msgid="4158524847764470895">"封鎖彈出式視窗"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"啟用 JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"在背景中開啟"</string>
     <string name="pref_content_plugins" msgid="7231944644794301582">"啟用外掛程式"</string>
@@ -147,7 +147,7 @@
     <item msgid="8547442717307793863">"關閉"</item>
   </string-array>
     <string name="pref_content_open_in_background_summary" msgid="1737664075721181678">"在目前視窗的後面開啟新視窗"</string>
-    <string name="pref_content_homepage" msgid="6082437160778559806">"設定首頁"</string>
+    <!-- outdated translation 6044903119907405007 -->     <string name="pref_content_homepage" msgid="3324574611613105696">"設定首頁"</string>
     <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>
@@ -158,7 +158,7 @@
     <string name="pref_content_autofit_summary" msgid="4587831659894879986">"配合螢幕大小調整網頁版面"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"一般設定"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"同步處理"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"自動填入功能"</string>
+    <!-- outdated translation 64638897890112873 -->     <string name="pref_general_autofill_title" msgid="547881256865816858">"自動填入功能"</string>
     <string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"與Google 瀏覽器保持同步"</string>
     <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"共享「Android 瀏覽器」和「Google 瀏覽器」之間的書籤及其他資料"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Google 帳戶"</string>
@@ -166,16 +166,23 @@
     <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"同步處理「Android 瀏覽器」和「Google 瀏覽器」之間的書籤"</string>
     <string name="pref_personal_start_syncing" msgid="6046972042512655232">"開始同步"</string>
     <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"請選取要與其共用的 Google 帳戶"</string>
-    <string name="pref_autofill_enabled" msgid="1174197447388234595">"表單自動填入"</string>
+    <!-- outdated translation 6232595328320275079 -->     <string name="pref_autofill_enabled" msgid="1015751713312396713">"表單自動填入"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"輕按一下即可填妥網頁表單"</string>
-    <string name="pref_autofill_profile_editor" msgid="1350709161524642663">"自動填入設定"</string>
-    <string name="pref_autofill_profile_editor_summary" msgid="6748434431641768870">"設定和管理自動填入的表單資料"</string>
+    <!-- outdated translation 6255415691259466907 -->     <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"自動填入設定"</string>
+    <!-- outdated translation 6606678927956330022 -->     <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"設定和管理自動填入的表單資料"</string>
     <string name="pref_autologin_title" msgid="2362827272595366379">"自動登入 Google"</string>
     <string name="pref_autologin_no_account" msgid="4409223615542478868">"找不到帳戶"</string>
     <string name="pref_autologin_summary" msgid="8168866316823968574">"自動使用 <xliff:g id="ID_1">%s</xliff:g> 登入 Google 網站"</string>
-    <string name="pref_autologin_progress" msgid="8643826219376543293">"使用 <xliff:g id="ID_1">%s</xliff:g> 登入 Google 網站"\n"可讓您運用「隱私權與安全性」設定來控制 Google 自動登入程序"</string>
+    <!-- no translation found for pref_autologin_progress (4975430912641403743) -->
+    <skip />
     <string name="pref_autologin_disable" msgid="3342145058494577628">"不要自動登入"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"自動填入功能會運用您的設定檔,讓您輕按一下即可填妥網頁表單。"</string>
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
+    <skip />
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
+    <skip />
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
+    <skip />
+    <!-- outdated translation 376355900106687672 -->     <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"自動填入功能會運用您的個人資料,讓您輕按一下即可填妥網頁表單。"</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"全名:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"電子郵件:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"公司名稱:"</string>
@@ -194,9 +201,10 @@
     <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"個人資料已刪除"</string>
     <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"刪除設定檔"</string>
     <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"瀏覽器可以自動填寫這類網路表單,您要建立個人資料嗎?"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="4337372830506338827">"您可隨時透過 [瀏覽器設定] 設定自動填入功能。"</string>
-    <string name="disable_autofill" msgid="3706426217720202898">"停用自動填入功能"</string>
-    <string name="pref_privacy_security_title" msgid="1705642466867300373">"隱私權與安全性"</string>
+    <!-- unknown quoting pattern: original -1, translation 1 -->
+    <!-- outdated translation 8606640740851832808 -->     <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"您可隨時透過 [瀏覽器設定] -&amp;gt; [個人設定] 自訂自動填入功能。"</string>
+    <!-- outdated translation 3706426217720202898 -->     <string name="disable_autofill" msgid="8305901059849400354">"停用自動填入功能"</string>
+    <!-- outdated translation 1705642466867300373 -->     <string name="pref_privacy_security_title" msgid="3480313968942160914">"隱私權與安全性"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"清除快取"</string>
     <string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"清除本機快取內容與資料庫"</string>
     <string name="pref_privacy_clear_cache_dlg" msgid="5541011591300753881">"即將刪除本機快取內容與資料庫。"</string>
@@ -269,10 +277,14 @@
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"文字編碼"</string>
     <string name="pref_lab_title" msgid="5571091610359629423">"研究室"</string>
-    <string name="pref_lab_quick_controls" msgid="2105979166017257647">"快速控制項"</string>
-    <string name="pref_lab_quick_controls_summary" msgid="8025196176636589803">"從左側或右側邊緣滑動拇指即可存取快速控制項"</string>
-    <string name="pref_lab_most_visited_homepage" msgid="547134501893835512">"以造訪最多的網頁為首頁"</string>
-    <string name="pref_lab_most_visited_homepage_summary" msgid="6857702350834122532">"將造訪次數最多的網頁設為您要顯示的首頁。"</string>
+    <!-- outdated translation 1617774508416113544 -->     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"快速控制項"</string>
+    <!-- outdated translation 1067572298315336767 -->     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"於左右邊緣滑動拇指即可使用快速控制項"</string>
+    <!-- outdated translation 547134501893835512 -->     <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"以造訪最多的網頁為首頁"</string>
+    <!-- outdated translation 6857702350834122532 -->     <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"將造訪次數最多的網頁設為您要顯示的首頁。"</string>
+    <!-- no translation found for pref_use_instant_search (1119176077760723740) -->
+    <skip />
+    <!-- no translation found for pref_use_instant_search_summary (839320474961917522) -->
+    <skip />
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"資料連線問題"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"檔案有問題"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"確認"</string>
@@ -316,6 +328,7 @@
     <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"無法使用 SD 卡"</string>
     <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"USB 儲存裝置忙碌中。如要允許下載,請選取通知中的 [關閉 USB 儲存裝置]。"</string>
     <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"SD 記憶卡忙碌中。如要允許下載,請選取通知中的 [停用 USB 儲存裝置]。"</string>
+    <string name="cannot_download" msgid="8150552478556798780">"僅可下載「http」或「https」網址的檔案。"</string>
     <string name="download_no_application_title" msgid="1286056729168874295">"無法開啟檔案"</string>
     <string name="retry" msgid="1835923075542266721">"重試"</string>
     <string name="no_downloads" msgid="3947445710685021498">"下載記錄是空的。"</string>
@@ -364,9 +377,29 @@
     <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
     <string name="account_chooser_dialog_title" msgid="3314204833188808194">"選擇帳戶"</string>
     <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"與 Google 帳戶保持同步"</string>
-    <string name="import_bookmarks_dialog_description" msgid="2187665745413495303">"您的 Android 書籤未與任何 Google 帳戶建立關聯"</string>
-    <string name="import_bookmarks_dialog_remove" msgid="8105572409059113340">"移除您的 Android 書籤"</string>
+    <!-- outdated translation 5980294599524497571 -->     <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"您的 Android 書籤未與任何 Google 帳戶建立關聯"</string>
+    <!-- no translation found for import_bookmarks_dialog_select_add_account (3102882579089291099) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_delete_select_account (5192284761080626386) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_delete (8854001080444749211) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_confirm_add (5433677293195372675) -->
+    <skip />
+    <!-- outdated translation 3129431452739803471 -->     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"移除您的 Android 書籤"</string>
+    <!-- no translation found for import_bookmarks_wizard_next (7578143961884352676) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_previous (8551440353688257031) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_cancel (4936061122806506634) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_wizard_done (1446247092194489191) -->
+    <skip />
+    <!-- no translation found for import_bookmarks_dialog_add (7552306756868669353) -->
+    <skip />
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"將您的 Android 書籤新增至 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> 的書籤"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"分享"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"已無分頁可供使用"</string>
+    <!-- no translation found for instant_search_label (8769284297650716935) -->
+    <skip />
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 68b58f7..73daa07 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -29,10 +29,9 @@
     <color name="bookmarkWidgetDivider">#383847</color>
     <color name="bookmarkWidgetItemBackground">#2b2b3c</color>
     <color name="bookmarkWidgetFolderBackground">#A0383847</color>
-    <color name="qc_slice_normal">#E0A0A0A0</color>
-    <color name="qc_slice_active">#E02090FF</color>
     <color name="bookmarkWidgetFaviconBackground">#23ffffff</color>
     <color name="bookmarkListFaviconBackground">#23ffffff</color>
-    <color name="urlTextColor">#0E774A</color>
     <color name="tabFaviconBackground">#FF555555</color>
+    <color name="tabFocusHighlight">#FF99CC00</color>
+    <color name="qcMenuBackground">#C0000000</color>
 </resources>
diff --git a/res/values/dimensions.xml b/res/values/dimensions.xml
index 300714b..e92828e 100644
--- a/res/values/dimensions.xml
+++ b/res/values/dimensions.xml
@@ -20,18 +20,23 @@
     <dimen name="tab_overlap">8dp</dimen>
     <dimen name="tab_addoverlap">14dp</dimen>
     <dimen name="tab_slice">15.5dp</dimen>
-    <dimen name="tab_padding">16dp</dimen>
+    <dimen name="tab_focus_stroke">2dip</dimen>
     <dimen name="max_tab_width">300dp</dimen>
     <dimen name="bookmarkThumbnailWidth">90dip</dimen>
     <dimen name="bookmarkThumbnailHeight">80dip</dimen>
-    <dimen name="add_bookmark_width">500dip</dimen>
-    <dimen name="folder_selector_height">230dip</dimen>
+    <!-- Height determined by measuring the TableLayout in
+        browser_add_bookmark_content and matching that. -->
+    <dimen name="folder_selector_height">181dip</dimen>
     <dimen name="widgetItemMinHeight">48dip</dimen>
     <dimen name="favicon_size">16dip</dimen>
     <dimen name="favicon_padded_size">20dip</dimen>
-    <dimen name="qc_radius">130dip</dimen>
-    <dimen name="qc_radius_inc">100dip</dimen>
+    <dimen name="qc_radius_start">50dip</dimen>
+    <dimen name="qc_radius_increment">60dip</dimen>
     <dimen name="qc_slop">15dip</dimen>
+    <dimen name="qc_tab_title_height">30dip</dimen>
+    <dimen name="qc_thumb_width">240dip</dimen>
+    <dimen name="qc_thumb_height">160dip</dimen>
+    <dimen name="qc_item_size">48dip</dimen>
     <dimen name="bookmark_widget_thumb_size">32dip</dimen>
     <dimen name="bookmark_widget_favicon_size">26dip</dimen>
     <!-- For the most visited page -->
@@ -44,5 +49,11 @@
     <dimen name="list_favicon_padding">5dip</dimen>
     <dimen name="list_favicon_corner_radius">3dip</dimen>
     <dimen name="tab_favicon_corner_radius">2dip</dimen>
-    <dimen name="dropdown_offset">8dip</dimen>
+    <dimen name="widgetThumbnailHeight">104dip</dimen>
+    <dimen name="widgetHorizontalSpacing">14dip</dimen>
+    <dimen name="widgetVerticalSpacing">12dip</dimen>
+    <!-- For the combined Bookmarks History view -->
+    <dimen name="combo_paddingTop">10dip</dimen>
+    <dimen name="combo_paddingLeftRight">16dip</dimen>
+    <dimen name="combo_horizontalSpacing">8dip</dimen>
 </resources>
diff --git a/res/values/integers.xml b/res/values/integers.xml
index a0b7ae3..ad0ed90 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -15,7 +15,7 @@
     <!-- The number of lines in the suggestions dropdown in landscape -->
     <integer name="max_suggest_lines_landscape">5</integer>
     <!-- The number of lines in the suggestions dropdown in portrait -->
-    <integer name="max_suggest_lines_portrait">12</integer>
+    <integer name="max_suggest_lines_portrait">4</integer>
     <!--  The maximum number of open tabs -->
     <integer name="max_tabs">16</integer>
     <!--  The duration of the tab animations in millisecs  -->
@@ -23,4 +23,8 @@
     <integer name="max_width_crumb">200</integer>
     <!-- The maximum number of most visited URLs in the history tab -->
     <integer name="most_visits_limit">10</integer>
+    <!-- Animation durations -->
+    <integer name="comboViewFadeInDuration">400</integer>
+    <!--  fade between tabs duration -->
+    <integer name="tabFadeDuration">300</integer>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 50b71a4..5a8a110 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -18,6 +18,9 @@
     <string name="application_name">Browser</string>
     <!-- Displayed with a file picker to choose a file to upload -->
     <string name="choose_upload">Choose file for upload</string>
+    <!-- Toast to show the user after they try to open the file picker but no apps on the
+         system can provide a file [CHAR-LIMIT=NONE]-->
+    <string name="uploads_disabled">File uploads are disabled.</string>
     <!-- Name of menu item of a new tab.  Also used in the title bar when displaying a new tab -->
     <string name="new_tab">New window</string>
     <!-- Name of menu item of a new incognito tab.  Also used in the
@@ -204,8 +207,6 @@
     <!-- Confirmation dialog message confirming that the user wishes to delete
             the bookmark they selected for deletion -->
     <string name="delete_bookmark_warning">Bookmark \"<xliff:g id="bookmark">%s</xliff:g>\" will be deleted.</string>
-    <!-- Context Menu item to open the selected link in a new window -->
-    <string name="open_in_new_window">Open in new window</string>
     <!-- Context menu item to open every bookmark in a folder in new windows [CHAR LIMIT=50] -->
     <string name="open_all_in_new_window">Open all in new windows</string>
     <!-- Menu item to open a dialog which allows the user to enter a url or do search-->
@@ -232,12 +233,12 @@
     <string name="copy_page_url">Copy page url</string>
     <!-- Menu item -->
     <string name="share_page">Share page</string>
-    <!-- Menu item for saving a page as a web archive. -->
-    <string name="menu_save_webarchive">Save as Web Archive</string>
-    <!-- Toast informing the user that the page has been saved. -->
-    <string name="webarchive_saved">Web archive saved.</string>
-    <!-- Toast informing the user that saving the page has failed. -->
-    <string name="webarchive_failed">Failed to save web archive.</string>
+    <!-- Menu item for saving a page. [CHAR LIMIT=30] -->
+    <string name="menu_save_webarchive">Save page</string>
+    <!-- Toast informing the user that the page has been saved. [CHAR LIMIT=50] -->
+    <string name="webarchive_saved">Page saved.</string>
+    <!-- Toast informing the user that saving the page has failed. [CHAR LIMIT=50] -->
+    <string name="webarchive_failed">Failed to save page.</string>
     <!-- The number of bookmarks in a folder [CHAR LIMT=50] -->
     <string name="contextheader_folder_bookmarkcount"><xliff:g id="bookmark_count">%d</xliff:g> bookmarks</string>
     <!-- No bookmarks in the folder [CHAR LIMIT=50] -->
@@ -307,8 +308,8 @@
     <string name="pref_content_load_images">Load images</string>
     <!-- Settings label -->
     <string name="pref_content_load_images_summary">Display images on web pages</string>
-    <!-- Settings label -->
-    <string name="pref_content_block_popups">Block pop-up windows</string>
+    <!-- Settings label [CHAR LIMIT=30] -->
+    <string name="pref_content_block_popups">Block pop-ups</string>
     <!-- Settings label -->
     <string name="pref_content_javascript">Enable JavaScript</string>
     <!-- Settings label -->
@@ -328,8 +329,8 @@
     </string-array>
     <!-- Settings summary [CHAR LIMIT=50]-->
     <string name="pref_content_open_in_background_summary">Open new windows behind the current one</string>
-    <!-- Settings label -->
-    <string name="pref_content_homepage">Set home page</string>
+    <!-- Settings label [CHAR LIMIT=50] -->
+    <string name="pref_content_homepage">Set homepage</string>
     <!-- Settings label -->
     <string name="pref_content_search_engine">Set search engine</string>
     <!-- Settings summary -->
@@ -353,7 +354,7 @@
     <!-- Settings category for sync under general settings. This includes bookmark sync with Chrome [CHAR-LIMIT=50] -->
     <string name="pref_general_sync_title">Sync</string>
     <!-- Settings category for autofill under general. [CHAR-LIMIT=50] -->
-    <string name="pref_general_autofill_title">Autofill</string>
+    <string name="pref_general_autofill_title">Auto-fill</string>
     <!-- Checkbox setting to enable or disable syncing bookmarks and other data with Google Chrome. [CHAR-LIMIT=48] -->
     <string name="pref_personal_sync_with_chrome">Sync with Google Chrome</string>
     <!-- Checkbox setting to enable or disable syncing bookmarks and other data with Google Chrome. [CHAR-LIMIT=none] -->
@@ -370,13 +371,13 @@
     <string name="pref_personal_account_dialog_title">Select Google account to share with</string>
 
     <!-- Checkbox setting for enabling/disabling the form AutoFill feature [CHAR-LIMIT=32] -->
-    <string name="pref_autofill_enabled">Form AutoFill</string>
+    <string name="pref_autofill_enabled">Form auto-fill</string>
     <!-- Settings summary for the form AutoFill feature. [CHAR-LIMIT=none] -->
     <string name="pref_autofill_enabled_summary">Fill out web forms in a single click</string>
     <!-- Label for option that when clicked opens the AutoFill settings screen. Also used as the title of that AutoFill Settings screen. [CHAR-LIMIT=32] -->
-    <string name="pref_autofill_profile_editor">AutoFill Settings</string>
+    <string name="pref_autofill_profile_editor">Auto-fill data</string>
     <!-- Summary for the AutoFill Settings preference [CHAR-LIMIT=none] -->
-    <string name="pref_autofill_profile_editor_summary">Set up &amp; manage data for AutoFilled forms</string>
+    <string name="pref_autofill_profile_editor_summary">Enter and save data for auto-filling web form fields</string>
 
     <!-- Auto login preference title [CHAR-LIMIT=32] -->
     <string name="pref_autologin_title">Automatic Google sign-in</string>
@@ -385,12 +386,18 @@
     <!-- Summary when there is an account available [CHAR-LIMIT=none] -->
     <string name="pref_autologin_summary">Sign into Google sites automatically using <xliff:g>%s</xliff:g></string>
     <!-- Message shown during auto login [CHAR-LIMIT=none] -->
-    <string name="pref_autologin_progress">Signing into Google sites using <xliff:g>%s</xliff:g>\nYour Privacy &amp; Security settings control automatic Google sign-in</string>
+    <string name="pref_autologin_progress">Signing into Google sites using <xliff:g>%s</xliff:g>\nYour privacy &amp; security settings control automatic Google sign-in</string>
     <!-- Option in account list to disable autologin [CHAR-LIMIT=50] -->
     <string name="pref_autologin_disable">Don\'t sign in automatically</string>
+    <!-- Auto-login bar description [CHAR-LIMIT=40] -->
+    <string name="autologin_bar_text">Automatic sign-in is available.</string>
+    <!-- Login button [CHAR-LIMIT=10] -->
+    <string name="autologin_bar_login_text">Login</string>
+    <!-- Login failure text [CHAR-LIMIT=25] -->
+    <string name="autologin_bar_error">Login failed.</string>
 
     <!-- Heading for the AutoFill profile editor to tell the user what AutoFill does and why they should fill out the profile. [CHAR-LIMIT=None] -->
-    <string name="autofill_profile_editor_heading">AutoFill will use your profile to help you complete web forms in a single click.</string>
+    <string name="autofill_profile_editor_heading">Enter the data you want to auto-fill in web fields when you touch them.</string>
     <!-- String for the user's full name in the AutoFill profile editor. [CHAR-LIMIT=32] -->
     <string name="autofill_profile_editor_name">Full name:</string>
     <!-- String for the user's e-mail address in the AutoFill profile editor. [CHAR-LIMIT=32] -->
@@ -431,13 +438,13 @@
     <string name="autofill_setup_dialog_message">Browser can automatically complete web forms like this one. Would you like to set up your profile?</string>
     <!-- Toast message displayed when the user decides to not set up autofill at this time. We want to remind them that they can configure
          it through the Browser Settings menu. [CHAR-LIMIT=NONE] -->
-    <string name="autofill_setup_dialog_negative_toast">AutoFill can always be configured through Browser Settings.</string>
+    <string name="autofill_setup_dialog_negative_toast">Auto-fill can always be configured through Browser Settings.</string>
     <!-- Text on a checkbox in the "setup autofill" dialog which is shown to the user when they are prompted to set up the autofill feature.
          The checkbox allows them to specify they would like to disable the feature altogether [CHAR-LIMIT=NONE] -->
-    <string name="disable_autofill">Disable AutoFill</string>
+    <string name="disable_autofill">Disable auto-fill</string>
 
     <!-- Settings screen, section title [CHAR-LIMIT=50] -->
-    <string name="pref_privacy_security_title">Privacy &amp; Security</string>
+    <string name="pref_privacy_security_title">Privacy &amp; security</string>
     <!-- Settings label -->
     <string name="pref_privacy_clear_cache">Clear cache</string>
     <!-- Settings summary -->
@@ -573,6 +580,8 @@
     <!-- Do not tranlsate.  Development option -->
     <string name="pref_development_hardware_accel" translatable="false">Enable OpenGL Rendering</string>
     <!-- Do not tranlsate.  Development option -->
+    <string name="pref_development_visual_indicator" translatable="false">Enable Visual Indicator</string>
+    <!-- Do not tranlsate.  Development option -->
     <string name="js_engine_flags" translatable="false">Set JS flags</string>
     <!-- Do not tranlsate.  Development option -->
     <string name="pref_development_uastring" translatable="false">UAString</string>
@@ -625,15 +634,21 @@
     <!-- Title for lab settings [CHAR LIMIT=25] -->
     <string name="pref_lab_title">Labs</string>
     <!-- Title for lab quick controls feature [CHAR LIMIT=40] -->
-    <string name="pref_lab_quick_controls">Quick Controls</string>
+    <string name="pref_lab_quick_controls">Quick controls</string>
     <!-- Summary for lab quick controls feature [CHAR LIMIT=80] -->
     <string name="pref_lab_quick_controls_summary">
-        Swipe thumb from left or right edge to access quick controls</string>
+        Swipe thumb from left or right edge to access quick controls and hide Application and URL bars</string>
     <!-- Title for lab "Most Visited" homepage feature [CHAR LIMIT=40] -->
-    <string name="pref_lab_most_visited_homepage">Most Visited Homepage</string>
+    <string name="pref_lab_most_visited_homepage">Most-visited homepage</string>
     <!-- Summary for lab "Most Visited" homepage feature [CHAR LIMIT=80] -->
     <string name="pref_lab_most_visited_homepage_summary">
-        Sets your homepage to show the most visited pages.</string>
+        Your homepage displays your most-visited webpages.</string>
+    <!-- Title for the "Instant search" lab feature [CHAR LIMIT=40] -->
+    <string name="pref_use_instant_search">Google Instant</string>
+    <!-- Summary for the "Instant search" lab feature [CHAR LIMIT=120] -->
+    <string name="pref_use_instant_search_summary">
+      Use Google Instant when you use Google Search, to show results as you
+      type (this can increase data use).</string>
     <!-- Title for a dialog displayed when the browser has a data connectivity
             problem -->
     <string name="browserFrameNetworkErrorLabel">Data connectivity problem</string>
@@ -749,6 +764,8 @@
             the user how to enable SD card storage -->
     <string name="download_sdcard_busy_dlg_msg" product="default">The SD card is busy. To allow downloads, select \"Turn off USB storage\" in the notification.</string>
 
+    <!-- Toast for a download which cannot begin because the URL is not http or https -->
+    <string name="cannot_download">Can only download \"http\" or \"https\" URLs.</string>
     <!-- Title for a dialog informing the user that there is no application on
             the phone that can open the file that was downloaded -->
     <string name="download_no_application_title">Cannot open file</string>
@@ -804,7 +821,10 @@
             user signs up the device with a Google sites account, the site's
             domain will be appended. -->
     <string name="homepage_base" translatable="false">
-        http://www.google.com/webhp?client={CID}&amp;source=android-home</string>
+        http://www.google.com/webhp?client=ms-{CID}&amp;source=android-home</string>
+    <!-- The default url for the instant_base_page. -->
+    <string name="instant_base" translatable="false">
+        http://www.google.com/webhp?client=ms-{CID}&amp;source=android-omnibox-instant&amp;ion=1</string>
 
     <!-- Bookmarks -->
     <string-array name="bookmarks" translatable="false">
@@ -819,7 +839,7 @@
         <item>Twitter</item>
         <item>http://twitter.com/</item>
         <item>Facebook</item>
-        <item>http://www.facebook.com/?m2w</item>
+        <item>http://www.facebook.com/</item>
         <item>Wikipedia</item>
         <item>http://www.wikipedia.org/</item>
         <item>eBay</item>
@@ -831,7 +851,7 @@
         <item>ESPN</item>
         <item>http://espn.com/</item>
         <item>Amazon</item>
-        <item>http://www.amazon.com/?force-full-site=1</item>
+        <item>http://www.amazon.com/</item>
         <item>Weather Channel</item>
         <item>http://www.weather.com/</item>
         <item>BBC</item>
@@ -913,10 +933,37 @@
     <string name="import_bookmarks_dialog_title">Sync with Google account</string>
 
     <!-- Description for a dialog asking the user what they want to do with their bookmarks when adding a sync account [CHAR-LIMIT=none] -->
-    <string name="import_bookmarks_dialog_description">Your Android bookmarks are not associated with a Google account</string>
+    <string name="import_bookmarks_dialog_description">Bookmarks on this device are not yet associated with a Google account. Save these bookmarks by adding them to an account. Delete these bookmarks if you do not want to sync them.</string>
+
+    <!-- Description for selecting the account to add bookmarks to and begin syncing with [CHAR-LIMIT=none] -->
+    <string name="import_bookmarks_dialog_select_add_account">Add bookmarks currently on this device and begin syncing with Google Account</string>
+
+    <!-- Description for selecting the account to sync with and delete local bookmarks [CHAR-LIMIT=none] -->
+    <string name="import_bookmarks_dialog_delete_select_account">Delete bookmarks currently on this device and begin synchronizing with Google Account</string>
+
+    <!-- Description confirming user's choice to delete bookmarks [CHAR-LIMIT=none] -->
+    <string name="import_bookmarks_dialog_confirm_delete">Delete bookmarks currently on this device and begin synchronizing bookmarks with <xliff:g id="Google account" example="account@example.com">%s</xliff:g>.</string>
+
+    <!-- Description confirming user's choice to add bookmarks to an account [CHAR-LIMIT=none] -->
+    <string name="import_bookmarks_dialog_confirm_add">Add bookmarks currently on this device and begin synchronizing bookmarks with <xliff:g id="Google account" example="account@example.com">%s</xliff:g>.</string>
 
     <!-- Button allowing users to remove all of their existing bookmarks when setting up syncing with their bookmarks stored in Google Chrome [CHAR-LIMIT=64] -->
-    <string name="import_bookmarks_dialog_remove">Remove your Android bookmarks</string>
+    <string name="import_bookmarks_dialog_remove">Delete bookmarks</string>
+
+    <!-- Sync bookmarks wizard option to go to the next screen [CHAR-LIMIT=30] -->
+    <string name="import_bookmarks_wizard_next">Next</string>
+
+    <!-- Sync bookmarks wizard option to go to the previous screen [CHAR-LIMIT=30] -->
+    <string name="import_bookmarks_wizard_previous">Previous</string>
+
+    <!-- Sync bookmarks wizard option to cancel sync setup [CHAR-LIMIT=30] -->
+    <string name="import_bookmarks_wizard_cancel">Cancel</string>
+
+    <!-- Sync bookmarks wizard option to finish sync setup [CHAR-LIMIT=30] -->
+    <string name="import_bookmarks_wizard_done">Done</string>
+
+    <!-- Button allowing users to import all of their existing bookmarks into an account when setting up syncing with their bookmarks stored in Google Chrome [CHAR-LIMIT=64] -->
+    <string name="import_bookmarks_dialog_add">Add bookmarks to Google Account</string>
 
     <!-- Button allowing users to import all of their existing bookmarks into an account when setting up syncing with their bookmarks stored in Google Chrome [CHAR-LIMIT=64] -->
     <string name="import_bookmarks_dialog_import">Add your Android bookmarks to bookmarks for <xliff:g id="Google account" example="account@example.com">%s</xliff:g></string>
@@ -930,4 +977,8 @@
          reached. [CHAR LIMIT=50] -->
     <string name="max_tabs_warning">No more tabs available</string>
 
+    <!-- The label used by the instant search labs feature when shown in
+         the search engines list (Preferences->Advanced->Set search engine
+         [CHAR LIMIT=80] -->
+    <string name="instant_search_label">Google with Instant (Labs)</string>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index a4a27cc..8d222f4 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -18,20 +18,48 @@
  */
 -->
 <resources>
-    <style name="BrowserTheme" parent="@android:Theme.Black">
-        <item name="android:windowNoTitle">true</item>
-        <item name="android:windowContentOverlay">@null</item>
+    <style name="BrowserTheme" parent="@android:Theme.Holo">
+        <item name="android:windowBackground">@color/white</item>
+        <item name="android:colorBackground">#FFFFFFFF</item>
+        <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>
     </style>
-    <style name="Dialog" parent="@android:style/Theme.Dialog">
-        <item name="android:background">@color/black</item>
+    <style name="DialogWhenLarge" parent="@android:style/Theme.Holo.DialogWhenLarge" >
+        <item name="android:windowActionBar">false</item>
+    </style>
+    <style name="BookmarkTheme" parent="@android:Theme.Holo">
+        <item name="android:windowActionBar">false</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:colorBackgroundCacheHint">@null</item>
+        <item name="android:windowFrame">@null</item>
+        <item name="android:windowContentOverlay">@null</item>
+        <item name="android:windowIsFloating">true</item>
+        <item name="android:backgroundDimEnabled">false</item>
+        <item name="android:windowIsTranslucent">true</item>
+    </style>
+    <style name="ActionBarStyle">
+        <item name="android:height">56dip</item>
+        <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.Light.AutoCompleteTextView">
+    </style>
+    <style name="SuggestionLineMedium"
+            parent="@android:style/TextAppearance.Holo.Medium.Inverse">
+        <item name="android:textSize">16sp</item>
+    </style>
+    <style name="SuggestionLineSmall"
+            parent="@android:style/TextAppearance.Holo.Small.Inverse">
+        <item name="android:textSize">12sp</item>
     </style>
     <style name="ActionBar" parent="@android:style/Widget.ActionBar">
         <item name="android:background">@color/black</item>
     </style>
-    <style name="BookmarkTheme" parent="@android:Theme.Black">
-        <item name="android:windowNoTitle">true</item>
-        <item name="android:windowContentOverlay">@null</item>
-    </style>
     <style name="ShortcutTheme" parent="@android:Theme.Holo.DialogWhenLarge">
         <item name="android:windowNoTitle">true</item>
         <item name="android:windowContentOverlay">@null</item>
@@ -56,10 +84,4 @@
         <item name="android:textColor">?android:attr/textColorSecondary</item>
         <item name="android:textStyle">normal</item>
     </style>
-    <style name="Suggestions" parent="@android:style/Widget.AutoCompleteTextView">
-    </style>
-    <style name="SuggestionLineMedium" parent="@android:style/TextAppearance.Medium">
-    </style>
-    <style name="SuggestionLineSmall" parent="@android:style/TextAppearance.Small">
-    </style>
 </resources>
diff --git a/res/xml/bookmarkthumbnailwidget_info.xml b/res/xml/bookmarkthumbnailwidget_info.xml
index 6797f85..65497cd 100644
--- a/res/xml/bookmarkthumbnailwidget_info.xml
+++ b/res/xml/bookmarkthumbnailwidget_info.xml
@@ -21,5 +21,6 @@
     android:minHeight="219dip"
     android:updatePeriodMillis="0"
     android:previewImage="@drawable/browser_widget_preview"
-    android:initialLayout="@layout/bookmarkthumbnailwidget">
+    android:initialLayout="@layout/bookmarkthumbnailwidget"
+    android:resizeMode="vertical">
 </appwidget-provider>
diff --git a/res/xml/hidden_debug_preferences.xml b/res/xml/hidden_debug_preferences.xml
index 6d66eaa..661d9de 100644
--- a/res/xml/hidden_debug_preferences.xml
+++ b/res/xml/hidden_debug_preferences.xml
@@ -20,6 +20,11 @@
     <!-- The javascript console is enabled by default when the user has
          also enabled debug mode by navigating to about:debug. -->
     <CheckBoxPreference
+        android:key="enable_visual_indicator"
+        android:defaultValue="false"
+        android:title="@string/pref_development_visual_indicator" />
+
+    <CheckBoxPreference
         android:key="javascript_console"
         android:defaultValue="true"
         android:title="@string/pref_development_error_console" />
diff --git a/res/xml/lab_preferences.xml b/res/xml/lab_preferences.xml
index 16a5169..87383b0 100644
--- a/res/xml/lab_preferences.xml
+++ b/res/xml/lab_preferences.xml
@@ -29,4 +29,9 @@
         android:title="@string/pref_lab_most_visited_homepage"
         android:summary="@string/pref_lab_most_visited_homepage_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" />
 </PreferenceScreen>
diff --git a/src/com/android/browser/AccountsChangedReceiver.java b/src/com/android/browser/AccountsChangedReceiver.java
index 92d6ad0..a34180a 100644
--- a/src/com/android/browser/AccountsChangedReceiver.java
+++ b/src/com/android/browser/AccountsChangedReceiver.java
@@ -16,6 +16,8 @@
 
 package com.android.browser;
 
+import com.android.browser.widget.BookmarkThumbnailWidgetProvider;
+
 import android.accounts.Account;
 import android.accounts.AccountManager;
 import android.content.BroadcastReceiver;
@@ -55,6 +57,7 @@
             ContentResolver.setSyncAutomatically(a, BrowserContract.AUTHORITY, false);
             ContentResolver.setIsSyncable(a, BrowserContract.AUTHORITY, 0);
         }
+        BookmarkThumbnailWidgetProvider.refreshWidgets(context, true);
     }
 
 }
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index 1444862..08f9d39 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -73,6 +73,7 @@
     // Place on an edited bookmark to remove the saved thumbnail
     public static final String REMOVE_THUMBNAIL = "remove_thumbnail";
     public static final String USER_AGENT = "user_agent";
+    public static final String CHECK_FOR_DUPE = "check_for_dupe";
 
     /* package */ static final String EXTRA_EDIT_BOOKMARK = "bookmark";
     /* package */ static final String EXTRA_IS_FOLDER = "is_folder";
@@ -86,6 +87,8 @@
     private final int LOADER_ID_ALL_FOLDERS = 1;
     private final int LOADER_ID_FIND_ROOT = 2;
     private final int LOADER_ID_CHECK_FOR_DUPE = 3;
+    private final int LOADER_ID_MOST_RECENTLY_SAVED_BOOKMARK = 4;
+    private final int LOADER_ID_FIND_FOLDER_BY_ID = 5;
 
     private EditText    mTitle;
     private EditText    mAddress;
@@ -117,6 +120,7 @@
     private Drawable mHeaderIcon;
     private View mRemoveLink;
     private View mFakeTitleHolder;
+    private FolderSpinnerAdapter mFolderAdapter;
     private static class Folder {
         String Name;
         long Id;
@@ -308,6 +312,16 @@
             case FolderSpinnerAdapter.OTHER_FOLDER:
                 switchToFolderSelector();
                 break;
+            case FolderSpinnerAdapter.RECENT_FOLDER:
+                mCurrentFolder = mFolderAdapter.recentFolderId();
+                mSaveToHomeScreen = false;
+                // In case the user decides to select OTHER_FOLDER
+                // and choose a different one, so that we will start from
+                // the correct place.
+                LoaderManager manager = getLoaderManager();
+                manager.initLoader(LOADER_ID_ALL_FOLDERS, null, this);
+                manager.restartLoader(LOADER_ID_FOLDER_CONTENTS, null, this);
+                break;
             default:
                 break;
         }
@@ -412,6 +426,18 @@
                         selection,
                         selArgs,
                         null);
+            case LOADER_ID_FIND_FOLDER_BY_ID:
+                projection = new String[] {
+                        BrowserContract.Bookmarks._ID,
+                        BrowserContract.Bookmarks.TITLE
+                };
+                return new CursorLoader(this,
+                        BookmarkUtils.getBookmarksUri(this),
+                        projection,
+                        BrowserContract.Bookmarks._ID + " = "
+                                + args.getLong(BrowserContract.Bookmarks._ID),
+                        null,
+                        null);
             case LOADER_ID_ALL_FOLDERS:
                 projection = new String[] {
                         BrowserContract.Bookmarks._ID,
@@ -420,7 +446,7 @@
                         BrowserContract.Bookmarks.IS_FOLDER
                 };
                 return new CursorLoader(this,
-                        BrowserContract.Bookmarks.CONTENT_URI,
+                        BookmarkUtils.getBookmarksUri(this),
                         projection,
                         BrowserContract.Bookmarks.IS_FOLDER + " != 0",
                         null,
@@ -442,6 +468,16 @@
                         where,
                         null,
                         BrowserContract.Bookmarks._ID + " ASC");
+            case LOADER_ID_MOST_RECENTLY_SAVED_BOOKMARK:
+                projection = new String[] {
+                        BrowserContract.Bookmarks.PARENT
+                };
+                return new CursorLoader(this,
+                        BookmarkUtils.getBookmarksUri(this),
+                        projection,
+                        BrowserContract.Bookmarks.IS_FOLDER + " = 0",
+                        null,
+                        BrowserContract.Bookmarks.DATE_CREATED + " DESC");
             default:
                 throw new AssertionError("Asking for nonexistant loader!");
         }
@@ -484,6 +520,32 @@
             case LOADER_ID_FOLDER_CONTENTS:
                 mAdapter.changeCursor(cursor);
                 break;
+            case LOADER_ID_MOST_RECENTLY_SAVED_BOOKMARK:
+                LoaderManager manager = getLoaderManager();
+                if (cursor != null && cursor.moveToFirst()) {
+                    // Find the parent
+                    long lastUsedFolder = cursor.getLong(0);
+                    if (lastUsedFolder != mRootFolder
+                            && lastUsedFolder != mCurrentFolder
+                            && lastUsedFolder != 0) {
+                        // Find out the parent's name
+                        Bundle b = new Bundle();
+                        b.putLong(BrowserContract.Bookmarks._ID, lastUsedFolder);
+                        manager.initLoader(LOADER_ID_FIND_FOLDER_BY_ID, b, this);
+                    }
+                }
+                manager.destroyLoader(LOADER_ID_MOST_RECENTLY_SAVED_BOOKMARK);
+                break;
+            case LOADER_ID_FIND_FOLDER_BY_ID:
+                if (cursor != null && cursor.moveToFirst()) {
+                    long id = cursor.getLong(cursor.getColumnIndexOrThrow(
+                            BrowserContract.Bookmarks._ID));
+                    String title = cursor.getString(cursor.getColumnIndexOrThrow(
+                            BrowserContract.Bookmarks.TITLE));
+                    mFolderAdapter.addRecentFolder(id, title);
+                }
+                getLoaderManager().destroyLoader(LOADER_ID_FIND_FOLDER_BY_ID);
+                break;
             case LOADER_ID_ALL_FOLDERS:
                 long parent = mCurrentFolder;
                 int idIndex = cursor.getColumnIndexOrThrow(
@@ -665,7 +727,8 @@
         mCancelButton.setOnClickListener(this);
 
         mFolder = (FolderSpinner) findViewById(R.id.folder);
-        mFolder.setAdapter(new FolderSpinnerAdapter(!mEditingFolder));
+        mFolderAdapter = new FolderSpinnerAdapter(!mEditingFolder);
+        mFolder.setAdapter(mFolderAdapter);
         mFolder.setOnSetSelectionListener(this);
 
         mDefaultView = findViewById(R.id.default_view);
@@ -728,7 +791,8 @@
             mCurrentFolder = mRootFolder;
         }
         setupTopCrumb();
-        if (mEditingExisting || TextUtils.isEmpty(mOriginalUrl)) {
+        if (mEditingExisting || TextUtils.isEmpty(mOriginalUrl)
+                || !(mMap != null && mMap.getBoolean(CHECK_FOR_DUPE))) {
             onCurrentFolderFound();
         } else {
             // User is attempting to bookmark a site, rather than deliberately
@@ -757,6 +821,11 @@
             mFolder.setSelectionIgnoringSelectionChange(mEditingFolder ? 1 : 2);
         } else {
             setShowBookmarkIcon(true);
+            if (!mEditingExisting) {
+                // Find the most recently saved bookmark, so that we can include it in
+                // the list of options to save the current bookmark.
+                manager.initLoader(LOADER_ID_MOST_RECENTLY_SAVED_BOOKMARK, null, this);
+            }
             if (!mEditingFolder) {
                 // Initially the "Bookmarks" folder should be showing, rather than
                 // the home screen.  In the editing folder case, home screen is not
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 756f8b8..5084e31 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -17,7 +17,11 @@
 package com.android.browser;
 
 import com.android.browser.Tab.LockIcon;
+import com.android.browser.UI.DropdownChangeListener;
 
+import android.animation.Animator;
+import android.animation.Animator.AnimatorListener;
+import android.animation.ObjectAnimator;
 import android.app.Activity;
 import android.content.res.Configuration;
 import android.content.res.Resources;
@@ -32,7 +36,6 @@
 import android.view.Menu;
 import android.view.View;
 import android.view.View.OnClickListener;
-import android.view.View.OnKeyListener;
 import android.view.ViewGroup;
 import android.view.ViewGroup.LayoutParams;
 import android.view.WindowManager;
@@ -67,7 +70,7 @@
     Activity mActivity;
     UiController mUiController;
     TabControl mTabControl;
-    private Tab mActiveTab;
+    protected Tab mActiveTab;
     private InputMethodManager mInputManager;
 
     private Drawable mSecLockIcon;
@@ -86,6 +89,8 @@
 
     private Toast mStopToast;
 
+    private boolean mTitleShowing;
+
     // the default <video> poster
     private Bitmap mDefaultVideoPoster;
     // the video progress view
@@ -114,6 +119,7 @@
         mCustomViewContainer = (FrameLayout) mBrowserFrameLayout
                 .findViewById(R.id.fullscreen_custom_content);
         frameLayout.addView(mBrowserFrameLayout, COVER_SCREEN_PARAMS);
+        mTitleShowing = false;
     }
 
     /**
@@ -161,6 +167,8 @@
     public void onConfigurationChanged(Configuration config) {
     }
 
+    public abstract void editUrl(boolean clearInput);
+
     // key handling
 
     @Override
@@ -189,7 +197,10 @@
 
     @Override
     public void bookmarkedStatusHasChanged(Tab tab) {
-        // no op in base case
+        if (tab.inForeground()) {
+            boolean isBookmark = tab.isBookmarkedSite();
+            getTitleBar().setCurrentUrlIsBookmark(isBookmark);
+        }
     }
 
     @Override
@@ -212,18 +223,23 @@
     }
 
     @Override
-    public void setActiveTab(Tab tab) {
+    public void setActiveTab(final Tab tab) {
+        setActiveTab(tab, true);
+    }
+
+    void setActiveTab(Tab tab, boolean needsAttaching) {
         if ((tab != mActiveTab) && (mActiveTab != null)) {
             removeTabFromContentView(mActiveTab);
         }
         mActiveTab = tab;
-        attachTabToContentView(tab);
+        if (needsAttaching) {
+            attachTabToContentView(tab);
+        }
         setShouldShowErrorConsole(tab, mUiController.shouldShowErrorConsole());
         onTabDataChanged(tab);
         onProgressChanged(tab);
         boolean incognito = mActiveTab.getWebView().isPrivateBrowsingEnabled();
-        getEmbeddedTitleBar().setIncognitoMode(incognito);
-        getFakeTitleBar().setIncognitoMode(incognito);
+        getTitleBar().setIncognitoMode(incognito);
     }
 
     Tab getActiveTab() {
@@ -252,7 +268,7 @@
         attachTabToContentView(tab);
     }
 
-    private void attachTabToContentView(Tab tab) {
+    protected void attachTabToContentView(Tab tab) {
         if ((tab == null) || (tab.getWebView() == null)) {
             return;
         }
@@ -292,7 +308,7 @@
     }
 
     private void removeTabFromContentView(Tab tab) {
-        hideFakeTitleBar();
+        hideTitleBar();
         // Remove the container that contains the main WebView.
         WebView mainView = tab.getWebView();
         View container = tab.getViewContainer();
@@ -381,49 +397,47 @@
         mContentView.addView(container, COVER_SCREEN_PARAMS);
     }
 
-    void showFakeTitleBar() {
-        if (!isFakeTitleBarShowing() && !isActivityPaused()) {
-            WebView mainView = mUiController.getCurrentWebView();
-            // if there is no current WebView, don't show the faked title bar;
-            if (mainView == null) {
-                return;
-            }
-            // Do not need to check for null, since the current tab will have
-            // at least a main WebView, or we would have returned above.
-            if (mUiController.isInCustomActionMode()) {
-                // Do not show the fake title bar, while a custom ActionMode
-                // (i.e. find or select) is showing.
-                return;
-            }
-            attachFakeTitleBar(mainView);
+    boolean canShowTitleBar() {
+        return !isTitleBarShowing()
+                && !isActivityPaused()
+                && (getActiveTab() != null)
+                && (getActiveTab().getWebView() != null)
+                && !mUiController.isInCustomActionMode();
+    }
+
+    void showTitleBar() {
+        mTitleShowing = true;
+    }
+
+    protected void hideTitleBar() {
+        mTitleShowing = false;
+    }
+
+    protected boolean isTitleBarShowing() {
+        return mTitleShowing;
+    }
+
+    protected abstract TitleBarBase getTitleBar();
+
+    protected void setTitleGravity(int gravity) {
+        getTitleBar().setTitleGravity(gravity);
+        Tab tab = getActiveTab();
+        if ((tab != null) && (tab.getWebView() != null)) {
+            tab.getWebView().setTitleBarGravity(gravity);
         }
     }
 
-    protected abstract void attachFakeTitleBar(WebView mainView);
-
-    protected abstract void hideFakeTitleBar();
-
-    protected abstract boolean isFakeTitleBarShowing();
-
-    protected abstract TitleBarBase getFakeTitleBar();
-
-    protected abstract TitleBarBase getEmbeddedTitleBar();
-
     @Override
     public void showVoiceTitleBar(String title) {
-        getEmbeddedTitleBar().setInVoiceMode(true);
-        getEmbeddedTitleBar().setDisplayTitle(title);
-        getFakeTitleBar().setInVoiceMode(true);
-        getFakeTitleBar().setDisplayTitle(title);
+        getTitleBar().setInVoiceMode(true);
+        getTitleBar().setDisplayTitle(title);
     }
 
     @Override
     public void revertVoiceTitleBar(Tab tab) {
-        getEmbeddedTitleBar().setInVoiceMode(false);
+        getTitleBar().setInVoiceMode(false);
         String url = tab.getUrl();
-        getEmbeddedTitleBar().setDisplayTitle(url);
-        getFakeTitleBar().setInVoiceMode(false);
-        getFakeTitleBar().setDisplayTitle(url);
+        getTitleBar().setDisplayTitle(url);
     }
 
     @Override
@@ -440,15 +454,24 @@
         FrameLayout wrapper =
             (FrameLayout) mContentView.findViewById(R.id.webview_wrapper);
         wrapper.setVisibility(View.GONE);
-        hideFakeTitleBar();
+        hideTitleBar();
         dismissIME();
         if (mActiveTab != null) {
             WebView web = mActiveTab.getWebView();
             mActiveTab.putInBackground();
         }
+        mComboView.setAlpha(0f);
+        ObjectAnimator anim = ObjectAnimator.ofFloat(mComboView, "alpha", 0f, 1f);
+        Resources res = mActivity.getResources();
+        anim.setDuration(res.getInteger(R.integer.comboViewFadeInDuration));
+        anim.start();
         mContentView.addView(mComboView, COVER_SCREEN_PARAMS);
     }
 
+    public boolean isComboViewShowing() {
+        return (mComboView != null);
+    }
+
     /**
      * dismiss the ComboPage
      */
@@ -547,8 +570,7 @@
         } else if (lockIconType == LockIcon.LOCK_ICON_MIXED) {
             d = mMixLockIcon;
         }
-        getEmbeddedTitleBar().setLock(d);
-        getFakeTitleBar().setLock(d);
+        getTitleBar().setLock(d);
     }
 
     protected void setUrlTitle(Tab tab) {
@@ -559,8 +581,7 @@
         }
         if (tab.isInVoiceSearchMode()) return;
         if (tab.inForeground()) {
-            getEmbeddedTitleBar().setDisplayTitle(url);
-            getFakeTitleBar().setDisplayTitle(url);
+            getTitleBar().setDisplayTitle(url);
         }
     }
 
@@ -568,8 +589,7 @@
     protected void setFavicon(Tab tab) {
         if (tab.inForeground()) {
             Bitmap icon = tab.getFavicon();
-            getEmbeddedTitleBar().setFavicon(icon);
-            getFakeTitleBar().setFavicon(icon);
+            getTitleBar().setFavicon(icon);
         }
     }
 
@@ -578,7 +598,7 @@
         if (inLoad) {
             // the titlebar was removed when the CAB was shown
             // if the page is loading, show it again
-            showFakeTitleBar();
+            showTitleBar();
         }
     }
 
@@ -596,6 +616,11 @@
     // menu handling callbacks
 
     @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        return true;
+    }
+
+    @Override
     public void onOptionsMenuOpened() {
     }
 
@@ -623,6 +648,7 @@
 
     @Override
     public void setShouldShowErrorConsole(Tab tab, boolean flag) {
+        if (tab == null) return;
         ErrorConsoleView errorConsole = tab.getErrorConsole(true);
         if (flag) {
             // Setting the show state of the console will cause it's the layout
@@ -682,4 +708,7 @@
         warning.show();
     }
 
+    @Override
+    public void registerDropdownChangeListener(DropdownChangeListener d) {
+    }
 }
diff --git a/src/com/android/browser/BookmarkUtils.java b/src/com/android/browser/BookmarkUtils.java
index cfb8e46..3aaf5d4 100644
--- a/src/com/android/browser/BookmarkUtils.java
+++ b/src/com/android/browser/BookmarkUtils.java
@@ -223,7 +223,6 @@
     }
 
     public static Uri.Builder addAccountInfo(Context context, Uri.Builder ub) {
-        Uri uri = BrowserContract.Bookmarks.CONTENT_URI;
         SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
         String accountType = prefs.getString(BrowserBookmarksPage.PREF_ACCOUNT_TYPE, null);
         String accountName = prefs.getString(BrowserBookmarksPage.PREF_ACCOUNT_NAME, null);
diff --git a/src/com/android/browser/Bookmarks.java b/src/com/android/browser/Bookmarks.java
index beea489..e7dc729 100644
--- a/src/com/android/browser/Bookmarks.java
+++ b/src/com/android/browser/Bookmarks.java
@@ -39,7 +39,7 @@
 /**
  *  This class is purely to have a common place for adding/deleting bookmarks.
  */
-/* package */ class Bookmarks {
+public class Bookmarks {
     // We only want the user to be able to bookmark content that
     // the browser can handle directly.
     private static final String acceptableBookmarkSchemes[] = {
@@ -162,11 +162,9 @@
 
     static final String QUERY_BOOKMARKS_WHERE =
             Combined.URL + " == ? OR " +
-            Combined.URL + " == ? OR " +
-            Combined.URL + " LIKE ? || '%' OR " +
-            Combined.URL + " LIKE ? || '%'";
+            Combined.URL + " == ?";
 
-    /* package */ static Cursor queryCombinedForUrl(ContentResolver cr,
+    public static Cursor queryCombinedForUrl(ContentResolver cr,
             String originalUrl, String url) {
         if (cr == null || url == null) {
             return null;
@@ -179,17 +177,8 @@
     
         // Look for both the original url and the actual url. This takes in to
         // account redirects.
-        String originalUrlNoQuery = removeQuery(originalUrl);
-        String urlNoQuery = removeQuery(url);
-        originalUrl = originalUrlNoQuery + '?';
-        url = urlNoQuery + '?';
     
-        // Use NoQuery to search for the base url (i.e. if the url is
-        // http://www.yahoo.com/?rs=1, search for http://www.yahoo.com)
-        // Use url to match the base url with other queries (i.e. if the url is
-        // http://www.google.com/m, search for
-        // http://www.google.com/m?some_query)
-        final String[] selArgs = new String[] { originalUrlNoQuery, urlNoQuery, originalUrl, url };
+        final String[] selArgs = new String[] { originalUrl, url };
         final String[] projection = new String[] { Combined.URL };
         return cr.query(Combined.CONTENT_URI, projection, QUERY_BOOKMARKS_WHERE, selArgs, null);
     }
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index 899a7c2..3c025d2 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -19,6 +19,7 @@
 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;
@@ -95,9 +96,7 @@
         }
 
         mController = new Controller(this);
-        boolean xlarge = (getResources().getConfiguration().screenLayout
-                & Configuration.SCREENLAYOUT_SIZE_MASK)
-                == Configuration.SCREENLAYOUT_SIZE_XLARGE;
+        boolean xlarge = isXlarge(this);
         if (xlarge) {
             mUi = new XLargeUi(this, mController);
         } else {
@@ -114,6 +113,12 @@
         mController.start(icicle, getIntent());
     }
 
+    public static boolean isXlarge(Context context) {
+        return (context.getResources().getConfiguration().screenLayout
+                & Configuration.SCREENLAYOUT_SIZE_MASK)
+                == Configuration.SCREENLAYOUT_SIZE_XLARGE;
+    }
+
     @VisibleForTesting
     Controller getController() {
         return mController;
@@ -248,6 +253,12 @@
     }
 
     @Override
+    public boolean onKeyLongPress(int keyCode, KeyEvent event) {
+        return mController.onKeyLongPress(keyCode, event) ||
+            super.onKeyLongPress(keyCode, event);
+    }
+
+    @Override
     public boolean onKeyUp(int keyCode, KeyEvent event) {
         return mController.onKeyUp(keyCode, event) ||
             super.onKeyUp(keyCode, event);
@@ -271,5 +282,4 @@
         mController.onActivityResult(requestCode, resultCode, intent);
     }
 
-
 }
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 7475237..98b25a8 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -262,6 +262,10 @@
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
         inflater.inflate(R.menu.bookmark, menu);
+        if (!BrowserActivity.isXlarge(getActivity())) {
+            MenuItem item = menu.findItem(R.id.add_bookmark);
+            item.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+        }
     }
 
     @Override
@@ -372,7 +376,7 @@
                 .getDefaultSharedPreferences(getActivity());
         prefs.registerOnSharedPreferenceChangeListener(this);
         mCurrentView =
-            prefs.getInt(PREF_SELECTED_VIEW, BrowserBookmarksPage.VIEW_THUMBNAILS);
+            prefs.getInt(PREF_SELECTED_VIEW, getDefaultView());
         mAdapter = new BrowserBookmarksAdapter(getActivity(), mCurrentView);
         lm.restartLoader(LOADER_BOOKMARKS, null, this);
 
@@ -382,6 +386,13 @@
         return mRoot;
     }
 
+     private int getDefaultView() {
+        if (BrowserActivity.isXlarge(getActivity())) {
+            return VIEW_THUMBNAILS;
+        }
+        return VIEW_LIST;
+    }
+
     @Override
     public void onDestroyView() {
         super.onDestroyView();
@@ -585,13 +596,17 @@
         switch (mCurrentView) {
         case VIEW_THUMBNAILS:
             mList.setAdapter(null);
-            mGrid.setAdapter(mAdapter);
+            if (mGrid.getAdapter() != mAdapter) {
+                mGrid.setAdapter(mAdapter);
+            }
             mGrid.setVisibility(View.VISIBLE);
             mList.setVisibility(View.GONE);
             break;
         case VIEW_LIST:
             mGrid.setAdapter(null);
-            mList.setAdapter(mAdapter);
+            if (mList.getAdapter() != mAdapter) {
+                mList.setAdapter(mAdapter);
+            }
             mGrid.setVisibility(View.GONE);
             mList.setVisibility(View.VISIBLE);
             break;
diff --git a/src/com/android/browser/BrowserHomepagePreference.java b/src/com/android/browser/BrowserHomepagePreference.java
index 1e2697b..cbe5b0d 100644
--- a/src/com/android/browser/BrowserHomepagePreference.java
+++ b/src/com/android/browser/BrowserHomepagePreference.java
@@ -17,18 +17,24 @@
 package com.android.browser;
 
 import android.content.Context;
+import android.content.DialogInterface;
 import android.os.Bundle;
 import android.preference.EditTextPreference;
 import android.util.AttributeSet;
+import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.view.Window;
 import android.view.WindowManager;
+import android.view.inputmethod.EditorInfo;
 import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.TextView.OnEditorActionListener;
 
-public class BrowserHomepagePreference extends EditTextPreference {
+public class BrowserHomepagePreference extends EditTextPreference
+        implements OnEditorActionListener {
     private String mCurrentPage;
 
     public BrowserHomepagePreference(Context context, AttributeSet attrs,
@@ -49,11 +55,24 @@
             EditText editText) {
         super.onAddEditTextToDialogView(dialogView, editText);
         editText.setSelectAllOnFocus(true);
+        editText.setSingleLine(true);
+        editText.setImeActionLabel(null, EditorInfo.IME_ACTION_DONE);
+        editText.setOnEditorActionListener(this);
         // Now the EditText has a parent.  Add a button to set to the current
         // page.
         createButtons((ViewGroup) editText.getParent());
     }
 
+    @Override
+    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+        if (actionId == EditorInfo.IME_ACTION_DONE) {
+            onClick(getDialog(), DialogInterface.BUTTON_POSITIVE);
+            getDialog().dismiss();
+            return true;
+        }
+        return false;
+    }
+
     void createButtons(ViewGroup parent) {
         LayoutInflater inflater = (LayoutInflater) getContext()
                 .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
diff --git a/src/com/android/browser/BrowserProvider.java b/src/com/android/browser/BrowserProvider.java
index f69665c..cba16a0 100644
--- a/src/com/android/browser/BrowserProvider.java
+++ b/src/com/android/browser/BrowserProvider.java
@@ -181,30 +181,18 @@
     // its content provider. http://b/issue?id=2425179
     static String getClientId(ContentResolver cr) {
         String ret = "android-google";
-        Cursor legacyClientIdCursor = null;
-        Cursor searchClientIdCursor = null;
-
-        // search_client_id includes search prefix, legacy client_id does not include prefix
+        Cursor c = null;
         try {
-            searchClientIdCursor = cr.query(Uri.parse("content://com.google.settings/partner"),
-               new String[] { "value" }, "name='search_client_id'", null, null);
-            if (searchClientIdCursor != null && searchClientIdCursor.moveToNext()) {
-                ret = searchClientIdCursor.getString(0);
-            } else {
-                legacyClientIdCursor = cr.query(Uri.parse("content://com.google.settings/partner"),
+            c = cr.query(Uri.parse("content://com.google.settings/partner"),
                     new String[] { "value" }, "name='client_id'", null, null);
-                if (legacyClientIdCursor != null && legacyClientIdCursor.moveToNext()) {
-                    ret = "ms-" + legacyClientIdCursor.getString(0);
-                }
+            if (c != null && c.moveToNext()) {
+                ret = c.getString(0);
             }
         } catch (RuntimeException ex) {
             // fall through to return the default
         } finally {
-            if (legacyClientIdCursor != null) {
-                legacyClientIdCursor.close();
-            }
-            if (searchClientIdCursor != null) {
-                searchClientIdCursor.close();
+            if (c != null) {
+                c.close();
             }
         }
         return ret;
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index faf0042..75e0cfb 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -109,10 +109,11 @@
     private boolean lightTouch = false;
     private boolean navDump = false;
     private boolean hardwareAccelerated = true;
-
+    private boolean showVisualIndicator = false;
     // Lab settings
     private boolean quickControls = false;
     private boolean useMostVisitedHomepage = false;
+    private boolean useInstant = false;
 
     // By default the error console is shown once the user navigates to about:debug.
     // The setting can be then toggled from the settings menu.
@@ -162,6 +163,7 @@
     public final static String PREF_AUTOFILL_PROFILE = "autofill_profile";
     public final static String PREF_AUTOFILL_ACTIVE_PROFILE_ID = "autofill_active_profile_id";
     public final static String PREF_HARDWARE_ACCEL = "enable_hardware_accel";
+    public final static String PREF_VISUAL_INDICATOR = "enable_visual_indicator";
     public final static String PREF_USER_AGENT = "user_agent";
 
     public final static String PREF_QUICK_CONTROLS = "enable_quick_controls";
@@ -169,6 +171,7 @@
     public final static String PREF_AUTOLOGIN = "enable_autologin";
     public final static String PREF_AUTOLOGIN_ACCOUNT = "autologin_account";
     public final static String PREF_PLUGIN_STATE = "plugin_state";
+    public final static String PREF_USE_INSTANT = "use_instant_search";
 
     private static final String DESKTOP_USERAGENT = "Mozilla/5.0 (Macintosh; " +
             "U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.16 (KHTML, " +
@@ -251,6 +254,7 @@
             s.setUseWideViewPort(b.useWideViewPort);
             s.setLoadsImagesAutomatically(b.loadsImagesAutomatically);
             s.setJavaScriptEnabled(b.javaScriptEnabled);
+            s.setShowVisualIndicator(b.showVisualIndicator);
             s.setPluginState(b.pluginState);
             s.setJavaScriptCanOpenWindowsAutomatically(
                     b.javaScriptCanOpenWindowsAutomatically);
@@ -411,27 +415,37 @@
         }
     }
 
+    private void updateSearchEngine(Context ctx, String searchEngineName, boolean force) {
+        if (force || searchEngine == null ||
+                !searchEngine.getName().equals(searchEngineName)) {
+            if (searchEngine != null) {
+                if (searchEngine.supportsVoiceSearch()) {
+                     // One or more tabs could have been in voice search mode.
+                     // Clear it, since the new SearchEngine may not support
+                     // it, or may handle it differently.
+                     for (int i = 0; i < mController.getTabControl().getTabCount(); i++) {
+                         mController.getTabControl().getTab(i).revertVoiceSearchMode();
+                     }
+                 }
+                 searchEngine.close();
+             }
+             searchEngine = SearchEngines.get(ctx, searchEngineName);
+
+             if (mController != null && (searchEngine instanceof InstantSearchEngine)) {
+                 ((InstantSearchEngine) searchEngine).setController(mController);
+             }
+         }
+    }
+
     /* package */ void syncSharedPreferences(Context ctx, SharedPreferences p) {
 
         homeUrl =
             p.getString(PREF_HOMEPAGE, homeUrl);
+
+        useInstant = p.getBoolean(PREF_USE_INSTANT, useInstant);
         String searchEngineName = p.getString(PREF_SEARCH_ENGINE,
-                SearchEngine.GOOGLE);
-        if (searchEngine == null || !searchEngine.getName().equals(searchEngineName)) {
-            if (searchEngine != null) {
-                if (searchEngine.supportsVoiceSearch()) {
-                    // One or more tabs could have been in voice search mode.
-                    // Clear it, since the new SearchEngine may not support
-                    // it, or may handle it differently.
-                    for (int i = 0; i < mController.getTabControl().getTabCount(); i++) {
-                        mController.getTabControl().getTab(i).revertVoiceSearchMode();
-                    }
-                }
-                searchEngine.close();
-            }
-            searchEngine = SearchEngines.get(ctx, searchEngineName);
-        }
-        Log.i(TAG, "Selected search engine: " + searchEngine);
+               SearchEngine.GOOGLE);
+        updateSearchEngine(ctx, searchEngineName, false);
 
         loadsImagesAutomatically = p.getBoolean("load_images",
                 loadsImagesAutomatically);
@@ -493,6 +507,7 @@
             tracing = p.getBoolean("enable_tracing", tracing);
             lightTouch = p.getBoolean("enable_light_touch", lightTouch);
             navDump = p.getBoolean("enable_nav_dump", navDump);
+            showVisualIndicator = p.getBoolean(PREF_VISUAL_INDICATOR, showVisualIndicator);
         }
 
         quickControls = p.getBoolean(PREF_QUICK_CONTROLS, quickControls);
@@ -589,6 +604,10 @@
         return hardwareAccelerated;
     }
 
+    public boolean showVisualIndicator() {
+        return showVisualIndicator;
+    }
+
     public boolean useQuickControls() {
         return quickControls;
     }
@@ -597,6 +616,10 @@
         return useMostVisitedHomepage;
     }
 
+    public boolean useInstant() {
+        return useInstant;
+    }
+
     public boolean showDebugSettings() {
         return showDebugSettings;
     }
@@ -716,6 +739,10 @@
     /* package */void setController(Controller ctrl) {
         mController = ctrl;
         updateTabControlSettings();
+
+        if (mController != null && (searchEngine instanceof InstantSearchEngine)) {
+             ((InstantSearchEngine) searchEngine).setController(mController);
+        }
     }
 
     /*
@@ -886,6 +913,8 @@
             SharedPreferences p, String key) {
         if (PREF_HARDWARE_ACCEL.equals(key)) {
             hardwareAccelerated = p.getBoolean(PREF_HARDWARE_ACCEL, hardwareAccelerated);
+        } else if (PREF_VISUAL_INDICATOR.equals(key)) {
+            showVisualIndicator = p.getBoolean(PREF_VISUAL_INDICATOR, showVisualIndicator);
         } else if (PREF_USER_AGENT.equals(key)) {
             userAgent = Integer.parseInt(p.getString(PREF_USER_AGENT, "0"));
             update();
@@ -893,6 +922,13 @@
             quickControls = p.getBoolean(PREF_QUICK_CONTROLS, quickControls);
         } else if (PREF_MOST_VISITED_HOMEPAGE.equals(key)) {
             useMostVisitedHomepage = p.getBoolean(PREF_MOST_VISITED_HOMEPAGE, useMostVisitedHomepage);
+        } else if (PREF_USE_INSTANT.equals(key)) {
+            useInstant = p.getBoolean(PREF_USE_INSTANT, useInstant);
+            updateSearchEngine(mController.getActivity(), SearchEngine.GOOGLE, true);
+        } else if (PREF_SEARCH_ENGINE.equals(key)) {
+            final String searchEngineName = p.getString(PREF_SEARCH_ENGINE,
+                    SearchEngine.GOOGLE);
+            updateSearchEngine(mController.getActivity(), searchEngineName, false);
         }
     }
 }
diff --git a/src/com/android/browser/CombinedBookmarkHistoryView.java b/src/com/android/browser/CombinedBookmarkHistoryView.java
index 173abba..793f7a2 100644
--- a/src/com/android/browser/CombinedBookmarkHistoryView.java
+++ b/src/com/android/browser/CombinedBookmarkHistoryView.java
@@ -157,8 +157,12 @@
     }
 
     void setupActionBar(int startingFragment) {
-        mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME
-                | ActionBar.DISPLAY_USE_LOGO);
+        if (BrowserActivity.isXlarge(mContext)) {
+            mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME
+                    | ActionBar.DISPLAY_USE_LOGO);
+        } else {
+            mActionBar.setDisplayOptions(0);
+        }
         mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
         mActionBar.removeAllTabs();
         mTabBookmarks = mActionBar.newTab();
@@ -170,7 +174,7 @@
         mTabHistory.setTabListener(this);
         mActionBar.addTab(mTabHistory, FRAGMENT_ID_HISTORY == startingFragment);
         mActionBar.setCustomView(mBookmarksHeader);
-
+        mActionBar.show();
     }
 
     @Override
@@ -324,7 +328,7 @@
             mUiController.onUrlSelected(settings.getHomePage(), false);
             return true;
         case R.id.add_bookmark:
-            mUiController.bookmarkCurrentPage(mBookmarks.getFolderId());
+            mUiController.bookmarkCurrentPage(mBookmarks.getFolderId(), false);
             return true;
         case R.id.preferences_menu_id:
             Intent intent = new Intent(mActivity, BrowserPreferencesPage.class);
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 74a66b1..d02f05c 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -17,6 +17,7 @@
 package com.android.browser;
 
 import com.android.browser.IntentHandler.UrlData;
+import com.android.browser.UI.DropdownChangeListener;
 import com.android.browser.search.SearchEngine;
 import com.android.common.Search;
 
@@ -43,6 +44,7 @@
 import android.net.http.SslError;
 import android.os.AsyncTask;
 import android.os.Bundle;
+import android.os.Environment;
 import android.os.Handler;
 import android.os.Message;
 import android.os.PowerManager;
@@ -77,6 +79,7 @@
 import android.webkit.WebIconDatabase;
 import android.webkit.WebSettings;
 import android.webkit.WebView;
+import android.widget.Toast;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -315,7 +318,10 @@
             if (urlData.isEmpty()) {
                 loadUrl(webView, mSettings.getHomePage());
             } else {
-                loadUrlDataIn(t, urlData);
+                // monkey protection against delayed start
+                if (t != null) {
+                    loadUrlDataIn(t, urlData);
+                }
             }
         } else {
             mTabControl.restoreState(icicle, currentTab, restoreIncognitoTabs,
@@ -483,7 +489,8 @@
                             case R.id.save_link_context_menu_id:
                             case R.id.download_context_menu_id:
                                 DownloadHandler.onDownloadStartNoStream(
-                                        mActivity, url, null, null, null);
+                                        mActivity, url, null, null, null,
+                                        view.isPrivateBrowsingEnabled());
                                 break;
                         }
                         break;
@@ -508,9 +515,9 @@
                         break;
 
                     case UPDATE_BOOKMARK_THUMBNAIL:
-                        WebView view = (WebView) msg.obj;
-                        if (view != null) {
-                            updateScreenshot(view);
+                        Tab tab = (Tab) msg.obj;
+                        if (tab != null) {
+                            updateScreenshot(tab);
                         }
                         break;
                 }
@@ -676,7 +683,7 @@
     }
 
     void onDestroy() {
-        if (mUploadHandler != null) {
+        if (mUploadHandler != null && !mUploadHandler.handled()) {
             mUploadHandler.onResult(Activity.RESULT_CANCELED, null);
             mUploadHandler = null;
         }
@@ -747,7 +754,7 @@
         // an incorrect screenshot. Therefore, remove any pending thumbnail
         // messages from the queue.
         mHandler.removeMessages(Controller.UPDATE_BOOKMARK_THUMBNAIL,
-                view);
+                tab);
 
         // reset sync timer to avoid sync starts during loading a page
         CookieSyncManager.getInstance().resetSync();
@@ -794,7 +801,7 @@
                 // Only update the bookmark screenshot if the user did not
                 // cancel the load early.
                 mHandler.sendMessageDelayed(mHandler.obtainMessage(
-                        UPDATE_BOOKMARK_THUMBNAIL, 0, 0, tab.getWebView()),
+                        UPDATE_BOOKMARK_THUMBNAIL, 0, 0, tab),
                         500);
             }
         }
@@ -851,7 +858,7 @@
     @Override
     public void onReceivedTitle(Tab tab, final String title) {
         mUi.onTabDataChanged(tab);
-        final String pageUrl = tab.getUrl();
+        final String pageUrl = tab.getOriginalUrl();
         if (TextUtils.isEmpty(pageUrl) || pageUrl.length()
                 >= SQLiteDatabase.SQLITE_MAX_LIKE_PATTERN_LENGTH) {
             return;
@@ -899,7 +906,7 @@
     public void doUpdateVisitedHistory(Tab tab, boolean isReload) {
         // Don't save anything in private browsing mode
         if (tab.isPrivateBrowsingEnabled()) return;
-        String url = tab.getUrl();
+        String url = tab.getOriginalUrl();
 
         if (TextUtils.isEmpty(url)
                 || url.regionMatches(true, 0, "about:", 0, 6)) {
@@ -957,9 +964,10 @@
     @Override
     public void onDownloadStart(Tab tab, String url, String userAgent,
             String contentDisposition, String mimetype, long contentLength) {
+        WebView w = tab.getWebView();
         DownloadHandler.onDownloadStart(mActivity, url, userAgent,
-                contentDisposition, mimetype);
-        if (tab.getWebView().copyBackForwardList().getSize() == 0) {
+                contentDisposition, mimetype, w.isPrivateBrowsingEnabled());
+        if (w.copyBackForwardList().getSize() == 0) {
             // This Tab was opened for the sole purpose of downloading a
             // file. Remove it.
             if (tab == mTabControl.getCurrentTab()) {
@@ -1024,9 +1032,7 @@
     // callback from phone title bar
     public void editUrl() {
         if (mOptionsMenuOpen) mActivity.closeOptionsMenu();
-        String url = (getCurrentTopWebView() == null) ? null : getCurrentTopWebView().getUrl();
-        startSearch(mSettings.getHomePage().equals(url) ? null : url, true,
-                null, false);
+        mUi.editUrl(false);
     }
 
     public void startVoiceSearch() {
@@ -1088,10 +1094,9 @@
                 }
                 break;
             case FILE_SELECTED:
-                // Choose a file from the file picker.
+                // Chose a file from the file picker.
                 if (null == mUploadHandler) break;
                 mUploadHandler.onResult(resultCode, intent);
-                mUploadHandler = null;
                 break;
             case AUTOFILL_SETUP:
                 // Determine whether a profile was actually set up or not
@@ -1369,7 +1374,8 @@
                 menu.findItem(R.id.view_image_context_menu_id).setIntent(
                         new Intent(Intent.ACTION_VIEW, Uri.parse(extra)));
                 menu.findItem(R.id.download_context_menu_id).
-                        setOnMenuItemClickListener(new Download(mActivity, extra));
+                        setOnMenuItemClickListener(
+                                new Download(mActivity, extra, webview.isPrivateBrowsingEnabled()));
                 menu.findItem(R.id.set_wallpaper_context_menu_id).
                         setOnMenuItemClickListener(new WallpaperHandler(mActivity,
                                 extra));
@@ -1465,10 +1471,15 @@
                 final MenuItem newtab = menu.findItem(R.id.new_tab_menu_id);
                 newtab.setEnabled(getTabControl().canCreateNewTab());
 
+                MenuItem archive = menu.findItem(R.id.save_webarchive_menu_id);
+                Tab tab = getTabControl().getCurrentTab();
+                String url = tab != null ? tab.getUrl() : null;
+                archive.setVisible(!TextUtils.isEmpty(url)
+                        && !url.endsWith(".webarchivexml"));
                 break;
         }
         mCurrentMenuState = mMenuState;
-        return true;
+        return mUi.onPrepareOptionsMenu(menu);
     }
 
     public boolean onOptionsItemSelected(MenuItem item) {
@@ -1520,7 +1531,7 @@
                 break;
 
             case R.id.add_bookmark_menu_id:
-                bookmarkCurrentPage(AddBookmarkPage.DEFAULT_FOLDER_ID);
+                bookmarkCurrentPage(AddBookmarkPage.DEFAULT_FOLDER_ID, false);
                 break;
 
             case R.id.stop_reload_menu_id:
@@ -1567,6 +1578,56 @@
                 getCurrentTopWebView().showFindDialog(null, true);
                 break;
 
+            case R.id.save_webarchive_menu_id:
+                String state = Environment.getExternalStorageState();
+                if (!Environment.MEDIA_MOUNTED.equals(state)) {
+                    Log.e(LOGTAG, "External storage not mounted");
+                    Toast.makeText(mActivity, R.string.webarchive_failed,
+                            Toast.LENGTH_SHORT).show();
+                    break;
+                }
+                final String directory = Environment.getExternalStoragePublicDirectory(
+                        Environment.DIRECTORY_DOWNLOADS) + File.separator;
+                File dir = new File(directory);
+                if (!dir.exists() && !dir.mkdirs()) {
+                    Log.e(LOGTAG, "Save as Web Archive: mkdirs for " + directory + " failed!");
+                    Toast.makeText(mActivity, R.string.webarchive_failed,
+                            Toast.LENGTH_SHORT).show();
+                    break;
+                }
+                final WebView topWebView = getCurrentTopWebView();
+                final String title = topWebView.getTitle();
+                final String url = topWebView.getUrl();
+                topWebView.saveWebArchive(directory, true,
+                        new ValueCallback<String>() {
+                    @Override
+                    public void onReceiveValue(final String value) {
+                        if (value != null) {
+                            File file = new File(value);
+                            final long length = file.length();
+                            if (file.exists() && length > 0) {
+                                Toast.makeText(mActivity, R.string.webarchive_saved,
+                                        Toast.LENGTH_SHORT).show();
+                                final DownloadManager manager = (DownloadManager) mActivity
+                                        .getSystemService(Context.DOWNLOAD_SERVICE);
+                                new Thread("Add WebArchive to download manager") {
+                                    @Override
+                                    public void run() {
+                                        manager.addCompletedDownload(
+                                                null == title ? value : title,
+                                                value, true, "application/x-webarchive-xml",
+                                                value, length, true);
+                                    }
+                                }.start();
+                                return;
+                            }
+                        }
+                        DownloadHandler.onDownloadStartNoStream(mActivity,
+                                url, null, null, null, topWebView.isPrivateBrowsingEnabled());
+                    }
+                });
+                break;
+
             case R.id.page_info_menu_id:
                 mPageDialogsHandler.showPageInfo(mTabControl.getCurrentTab(),
                         false);
@@ -1804,9 +1865,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
+     *          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(long folderId) {
+    public void bookmarkCurrentPage(long folderId, boolean canBeAnEdit) {
         Intent i = new Intent(mActivity,
                 AddBookmarkPage.class);
         WebView w = getCurrentTopWebView();
@@ -1827,6 +1892,9 @@
         i.putExtra(BrowserContract.Bookmarks.FAVICON, w.getFavicon());
         i.putExtra(BrowserContract.Bookmarks.PARENT,
                 folderId);
+        if (canBeAnEdit) {
+            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);
@@ -1863,6 +1931,13 @@
                 R.dimen.bookmarkThumbnailHeight);
     }
 
+    static Bitmap createScreenshot(Tab tab, int width, int height) {
+        if ((tab != null) && (tab.getWebView() != null)) {
+            return createScreenshot(tab.getWebView(), width, height);
+        }
+        return null;
+    }
+
     private static Bitmap createScreenshot(WebView view, int width, int height) {
         // We render to a bitmap 2x the desired size so that we can then
         // re-scale it with filtering since canvas.scale doesn't filter
@@ -1881,17 +1956,17 @@
         int thumbnailWidth = thumbnail.getWidth();
         int thumbnailHeight = thumbnail.getHeight();
         float scaleFactor = 1.0f;
-        if (thumbnailWidth > 0) {
+        if (thumbnailWidth > 0 && thumbnailHeight > 0) {
             scaleFactor = (float) width / (float)thumbnailWidth;
         } else {
             return null;
         }
 
-        if (view.getWidth() > view.getHeight() &&
-                thumbnailHeight < view.getHeight() && thumbnailHeight > 0) {
-            // If the device is in landscape and the page is shorter
-            // than the height of the view, center the thumnail and crop the sides
-            scaleFactor = (float) height / (float)thumbnailHeight;
+        float scaleFactorY = (float) height / (float)thumbnailHeight;
+        if (scaleFactorY > scaleFactor) {
+            // The picture is narrower than the requested AR
+            // Center the thumnail and crop the sides
+            scaleFactor = scaleFactorY;
             float wx = (thumbnailWidth * scaleFactor) - width;
             canvas.translate((int) -(wx / 2), 0);
         }
@@ -1905,13 +1980,31 @@
         return ret;
     }
 
-    private void updateScreenshot(WebView view) {
+    private void updateScreenshot(Tab tab) {
         // If this is a bookmarked site, add a screenshot to the database.
-        // FIXME: When should we update?  Every time?
         // FIXME: Would like to make sure there is actually something to
         // draw, but the API for that (WebViewCore.pictureReady()) is not
         // currently accessible here.
 
+        WebView view = tab.getWebView();
+        if (view == null) {
+            // Tab was destroyed
+            return;
+        }
+        final String url = tab.getUrl();
+        final String originalUrl = view.getOriginalUrl();
+
+        if (TextUtils.isEmpty(url)) {
+            return;
+        }
+
+        // Only update thumbnails for web urls (http(s)://), not for
+        // about:, javascript:, data:, etc...
+        // Unless it is a bookmarked site, then always update
+        if (!Patterns.WEB_URL.matcher(url).matches() && !tab.isBookmarkedSite()) {
+            return;
+        }
+
         final Bitmap bm = createScreenshot(view, getDesiredThumbnailWidth(mActivity),
                 getDesiredThumbnailHeight(mActivity));
         if (bm == null) {
@@ -1919,41 +2012,34 @@
         }
 
         final ContentResolver cr = mActivity.getContentResolver();
-        final String url = view.getUrl();
-        final String originalUrl = view.getOriginalUrl();
+        new AsyncTask<Void, Void, Void>() {
+            @Override
+            protected Void doInBackground(Void... unused) {
+                Cursor cursor = null;
+                try {
+                    // TODO: Clean this up
+                    cursor = Bookmarks.queryCombinedForUrl(cr, originalUrl, url);
+                    if (cursor != null && cursor.moveToFirst()) {
+                        final ByteArrayOutputStream os =
+                                new ByteArrayOutputStream();
+                        bm.compress(Bitmap.CompressFormat.PNG, 100, os);
 
-        // Only update thumbnails for web urls (http(s)://), not for
-        // about:, javascript:, data:, etc...
-        if (url != null && Patterns.WEB_URL.matcher(url).matches()) {
-            new AsyncTask<Void, Void, Void>() {
-                @Override
-                protected Void doInBackground(Void... unused) {
-                    Cursor cursor = null;
-                    try {
-                        // TODO: Clean this up
-                        cursor = Bookmarks.queryCombinedForUrl(cr, originalUrl, url);
-                        if (cursor != null && cursor.moveToFirst()) {
-                            final ByteArrayOutputStream os =
-                                    new ByteArrayOutputStream();
-                            bm.compress(Bitmap.CompressFormat.PNG, 100, os);
+                        ContentValues values = new ContentValues();
+                        values.put(Images.THUMBNAIL, os.toByteArray());
 
-                            ContentValues values = new ContentValues();
-                            values.put(Images.THUMBNAIL, os.toByteArray());
+                        do {
                             values.put(Images.URL, cursor.getString(0));
-
-                            do {
-                                cr.update(Images.CONTENT_URI, values, null, null);
-                            } while (cursor.moveToNext());
-                        }
-                    } catch (IllegalStateException e) {
-                        // Ignore
-                    } finally {
-                        if (cursor != null) cursor.close();
+                            cr.update(Images.CONTENT_URI, values, null, null);
+                        } while (cursor.moveToNext());
                     }
-                    return null;
+                } catch (IllegalStateException e) {
+                    // Ignore
+                } finally {
+                    if (cursor != null) cursor.close();
                 }
-            }.execute();
-        }
+                return null;
+            }
+        }.execute();
     }
 
     private class Copy implements OnMenuItemClickListener {
@@ -1972,16 +2058,18 @@
     private static class Download implements OnMenuItemClickListener {
         private Activity mActivity;
         private String mText;
+        private boolean mPrivateBrowsing;
 
         public boolean onMenuItemClick(MenuItem item) {
             DownloadHandler.onDownloadStartNoStream(mActivity, mText, null,
-                    null, null);
+                    null, null, mPrivateBrowsing);
             return true;
         }
 
-        public Download(Activity activity, String toDownload) {
+        public Download(Activity activity, String toDownload, boolean privateBrowsing) {
             mActivity = activity;
             mText = toDownload;
+            mPrivateBrowsing = privateBrowsing;
         }
     }
 
@@ -2020,9 +2108,12 @@
     }
 
     protected void setActiveTab(Tab tab) {
-        mTabControl.setCurrentTab(tab);
-        // the tab is guaranteed to have a webview after setCurrentTab
-        mUi.setActiveTab(tab);
+        // monkey protection against delayed start
+        if (tab != null) {
+            mTabControl.setCurrentTab(tab);
+            // the tab is guaranteed to have a webview after setCurrentTab
+            mUi.setActiveTab(tab);
+        }
     }
 
     protected void closeEmptyChildTab() {
@@ -2298,20 +2389,10 @@
                 closeTab(current);
             } else {
                 if (current.closeOnExit()) {
-                    // force the tab's inLoad() to be false as we are going to
-                    // either finish the activity or remove the tab. This will
-                    // ensure pauseWebViewTimers() taking action.
-                    current.clearInPageLoad();
-                    if (mTabControl.getTabCount() == 1) {
-                        mActivity.finish();
-                        return;
-                    }
-                    if (mActivityPaused) {
-                        Log.e(LOGTAG, "BrowserActivity is already paused "
-                                + "while handing goBackOnePageOrQuit.");
-                    }
-                    pauseWebViewTimers(current);
-                    removeTab(current);
+                    // This will finish the activity if there is only one tab
+                    // open or it will switch to the next available tab if
+                    // available.
+                    closeCurrentTab();
                 }
                 /*
                  * Instead of finishing the activity, simply push this to the back
@@ -2345,6 +2426,12 @@
         startSearch(result, false, bundle, false);
     }
 
+    @Override
+    public void startSearch(String url) {
+        startSearch(mSettings.getHomePage().equals(url) ? null : url, true,
+                null, false);
+    }
+
     private void startSearch(String initialQuery, boolean selectInitialQuery,
             Bundle appSearchData, boolean globalSearch) {
         if (appSearchData == null) {
@@ -2378,14 +2465,13 @@
 
         // Even if MENU is already held down, we need to call to super to open
         // the IME on long press.
-        if (!noModifiers && KeyEvent.KEYCODE_MENU == keyCode) {
+        if (!noModifiers
+                && ((KeyEvent.KEYCODE_MENU == keyCode)
+                        || (KeyEvent.KEYCODE_CTRL_LEFT == keyCode)
+                        || (KeyEvent.KEYCODE_CTRL_RIGHT == keyCode))) {
             mMenuIsDown = true;
             return false;
         }
-        // The default key mode is DEFAULT_KEYS_SEARCH_LOCAL. As the MENU is
-        // still down, we don't want to trigger the search. Pretend to consume
-        // the key and do nothing.
-        if (mMenuIsDown) return true;
 
         WebView webView = getCurrentTopWebView();
         if (webView == null) return false;
@@ -2410,15 +2496,8 @@
                 return true;
             case KeyEvent.KEYCODE_BACK:
                 if (!noModifiers) break;
-                if (event.getRepeatCount() == 0) {
-                    event.startTracking();
-                    return true;
-                } else if (mUi.showsWeb()
-                        && event.isLongPress()) {
-                    bookmarksOrHistoryPicker(true);
-                    return true;
-                }
-                break;
+                event.startTracking();
+                return true;
             case KeyEvent.KEYCODE_DPAD_LEFT:
                 if (ctrl) {
                     webView.goBack();
@@ -2458,10 +2537,12 @@
 //          case KeyEvent.KEYCODE_O:    // in Chrome: open file
 //          case KeyEvent.KEYCODE_P:    // in Chrome: print page
 //          case KeyEvent.KEYCODE_Q:    // unused
-//            case KeyEvent.KEYCODE_R:
+//          case KeyEvent.KEYCODE_R:
 //          case KeyEvent.KEYCODE_S:    // in Chrome: saves page
             case KeyEvent.KEYCODE_T:
-                if (ctrl) {
+                // we can't use the ctrl/shift flags, they check for
+                // exclusive use of a modifier
+                if (event.isCtrlPressed()) {
                     if (event.isShiftPressed()) {
                         openIncognitoTab();
                     } else {
@@ -2477,8 +2558,20 @@
 //          case KeyEvent.KEYCODE_Y:    // unused
 //          case KeyEvent.KEYCODE_Z:    // unused
         }
-        // if we get here, it is a regular key and webview is not null
-        return mUi.dispatchKey(keyCode, event);
+        // it is a regular key and webview is not null
+         return mUi.dispatchKey(keyCode, event);
+    }
+
+    boolean onKeyLongPress(int keyCode, KeyEvent event) {
+        switch(keyCode) {
+        case KeyEvent.KEYCODE_BACK:
+            if (mUi.showsWeb()) {
+                bookmarksOrHistoryPicker(true);
+                return true;
+            }
+            break;
+        }
+        return false;
     }
 
     boolean onKeyUp(int keyCode, KeyEvent event) {
@@ -2524,4 +2617,8 @@
         }
     }
 
+    @Override
+    public void registerDropdownChangeListener(DropdownChangeListener d) {
+        mUi.registerDropdownChangeListener(d);
+    }
 }
diff --git a/src/com/android/browser/DownloadHandler.java b/src/com/android/browser/DownloadHandler.java
index 40278f4..17ad320 100644
--- a/src/com/android/browser/DownloadHandler.java
+++ b/src/com/android/browser/DownloadHandler.java
@@ -53,9 +53,11 @@
      * @param userAgent User agent of the downloading application.
      * @param contentDisposition Content-disposition http header, if present.
      * @param mimetype The mimetype of the content reported by the server
+     * @param privateBrowsing If the request is coming from a private browsing tab.
      */
     public static void onDownloadStart(Activity activity, String url,
-            String userAgent, String contentDisposition, String mimetype) {
+            String userAgent, String contentDisposition, String mimetype,
+            boolean privateBrowsing) {
         // if we're dealing wih A/V content that's not explicitly marked
         //     for download, check if it's streamable.
         if (contentDisposition == null
@@ -93,7 +95,7 @@
             }
         }
         onDownloadStartNoStream(activity, url, userAgent, contentDisposition,
-                mimetype);
+                mimetype, privateBrowsing);
     }
 
     // This is to work around the fact that java.net.URI throws Exceptions
@@ -134,10 +136,11 @@
      * @param userAgent User agent of the downloading application.
      * @param contentDisposition Content-disposition http header, if present.
      * @param mimetype The mimetype of the content reported by the server
+     * @param privateBrowsing If the request is coming from a private browsing tab.
      */
     /*package */ static void onDownloadStartNoStream(Activity activity,
             String url, String userAgent, String contentDisposition,
-            String mimetype) {
+            String mimetype, boolean privateBrowsing) {
 
         String filename = URLUtil.guessFileName(url,
                 contentDisposition, mimetype);
@@ -181,7 +184,13 @@
 
         String addressString = webAddress.toString();
         Uri uri = Uri.parse(addressString);
-        final DownloadManager.Request request = new DownloadManager.Request(uri);
+        final DownloadManager.Request request;
+        try {
+            request = new DownloadManager.Request(uri);
+        } catch (IllegalArgumentException e) {
+            Toast.makeText(activity, R.string.cannot_download, Toast.LENGTH_SHORT).show();
+            return;
+        }
         request.setMimeType(mimetype);
         // set downloaded file destination to /sdcard/Download.
         // or, should it be set to one of several Environment.DIRECTORY* dirs depending on mimetype?
@@ -192,7 +201,7 @@
         request.setDescription(webAddress.getHost());
         // XXX: Have to use the old url since the cookies were stored using the
         // old percent-encoded url.
-        String cookies = CookieManager.getInstance().getCookie(url);
+        String cookies = CookieManager.getInstance().getCookie(url, privateBrowsing);
         request.addRequestHeader("cookie", cookies);
         request.setNotificationVisibility(
                 DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
diff --git a/src/com/android/browser/DownloadTouchIcon.java b/src/com/android/browser/DownloadTouchIcon.java
index 768eab5..64a7316 100644
--- a/src/com/android/browser/DownloadTouchIcon.java
+++ b/src/com/android/browser/DownloadTouchIcon.java
@@ -39,10 +39,10 @@
 import android.webkit.WebView;
 
 import java.io.ByteArrayOutputStream;
-import java.io.IOException;
 import java.io.InputStream;
 
 class DownloadTouchIcon extends AsyncTask<String, Void, Void> {
+
     private final ContentResolver mContentResolver;
     private Cursor mCursor;
     private final String mOriginalUrl;
@@ -110,18 +110,21 @@
         String url = values[0];
 
         if (inDatabase || mMessage != null) {
-            AndroidHttpClient client = AndroidHttpClient.newInstance(mUserAgent);
-            HttpHost httpHost = Proxy.getPreferredHttpHost(mContext, url);
-            if (httpHost != null) {
-                ConnRouteParams.setDefaultProxy(client.getParams(), httpHost);
-            }
-
-            HttpGet request = new HttpGet(url);
-
-            // Follow redirects
-            HttpClientParams.setRedirecting(client.getParams(), true);
+            AndroidHttpClient client = null;
+            HttpGet request = null;
 
             try {
+                client = AndroidHttpClient.newInstance(mUserAgent);
+                HttpHost httpHost = Proxy.getPreferredHttpHost(mContext, url);
+                if (httpHost != null) {
+                    ConnRouteParams.setDefaultProxy(client.getParams(), httpHost);
+                }
+
+                request = new HttpGet(url);
+
+                // Follow redirects
+                HttpClientParams.setRedirecting(client.getParams(), true);
+
                 HttpResponse response = client.execute(request);
                 if (response.getStatusLine().getStatusCode() == 200) {
                     HttpEntity entity = response.getEntity();
@@ -139,12 +142,14 @@
                         }
                     }
                 }
-            } catch (IllegalArgumentException ex) {
-                request.abort();
-            } catch (IOException ex) {
-                request.abort();
+            } catch (Exception ex) {
+                if (request != null) {
+                    request.abort();
+                }
             } finally {
-                client.close();
+                if (client != null) {
+                    client.close();
+                }
             }
         }
 
@@ -183,9 +188,9 @@
 
             ContentValues values = new ContentValues();
             values.put(Images.TOUCH_ICON, os.toByteArray());
-            values.put(Images.URL, mCursor.getString(0));
 
             do {
+                values.put(Images.URL, mCursor.getString(0));
                 mContentResolver.update(Images.CONTENT_URI, values, null, null);
             } while (mCursor.moveToNext());
         }
diff --git a/src/com/android/browser/GoogleAccountLogin.java b/src/com/android/browser/GoogleAccountLogin.java
index eaf45ea..f4ccfd1 100644
--- a/src/com/android/browser/GoogleAccountLogin.java
+++ b/src/com/android/browser/GoogleAccountLogin.java
@@ -41,6 +41,7 @@
 import android.preference.PreferenceManager;
 import android.util.Log;
 import android.webkit.CookieManager;
+import android.webkit.CookieSyncManager;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
 
@@ -86,6 +87,12 @@
         mWebView = new WebView(mActivity);
         mRunnable = runnable;
 
+        // XXX: Doing pre-login causes onResume to skip calling
+        // resumeWebViewTimers. So to avoid problems with timers not running, we
+        // duplicate the work here using the off-screen WebView.
+        CookieSyncManager.getInstance().startSync();
+        mWebView.resumeTimers();
+
         mWebView.setWebViewClient(new WebViewClient() {
             @Override
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
@@ -336,7 +343,7 @@
                 @Override public void run() {
                     mProgressDialog.dismiss();
                 }
-            }, 1000);
+            }, 2000);
 
             mRunnable = null;
             mWebView.destroy();
diff --git a/src/com/android/browser/HttpAuthenticationDialog.java b/src/com/android/browser/HttpAuthenticationDialog.java
index a9ba332..ac4119c 100644
--- a/src/com/android/browser/HttpAuthenticationDialog.java
+++ b/src/com/android/browser/HttpAuthenticationDialog.java
@@ -18,10 +18,13 @@
 import android.app.AlertDialog;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.WindowManager;
+import android.view.inputmethod.EditorInfo;
 import android.widget.TextView;
+import android.widget.TextView.OnEditorActionListener;
 
 /**
  * HTTP authentication dialog.
@@ -109,6 +112,16 @@
         View v = factory.inflate(R.layout.http_authentication, null);
         mUsernameView = (TextView) v.findViewById(R.id.username_edit);
         mPasswordView = (TextView) v.findViewById(R.id.password_edit);
+        mPasswordView.setOnEditorActionListener(new OnEditorActionListener() {
+            @Override
+            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+                if (actionId == EditorInfo.IME_ACTION_DONE) {
+                    mDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick();
+                    return true;
+                }
+                return false;
+            }
+        });
 
         String title = mContext.getText(R.string.sign_in_to).toString().replace(
                 "%s1", mHost).replace("%s2", mRealm);
diff --git a/src/com/android/browser/InstantSearchEngine.java b/src/com/android/browser/InstantSearchEngine.java
new file mode 100644
index 0000000..85e494a
--- /dev/null
+++ b/src/com/android/browser/InstantSearchEngine.java
@@ -0,0 +1,409 @@
+/*
+ * 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 com.android.browser.Controller;
+import com.android.browser.R;
+import com.android.browser.UI.DropdownChangeListener;
+import com.android.browser.search.SearchEngine;
+
+import android.app.SearchManager;
+import android.content.Context;
+import android.database.AbstractCursor;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.LruCache;
+import android.webkit.SearchBox;
+import android.webkit.WebView;
+
+import java.util.Collections;
+import java.util.List;
+
+public class InstantSearchEngine implements SearchEngine, DropdownChangeListener {
+    private static final String TAG = "Browser.InstantSearchEngine";
+    private static final boolean DBG = false;
+
+    private Controller mController;
+    private SearchBox mSearchBox;
+    private final BrowserSearchboxListener mListener = new BrowserSearchboxListener();
+    private int mHeight;
+
+    private String mInstantBaseUrl;
+    private final Context mContext;
+    // Used for startSearch( ) calls if for some reason instant
+    // is off, or no searchbox is present.
+    private final SearchEngine mWrapped;
+
+    public InstantSearchEngine(Context context, SearchEngine wrapped) {
+        mContext = context;
+        mWrapped = wrapped;
+    }
+
+    public void setController(Controller controller) {
+        mController = controller;
+    }
+
+    @Override
+    public String getName() {
+        return SearchEngine.GOOGLE;
+    }
+
+    @Override
+    public CharSequence getLabel() {
+        return mContext.getResources().getString(R.string.instant_search_label);
+    }
+
+    @Override
+    public void startSearch(Context context, String query, Bundle appData, String extraData) {
+        if (DBG) Log.d(TAG, "startSearch(" + query + ")");
+
+        switchSearchboxIfNeeded();
+
+        // If for some reason we are in a bad state, ensure that the
+        // user gets default search results at the very least.
+        if (mSearchBox == null || !isInstantPage()) {
+            mWrapped.startSearch(context, query, appData, extraData);
+            return;
+        }
+
+        mSearchBox.setQuery(query);
+        mSearchBox.setVerbatim(true);
+        mSearchBox.onsubmit();
+    }
+
+    private final class BrowserSearchboxListener implements SearchBox.SearchBoxListener {
+        /*
+         * The maximum number of out of order suggestions we accept
+         * before giving up the wait.
+         */
+        private static final int MAX_OUT_OF_ORDER = 5;
+
+        /*
+         * We wait for suggestions in increments of 600ms. This is primarily to
+         * guard against suggestions arriving out of order.
+         */
+        private static final int WAIT_INCREMENT_MS = 600;
+
+        /*
+         * A cache of suggestions received, keyed by the queries they were
+         * received for.
+         */
+        private final LruCache<String, List<String>> mSuggestions =
+                new LruCache<String, List<String>>(20);
+
+        /*
+         * The last set of suggestions received. We use this reduce UI flicker
+         * in case there is a delay in recieving suggestions.
+         */
+        private List<String> mLatestSuggestion = Collections.emptyList();
+
+        @Override
+        public synchronized void onSuggestionsReceived(String query, List<String> suggestions) {
+            if (DBG) Log.d(TAG, "onSuggestionsReceived(" + query + ")");
+
+            if (!TextUtils.isEmpty(query)) {
+                mSuggestions.put(query, suggestions);
+                mLatestSuggestion = suggestions;
+            }
+
+            notifyAll();
+        }
+
+        public synchronized List<String> tryWaitForSuggestions(String query) {
+            if (DBG) Log.d(TAG, "tryWait(" + query + ")");
+
+            int numWaitReturns = 0;
+
+            // This slightly unusual waiting construct is used to safeguard
+            // to some extent against suggestions arriving out of order. We
+            // wait for upto 5 notifyAll( ) calls to check if we received
+            // suggestions for a given query.
+            while (mSuggestions.get(query) == null)  {
+                try {
+                    wait(WAIT_INCREMENT_MS);
+                    ++numWaitReturns;
+                    if (numWaitReturns > MAX_OUT_OF_ORDER) {
+                        // We've waited too long for suggestions to be returned.
+                        // return the last available suggestion.
+                        break;
+                    }
+                } catch (InterruptedException e) {
+                    return Collections.emptyList();
+                }
+            }
+
+            List<String> suggestions = mSuggestions.get(query);
+            if (suggestions == null) {
+                return mLatestSuggestion;
+            }
+
+            return suggestions;
+        }
+
+        public synchronized void clear() {
+            mSuggestions.evictAll();
+        }
+    }
+
+    private WebView getCurrentWebview() {
+        if (mController != null) {
+            return mController.getTabControl().getCurrentTopWebView();
+        }
+
+        return null;
+    }
+
+    /**
+     * Attaches the searchbox to the right browser page, i.e, the currently
+     * visible tab.
+     */
+    private void switchSearchboxIfNeeded() {
+        final SearchBox searchBox = getCurrentWebview().getSearchBox();
+        if (searchBox != mSearchBox) {
+            if (mSearchBox != null) {
+                mSearchBox.removeSearchBoxListener(mListener);
+                mListener.clear();
+            }
+            mSearchBox = searchBox;
+            if (mSearchBox != null) {
+                mSearchBox.addSearchBoxListener(mListener);
+            }
+        }
+    }
+
+    private boolean isInstantPage() {
+        String currentUrl = getCurrentWebview().getUrl();
+
+        if (currentUrl != null) {
+            Uri uri = Uri.parse(currentUrl);
+            final String host = uri.getHost();
+            final String path = uri.getPath();
+
+            // Is there a utility class that does this ?
+            if (path != null && host != null) {
+                return host.startsWith("www.google.") &&
+                        (path.startsWith("/search") || path.startsWith("/webhp"));
+            }
+            return false;
+        }
+
+        return false;
+    }
+
+    private void loadInstantPage() {
+        mController.getActivity().runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                getCurrentWebview().loadUrl(getInstantBaseUrl());
+            }
+        });
+    }
+
+    /**
+     * Queries for a given search term and returns a cursor containing
+     * suggestions ordered by best match.
+     */
+    @Override
+    public Cursor getSuggestions(Context context, String query) {
+        if (DBG) Log.d(TAG, "getSuggestions(" + query + ")");
+        if (query == null) {
+            return null;
+        }
+
+        if (!isInstantPage()) {
+            loadInstantPage();
+        }
+
+        switchSearchboxIfNeeded();
+
+        mController.registerDropdownChangeListener(this);
+
+        if (mSearchBox == null) {
+            return mWrapped.getSuggestions(context, query);
+        }
+
+        mSearchBox.setDimensions(0, 0, 0, mHeight);
+        mSearchBox.onresize();
+
+        if (TextUtils.isEmpty(query)) {
+            // To force the SRP to render an empty (no results) page.
+            mSearchBox.setVerbatim(true);
+        } else {
+            mSearchBox.setVerbatim(false);
+        }
+        mSearchBox.setQuery(query);
+        mSearchBox.onchange();
+
+        // Don't bother waiting for suggestions for an empty query. We still
+        // set the query so that the SRP clears itself.
+        if (TextUtils.isEmpty(query)) {
+            return new SuggestionsCursor(Collections.<String>emptyList());
+        } else {
+            return new SuggestionsCursor(mListener.tryWaitForSuggestions(query));
+        }
+    }
+
+    @Override
+    public boolean supportsSuggestions() {
+        return true;
+    }
+
+    @Override
+    public void close() {
+        if (mController != null) {
+            mController.registerDropdownChangeListener(null);
+        }
+        if (mSearchBox != null) {
+            mSearchBox.removeSearchBoxListener(mListener);
+        }
+        mListener.clear();
+        mWrapped.close();
+    }
+
+    @Override
+    public boolean supportsVoiceSearch() {
+        return false;
+    }
+
+    @Override
+    public String toString() {
+        return "InstantSearchEngine {" + hashCode() + "}";
+    }
+
+    @Override
+    public boolean wantsEmptyQuery() {
+        return true;
+    }
+
+    private int rescaleHeight(int height) {
+        final float scale = getCurrentWebview().getScale();
+        if (scale != 0) {
+            return (int) (height / scale);
+        }
+
+        return height;
+    }
+
+    @Override
+    public void onNewDropdownDimensions(int height) {
+        final int rescaledHeight = rescaleHeight(height);
+
+        if (rescaledHeight != mHeight) {
+            mHeight = rescaledHeight;
+            mSearchBox.setDimensions(0, 0, 0, rescaledHeight);
+            mSearchBox.onresize();
+        }
+    }
+
+    private String getInstantBaseUrl() {
+        if (mInstantBaseUrl == null) {
+            String url = mContext.getResources().getString(R.string.instant_base);
+            if (url.indexOf("{CID}") != -1) {
+                url = url.replace("{CID}",
+                        BrowserProvider.getClientId(mContext.getContentResolver()));
+            }
+            mInstantBaseUrl = url;
+        }
+
+        return mInstantBaseUrl;
+    }
+
+    // Indices of the columns in the below arrays.
+    private static final int COLUMN_INDEX_ID = 0;
+    private static final int COLUMN_INDEX_QUERY = 1;
+    private static final int COLUMN_INDEX_ICON = 2;
+    private static final int COLUMN_INDEX_TEXT_1 = 3;
+
+    private static final String[] COLUMNS_WITHOUT_DESCRIPTION = new String[] {
+        "_id",
+        SearchManager.SUGGEST_COLUMN_QUERY,
+        SearchManager.SUGGEST_COLUMN_ICON_1,
+        SearchManager.SUGGEST_COLUMN_TEXT_1,
+    };
+
+    private static class SuggestionsCursor extends AbstractCursor {
+        private final List<String> mSuggestions;
+
+        public SuggestionsCursor(List<String> suggestions) {
+            mSuggestions = suggestions;
+        }
+
+        @Override
+        public int getCount() {
+            return mSuggestions.size();
+        }
+
+        @Override
+        public String[] getColumnNames() {
+            return COLUMNS_WITHOUT_DESCRIPTION;
+        }
+
+        private String format(String suggestion) {
+            if (TextUtils.isEmpty(suggestion)) {
+                return "";
+            }
+            return suggestion;
+        }
+
+        @Override
+        public String getString(int column) {
+            if (mPos >= 0 && mPos < mSuggestions.size()) {
+              if ((column == COLUMN_INDEX_QUERY) || (column == COLUMN_INDEX_TEXT_1)) {
+                  return format(mSuggestions.get(mPos));
+              } else if (column == COLUMN_INDEX_ICON) {
+                  return String.valueOf(R.drawable.magnifying_glass);
+              }
+            }
+            return null;
+        }
+
+        @Override
+        public double getDouble(int column) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public float getFloat(int column) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public int getInt(int column) {
+            if (column == COLUMN_INDEX_ID) {
+                return mPos;
+            }
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public long getLong(int column) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public short getShort(int column) {
+          throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public boolean isNull(int column) {
+            throw new UnsupportedOperationException();
+        }
+    }
+}
diff --git a/src/com/android/browser/IntentHandler.java b/src/com/android/browser/IntentHandler.java
index e17fdc5..77db538 100644
--- a/src/com/android/browser/IntentHandler.java
+++ b/src/com/android/browser/IntentHandler.java
@@ -133,6 +133,10 @@
                 urlData = new UrlData(mSettings.getHomePage());
             }
 
+            if (intent.getBooleanExtra(Browser.EXTRA_CREATE_NEW_TAB, false)) {
+                mController.openTabAndShow(mTabControl.getCurrentTab(), urlData, false, null);
+                return;
+            }
             final String appId = intent
                     .getStringExtra(Browser.EXTRA_APPLICATION_ID);
             if ((Intent.ACTION_VIEW.equals(action)
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index 4119c29..f1939e4 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -24,8 +24,8 @@
 import android.view.Gravity;
 import android.view.KeyEvent;
 import android.view.Menu;
+import android.view.MotionEvent;
 import android.view.View;
-import android.view.ViewGroup;
 import android.view.WindowManager;
 import android.webkit.WebView;
 
@@ -37,8 +37,8 @@
     private static final String LOGTAG = "PhoneUi";
 
     private TitleBar mTitleBar;
-    private TitleBar mFakeTitleBar;
     private ActiveTabsPage mActiveTabsPage;
+    private TouchProxy mTitleOverlay;
 
     boolean mExtendedMenuOpen;
     boolean mOptionsMenuOpen;
@@ -49,12 +49,17 @@
      */
     public PhoneUi(Activity browser, UiController controller) {
         super(browser, controller);
-        mTitleBar = new TitleBar(mActivity, mUiController);
+        mTitleBar = new TitleBar(mActivity, mUiController, this);
         // mTitleBar will be always be shown in the fully loaded mode on
         // phone
         mTitleBar.setProgress(100);
-        mFakeTitleBar = new TitleBar(mActivity, mUiController);
+        mActivity.getActionBar().hide();
+    }
 
+    @Override
+    public void hideComboView() {
+        super.hideComboView();
+        mActivity.getActionBar().hide();
     }
 
     // webview factory
@@ -90,7 +95,13 @@
 
     @Override
     public void onDestroy() {
-        hideFakeTitleBar();
+        hideTitleBar();
+    }
+
+    @Override
+    public void editUrl(boolean clearInput) {
+        String url = getActiveTab().getUrl();
+        mUiController.startSearch(url);
     }
 
     @Override
@@ -107,14 +118,14 @@
     public void onProgressChanged(Tab tab) {
         if (tab.inForeground()) {
             int progress = tab.getLoadProgress();
-            mFakeTitleBar.setProgress(progress);
+            mTitleBar.setProgress(progress);
             if (progress == 100) {
                 if (!mOptionsMenuOpen || !mExtendedMenuOpen) {
-                    hideFakeTitleBar();
+                    hideTitleBar();
                 }
             } else {
                 if (!mOptionsMenuOpen || mExtendedMenuOpen) {
-                    showFakeTitleBar();
+                    showTitleBar();
                 }
             }
         }
@@ -130,7 +141,7 @@
             Log.e(LOGTAG, "active tab with no webview detected");
             return;
         }
-        view.setEmbeddedTitleBar(getEmbeddedTitleBar());
+        view.setEmbeddedTitleBar(getTitleBar());
         if (tab.isInVoiceSearchMode()) {
             showVoiceTitleBar(tab.getVoiceDisplayTitle());
         } else {
@@ -140,57 +151,23 @@
     }
 
     @Override
-    protected void attachFakeTitleBar(WebView mainView) {
-        WindowManager manager = (WindowManager)
-                mActivity.getSystemService(Context.WINDOW_SERVICE);
-
-        // Add the title bar to the window manager so it can receive
-        // touches while the menu is up
-        WindowManager.LayoutParams params =
-                new WindowManager.LayoutParams(
-                        ViewGroup.LayoutParams.MATCH_PARENT,
-                        ViewGroup.LayoutParams.WRAP_CONTENT,
-                        WindowManager.LayoutParams.TYPE_APPLICATION,
-                        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
-                        PixelFormat.TRANSLUCENT);
-        params.gravity = Gravity.TOP;
-        boolean atTop = mainView.getScrollY() == 0;
-        params.windowAnimations = atTop ? 0 : R.style.TitleBar;
-        manager.addView(mFakeTitleBar, params);
+    protected void showTitleBar() {
+        if (canShowTitleBar()) {
+            setTitleGravity(Gravity.TOP);
+            super.showTitleBar();
+        }
     }
 
     @Override
-    protected void hideFakeTitleBar() {
-        if (!isFakeTitleBarShowing()) return;
-        WindowManager.LayoutParams params =
-                (WindowManager.LayoutParams) mFakeTitleBar.getLayoutParams();
-        WebView mainView = mUiController.getCurrentWebView();
-        // Although we decided whether or not to animate based on the
-        // current
-        // scroll position, the scroll position may have changed since the
-        // fake title bar was displayed. Make sure it has the appropriate
-        // animation/lack thereof before removing.
-        params.windowAnimations =
-                mainView != null && mainView.getScrollY() == 0 ?
-                        0 : R.style.TitleBar;
-        WindowManager manager = (WindowManager) mActivity
-                .getSystemService(Context.WINDOW_SERVICE);
-        manager.updateViewLayout(mFakeTitleBar, params);
-        manager.removeView(mFakeTitleBar);
+    protected void hideTitleBar() {
+        if (isTitleBarShowing()) {
+            setTitleGravity(Gravity.NO_GRAVITY);
+            super.hideTitleBar();
+        }
     }
 
     @Override
-    protected boolean isFakeTitleBarShowing() {
-        return (mFakeTitleBar.getParent() != null);
-    }
-
-    @Override
-    protected TitleBarBase getFakeTitleBar() {
-        return mFakeTitleBar;
-    }
-
-    @Override
-    protected TitleBarBase getEmbeddedTitleBar() {
+    protected TitleBarBase getTitleBar() {
         return mTitleBar;
     }
 
@@ -200,7 +177,7 @@
     public void showActiveTabsPage() {
         mActiveTabsPage = new ActiveTabsPage(mActivity, mUiController);
         mTitleBar.setVisibility(View.GONE);
-        hideFakeTitleBar();
+        hideTitleBar();
         mContentView.addView(mActiveTabsPage, COVER_SCREEN_PARAMS);
         mActiveTabsPage.requestFocus();
     }
@@ -225,8 +202,14 @@
     @Override
     public void onOptionsMenuOpened() {
         mOptionsMenuOpen = true;
-        // options menu opened, show fake title bar
-        showFakeTitleBar();
+        // options menu opened, show title bar
+        showTitleBar();
+        if (mTitleOverlay == null) {
+            // This assumes that getTitleBar always returns the same View
+            mTitleOverlay = new TouchProxy(mActivity, getTitleBar());
+        }
+        mActivity.getWindowManager().addView(mTitleOverlay,
+                mTitleOverlay.getWindowLayoutParams());
     }
 
     @Override
@@ -234,32 +217,33 @@
         // Switching the menu to expanded view, so hide the
         // title bar.
         mExtendedMenuOpen = true;
-        hideFakeTitleBar();
+        hideTitleBar();
     }
 
     @Override
     public void onOptionsMenuClosed(boolean inLoad) {
         mOptionsMenuOpen = false;
-        if (!inLoad) {
-            hideFakeTitleBar();
+        mActivity.getWindowManager().removeView(mTitleOverlay);
+        if (!inLoad && !getTitleBar().hasFocus()) {
+            hideTitleBar();
         }
     }
 
     @Override
     public void onExtendedMenuClosed(boolean inLoad) {
         mExtendedMenuOpen = false;
-        showFakeTitleBar();
+        showTitleBar();
     }
 
     @Override
     public void onContextMenuCreated(Menu menu) {
-        hideFakeTitleBar();
+        hideTitleBar();
     }
 
     @Override
     public void onContextMenuClosed(Menu menu, boolean inLoad) {
         if (inLoad) {
-            showFakeTitleBar();
+            showTitleBar();
         }
     }
 
@@ -267,7 +251,7 @@
 
     @Override
     public void onActionModeStarted(ActionMode mode) {
-        hideFakeTitleBar();
+        hideTitleBar();
     }
 
     @Override
@@ -275,4 +259,32 @@
         return false;
     }
 
+    static class TouchProxy extends View {
+
+        View mTarget;
+
+        TouchProxy(Context context, View target) {
+            super(context);
+            mTarget = target;
+        }
+
+        @Override
+        public boolean dispatchTouchEvent(MotionEvent event) {
+            return mTarget.dispatchTouchEvent(event);
+        }
+
+        WindowManager.LayoutParams getWindowLayoutParams() {
+            WindowManager.LayoutParams params =
+                new WindowManager.LayoutParams(
+                        mTarget.getWidth(),
+                        mTarget.getHeight(),
+                        WindowManager.LayoutParams.TYPE_APPLICATION,
+                        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
+                        PixelFormat.TRANSPARENT);
+            params.gravity = Gravity.TOP | Gravity.LEFT;
+            params.y = mTarget.getTop();
+            params.x = mTarget.getLeft();
+            return params;
+        }
+    }
 }
diff --git a/src/com/android/browser/PieControl.java b/src/com/android/browser/PieControl.java
index 6326f2e..ed3e960 100644
--- a/src/com/android/browser/PieControl.java
+++ b/src/com/android/browser/PieControl.java
@@ -16,18 +16,34 @@
 
 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.graphics.drawable.BitmapDrawable;
+import android.os.Handler;
+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.HashMap;
-import java.util.Map;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * controller for Quick Controls pie menu
@@ -38,24 +54,25 @@
     private UiController mUiController;
     private XLargeUi mUi;
     private PieMenu mPie;
-    private ImageView mBack;
-    private ImageView mForward;
-    private ImageView mRefresh;
-    private ImageView mUrl;
-    private ImageView mOptions;
-    private ImageView mBookmarks;
-    private ImageView mNewTab;
-    private ImageView mClose;
-
-    private Map<View,Tab> mTabItems;
-
-    boolean mNewTabMode = true;
+    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, XLargeUi ui) {
         mActivity = activity;
         mUiController = controller;
         mUi = ui;
-        mTabItems = new HashMap<View, Tab>();
+        mItemSize = (int) activity.getResources().getDimension(R.dimen.qc_item_size);
     }
 
     protected void attachToContainer(FrameLayout container) {
@@ -64,42 +81,109 @@
             LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT,
                     LayoutParams.MATCH_PARENT);
             mPie.setLayoutParams(lp);
-            mForward = makeMenuView(R.drawable.ic_pie_forward);
-            mPie.addItem(mForward);
-            mRefresh = makeMenuView(R.drawable.ic_pie_refresh);
-            mPie.addItem(mRefresh);
-            mBack = makeMenuView(R.drawable.ic_pie_back);
+            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) {
+                    mActivity.openOptionsMenu();
+                }
+            });
+
+            mOptions.setPieView(menuview);
+            menuview.setAdapter(mMenuAdapter);
+            setClickListener(mBack,
+                    mRefresh,
+                    mForward,
+                    mUrl,
+                    mBookmarks,
+                    mNewTab,
+                    mClose
+                    );
+            // level 1
             mPie.addItem(mBack);
-            mUrl = makeMenuView(R.drawable.ic_pie_web);
             mPie.addItem(mUrl);
-            mBookmarks = makeMenuView(R.drawable.ic_pie_bookmarks);
             mPie.addItem(mBookmarks);
-            mNewTab = makeMenuView(R.drawable.ic_pie_new_tab);
+            // level 2
+            mPie.addItem(mForward);
+            mPie.addItem(mRefresh);
+            mPie.addItem(mShowTabs);
             mPie.addItem(mNewTab);
-            mOptions = makeMenuView(R.drawable.ic_pie_more);
+            mPie.addItem(mClose);
             mPie.addItem(mOptions);
-            setClickListener(mBack, mForward, mRefresh, mUrl, mOptions,
-                    mBookmarks, mNewTab);
             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().getCurrentIndex());
+
+    }
+
+    protected void onMenuOpened(Menu menu) {
+        mMenuAdapter.setMenu(menu);
+    }
+
     protected void removeFromContainer(FrameLayout container) {
         container.removeView(mPie);
     }
 
-    private ImageView makeMenuView(int image) {
-        ImageView item = new ImageView(mActivity);
-        item.setImageResource(image);
-        LayoutParams lp = new LayoutParams(48, 48);
-        item.setLayoutParams(lp);
-        return item;
+    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);
+        v.setBackgroundResource(R.drawable.qc_item_selector);
+        return v;
     }
 
-    private void setClickListener(View... views) {
-        for (View view : views) {
-            view.setOnClickListener(this);
+    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);
+        view.setBackgroundResource(R.drawable.qc_item_selector);
+        return new PieItem(view, l);
+    }
+
+    private void setClickListener(PieItem... items) {
+        for (PieItem item : items) {
+            item.getView().setOnClickListener(this);
         }
     }
 
@@ -112,41 +196,167 @@
 
     @Override
     public void onClick(View v) {
-        mPie.show(false);
         Tab tab = mUiController.getTabControl().getCurrentTab();
         WebView web = tab.getWebView();
-        if (mBack == v) {
+        if (mBack.getView() == v) {
             web.goBack();
-        } else if (mForward == v) {
+        } else if (mForward.getView() == v) {
             web.goForward();
-        } else if (mRefresh == v) {
+        } else if (mRefresh.getView() == v) {
             if (tab.inPageLoad()) {
                 web.stopLoading();
             } else {
                 web.reload();
             }
-        } else if (mUrl == v) {
-            mUi.showFakeTitleBarAndEdit();
-        } else if (mOptions == v) {
-            mActivity.openOptionsMenu();
-        } else if (mBookmarks == v) {
+        } else if (mUrl.getView() == v) {
+            mUi.showTitleBarAndEdit();
+        } else if (mBookmarks.getView() == v) {
             mUiController.bookmarksOrHistoryPicker(false);
-        } else if (mNewTab == v) {
+        } else if (mNewTab.getView() == v) {
             mUiController.openTabToHomePage();
-            mUi.showFakeTitleBarAndEdit();
-        } else if (mClose == v) {
+            mUi.showTitleBarAndEdit();
+        } else if (mClose.getView() == v) {
             mUiController.closeCurrentTab();
-        } else {
-            Tab ntab = mTabItems.get(v);
-            if (ntab != null) {
-                mUiController.switchToTab(mUiController.getTabControl().getTabIndex(ntab));
-            }
         }
     }
 
     @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(mUiController.getTabControl()
+                            .getTabIndex(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/ScrollWebView.java b/src/com/android/browser/ScrollWebView.java
index e2ef902..8c89e51 100644
--- a/src/com/android/browser/ScrollWebView.java
+++ b/src/com/android/browser/ScrollWebView.java
@@ -1,36 +1,41 @@
 /*
  * 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
+ * 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
+ * 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.
+ * 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.util.AttributeSet;
+import android.view.MotionEvent;
 import android.view.View;
 import android.webkit.WebView;
 
 import java.util.Map;
 
 /**
- *  Manage WebView scroll events
+ * Manage WebView scroll events
  */
 public class ScrollWebView extends WebView implements Runnable {
 
     private ScrollListener mScrollListener;
     private boolean mIsCancelled;
     private boolean mBackgroundRemoved = false;
+    private boolean mUserInitiated = false;
+    private TitleBarBase mTitleBar;
+    private Bitmap mBitmap;
 
     /**
      * @param context
@@ -48,8 +53,8 @@
      * @param attrs
      * @param defStyle
      */
-    public ScrollWebView(Context context, AttributeSet attrs, int defStyle,
-            boolean privateBrowsing) {
+    public ScrollWebView(
+            Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) {
         super(context, attrs, defStyle, privateBrowsing);
     }
 
@@ -68,10 +73,15 @@
         super(context);
     }
 
+    @Override
+    protected int getTitleHeight() {
+        return (mTitleBar != null) ? mTitleBar.getEmbeddedHeight() : 0;
+    }
+
     // scroll runnable implementation
     public void run() {
         if (!mIsCancelled && (mScrollListener != null)) {
-            mScrollListener.onScroll(getVisibleTitleHeight());
+            mScrollListener.onScroll(getVisibleTitleHeight(), mUserInitiated);
         }
     }
 
@@ -82,12 +92,28 @@
     @Override
     public void setEmbeddedTitleBar(final View title) {
         super.setEmbeddedTitleBar(title);
+        mTitleBar = (TitleBarBase) title;
         if (title != null && mScrollListener != null) {
             // allow the scroll listener to initialize its state
             post(this);
         }
     }
 
+    public boolean hasTitleBar() {
+        return (mTitleBar != null);
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent evt) {
+        if (MotionEvent.ACTION_DOWN == evt.getActionMasked()) {
+            mUserInitiated = true;
+        } else if (MotionEvent.ACTION_UP == evt.getActionMasked()
+                || (MotionEvent.ACTION_CANCEL == evt.getActionMasked())) {
+            mUserInitiated = false;
+        }
+        return super.onTouchEvent(evt);
+    }
+
     @Override
     public void stopScroll() {
         mIsCancelled = true;
@@ -111,7 +137,7 @@
     // callback for scroll events
 
     interface ScrollListener {
-        public void onScroll(int visibleTitleHeight);
+        public void onScroll(int visibleTitleHeight, boolean userInitiated);
     }
 
     @Override
@@ -126,4 +152,5 @@
             });
         }
     }
+
 }
diff --git a/src/com/android/browser/SuggestionsAdapter.java b/src/com/android/browser/SuggestionsAdapter.java
index 6e55539..6a9111f 100644
--- a/src/com/android/browser/SuggestionsAdapter.java
+++ b/src/com/android/browser/SuggestionsAdapter.java
@@ -24,6 +24,7 @@
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.provider.BrowserContract;
+import android.text.Html;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -44,12 +45,12 @@
 public class SuggestionsAdapter extends BaseAdapter implements Filterable,
         OnClickListener {
 
-    static final int TYPE_BOOKMARK = 0;
-    static final int TYPE_HISTORY = 1;
-    static final int TYPE_SUGGEST_URL = 2;
-    static final int TYPE_SEARCH = 3;
-    static final int TYPE_SUGGEST = 4;
-    static final int TYPE_VOICE_SEARCH = 5;
+    public static final int TYPE_BOOKMARK = 0;
+    public static final int TYPE_HISTORY = 1;
+    public static final int TYPE_SUGGEST_URL = 2;
+    public static final int TYPE_SEARCH = 3;
+    public static final int TYPE_SUGGEST = 4;
+    public static final int TYPE_VOICE_SEARCH = 5;
 
     private static final String[] COMBINED_PROJECTION =
             {BrowserContract.Combined._ID, BrowserContract.Combined.TITLE,
@@ -58,16 +59,16 @@
     private static final String COMBINED_SELECTION =
             "(url LIKE ? OR url LIKE ? OR url LIKE ? OR url LIKE ? OR title LIKE ?)";
 
-    Context mContext;
-    Filter mFilter;
+    final Context mContext;
+    final Filter mFilter;
     SuggestionResults mMixedResults;
     List<SuggestItem> mSuggestResults, mFilterResults;
     List<CursorSource> mSources;
     boolean mLandscapeMode;
-    CompletionListener mListener;
-    int mLinesPortrait;
-    int mLinesLandscape;
-    Object mResultsLock = new Object();
+    final CompletionListener mListener;
+    final int mLinesPortrait;
+    final int mLinesLandscape;
+    final Object mResultsLock = new Object();
     List<String> mVoiceResults;
     boolean mReverseResults;
     boolean mIncognitoMode;
@@ -87,6 +88,7 @@
                 getInteger(R.integer.max_suggest_lines_portrait);
         mLinesLandscape = mContext.getResources().
                 getInteger(R.integer.max_suggest_lines_landscape);
+
         mFilter = new SuggestFilter();
         addSource(new CombinedCursor());
     }
@@ -111,13 +113,12 @@
     @Override
     public void onClick(View v) {
         SuggestItem item = (SuggestItem) ((View) v.getParent()).getTag();
+
         if (R.id.icon2 == v.getId()) {
             // replace input field text with suggestion text
-            mListener.onSearch(item.title);
+            mListener.onSearch(getSuggestionUrl(item));
         } else {
-            mListener.onSelect(
-                    (TextUtils.isEmpty(item.url)? item.title : item.url),
-                    item.type, item.extra);
+            mListener.onSelect(getSuggestionUrl(item), item.type, item.extra);
         }
     }
 
@@ -179,7 +180,7 @@
         ImageView ic1 = (ImageView) view.findViewById(R.id.icon1);
         View ic2 = view.findViewById(R.id.icon2);
         View div = view.findViewById(R.id.divider);
-        tv1.setText(item.title);
+        tv1.setText(Html.fromHtml(item.title));
         if (TextUtils.isEmpty(item.url)) {
             tv2.setVisibility(View.GONE);
         } else {
@@ -282,11 +283,16 @@
             }
         }
 
+        private boolean shouldProcessEmptyQuery() {
+            final SearchEngine searchEngine = BrowserSettings.getInstance().getSearchEngine();
+            return searchEngine.wantsEmptyQuery();
+        }
+
         @Override
         protected FilterResults performFiltering(CharSequence constraint) {
             FilterResults res = new FilterResults();
             if (mVoiceResults == null) {
-                if (TextUtils.isEmpty(constraint)) {
+                if (TextUtils.isEmpty(constraint) && !shouldProcessEmptyQuery()) {
                     res.count = 0;
                     res.values = null;
                     return res;
@@ -313,8 +319,7 @@
         }
 
         void mixResults(List<SuggestItem> results) {
-            int maxLines = mLandscapeMode ? mLinesLandscape : mLinesPortrait;
-            maxLines = (int) Math.ceil(maxLines / 2.0);
+            int maxLines = getMaxLines();
             for (int i = 0; i < mSources.size(); i++) {
                 CursorSource s = mSources.get(i);
                 int n = Math.min(s.getCount(), maxLines);
@@ -334,7 +339,12 @@
                 notifyDataSetChanged();
             }
         }
+    }
 
+    private int getMaxLines() {
+        int maxLines = mLandscapeMode ? mLinesLandscape : mLinesPortrait;
+        maxLines = (int) Math.ceil(maxLines / 2.0);
+        return maxLines;
     }
 
     /**
@@ -366,11 +376,7 @@
         }
 
         int getLineCount() {
-            if (mLandscapeMode) {
-                return Math.min(mLinesLandscape, items.size());
-            } else {
-                return Math.min(mLinesPortrait, items.size());
-            }
+            return Math.min((mLandscapeMode ? mLinesLandscape : mLinesPortrait), items.size());
         }
 
         @Override
@@ -392,11 +398,11 @@
     /**
      * data object to hold suggestion values
      */
-    class SuggestItem {
-        String title;
-        String url;
-        int type;
-        String extra;
+    public class SuggestItem {
+        public String title;
+        public String url;
+        public int type;
+        public String extra;
 
         public SuggestItem(String text, String u, int t) {
             title = text;
@@ -543,8 +549,8 @@
             if (mCursor != null) {
                 mCursor.close();
             }
+            SearchEngine searchEngine = BrowserSettings.getInstance().getSearchEngine();
             if (!TextUtils.isEmpty(constraint)) {
-                SearchEngine searchEngine = BrowserSettings.getInstance().getSearchEngine();
                 if (searchEngine != null && searchEngine.supportsSuggestions()) {
                     mCursor = searchEngine.getSuggestions(mContext, constraint.toString());
                     if (mCursor != null) {
@@ -552,19 +558,44 @@
                     }
                 }
             } else {
+                if (searchEngine.wantsEmptyQuery()) {
+                    mCursor = searchEngine.getSuggestions(mContext, "");
+                }
                 mCursor = null;
             }
         }
 
     }
 
+    private boolean useInstant() {
+        return BrowserSettings.getInstance().useInstant();
+    }
+
     public void clearCache() {
         mFilterResults = null;
         mSuggestResults = null;
+        notifyDataSetInvalidated();
     }
 
     public void setIncognitoMode(boolean incognito) {
         mIncognitoMode = incognito;
         clearCache();
     }
+
+    static String getSuggestionTitle(SuggestItem item) {
+        // There must be a better way to strip HTML from things.
+        // This method is used in multiple places. It is also more
+        // expensive than a standard html escaper.
+        return (item.title != null) ? Html.fromHtml(item.title).toString() : null;
+    }
+
+    static String getSuggestionUrl(SuggestItem item) {
+        final String title = SuggestionsAdapter.getSuggestionTitle(item);
+
+        if (TextUtils.isEmpty(item.url)) {
+            return title;
+        }
+
+        return item.url;
+    }
 }
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index c4897f2..bab3458 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -136,6 +136,8 @@
     // AsyncTask for downloading touch icons
     DownloadTouchIcon mTouchIconLoader;
 
+    private Bitmap mScreenshot;
+
     // All the state needed for a page
     private static class PageState {
         String mUrl;
@@ -191,6 +193,7 @@
     static final String APPID = "appid";
     static final String ORIGINALURL = "originalUrl";
     static final String INCOGNITO = "privateBrowsingEnabled";
+    static final String SCREENSHOT = "screenshot";
 
     // -------------------------------------------------------------------------
 
@@ -1583,6 +1586,13 @@
         return UrlUtils.filteredUrl(mCurrentState.mUrl);
     }
 
+    String getOriginalUrl() {
+        if (mMainView == null) {
+            return "";
+        }
+        return UrlUtils.filteredUrl(mMainView.getOriginalUrl());
+    }
+
     /**
      * Get the title of this tab.
      */
@@ -1713,6 +1723,9 @@
             mSavedState.putInt(PARENTTAB, mWebViewController.getTabControl().getTabIndex(
                     mParentTab));
         }
+        if (mScreenshot != null) {
+            mSavedState.putParcelable(SCREENSHOT, mScreenshot);
+        }
         return true;
     }
 
@@ -1728,6 +1741,7 @@
         mSavedState = null;
         mCloseOnExit = b.getBoolean(CLOSEONEXIT);
         mAppId = b.getString(APPID);
+        mScreenshot = b.getParcelable(SCREENSHOT);
 
         final WebBackForwardList list = mMainView.restoreState(b);
         if (list == null) {
@@ -1750,4 +1764,13 @@
             }
         }
     };
+
+    public void setScreenshot(Bitmap screenshot) {
+        mScreenshot = screenshot;
+    }
+
+    public Bitmap getScreenshot() {
+        return mScreenshot;
+    }
+
 }
diff --git a/src/com/android/browser/TabBar.java b/src/com/android/browser/TabBar.java
index d115f1a..1d17cb3 100644
--- a/src/com/android/browser/TabBar.java
+++ b/src/com/android/browser/TabBar.java
@@ -75,8 +75,6 @@
 
     private Map<Tab, TabView> mTabMap;
 
-    private int mVisibleTitleHeight;
-
     private Drawable mGenericFavicon;
 
     private int mCurrentTextureWidth = 0;
@@ -87,6 +85,7 @@
 
     private final Paint mActiveShaderPaint = new Paint();
     private final Paint mInactiveShaderPaint = new Paint();
+    private final Paint mFocusPaint = new Paint();
     private final Matrix mActiveMatrix = new Matrix();
     private final Matrix mInactiveMatrix = new Matrix();
 
@@ -96,7 +95,6 @@
     private int mTabOverlap;
     private int mAddTabOverlap;
     private int mTabSliceWidth;
-    private int mTabPadding;
     private boolean mUseQuickControls;
 
     public TabBar(Activity activity, UiController controller, XLargeUi ui) {
@@ -122,14 +120,11 @@
         mGenericFavicon = res.getDrawable(R.drawable.app_web_browser_sm);
 
         updateTabs(mUiController.getTabs());
-
-        mVisibleTitleHeight = 1;
         mButtonWidth = -1;
         // tab dimensions
         mTabOverlap = (int) res.getDimension(R.dimen.tab_overlap);
         mAddTabOverlap = (int) res.getDimension(R.dimen.tab_addoverlap);
         mTabSliceWidth = (int) res.getDimension(R.dimen.tab_slice);
-        mTabPadding = (int) res.getDimension(R.dimen.tab_padding);
 
         mActiveShaderPaint.setStyle(Paint.Style.FILL);
         mActiveShaderPaint.setAntiAlias(true);
@@ -137,6 +132,10 @@
         mInactiveShaderPaint.setStyle(Paint.Style.FILL);
         mInactiveShaderPaint.setAntiAlias(true);
 
+        mFocusPaint.setStyle(Paint.Style.STROKE);
+        mFocusPaint.setStrokeWidth(res.getDimension(R.dimen.tab_focus_stroke));
+        mFocusPaint.setAntiAlias(true);
+        mFocusPaint.setColor(res.getColor(R.color.tabFocusHighlight));
     }
 
     void setUseQuickControls(boolean useQuickControls) {
@@ -198,14 +197,16 @@
             mUiController.openTabToHomePage();
         } else if (mTabs.getSelectedTab() == view) {
             if (mUseQuickControls) {
-                if (mUi.isFakeTitleBarShowing() && !isLoading()) {
-                    mUi.hideFakeTitleBar();
+                if (mUi.isTitleBarShowing() && !isLoading()) {
+                    mUi.stopEditingUrl();
+                    mUi.hideTitleBar();
                 } else {
                     mUi.stopWebViewScrolling();
-                    mUi.showFakeTitleBarAndEdit();
+                    mUi.showTitleBarAndEdit();
                 }
-            } else if (mUi.isFakeTitleBarShowing() && !isLoading()) {
-                mUi.hideFakeTitleBar();
+            } else if (mUi.isTitleBarShowing() && !isLoading()) {
+                mUi.stopEditingUrl();
+                mUi.hideTitleBar();
             } else {
                 showUrlBar();
             }
@@ -220,7 +221,7 @@
 
     private void showUrlBar() {
         mUi.stopWebViewScrolling();
-        mUi.showFakeTitleBar();
+        mUi.showTitleBar();
     }
 
     void showTitleBarIndicator(boolean show) {
@@ -251,22 +252,25 @@
 
     // callback after fake titlebar is hidden
     void onHideTitleBar() {
-        showTitleBarIndicator(mVisibleTitleHeight == 0);
         Tab tab = mTabControl.getCurrentTab();
-        tab.getWebView().requestFocus();
+        WebView w = tab.getWebView();
+        if (w != null) {
+            showTitleBarIndicator(w.getVisibleTitleHeight() == 0);
+        }
     }
 
     // webview scroll listener
 
     @Override
-    public void onScroll(int visibleTitleHeight) {
+    public void onScroll(int visibleTitleHeight, boolean userInitiated) {
         if (mUseQuickControls) return;
         // isLoading is using the current tab, which initially might not be set yet
         if (mTabControl.getCurrentTab() != null
                 && !isLoading()) {
             if (visibleTitleHeight == 0) {
-                if (!showsTitleBarIndicator()) {
-                    mUi.hideFakeTitleBar();
+                if (!showsTitleBarIndicator()
+                        && (!mUi.isEditingUrl() || userInitiated)) {
+                    mUi.hideTitleBar();
                     showTitleBarIndicator(true);
                 }
             } else {
@@ -275,7 +279,6 @@
                 }
             }
         }
-        mVisibleTitleHeight = visibleTitleHeight;
     }
 
     @Override
@@ -316,6 +319,7 @@
         boolean mSelected;
         boolean mInLoad;
         Path mPath;
+        Path mFocusPath;
         int[] mWindowPos;
 
         /**
@@ -325,6 +329,7 @@
             super(context);
             setWillNotDraw(false);
             mPath = new Path();
+            mFocusPath = new Path();
             mWindowPos = new int[2];
             mTab = tab;
             setGravity(Gravity.CENTER_VERTICAL);
@@ -402,6 +407,8 @@
             lp.width = selected ? mTabWidthSelected : mTabWidthUnselected;
             lp.height =  LayoutParams.MATCH_PARENT;
             setLayoutParams(lp);
+            setFocusable(!selected);
+            postInvalidate();
         }
 
         void setDisplayTitle(String title) {
@@ -443,6 +450,7 @@
         protected void onLayout(boolean changed, int l, int t, int r, int b) {
             super.onLayout(changed, l, t, r, b);
             setTabPath(mPath, 0, 0, r - l, b - t);
+            setFocusPath(mFocusPath, 0, 0, r - l, b - t);
         }
 
         @Override
@@ -467,12 +475,14 @@
                     mInactiveShaderPaint.setShader(mInactiveShader);
                 }
             }
-
-            int state = canvas.save();
-            getLocationInWindow(mWindowPos);
-            Paint paint = mSelected ? mActiveShaderPaint : mInactiveShaderPaint;
-            drawClipped(canvas, paint, mPath, mWindowPos[0]);
-            canvas.restoreToCount(state);
+            // add some monkey protection
+            if ((mActiveShader != null) && (mInactiveShader != null)) {
+                int state = canvas.save();
+                getLocationInWindow(mWindowPos);
+                Paint paint = mSelected ? mActiveShaderPaint : mInactiveShaderPaint;
+                drawClipped(canvas, paint, mPath, mWindowPos[0]);
+                canvas.restoreToCount(state);
+            }
             super.dispatchDraw(canvas);
         }
 
@@ -482,6 +492,9 @@
             matrix.setTranslate(-left, 0.0f);
             (mSelected ? mActiveShader : mInactiveShader).setLocalMatrix(matrix);
             canvas.drawPath(clipPath, paint);
+            if (isFocused()) {
+                canvas.drawPath(mFocusPath, mFocusPaint);
+            }
         }
 
         private void setTabPath(Path path, int l, int t, int r, int b) {
@@ -493,6 +506,14 @@
             path.close();
         }
 
+        private void setFocusPath(Path path, int l, int t, int r, int b) {
+            path.reset();
+            path.moveTo(l, b);
+            path.lineTo(l, t);
+            path.lineTo(r - mTabSliceWidth, t);
+            path.lineTo(r, b);
+        }
+
     }
 
     static Drawable createFaviconBackground(Context context) {
@@ -588,8 +609,7 @@
             WebView webview = tab.getWebView();
             if (webview != null) {
                 int h = webview.getVisibleTitleHeight();
-                mVisibleTitleHeight = h -1;
-                onScroll(h);
+                onScroll(h, true);
             }
         }
     }
diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java
index bdef82e..686416c 100644
--- a/src/com/android/browser/TitleBar.java
+++ b/src/com/android/browser/TitleBar.java
@@ -16,92 +16,65 @@
 
 package com.android.browser;
 
-import com.android.common.speech.LoggingEvents;
-
 import android.app.Activity;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.res.Resources;
-import android.graphics.drawable.Animatable;
 import android.graphics.drawable.Drawable;
-import android.os.Handler;
-import android.os.Message;
 import android.speech.RecognizerIntent;
 import android.text.SpannableString;
 import android.text.Spanned;
 import android.text.TextUtils;
 import android.text.style.ImageSpan;
-import android.util.DisplayMetrics;
-import android.util.TypedValue;
 import android.view.ContextMenu;
 import android.view.LayoutInflater;
 import android.view.MenuInflater;
-import android.view.MotionEvent;
 import android.view.View;
-import android.view.ViewConfiguration;
+import android.view.View.OnClickListener;
+import android.view.View.OnFocusChangeListener;
+import android.widget.ImageButton;
 import android.widget.ImageView;
-import android.widget.ProgressBar;
-import android.widget.TextView;
 
 /**
  * This class represents a title bar for a particular "tab" or "window" in the
  * browser.
  */
-public class TitleBar extends TitleBarBase {
+public class TitleBar extends TitleBarBase implements OnFocusChangeListener,
+        OnClickListener {
 
     private Activity mActivity;
-    private UiController mController;
-    private TextView mTitle;
-    private ImageView mRtButton;
-    private Drawable mCircularProgress;
-    private ProgressBar mHorizontalProgress;
-    private ImageView mStopButton;
+    private ImageButton mBookmarkButton;
+    private PageProgressView mHorizontalProgress;
+    private ImageButton mStopButton;
     private Drawable mBookmarkDrawable;
     private Drawable mVoiceDrawable;
     private boolean mInLoad;
-    private View mTitleBg;
-    private MyHandler mHandler;
     private Intent mVoiceSearchIntent;
-    private boolean mInVoiceMode;
-    private Drawable mVoiceModeBackground;
-    private Drawable mNormalBackground;
-    private Drawable mLoadingBackground;
     private ImageSpan mArcsSpan;
-    private int mLeftMargin;
-    private int mRightMargin;
 
-    private static int LONG_PRESS = 1;
-
-    public TitleBar(Activity activity, UiController controller) {
-        super(activity);
-        mHandler = new MyHandler();
+    public TitleBar(Activity activity, UiController controller, PhoneUi ui) {
+        super(activity, controller, ui);
         LayoutInflater factory = LayoutInflater.from(activity);
         factory.inflate(R.layout.title_bar, this);
         mActivity = activity;
-        mController = controller;
 
-        mTitle = (TextView) findViewById(R.id.title);
-        mTitle.setCompoundDrawablePadding(5);
+        mUrlInput = (UrlInputView) findViewById(R.id.url_input);
+        mUrlInput.setCompoundDrawablePadding(5);
+        mUrlInput.setContainer(this);
+        mUrlInput.setSelectAllOnFocus(true);
+        mUrlInput.setController(mUiController);
+        mUrlInput.setUrlInputListener(this);
+        mUrlInput.setOnFocusChangeListener(this);
 
-        mTitleBg = findViewById(R.id.title_bg);
         mLockIcon = (ImageView) findViewById(R.id.lock);
         mFavicon = (ImageView) findViewById(R.id.favicon);
-        mStopButton = (ImageView) findViewById(R.id.stop);
+        mStopButton = (ImageButton) findViewById(R.id.stop);
+        mBookmarkButton = (ImageButton) findViewById(R.id.bookmark);
+        mStopButton.setOnClickListener(this);
+        mBookmarkButton.setOnClickListener(this);
 
-        mRtButton = (ImageView) findViewById(R.id.rt_btn);
-        Resources resources = activity.getResources();
-        mCircularProgress = resources.getDrawable(
-                com.android.internal.R.drawable.search_spinner);
-        DisplayMetrics metrics = resources.getDisplayMetrics();
-        mLeftMargin = (int) TypedValue.applyDimension(
-                TypedValue.COMPLEX_UNIT_DIP, 8f, metrics);
-        mRightMargin = (int) TypedValue.applyDimension(
-                TypedValue.COMPLEX_UNIT_DIP, 6f, metrics);
-        int iconDimension = (int) TypedValue.applyDimension(
-                TypedValue.COMPLEX_UNIT_DIP, 20f, metrics);
-        mCircularProgress.setBounds(0, 0, iconDimension, iconDimension);
-        mHorizontalProgress = (ProgressBar) findViewById(
+        mHorizontalProgress = (PageProgressView) findViewById(
                 R.id.progress_horizontal);
         mVoiceSearchIntent = new Intent(RecognizerIntent.ACTION_WEB_SEARCH);
         mVoiceSearchIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
@@ -115,40 +88,18 @@
         PackageManager pm = activity.getPackageManager();
         ResolveInfo ri = pm.resolveActivity(mVoiceSearchIntent,
                 PackageManager.MATCH_DEFAULT_ONLY);
+        Resources resources = getResources();
         if (ri == null) {
             mVoiceSearchIntent = null;
         } else {
             mVoiceDrawable = resources.getDrawable(
                     android.R.drawable.ic_btn_speak_now);
         }
-        mBookmarkDrawable = mRtButton.getDrawable();
-        mVoiceModeBackground = resources.getDrawable(
-                R.drawable.title_voice);
-        mNormalBackground = mTitleBg.getBackground();
-        mLoadingBackground = resources.getDrawable(R.drawable.title_loading);
+        mBookmarkDrawable = mBookmarkButton.getDrawable();
         mArcsSpan = new ImageSpan(activity, R.drawable.arcs,
                 ImageSpan.ALIGN_BASELINE);
     }
 
-    private class MyHandler extends Handler {
-        @Override
-        public void handleMessage(Message msg) {
-            if (msg.what == LONG_PRESS) {
-                // Prevent the normal action from happening by setting the title
-                // bar's state to false.
-                mTitleBg.setPressed(false);
-                // Need to call a special method on BrowserActivity for when the
-                // fake title bar is up, because its ViewGroup does not show a
-                // context menu.
-                // TODO:
-                // this test is not valid for all UIs; fix later
-                if (getParent() != null) {
-                    mActivity.openContextMenu(TitleBar.this);
-                }
-            }
-        }
-    };
-
     @Override
     public void createContextMenu(ContextMenu menu) {
         MenuInflater inflater = mActivity.getMenuInflater();
@@ -156,93 +107,6 @@
         mActivity.onCreateContextMenu(menu, this, null);
     }
 
-    @Override
-    public boolean onTouchEvent(MotionEvent event) {
-        ImageView button = mInLoad ? mStopButton : mRtButton;
-        switch (event.getAction()) {
-            case MotionEvent.ACTION_DOWN:
-                // Make all touches hit either the textfield or the button,
-                // depending on which side of the right edge of the textfield
-                // they hit.
-                if ((int) event.getX() > mTitleBg.getRight()) {
-                    button.setPressed(true);
-                } else {
-                    mTitleBg.setPressed(true);
-                    mHandler.sendMessageDelayed(mHandler.obtainMessage(
-                            LONG_PRESS),
-                            ViewConfiguration.getLongPressTimeout());
-                }
-                break;
-            case MotionEvent.ACTION_MOVE:
-                int slop = ViewConfiguration.get(mActivity)
-                        .getScaledTouchSlop();
-                if ((int) event.getY() > getHeight() + slop) {
-                    // We only trigger the actions in ACTION_UP if one or the
-                    // other is pressed.  Since the user moved off the title
-                    // bar, mark both as not pressed.
-                    mTitleBg.setPressed(false);
-                    button.setPressed(false);
-                    mHandler.removeMessages(LONG_PRESS);
-                    break;
-                }
-                int x = (int) event.getX();
-                int titleRight = mTitleBg.getRight();
-                if (mTitleBg.isPressed() && x > titleRight + slop) {
-                    mTitleBg.setPressed(false);
-                    mHandler.removeMessages(LONG_PRESS);
-                } else if (button.isPressed() && x < titleRight - slop) {
-                    button.setPressed(false);
-                }
-                break;
-            case MotionEvent.ACTION_CANCEL:
-                button.setPressed(false);
-                mTitleBg.setPressed(false);
-                mHandler.removeMessages(LONG_PRESS);
-                break;
-            case MotionEvent.ACTION_UP:
-                if (button.isPressed()) {
-                    if (mInVoiceMode) {
-                        if (mController.getTabControl().getCurrentTab()
-                                .voiceSearchSourceIsGoogle()) {
-                            Intent i = new Intent(
-                                    LoggingEvents.ACTION_LOG_EVENT);
-                            i.putExtra(LoggingEvents.EXTRA_EVENT,
-                                    LoggingEvents.VoiceSearch.RETRY);
-                            mActivity.sendBroadcast(i);
-                        }
-                        mActivity.startActivity(mVoiceSearchIntent);
-                    } else if (mInLoad) {
-                        mController.stopLoading();
-                    } else {
-                        mController.bookmarkCurrentPage(
-                                AddBookmarkPage.DEFAULT_FOLDER_ID);
-                    }
-                    button.setPressed(false);
-                } else if (mTitleBg.isPressed()) {
-                    mHandler.removeMessages(LONG_PRESS);
-                    if (mInVoiceMode) {
-                        if (mController.getTabControl().getCurrentTab()
-                                .voiceSearchSourceIsGoogle()) {
-                            Intent i = new Intent(
-                                    LoggingEvents.ACTION_LOG_EVENT);
-                            i.putExtra(LoggingEvents.EXTRA_EVENT,
-                                    LoggingEvents.VoiceSearch.N_BEST_REVEAL);
-                            mActivity.sendBroadcast(i);
-                        }
-                        mController.showVoiceSearchResults(
-                                mTitle.getText().toString().trim());
-                    } else {
-                        mController.editUrl();
-                    }
-                    mTitleBg.setPressed(false);
-                }
-                break;
-            default:
-                break;
-        }
-        return true;
-    }
-
     /**
      * Change the TitleBar to or from voice mode.  If there is no package to
      * handle voice search, the TitleBar cannot be set to voice mode.
@@ -253,30 +117,22 @@
         mInVoiceMode = inVoiceMode && mVoiceSearchIntent != null;
         Drawable titleDrawable;
         if (mInVoiceMode) {
-            mRtButton.setImageDrawable(mVoiceDrawable);
-            titleDrawable = mVoiceModeBackground;
-            mTitle.setEllipsize(null);
-            mRtButton.setVisibility(View.VISIBLE);
+            mBookmarkButton.setImageDrawable(mVoiceDrawable);
+            mUrlInput.setEllipsize(null);
+            mBookmarkButton.setVisibility(View.VISIBLE);
             mStopButton.setVisibility(View.GONE);
-            mTitleBg.setBackgroundDrawable(titleDrawable);
-            mTitleBg.setPadding(mLeftMargin, mTitleBg.getPaddingTop(),
-                    mRightMargin, mTitleBg.getPaddingBottom());
         } else {
             if (mInLoad) {
-                titleDrawable = mLoadingBackground;
-                mRtButton.setVisibility(View.GONE);
+                mBookmarkButton.setVisibility(View.GONE);
                 mStopButton.setVisibility(View.VISIBLE);
             } else {
-                titleDrawable = mNormalBackground;
-                mRtButton.setVisibility(View.VISIBLE);
+                mBookmarkButton.setVisibility(View.VISIBLE);
                 mStopButton.setVisibility(View.GONE);
-                mRtButton.setImageDrawable(mBookmarkDrawable);
+                mBookmarkButton.setImageDrawable(mBookmarkDrawable);
             }
-            mTitle.setEllipsize(TextUtils.TruncateAt.END);
-            mTitleBg.setBackgroundDrawable(titleDrawable);
-            mTitleBg.setPadding(mLeftMargin, 0, mRightMargin, 0);
+            mUrlInput.setEllipsize(TextUtils.TruncateAt.END);
         }
-        mTitle.setSingleLine(!mInVoiceMode);
+        mUrlInput.setSingleLine(!mInVoiceMode);
     }
 
     /**
@@ -284,33 +140,21 @@
      */
     @Override
     void setProgress(int newProgress) {
-        if (newProgress >= mHorizontalProgress.getMax()) {
-            mTitle.setCompoundDrawables(null, null, null, null);
-            ((Animatable) mCircularProgress).stop();
-            mHorizontalProgress.setVisibility(View.INVISIBLE);
+        if (newProgress >= PROGRESS_MAX) {
+            mHorizontalProgress.setVisibility(View.GONE);
             if (!mInVoiceMode) {
-                mRtButton.setImageDrawable(mBookmarkDrawable);
-                mRtButton.setVisibility(View.VISIBLE);
+                mBookmarkButton.setImageDrawable(mBookmarkDrawable);
+                mBookmarkButton.setVisibility(View.VISIBLE);
                 mStopButton.setVisibility(View.GONE);
-                mTitleBg.setBackgroundDrawable(mNormalBackground);
-                mTitleBg.setPadding(mLeftMargin, 0, mRightMargin, 0);
             }
             mInLoad = false;
         } else {
-            mHorizontalProgress.setProgress(newProgress);
-            if (!mInLoad && getWindowToken() != null) {
-                // checking the window token lets us be sure that we
-                // are attached to a window before starting the animation,
-                // preventing a potential race condition
-                // (fix for bug http://b/2115736)
-                mTitle.setCompoundDrawables(null, null, mCircularProgress,
-                        null);
-                ((Animatable) mCircularProgress).start();
+            mHorizontalProgress.setProgress(newProgress * PageProgressView.MAX_PROGRESS
+                    / PROGRESS_MAX);
+            if (!mInLoad) {
                 mHorizontalProgress.setVisibility(View.VISIBLE);
                 if (!mInVoiceMode) {
-                    mTitleBg.setBackgroundDrawable(mLoadingBackground);
-                    mTitleBg.setPadding(mLeftMargin, 0, mRightMargin, 0);
-                    mRtButton.setVisibility(View.GONE);
+                    mBookmarkButton.setVisibility(View.GONE);
                     mStopButton.setVisibility(View.VISIBLE);
                 }
                 mInLoad = true;
@@ -326,7 +170,7 @@
     @Override
     void setDisplayTitle(String title) {
         if (title == null) {
-            mTitle.setText(R.string.new_tab);
+            mUrlInput.setText(R.string.new_tab);
         } else {
             if (mInVoiceMode) {
                 // Add two spaces.  The second one will be replaced with an
@@ -336,10 +180,32 @@
                 int end = spannable.length();
                 spannable.setSpan(mArcsSpan, end - 1, end,
                         Spanned.SPAN_MARK_POINT);
-                mTitle.setText(spannable);
+                mUrlInput.setText(spannable);
             } else {
-                mTitle.setText(title);
+                mUrlInput.setText(title);
             }
         }
     }
+
+    @Override
+    public void onFocusChange(View v, boolean hasFocus) {
+        if (v == mUrlInput && hasFocus) {
+            mActivity.closeOptionsMenu();
+        }
+    }
+
+    @Override
+    public void onClick(View v) {
+        if (v == mStopButton) {
+            mUiController.stopLoading();
+        } else if (v == mBookmarkButton) {
+            mUiController.bookmarkCurrentPage(AddBookmarkPage.DEFAULT_FOLDER_ID,
+                    true);
+        }
+    }
+
+    @Override
+    public void setCurrentUrlIsBookmark(boolean isBookmark) {
+        mBookmarkButton.setActivated(isBookmark);
+    }
 }
diff --git a/src/com/android/browser/TitleBarBase.java b/src/com/android/browser/TitleBarBase.java
index 024f83c..46136db 100644
--- a/src/com/android/browser/TitleBarBase.java
+++ b/src/com/android/browser/TitleBarBase.java
@@ -16,29 +16,46 @@
 
 package com.android.browser;
 
+import com.android.browser.UrlInputView.UrlInputListener;
+
+import android.app.SearchManager;
 import android.content.Context;
+import android.content.Intent;
 import android.graphics.Bitmap;
 import android.graphics.Color;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.LayerDrawable;
 import android.graphics.drawable.PaintDrawable;
+import android.os.Bundle;
+import android.speech.RecognizerResultsIntent;
+import android.view.Gravity;
 import android.view.View;
+import android.widget.AbsoluteLayout;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 
 /**
  * Base class for a title bar used by the browser.
  */
-public class TitleBarBase extends LinearLayout {
+public class TitleBarBase extends LinearLayout implements UrlInputListener {
+
+    protected static final int PROGRESS_MAX = 100;
+
     // These need to be set by the subclass.
     protected ImageView mFavicon;
     protected ImageView mLockIcon;
 
     protected Drawable mGenericFavicon;
+    protected UiController mUiController;
+    protected BaseUi mBaseUi;
+    protected UrlInputView mUrlInput;
+    protected boolean mInVoiceMode;
 
-    public TitleBarBase(Context context) {
+    public TitleBarBase(Context context, UiController controller, BaseUi ui) {
         super(context, null);
+        mUiController = controller;
+        mBaseUi = ui;
         mGenericFavicon = context.getResources().getDrawable(
                 R.drawable.app_web_browser_sm);
     }
@@ -76,4 +93,89 @@
     /* package */ void setInVoiceMode(boolean inVoiceMode) {}
 
     /* package */ void setIncognitoMode(boolean incognito) {}
+
+    void setTitleGravity(int gravity) {
+        int newTop = 0;
+        if (gravity != Gravity.NO_GRAVITY) {
+            View parent = (View) getParent();
+            if (parent != null) {
+                if (gravity == Gravity.TOP) {
+                    newTop = parent.getScrollY();
+                } else if (gravity == Gravity.BOTTOM) {
+                    newTop = parent.getScrollY() + parent.getHeight() - getHeight();
+                }
+            }
+        }
+        AbsoluteLayout.LayoutParams lp = (AbsoluteLayout.LayoutParams) getLayoutParams();
+        if (lp != null) {
+            lp.y = newTop;
+            setLayoutParams(lp);
+        }
+    }
+
+    public int getEmbeddedHeight() {
+        return getHeight();
+    }
+
+    // UrlInputListener implementation
+
+    /**
+     * callback from suggestion dropdown
+     * user selected a suggestion
+     */
+    @Override
+    public void onAction(String text, String extra, String source) {
+        mUiController.getCurrentTopWebView().requestFocus();
+        mBaseUi.hideTitleBar();
+        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) {
+    }
+
 }
diff --git a/src/com/android/browser/TitleBarXLarge.java b/src/com/android/browser/TitleBarXLarge.java
index 0dcece6..51cf0c3 100644
--- a/src/com/android/browser/TitleBarXLarge.java
+++ b/src/com/android/browser/TitleBarXLarge.java
@@ -16,26 +16,25 @@
 
 package com.android.browser;
 
-import com.android.browser.UrlInputView.UrlInputListener;
+import com.android.browser.UI.DropdownChangeListener;
+import com.android.browser.autocomplete.SuggestedTextController.TextChangeWatcher;
 import com.android.browser.search.SearchEngine;
 
 import android.app.Activity;
-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.Editable;
 import android.text.TextUtils;
-import android.text.TextWatcher;
+import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.View.OnFocusChangeListener;
+import android.view.ViewGroup;
 import android.webkit.WebView;
+import android.widget.AbsoluteLayout;
+import android.widget.FrameLayout;
 import android.widget.ImageButton;
 import android.widget.ImageView;
 
@@ -45,12 +44,8 @@
  * tabbed title bar for xlarge screen browser
  */
 public class TitleBarXLarge extends TitleBarBase
-    implements UrlInputListener, OnClickListener, OnFocusChangeListener,
-    TextWatcher {
+        implements OnClickListener, OnFocusChangeListener, TextChangeWatcher {
 
-    private static final int PROGRESS_MAX = 100;
-
-    private UiController mUiController;
     private XLargeUi mUi;
 
     private Drawable mStopDrawable;
@@ -60,29 +55,24 @@
     private ImageButton mBackButton;
     private ImageButton mForwardButton;
     private ImageView mStar;
-    private ImageView mWebIcon;
-    private View mSearchButton;
+    private ImageView mUrlIcon;
+    private ImageView mSearchButton;
     private View mUrlContainer;
     private View mGoButton;
     private ImageView mStopButton;
     private View mAllButton;
     private View mClearButton;
-    private View mVoiceSearch;
-    private View mVoiceSearchIndicator;
+    private ImageView mVoiceSearch;
     private PageProgressView mProgressView;
-    private UrlInputView mUrlInput;
     private Drawable mFocusDrawable;
     private Drawable mUnfocusDrawable;
-    private boolean mInVoiceMode;
 
     private boolean mInLoad;
-    private boolean mEditable;
     private boolean mUseQuickControls;
 
     public TitleBarXLarge(Activity activity, UiController controller,
             XLargeUi ui) {
-        super(activity);
-        mUiController = controller;
+        super(activity, controller, ui);
         mUi = ui;
         Resources resources = activity.getResources();
         mStopDrawable = resources.getDrawable(R.drawable.ic_stop_holo_dark);
@@ -91,8 +81,20 @@
                 R.drawable.textfield_active_holo_dark);
         mUnfocusDrawable = resources.getDrawable(
                 R.drawable.textfield_default_holo_dark);
-        initLayout(activity);
         mInVoiceMode = false;
+        initLayout(activity);
+    }
+
+    @Override
+    void setTitleGravity(int gravity) {
+        if (mUseQuickControls) {
+            FrameLayout.LayoutParams lp =
+                    (FrameLayout.LayoutParams) getLayoutParams();
+            lp.gravity = gravity;
+            setLayoutParams(lp);
+        } else {
+            super.setTitleGravity(gravity);
+        }
     }
 
     private void initLayout(Context context) {
@@ -106,17 +108,16 @@
         // back/forward.  Probably should be done inside onPageStarted.
         mBackButton = (ImageButton) findViewById(R.id.back);
         mForwardButton = (ImageButton) findViewById(R.id.forward);
-        mWebIcon = (ImageView) findViewById(R.id.web_icon);
+        mUrlIcon = (ImageView) findViewById(R.id.url_icon);
         mStar = (ImageView) findViewById(R.id.star);
         mStopButton = (ImageView) findViewById(R.id.stop);
-        mSearchButton = findViewById(R.id.search);
+        mSearchButton = (ImageView) findViewById(R.id.search);
         mLockIcon = (ImageView) findViewById(R.id.lock);
         mGoButton = findViewById(R.id.go);
         mClearButton = findViewById(R.id.clear);
-        mVoiceSearch = findViewById(R.id.voicesearch);
+        mVoiceSearch = (ImageView) findViewById(R.id.voicesearch);
         mProgressView = (PageProgressView) findViewById(R.id.progress);
         mUrlContainer = findViewById(R.id.urlbar_focused);
-        mVoiceSearchIndicator = findViewById(R.id.voice_icon);
         mBackButton.setOnClickListener(this);
         mForwardButton.setOnClickListener(this);
         mStar.setOnClickListener(this);
@@ -126,14 +127,13 @@
         mGoButton.setOnClickListener(this);
         mClearButton.setOnClickListener(this);
         mVoiceSearch.setOnClickListener(this);
-        mUrlContainer.setOnClickListener(this);
         mUrlInput.setUrlInputListener(this);
         mUrlInput.setContainer(mUrlContainer);
         mUrlInput.setController(mUiController);
         mUrlInput.setOnFocusChangeListener(this);
         mUrlInput.setSelectAllOnFocus(true);
-        mUrlInput.addTextChangedListener(this);
-        setEditMode(false);
+        mUrlInput.addQueryTextWatcher(this);
+        setFocusState(false);
     }
 
     void updateNavigationState(Tab tab) {
@@ -148,30 +148,26 @@
         }
     }
 
-    public void setEditable(boolean editable) {
-        mEditable = editable;
-        mUrlInput.setFocusable(mEditable);
-        if (!mEditable) {
-            mUrlInput.setOnClickListener(this);
+    private ViewGroup.LayoutParams makeLayoutParams() {
+        if (mUseQuickControls) {
+            return new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,
+                    LayoutParams.WRAP_CONTENT);
         } else {
-            mUrlContainer.setOnClickListener(null);
+            return new AbsoluteLayout.LayoutParams(
+                    LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT,
+                    0, 0);
         }
     }
 
+    @Override
+    public int getEmbeddedHeight() {
+        return mContainer.getHeight();
+    }
+
     void setUseQuickControls(boolean useQuickControls) {
         mUseQuickControls = useQuickControls;
         mUrlInput.setUseQuickControls(mUseQuickControls);
-        if (mUseQuickControls) {
-            mBackButton.setVisibility(View.GONE);
-            mForwardButton.setVisibility(View.GONE);
-            mStopButton.setVisibility(View.GONE);
-            mAllButton.setVisibility(View.GONE);
-        } else {
-            mBackButton.setVisibility(View.VISIBLE);
-            mForwardButton.setVisibility(View.VISIBLE);
-            mStopButton.setVisibility(View.VISIBLE);
-            mAllButton.setVisibility(View.VISIBLE);
-        }
+        setLayoutParams(makeLayoutParams());
     }
 
     void setShowProgressOnly(boolean progress) {
@@ -184,30 +180,37 @@
 
     @Override
     public void onFocusChange(View view, boolean hasFocus) {
-        if (!mEditable && hasFocus) {
-            mUi.editUrl(false);
-        } else {
-            if (hasFocus) {
-                setEditMode(hasFocus);
-            } else {
-                mUrlInput.stopEditing();
+        // if losing focus and not in touch mode, leave as is
+        if (hasFocus || view.isInTouchMode() || mUrlInput.needsUpdate()) {
+            setFocusState(hasFocus);
+            mUrlContainer.setBackgroundDrawable(hasFocus
+                    ? mFocusDrawable : mUnfocusDrawable);
+        }
+        if (hasFocus) {
+            mUrlInput.forceIme();
+            if (mInVoiceMode) {
+                mUrlInput.forceFilter();
+            }
+        } else if (!mUrlInput.needsUpdate()) {
+            mUrlInput.dismissDropDown();
+            mUrlInput.hideIME();
+            if (mUseQuickControls) {
+                mUi.hideTitleBar();
             }
         }
-        mUrlContainer.setBackgroundDrawable(hasFocus
-                ? mFocusDrawable : mUnfocusDrawable);
+        mUrlInput.clearNeedsUpdate();
     }
 
+    @Override
     public void setCurrentUrlIsBookmark(boolean isBookmark) {
         mStar.setActivated(isBookmark);
     }
 
     /**
      * called from the Ui when the user wants to edit
-     * Note: only the fake titlebar will get this callback
-     * independent of which input field started the edit mode
      * @param clearInput clear the input field
      */
-    void onEditUrl(boolean clearInput) {
+    void startEditingUrl(boolean clearInput) {
         // editing takes preference of progress
         mContainer.setVisibility(View.VISIBLE);
         if (mUseQuickControls) {
@@ -227,21 +230,19 @@
         return mUrlInput.hasFocus();
     }
 
+    void stopEditingUrl() {
+        mUrlInput.clearFocus();
+    }
+
     @Override
     public void onClick(View v) {
-        if (mUrlInput == v) {
-            mUi.editUrl(false);
-        } else if (mUrlContainer == v) {
-            if (!mUrlInput.hasFocus()) {
-                mUi.editUrl(false);
-            }
-        } else if (mBackButton == v) {
+        if (mBackButton == v) {
             mUiController.getCurrentTopWebView().goBack();
         } else if (mForwardButton == v) {
             mUiController.getCurrentTopWebView().goForward();
         } else if (mStar == v) {
             mUiController.bookmarkCurrentPage(
-                    AddBookmarkPage.DEFAULT_FOLDER_ID);
+                    AddBookmarkPage.DEFAULT_FOLDER_ID, true);
         } else if (mAllButton == v) {
             mUiController.bookmarksOrHistoryPicker(false);
         } else if (mSearchButton == v) {
@@ -260,105 +261,41 @@
         }
     }
 
-    int getHeightWithoutProgress() {
-        return mContainer.getHeight();
-    }
-
     @Override
     void setFavicon(Bitmap icon) { }
 
     private void clearOrClose() {
-        if (TextUtils.isEmpty(mUrlInput.getText())) {
+        if (TextUtils.isEmpty(mUrlInput.getUserText())) {
             // close
-            mUrlInput.stopEditing();
+            mUrlInput.clearFocus();
         } else {
             // clear
             mUrlInput.setText("");
         }
     }
 
-    // UrlInputListener implementation
-
-    /**
-     * callback from suggestion dropdown
-     * user selected a suggestion
-     */
-    @Override
-    public void onAction(String text, String extra, String source) {
-        mUiController.getCurrentTopWebView().requestFocus();
-        mUi.hideFakeTitleBar();
-        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 = mUi.getActiveTab();
-        mUi.hideFakeTitleBar();
-        post(new Runnable() {
-            public void run() {
-                TitleBarXLarge.this.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 onEdit(String text) {
-        mUrlInput.setText(text, true);
-        if (text != null) {
-            mUrlInput.setSelection(text.length());
-        }
-    }
-
-    void setEditMode(boolean edit) {
-        if (edit) {
+    private void setFocusState(boolean focus) {
+        if (focus) {
             mUrlInput.setDropDownWidth(mUrlContainer.getWidth());
             mUrlInput.setDropDownHorizontalOffset(-mUrlInput.getLeft());
             mSearchButton.setVisibility(View.GONE);
             mStar.setVisibility(View.GONE);
             mClearButton.setVisibility(View.VISIBLE);
-            if (mInVoiceMode) {
-                mVoiceSearchIndicator.setVisibility(View.VISIBLE);
-            }
-            mWebIcon.setImageResource(R.drawable.ic_search_holo_dark);
-            updateSearchMode();
+            mUrlIcon.setImageResource(R.drawable.ic_search_holo_dark);
+            updateSearchMode(false);
         } else {
             mGoButton.setVisibility(View.GONE);
             mVoiceSearch.setVisibility(View.GONE);
             mStar.setVisibility(View.VISIBLE);
             mClearButton.setVisibility(View.GONE);
-            mVoiceSearchIndicator.setVisibility(View.GONE);
             if (mUseQuickControls) {
                 mSearchButton.setVisibility(View.GONE);
             } else {
                 mSearchButton.setVisibility(View.VISIBLE);
             }
-            mWebIcon.setImageResource(R.drawable.ic_web_holo_dark);
+            mUrlIcon.setImageResource(mInVoiceMode ?
+                    R.drawable.ic_search_holo_dark
+                    : R.drawable.ic_web_holo_dark);
         }
     }
 
@@ -396,8 +333,8 @@
         }
     }
 
-    private void updateSearchMode() {
-        setSearchMode(TextUtils.isEmpty(mUrlInput.getText()));
+    private void updateSearchMode(boolean userEdited) {
+        setSearchMode(!userEdited || TextUtils.isEmpty(mUrlInput.getUserText()));
     }
 
     private void setSearchMode(boolean voiceSearchEnabled) {
@@ -421,23 +358,15 @@
     // UrlInput text watcher
 
     @Override
-    public void afterTextChanged(Editable s) {
+    public void onTextChanged(String newText) {
         if (mUrlInput.hasFocus()) {
             // check if input field is empty and adjust voice search state
-            updateSearchMode();
+            updateSearchMode(true);
             // clear voice mode when user types
             setInVoiceMode(false, null);
         }
     }
 
-    @Override
-    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-    }
-
-    @Override
-    public void onTextChanged(CharSequence s, int start, int before, int count) {
-    }
-
     // voicesearch
 
     @Override
@@ -448,8 +377,9 @@
     public void setInVoiceMode(boolean voicemode, List<String> voiceResults) {
         mInVoiceMode = voicemode;
         mUrlInput.setVoiceResults(voiceResults);
-        mVoiceSearchIndicator.setVisibility(mInVoiceMode
-                ? View.VISIBLE : View.GONE);
+        if (voicemode) {
+            mUrlIcon.setImageDrawable(mSearchButton.getDrawable());
+        }
     }
 
     @Override
@@ -457,4 +387,38 @@
         mUrlInput.setIncognitoMode(incognito);
     }
 
+    @Override
+    public View focusSearch(View focused, int dir) {
+        if (FOCUS_DOWN == dir && hasFocus()) {
+            return getCurrentWebView();
+        }
+        return super.focusSearch(focused, dir);
+    }
+
+    void clearCompletions() {
+        mUrlInput.setSuggestedText(null);
+    }
+
+    @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);
+    }
+
+    private WebView getCurrentWebView() {
+        Tab t = mUi.getActiveTab();
+        if (t != null) {
+            return t.getWebView();
+        } else {
+            return null;
+        }
+    }
+
+    void registerDropdownChangeListener(DropdownChangeListener d) {
+        mUrlInput.registerDropdownChangeListener(d);
+    }
 }
diff --git a/src/com/android/browser/UI.java b/src/com/android/browser/UI.java
index 8de2b19..13f8af2 100644
--- a/src/com/android/browser/UI.java
+++ b/src/com/android/browser/UI.java
@@ -89,6 +89,8 @@
 
     public void revertVoiceTitleBar(Tab tab);
 
+    public boolean onPrepareOptionsMenu(Menu menu);
+
     public void onOptionsMenuOpened();
 
     public void onExtendedMenuOpened();
@@ -118,6 +120,13 @@
 
     void showMaxTabsWarning();
 
+    void editUrl(boolean clearInput);
+
     boolean dispatchKey(int code, KeyEvent event);
 
+
+    public static interface DropdownChangeListener {
+        void onNewDropdownDimensions(int height);
+    }
+    void registerDropdownChangeListener(DropdownChangeListener d);
 }
diff --git a/src/com/android/browser/UiController.java b/src/com/android/browser/UiController.java
index ae38cff..65fa5f8 100644
--- a/src/com/android/browser/UiController.java
+++ b/src/com/android/browser/UiController.java
@@ -16,7 +16,10 @@
 
 package com.android.browser;
 
+import com.android.browser.UI.DropdownChangeListener;
+
 import android.content.Intent;
+import android.view.MenuItem;
 import android.webkit.WebView;
 
 import java.util.List;
@@ -49,10 +52,12 @@
 
     void stopLoading();
 
-    void bookmarkCurrentPage(long folderId);
+    void bookmarkCurrentPage(long folderId, boolean canBeAnEdit);
 
     void bookmarksOrHistoryPicker(boolean openHistory);
 
+    void startSearch(String url);
+
     void startVoiceSearch();
 
     void showVoiceSearchResults(String title);
@@ -82,4 +87,9 @@
     void registerOptionsMenuHandler(OptionsMenuHandler handler);
 
     void unregisterOptionsMenuHandler(OptionsMenuHandler handler);
+
+    void registerDropdownChangeListener(DropdownChangeListener d);
+
+    boolean onOptionsItemSelected(MenuItem item);
+
 }
diff --git a/src/com/android/browser/UploadHandler.java b/src/com/android/browser/UploadHandler.java
index d9b387f..5947e4a 100644
--- a/src/com/android/browser/UploadHandler.java
+++ b/src/com/android/browser/UploadHandler.java
@@ -17,11 +17,13 @@
 package com.android.browser;
 
 import android.app.Activity;
+import android.content.ActivityNotFoundException;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Environment;
 import android.provider.MediaStore;
 import android.webkit.ValueCallback;
+import android.widget.Toast;
 
 import java.io.File;
 import java.util.Vector;
@@ -37,6 +39,9 @@
     private ValueCallback<Uri> mUploadMessage;
     private String mCameraFilePath;
 
+    private boolean mHandled;
+    private boolean mCaughtActivityNotFoundException;
+
     private Controller mController;
 
     public UploadHandler(Controller controller) {
@@ -47,7 +52,19 @@
         return mCameraFilePath;
     }
 
+    boolean handled() {
+        return mHandled;
+    }
+
     void onResult(int resultCode, Intent intent) {
+
+        if (resultCode == Activity.RESULT_CANCELED && mCaughtActivityNotFoundException) {
+            // Couldn't resolve an activity, we are going to try again so skip
+            // this result.
+            mCaughtActivityNotFoundException = false;
+            return;
+        }
+
         Uri result = intent == null || resultCode != Activity.RESULT_OK ? null
                 : intent.getData();
 
@@ -69,6 +86,8 @@
         }
 
         mUploadMessage.onReceiveValue(result);
+        mHandled = true;
+        mCaughtActivityNotFoundException = false;
     }
 
     void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {
@@ -82,14 +101,10 @@
         final String mediaSourceValueCamcorder = "camcorder";
         final String mediaSourceValueMicrophone = "microphone";
 
-        // media source can be 'filesystem' or 'camera' or 'camcorder' or 'microphone'.
+        // According to the spec, media source can be 'filesystem' or 'camera' or 'camcorder'
+        // or 'microphone'.
         String mediaSource = "";
 
-        // We add the camera intent if there was no accept type (or '*/*' or 'image/*').
-        boolean addCameraIntent = true;
-        // We add the camcorder intent if there was no accept type (or '*/*' or 'video/*').
-        boolean addCamcorderIntent = true;
-
         if (mUploadMessage != null) {
             // Already a file picker operation in progress.
             return;
@@ -111,15 +126,122 @@
             }
         }
 
-        // This intent will display the standard OPENABLE file picker.
+        //Ensure it is not still set from a previous upload.
+        mCameraFilePath = null;
+
+        if (mimeType.equals(imageMimeType)) {
+            if (mediaSource.equals(mediaSourceValueCamera)) {
+                // Specified 'image/*' and requested the camera, so go ahead and launch the
+                // camera directly.
+                startActivity(createCameraIntent());
+                return;
+            } else if (mediaSource.equals(mediaSourceValueFileSystem)) {
+                // Specified 'image/*' and requested the filesystem, so go ahead and launch an
+                // OPENABLE intent.
+                startActivity(createOpenableIntent(imageMimeType));
+                return;
+            } else {
+                // Specified just 'image/*', so launch an intent for both the Camera and image/*
+                // OPENABLE.
+                Intent chooser = createChooserIntent(createCameraIntent());
+                chooser.putExtra(Intent.EXTRA_INTENT, createOpenableIntent(imageMimeType));
+                startActivity(chooser);
+                return;
+            }
+        } else if (mimeType.equals(videoMimeType)) {
+            if (mediaSource.equals(mediaSourceValueCamcorder)) {
+                // Specified 'video/*' and requested the camcorder, so go ahead and launch the
+                // camcorder directly.
+                startActivity(createCamcorderIntent());
+                return;
+            } else if (mediaSource.equals(mediaSourceValueFileSystem)) {
+                // Specified 'video/*' and requested the filesystem, so go ahead and launch an
+                // an OPENABLE intent.
+                startActivity(createOpenableIntent(videoMimeType));
+                return;
+            } else {
+                // Specified just 'video/*', so go ahead and launch an intent for both camcorder and
+                // video/* OPENABLE.
+                Intent chooser = createChooserIntent(createCamcorderIntent());
+                chooser.putExtra(Intent.EXTRA_INTENT, createOpenableIntent(videoMimeType));
+                startActivity(chooser);
+                return;
+            }
+        } else if (mimeType.equals(audioMimeType)) {
+            if (mediaSource.equals(mediaSourceValueMicrophone)) {
+                // Specified 'audio/*' and requested microphone, so go ahead and launch the sound
+                // recorder.
+                startActivity(createSoundRecorderIntent());
+                return;
+            } else if (mediaSource.equals(mediaSourceValueFileSystem)) {
+                // Specified 'audio/*' and requested filesystem, so go ahead and launch an
+                // OPENABLE intent.
+                startActivity(createOpenableIntent(audioMimeType));
+                return;
+            } else {
+                // Specified just 'audio/*', so go ahead and launch an intent for both the sound
+                // recorder and audio/* OPENABLE.
+                Intent chooser = createChooserIntent(createSoundRecorderIntent());
+                chooser.putExtra(Intent.EXTRA_INTENT, createOpenableIntent(audioMimeType));
+                startActivity(chooser);
+                return;
+            }
+        }
+
+        // No special handling based on the accept type was necessary, so trigger the default
+        // file upload chooser.
+        startActivity(createDefaultOpenableIntent());
+    }
+
+    private void startActivity(Intent intent) {
+        try {
+            mController.getActivity().startActivityForResult(intent, Controller.FILE_SELECTED);
+        } catch (ActivityNotFoundException e) {
+            // No installed app was able to handle the intent that
+            // we sent, so fallback to the default file upload control.
+            try {
+                mCaughtActivityNotFoundException = true;
+                mController.getActivity().startActivityForResult(createDefaultOpenableIntent(),
+                        Controller.FILE_SELECTED);
+            } catch (ActivityNotFoundException e2) {
+                // Nothing can return us a file, so file upload is effectively disabled.
+                Toast.makeText(mController.getActivity(), R.string.uploads_disabled,
+                        Toast.LENGTH_LONG).show();
+            }
+        }
+    }
+
+    private Intent createDefaultOpenableIntent() {
+        // Create and return a chooser with the default OPENABLE
+        // actions including the camera, camcorder and sound
+        // recorder where available.
         Intent i = new Intent(Intent.ACTION_GET_CONTENT);
         i.addCategory(Intent.CATEGORY_OPENABLE);
+        i.setType("*/*");
 
-        // Create an intent to add to the standard file picker that will
-        // capture an image from the camera. We'll combine this intent with
-        // the standard OPENABLE picker unless the web developer specifically
-        // requested the camera or gallery be opened by passing a parameter
-        // in the accept type.
+        Intent chooser = createChooserIntent(createCameraIntent(), createCamcorderIntent(),
+                createSoundRecorderIntent());
+        chooser.putExtra(Intent.EXTRA_INTENT, i);
+        return chooser;
+    }
+
+    private Intent createChooserIntent(Intent... intents) {
+        Intent chooser = new Intent(Intent.ACTION_CHOOSER);
+        chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, intents);
+        chooser.putExtra(Intent.EXTRA_TITLE,
+                mController.getActivity().getResources()
+                        .getString(R.string.choose_upload));
+        return chooser;
+    }
+
+    private Intent createOpenableIntent(String type) {
+        Intent i = new Intent(Intent.ACTION_GET_CONTENT);
+        i.addCategory(Intent.CATEGORY_OPENABLE);
+        i.setType(type);
+        return i;
+    }
+
+    private Intent createCameraIntent() {
         Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
         File externalDataDir = Environment.getExternalStoragePublicDirectory(
                 Environment.DIRECTORY_DCIM);
@@ -129,86 +251,15 @@
         mCameraFilePath = cameraDataDir.getAbsolutePath() + File.separator +
                 System.currentTimeMillis() + ".jpg";
         cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(mCameraFilePath)));
-
-        Intent camcorderIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
-
-        Intent soundRecIntent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
-
-        if (mimeType.equals(imageMimeType)) {
-            i.setType(imageMimeType);
-            addCamcorderIntent = false;
-            if (mediaSource.equals(mediaSourceValueCamera)) {
-                // Specified 'image/*' and requested the camera, so go ahead and launch the camera
-                // directly.
-                startActivity(cameraIntent);
-                return;
-            } else if (mediaSource.equals(mediaSourceValueFileSystem)) {
-                // Specified filesytem as the source, so don't want to consider the camera.
-                addCameraIntent = false;
-            }
-        } else if (mimeType.equals(videoMimeType)) {
-            i.setType(videoMimeType);
-            addCameraIntent = false;
-            // The camcorder saves it's own file and returns it to us in the intent, so
-            // we don't need to generate one here.
-            mCameraFilePath = null;
-
-            if (mediaSource.equals(mediaSourceValueCamcorder)) {
-                // Specified 'video/*' and requested the camcorder, so go ahead and launch the
-                // camcorder directly.
-                startActivity(camcorderIntent);
-                return;
-            } else if (mediaSource.equals(mediaSourceValueFileSystem)) {
-                // Specified filesystem as the source, so don't want to consider the camcorder.
-                addCamcorderIntent = false;
-            }
-        } else if (mimeType.equals(audioMimeType)) {
-            i.setType(audioMimeType);
-            addCameraIntent = false;
-            addCamcorderIntent = false;
-            if (mediaSource.equals(mediaSourceValueMicrophone)) {
-                // Specified 'audio/*' and requested microphone, so go ahead and launch the sound
-                // recorder.
-                startActivity(soundRecIntent);
-                return;
-            }
-            // On a default system, there is no single option to open an audio "gallery". Both the
-            // sound recorder and music browser respond to the OPENABLE/audio/* intent unlike the
-            // image/* and video/* OPENABLE intents where the image / video gallery are the only
-            // respondants (and so the user is not prompted by default).
-        } else {
-            i.setType("*/*");
-        }
-
-        // Combine the chooser and the extra choices (like camera or camcorder)
-        Intent chooser = new Intent(Intent.ACTION_CHOOSER);
-        chooser.putExtra(Intent.EXTRA_INTENT, i);
-
-        Vector<Intent> extraInitialIntents = new Vector<Intent>(0);
-
-        if (addCameraIntent) {
-            extraInitialIntents.add(cameraIntent);
-        }
-
-        if (addCamcorderIntent) {
-            extraInitialIntents.add(camcorderIntent);
-        }
-
-        if (extraInitialIntents.size() > 0) {
-            Intent[] extraIntents = new Intent[extraInitialIntents.size()];
-            chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS,
-                    extraInitialIntents.toArray(extraIntents));
-        }
-
-        chooser.putExtra(Intent.EXTRA_TITLE,
-                mController.getActivity().getResources()
-                        .getString(R.string.choose_upload));
-        startActivity(chooser);
+        return cameraIntent;
     }
 
-    private void startActivity(Intent intent) {
-        mController.getActivity().startActivityForResult(intent,
-                Controller.FILE_SELECTED);
+    private Intent createCamcorderIntent() {
+        return new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
+    }
+
+    private Intent createSoundRecorderIntent() {
+        return new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
     }
 
 }
diff --git a/src/com/android/browser/UrlHandler.java b/src/com/android/browser/UrlHandler.java
index f1d1c4c..03bab9b 100644
--- a/src/com/android/browser/UrlHandler.java
+++ b/src/com/android/browser/UrlHandler.java
@@ -19,15 +19,18 @@
 import android.app.Activity;
 import android.content.ActivityNotFoundException;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.AsyncTask;
-import android.os.Bundle;
 import android.util.Log;
 import android.webkit.WebView;
 
 import java.net.URISyntaxException;
+import java.util.List;
+import java.util.regex.Matcher;
 
 /**
  *
@@ -153,6 +156,13 @@
       // security (only access to BROWSABLE activities).
       intent.addCategory(Intent.CATEGORY_BROWSABLE);
       intent.setComponent(null);
+      // Make sure webkit can handle it internally before checking for specialized
+      // handlers. If webkit can't handle it internally, we need to call
+      // startActivityIfNeeded
+      Matcher m = UrlUtils.ACCEPTED_URI_SCHEMA.matcher(url);
+      if (m.matches() && !isSpecializedHandlerAvailable(intent)) {
+          return false;
+      }
       try {
           if (mActivity.startActivityIfNeeded(intent, -1)) {
               // before leaving BrowserActivity, close the empty child tab.
@@ -170,6 +180,33 @@
       return false;
     }
 
+    /**
+     * Search for intent handlers that are specific to this URL
+     * aka, specialized apps like google maps or youtube
+     */
+    private boolean isSpecializedHandlerAvailable(Intent intent) {
+        PackageManager pm = mActivity.getPackageManager();
+          List<ResolveInfo> handlers = pm.queryIntentActivities(intent,
+                  PackageManager.GET_RESOLVED_FILTER);
+          if (handlers == null || handlers.size() == 0) {
+              return false;
+          }
+          for (ResolveInfo resolveInfo : handlers) {
+              IntentFilter filter = resolveInfo.filter;
+              if (filter == null) {
+                  // No intent filter matches this intent?
+                  // Error on the side of staying in the browser, ignore
+                  continue;
+              }
+              if (filter.countDataAuthorities() == 0 || filter.countDataPaths() == 0) {
+                  // Generic handler, skip
+                  continue;
+              }
+              return true;
+          }
+          return false;
+    }
+
     // In case a physical keyboard is attached, handle clicks with the menu key
     // depressed by opening in a new tab
     boolean handleMenuClick(Tab tab, String url) {
diff --git a/src/com/android/browser/UrlInputView.java b/src/com/android/browser/UrlInputView.java
index 23e412d..b7f2bff 100644
--- a/src/com/android/browser/UrlInputView.java
+++ b/src/com/android/browser/UrlInputView.java
@@ -18,22 +18,25 @@
 
 import com.android.browser.SuggestionsAdapter.CompletionListener;
 import com.android.browser.SuggestionsAdapter.SuggestItem;
+import com.android.browser.UI.DropdownChangeListener;
+import com.android.browser.autocomplete.SuggestiveAutoCompleteTextView;
 import com.android.browser.search.SearchEngine;
 import com.android.browser.search.SearchEngineInfo;
 import com.android.browser.search.SearchEngines;
 
 import android.content.Context;
 import android.content.res.Configuration;
+import android.database.DataSetObserver;
+import android.graphics.Rect;
 import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.util.Patterns;
 import android.view.KeyEvent;
 import android.view.View;
-import android.view.View.OnFocusChangeListener;
+import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;
-import android.widget.AutoCompleteTextView;
 import android.widget.TextView;
 import android.widget.TextView.OnEditorActionListener;
 
@@ -43,8 +46,8 @@
  * url/search input view
  * handling suggestions
  */
-public class UrlInputView extends AutoCompleteTextView
-        implements OnFocusChangeListener, OnEditorActionListener,
+public class UrlInputView extends SuggestiveAutoCompleteTextView
+        implements OnEditorActionListener,
         CompletionListener, OnItemClickListener {
 
 
@@ -55,12 +58,11 @@
     private UrlInputListener   mListener;
     private InputMethodManager mInputManager;
     private SuggestionsAdapter mAdapter;
-    private OnFocusChangeListener mWrappedFocusListener;
     private View mContainer;
     private boolean mLandscape;
-    private boolean mInVoiceMode;
     private boolean mIncognitoMode;
-    private int mVOffset;
+    private boolean mNeedsUpdate;
+    private DropdownChangeListener mDropdownListener;
 
     public UrlInputView(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
@@ -80,14 +82,43 @@
     private void init(Context ctx) {
         mInputManager = (InputMethodManager) ctx.getSystemService(Context.INPUT_METHOD_SERVICE);
         setOnEditorActionListener(this);
-        super.setOnFocusChangeListener(this);
         mAdapter = new SuggestionsAdapter(ctx, this);
         setAdapter(mAdapter);
         setSelectAllOnFocus(true);
         onConfigurationChanged(ctx.getResources().getConfiguration());
         setThreshold(1);
         setOnItemClickListener(this);
-        mVOffset = 0;
+        mNeedsUpdate = false;
+        mDropdownListener = null;
+
+        mAdapter.registerDataSetObserver(new DataSetObserver() {
+            @Override
+            public void onChanged() {
+                if (!isPopupShowing()) {
+                    return;
+                }
+                dispatchChange();
+            }
+
+            @Override
+            public void onInvalidated() {
+                dispatchChange();
+            }
+        });
+    }
+
+    /**
+     * check if focus change requires a title bar update
+     */
+    boolean needsUpdate() {
+        return mNeedsUpdate;
+    }
+
+    /**
+     * clear the focus change needs title bar update flag
+     */
+    void clearNeedsUpdate() {
+        mNeedsUpdate = false;
     }
 
     void setController(UiController controller) {
@@ -97,9 +128,6 @@
     }
 
     void setUseQuickControls(boolean useQuickControls) {
-        mVOffset = (useQuickControls
-                ? (int) getResources().getDimension(R.dimen.dropdown_offset)
-                : 0);
         mAdapter.setReverseResults(useQuickControls);
     }
 
@@ -107,9 +135,12 @@
         mContainer = container;
     }
 
+    public void setUrlInputListener(UrlInputListener listener) {
+        mListener = listener;
+    }
+
     void setVoiceResults(List<String> voiceResults) {
         mAdapter.setVoiceResults(voiceResults);
-        mInVoiceMode = (voiceResults != null);
     }
 
     @Override
@@ -120,7 +151,7 @@
         mAdapter.setLandscapeMode(mLandscape);
         if (isPopupShowing() && (getVisibility() == View.VISIBLE)) {
             setupDropDown();
-            performFiltering(getText(), 0);
+            performFiltering(getUserText(), 0);
         }
     }
 
@@ -137,55 +168,47 @@
     }
 
     private void setupDropDown() {
-        int width = mContainer.getWidth();
+        int width = mContainer != null ? mContainer.getWidth() : getWidth();
         if (width != getDropDownWidth()) {
             setDropDownWidth(width);
         }
         if (getLeft() != -getDropDownHorizontalOffset()) {
             setDropDownHorizontalOffset(-getLeft());
         }
-        setDropDownVerticalOffset(mVOffset);
-    }
-
-    @Override
-    public void setOnFocusChangeListener(OnFocusChangeListener focusListener) {
-        mWrappedFocusListener = focusListener;
     }
 
     @Override
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
-        finishInput(getText().toString(), null, TYPED);
+        if (BrowserSettings.getInstance().useInstant() &&
+                (actionId == EditorInfo.IME_ACTION_NEXT)) {
+            // When instant is turned on AND the user chooses to complete
+            // using the tab key, then use the completion rather than the
+            // text that the user has typed.
+            finishInput(getText().toString(), null, TYPED);
+        } else {
+            finishInput(getUserText(), null, TYPED);
+        }
+
         return true;
     }
 
-    @Override
-    public void onFocusChange(View v, boolean hasFocus) {
-        if (hasFocus) {
-            forceIme();
-            if (mInVoiceMode) {
-                performFiltering(getText().toString(), 0);
-                showDropDown();
-            }
-        }
-        if (mWrappedFocusListener != null) {
-            mWrappedFocusListener.onFocusChange(v, hasFocus);
-        }
+    void forceFilter() {
+        performForcedFiltering();
+        showDropDown();
     }
 
-    void stopEditing() {
-        finishInput(null, null, null);
-    }
-
-    public void setUrlInputListener(UrlInputListener listener) {
-        mListener = listener;
-    }
-
-    public void forceIme() {
+    void forceIme() {
+        mInputManager.focusIn(this);
         mInputManager.showSoftInput(this, 0);
     }
 
+    void hideIME() {
+        mInputManager.hideSoftInputFromWindow(getWindowToken(), 0);
+    }
+
     private void finishInput(String url, String extra, String source) {
-        this.dismissDropDown();
+        mNeedsUpdate = true;
+        dismissDropDown();
         mInputManager.hideSoftInputFromWindow(getWindowToken(), 0);
         if (TextUtils.isEmpty(url)) {
             mListener.onDismiss();
@@ -221,7 +244,7 @@
 
     @Override
     public void onSearch(String search) {
-        mListener.onEdit(search);
+        mListener.onCopySuggestion(search);
     }
 
     @Override
@@ -231,21 +254,10 @@
     }
 
     @Override
-    public boolean onKeyPreIme(int keyCode, KeyEvent evt) {
-        if (keyCode == KeyEvent.KEYCODE_BACK) {
-            // catch back key in order to do slightly more cleanup than usual
-            finishInput(null, null, null);
-            return true;
-        }
-        return super.onKeyPreIme(keyCode, evt);
-    }
-
-    @Override
     public void onItemClick(
             AdapterView<?> parent, View view, int position, long id) {
         SuggestItem item = mAdapter.getItem(position);
-        onSelect((TextUtils.isEmpty(item.url) ? item.title : item.url),
-            item.type, item.extra);
+        onSelect(SuggestionsAdapter.getSuggestionUrl(item), item.type, item.extra);
     }
 
     interface UrlInputListener {
@@ -254,7 +266,7 @@
 
         public void onAction(String text, String extra, String source);
 
-        public void onEdit(String text);
+        public void onCopySuggestion(String text);
 
     }
 
@@ -263,4 +275,29 @@
         mAdapter.setIncognitoMode(mIncognitoMode);
     }
 
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent evt) {
+        if (keyCode == KeyEvent.KEYCODE_ESCAPE && !isInTouchMode()) {
+            finishInput(null, null, null);
+            return true;
+        }
+        return super.onKeyDown(keyCode, evt);
+    }
+
+    public SuggestionsAdapter getAdapter() {
+        return mAdapter;
+    }
+
+    private void dispatchChange() {
+        final Rect popupRect = new Rect();
+        getPopupDrawableRect(popupRect);
+
+        if (mDropdownListener != null) {
+            mDropdownListener.onNewDropdownDimensions(popupRect.height());
+        }
+    }
+
+    void registerDropdownChangeListener(DropdownChangeListener d) {
+        mDropdownListener = d;
+    }
 }
diff --git a/src/com/android/browser/WallpaperHandler.java b/src/com/android/browser/WallpaperHandler.java
index 0c88a50..2cb223a 100644
--- a/src/com/android/browser/WallpaperHandler.java
+++ b/src/com/android/browser/WallpaperHandler.java
@@ -21,12 +21,14 @@
 import android.content.Context;
 import android.content.DialogInterface;
 import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
 import android.graphics.Canvas;
 import android.graphics.drawable.Drawable;
 import android.util.Log;
 import android.view.MenuItem;
 import android.view.MenuItem.OnMenuItemClickListener;
 
+import java.io.BufferedInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
@@ -41,6 +43,9 @@
 
 
     private static final String LOGTAG = "WallpaperHandler";
+    // This should be large enough for BitmapFactory to decode the header so
+    // that we can mark and reset the input stream to avoid duplicate network i/o
+    private static final int BUFFER_SIZE = 128 * 1024;
 
     private Context mContext;
     private URL mUrl;
@@ -82,8 +87,9 @@
 
     @Override
     public void run() {
-        Drawable oldWallpaper =
-                WallpaperManager.getInstance(mContext).getDrawable();
+        WallpaperManager wm = WallpaperManager.getInstance(mContext);
+        Drawable oldWallpaper = wm.getDrawable();
+        InputStream inputstream = null;
         try {
             // TODO: This will cause the resource to be downloaded again, when
             // we should in most cases be able to grab it from the cache. To fix
@@ -91,15 +97,59 @@
             // version and instead open an input stream on that. This pattern
             // could also be used in the download manager where the same problem
             // exists.
-            InputStream inputstream = mUrl.openStream();
+            inputstream = mUrl.openStream();
             if (inputstream != null) {
-                WallpaperManager.getInstance(mContext).setStream(inputstream);
+                if (!inputstream.markSupported()) {
+                    inputstream = new BufferedInputStream(inputstream, BUFFER_SIZE);
+                }
+                inputstream.mark(BUFFER_SIZE);
+                BitmapFactory.Options options = new BitmapFactory.Options();
+                options.inJustDecodeBounds = true;
+                // We give decodeStream a wrapped input stream so it doesn't
+                // mess with our mark (currently it sets a mark of 1024)
+                BitmapFactory.decodeStream(
+                        new BufferedInputStream(inputstream), null, options);
+                int maxWidth = wm.getDesiredMinimumWidth();
+                int maxHeight = wm.getDesiredMinimumHeight();
+                // Give maxWidth and maxHeight some leeway
+                maxWidth *= 1.25;
+                maxHeight *= 1.25;
+                int bmWidth = options.outWidth;
+                int bmHeight = options.outHeight;
+
+                int scale = 1;
+                while (bmWidth > maxWidth || bmHeight > maxWidth) {
+                    scale <<= 1;
+                    bmWidth >>= 1;
+                    bmHeight >>= 1;
+                }
+                options.inJustDecodeBounds = false;
+                options.inSampleSize = scale;
+                try {
+                    inputstream.reset();
+                } catch (IOException e) {
+                    // BitmapFactory read more than we could buffer
+                    // Re-open the stream
+                    inputstream.close();
+                    inputstream = mUrl.openStream();
+                }
+                Bitmap scaledWallpaper = BitmapFactory.decodeStream(inputstream,
+                        null, options);
+                wm.setBitmap(scaledWallpaper);
             }
         } catch (IOException e) {
             Log.e(LOGTAG, "Unable to set new wallpaper");
             // Act as though the user canceled the operation so we try to
             // restore the old wallpaper.
             mCanceled = true;
+        } finally {
+            if (inputstream != null) {
+                try {
+                    inputstream.close();
+                } catch (IOException e) {
+                    // Ignore
+                }
+            }
         }
 
         if (mCanceled) {
@@ -113,7 +163,7 @@
             oldWallpaper.setBounds(0, 0, width, height);
             oldWallpaper.draw(canvas);
             try {
-                WallpaperManager.getInstance(mContext).setBitmap(bm);
+                wm.setBitmap(bm);
             } catch (IOException e) {
                 Log.e(LOGTAG, "Unable to restore old wallpaper.");
             }
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index 562705b..a9a55e8 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -20,16 +20,19 @@
 
 import android.app.ActionBar;
 import android.app.Activity;
+import android.content.pm.PackageManager;
+import android.graphics.Bitmap;
 import android.os.Bundle;
+import android.os.Handler;
 import android.util.Log;
 import android.view.ActionMode;
 import android.view.Gravity;
 import android.view.KeyEvent;
+import android.view.Menu;
 import android.view.View;
 import android.webkit.WebChromeClient.CustomViewCallback;
 import android.webkit.WebView;
 import android.widget.FrameLayout;
-import android.widget.FrameLayout.LayoutParams;
 
 import java.util.List;
 
@@ -44,10 +47,10 @@
     private TabBar mTabBar;
 
     private TitleBarXLarge mTitleBar;
-    private TitleBarXLarge mFakeTitleBar;
 
     private boolean mUseQuickControls;
     private PieControl mPieControl;
+    private Handler mHandler;
 
     /**
      * @param browser
@@ -55,11 +58,9 @@
      */
     public XLargeUi(Activity browser, UiController controller) {
         super(browser, controller);
+        mHandler = new Handler();
         mTitleBar = new TitleBarXLarge(mActivity, mUiController, this);
         mTitleBar.setProgress(100);
-        mTitleBar.setEditable(false);
-        mFakeTitleBar = new TitleBarXLarge(mActivity, mUiController, this);
-        mFakeTitleBar.setEditable(true);
         mTabBar = new TabBar(mActivity, mUiController, this);
         mActionBar = mActivity.getActionBar();
         setupActionBar();
@@ -82,55 +83,61 @@
 
     @Override
     public void hideComboView() {
-        checkTabCount();
-        super.hideComboView();
-        // ComboView changes the action bar, set it back up to what we want
-        setupActionBar();
+        if (isComboViewShowing()) {
+            super.hideComboView();
+            // ComboView changes the action bar, set it back up to what we want
+            setupActionBar();
+            checkTabCount();
+        }
     }
 
     private void setUseQuickControls(boolean useQuickControls) {
         mUseQuickControls = useQuickControls;
+        mTitleBar.setUseQuickControls(mUseQuickControls);
         if (useQuickControls) {
             checkTabCount();
             mPieControl = new PieControl(mActivity, mUiController, this);
             mPieControl.attachToContainer(mContentView);
-            setFakeTitleBarGravity(Gravity.BOTTOM);
-
-            // remove embedded title bar if present
-            WebView web = mTabControl.getCurrentWebView();
-            if ((web != null) && (web.getVisibleTitleHeight() > 0)) {
-                web.setEmbeddedTitleBar(null);
+            Tab tab = getActiveTab();
+            if ((tab != null) && (tab.getWebView() != null)) {
+                tab.getWebView().setEmbeddedTitleBar(null);
             }
+            setTitleGravity(Gravity.BOTTOM);
         } else {
             mActivity.getActionBar().show();
             if (mPieControl != null) {
                 mPieControl.removeFromContainer(mContentView);
             }
-            setFakeTitleBarGravity(Gravity.TOP);
-            // remove embedded title bar if present
+            setTitleGravity(Gravity.TOP);
             WebView web = mTabControl.getCurrentWebView();
-            if ((web != null) && (web.getVisibleTitleHeight() == 0)) {
+            if (web != null) {
                 web.setEmbeddedTitleBar(mTitleBar);
             }
         }
         mTabBar.setUseQuickControls(mUseQuickControls);
-        mFakeTitleBar.setUseQuickControls(mUseQuickControls);
     }
 
     private void checkTabCount() {
         if (mUseQuickControls) {
-            int n = mTabBar.getTabCount();
-            if (n >= 2) {
-                mActivity.getActionBar().show();
-            } else if (n == 1) {
-                mActivity.getActionBar().hide();
-            }
+            mHandler.post(new Runnable() {
+                public void run() {
+                    mActionBar.hide();
+                }
+            });
+        }
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        if (!BrowserSettings.getInstance().useInstant()) {
+            mTitleBar.clearCompletions();
         }
     }
 
     @Override
     public void onDestroy() {
-        hideFakeTitleBar();
+        hideTitleBar();
     }
 
     // webview factory
@@ -142,7 +149,9 @@
                 android.R.attr.webViewStyle, privateBrowsing);
         initWebViewSettings(w);
         w.setScrollListener(this);
-        w.getSettings().setDisplayZoomControls(false);
+        boolean supportsMultiTouch = mActivity.getPackageManager()
+                .hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH);
+        w.getSettings().setDisplayZoomControls(!supportsMultiTouch);
         w.setExpandedTileBounds(true);  // smoother scrolling
         return w;
     }
@@ -156,8 +165,8 @@
     }
 
     @Override
-    public void onScroll(int visibleTitleHeight) {
-        mTabBar.onScroll(visibleTitleHeight);
+    public void onScroll(int visibleTitleHeight, boolean userInitiated) {
+        mTabBar.onScroll(visibleTitleHeight, userInitiated);
     }
 
     void stopWebViewScrolling() {
@@ -170,36 +179,27 @@
     // WebView callbacks
 
     @Override
-    public void bookmarkedStatusHasChanged(Tab tab) {
-        if (tab.inForeground()) {
-            boolean isBookmark = tab.isBookmarkedSite();
-            mTitleBar.setCurrentUrlIsBookmark(isBookmark);
-            mFakeTitleBar.setCurrentUrlIsBookmark(isBookmark);
-        }
-    }
-
-    @Override
     public void onProgressChanged(Tab tab) {
         int progress = tab.getLoadProgress();
         mTabBar.onProgress(tab, progress);
         if (tab.inForeground()) {
-            mFakeTitleBar.setProgress(progress);
+            mTitleBar.setProgress(progress);
             if (progress == 100) {
-                if (!mFakeTitleBar.isEditingUrl()) {
-                    hideFakeTitleBar();
+                if (!mTitleBar.isEditingUrl()) {
+                    hideTitleBar();
                     if (mUseQuickControls) {
-                        mFakeTitleBar.setShowProgressOnly(false);
-                        setFakeTitleBarGravity(Gravity.BOTTOM);
+                        mTitleBar.setShowProgressOnly(false);
+                        setTitleGravity(Gravity.BOTTOM);
                     }
                 }
             } else {
-                if (mUseQuickControls && !mFakeTitleBar.isEditingUrl()) {
-                    mFakeTitleBar.setShowProgressOnly(true);
-                    if (!isFakeTitleBarShowing()) {
-                        setFakeTitleBarGravity(Gravity.TOP);
+                if (!isTitleBarShowing()) {
+                    if (mUseQuickControls && !mTitleBar.isEditingUrl()) {
+                        mTitleBar.setShowProgressOnly(true);
+                        setTitleGravity(Gravity.TOP);
                     }
+                    showTitleBar();
                 }
-                showFakeTitleBar();
             }
         }
     }
@@ -219,8 +219,18 @@
     }
 
     @Override
-    public void setActiveTab(Tab tab) {
-        super.setActiveTab(tab);
+    public void setActiveTab(final Tab tab) {
+        if (mUseQuickControls) {
+            if (mActiveTab != null) {
+                captureTab(mActiveTab);
+            }
+        }
+        super.setActiveTab(tab, true);
+        setActiveTab(tab, true);
+    }
+
+    @Override
+    void setActiveTab(Tab tab, boolean needsAttaching) {
         ScrollWebView view = (ScrollWebView) tab.getWebView();
         // TabControl.setCurrentTab has been called before this,
         // so the tab is guaranteed to have a webview
@@ -234,7 +244,10 @@
             view.setScrollListener(null);
             mTabBar.showTitleBarIndicator(false);
         } else {
-            view.setEmbeddedTitleBar(mTitleBar);
+            // check if title bar is already attached by animation
+            if (mTitleBar.getParent() == null) {
+                view.setEmbeddedTitleBar(mTitleBar);
+            }
             view.setScrollListener(this);
         }
         mTabBar.onSetActiveTab(tab);
@@ -247,6 +260,15 @@
         tab.getTopWindow().requestFocus();
     }
 
+    public void captureTab(final Tab tab) {
+        Bitmap sshot = Controller.createScreenshot(tab,
+                (int) mActivity.getResources()
+                        .getDimension(R.dimen.qc_thumb_width),
+                (int) mActivity.getResources()
+                        .getDimension(R.dimen.qc_thumb_height));
+        tab.setScreenshot(sshot);
+    }
+
     @Override
     public void updateTabs(List<Tab> tabs) {
         mTabBar.updateTabs(tabs);
@@ -270,69 +292,79 @@
         return 0;
     }
 
-    void editUrl(boolean clearInput) {
+    @Override
+    public void editUrl(boolean clearInput) {
         if (mUiController.isInCustomActionMode()) {
             mUiController.endActionMode();
         }
-        showFakeTitleBar();
-        mFakeTitleBar.onEditUrl(clearInput);
+        showTitleBar();
+        mTitleBar.startEditingUrl(clearInput);
     }
 
-    void setFakeTitleBarGravity(int gravity) {
-        FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams)
-                mFakeTitleBar.getLayoutParams();
-        if (lp == null) {
-            lp = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,
-                    LayoutParams.WRAP_CONTENT);
+    void showTitleBarAndEdit() {
+        mTitleBar.setShowProgressOnly(false);
+        showTitleBar();
+        mTitleBar.startEditingUrl(false);
+    }
+
+    void stopEditingUrl() {
+        mTitleBar.stopEditingUrl();
+    }
+
+    @Override
+    protected void showTitleBar() {
+        if (canShowTitleBar()) {
+            if (mUseQuickControls) {
+                mContentView.addView(mTitleBar);
+            } else {
+                setTitleGravity(Gravity.TOP);
+            }
+            super.showTitleBar();
+            mTabBar.onShowTitleBar();
         }
-        lp.gravity = gravity;
-        mFakeTitleBar.setLayoutParams(lp);
-    }
-
-    void showFakeTitleBarAndEdit() {
-        mFakeTitleBar.setShowProgressOnly(false);
-        setFakeTitleBarGravity(Gravity.BOTTOM);
-        showFakeTitleBar();
-        mFakeTitleBar.onEditUrl(false);
     }
 
     @Override
-    protected void attachFakeTitleBar(WebView mainView) {
-        mContentView.addView(mFakeTitleBar);
-        mTabBar.onShowTitleBar();
-    }
-
-    @Override
-    protected void hideFakeTitleBar() {
-        if (isFakeTitleBarShowing()) {
-            mFakeTitleBar.setEditMode(false);
+    protected void hideTitleBar() {
+        if (isTitleBarShowing()) {
             mTabBar.onHideTitleBar();
-            mContentView.removeView(mFakeTitleBar);
+            if (mUseQuickControls) {
+                mContentView.removeView(mTitleBar);
+            } else {
+                setTitleGravity(Gravity.NO_GRAVITY);
+            }
+            super.hideTitleBar();
         }
     }
 
-    @Override
-    protected boolean isFakeTitleBarShowing() {
-        return (mFakeTitleBar.getParent() != null);
+    public boolean isEditingUrl() {
+        return mTitleBar.isEditingUrl();
     }
 
     @Override
-    protected TitleBarBase getFakeTitleBar() {
-        return mFakeTitleBar;
-    }
-
-    @Override
-    protected TitleBarBase getEmbeddedTitleBar() {
+    protected TitleBarBase getTitleBar() {
         return mTitleBar;
     }
 
+    @Override
+    protected void setTitleGravity(int gravity) {
+        if (mUseQuickControls) {
+            FrameLayout.LayoutParams lp =
+                (FrameLayout.LayoutParams) mTitleBar.getLayoutParams();
+            lp.gravity = gravity;
+            mTitleBar.setLayoutParams(lp);
+        } else {
+            super.setTitleGravity(gravity);
+        }
+    }
+
     // action mode callbacks
 
     @Override
     public void onActionModeStarted(ActionMode mode) {
-        if (!mFakeTitleBar.isEditingUrl()) {
+        if (!mTitleBar.isEditingUrl()) {
             // hide the fake title bar when CAB is shown
-            hideFakeTitleBar();
+            hideTitleBar();
         }
     }
 
@@ -342,18 +374,19 @@
         if (inLoad) {
             // the titlebar was removed when the CAB was shown
             // if the page is loading, show it again
-            mFakeTitleBar.setShowProgressOnly(true);
-            if (!isFakeTitleBarShowing()) {
-                setFakeTitleBarGravity(Gravity.TOP);
+            if (mUseQuickControls) {
+                mTitleBar.setShowProgressOnly(true);
+                if (!isTitleBarShowing()) {
+                    setTitleGravity(Gravity.TOP);
+                }
             }
-            showFakeTitleBar();
+            showTitleBar();
         }
     }
 
     @Override
     protected void updateNavigationState(Tab tab) {
         mTitleBar.updateNavigationState(tab);
-        mFakeTitleBar.updateNavigationState(tab);
     }
 
     @Override
@@ -375,10 +408,8 @@
         if (getActiveTab() != null) {
             vsresults = getActiveTab().getVoiceSearchResults();
         }
-        mTitleBar.setInVoiceMode(true, null);
+        mTitleBar.setInVoiceMode(true, vsresults);
         mTitleBar.setDisplayTitle(title);
-        mFakeTitleBar.setInVoiceMode(true, vsresults);
-        mFakeTitleBar.setDisplayTitle(title);
     }
 
     @Override
@@ -386,8 +417,6 @@
         mTitleBar.setInVoiceMode(false, null);
         String url = tab.getUrl();
         mTitleBar.setDisplayTitle(url);
-        mFakeTitleBar.setInVoiceMode(false, null);
-        mFakeTitleBar.setDisplayTitle(url);
     }
 
     @Override
@@ -408,22 +437,49 @@
 
     @Override
     public boolean dispatchKey(int code, KeyEvent event) {
-        WebView web = getActiveTab().getWebView();
-        switch (code) {
-            case KeyEvent.KEYCODE_TAB:
-            case KeyEvent.KEYCODE_DPAD_UP:
-            case KeyEvent.KEYCODE_DPAD_LEFT:
-                if ((web != null) && web.hasFocus()) {
-                    editUrl(true);
-                    return true;
+        if (mActiveTab != null) {
+            WebView web = mActiveTab.getWebView();
+            if (event.getAction() == KeyEvent.ACTION_DOWN) {
+                switch (code) {
+                    case KeyEvent.KEYCODE_TAB:
+                    case KeyEvent.KEYCODE_DPAD_UP:
+                    case KeyEvent.KEYCODE_DPAD_LEFT:
+                        if ((web != null) && web.hasFocus() && !mTitleBar.hasFocus()) {
+                            editUrl(false);
+                            return true;
+                        }
                 }
-        }
-        boolean ctrl = event.hasModifiers(KeyEvent.META_CTRL_ON);
-        if (!ctrl && event.isPrintingKey() && !mFakeTitleBar.isEditingUrl()) {
-            editUrl(true);
-            return mContentView.dispatchKeyEvent(event);
+                boolean ctrl = event.hasModifiers(KeyEvent.META_CTRL_ON);
+                if (!ctrl && isTypingKey(event) && !mTitleBar.isEditingUrl()) {
+                    editUrl(true);
+                    return mContentView.dispatchKeyEvent(event);
+                }
+            }
         }
         return false;
     }
 
+    private boolean isTypingKey(KeyEvent evt) {
+        return evt.getUnicodeChar() > 0;
+    }
+
+    TabBar getTabBar() {
+        return mTabBar;
+    }
+
+    @Override
+    public void registerDropdownChangeListener(DropdownChangeListener d) {
+        mTitleBar.registerDropdownChangeListener(d);
+    }
+
+    @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        if (mUseQuickControls) {
+            mPieControl.onMenuOpened(menu);
+            return false;
+        } else {
+            return true;
+        }
+    }
+
 }
diff --git a/src/com/android/browser/addbookmark/FolderSpinnerAdapter.java b/src/com/android/browser/addbookmark/FolderSpinnerAdapter.java
index 0712469..261aa62 100644
--- a/src/com/android/browser/addbookmark/FolderSpinnerAdapter.java
+++ b/src/com/android/browser/addbookmark/FolderSpinnerAdapter.java
@@ -35,15 +35,27 @@
  */
 public class FolderSpinnerAdapter implements SpinnerAdapter {
     private boolean mIncludeHomeScreen;
+    private boolean mIncludesRecentFolder;
+    private long mRecentFolderId;
+    private String mRecentFolderName;
 
     public static final int HOME_SCREEN = 0;
     public static final int ROOT_FOLDER = 1;
     public static final int OTHER_FOLDER = 2;
+    public static final int RECENT_FOLDER = 3;
 
     public FolderSpinnerAdapter(boolean includeHomeScreen) {
         mIncludeHomeScreen = includeHomeScreen;
     }
 
+    public void addRecentFolder(long folderId, String folderName) {
+        mIncludesRecentFolder = true;
+        mRecentFolderId = folderId;
+        mRecentFolderName = folderName;
+    }
+
+    public long recentFolderId() { return mRecentFolderId; }
+
     @Override
     public View getDropDownView(int position, View convertView, ViewGroup parent) {
         int labelResource;
@@ -60,6 +72,8 @@
                 labelResource = R.string.add_to_bookmarks_menu_option;
                 drawableResource = R.drawable.ic_bookmarks_holo_dark;
                 break;
+            case RECENT_FOLDER:
+                // Fall through and use the same icon resource
             case OTHER_FOLDER:
                 labelResource = R.string.add_to_other_folder_menu_option;
                 drawableResource = R.drawable.ic_folder_holo_dark;
@@ -73,7 +87,11 @@
         Context context = parent.getContext();
         LayoutInflater factory = LayoutInflater.from(context);
         TextView textView = (TextView) factory.inflate(R.layout.add_to_option, null);
-        textView.setText(labelResource);
+        if (position == RECENT_FOLDER) {
+            textView.setText(mRecentFolderName);
+        } else {
+            textView.setText(labelResource);
+        }
         Drawable drawable = context.getResources().getDrawable(drawableResource);
         textView.setCompoundDrawablesWithIntrinsicBounds(drawable, null,
                 null, null);
@@ -90,7 +108,10 @@
 
     @Override
     public int getCount() {
-        return mIncludeHomeScreen ? 3 : 2;
+        int count = 2;
+        if (mIncludeHomeScreen) count++;
+        if (mIncludesRecentFolder) count++;
+        return count;
     }
 
     @Override
diff --git a/src/com/android/browser/autocomplete/SuggestedSpan.java b/src/com/android/browser/autocomplete/SuggestedSpan.java
new file mode 100644
index 0000000..dc04cb2
--- /dev/null
+++ b/src/com/android/browser/autocomplete/SuggestedSpan.java
@@ -0,0 +1,34 @@
+/*
+ * 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.autocomplete;
+
+import android.os.Parcel;
+import android.text.style.ForegroundColorSpan;
+
+/**
+ * Class used to mark the portion of text within {@link SuggestiveEditText} that is suggested.
+ */
+class SuggestedSpan extends ForegroundColorSpan {
+
+    public SuggestedSpan(Parcel src) {
+        super(src);
+    }
+
+    public SuggestedSpan(int color) {
+        super(color);
+    }
+
+}
diff --git a/src/com/android/browser/autocomplete/SuggestedTextController.java b/src/com/android/browser/autocomplete/SuggestedTextController.java
new file mode 100644
index 0000000..95dfcab
--- /dev/null
+++ b/src/com/android/browser/autocomplete/SuggestedTextController.java
@@ -0,0 +1,516 @@
+/*
+ * 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.autocomplete;
+
+import com.google.common.annotations.VisibleForTesting;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.text.Editable;
+import android.text.Selection;
+import android.text.SpanWatcher;
+import android.text.Spannable;
+import android.text.Spanned;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.util.Log;
+import android.view.View;
+import android.widget.EditText;
+
+import java.util.ArrayList;
+
+import junit.framework.Assert;
+
+
+/**
+ * The query editor can show a suggestion, grayed out following the query that the user has
+ * entered so far. As the user types new characters, these should replace the grayed suggestion
+ * text. This class manages this logic, displaying the suggestion when the user entered text is a
+ * prefix of it, and hiding it otherwise.
+ *
+ * Note, the text in the text view will contain the entire suggestion, not just what the user
+ * entered. Instead of retrieving the text from the text view, {@link #getUserText()} should be
+ * called on this class.
+ */
+public class SuggestedTextController {
+    private static final boolean DBG = false;
+    private static final String TAG = "Browser.SuggestedTextController";
+
+    private final BufferTextWatcher mBufferTextWatcher = new BufferTextWatcher();
+    private final BufferSpanWatcher mBufferSpanWatcher = new BufferSpanWatcher();
+    private final ArrayList<TextChangeWatcher> mTextWatchers;
+    private final TextOwner mTextOwner;
+    private final StringBuffer mUserEntered;
+    private final SuggestedSpan mSuggested;
+    private String mSuggestedText;
+    private TextChangeAttributes mCurrentTextChange;
+    private boolean mSuspended = false;
+
+    /**
+     * While this is non-null, any changes made to the cursor position or selection are ignored. Is
+     * stored the selection state at the moment when selection change processing was disabled.
+     */
+    private BufferSelection mTextSelectionBeforeIgnoringChanges;
+
+    public SuggestedTextController(final EditText textView, int color) {
+        this(new TextOwner() {
+            @Override
+            public Editable getText() {
+                return textView.getText();
+            }
+            @Override
+            public void addTextChangedListener(TextWatcher watcher) {
+                textView.addTextChangedListener(watcher);
+            }
+            @Override
+            public void removeTextChangedListener(TextWatcher watcher) {
+                textView.removeTextChangedListener(watcher);
+            }
+            @Override
+            public void setText(String text) {
+                textView.setText(text);
+            }
+        }, color);
+    }
+
+    private void initialize(String userText, int selStart, int selEnd, String suggested) {
+        Editable text = mTextOwner.getText();
+
+        if (userText == null) userText = "";
+        String allText = userText;
+        int suggestedStart = allText.length();
+        if (suggested != null && userText != null) {
+            if (suggested.startsWith(userText.toLowerCase())) {
+                allText = suggested;
+            }
+        }
+
+        // allText is at this point either "userText" (not null) or
+        // "suggested" if thats not null and starts with userText.
+        text.replace(0, text.length(), allText);
+        Selection.setSelection(text, selStart, selEnd);
+        mUserEntered.replace(0, mUserEntered.length(), userText);
+        mSuggestedText = suggested;
+        if (suggestedStart < text.length()) {
+            text.setSpan(mSuggested, suggestedStart, text.length(),
+                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        } else {
+            text.removeSpan(mSuggested);
+        }
+        text.setSpan(mBufferSpanWatcher, 0, text.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
+        mTextOwner.addTextChangedListener(mBufferTextWatcher);
+        if (DBG) checkInvariant(text);
+    }
+
+    private void assertNotIgnoringSelectionChanges() {
+        if (mTextSelectionBeforeIgnoringChanges != null) {
+            throw new IllegalStateException(
+                    "Illegal operation while cursor movement processing suspended");
+        }
+    }
+
+    public boolean isCursorHandlingSuspended() {
+        return mSuspended;
+    }
+
+    public Parcelable saveInstanceState(Parcelable superState) {
+        assertNotIgnoringSelectionChanges();
+        SavedState ss = new SavedState(superState);
+        Editable buffer = mTextOwner.getText();
+        ss.mUserText = getUserText();
+        ss.mSuggestedText = mSuggestedText;
+        ss.mSelStart = Selection.getSelectionStart(buffer);
+        ss.mSelEnd = Selection.getSelectionEnd(buffer);
+        return ss;
+    }
+
+    public Parcelable restoreInstanceState(Parcelable state) {
+        assertNotIgnoringSelectionChanges();
+        if (!(state instanceof SavedState)) return state;
+        SavedState ss = (SavedState) state;
+        if (DBG) {
+            Log.d(TAG, "restoreInstanceState t='" + ss.mUserText + "' suggestion='" +
+                    ss.mSuggestedText + " sel=" + ss.mSelStart + ".." + ss.mSelEnd);
+        }
+        // remove our listeners so we don't get notifications while re-initialising
+        mTextOwner.getText().removeSpan(mBufferSpanWatcher);
+        mTextOwner.removeTextChangedListener(mBufferTextWatcher);
+        // and initialise will re-add the watchers
+        initialize(ss.mUserText, ss.mSelStart, ss.mSelEnd, ss.mSuggestedText);
+        notifyUserEnteredChanged();
+        return ss.getSuperState();
+    }
+
+    /**
+     * Temporarily stop processing cursor movements and selection changes. While cursor movements
+     * are being ignored, the text in the buffer must NOT be changed; doing so will result in an
+     * {@link IllegalStateException} being thrown.
+     *
+     * To stop ignoring cursor movements, call
+     * {@link #resumeCursorMovementHandlingAndApplyChanges()}.
+     */
+    public void suspendCursorMovementHandling() {
+        assertNotIgnoringSelectionChanges();
+        Editable buffer = mTextOwner.getText();
+        mTextSelectionBeforeIgnoringChanges = new BufferSelection(buffer);
+        mSuspended = true;
+    }
+
+    /**
+     * Start responding to cursor movements and selection changes again. If the cursor or selection
+     * moved while it was being ignored, these changes will be processed now.
+     */
+    public void resumeCursorMovementHandlingAndApplyChanges() {
+        Editable buffer = mTextOwner.getText();
+        BufferSelection oldSelection = mTextSelectionBeforeIgnoringChanges;
+        mTextSelectionBeforeIgnoringChanges = null;
+        BufferSelection newSelection = new BufferSelection(buffer);
+        if (oldSelection.mStart != newSelection.mStart) {
+            mBufferSpanWatcher.onSpanChanged(buffer, Selection.SELECTION_START,
+                    oldSelection.mStart, oldSelection.mStart,
+                    newSelection.mStart, newSelection.mStart);
+        }
+        if (oldSelection.mEnd != newSelection.mEnd) {
+            mBufferSpanWatcher.onSpanChanged(buffer, Selection.SELECTION_END,
+                    oldSelection.mEnd, oldSelection.mEnd,
+                    newSelection.mEnd, newSelection.mEnd);
+        }
+        mSuspended = false;
+    }
+
+    /**
+     * Sets the current suggested text. A portion of this will be added to the user entered text if
+     * that is a prefix of the suggestion.
+     */
+    public void setSuggestedText(String text) {
+        assertNotIgnoringSelectionChanges();
+        if (!TextUtils.equals(text, mSuggestedText)) {
+            if (DBG) Log.d(TAG, "setSuggestedText(" + text + ")");
+            mSuggestedText = text;
+            if (mCurrentTextChange == null) {
+                mCurrentTextChange = new TextChangeAttributes(0, 0, 0);
+                Editable buffer = mTextOwner.getText();
+                handleTextChanged(buffer);
+            }
+        }
+    }
+
+    /**
+     * Gets the portion of displayed text that is not suggested.
+     */
+    public String getUserText() {
+        assertNotIgnoringSelectionChanges();
+        return mUserEntered.toString();
+    }
+
+    /**
+     * Sets the given text as if it has been entered by the user.
+     */
+    public void setText(String text) {
+        assertNotIgnoringSelectionChanges();
+        if (text == null) text = "";
+        Editable buffer = mTextOwner.getText();
+        buffer.removeSpan(mSuggested);
+        // this will cause a handleTextChanged call
+        buffer.replace(0, text.length(), text);
+    }
+
+    public void addUserTextChangeWatcher(TextChangeWatcher watcher) {
+        mTextWatchers.add(watcher);
+    }
+
+    private void handleTextChanged(Editable newText) {
+        // When we make changes to the buffer from within this function, it results in recursive
+        // calls to beforeTextChanges(), afterTextChanged(). We want to ignore the changes we're
+        // making ourself:
+        if (mCurrentTextChange.isHandled()) return;
+        mCurrentTextChange.setHandled();
+        final int pos = mCurrentTextChange.mPos;
+        final int countBefore = mCurrentTextChange.mCountBefore;
+        final int countAfter = mCurrentTextChange.mCountAfter;
+        final int cursorPos = Selection.getSelectionEnd(newText);
+        if (DBG) {
+            Log.d(TAG, "pos=" + pos +"; countBefore=" + countBefore + "; countAfter=" +
+                    countAfter + "; cursor=" + cursorPos);
+        }
+        mUserEntered.replace(pos, pos + countBefore,
+                newText.subSequence(pos, pos + countAfter).toString());
+        if (DBG) Log.d(TAG, "User entered: '" + mUserEntered + "' all='" + newText + "'");
+        final int userLen = mUserEntered.length();
+        boolean haveSuggested = newText.getSpanStart(mSuggested) != -1;
+        if (mSuggestedText != null &&
+                mSuggestedText.startsWith(mUserEntered.toString().toLowerCase())) {
+            if (haveSuggested) {
+                if (!mSuggestedText.equalsIgnoreCase(newText.toString())) {
+                    if (countAfter > countBefore) {
+                        // net insertion
+                        int len = countAfter - countBefore;
+                        newText.delete(pos + len, pos + len + len);
+                    } else {
+                        // net deletion
+                        newText.replace(userLen, newText.length(),
+                                mSuggestedText.substring(userLen));
+                        if (countBefore == 0) {
+                            // no change to the text - likely just suggested change
+                            Selection.setSelection(newText, cursorPos);
+                        }
+                    }
+                }
+            } else {
+                // no current suggested text - add it
+                newText.insert(userLen, mSuggestedText.substring(userLen));
+                // keep the cursor at the end of the user entered text, if that where it was
+                // before.
+                if (cursorPos == userLen) {
+                    Selection.setSelection(newText, userLen);
+                }
+            }
+            if (userLen == newText.length()) {
+                newText.removeSpan(mSuggested);
+            } else {
+                newText.setSpan(mSuggested, userLen, newText.length(),
+                        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+            }
+        } else {
+            if (newText.getSpanStart(mSuggested) != -1) {
+                newText.removeSpan(mSuggested);
+                newText.delete(mUserEntered.length(), newText.length());
+            }
+        }
+        if (DBG) checkInvariant(newText);
+        mCurrentTextChange = null;
+        if (countBefore > 0 || countAfter > 0) {
+            notifyUserEnteredChanged();
+        }
+    }
+
+    private void notifyUserEnteredChanged() {
+        for (TextChangeWatcher watcher : mTextWatchers) {
+            watcher.onTextChanged(mUserEntered.toString());
+        }
+    }
+
+    /**
+     * Basic interface for being notified of changes to some text.
+     */
+    public interface TextChangeWatcher {
+        void onTextChanged(String newText);
+    }
+
+    /**
+     * Interface class to wrap required methods from {@link EditText}, or some other class used
+     * to test without needing an @{link EditText}.
+     */
+    public interface TextOwner {
+        Editable getText();
+        void addTextChangedListener(TextWatcher watcher);
+        void removeTextChangedListener(TextWatcher watcher);
+        void setText(String text);
+    }
+
+    /**
+     * This class stores the parameters passed to {@link BufferTextWatcher#beforeTextChanged},
+     * together with a flag indicating if this invocation has been dealt with yet. We need this
+     * information, together with the parameters passed to
+     * {@link BufferTextWatcher#afterTextChanged}, to restore our internal state when the buffer is
+     * edited.
+     *
+     * Since the changes we make from within {@link BufferTextWatcher#afterTextChanged} also trigger
+     * further recursive calls to {@link BufferTextWatcher#beforeTextChanged} and
+     * {@link BufferTextWatcher#afterTextChanged}, this class helps detect these recursive calls so
+     * they can be ignored.
+     */
+    private static class TextChangeAttributes {
+        public final int mPos;
+        public final int mCountAfter;
+        public final int mCountBefore;
+        private boolean mHandled;
+
+        public TextChangeAttributes(int pos, int countAfter, int countBefore) {
+            mPos = pos;
+            mCountAfter = countAfter;
+            mCountBefore = countBefore;
+        }
+
+        public void setHandled() {
+            mHandled = true;
+        }
+
+        public boolean isHandled() {
+            return mHandled;
+        }
+    }
+
+    /**
+     * Encapsulates the state of the text selection (and cursor) within a text buffer.
+     */
+    private static class BufferSelection {
+        final int mStart;
+        final int mEnd;
+        public BufferSelection(CharSequence text) {
+            mStart = Selection.getSelectionStart(text);
+            mEnd = Selection.getSelectionEnd(text);
+        }
+        @Override
+        public boolean equals(Object other) {
+            if (!(other instanceof BufferSelection)) return super.equals(other);
+            BufferSelection otherSel = (BufferSelection) other;
+            return this.mStart == otherSel.mStart && this.mEnd == otherSel.mEnd;
+        }
+    }
+
+    private class BufferTextWatcher implements TextWatcher {
+        @Override
+        public void afterTextChanged(Editable newText) {
+            if (DBG) {
+                Log.d(TAG, "afterTextChanged('" + newText + "')");
+            }
+            assertNotIgnoringSelectionChanges();
+            handleTextChanged(newText);
+        }
+
+        @Override
+        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+            assertNotIgnoringSelectionChanges();
+            if (mCurrentTextChange == null) {
+                mCurrentTextChange = new TextChangeAttributes(start, after, count);
+            }
+        }
+
+        @Override
+        public void onTextChanged(CharSequence s, int start, int before, int count) {
+        }
+    }
+
+    private class BufferSpanWatcher implements SpanWatcher {
+        @Override
+        public void onSpanAdded(Spannable text, Object what, int start, int end) {
+        }
+
+        @Override
+        public void onSpanChanged(
+                Spannable text, Object what, int ostart, int oend, int nstart, int nend) {
+            if (mCurrentTextChange != null) return;
+            if (mTextSelectionBeforeIgnoringChanges != null) return;
+            if (what == Selection.SELECTION_END) {
+                if (DBG) Log.d(TAG, "cursor move to " + nend);
+                if (nend > mUserEntered.length()) {
+                    mUserEntered.replace(0, mUserEntered.length(), text.toString());
+                    text.removeSpan(mSuggested);
+                }
+                if (DBG) checkInvariant(text);
+            }
+        }
+
+        @Override
+        public void onSpanRemoved(Spannable text, Object what, int start, int end) {
+        }
+    }
+
+    public static class SavedState extends View.BaseSavedState {
+        String mUserText;
+        String mSuggestedText;
+        int mSelStart;
+        int mSelEnd;
+
+        public SavedState(Parcelable superState) {
+            super(superState);
+        }
+
+        @Override
+        public void writeToParcel(Parcel out, int flags) {
+            super.writeToParcel(out, flags);
+            out.writeString(mUserText);
+            out.writeString(mSuggestedText);
+            out.writeInt(mSelStart);
+            out.writeInt(mSelEnd);
+        }
+
+        @SuppressWarnings("hiding")
+        public static final Parcelable.Creator<SavedState> CREATOR
+                = new Parcelable.Creator<SavedState>() {
+            @Override
+            public SavedState createFromParcel(Parcel in) {
+                return new SavedState(in);
+            }
+
+            @Override
+            public SavedState[] newArray(int size) {
+                return new SavedState[size];
+            }
+        };
+
+        private SavedState(Parcel in) {
+            super(in);
+            mUserText = in.readString();
+            mSuggestedText = in.readString();
+            mSelStart = in.readInt();
+            mSelEnd = in.readInt();
+        }
+    }
+
+    /*
+     * The remaining functions are used for testing purposes only.
+     * -----------------------------------------------------------
+     */
+
+    /**
+     * Verify that the internal state of this class is consistent.
+     */
+    @VisibleForTesting
+    void checkInvariant(final Spannable s) {
+        int suggestedStart = s.getSpanStart(mSuggested);
+        int suggestedEnd = s.getSpanEnd(mSuggested);
+        int cursorPos = Selection.getSelectionEnd(s);
+        if (suggestedStart == -1 || suggestedEnd == -1) {
+            suggestedStart = suggestedEnd = s.length();
+        }
+        String userEntered = getUserText();
+        Log.d(TAG, "checkInvariant all='" + s + "' (len " + s.length() + ") sug="
+                + suggestedStart + ".." + suggestedEnd + " cursor=" + cursorPos +
+                " ue='" + userEntered + "' (len " + userEntered.length() + ")");
+        int suggestedLen = suggestedEnd - suggestedStart;
+        Assert.assertEquals("Sum of user and suggested text lengths doesn't match total length",
+                s.length(), userEntered.length() + suggestedLen);
+        Assert.assertEquals("End of user entered text doesn't match start of suggested",
+                suggestedStart, userEntered.length());
+        Assert.assertTrue("user entered text does not match start of buffer",
+                userEntered.toString().equalsIgnoreCase(
+                        s.subSequence(0, suggestedStart).toString()));
+        if (mSuggestedText != null && suggestedStart < s.length()) {
+            Assert.assertTrue("User entered is not a prefix of suggested",
+                    mSuggestedText.startsWith(userEntered.toString().toLowerCase()));
+            Assert.assertTrue("Suggested text does not match buffer contents",
+                    mSuggestedText.equalsIgnoreCase(s.toString().toLowerCase()));
+        }
+        if (mSuggestedText == null) {
+            Assert.assertEquals("Non-zero suggention length with null suggestion", 0, suggestedLen);
+        } else {
+            Assert.assertTrue("Suggestion text longer than suggestion (" + mSuggestedText.length() +
+                    ">" + suggestedLen + ")", suggestedLen <= mSuggestedText.length());
+        }
+        Assert.assertTrue("Cursor within suggested part", cursorPos <= suggestedStart);
+    }
+
+    @VisibleForTesting
+    SuggestedTextController(TextOwner textOwner, int color) {
+        mUserEntered = new StringBuffer();
+        mSuggested = new SuggestedSpan(color);
+        mTextOwner = textOwner;
+        mTextWatchers = new ArrayList<TextChangeWatcher>();
+        initialize(null, 0, 0, null);
+    }
+}
diff --git a/src/com/android/browser/autocomplete/SuggestiveAutoCompleteTextView.java b/src/com/android/browser/autocomplete/SuggestiveAutoCompleteTextView.java
new file mode 100644
index 0000000..07c88e8
--- /dev/null
+++ b/src/com/android/browser/autocomplete/SuggestiveAutoCompleteTextView.java
@@ -0,0 +1,835 @@
+/*
+ * 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.autocomplete;
+
+import com.android.browser.BrowserSettings;
+import com.android.browser.SuggestionsAdapter;
+import com.android.browser.SuggestionsAdapter.SuggestItem;
+import com.android.browser.autocomplete.SuggestedTextController.TextChangeWatcher;
+import com.android.internal.R;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.database.DataSetObserver;
+import android.graphics.Rect;
+import android.os.Parcelable;
+import android.text.Editable;
+import android.text.Html;
+import android.text.Selection;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.AbsSavedState;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.view.inputmethod.CompletionInfo;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.AdapterView;
+import android.widget.EditText;
+import android.widget.Filter;
+import android.widget.Filterable;
+import android.widget.ListAdapter;
+import android.widget.ListPopupWindow;
+import android.widget.TextView;
+
+
+/**
+ * This is a stripped down version of the framework AutoCompleteTextView
+ * class with added support for displaying completions in-place. Note that
+ * this cannot be implemented as a subclass of the above without making
+ * substantial changes to it and its descendants.
+ *
+ * @see android.widget.AutoCompleteTextView
+ */
+public class SuggestiveAutoCompleteTextView extends EditText implements Filter.FilterListener {
+    private static final boolean DEBUG = false;
+    private static final String TAG = "SuggestiveAutoCompleteTextView";
+
+    private CharSequence mHintText;
+    private TextView mHintView;
+    private int mHintResource;
+
+    private SuggestionsAdapter mAdapter;
+    private Filter mFilter;
+    private int mThreshold;
+
+    private ListPopupWindow mPopup;
+    private int mDropDownAnchorId;
+
+    private AdapterView.OnItemClickListener mItemClickListener;
+
+    private boolean mDropDownDismissedOnCompletion = true;
+
+    private int mLastKeyCode = KeyEvent.KEYCODE_UNKNOWN;
+
+    // Set to true when text is set directly and no filtering shall be performed
+    private boolean mBlockCompletion;
+
+    // When set, an update in the underlying adapter will update the result list popup.
+    // Set to false when the list is hidden to prevent asynchronous updates to popup the list again.
+    private boolean mPopupCanBeUpdated = true;
+
+    private PassThroughClickListener mPassThroughClickListener;
+    private PopupDataSetObserver mObserver;
+    private SuggestedTextController mController;
+
+    public SuggestiveAutoCompleteTextView(Context context) {
+        this(context, null);
+    }
+
+    public SuggestiveAutoCompleteTextView(Context context, AttributeSet attrs) {
+        this(context, attrs, R.attr.autoCompleteTextViewStyle);
+    }
+
+    public SuggestiveAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+
+        // The completions are always shown in the same color as the hint
+        // text.
+        mController = new SuggestedTextController(this, getHintTextColors().getDefaultColor());
+        mPopup = new ListPopupWindow(context, attrs,
+                 R.attr.autoCompleteTextViewStyle);
+        mPopup.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
+        mPopup.setPromptPosition(ListPopupWindow.POSITION_PROMPT_BELOW);
+
+        TypedArray a = context.obtainStyledAttributes(
+                attrs, R.styleable.AutoCompleteTextView, defStyle, 0);
+
+        mThreshold = a.getInt(
+                R.styleable.AutoCompleteTextView_completionThreshold, 2);
+
+        mPopup.setListSelector(a.getDrawable(R.styleable.AutoCompleteTextView_dropDownSelector));
+        mPopup.setVerticalOffset((int)
+                a.getDimension(R.styleable.AutoCompleteTextView_dropDownVerticalOffset, 0.0f));
+        mPopup.setHorizontalOffset((int)
+                a.getDimension(R.styleable.AutoCompleteTextView_dropDownHorizontalOffset, 0.0f));
+
+        // Get the anchor's id now, but the view won't be ready, so wait to actually get the
+        // view and store it in mDropDownAnchorView lazily in getDropDownAnchorView later.
+        // Defaults to NO_ID, in which case the getDropDownAnchorView method will simply return
+        // this TextView, as a default anchoring point.
+        mDropDownAnchorId = a.getResourceId(
+                R.styleable.AutoCompleteTextView_dropDownAnchor, View.NO_ID);
+
+        // For dropdown width, the developer can specify a specific width, or MATCH_PARENT
+        // (for full screen width) or WRAP_CONTENT (to match the width of the anchored view).
+        mPopup.setWidth(a.getLayoutDimension(
+                R.styleable.AutoCompleteTextView_dropDownWidth,
+                ViewGroup.LayoutParams.WRAP_CONTENT));
+        mPopup.setHeight(a.getLayoutDimension(
+                R.styleable.AutoCompleteTextView_dropDownHeight,
+                ViewGroup.LayoutParams.WRAP_CONTENT));
+
+        mHintResource = a.getResourceId(R.styleable.AutoCompleteTextView_completionHintView,
+                R.layout.simple_dropdown_hint);
+
+        mPopup.setOnItemClickListener(new DropDownItemClickListener());
+        setCompletionHint(a.getText(R.styleable.AutoCompleteTextView_completionHint));
+
+        // Always turn on the auto complete input type flag, since it
+        // makes no sense to use this widget without it.
+        int inputType = getInputType();
+        if ((inputType&EditorInfo.TYPE_MASK_CLASS)
+                == EditorInfo.TYPE_CLASS_TEXT) {
+            inputType |= EditorInfo.TYPE_TEXT_FLAG_AUTO_COMPLETE;
+            setRawInputType(inputType);
+        }
+
+        a.recycle();
+
+        setFocusable(true);
+
+        mController.addUserTextChangeWatcher(new MyWatcher());
+
+        mPassThroughClickListener = new PassThroughClickListener();
+        super.setOnClickListener(mPassThroughClickListener);
+    }
+
+    @Override
+    public void setOnClickListener(OnClickListener listener) {
+        mPassThroughClickListener.mWrapped = listener;
+    }
+
+    /**
+     * Private hook into the on click event, dispatched from {@link PassThroughClickListener}
+     */
+    private void onClickImpl() {
+        // If the dropdown is showing, bring the keyboard to the front
+        // when the user touches the text field.
+        if (isPopupShowing()) {
+            ensureImeVisible(true);
+        }
+    }
+
+    /**
+     * <p>Sets the optional hint text that is displayed at the bottom of the
+     * the matching list.  This can be used as a cue to the user on how to
+     * best use the list, or to provide extra information.</p>
+     *
+     * @param hint the text to be displayed to the user
+     *
+     * @attr ref android.R.styleable#AutoCompleteTextView_completionHint
+     */
+    private void setCompletionHint(CharSequence hint) {
+        mHintText = hint;
+        if (hint != null) {
+            if (mHintView == null) {
+                final TextView hintView = (TextView) LayoutInflater.from(getContext()).inflate(
+                        mHintResource, null).findViewById(R.id.text1);
+                hintView.setText(mHintText);
+                mHintView = hintView;
+                mPopup.setPromptView(hintView);
+            } else {
+                mHintView.setText(hint);
+            }
+        } else {
+            mPopup.setPromptView(null);
+            mHintView = null;
+        }
+    }
+
+    protected int getDropDownWidth() {
+        return mPopup.getWidth();
+    }
+
+    public void setDropDownWidth(int width) {
+        mPopup.setWidth(width);
+    }
+
+    protected void setDropDownVerticalOffset(int offset) {
+        mPopup.setVerticalOffset(offset);
+    }
+
+    public void setDropDownHorizontalOffset(int offset) {
+        mPopup.setHorizontalOffset(offset);
+    }
+
+    protected int getDropDownHorizontalOffset() {
+        return mPopup.getHorizontalOffset();
+    }
+
+    public void setThreshold(int threshold) {
+        if (threshold <= 0) {
+            threshold = 1;
+        }
+
+        mThreshold = threshold;
+    }
+
+    protected void setOnItemClickListener(AdapterView.OnItemClickListener l) {
+        mItemClickListener = l;
+    }
+
+    public void setAdapter(SuggestionsAdapter adapter) {
+        if (mObserver == null) {
+            mObserver = new PopupDataSetObserver();
+        } else if (mAdapter != null) {
+            mAdapter.unregisterDataSetObserver(mObserver);
+        }
+        mAdapter = adapter;
+        if (mAdapter != null) {
+            mFilter = mAdapter.getFilter();
+            adapter.registerDataSetObserver(mObserver);
+        } else {
+            mFilter = null;
+        }
+
+        mPopup.setAdapter(mAdapter);
+    }
+
+    @Override
+    public boolean onKeyPreIme(int keyCode, KeyEvent event) {
+        if (keyCode == KeyEvent.KEYCODE_BACK && isPopupShowing()
+                && !mPopup.isDropDownAlwaysVisible()) {
+            // special case for the back key, we do not even try to send it
+            // to the drop down list but instead, consume it immediately
+            if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
+                KeyEvent.DispatcherState state = getKeyDispatcherState();
+                if (state != null) {
+                    state.startTracking(event, this);
+                }
+                return true;
+            } else if (event.getAction() == KeyEvent.ACTION_UP) {
+                KeyEvent.DispatcherState state = getKeyDispatcherState();
+                if (state != null) {
+                    state.handleUpEvent(event);
+                }
+                if (event.isTracking() && !event.isCanceled()) {
+                    dismissDropDown();
+                    return true;
+                }
+            }
+        }
+        return super.onKeyPreIme(keyCode, event);
+    }
+
+    @Override
+    public boolean onKeyUp(int keyCode, KeyEvent event) {
+        boolean consumed = mPopup.onKeyUp(keyCode, event);
+        if (consumed) {
+            switch (keyCode) {
+            // if the list accepts the key events and the key event
+            // was a click, the text view gets the selected item
+            // from the drop down as its content
+            case KeyEvent.KEYCODE_ENTER:
+            case KeyEvent.KEYCODE_DPAD_CENTER:
+            case KeyEvent.KEYCODE_TAB:
+                if (event.hasNoModifiers()) {
+                    performCompletion();
+                }
+                return true;
+            }
+        }
+
+        if (isPopupShowing() && keyCode == KeyEvent.KEYCODE_TAB && event.hasNoModifiers()) {
+            performCompletion();
+            return true;
+        }
+
+        return super.onKeyUp(keyCode, event);
+    }
+
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        if (mPopup.onKeyDown(keyCode, event)) {
+            return true;
+        }
+
+        if (!isPopupShowing()) {
+            switch(keyCode) {
+            case KeyEvent.KEYCODE_DPAD_DOWN:
+                if (event.hasNoModifiers()) {
+                    performValidation();
+                }
+            }
+        }
+
+        if (isPopupShowing() && keyCode == KeyEvent.KEYCODE_TAB && event.hasNoModifiers()) {
+            return true;
+        }
+
+        mLastKeyCode = keyCode;
+        boolean handled = super.onKeyDown(keyCode, event);
+        mLastKeyCode = KeyEvent.KEYCODE_UNKNOWN;
+
+        if (handled && isPopupShowing()) {
+            clearListSelection();
+        }
+
+        return handled;
+    }
+
+    /**
+     * Returns <code>true</code> if the amount of text in the field meets
+     * or exceeds the {@link #getThreshold} requirement.  You can override
+     * this to impose a different standard for when filtering will be
+     * triggered.
+     */
+    private boolean enoughToFilter() {
+        if (DEBUG) Log.v(TAG, "Enough to filter: len=" + getUserText().length()
+                + " threshold=" + mThreshold);
+        return getUserText().length() >= mThreshold;
+    }
+
+    /**
+     * This is used to watch for edits to the text view.  Note that we call
+     * to methods on the auto complete text view class so that we can access
+     * private vars without going through thunks.
+     */
+    private class MyWatcher implements TextChangeWatcher {
+        @Override
+        public void onTextChanged(String newText) {
+            doAfterTextChanged();
+        }
+    }
+
+    /**
+     * @hide
+     */
+    protected void setBlockCompletion(boolean block) {
+        mBlockCompletion = block;
+    }
+
+    void doAfterTextChanged() {
+        if (DEBUG) Log.d(TAG, "doAfterTextChanged(" + getText() + ")");
+        if (mBlockCompletion) return;
+
+        // the drop down is shown only when a minimum number of characters
+        // was typed in the text view
+        if (enoughToFilter()) {
+            if (mFilter != null) {
+                mPopupCanBeUpdated = true;
+                performFiltering(getUserText(), mLastKeyCode);
+                buildImeCompletions();
+            }
+        } else {
+            // drop down is automatically dismissed when enough characters
+            // are deleted from the text view
+            if (!mPopup.isDropDownAlwaysVisible()) {
+                dismissDropDown();
+            }
+            if (mFilter != null) {
+                performFiltering(null, mLastKeyCode);
+            }
+        }
+    }
+
+    /**
+     * <p>Indicates whether the popup menu is showing.</p>
+     *
+     * @return true if the popup menu is showing, false otherwise
+     */
+    public boolean isPopupShowing() {
+        return mPopup.isShowing();
+    }
+
+    /**
+     * <p>Converts the selected item from the drop down list into a sequence
+     * of character that can be used in the edit box.</p>
+     *
+     * @param selectedItem the item selected by the user for completion
+     *
+     * @return a sequence of characters representing the selected suggestion
+     */
+    protected CharSequence convertSelectionToString(Object selectedItem) {
+        return mFilter.convertResultToString(selectedItem);
+    }
+
+    /**
+     * <p>Clear the list selection.  This may only be temporary, as user input will often bring
+     * it back.
+     */
+    private void clearListSelection() {
+        mPopup.clearListSelection();
+    }
+
+    /**
+     * <p>Starts filtering the content of the drop down list. The filtering
+     * pattern is the content of the edit box. Subclasses should override this
+     * method to filter with a different pattern, for instance a substring of
+     * <code>text</code>.</p>
+     *
+     * @param text the filtering pattern
+     * @param keyCode the last character inserted in the edit box; beware that
+     * this will be null when text is being added through a soft input method.
+     */
+    @SuppressWarnings({ "UnusedDeclaration" })
+    protected void performFiltering(CharSequence text, int keyCode) {
+        if (DEBUG) Log.d(TAG, "performFiltering(" + text + ")");
+
+        mFilter.filter(text, this);
+    }
+
+    protected void performForcedFiltering() {
+        boolean wasSuspended = false;
+        if (mController.isCursorHandlingSuspended()) {
+            mController.resumeCursorMovementHandlingAndApplyChanges();
+            wasSuspended = true;
+        }
+
+        mFilter.filter(getUserText().toString(), this);
+
+        if (wasSuspended) {
+            mController.suspendCursorMovementHandling();
+        }
+    }
+
+    /**
+     * <p>Performs the text completion by converting the selected item from
+     * the drop down list into a string, replacing the text box's content with
+     * this string and finally dismissing the drop down menu.</p>
+     */
+    private void performCompletion() {
+        performCompletion(null, -1, -1);
+    }
+
+    @Override
+    public void onCommitCompletion(CompletionInfo completion) {
+        if (isPopupShowing()) {
+            mBlockCompletion = true;
+            replaceText(completion.getText());
+            mBlockCompletion = false;
+
+            mPopup.performItemClick(completion.getPosition());
+        }
+    }
+
+    private void performCompletion(View selectedView, int position, long id) {
+        if (isPopupShowing()) {
+            Object selectedItem;
+            if (position < 0) {
+                selectedItem = mPopup.getSelectedItem();
+            } else {
+                selectedItem = mAdapter.getItem(position);
+            }
+            if (selectedItem == null) {
+                Log.w(TAG, "performCompletion: no selected item");
+                return;
+            }
+
+            mBlockCompletion = true;
+            replaceText(convertSelectionToString(selectedItem));
+            mBlockCompletion = false;
+
+            if (mItemClickListener != null) {
+                final ListPopupWindow list = mPopup;
+
+                if (selectedView == null || position < 0) {
+                    selectedView = list.getSelectedView();
+                    position = list.getSelectedItemPosition();
+                    id = list.getSelectedItemId();
+                }
+                mItemClickListener.onItemClick(list.getListView(), selectedView, position, id);
+            }
+        }
+
+        if (mDropDownDismissedOnCompletion && !mPopup.isDropDownAlwaysVisible()) {
+            dismissDropDown();
+        }
+    }
+
+    /**
+     * <p>Performs the text completion by replacing the current text by the
+     * selected item. Subclasses should override this method to avoid replacing
+     * the whole content of the edit box.</p>
+     *
+     * @param text the selected suggestion in the drop down list
+     */
+    protected void replaceText(CharSequence text) {
+        clearComposingText();
+
+        setText(text);
+        // make sure we keep the caret at the end of the text view
+        Editable spannable = getText();
+        Selection.setSelection(spannable, spannable.length());
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void onFilterComplete(int count) {
+        updateDropDownForFilter(count);
+    }
+
+    private void updateDropDownForFilter(int count) {
+        // Not attached to window, don't update drop-down
+        if (getWindowVisibility() == View.GONE) return;
+
+        /*
+         * This checks enoughToFilter() again because filtering requests
+         * are asynchronous, so the result may come back after enough text
+         * has since been deleted to make it no longer appropriate
+         * to filter.
+         */
+
+        final boolean dropDownAlwaysVisible = mPopup.isDropDownAlwaysVisible();
+        if ((count > 0 || dropDownAlwaysVisible) && enoughToFilter() &&
+                getUserText().length() > 0) {
+            if (hasFocus() && hasWindowFocus() && mPopupCanBeUpdated) {
+                showDropDown();
+            }
+        } else if (!dropDownAlwaysVisible && isPopupShowing()) {
+            dismissDropDown();
+            // When the filter text is changed, the first update from the adapter may show an empty
+            // count (when the query is being performed on the network). Future updates when some
+            // content has been retrieved should still be able to update the list.
+            mPopupCanBeUpdated = true;
+        }
+    }
+
+    @Override
+    public void onWindowFocusChanged(boolean hasWindowFocus) {
+        super.onWindowFocusChanged(hasWindowFocus);
+        if (!hasWindowFocus && !mPopup.isDropDownAlwaysVisible()) {
+            dismissDropDown();
+        }
+    }
+
+    @Override
+    protected void onDisplayHint(int hint) {
+        super.onDisplayHint(hint);
+        switch (hint) {
+            case INVISIBLE:
+                if (!mPopup.isDropDownAlwaysVisible()) {
+                    dismissDropDown();
+                }
+                break;
+        }
+    }
+
+    @Override
+    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
+        // TextView makes several cursor movements when gaining focus, and this interferes with
+        // the suggested vs user entered text. Tell the controller to temporarily ignore cursor
+        // movements while this is going on.
+        mController.suspendCursorMovementHandling();
+
+        super.onFocusChanged(focused, direction, previouslyFocusedRect);
+        // Perform validation if the view is losing focus.
+        if (!focused) {
+            performValidation();
+        }
+        if (!focused && !mPopup.isDropDownAlwaysVisible()) {
+            dismissDropDown();
+        }
+
+        mController.resumeCursorMovementHandlingAndApplyChanges();
+    }
+
+    @Override
+    protected void onAttachedToWindow() {
+        super.onAttachedToWindow();
+    }
+
+    @Override
+    protected void onDetachedFromWindow() {
+        dismissDropDown();
+        super.onDetachedFromWindow();
+    }
+
+    /**
+     * <p>Closes the drop down if present on screen.</p>
+     */
+    protected void dismissDropDown() {
+        InputMethodManager imm = InputMethodManager.peekInstance();
+        if (imm != null) {
+            imm.displayCompletions(this, null);
+        }
+        mPopup.dismiss();
+        mPopupCanBeUpdated = false;
+    }
+
+    @Override
+    protected boolean setFrame(final int l, int t, final int r, int b) {
+        boolean result = super.setFrame(l, t, r, b);
+
+        if (isPopupShowing()) {
+            showDropDown();
+        }
+
+        return result;
+    }
+
+    /**
+     * Ensures that the drop down is not obscuring the IME.
+     * @param visible whether the ime should be in front. If false, the ime is pushed to
+     * the background.
+     * @hide internal used only here and SearchDialog
+     */
+    private void ensureImeVisible(boolean visible) {
+        mPopup.setInputMethodMode(visible
+                ? ListPopupWindow.INPUT_METHOD_NEEDED : ListPopupWindow.INPUT_METHOD_NOT_NEEDED);
+        showDropDown();
+    }
+
+    /**
+     * <p>Displays the drop down on screen.</p>
+     */
+    protected void showDropDown() {
+        if (mPopup.getAnchorView() == null) {
+            if (mDropDownAnchorId != View.NO_ID) {
+                mPopup.setAnchorView(getRootView().findViewById(mDropDownAnchorId));
+            } else {
+                mPopup.setAnchorView(this);
+            }
+        }
+        if (!isPopupShowing()) {
+            // Make sure the list does not obscure the IME when shown for the first time.
+            mPopup.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NEEDED);
+        }
+        mPopup.show();
+    }
+
+    private void buildImeCompletions() {
+        final ListAdapter adapter = mAdapter;
+        if (adapter != null) {
+            InputMethodManager imm = InputMethodManager.peekInstance();
+            if (imm != null) {
+                final int count = Math.min(adapter.getCount(), 20);
+                CompletionInfo[] completions = new CompletionInfo[count];
+                int realCount = 0;
+
+                for (int i = 0; i < count; i++) {
+                    if (adapter.isEnabled(i)) {
+                        realCount++;
+                        Object item = adapter.getItem(i);
+                        long id = adapter.getItemId(i);
+                        completions[i] = new CompletionInfo(id, i,
+                                convertSelectionToString(item));
+                    }
+                }
+
+                if (realCount != count) {
+                    CompletionInfo[] tmp = new CompletionInfo[realCount];
+                    System.arraycopy(completions, 0, tmp, 0, realCount);
+                    completions = tmp;
+                }
+
+                imm.displayCompletions(this, completions);
+            }
+        }
+    }
+
+    private void performValidation() {
+    }
+
+    /**
+     * Returns the Filter obtained from {@link Filterable#getFilter},
+     * or <code>null</code> if {@link #setAdapter} was not called with
+     * a Filterable.
+     */
+    protected Filter getFilter() {
+        return mFilter;
+    }
+
+    private class DropDownItemClickListener implements AdapterView.OnItemClickListener {
+        @Override
+        public void onItemClick(AdapterView parent, View v, int position, long id) {
+            performCompletion(v, position, id);
+        }
+    }
+
+    /**
+     * Allows us a private hook into the on click event without preventing users from setting
+     * their own click listener.
+     */
+    private class PassThroughClickListener implements OnClickListener {
+
+        private View.OnClickListener mWrapped;
+
+        /** {@inheritDoc} */
+        @Override
+        public void onClick(View v) {
+            onClickImpl();
+
+            if (mWrapped != null) mWrapped.onClick(v);
+        }
+    }
+
+    private class PopupDataSetObserver extends DataSetObserver {
+        @Override
+        public void onChanged() {
+            if (mAdapter != null) {
+                // If the popup is not showing already, showing it will cause
+                // the list of data set observers attached to the adapter to
+                // change. We can't do it from here, because we are in the middle
+                // of iterating through the list of observers.
+                post(new Runnable() {
+                    @Override
+                    public void run() {
+                        final SuggestionsAdapter adapter = mAdapter;
+                        if (adapter != null) {
+                            // This will re-layout, thus resetting mDataChanged, so that the
+                            // listView click listener stays responsive
+                            updateDropDownForFilter(adapter.getCount());
+                        }
+
+                        updateText(adapter);
+                    }
+                });
+            }
+        }
+    }
+
+    public String getUserText() {
+        return mController.getUserText();
+    }
+
+    private void updateText(SuggestionsAdapter adapter) {
+        if (!BrowserSettings.getInstance().useInstant()) {
+            return;
+        }
+
+        if (!isPopupShowing()) {
+            setSuggestedText(null);
+            return;
+        }
+
+        if (mAdapter.getCount() > 0 && !TextUtils.isEmpty(getUserText())) {
+            for (int i = 0; i < mAdapter.getCount(); ++i) {
+                SuggestItem current = mAdapter.getItem(i);
+                if (current.type == SuggestionsAdapter.TYPE_SUGGEST) {
+                    setSuggestedText(current.title);
+                    break;
+                }
+            }
+        }
+    }
+
+    @Override
+    public void setText(CharSequence text, BufferType type) {
+        Editable buffer = getEditableText();
+        if (text == null) text = "";
+        // if we already have a buffer, we must not replace it with a new one as this will break
+        // mController. Write the new text into the existing buffer instead.
+        if (buffer == null) {
+            super.setText(text, type);
+        } else {
+            buffer.replace(0, buffer.length(), text);
+            invalidate();
+        }
+    }
+
+    public void setText(CharSequence text, boolean filter) {
+        if (filter) {
+            setText(text);
+        } else {
+            mBlockCompletion = true;
+            setText(text);
+            mBlockCompletion = false;
+        }
+    }
+
+    @Override
+    public Parcelable onSaveInstanceState() {
+        Parcelable superState = super.onSaveInstanceState();
+        if (superState instanceof TextView.SavedState) {
+            // get rid of TextView's saved state, we override it.
+            superState = ((TextView.SavedState) superState).getSuperState();
+        }
+        if (superState == null) {
+            superState = AbsSavedState.EMPTY_STATE;
+        }
+        return mController.saveInstanceState(superState);
+    }
+
+    @Override
+    public void onRestoreInstanceState(Parcelable state) {
+        super.onRestoreInstanceState(mController.restoreInstanceState(state));
+    }
+
+    public void addQueryTextWatcher(final SuggestedTextController.TextChangeWatcher watcher) {
+        mController.addUserTextChangeWatcher(watcher);
+    }
+
+    public void setSuggestedText(String text) {
+        if (!TextUtils.isEmpty(text)) {
+            String htmlStripped = Html.fromHtml(text).toString();
+            mController.setSuggestedText(htmlStripped);
+        } else {
+            mController.setSuggestedText(null);
+        }
+    }
+
+    public void getPopupDrawableRect(Rect rect) {
+        if (mPopup.getListView() != null) {
+            mPopup.getListView().getDrawingRect(rect);
+        }
+    }
+}
diff --git a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
index 835778a..e2e45f5 100644
--- a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
+++ b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
@@ -16,9 +16,11 @@
 
 package com.android.browser.preferences;
 
+import com.android.browser.BrowserActivity;
 import com.android.browser.BrowserSettings;
 import com.android.browser.R;
 
+import android.content.Intent;
 import android.content.res.Resources;
 import android.os.Bundle;
 import android.preference.ListPreference;
@@ -62,6 +64,9 @@
         e = findPreference(BrowserSettings.PREF_DEFAULT_TEXT_ENCODING);
         e.setOnPreferenceChangeListener(this);
 
+        e = findPreference(BrowserSettings.PREF_EXTRAS_RESET_DEFAULTS);
+        e.setOnPreferenceChangeListener(this);
+
         e = findPreference(BrowserSettings.PREF_PLUGIN_STATE);
         e.setOnPreferenceChangeListener(this);
         updatePluginSummary((ListPreference) e);
@@ -121,7 +126,8 @@
         } else if (pref.getKey().equals(BrowserSettings.PREF_EXTRAS_RESET_DEFAULTS)) {
             Boolean value = (Boolean) objValue;
             if (value.booleanValue() == true) {
-                getActivity().finish();
+                startActivity(new Intent(BrowserActivity.ACTION_RESTART, null,
+                        getActivity(), BrowserActivity.class));
                 return true;
             }
         } else if (pref.getKey().equals(BrowserSettings.PREF_PLUGIN_STATE)) {
diff --git a/src/com/android/browser/preferences/GeneralPreferencesFragment.java b/src/com/android/browser/preferences/GeneralPreferencesFragment.java
index b6228dc..d64f062 100644
--- a/src/com/android/browser/preferences/GeneralPreferencesFragment.java
+++ b/src/com/android/browser/preferences/GeneralPreferencesFragment.java
@@ -21,41 +21,28 @@
 import com.android.browser.BrowserPreferencesPage;
 import com.android.browser.BrowserSettings;
 import com.android.browser.R;
+import com.android.browser.widget.BookmarkThumbnailWidgetProvider;
 
 import android.accounts.Account;
 import android.accounts.AccountManager;
+import android.accounts.AccountManagerCallback;
+import android.accounts.AccountManagerFuture;
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.app.DialogFragment;
-import android.app.Fragment;
-import android.content.ContentProviderOperation;
-import android.content.ContentResolver;
-import android.content.ContentValues;
 import android.content.Context;
 import android.content.DialogInterface;
-import android.content.OperationApplicationException;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
-import android.database.Cursor;
 import android.os.AsyncTask;
 import android.os.Bundle;
-import android.os.RemoteException;
 import android.preference.Preference;
 import android.preference.Preference.OnPreferenceClickListener;
 import android.preference.PreferenceFragment;
 import android.preference.PreferenceManager;
 import android.preference.PreferenceScreen;
 import android.provider.BrowserContract;
-import android.provider.BrowserContract.Bookmarks;
-import android.provider.BrowserContract.ChromeSyncColumns;
 import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.Button;
-import android.widget.LinearLayout;
-
-import java.util.ArrayList;
 
 public class GeneralPreferencesFragment extends PreferenceFragment
         implements OnPreferenceClickListener, Preference.OnPreferenceChangeListener {
@@ -66,6 +53,7 @@
     Preference mChromeSync;
     boolean mEnabled;
     SharedPreferences mSharedPrefs;
+    Account[] mAccounts;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -125,11 +113,42 @@
             if (BrowserBookmarksPage.PREF_ACCOUNT_NAME.equals(key)
                     || BrowserBookmarksPage.PREF_ACCOUNT_TYPE.equals(key)) {
                 refreshUi();
+                BookmarkThumbnailWidgetProvider.refreshWidgets(getActivity(), true);
             }
         }
 
     };
 
+    private AccountManagerCallback<Bundle> mCallback =
+            new AccountManagerCallback<Bundle>() {
+
+        @Override
+        public void run(AccountManagerFuture<Bundle> future) {
+            try {
+                Bundle bundle = future.getResult();
+                String name = bundle.getString(AccountManager.KEY_ACCOUNT_NAME);
+                String type = bundle.getString(AccountManager.KEY_ACCOUNT_TYPE);
+                Account account = new Account(name, type);
+                mAccounts = new Account[] { account };
+                ImportWizard wizard = ImportWizard.newInstance(mAccounts);
+                wizard.show(getFragmentManager(), null);
+            } catch (Exception ex) {
+                // Canceled or failed to login, doesn't matter to us
+            }
+        }
+    };
+
+    OnPreferenceClickListener mAddAccount = new OnPreferenceClickListener() {
+
+        @Override
+        public boolean onPreferenceClick(Preference preference) {
+            AccountManager am = AccountManager.get(getActivity());
+            am.addAccount("com.google", null, null, null, getActivity(),
+                    mCallback, null);
+            return true;
+        }
+    };
+
     private class GetAccountsTask extends AsyncTask<Void, Void, String> {
         private Context mContext;
 
@@ -144,10 +163,11 @@
             if (accounts == null || accounts.length == 0) {
                 // No Google accounts setup, don't offer Chrome sync
                 if (mChromeSync != null) {
-                    getPreferenceScreen().removePreference(mChromeSync);
+                    mChromeSync.setOnPreferenceClickListener(mAddAccount);
                 }
             } else {
                 // Google accounts are present.
+                mAccounts = accounts;
                 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
                 Bundle args = mChromeSync.getExtras();
                 args.putParcelableArray("accounts", accounts);
@@ -188,16 +208,18 @@
 
     @Override
     public boolean onPreferenceClick(Preference preference) {
-        Fragment frag;
+        if (mAccounts == null) {
+            Log.w(TAG, "NULL accounts!");
+            return true;
+        }
+        DialogFragment frag;
         if (mEnabled) {
             frag = new AccountChooserDialog();
+            frag.setArguments(preference.getExtras());
         } else {
-            frag = new ImportWizardDialog();
+            frag = ImportWizard.newInstance(mAccounts);
         }
-        frag.setArguments(preference.getExtras());
-        getFragmentManager().beginTransaction()
-                .add(frag, null)
-                .commit();
+        frag.show(getFragmentManager(), null);
         return true;
     }
 
@@ -238,195 +260,4 @@
             dismiss();
         }
     }
-
-    public static class ImportWizardDialog extends DialogFragment implements OnClickListener {
-        View mRemoveButton;
-        View mCancelButton;
-        String mDefaultAccount;
-
-        @Override
-        public Dialog onCreateDialog(Bundle savedInstanceState) {
-            Context context = getActivity();
-            Dialog dialog = new Dialog(context);
-            dialog.setTitle(R.string.import_bookmarks_dialog_title);
-            dialog.setContentView(R.layout.import_bookmarks_dialog);
-            mRemoveButton = dialog.findViewById(R.id.remove);
-            mRemoveButton.setOnClickListener(this);
-            mCancelButton = dialog.findViewById(R.id.cancel);
-            mCancelButton.setOnClickListener(this);
-
-            LayoutInflater inflater = dialog.getLayoutInflater();
-            LinearLayout accountList = (LinearLayout) dialog.findViewById(R.id.accountList);
-            Account[] accounts = (Account[]) getArguments().getParcelableArray("accounts");
-            mDefaultAccount = accounts[0].name;
-            int length = accounts.length;
-            for (int i = 0; i < length; i++) {
-                Button button = (Button) inflater.inflate(R.layout.import_bookmarks_dialog_button,
-                        null);
-                button.setText(context.getString(R.string.import_bookmarks_dialog_import,
-                        accounts[i].name));
-                button.setTag(accounts[i].name);
-                button.setOnClickListener(this);
-                accountList.addView(button);
-            }
-
-            return dialog;
-        }
-
-        @Override
-        public void onClick(View view) {
-            if (view == mCancelButton) {
-                dismiss();
-                return;
-            }
-
-            ContentResolver resolver = getActivity().getContentResolver();
-            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
-            String accountName;
-            if (view == mRemoveButton) {
-                // The user chose to remove their old bookmarks, delete them now
-                resolver.delete(Bookmarks.CONTENT_URI,
-                        Bookmarks.PARENT + "=1 AND " + Bookmarks.ACCOUNT_NAME + " IS NULL", null);
-                accountName = mDefaultAccount;
-            } else {
-                // The user chose to migrate their old bookmarks to the account they're syncing
-                accountName = view.getTag().toString();
-                migrateBookmarks(resolver, accountName);
-            }
-
-            // Record the fact that we turned on sync
-            BrowserContract.Settings.setSyncEnabled(getActivity(), true);
-            prefs.edit()
-                    .putString(BrowserBookmarksPage.PREF_ACCOUNT_TYPE, "com.google")
-                    .putString(BrowserBookmarksPage.PREF_ACCOUNT_NAME, accountName)
-                    .apply();
-
-            // Enable bookmark sync on all accounts
-            Account[] accounts = (Account[]) getArguments().getParcelableArray("accounts");
-            for (Account account : accounts) {
-                if (ContentResolver.getIsSyncable(account, BrowserContract.AUTHORITY) == 0) {
-                    // Account wasn't syncable, enable it
-                    ContentResolver.setIsSyncable(account, BrowserContract.AUTHORITY, 1);
-                    ContentResolver.setSyncAutomatically(account, BrowserContract.AUTHORITY, true);
-                }
-            }
-
-            dismiss();
-        }
-
-        /**
-         * Migrates bookmarks to the given account
-         */
-        void migrateBookmarks(ContentResolver resolver, String accountName) {
-            Cursor cursor = null;
-            try {
-                // Re-parent the bookmarks in the default root folder
-                cursor = resolver.query(Bookmarks.CONTENT_URI, new String[] { Bookmarks._ID },
-                        Bookmarks.ACCOUNT_NAME + " =? AND " +
-                            ChromeSyncColumns.SERVER_UNIQUE + " =?",
-                        new String[] { accountName,
-                            ChromeSyncColumns.FOLDER_NAME_BOOKMARKS_BAR },
-                        null);
-                ContentValues values = new ContentValues();
-                if (cursor == null || !cursor.moveToFirst()) {
-                    // The root folders don't exist for the account, create them now
-                    ArrayList<ContentProviderOperation> ops =
-                            new ArrayList<ContentProviderOperation>();
-
-                    // Chrome sync root folder
-                    values.clear();
-                    values.put(ChromeSyncColumns.SERVER_UNIQUE, ChromeSyncColumns.FOLDER_NAME_ROOT);
-                    values.put(Bookmarks.TITLE, "Google Chrome");
-                    values.put(Bookmarks.POSITION, 0);
-                    values.put(Bookmarks.IS_FOLDER, true);
-                    values.put(Bookmarks.DIRTY, true);
-                    ops.add(ContentProviderOperation.newInsert(
-                            Bookmarks.CONTENT_URI.buildUpon().appendQueryParameter(
-                                    BrowserContract.CALLER_IS_SYNCADAPTER, "true").build())
-                            .withValues(values)
-                            .build());
-
-                    // Bookmarks folder
-                    values.clear();
-                    values.put(ChromeSyncColumns.SERVER_UNIQUE,
-                            ChromeSyncColumns.FOLDER_NAME_BOOKMARKS);
-                    values.put(Bookmarks.TITLE, "Bookmarks");
-                    values.put(Bookmarks.POSITION, 0);
-                    values.put(Bookmarks.IS_FOLDER, true);
-                    values.put(Bookmarks.DIRTY, true);
-                    ops.add(ContentProviderOperation.newInsert(Bookmarks.CONTENT_URI)
-                            .withValues(values)
-                            .withValueBackReference(Bookmarks.PARENT, 0)
-                            .build());
-
-                    // Bookmarks Bar folder
-                    values.clear();
-                    values.put(ChromeSyncColumns.SERVER_UNIQUE,
-                            ChromeSyncColumns.FOLDER_NAME_BOOKMARKS_BAR);
-                    values.put(Bookmarks.TITLE, "Bookmarks Bar");
-                    values.put(Bookmarks.POSITION, 0);
-                    values.put(Bookmarks.IS_FOLDER, true);
-                    values.put(Bookmarks.DIRTY, true);
-                    ops.add(ContentProviderOperation.newInsert(Bookmarks.CONTENT_URI)
-                            .withValues(values)
-                            .withValueBackReference(Bookmarks.PARENT, 1)
-                            .build());
-
-                    // Other Bookmarks folder
-                    values.clear();
-                    values.put(ChromeSyncColumns.SERVER_UNIQUE,
-                            ChromeSyncColumns.FOLDER_NAME_OTHER_BOOKMARKS);
-                    values.put(Bookmarks.TITLE, "Other Bookmarks");
-                    values.put(Bookmarks.POSITION, 1000);
-                    values.put(Bookmarks.IS_FOLDER, true);
-                    values.put(Bookmarks.DIRTY, true);
-                    ops.add(ContentProviderOperation.newInsert(Bookmarks.CONTENT_URI)
-                            .withValues(values)
-                            .withValueBackReference(Bookmarks.PARENT, 1)
-                            .build());
-
-                    // Re-parent the existing bookmarks to the newly create bookmarks bar folder
-                    ops.add(ContentProviderOperation.newUpdate(Bookmarks.CONTENT_URI)
-                            .withValueBackReference(Bookmarks.PARENT, 2)
-                            .withSelection(Bookmarks.PARENT + "=?",
-                                        new String[] { Integer.toString(1) })
-                            .build());
-
-                    // Mark all non-root folder items as belonging to the new account
-                    values.clear();
-                    values.put(Bookmarks.ACCOUNT_TYPE, "com.google");
-                    values.put(Bookmarks.ACCOUNT_NAME, accountName);
-                    ops.add(ContentProviderOperation.newUpdate(Bookmarks.CONTENT_URI)
-                            .withValues(values)
-                            .withSelection(Bookmarks.ACCOUNT_NAME + " IS NULL AND " +
-                                    Bookmarks._ID + "<>1", null)
-                            .build());
-
-                    try {
-                        resolver.applyBatch(BrowserContract.AUTHORITY, ops);
-                    } catch (RemoteException e) {
-                        Log.e(TAG, "failed to create root folder for account " + accountName, e);
-                        return;
-                    } catch (OperationApplicationException e) {
-                        Log.e(TAG, "failed to create root folder for account " + accountName, e);
-                        return;
-                    }
-                } else {
-                    values.put(Bookmarks.PARENT, cursor.getLong(0));
-                    resolver.update(Bookmarks.CONTENT_URI, values, Bookmarks.PARENT + "=?",
-                            new String[] { Integer.toString(1) });
-
-                    // Mark all bookmarks at all levels as part of the new account
-                    values.clear();
-                    values.put(Bookmarks.ACCOUNT_TYPE, "com.google");
-                    values.put(Bookmarks.ACCOUNT_NAME, accountName);
-                    resolver.update(Bookmarks.CONTENT_URI, values,
-                            Bookmarks.ACCOUNT_NAME + " IS NULL AND " + Bookmarks._ID + "<>1",
-                            null);
-                }
-            } finally {
-                if (cursor != null) cursor.close();
-            }
-        }
-    }
 }
diff --git a/src/com/android/browser/preferences/ImportWizard.java b/src/com/android/browser/preferences/ImportWizard.java
new file mode 100644
index 0000000..7105f4d
--- /dev/null
+++ b/src/com/android/browser/preferences/ImportWizard.java
@@ -0,0 +1,491 @@
+/*
+ * 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.preferences;
+
+import com.android.browser.BrowserBookmarksPage;
+import com.android.browser.R;
+import com.android.browser.view.EventRedirectingFrameLayout;
+
+import android.accounts.Account;
+import android.animation.LayoutTransition;
+import android.animation.ObjectAnimator;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.content.ContentProviderOperation;
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnKeyListener;
+import android.content.DialogInterface.OnShowListener;
+import android.content.OperationApplicationException;
+import android.content.SharedPreferences;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.os.Bundle;
+import android.os.RemoteException;
+import android.preference.PreferenceManager;
+import android.provider.BrowserContract;
+import android.provider.BrowserContract.Bookmarks;
+import android.provider.BrowserContract.ChromeSyncColumns;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+
+public class ImportWizard extends DialogFragment implements OnClickListener,
+        OnItemClickListener {
+
+    static final String TAG = "BookmarkImportWizard";
+
+    static final int PAGE_IMPORT_OR_DELETE = 0;
+    static final int PAGE_SELECT_ACCOUNT = 1;
+    static final int PAGE_CONFIRMATION = 2;
+
+    static final String STATE_CURRENT_PAGE = "wizard.current_page";
+    static final String STATE_IMPORT_OR_DELETE = "wizard.import_or_delete";
+    static final String STATE_SELECTED_ACCOUNT = "wizard.selected_account";
+
+    static final String ARG_ACCOUNTS = "accounts";
+
+    AlertDialog mDialog;
+    EventRedirectingFrameLayout mPages;
+    int mCurrentPage;
+    Button mPositiveButton, mNegativeButton;
+    ListView mImportOrDelete, mSelectAccount;
+    Account[] mAccounts;
+    TextView mSelectAccountDescription, mConfirmation;
+
+    static ImportWizard newInstance(Account[] accounts) {
+        ImportWizard wizard = new ImportWizard();
+        Bundle args = new Bundle();
+        args.putParcelableArray(ARG_ACCOUNTS, accounts);
+        wizard.setArguments(args);
+        return wizard;
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mAccounts = (Account[]) getArguments().getParcelableArray(ARG_ACCOUNTS);
+    }
+
+    @Override
+    public Dialog onCreateDialog(Bundle savedInstanceState) {
+        mDialog = new AlertDialog.Builder(getActivity())
+                .setTitle(R.string.import_bookmarks_dialog_title)
+                .setView(createView(savedInstanceState))
+                .setPositiveButton("?", null) // This is just a placeholder
+                .setNegativeButton("?", null) // Ditto
+                .setOnKeyListener(new OnKeyListener() {
+                    @Override
+                    public boolean onKey(DialogInterface arg0, int arg1, KeyEvent key) {
+                        if (key.getKeyCode() == KeyEvent.KEYCODE_BACK) {
+                            if (key.getAction() == KeyEvent.ACTION_UP
+                                    && !key.isCanceled()) {
+                                mNegativeButton.performClick();
+                            }
+                            return true;
+                        }
+                        return false;
+                    }
+                })
+                .create();
+        mDialog.setOnShowListener(new OnShowListener() {
+            @Override
+            public void onShow(DialogInterface dialog) {
+                mPositiveButton = mDialog.getButton(AlertDialog.BUTTON_POSITIVE);
+                mNegativeButton = mDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
+                mPositiveButton.setOnClickListener(ImportWizard.this);
+                mNegativeButton.setOnClickListener(ImportWizard.this);
+                setupAnimations();
+                updateNavigation();
+            }
+        });
+        return mDialog;
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putInt(STATE_CURRENT_PAGE, mCurrentPage);
+        outState.putInt(STATE_IMPORT_OR_DELETE, mImportOrDelete.getCheckedItemPosition());
+        outState.putInt(STATE_SELECTED_ACCOUNT, mSelectAccount.getCheckedItemPosition());
+    }
+
+    public View createView(Bundle savedInstanceState) {
+        LayoutInflater inflater = LayoutInflater.from(getActivity());
+        View root = inflater.inflate(R.layout.bookmark_sync_wizard, null);
+        mPages = (EventRedirectingFrameLayout) root.findViewById(R.id.pages);
+        if (mPages.getChildCount() < 1) {
+            throw new IllegalStateException("no pages in wizard!");
+        }
+        if (savedInstanceState != null) {
+            mCurrentPage = savedInstanceState.getInt(STATE_CURRENT_PAGE);
+        } else {
+            mCurrentPage = 0;
+        }
+        setupPage1(savedInstanceState);
+        setupPage2(savedInstanceState);
+        setupPage3(savedInstanceState);
+        for (int i = 0; i < mPages.getChildCount(); i++) {
+            View v = mPages.getChildAt(i);
+            if (i <= mCurrentPage) {
+                preparePage();
+                v.setVisibility(View.VISIBLE);
+            } else {
+                v.setVisibility(View.GONE);
+            }
+        }
+        mPages.setTargetChild(mCurrentPage);
+        return root;
+    }
+
+    void setupPage1(Bundle savedInstanceState) {
+        mImportOrDelete = (ListView) mPages.findViewById(R.id.add_remove_bookmarks);
+        // Add an empty header so we get a divider above the list
+        mImportOrDelete.addHeaderView(new View(getActivity()));
+        Resources res = getActivity().getResources();
+        String[] choices = new String[] {
+                res.getString(R.string.import_bookmarks_dialog_add),
+                res.getString(R.string.import_bookmarks_dialog_remove)
+        };
+        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
+                R.layout.bookmark_sync_wizard_item, choices);
+        mImportOrDelete.setAdapter(adapter);
+        if (savedInstanceState != null) {
+            int position = savedInstanceState.getInt(STATE_IMPORT_OR_DELETE);
+            if (position == ListView.INVALID_POSITION) {
+                mImportOrDelete.clearChoices();
+            } else {
+                mImportOrDelete.setItemChecked(position, true);
+            }
+        }
+        mImportOrDelete.setOnItemClickListener(this);
+    }
+
+    void setupPage2(Bundle savedInstanceState) {
+        mSelectAccount = (ListView) mPages.findViewById(R.id.select_account);
+        mSelectAccountDescription =
+                (TextView) mPages.findViewById(R.id.select_account_description);
+        // Add an empty header so we get a divider above the list
+        mSelectAccount.addHeaderView(new View(getActivity()));
+        Resources res = getActivity().getResources();
+        String[] accountNames = new String[mAccounts.length];
+        for (int i = 0; i < mAccounts.length; i++) {
+            accountNames[i] = mAccounts[i].name;
+        }
+        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
+                R.layout.bookmark_sync_wizard_item, accountNames);
+        mSelectAccount.setAdapter(adapter);
+        mSelectAccount.setItemChecked(mSelectAccount.getHeaderViewsCount(), true);
+        if (savedInstanceState != null) {
+            int position = savedInstanceState.getInt(STATE_SELECTED_ACCOUNT);
+            if (position != ListView.INVALID_POSITION) {
+                mSelectAccount.setItemChecked(position, true);
+            }
+        }
+        mSelectAccount.setOnItemClickListener(this);
+    }
+
+    void setupPage3(Bundle savedInstanceState) {
+        mConfirmation = (TextView) mPages.findViewById(R.id.confirm);
+    }
+
+    void preparePage() {
+        switch (mCurrentPage) {
+        case PAGE_SELECT_ACCOUNT:
+            if (shouldDeleteBookmarks()) {
+                mSelectAccountDescription.setText(
+                        R.string.import_bookmarks_dialog_delete_select_account);
+            } else {
+                mSelectAccountDescription.setText(
+                        R.string.import_bookmarks_dialog_select_add_account);
+            }
+            break;
+        case PAGE_CONFIRMATION:
+            String account = getSelectedAccount().name;
+            String confirmationMessage;
+            if (shouldDeleteBookmarks()) {
+                confirmationMessage = getActivity().getString(
+                        R.string.import_bookmarks_dialog_confirm_delete, account);
+            } else {
+                confirmationMessage = getActivity().getString(
+                        R.string.import_bookmarks_dialog_confirm_add, account);
+            }
+            mConfirmation.setText(confirmationMessage);
+            break;
+        }
+    }
+
+    int getAdjustedCheckedItemPosition(ListView list) {
+        int position = list.getCheckedItemPosition();
+        if (position != ListView.INVALID_POSITION) {
+            position -= list.getHeaderViewsCount();
+        }
+        return position;
+    }
+
+    Account getSelectedAccount() {
+        return mAccounts[getAdjustedCheckedItemPosition(mSelectAccount)];
+    }
+
+    boolean shouldDeleteBookmarks() {
+        return getAdjustedCheckedItemPosition(mImportOrDelete) == 1;
+    }
+
+    @Override
+    public void onItemClick(
+            AdapterView<?> parent, View view, int position, long id) {
+        validate();
+    }
+
+    void updateNavigation() {
+        if (mCurrentPage == 0) {
+            mNegativeButton.setText(R.string.import_bookmarks_wizard_cancel);
+        } else {
+            mNegativeButton.setText(R.string.import_bookmarks_wizard_previous);
+        }
+        if ((mCurrentPage + 1) == mPages.getChildCount()) {
+            mPositiveButton.setText(R.string.import_bookmarks_wizard_done);
+        } else {
+            mPositiveButton.setText(R.string.import_bookmarks_wizard_next);
+        }
+        validate();
+    }
+
+    void validate() {
+        switch (mCurrentPage) {
+        case PAGE_IMPORT_OR_DELETE:
+            mPositiveButton.setEnabled(
+                    mImportOrDelete.getCheckedItemPosition() != ListView.INVALID_POSITION);
+            break;
+        case PAGE_SELECT_ACCOUNT:
+            mPositiveButton.setEnabled(
+                    mSelectAccount.getCheckedItemPosition() != ListView.INVALID_POSITION);
+            break;
+        }
+    }
+
+    void setupAnimations() {
+        float animX = mPages.getMeasuredWidth();
+        final LayoutTransition transitioner = new LayoutTransition();
+        ObjectAnimator appearing = ObjectAnimator.ofFloat(this, "translationX",
+                animX, 0);
+        ObjectAnimator disappearing = ObjectAnimator.ofFloat(this, "translationX",
+                0, animX);
+        transitioner.setAnimator(LayoutTransition.APPEARING, appearing);
+        transitioner.setAnimator(LayoutTransition.DISAPPEARING, disappearing);
+        mPages.setLayoutTransition(transitioner);
+    }
+
+    boolean next() {
+        if (mCurrentPage + 1 < mPages.getChildCount()) {
+            mCurrentPage++;
+            preparePage();
+            mPages.getChildAt(mCurrentPage).setVisibility(View.VISIBLE);
+            mPages.setTargetChild(mCurrentPage);
+            return true;
+        }
+        return false;
+    }
+
+    boolean prev() {
+        if (mCurrentPage > 0) {
+            mPages.getChildAt(mCurrentPage).setVisibility(View.GONE);
+            mCurrentPage--;
+            mPages.setTargetChild(mCurrentPage);
+            return true;
+        }
+        return false;
+    }
+
+    void done() {
+        ContentResolver resolver = getActivity().getContentResolver();
+        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
+        String accountName = getSelectedAccount().name;
+        if (shouldDeleteBookmarks()) {
+            // The user chose to remove their old bookmarks, delete them now
+            resolver.delete(Bookmarks.CONTENT_URI,
+                    Bookmarks.PARENT + "=1 AND " + Bookmarks.ACCOUNT_NAME + " IS NULL", null);
+        } else {
+            // The user chose to migrate their old bookmarks to the account they're syncing
+            migrateBookmarks(resolver, accountName);
+        }
+
+        // Record the fact that we turned on sync
+        BrowserContract.Settings.setSyncEnabled(getActivity(), true);
+        prefs.edit()
+                .putString(BrowserBookmarksPage.PREF_ACCOUNT_TYPE, "com.google")
+                .putString(BrowserBookmarksPage.PREF_ACCOUNT_NAME, accountName)
+                .apply();
+
+        // Enable bookmark sync on all accounts
+        Account[] accounts = (Account[]) getArguments().getParcelableArray("accounts");
+        for (Account account : accounts) {
+            if (ContentResolver.getIsSyncable(account, BrowserContract.AUTHORITY) == 0) {
+                // Account wasn't syncable, enable it
+                ContentResolver.setIsSyncable(account, BrowserContract.AUTHORITY, 1);
+                ContentResolver.setSyncAutomatically(account, BrowserContract.AUTHORITY, true);
+            }
+        }
+
+        dismiss();
+    }
+
+    @Override
+    public void onClick(View v) {
+        if (v == mNegativeButton) {
+            if (prev()) {
+                updateNavigation();
+            } else {
+                dismiss();
+            }
+        } else if (v == mPositiveButton) {
+            if (next()) {
+                updateNavigation();
+            } else {
+                done();
+            }
+        }
+    }
+
+    /**
+     * Migrates bookmarks to the given account
+     */
+    void migrateBookmarks(ContentResolver resolver, String accountName) {
+        Cursor cursor = null;
+        try {
+            // Re-parent the bookmarks in the default root folder
+            cursor = resolver.query(Bookmarks.CONTENT_URI, new String[] { Bookmarks._ID },
+                    Bookmarks.ACCOUNT_NAME + " =? AND " +
+                        ChromeSyncColumns.SERVER_UNIQUE + " =?",
+                    new String[] { accountName,
+                        ChromeSyncColumns.FOLDER_NAME_BOOKMARKS_BAR },
+                    null);
+            ContentValues values = new ContentValues();
+            if (cursor == null || !cursor.moveToFirst()) {
+                // The root folders don't exist for the account, create them now
+                ArrayList<ContentProviderOperation> ops =
+                        new ArrayList<ContentProviderOperation>();
+
+                // Chrome sync root folder
+                values.clear();
+                values.put(ChromeSyncColumns.SERVER_UNIQUE, ChromeSyncColumns.FOLDER_NAME_ROOT);
+                values.put(Bookmarks.TITLE, "Google Chrome");
+                values.put(Bookmarks.POSITION, 0);
+                values.put(Bookmarks.IS_FOLDER, true);
+                values.put(Bookmarks.DIRTY, true);
+                ops.add(ContentProviderOperation.newInsert(
+                        Bookmarks.CONTENT_URI.buildUpon().appendQueryParameter(
+                                BrowserContract.CALLER_IS_SYNCADAPTER, "true").build())
+                        .withValues(values)
+                        .build());
+
+                // Bookmarks folder
+                values.clear();
+                values.put(ChromeSyncColumns.SERVER_UNIQUE,
+                        ChromeSyncColumns.FOLDER_NAME_BOOKMARKS);
+                values.put(Bookmarks.TITLE, "Bookmarks");
+                values.put(Bookmarks.POSITION, 0);
+                values.put(Bookmarks.IS_FOLDER, true);
+                values.put(Bookmarks.DIRTY, true);
+                ops.add(ContentProviderOperation.newInsert(Bookmarks.CONTENT_URI)
+                        .withValues(values)
+                        .withValueBackReference(Bookmarks.PARENT, 0)
+                        .build());
+
+                // Bookmarks Bar folder
+                values.clear();
+                values.put(ChromeSyncColumns.SERVER_UNIQUE,
+                        ChromeSyncColumns.FOLDER_NAME_BOOKMARKS_BAR);
+                values.put(Bookmarks.TITLE, "Bookmarks Bar");
+                values.put(Bookmarks.POSITION, 0);
+                values.put(Bookmarks.IS_FOLDER, true);
+                values.put(Bookmarks.DIRTY, true);
+                ops.add(ContentProviderOperation.newInsert(Bookmarks.CONTENT_URI)
+                        .withValues(values)
+                        .withValueBackReference(Bookmarks.PARENT, 1)
+                        .build());
+
+                // Other Bookmarks folder
+                values.clear();
+                values.put(ChromeSyncColumns.SERVER_UNIQUE,
+                        ChromeSyncColumns.FOLDER_NAME_OTHER_BOOKMARKS);
+                values.put(Bookmarks.TITLE, "Other Bookmarks");
+                values.put(Bookmarks.POSITION, 1000);
+                values.put(Bookmarks.IS_FOLDER, true);
+                values.put(Bookmarks.DIRTY, true);
+                ops.add(ContentProviderOperation.newInsert(Bookmarks.CONTENT_URI)
+                        .withValues(values)
+                        .withValueBackReference(Bookmarks.PARENT, 1)
+                        .build());
+
+                // Re-parent the existing bookmarks to the newly create bookmarks bar folder
+                ops.add(ContentProviderOperation.newUpdate(Bookmarks.CONTENT_URI)
+                        .withValueBackReference(Bookmarks.PARENT, 2)
+                        .withSelection(Bookmarks.ACCOUNT_NAME + " IS NULL AND " +
+                                Bookmarks.PARENT + "=?",
+                                    new String[] { Integer.toString(1) })
+                        .build());
+
+                // Mark all non-root folder items as belonging to the new account
+                values.clear();
+                values.put(Bookmarks.ACCOUNT_TYPE, "com.google");
+                values.put(Bookmarks.ACCOUNT_NAME, accountName);
+                ops.add(ContentProviderOperation.newUpdate(Bookmarks.CONTENT_URI)
+                        .withValues(values)
+                        .withSelection(Bookmarks.ACCOUNT_NAME + " IS NULL AND " +
+                                Bookmarks._ID + "<>1", null)
+                        .build());
+
+                try {
+                    resolver.applyBatch(BrowserContract.AUTHORITY, ops);
+                } catch (RemoteException e) {
+                    Log.e(TAG, "failed to create root folder for account " + accountName, e);
+                    return;
+                } catch (OperationApplicationException e) {
+                    Log.e(TAG, "failed to create root folder for account " + accountName, e);
+                    return;
+                }
+            } else {
+                values.put(Bookmarks.PARENT, cursor.getLong(0));
+                resolver.update(Bookmarks.CONTENT_URI, values, Bookmarks.PARENT + "=?",
+                        new String[] { Integer.toString(1) });
+
+                // Mark all bookmarks at all levels as part of the new account
+                values.clear();
+                values.put(Bookmarks.ACCOUNT_TYPE, "com.google");
+                values.put(Bookmarks.ACCOUNT_NAME, accountName);
+                resolver.update(Bookmarks.CONTENT_URI, values,
+                        Bookmarks.ACCOUNT_NAME + " IS NULL AND " + Bookmarks._ID + "<>1",
+                        null);
+            }
+        } finally {
+            if (cursor != null) cursor.close();
+        }
+    }
+}
diff --git a/src/com/android/browser/preferences/LabPreferencesFragment.java b/src/com/android/browser/preferences/LabPreferencesFragment.java
index 8a8546f..a06dc3e 100644
--- a/src/com/android/browser/preferences/LabPreferencesFragment.java
+++ b/src/com/android/browser/preferences/LabPreferencesFragment.java
@@ -18,33 +18,47 @@
 
 import com.android.browser.BrowserActivity;
 import com.android.browser.BrowserSettings;
-import com.android.browser.Controller;
 import com.android.browser.R;
+import com.android.browser.search.SearchEngine;
 
-import android.content.Context;
 import android.content.Intent;
-import android.os.AsyncTask;
 import android.os.Bundle;
 import android.preference.Preference;
 import android.preference.Preference.OnPreferenceChangeListener;
-import android.preference.PreferenceActivity.Header;
 import android.preference.PreferenceFragment;
-import android.preference.PreferenceManager.OnActivityResultListener;
-
-import java.io.IOException;
-import java.io.Serializable;
 
 public class LabPreferencesFragment extends PreferenceFragment
         implements OnPreferenceChangeListener {
+    private BrowserSettings mBrowserSettings;
+    private Preference useInstantPref;
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
+        mBrowserSettings = BrowserSettings.getInstance();
+
         // Load the XML preferences file
         addPreferencesFromResource(R.xml.lab_preferences);
 
         Preference e = findPreference(BrowserSettings.PREF_QUICK_CONTROLS);
         e.setOnPreferenceChangeListener(this);
+        useInstantPref = findPreference(BrowserSettings.PREF_USE_INSTANT);
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        useInstantPref.setEnabled(false);
+
+        // Enable the "use instant" preference only if the selected
+        // search engine is google.
+        if (mBrowserSettings.getSearchEngine() != null) {
+            final String currentName = mBrowserSettings.getSearchEngine().getName();
+            if (SearchEngine.GOOGLE.equals(currentName)) {
+                useInstantPref.setEnabled(true);
+            }
+        }
     }
 
     @Override
@@ -54,5 +68,4 @@
                 getActivity(), BrowserActivity.class));
         return true;
     }
-
 }
diff --git a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
index 409ddb7..2b2ee3e 100644
--- a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
+++ b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
@@ -44,6 +44,7 @@
 
         Preference e = findPreference(BrowserSettings.PREF_CLEAR_HISTORY);
         e.setOnPreferenceChangeListener(this);
+        setupAutoLoginPreference();
     }
 
     @Override
diff --git a/src/com/android/browser/provider/BrowserProvider2.java b/src/com/android/browser/provider/BrowserProvider2.java
index 830355f..305c794 100644
--- a/src/com/android/browser/provider/BrowserProvider2.java
+++ b/src/com/android/browser/provider/BrowserProvider2.java
@@ -16,9 +16,12 @@
 
 package com.android.browser.provider;
 
+import com.google.common.annotations.VisibleForTesting;
+
 import com.android.browser.BookmarkUtils;
 import com.android.browser.BrowserBookmarksPage;
 import com.android.browser.R;
+import com.android.browser.widget.BookmarkThumbnailWidgetProvider;
 import com.android.common.content.SyncStateContentProviderHelper;
 
 import android.accounts.Account;
@@ -33,8 +36,10 @@
 import android.content.res.Resources;
 import android.content.res.TypedArray;
 import android.database.AbstractCursor;
+import android.database.ContentObserver;
 import android.database.Cursor;
 import android.database.DatabaseUtils;
+import android.database.MatrixCursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteOpenHelper;
 import android.database.sqlite.SQLiteQueryBuilder;
@@ -60,11 +65,12 @@
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Arrays;
 import java.util.HashMap;
 
 public class BrowserProvider2 extends SQLiteContentProvider {
 
-    static final String LEGACY_AUTHORITY = "browser";
+    public static final String LEGACY_AUTHORITY = "browser";
     static final Uri LEGACY_AUTHORITY_URI = new Uri.Builder()
             .authority(LEGACY_AUTHORITY).scheme("content").build();
 
@@ -106,6 +112,7 @@
     static final int BOOKMARKS_FOLDER = 1002;
     static final int BOOKMARKS_FOLDER_ID = 1003;
     static final int BOOKMARKS_SUGGESTIONS = 1004;
+    static final int BOOKMARKS_DEFAULT_FOLDER_ID = 1005;
 
     static final int HISTORY = 2000;
     static final int HISTORY_ID = 2001;
@@ -159,6 +166,7 @@
         matcher.addURI(authority, "bookmarks/#", BOOKMARKS_ID);
         matcher.addURI(authority, "bookmarks/folder", BOOKMARKS_FOLDER);
         matcher.addURI(authority, "bookmarks/folder/#", BOOKMARKS_FOLDER_ID);
+        matcher.addURI(authority, "bookmarks/folder/id", BOOKMARKS_DEFAULT_FOLDER_ID);
         matcher.addURI(authority,
                 SearchManager.SUGGEST_URI_PATH_QUERY,
                 BOOKMARKS_SUGGESTIONS);
@@ -315,6 +323,8 @@
 
     DatabaseHelper mOpenHelper;
     SyncStateContentProviderHelper mSyncHelper = new SyncStateContentProviderHelper();
+    // This is so provider tests can intercept widget updating
+    ContentObserver mWidgetObserver = null;
 
     final class DatabaseHelper extends SQLiteOpenHelper {
         static final String DATABASE_NAME = "browser2.db";
@@ -569,11 +579,17 @@
         return uri.getBooleanQueryParameter(BrowserContract.CALLER_IS_SYNCADAPTER, false);
     }
 
-    @Override
-    public void notifyChange(boolean callerIsSyncAdapter) {
-        ContentResolver resolver = getContext().getContentResolver();
-        resolver.notifyChange(BrowserContract.AUTHORITY_URI, null, !callerIsSyncAdapter);
-        resolver.notifyChange(LEGACY_AUTHORITY_URI, null, !callerIsSyncAdapter);
+    @VisibleForTesting
+    public void setWidgetObserver(ContentObserver obs) {
+        mWidgetObserver = obs;
+    }
+
+    void refreshWidgets() {
+        if (mWidgetObserver == null) {
+            BookmarkThumbnailWidgetProvider.refreshWidgets(getContext());
+        } else {
+            mWidgetObserver.dispatchChange(false);
+        }
     }
 
     @Override
@@ -758,6 +774,15 @@
                 return cursor;
             }
 
+            case BOOKMARKS_DEFAULT_FOLDER_ID: {
+                String accountName = uri.getQueryParameter(Bookmarks.PARAM_ACCOUNT_NAME);
+                String accountType = uri.getQueryParameter(Bookmarks.PARAM_ACCOUNT_TYPE);
+                long id = queryDefaultFolderId(accountName, accountType);
+                MatrixCursor c = new MatrixCursor(new String[] {Bookmarks._ID});
+                c.newRow().add(id);
+                return c;
+            }
+
             case BOOKMARKS_SUGGESTIONS: {
                 return doSuggestQuery(selection, selectionArgs, limit);
             }
@@ -958,6 +983,7 @@
             boolean callerIsSyncAdapter) {
         final int match = URI_MATCHER.match(uri);
         final SQLiteDatabase db = mOpenHelper.getWritableDatabase();
+        int deleted = 0;
         switch (match) {
             case BOOKMARKS_ID: {
                 selection = DatabaseUtils.concatenateWhere(selection,
@@ -971,9 +997,12 @@
                 Object[] withAccount = getSelectionWithAccounts(uri, selection, selectionArgs);
                 selection = (String) withAccount[0];
                 selectionArgs = (String[]) withAccount[1];
-                int deleted = deleteBookmarks(selection, selectionArgs, callerIsSyncAdapter);
+                deleted = deleteBookmarks(selection, selectionArgs, callerIsSyncAdapter);
                 pruneImages();
-                return deleted;
+                if (deleted > 0) {
+                    refreshWidgets();
+                }
+                break;
             }
 
             case HISTORY_ID: {
@@ -984,9 +1013,9 @@
             }
             case HISTORY: {
                 filterSearchClient(selectionArgs);
-                int deleted = db.delete(TABLE_HISTORY, selection, selectionArgs);
+                deleted = db.delete(TABLE_HISTORY, selection, selectionArgs);
                 pruneImages();
-                return deleted;
+                break;
             }
 
             case SEARCHES_ID: {
@@ -996,17 +1025,20 @@
                 // fall through
             }
             case SEARCHES: {
-                return db.delete(TABLE_SEARCHES, selection, selectionArgs);
+                deleted = db.delete(TABLE_SEARCHES, selection, selectionArgs);
+                break;
             }
 
             case SYNCSTATE: {
-                return mSyncHelper.delete(db, selection, selectionArgs);
+                deleted = mSyncHelper.delete(db, selection, selectionArgs);
+                break;
             }
             case SYNCSTATE_ID: {
                 String selectionWithId =
                         (SyncStateContract.Columns._ID + "=" + ContentUris.parseId(uri) + " ")
                         + (selection == null ? "" : " AND (" + selection + ")");
-                return mSyncHelper.delete(db, selectionWithId, selectionArgs);
+                deleted = mSyncHelper.delete(db, selectionWithId, selectionArgs);
+                break;
             }
             case LEGACY_ID: {
                 selection = DatabaseUtils.concatenateWhere(
@@ -1030,7 +1062,6 @@
                 }
                 Cursor c = qb.query(db, projection, selection, selectionArgs,
                         null, null, null);
-                int deleted = 0;
                 while (c.moveToNext()) {
                     long id = c.getLong(0);
                     boolean isBookmark = c.getInt(1) != 0;
@@ -1047,14 +1078,21 @@
                                 new String[] { Long.toString(id) });
                     }
                 }
-                return deleted;
+                break;
+            }
+            default: {
+                throw new UnsupportedOperationException("Unknown delete URI " + uri);
             }
         }
-        throw new UnsupportedOperationException("Unknown delete URI " + uri);
+        if (deleted > 0) {
+            postNotifyUri(uri);
+            postNotifyUri(LEGACY_AUTHORITY_URI);
+        }
+        return deleted;
     }
 
     long queryDefaultFolderId(String accountName, String accountType) {
-        if (!TextUtils.isEmpty(accountName) && !TextUtils.isEmpty(accountType)) {
+        if (!isNullAccount(accountName) && !isNullAccount(accountType)) {
             final SQLiteDatabase db = mOpenHelper.getReadableDatabase();
             Cursor c = db.query(TABLE_BOOKMARKS, new String[] { Bookmarks._ID },
                     ChromeSyncColumns.SERVER_UNIQUE + " = ?" +
@@ -1104,12 +1142,20 @@
                     values.put(Bookmarks.DATE_MODIFIED, now);
                     values.put(Bookmarks.DIRTY, 1);
 
+                    String accountType = values
+                            .getAsString(Bookmarks.ACCOUNT_TYPE);
+                    String accountName = values
+                            .getAsString(Bookmarks.ACCOUNT_NAME);
+                    boolean hasParent = values.containsKey(Bookmarks.PARENT);
+                    if (hasParent) {
+                        // Let's make sure it's valid
+                        long parentId = values.getAsLong(Bookmarks.PARENT);
+                        hasParent = isValidParent(
+                                accountType, accountName, parentId);
+                    }
+
                     // If no parent is set default to the "Bookmarks Bar" folder
-                    if (!values.containsKey(Bookmarks.PARENT)) {
-                        String accountType = values
-                                .getAsString(Bookmarks.ACCOUNT_TYPE);
-                        String accountName = values
-                                .getAsString(Bookmarks.ACCOUNT_NAME);
+                    if (!hasParent) {
                         values.put(Bookmarks.PARENT,
                                 queryDefaultFolderId(accountName, accountType));
                     }
@@ -1134,6 +1180,7 @@
                 }
 
                 id = db.insertOrThrow(TABLE_BOOKMARKS, Bookmarks.DIRTY, values);
+                refreshWidgets();
                 break;
             }
 
@@ -1179,12 +1226,38 @@
         }
 
         if (id >= 0) {
+            postNotifyUri(uri);
+            postNotifyUri(LEGACY_AUTHORITY_URI);
             return ContentUris.withAppendedId(uri, id);
         } else {
             return null;
         }
     }
 
+    private boolean isValidParent(String accountType, String accountName,
+            long parentId) {
+        if (parentId <= 0) {
+            return false;
+        }
+        Uri uri = ContentUris.withAppendedId(Bookmarks.CONTENT_URI, parentId);
+        Cursor c = query(uri,
+                new String[] { Bookmarks.ACCOUNT_NAME, Bookmarks.ACCOUNT_TYPE },
+                null, null, null);
+        try {
+            if (c.moveToFirst()) {
+                String parentName = c.getString(0);
+                String parentType = c.getString(1);
+                if (TextUtils.equals(accountName, parentName)
+                        && TextUtils.equals(accountType, parentType)) {
+                    return true;
+                }
+            }
+            return false;
+        } finally {
+            c.close();
+        }
+    }
+
     private void filterSearchClient(String[] selectionArgs) {
         if (selectionArgs != null) {
             for (int i = 0; i < selectionArgs.length; i++) {
@@ -1193,11 +1266,11 @@
         }
     }
 
-    // Filters out the client= param for search urls
+    // Filters out the client=ms- param for search urls
     private String filterSearchClient(String url) {
         // remove "client" before updating it to the history so that it wont
         // show up in the auto-complete list.
-        int index = url.indexOf("client=");
+        int index = url.indexOf("client=ms-");
         if (index > 0 && url.contains(".google.")) {
             int end = url.indexOf('&', index);
             if (end > 0) {
@@ -1287,6 +1360,7 @@
                 values.remove(BookmarkColumns.USER_ENTERED);
             }
         }
+        int modified = 0;
         switch (match) {
             case BOOKMARKS_ID: {
                 selection = DatabaseUtils.concatenateWhere(selection,
@@ -1299,10 +1373,12 @@
                 Object[] withAccount = getSelectionWithAccounts(uri, selection, selectionArgs);
                 selection = (String) withAccount[0];
                 selectionArgs = (String[]) withAccount[1];
-                int updated = updateBookmarksInTransaction(values, selection, selectionArgs,
+                modified = updateBookmarksInTransaction(values, selection, selectionArgs,
                         callerIsSyncAdapter);
-                pruneImages();
-                return updated;
+                if (modified > 0) {
+                    refreshWidgets();
+                }
+                break;
             }
 
             case HISTORY_ID: {
@@ -1312,14 +1388,14 @@
                 // fall through
             }
             case HISTORY: {
-                int updated = updateHistoryInTransaction(values, selection, selectionArgs);
-                pruneImages();
-                return updated;
+                modified = updateHistoryInTransaction(values, selection, selectionArgs);
+                break;
             }
 
             case SYNCSTATE: {
-                return mSyncHelper.update(mDb, values,
+                modified = mSyncHelper.update(mDb, values,
                         appendAccountToSelection(uri, selection), selectionArgs);
+                break;
             }
 
             case SYNCSTATE_ID: {
@@ -1327,8 +1403,9 @@
                 String selectionWithId =
                         (SyncStateContract.Columns._ID + "=" + ContentUris.parseId(uri) + " ")
                         + (selection == null ? "" : " AND (" + selection + ")");
-                return mSyncHelper.update(mDb, values,
+                modified = mSyncHelper.update(mDb, values,
                         selectionWithId, selectionArgs);
+                break;
             }
 
             case IMAGES: {
@@ -1336,20 +1413,107 @@
                 if (TextUtils.isEmpty(url)) {
                     throw new IllegalArgumentException("Images.URL is required");
                 }
+                if (!shouldUpdateImages(db, url, values)) {
+                    return 0;
+                }
                 int count = db.update(TABLE_IMAGES, values, Images.URL + "=?",
                         new String[] { url });
                 if (count == 0) {
                     db.insertOrThrow(TABLE_IMAGES, Images.FAVICON, values);
                     count = 1;
                 }
+                if (getUrlCount(db, TABLE_BOOKMARKS, url) > 0) {
+                    postNotifyUri(Bookmarks.CONTENT_URI);
+                    refreshWidgets();
+                }
+                if (getUrlCount(db, TABLE_HISTORY, url) > 0) {
+                    postNotifyUri(History.CONTENT_URI);
+                }
+                postNotifyUri(LEGACY_AUTHORITY_URI);
+                pruneImages();
                 return count;
             }
 
             case SEARCHES: {
-                return db.update(TABLE_SEARCHES, values, selection, selectionArgs);
+                modified = db.update(TABLE_SEARCHES, values, selection, selectionArgs);
+                break;
+            }
+
+            default: {
+                throw new UnsupportedOperationException("Unknown update URI " + uri);
             }
         }
-        throw new UnsupportedOperationException("Unknown update URI " + uri);
+        pruneImages();
+        if (modified > 0) {
+            postNotifyUri(uri);
+            postNotifyUri(LEGACY_AUTHORITY_URI);
+        }
+        return modified;
+    }
+
+    // We want to avoid sending out more URI notifications than we have to
+    // Thus, we check to see if the images we are about to store are already there
+    // This is used because things like a site's favion or touch icon is rarely
+    // changed, but the browser tries to update it every time the page loads.
+    // Without this, we will always send out 3 URI notifications per page load.
+    // With this, that drops to 0 or 1, depending on if the thumbnail changed.
+    private boolean shouldUpdateImages(
+            SQLiteDatabase db, String url, ContentValues values) {
+        final String[] projection = new String[] {
+                Images.FAVICON,
+                Images.THUMBNAIL,
+                Images.TOUCH_ICON,
+        };
+        Cursor cursor = db.query(TABLE_IMAGES, projection, Images.URL + "=?",
+                new String[] { url }, null, null, null);
+        byte[] nfavicon = values.getAsByteArray(Images.FAVICON);
+        byte[] nthumb = values.getAsByteArray(Images.THUMBNAIL);
+        byte[] ntouch = values.getAsByteArray(Images.TOUCH_ICON);
+        byte[] cfavicon = null;
+        byte[] cthumb = null;
+        byte[] ctouch = null;
+        try {
+            if (cursor.getCount() <= 0) {
+                return nfavicon != null || nthumb != null || ntouch != null;
+            }
+            while (cursor.moveToNext()) {
+                if (nfavicon != null) {
+                    cfavicon = cursor.getBlob(0);
+                    if (!Arrays.equals(nfavicon, cfavicon)) {
+                        return true;
+                    }
+                }
+                if (nthumb != null) {
+                    cthumb = cursor.getBlob(1);
+                    if (!Arrays.equals(nthumb, cthumb)) {
+                        return true;
+                    }
+                }
+                if (ntouch != null) {
+                    ctouch = cursor.getBlob(2);
+                    if (!Arrays.equals(ntouch, ctouch)) {
+                        return true;
+                    }
+                }
+            }
+        } finally {
+            cursor.close();
+        }
+        return false;
+    }
+
+    int getUrlCount(SQLiteDatabase db, String table, String url) {
+        Cursor c = db.query(table, new String[] { "COUNT(*)" },
+                "url = ?", new String[] { url }, null, null, null);
+        try {
+            int count = 0;
+            if (c.moveToFirst()) {
+                count = c.getInt(0);
+            }
+            return count;
+        } finally {
+            c.close();
+        }
     }
 
     /**
diff --git a/src/com/android/browser/provider/SQLiteContentProvider.java b/src/com/android/browser/provider/SQLiteContentProvider.java
index a50894a..13acd3d 100644
--- a/src/com/android/browser/provider/SQLiteContentProvider.java
+++ b/src/com/android/browser/provider/SQLiteContentProvider.java
@@ -19,26 +19,27 @@
 import android.content.ContentProvider;
 import android.content.ContentProviderOperation;
 import android.content.ContentProviderResult;
+import android.content.ContentResolver;
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.OperationApplicationException;
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteOpenHelper;
-import android.database.sqlite.SQLiteTransactionListener;
 import android.net.Uri;
 
 import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Set;
 
 /**
  * General purpose {@link ContentProvider} base class that uses SQLiteDatabase for storage.
  */
-public abstract class SQLiteContentProvider extends ContentProvider
-        implements SQLiteTransactionListener {
+public abstract class SQLiteContentProvider extends ContentProvider {
 
     private static final String TAG = "SQLiteContentProvider";
 
     private SQLiteOpenHelper mOpenHelper;
-    private volatile boolean mNotifyChange;
+    private Set<Uri> mChangedUris;
     protected SQLiteDatabase mDb;
 
     private final ThreadLocal<Boolean> mApplyingBatch = new ThreadLocal<Boolean>();
@@ -53,6 +54,7 @@
     public boolean onCreate() {
         Context context = getContext();
         mOpenHelper = getDatabaseHelper(context);
+        mChangedUris = new HashSet<Uri>();
         return true;
     }
 
@@ -80,10 +82,14 @@
             boolean callerIsSyncAdapter);
 
     /**
-     * Called when the provider needs to notify the system of a change.
-     * @param callerIsSyncAdapter true if the caller that caused the change was a sync adapter.
+     * Call this to add a URI to the list of URIs to be notified when the transaction
+     * is committed.
      */
-    public abstract void notifyChange(boolean callerIsSyncAdapter);
+    protected void postNotifyUri(Uri uri) {
+        synchronized (mChangedUris) {
+            mChangedUris.add(uri);
+        }
+    }
 
     public boolean isCallerSyncAdapter(Uri uri) {
         return false;
@@ -104,12 +110,9 @@
         boolean applyingBatch = applyingBatch();
         if (!applyingBatch) {
             mDb = mOpenHelper.getWritableDatabase();
-            mDb.beginTransactionWithListener(this);
+            mDb.beginTransaction();
             try {
                 result = insertInTransaction(uri, values, callerIsSyncAdapter);
-                if (result != null) {
-                    mNotifyChange = true;
-                }
                 mDb.setTransactionSuccessful();
             } finally {
                 mDb.endTransaction();
@@ -118,9 +121,6 @@
             onEndTransaction(callerIsSyncAdapter);
         } else {
             result = insertInTransaction(uri, values, callerIsSyncAdapter);
-            if (result != null) {
-                mNotifyChange = true;
-            }
         }
         return result;
     }
@@ -130,13 +130,10 @@
         int numValues = values.length;
         boolean callerIsSyncAdapter = isCallerSyncAdapter(uri);
         mDb = mOpenHelper.getWritableDatabase();
-        mDb.beginTransactionWithListener(this);
+        mDb.beginTransaction();
         try {
             for (int i = 0; i < numValues; i++) {
                 Uri result = insertInTransaction(uri, values[i], callerIsSyncAdapter);
-                if (result != null) {
-                    mNotifyChange = true;
-                }
                 mDb.yieldIfContendedSafely();
             }
             mDb.setTransactionSuccessful();
@@ -155,13 +152,10 @@
         boolean applyingBatch = applyingBatch();
         if (!applyingBatch) {
             mDb = mOpenHelper.getWritableDatabase();
-            mDb.beginTransactionWithListener(this);
+            mDb.beginTransaction();
             try {
                 count = updateInTransaction(uri, values, selection, selectionArgs,
                         callerIsSyncAdapter);
-                if (count > 0) {
-                    mNotifyChange = true;
-                }
                 mDb.setTransactionSuccessful();
             } finally {
                 mDb.endTransaction();
@@ -170,9 +164,6 @@
             onEndTransaction(callerIsSyncAdapter);
         } else {
             count = updateInTransaction(uri, values, selection, selectionArgs, callerIsSyncAdapter);
-            if (count > 0) {
-                mNotifyChange = true;
-            }
         }
 
         return count;
@@ -185,12 +176,9 @@
         boolean applyingBatch = applyingBatch();
         if (!applyingBatch) {
             mDb = mOpenHelper.getWritableDatabase();
-            mDb.beginTransactionWithListener(this);
+            mDb.beginTransaction();
             try {
                 count = deleteInTransaction(uri, selection, selectionArgs, callerIsSyncAdapter);
-                if (count > 0) {
-                    mNotifyChange = true;
-                }
                 mDb.setTransactionSuccessful();
             } finally {
                 mDb.endTransaction();
@@ -199,9 +187,6 @@
             onEndTransaction(callerIsSyncAdapter);
         } else {
             count = deleteInTransaction(uri, selection, selectionArgs, callerIsSyncAdapter);
-            if (count > 0) {
-                mNotifyChange = true;
-            }
         }
         return count;
     }
@@ -213,7 +198,7 @@
         int opCount = 0;
         boolean callerIsSyncAdapter = false;
         mDb = mOpenHelper.getWritableDatabase();
-        mDb.beginTransactionWithListener(this);
+        mDb.beginTransaction();
         try {
             mApplyingBatch.set(true);
             final int numOperations = operations.size();
@@ -246,31 +231,15 @@
         }
     }
 
-    @Override
-    public void onBegin() {
-        onBeginTransaction();
-    }
-
-    @Override
-    public void onCommit() {
-        beforeTransactionCommit();
-    }
-
-    @Override
-    public void onRollback() {
-        // not used
-    }
-
-    protected void onBeginTransaction() {
-    }
-
-    protected void beforeTransactionCommit() {
-    }
-
     protected void onEndTransaction(boolean callerIsSyncAdapter) {
-        if (mNotifyChange) {
-            mNotifyChange = false;
-            notifyChange(callerIsSyncAdapter);
+        Set<Uri> changed;
+        synchronized (mChangedUris) {
+            changed = new HashSet<Uri>(mChangedUris);
+            mChangedUris.clear();
+        }
+        ContentResolver resolver = getContext().getContentResolver();
+        for (Uri uri : changed) {
+            resolver.notifyChange(uri, null, !callerIsSyncAdapter);
         }
     }
 }
diff --git a/src/com/android/browser/search/DefaultSearchEngine.java b/src/com/android/browser/search/DefaultSearchEngine.java
index f282b0b..0a7afcf 100644
--- a/src/com/android/browser/search/DefaultSearchEngine.java
+++ b/src/com/android/browser/search/DefaultSearchEngine.java
@@ -120,4 +120,9 @@
         return "ActivitySearchEngine{" + mSearchable + "}";
     }
 
+    @Override
+    public boolean wantsEmptyQuery() {
+        return false;
+    }
+
 }
diff --git a/src/com/android/browser/search/OpenSearchSearchEngine.java b/src/com/android/browser/search/OpenSearchSearchEngine.java
index a19e50d..50585c0 100644
--- a/src/com/android/browser/search/OpenSearchSearchEngine.java
+++ b/src/com/android/browser/search/OpenSearchSearchEngine.java
@@ -295,4 +295,9 @@
         return "OpenSearchSearchEngine{" + mSearchEngineInfo + "}";
     }
 
+    @Override
+    public boolean wantsEmptyQuery() {
+        return false;
+    }
+
 }
diff --git a/src/com/android/browser/search/SearchEngine.java b/src/com/android/browser/search/SearchEngine.java
index b7e1859..3643005 100644
--- a/src/com/android/browser/search/SearchEngine.java
+++ b/src/com/android/browser/search/SearchEngine.java
@@ -61,4 +61,9 @@
      * Checks whether this search engine supports voice search.
      */
     public boolean supportsVoiceSearch();
+
+    /**
+     * Checks whether this search engine should be sent zero char query.
+     */
+    public boolean wantsEmptyQuery();
 }
diff --git a/src/com/android/browser/search/SearchEngineInfo.java b/src/com/android/browser/search/SearchEngineInfo.java
index 6f0b1d5..af6fa70 100644
--- a/src/com/android/browser/search/SearchEngineInfo.java
+++ b/src/com/android/browser/search/SearchEngineInfo.java
@@ -17,6 +17,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
+import android.content.res.Resources.NotFoundException;
 import android.text.TextUtils;
 import android.util.Log;
 
@@ -58,9 +59,12 @@
      */
     public SearchEngineInfo(Context context, String name) throws IllegalArgumentException {
         mName = name;
-
         Resources res = context.getResources();
+
         int id_data = res.getIdentifier(name, "array", context.getPackageName());
+        if (id_data == 0) {
+            throw new IllegalArgumentException("No resources found for " + name);
+        }
         mSearchEngineData = res.getStringArray(id_data);
 
         if (mSearchEngineData == null) {
diff --git a/src/com/android/browser/search/SearchEngines.java b/src/com/android/browser/search/SearchEngines.java
index a6ba3de..a159f17 100644
--- a/src/com/android/browser/search/SearchEngines.java
+++ b/src/com/android/browser/search/SearchEngines.java
@@ -15,13 +15,11 @@
  */
 package com.android.browser.search;
 
+import com.android.browser.BrowserSettings;
+import com.android.browser.InstantSearchEngine;
 import com.android.browser.R;
 
-import android.app.SearchManager;
-import android.content.ComponentName;
 import android.content.Context;
-import android.content.pm.ActivityInfo;
-import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.text.TextUtils;
 import android.util.Log;
@@ -34,6 +32,10 @@
     private static final String TAG = "SearchEngines";
 
     public static SearchEngine getDefaultSearchEngine(Context context) {
+        if (BrowserSettings.getInstance().useInstant()) {
+            return new InstantSearchEngine(context, DefaultSearchEngine.create(context));
+        }
+
         return DefaultSearchEngine.create(context);
     }
 
diff --git a/src/com/android/browser/view/BasePieView.java b/src/com/android/browser/view/BasePieView.java
new file mode 100644
index 0000000..2120215
--- /dev/null
+++ b/src/com/android/browser/view/BasePieView.java
@@ -0,0 +1,161 @@
+/*
+ * 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.view;
+
+import android.database.DataSetObserver;
+import android.graphics.Canvas;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.Adapter;
+
+import java.util.ArrayList;
+
+/**
+ * common code for pie views
+ */
+public abstract class BasePieView implements PieMenu.PieView {
+
+    protected Adapter mAdapter;
+    private DataSetObserver mObserver;
+    protected ArrayList<View> mViews;
+
+    protected OnLayoutListener mListener;
+
+    protected int mCurrent;
+    protected int mChildWidth;
+    protected int mChildHeight;
+    protected int mWidth;
+    protected int mHeight;
+    protected int mLeft;
+    protected int mTop;
+
+    public BasePieView() {
+    }
+
+    public void setLayoutListener(OnLayoutListener l) {
+        mListener = l;
+    }
+
+    public void setAdapter(Adapter adapter) {
+        mAdapter = adapter;
+        if (adapter == null) {
+            if (mAdapter != null) {
+                mAdapter.unregisterDataSetObserver(mObserver);
+            }
+            mViews = null;
+            mCurrent = -1;
+        } else {
+            mObserver = new DataSetObserver() {
+                @Override
+                public void onChanged() {
+                    buildViews();
+                }
+
+                @Override
+                public void onInvalidated() {
+                    mViews.clear();
+                }
+            };
+            mAdapter.registerDataSetObserver(mObserver);
+            setCurrent(0);
+        }
+    }
+
+    public void setCurrent(int ix) {
+        mCurrent = ix;
+    }
+
+    public Adapter getAdapter() {
+        return mAdapter;
+    }
+
+    protected void buildViews() {
+        if (mAdapter != null) {
+            final int n = mAdapter.getCount();
+            if (mViews == null) {
+                mViews = new ArrayList<View>(n);
+            } else {
+                mViews.clear();
+            }
+            mChildWidth = 0;
+            mChildHeight = 0;
+            for (int i = 0; i < n; i++) {
+                View view = mAdapter.getView(i, null, null);
+                view.measure(View.MeasureSpec.UNSPECIFIED,
+                        View.MeasureSpec.UNSPECIFIED);
+                mChildWidth = Math.max(mChildWidth, view.getMeasuredWidth());
+                mChildHeight = Math.max(mChildHeight, view.getMeasuredHeight());
+                mViews.add(view);
+            }
+        }
+    }
+
+    /**
+     * this will be called before the first draw call
+     * needs to set top, left, width, height
+     */
+    @Override
+    public void layout(int anchorX, int anchorY, boolean left) {
+        if (mListener != null) {
+            mListener.onLayout(anchorX, anchorY, left);
+        }
+    }
+
+
+    @Override
+    public abstract void draw(Canvas canvas);
+
+    protected void drawView(View view, Canvas canvas) {
+        final int state = canvas.save();
+        canvas.translate(view.getLeft(), view.getTop());
+        view.draw(canvas);
+        canvas.restoreToCount(state);
+    }
+
+    protected abstract int findChildAt(int y);
+
+    @Override
+    public boolean onTouchEvent(MotionEvent evt) {
+        int action = evt.getActionMasked();
+        int evtx = (int) evt.getX();
+        int evty = (int) evt.getY();
+        if ((evtx < mLeft) || (evtx >= mLeft + mWidth)
+                || (evty < mTop) || (evty >= mTop + mHeight)) {
+            return false;
+        }
+        switch (action) {
+            case MotionEvent.ACTION_MOVE:
+                View v = mViews.get(mCurrent);
+                setCurrent(Math.max(0, Math.min(mViews.size() -1,
+                        findChildAt(evty))));
+                View v1 = mViews.get(mCurrent);
+                if (v != v1) {
+                    v.setPressed(false);
+                    v1.setPressed(true);
+                }
+                break;
+            case MotionEvent.ACTION_UP:
+                mViews.get(mCurrent).performClick();
+                mViews.get(mCurrent).setPressed(false);
+                break;
+            default:
+                break;
+        }
+        return true;
+    }
+
+}
diff --git a/src/com/android/browser/view/EventRedirectingFrameLayout.java b/src/com/android/browser/view/EventRedirectingFrameLayout.java
new file mode 100644
index 0000000..901b021
--- /dev/null
+++ b/src/com/android/browser/view/EventRedirectingFrameLayout.java
@@ -0,0 +1,74 @@
+/*
+ * 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.view;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.FrameLayout;
+
+public class EventRedirectingFrameLayout extends FrameLayout {
+
+    private int mTargetChild;
+
+    public EventRedirectingFrameLayout(Context context) {
+        super(context);
+    }
+
+    public EventRedirectingFrameLayout(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public EventRedirectingFrameLayout(
+            Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    public void setTargetChild(int index) {
+        if (index >= 0 && index < getChildCount()) {
+            mTargetChild = index;
+            getChildAt(mTargetChild).requestFocus();
+        }
+    }
+
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent ev) {
+        View child = getChildAt(mTargetChild);
+        if (child != null)
+            return child.dispatchTouchEvent(ev);
+        return false;
+    }
+
+    @Override
+    public boolean dispatchKeyEvent(KeyEvent event) {
+        View child = getChildAt(mTargetChild);
+        if (child != null)
+            return child.dispatchKeyEvent(event);
+        return false;
+    }
+
+    @Override
+    public boolean dispatchKeyEventPreIme(KeyEvent event) {
+        View child = getChildAt(mTargetChild);
+        if (child != null)
+            return child.dispatchKeyEventPreIme(event);
+        return false;
+    }
+
+}
diff --git a/src/com/android/browser/view/PieItem.java b/src/com/android/browser/view/PieItem.java
new file mode 100644
index 0000000..84a6ac0
--- /dev/null
+++ b/src/com/android/browser/view/PieItem.java
@@ -0,0 +1,102 @@
+/*
+ * 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.view;
+
+import com.android.browser.view.PieMenu.PieView;
+
+import android.view.View;
+
+/**
+ * Pie menu item
+ */
+public class PieItem {
+
+    private View mView;
+    private PieView mPieView;
+    private int level;
+    private float start;
+    private float sweep;
+    private int inner;
+    private int outer;
+    private boolean mSelected;
+
+    public PieItem(View view, int level) {
+        mView = view;
+        this.level = level;
+    }
+
+    public PieItem(View view, int level, PieView sym) {
+        mView = view;
+        this.level = level;
+        mPieView = sym;
+    }
+
+    public void setSelected(boolean s) {
+        mSelected = s;
+        if (mView != null) {
+            mView.setSelected(s);
+        }
+    }
+
+    public boolean isSelected() {
+        return mSelected;
+    }
+
+    public int getLevel() {
+        return level;
+    }
+
+    public void setGeometry(float st, float sw, int inside, int outside) {
+        start = st;
+        sweep = sw;
+        inner = inside;
+        outer = outside;
+    }
+
+    public float getStartAngle() {
+        return start;
+    }
+
+    public float getSweep() {
+        return sweep;
+    }
+
+    public int getInnerRadius() {
+        return inner;
+    }
+
+    public int getOuterRadius() {
+        return outer;
+    }
+
+    public boolean isPieView() {
+        return (mPieView != null);
+    }
+
+    public View getView() {
+        return mView;
+    }
+
+    public void setPieView(PieView sym) {
+        mPieView = sym;
+    }
+
+    public PieView getPieView() {
+        return mPieView;
+    }
+
+}
diff --git a/src/com/android/browser/view/PieListView.java b/src/com/android/browser/view/PieListView.java
new file mode 100644
index 0000000..8cd8a4e
--- /dev/null
+++ b/src/com/android/browser/view/PieListView.java
@@ -0,0 +1,79 @@
+/*
+ * 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.view;
+
+import com.android.browser.R;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.view.View;
+
+/**
+ * shows views in a menu style list
+ */
+public class PieListView extends BasePieView {
+
+    private Paint mBgPaint;
+
+    public PieListView(Context ctx) {
+        mBgPaint = new Paint();
+        mBgPaint.setColor(ctx.getResources().getColor(R.color.qcMenuBackground));
+    }
+
+    /**
+     * this will be called before the first draw call
+     */
+    @Override
+    public void layout(int anchorX, int anchorY, boolean left) {
+        super.layout(anchorX, anchorY, left);
+        buildViews();
+        mWidth = mChildWidth;
+        mHeight = mChildHeight * mAdapter.getCount();
+        mLeft = anchorX + (left ? 0 : - mChildWidth);
+        mTop = anchorY - mHeight / 2;
+        if (mViews != null) {
+            layoutChildrenLinear();
+        }
+    }
+
+    protected void layoutChildrenLinear() {
+        final int n = mViews.size();
+        int top = mTop;
+        for (View view : mViews) {
+            view.layout(mLeft, top, mLeft + mChildWidth, top + mChildHeight);
+            top += mChildHeight;
+        }
+    }
+
+    @Override
+    public void draw(Canvas canvas) {
+        canvas.drawRect(mLeft, mTop, mLeft + mWidth, mTop + mHeight, mBgPaint);
+        if (mViews != null) {
+            for (View view : mViews) {
+                drawView(view, canvas);
+            }
+        }
+    }
+
+    @Override
+    protected int findChildAt(int y) {
+        final int ix = (y - mTop) * mViews.size() / mHeight;
+        return ix;
+    }
+
+}
diff --git a/src/com/android/browser/view/PieMenu.java b/src/com/android/browser/view/PieMenu.java
index 5185adb..e494d19 100644
--- a/src/com/android/browser/view/PieMenu.java
+++ b/src/com/android/browser/view/PieMenu.java
@@ -21,26 +21,22 @@
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.Path;
 import android.graphics.Point;
 import android.graphics.PointF;
-import android.graphics.Rect;
-import android.graphics.RectF;
+import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
+import android.view.SoundEffectConstants;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 public class PieMenu extends FrameLayout {
 
-    private static final int RADIUS_GAP = 10;
+    private static final int MAX_LEVELS = 5;
 
     public interface PieController {
         /**
@@ -49,20 +45,43 @@
          */
         public boolean onOpen();
     }
+
+    /**
+     * A view like object that lives off of the pie menu
+     */
+    public interface PieView {
+
+        public interface OnLayoutListener {
+            public void onLayout(int ax, int ay, boolean left);
+        }
+
+        public void setLayoutListener(OnLayoutListener l);
+
+        public void layout(int anchorX, int anchorY, boolean onleft);
+
+        public void draw(Canvas c);
+
+        public boolean onTouchEvent(MotionEvent evt);
+
+    }
+
     private Point mCenter;
     private int mRadius;
     private int mRadiusInc;
     private int mSlop;
 
     private boolean mOpen;
-    private Paint mPaint;
-    private Paint mSelectedPaint;
     private PieController mController;
 
-    private Map<View, List<View>> mMenu;
-    private List<View> mStack;
+    private List<PieItem> mItems;
+    private int mLevels;
+    private int[] mCounts;
+    private PieView mPieView = null;
 
-    private boolean mDirty;
+    private Drawable mBackground;
+
+    // touch handling
+    PieItem mCurrentItem;
 
     /**
      * @param context
@@ -92,99 +111,59 @@
     }
 
     private void init(Context ctx) {
-        this.setTag(new MenuTag(0));
-        mStack = new ArrayList<View>();
-        mStack.add(this);
+        mItems = new ArrayList<PieItem>();
+        mLevels = 0;
+        mCounts = new int[MAX_LEVELS];
         Resources res = ctx.getResources();
-        mRadius = (int) res.getDimension(R.dimen.qc_radius);
-        mRadiusInc = (int) res.getDimension(R.dimen.qc_radius_inc);
+        mRadius = (int) res.getDimension(R.dimen.qc_radius_start);
+        mRadiusInc = (int) res.getDimension(R.dimen.qc_radius_increment);
         mSlop = (int) res.getDimension(R.dimen.qc_slop);
-        mPaint = new Paint();
-        mPaint.setAntiAlias(true);
-        mPaint.setColor(res.getColor(R.color.qc_slice_normal));
-        mSelectedPaint = new Paint();
-        mSelectedPaint.setAntiAlias(true);
-        mSelectedPaint.setColor(res.getColor(R.color.qc_slice_active));
         mOpen = false;
-        mMenu = new HashMap<View, List<View>>();
         setWillNotDraw(false);
         setDrawingCacheEnabled(false);
         mCenter = new Point(0,0);
-        mDirty = true;
+        mBackground = res.getDrawable(R.drawable.qc_background_normal);
     }
 
     public void setController(PieController ctl) {
         mController = ctl;
     }
 
-    public void setRadius(int r) {
-        mRadius = r;
-        requestLayout();
-    }
-
-    public void setRadiusIncrement(int ri) {
-        mRadiusInc = ri;
-        requestLayout();
-    }
-
-    /**
-     * add a menu item to another item as a submenu
-     * @param item
-     * @param parent
-     */
-    public void addItem(View item, View parent) {
-        List<View> subs = mMenu.get(parent);
-        if (subs == null) {
-            subs = new ArrayList<View>();
-            mMenu.put(parent, subs);
-        }
-        subs.add(item);
-        MenuTag tag = new MenuTag(((MenuTag) parent.getTag()).level + 1);
-        item.setTag(tag);
-    }
-
-    public void addItem(View view) {
+    public void addItem(PieItem item) {
         // add the item to the pie itself
-        addItem(view, this);
+        mItems.add(item);
+        int l = item.getLevel();
+        mLevels = Math.max(mLevels, l);
+        mCounts[l]++;
     }
 
-    public void removeItem(View view) {
-        List<View> subs = mMenu.get(view);
-        mMenu.remove(view);
-        for (View p : mMenu.keySet()) {
-            List<View> sl = mMenu.get(p);
-            if (sl != null) {
-                sl.remove(view);
-            }
-        }
-    }
-
-    public void clearItems(View parent) {
-        List<View> subs = mMenu.remove(parent);
-        if (subs != null) {
-            for (View sub: subs) {
-                clearItems(sub);
-            }
-        }
+    public void removeItem(PieItem item) {
+        mItems.remove(item);
     }
 
     public void clearItems() {
-        mMenu.clear();
+        mItems.clear();
     }
 
+    private boolean onTheLeft() {
+        return mCenter.x < mSlop;
+    }
 
-    public void show(boolean show) {
+    /**
+     * guaranteed has center set
+     * @param show
+     */
+    private void show(boolean show) {
         mOpen = show;
         if (mOpen) {
             if (mController != null) {
                 boolean changed = mController.onOpen();
             }
-            mDirty = true;
+            layoutPie();
         }
         if (!show) {
-            // hide sub items
-            mStack.clear();
-            mStack.add(this);
+            mCurrentItem = null;
+            mPieView = null;
         }
         invalidate();
     }
@@ -198,136 +177,76 @@
         mCenter.y = y;
     }
 
-    private boolean onTheLeft() {
-        return mCenter.x < mSlop;
+    private void layoutPie() {
+        int inner = mRadius;
+        int outer = mRadius + mRadiusInc;
+        int radius = mRadius;
+        for (int i = 0; i < mLevels; i++) {
+            int level = i + 1;
+            float sweep = (float) Math.PI / (mCounts[level] + 1);
+            float angle = sweep;
+            for (PieItem item : mItems) {
+                if (item.getLevel() == level) {
+                    View view = item.getView();
+                    view.measure(view.getLayoutParams().width,
+                            view.getLayoutParams().height);
+                    int w = view.getMeasuredWidth();
+                    int h = view.getMeasuredHeight();
+                    int x = (int) (outer * Math.sin(angle));
+                    int y = mCenter.y - (int) (outer * Math.cos(angle)) - h / 2;
+                    if (onTheLeft()) {
+                        x = mCenter.x + x - w;
+                    } else {
+                        x = mCenter.x - x;
+                    }
+                    view.layout(x, y, x + w, y + h);
+                    float itemstart = angle - sweep / 2;
+                    item.setGeometry(itemstart, sweep, inner, outer);
+                    angle += sweep;
+                }
+            }
+            inner += mRadiusInc;
+            outer += mRadiusInc;
+        }
     }
 
     @Override
     protected void onDraw(Canvas canvas) {
         if (mOpen) {
-            int radius = mRadius;
-            // start in the center for 0 level menu
-            float anchor = (float) Math.PI / 2;
-            PointF angles = new PointF();
-            int state = canvas.save();
-            if (onTheLeft()) {
-                // left handed
-                canvas.scale(-1, 1);
-            }
-            for (View parent : mStack) {
-                List<View> subs = mMenu.get(parent);
-                if (subs != null) {
-                    setGeometry(anchor, subs.size(), angles);
-                }
-                anchor = drawSlices(canvas, subs, radius, angles.x, angles.y);
-                radius += mRadiusInc + RADIUS_GAP;
-            }
-            canvas.restoreToCount(state);
-            mDirty = false;
-        }
-    }
-
-    /**
-     * draw the set of slices
-     * @param canvas
-     * @param items
-     * @param radius
-     * @param start
-     * @param sweep
-     * @return the angle of the selected slice
-     */
-    private float drawSlices(Canvas canvas, List<View> items, int radius,
-            float start, float sweep) {
-        float angle = start + sweep / 2;
-        // gap between slices in degrees
-        float gap = 1f;
-        float newanchor = 0f;
-        for (View item : items) {
-            if (mDirty) {
-                item.measure(item.getLayoutParams().width,
-                        item.getLayoutParams().height);
-                int w = item.getMeasuredWidth();
-                int h = item.getMeasuredHeight();
-                int x = (int) (radius * Math.sin(angle));
-                int y =  mCenter.y - (int) (radius * Math.cos(angle)) - h / 2;
-                if (onTheLeft()) {
-                    x = mCenter.x + x - w / 2;
-                } else {
-                    x = mCenter.x - x - w / 2;
-                }
-                item.layout(x, y, x + w, y + h);
-            }
-            float itemstart = angle - sweep / 2;
-            int inner = radius - mRadiusInc / 2;
-            int outer = radius + mRadiusInc / 2;
-            Path slice = makeSlice(getDegrees(itemstart) - gap,
-                    getDegrees(itemstart + sweep) + gap,
-                    outer, inner, mCenter);
-            MenuTag tag = (MenuTag) item.getTag();
-            tag.start = itemstart;
-            tag.sweep = sweep;
-            tag.inner = inner;
-            tag.outer = outer;
-
-            Paint p = item.isPressed() ? mSelectedPaint : mPaint;
-            canvas.drawPath(slice, p);
+            int w = mBackground.getIntrinsicWidth();
+            int h = mBackground.getIntrinsicHeight();
+            int left = mCenter.x - w;
+            int top = mCenter.y - h / 2;
+            mBackground.setBounds(left, top, left + w, top + h);
             int state = canvas.save();
             if (onTheLeft()) {
                 canvas.scale(-1, 1);
             }
-            canvas.translate(item.getX(), item.getY());
-            item.draw(canvas);
+            mBackground.draw(canvas);
             canvas.restoreToCount(state);
-            if (mStack.contains(item)) {
-                // item is anchor for sub menu
-                newanchor = angle;
+            for (PieItem item : mItems) {
+                drawItem(canvas, item);
             }
-            angle += sweep;
+            if (mPieView != null) {
+                mPieView.draw(canvas);
+            }
         }
-        return newanchor;
     }
 
-    /**
-     * converts a
-     * @param angle from 0..PI to Android degrees (clockwise starting at 3 o'clock)
-     * @return skia angle
-     */
-    private float getDegrees(double angle) {
-        return (float) (270 - 180 * angle / Math.PI);
-    }
-
-    private Path makeSlice(float startangle, float endangle, int outerradius,
-            int innerradius, Point center) {
-        RectF bb = new RectF(center.x - outerradius, center.y - outerradius,
-                center.x + outerradius, center.y + outerradius);
-        RectF bbi = new RectF(center.x - innerradius, center.y - innerradius,
-                center.x + innerradius, center.y + innerradius);
-        Path path = new Path();
-        path.arcTo(bb, startangle, endangle - startangle, true);
-        path.arcTo(bbi, endangle, startangle - endangle);
-        path.close();
-        return path;
-    }
-
-    /**
-     * all angles are 0 .. MATH.PI where 0 points up, and rotate counterclockwise
-     * set the startangle and slice sweep in result
-     * @param anchorangle : angle at which the menu is anchored
-     * @param nslices
-     * @param result : x : start, y : sweep
-     */
-    private void setGeometry(float anchorangle, int nslices, PointF result) {
-        float span = (float) Math.min(anchorangle, Math.PI - anchorangle);
-        float sweep = 2 * span / (nslices + 1);
-        result.x = anchorangle - span + sweep / 2;
-        result.y = sweep;
+    private void drawItem(Canvas canvas, PieItem item) {
+        int outer = item.getOuterRadius();
+        int left = mCenter.x - outer;
+        int top = mCenter.y - outer;
+        // draw the item view
+        View view = item.getView();
+        int state = canvas.save();
+        canvas.translate(view.getX(), view.getY());
+        view.draw(canvas);
+        canvas.restoreToCount(state);
     }
 
     // touch handling for pie
 
-    View mCurrentView;
-    Rect mHitRect = new Rect();
-
     @Override
     public boolean onTouchEvent(MotionEvent evt) {
         float x = evt.getX();
@@ -342,12 +261,16 @@
             }
         } else if (MotionEvent.ACTION_UP == action) {
             if (mOpen) {
-                View v = mCurrentView;
-                deselect();
-                if (v != null) {
-                    v.performClick();
+                boolean handled = false;
+                if (mPieView != null) {
+                    handled = mPieView.onTouchEvent(evt);
                 }
+                PieItem item = mCurrentItem;
+                deselect();
                 show(false);
+                if (!handled && (item != null)) {
+                    item.getView().performClick();
+                }
                 return true;
             }
         } else if (MotionEvent.ACTION_CANCEL == action) {
@@ -357,19 +280,35 @@
             deselect();
             return false;
         } else if (MotionEvent.ACTION_MOVE == action) {
+            boolean handled = false;
             PointF polar = getPolar(x, y);
-            if (polar.y > mRadius + 2 * mRadiusInc) {
-                show(false);
+            int maxr = mRadius + mLevels * mRadiusInc + 50;
+            if (mPieView != null) {
+                handled = mPieView.onTouchEvent(evt);
+            }
+            if (handled) {
+                invalidate();
+                return false;
+            }
+            if (polar.y > maxr) {
                 deselect();
+                show(false);
                 evt.setAction(MotionEvent.ACTION_DOWN);
                 if (getParent() != null) {
                     ((ViewGroup) getParent()).dispatchTouchEvent(evt);
                 }
                 return false;
             }
-            View v = findView(polar);
-            if (mCurrentView != v) {
-                onEnter(v);
+            PieItem item = findItem(polar);
+            if (mCurrentItem != item) {
+                onEnter(item);
+                if ((item != null) && item.isPieView()) {
+                    int cx = item.getView().getLeft() + (onTheLeft()
+                            ? item.getView().getWidth() : 0);
+                    int cy = item.getView().getTop();
+                    mPieView = item.getPieView();
+                    layoutPieView(mPieView, cx, cy);
+                }
                 invalidate();
             }
         }
@@ -377,52 +316,35 @@
         return false;
     }
 
+    private void layoutPieView(PieView pv, int x, int y) {
+        pv.layout(x, y, onTheLeft());
+    }
+
     /**
      * enter a slice for a view
      * updates model only
-     * @param view
+     * @param item
      */
-    private void onEnter(View view) {
+    private void onEnter(PieItem item) {
         // deselect
-        if (mCurrentView != null) {
-            if (getLevel(mCurrentView) >= getLevel(view)) {
-                mCurrentView.setPressed(false);
-            }
+        if (mCurrentItem != null) {
+            mCurrentItem.setSelected(false);
         }
-        if (view != null) {
+        if (item != null) {
             // clear up stack
-            MenuTag tag = (MenuTag) view.getTag();
-            int i = mStack.size() - 1;
-            while (i > 0) {
-                View v = mStack.get(i);
-                if (((MenuTag) v.getTag()).level >= tag.level) {
-                    v.setPressed(false);
-                    mStack.remove(i);
-                } else {
-                    break;
-                }
-                i--;
-            }
-            List<View> items = mMenu.get(view);
-            if (items != null) {
-                mStack.add(view);
-                mDirty = true;
-            }
-            view.setPressed(true);
+            playSoundEffect(SoundEffectConstants.CLICK);
+            item.setSelected(true);
+            mPieView = null;
         }
-        mCurrentView = view;
+        mCurrentItem = item;
     }
 
     private void deselect() {
-        if (mCurrentView != null) {
-            mCurrentView.setPressed(false);
+        if (mCurrentItem != null) {
+            mCurrentItem.setSelected(false);
         }
-        mCurrentView = null;
-    }
-
-    private int getLevel(View v) {
-        if (v == null) return -1;
-        return ((MenuTag) v.getTag()).level;
+        mCurrentItem = null;
+        mPieView = null;
     }
 
     private PointF getPolar(float x, float y) {
@@ -446,39 +368,19 @@
     /**
      *
      * @param polar x: angle, y: dist
-     * @return
+     * @return the item at angle/dist or null
      */
-    private View findView(PointF polar) {
+    private PieItem findItem(PointF polar) {
         // find the matching item:
-        for (View parent : mStack) {
-            List<View> subs = mMenu.get(parent);
-            if (subs != null) {
-                for (View item : subs) {
-                    MenuTag tag = (MenuTag) item.getTag();
-                    if ((tag.inner < polar.y)
-                            && (tag.outer > polar.y)
-                            && (tag.start < polar.x)
-                            && (tag.start + tag.sweep > polar.x)) {
-                        return item;
-                    }
-                }
+        for (PieItem item : mItems) {
+            if ((item.getInnerRadius() < polar.y)
+                    && (item.getOuterRadius() > polar.y)
+                    && (item.getStartAngle() < polar.x)
+                    && (item.getStartAngle() + item.getSweep() > polar.x)) {
+                return item;
             }
         }
         return null;
     }
 
-    class MenuTag {
-
-        int level;
-        float start;
-        float sweep;
-        int inner;
-        int outer;
-
-        public MenuTag(int l) {
-            level = l;
-        }
-
-    }
-
 }
diff --git a/src/com/android/browser/view/PieStackView.java b/src/com/android/browser/view/PieStackView.java
new file mode 100644
index 0000000..df387ad
--- /dev/null
+++ b/src/com/android/browser/view/PieStackView.java
@@ -0,0 +1,104 @@
+/*
+ * 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.view;
+
+import com.android.browser.R;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.view.View;
+
+/**
+ * shows views in a stack
+ */
+public class PieStackView extends BasePieView {
+
+    private static final int SLOP = 5;
+
+    private OnCurrentListener mCurrentListener;
+    private int mMinHeight;
+
+    public interface OnCurrentListener {
+        public void onSetCurrent(int index);
+    }
+
+    public PieStackView(Context ctx) {
+        mMinHeight = (int) ctx.getResources()
+                .getDimension(R.dimen.qc_tab_title_height);
+    }
+
+    public void setOnCurrentListener(OnCurrentListener l) {
+        mCurrentListener = l;
+    }
+
+    @Override
+    public void setCurrent(int ix) {
+        super.setCurrent(ix);
+        if (mCurrentListener != null) {
+            mCurrentListener.onSetCurrent(ix);
+            buildViews();
+            layoutChildrenLinear();
+        }
+    }
+
+    /**
+     * this will be called before the first draw call
+     */
+    @Override
+    public void layout(int anchorX, int anchorY, boolean left) {
+        super.layout(anchorX, anchorY, left);
+        buildViews();
+        mWidth = mChildWidth;
+        mHeight = mChildHeight + (mViews.size() - 1) * mMinHeight;
+        mLeft = anchorX + (left ? SLOP : -(SLOP + mChildWidth));
+        mTop = anchorY - mHeight / 2;
+        if (mViews != null) {
+            layoutChildrenLinear();
+        }
+    }
+
+    private void layoutChildrenLinear() {
+        final int n = mViews.size();
+        int top = mTop;
+        int dy = (n == 1) ? 0 : (mHeight - mChildHeight) / (n - 1);
+        for (View view : mViews) {
+            view.layout(mLeft, top, mLeft + mChildWidth, top + mChildHeight);
+            top += dy;
+        }
+    }
+
+    @Override
+    public void draw(Canvas canvas) {
+        if (mViews != null) {
+            final int n = mViews.size();
+            for (int i = 0; i < mCurrent; i++) {
+                drawView(mViews.get(i), canvas);
+            }
+            for (int i = n - 1; i > mCurrent; i--) {
+                drawView(mViews.get(i), canvas);
+            }
+            drawView(mViews.get(mCurrent), canvas);
+        }
+    }
+
+    @Override
+    protected int findChildAt(int y) {
+        final int ix = (y - mTop) * mViews.size() / mHeight;
+        return ix;
+    }
+
+}
diff --git a/src/com/android/browser/widget/BookmarkThumbnailWidgetProvider.java b/src/com/android/browser/widget/BookmarkThumbnailWidgetProvider.java
index b991abd..48d7123 100644
--- a/src/com/android/browser/widget/BookmarkThumbnailWidgetProvider.java
+++ b/src/com/android/browser/widget/BookmarkThumbnailWidgetProvider.java
@@ -32,12 +32,9 @@
  * Widget that shows a preview of the user's bookmarks.
  */
 public class BookmarkThumbnailWidgetProvider extends AppWidgetProvider {
-    static final String ACTION_BOOKMARK_APPWIDGET_UPDATE =
+    public static final String ACTION_BOOKMARK_APPWIDGET_UPDATE =
         "com.android.browser.BOOKMARK_APPWIDGET_UPDATE";
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
     public void onReceive(Context context, Intent intent) {
         // Handle bookmark-specific updates ourselves because they might be
@@ -58,23 +55,27 @@
     }
 
     @Override
-    public void onEnabled(Context context) {
-        // Start the backing service
-        context.startService(new Intent(context, BookmarkThumbnailWidgetService.class));
+    public void onDeleted(Context context, int[] appWidgetIds) {
+        super.onDeleted(context, appWidgetIds);
+        for (int widgetId : appWidgetIds) {
+            BookmarkThumbnailWidgetService.deleteWidgetState(context, widgetId);
+        }
+        removeOrphanedFiles(context);
     }
 
     @Override
     public void onDisabled(Context context) {
-        // Stop the backing service
-        context.stopService(new Intent(context, BookmarkThumbnailWidgetService.class));
+        super.onDisabled(context);
+        removeOrphanedFiles(context);
     }
 
-    @Override
-    public void onDeleted(Context context, int[] appWidgetIds) {
-        super.onDeleted(context, appWidgetIds);
-        context.startService(new Intent(BookmarkThumbnailWidgetService.ACTION_REMOVE_FACTORIES,
-                null, context, BookmarkThumbnailWidgetService.class)
-                .putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds));
+    /**
+     *  Checks for any state files that may have not received onDeleted
+     */
+    void removeOrphanedFiles(Context context) {
+        AppWidgetManager wm = AppWidgetManager.getInstance(context);
+        int[] ids = wm.getAppWidgetIds(getComponentName(context));
+        BookmarkThumbnailWidgetService.removeOrphanedStates(context, ids);
     }
 
     private void performUpdate(Context context,
@@ -92,9 +93,9 @@
             views.setOnClickPendingIntent(R.id.app_shortcut, launchBrowser);
             views.setRemoteAdapter(appWidgetId, R.id.bookmarks_list, updateIntent);
             appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetId, R.id.bookmarks_list);
-            Intent ic = new Intent(context, BookmarkThumbnailWidgetService.class);
+            Intent ic = new Intent(context, BookmarkWidgetProxy.class);
             views.setPendingIntentTemplate(R.id.bookmarks_list,
-                    PendingIntent.getService(context, 0, ic,
+                    PendingIntent.getBroadcast(context, 0, ic,
                     PendingIntent.FLAG_UPDATE_CURRENT));
             appWidgetManager.updateAppWidget(appWidgetId, views);
         }
@@ -107,4 +108,29 @@
     static ComponentName getComponentName(Context context) {
         return new ComponentName(context, BookmarkThumbnailWidgetProvider.class);
     }
+
+    public static void refreshWidgets(Context context) {
+        refreshWidgets(context, false);
+    }
+
+    public static void refreshWidgets(Context context, boolean zeroState) {
+        if (zeroState) {
+            final Context appContext = context.getApplicationContext();
+            new Thread() {
+                @Override
+                public void run() {
+                    AppWidgetManager wm = AppWidgetManager.getInstance(appContext);
+                    int[] ids = wm.getAppWidgetIds(getComponentName(appContext));
+                    for (int id : ids) {
+                        BookmarkThumbnailWidgetService.clearWidgetState(appContext, id);
+                    }
+                    refreshWidgets(appContext, false);
+                }
+            }.start();
+        } else {
+            context.sendBroadcast(new Intent(
+                    BookmarkThumbnailWidgetProvider.ACTION_BOOKMARK_APPWIDGET_UPDATE,
+                    null, context, BookmarkThumbnailWidgetProvider.class));
+        }
+    }
 }
diff --git a/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java b/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java
index e525159..675cdd9 100644
--- a/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java
+++ b/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java
@@ -16,8 +16,8 @@
 
 package com.android.browser.widget;
 
+import com.android.browser.BookmarkUtils;
 import com.android.browser.BrowserActivity;
-import com.android.browser.BrowserBookmarksPage;
 import com.android.browser.R;
 
 import android.appwidget.AppWidgetManager;
@@ -25,17 +25,14 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
-import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
-import android.database.ContentObserver;
 import android.database.Cursor;
+import android.database.MergeCursor;
 import android.graphics.Bitmap;
 import android.graphics.Bitmap.Config;
 import android.graphics.BitmapFactory;
 import android.graphics.BitmapFactory.Options;
 import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Handler;
-import android.preference.PreferenceManager;
+import android.os.Binder;
 import android.provider.BrowserContract;
 import android.provider.BrowserContract.Bookmarks;
 import android.text.TextUtils;
@@ -43,120 +40,38 @@
 import android.widget.RemoteViews;
 import android.widget.RemoteViewsService;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Stack;
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 public class BookmarkThumbnailWidgetService extends RemoteViewsService {
 
     static final String TAG = "BookmarkThumbnailWidgetService";
-    static final boolean USE_FOLDERS = true;
-
-    static final String ACTION_REMOVE_FACTORIES
-            = "com.android.browser.widget.REMOVE_FACTORIES";
     static final String ACTION_CHANGE_FOLDER
             = "com.android.browser.widget.CHANGE_FOLDER";
 
+    static final String STATE_CURRENT_FOLDER = "current_folder";
+    static final String STATE_ROOT_FOLDER = "root_folder";
+
     private static final String[] PROJECTION = new String[] {
             BrowserContract.Bookmarks._ID,
             BrowserContract.Bookmarks.TITLE,
             BrowserContract.Bookmarks.URL,
             BrowserContract.Bookmarks.FAVICON,
             BrowserContract.Bookmarks.IS_FOLDER,
-            BrowserContract.Bookmarks.TOUCH_ICON,
             BrowserContract.Bookmarks.POSITION, /* needed for order by */
-            BrowserContract.Bookmarks.THUMBNAIL};
+            BrowserContract.Bookmarks.THUMBNAIL,
+            BrowserContract.Bookmarks.PARENT};
     private static final int BOOKMARK_INDEX_ID = 0;
     private static final int BOOKMARK_INDEX_TITLE = 1;
     private static final int BOOKMARK_INDEX_URL = 2;
     private static final int BOOKMARK_INDEX_FAVICON = 3;
     private static final int BOOKMARK_INDEX_IS_FOLDER = 4;
-    private static final int BOOKMARK_INDEX_TOUCH_ICON = 5;
-    private static final int BOOKMARK_INDEX_THUMBNAIL = 7;
-
-    // The service will likely be destroyed at any time, so we need to keep references to the
-    // factories across services connections.
-    private static final Map<Integer, BookmarkFactory> mFactories =
-            new HashMap<Integer, BookmarkFactory>();
-    private Handler mUiHandler;
-    private BookmarksObserver mBookmarksObserver;
-
-    @Override
-    public void onCreate() {
-        super.onCreate();
-        mUiHandler = new Handler();
-        mBookmarksObserver = new BookmarksObserver(mUiHandler);
-        getContentResolver().registerContentObserver(
-                BrowserContract.Bookmarks.CONTENT_URI, true, mBookmarksObserver);
-    }
-
-    @Override
-    public int onStartCommand(Intent intent, int flags, int startId) {
-        String action = intent.getAction();
-        if (Intent.ACTION_VIEW.equals(action)) {
-            if (intent.getData() == null) {
-                startActivity(new Intent(BrowserActivity.ACTION_SHOW_BROWSER, null,
-                        this, BrowserActivity.class)
-                        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
-            } else {
-                Intent view = new Intent(intent);
-                view.setComponent(null);
-                startActivity(view);
-            }
-        } else if (ACTION_REMOVE_FACTORIES.equals(action)) {
-            int[] ids = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);
-            if (ids != null) {
-                for (int id : ids) {
-                    BookmarkFactory bf = mFactories.remove(id);
-                    if (bf != null) {
-                        // Workaround a known framework bug
-                        // onDestroy is currently never called
-                        bf.onDestroy();
-                    }
-                }
-            }
-        } else if (ACTION_CHANGE_FOLDER.equals(action)) {
-            int widgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
-            long folderId = intent.getLongExtra(Bookmarks._ID, -1);
-            BookmarkFactory fac = mFactories.get(widgetId);
-            if (fac != null && folderId >= 0) {
-                fac.changeFolder(folderId);
-            } else {
-                // This a workaround to the issue when the Browser process crashes, after which
-                // mFactories is not populated (due to onBind() not being called).  Calling
-                // notifyDataSetChanged() will trigger a connection to be made.
-                AppWidgetManager.getInstance(getApplicationContext())
-                    .notifyAppWidgetViewDataChanged(widgetId, R.id.bookmarks_list);
-            }
-        }
-        return START_STICKY;
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        getContentResolver().unregisterContentObserver(mBookmarksObserver);
-    }
-
-    private class BookmarksObserver extends ContentObserver {
-        public BookmarksObserver(Handler handler) {
-            super(handler);
-        }
-
-        @Override
-        public void onChange(boolean selfChange) {
-            super.onChange(selfChange);
-
-            // Update all the bookmark widgets
-            if (mFactories != null) {
-                for (BookmarkFactory fac : mFactories.values()) {
-                    fac.loadData();
-                }
-            }
-        }
-    }
+    private static final int BOOKMARK_INDEX_THUMBNAIL = 6;
+    private static final int BOOKMARK_INDEX_PARENT_ID = 7;
 
     @Override
     public RemoteViewsFactory onGetViewFactory(Intent intent) {
@@ -164,64 +79,125 @@
         if (widgetId < 0) {
             Log.w(TAG, "Missing EXTRA_APPWIDGET_ID!");
             return null;
-        } else {
-            BookmarkFactory fac = mFactories.get(widgetId);
-            if (fac == null) {
-                fac = new BookmarkFactory(getApplicationContext(), widgetId);
+        }
+        return new BookmarkFactory(getApplicationContext(), widgetId);
+    }
+
+    static SharedPreferences getWidgetState(Context context, int widgetId) {
+        return context.getSharedPreferences(
+                String.format("widgetState-%d", widgetId),
+                Context.MODE_PRIVATE);
+    }
+
+    static void deleteWidgetState(Context context, int widgetId) {
+        File file = context.getSharedPrefsFile(
+                String.format("widgetState-%d", widgetId));
+        if (file.exists()) {
+            if (!file.delete()) {
+                file.deleteOnExit();
             }
-            mFactories.put(widgetId, fac);
-            return fac;
         }
     }
 
-    private static class Breadcrumb {
-        long mId;
-        String mTitle;
-        public Breadcrumb(long id, String title) {
-            mId = id;
-            mTitle = title;
+    static void changeFolder(Context context, Intent intent) {
+        int wid = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
+        long fid = intent.getLongExtra(Bookmarks._ID, -1);
+        if (wid >= 0 && fid >= 0) {
+            SharedPreferences prefs = getWidgetState(context, wid);
+            prefs.edit().putLong(STATE_CURRENT_FOLDER, fid).commit();
+            AppWidgetManager.getInstance(context)
+                    .notifyAppWidgetViewDataChanged(wid, R.id.bookmarks_list);
         }
     }
 
-    static class BookmarkFactory implements RemoteViewsService.RemoteViewsFactory,
-            OnSharedPreferenceChangeListener {
-        private List<RenderResult> mBookmarks;
+    static void clearWidgetState(Context context, int widgetId) {
+        SharedPreferences pref = getWidgetState(context, widgetId);
+        pref.edit()
+            .remove(STATE_CURRENT_FOLDER)
+            .remove(STATE_ROOT_FOLDER)
+            .commit();
+    }
+
+    /**
+     *  Checks for any state files that may have not received onDeleted
+     */
+    static void removeOrphanedStates(Context context, int[] widgetIds) {
+        File prefsDirectory = context.getSharedPrefsFile("null").getParentFile();
+        File[] widgetStates = prefsDirectory.listFiles(new StateFilter(widgetIds));
+        for (File f : widgetStates) {
+            Log.w(TAG, "Found orphaned state: " + f.getName());
+            if (!f.delete()) {
+                f.deleteOnExit();
+            }
+        }
+    }
+
+    static class StateFilter implements FilenameFilter {
+
+        static final Pattern sStatePattern = Pattern.compile("widgetState-(\\d+)\\.xml");
+        HashSet<Integer> mWidgetIds;
+
+        StateFilter(int[] ids) {
+            mWidgetIds = new HashSet<Integer>();
+            for (int id : ids) {
+                mWidgetIds.add(id);
+            }
+        }
+
+        @Override
+        public boolean accept(File dir, String filename) {
+            Matcher m = sStatePattern.matcher(filename);
+            if (m.matches()) {
+                int id = Integer.parseInt(m.group(1));
+                if (!mWidgetIds.contains(id)) {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+    }
+
+    static class BookmarkFactory implements RemoteViewsService.RemoteViewsFactory {
+        private Cursor mBookmarks;
         private Context mContext;
         private int mWidgetId;
-        private String mAccountType;
-        private String mAccountName;
-        private Stack<Breadcrumb> mBreadcrumbs;
-        private LoadBookmarksTask mLoadTask;
+        private long mCurrentFolder = -1;
+        private long mRootFolder = -1;
+        private SharedPreferences mPreferences = null;
 
         public BookmarkFactory(Context context, int widgetId) {
-            mBreadcrumbs = new Stack<Breadcrumb>();
             mContext = context;
             mWidgetId = widgetId;
         }
 
-        void changeFolder(long folderId) {
-            if (mBookmarks == null) return;
-
-            if (!mBreadcrumbs.empty() && mBreadcrumbs.peek().mId == folderId) {
-                mBreadcrumbs.pop();
-                loadData();
-                return;
+        void syncState() {
+            if (mPreferences == null) {
+                mPreferences = getWidgetState(mContext, mWidgetId);
             }
-
-            for (RenderResult res : mBookmarks) {
-                if (res.mId == folderId) {
-                    mBreadcrumbs.push(new Breadcrumb(res.mId, res.mTitle));
-                    loadData();
-                    break;
-                }
+            long currentFolder = mPreferences.getLong(STATE_CURRENT_FOLDER, -1);
+            mRootFolder = mPreferences.getLong(STATE_ROOT_FOLDER, -1);
+            if (currentFolder != mCurrentFolder) {
+                resetBookmarks();
+                mCurrentFolder = currentFolder;
             }
         }
 
+        void saveState() {
+            if (mPreferences == null) {
+                mPreferences = getWidgetState(mContext, mWidgetId);
+            }
+            mPreferences.edit()
+                .putLong(STATE_CURRENT_FOLDER, mCurrentFolder)
+                .putLong(STATE_ROOT_FOLDER, mRootFolder)
+                .commit();
+        }
+
         @Override
         public int getCount() {
             if (mBookmarks == null)
                 return 0;
-            return mBookmarks.size();
+            return mBookmarks.getCount();
         }
 
         @Override
@@ -231,44 +207,33 @@
 
         @Override
         public RemoteViews getLoadingView() {
-            return null;
+            return new RemoteViews(
+                    mContext.getPackageName(), R.layout.bookmarkthumbnailwidget_item);
         }
 
         @Override
         public RemoteViews getViewAt(int position) {
-            if (position < 0 || position >= getCount()) {
+            if (!mBookmarks.moveToPosition(position)) {
                 return null;
             }
 
-            RenderResult res = mBookmarks.get(position);
-            Breadcrumb folder = mBreadcrumbs.empty() ? null : mBreadcrumbs.peek();
+            long id = mBookmarks.getLong(BOOKMARK_INDEX_ID);
+            String title = mBookmarks.getString(BOOKMARK_INDEX_TITLE);
+            String url = mBookmarks.getString(BOOKMARK_INDEX_URL);
+            boolean isFolder = mBookmarks.getInt(BOOKMARK_INDEX_IS_FOLDER) != 0;
 
             RemoteViews views = new RemoteViews(
                     mContext.getPackageName(), R.layout.bookmarkthumbnailwidget_item);
-            Intent fillin;
-            if (res.mIsFolder) {
-                long nfi = res.mId;
-                fillin = new Intent(ACTION_CHANGE_FOLDER, null,
-                        mContext, BookmarkThumbnailWidgetService.class)
-                        .putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mWidgetId)
-                        .putExtra(Bookmarks._ID, nfi);
-            } else {
-                fillin = new Intent(Intent.ACTION_VIEW)
-                        .addCategory(Intent.CATEGORY_BROWSABLE);
-                if (!TextUtils.isEmpty(res.mUrl)) {
-                    fillin.setData(Uri.parse(res.mUrl));
-                }
-            }
-            views.setOnClickFillInIntent(R.id.list_item, fillin);
             // Set the title of the bookmark. Use the url as a backup.
-            String displayTitle = res.mTitle;
+            String displayTitle = title;
             if (TextUtils.isEmpty(displayTitle)) {
                 // The browser always requires a title for bookmarks, but jic...
-                displayTitle = res.mUrl;
+                displayTitle = url;
             }
             views.setTextViewText(R.id.label, displayTitle);
-            if (res.mIsFolder) {
-                if (folder != null && res.mId == folder.mId) {
+            if (isFolder) {
+                if (id == mCurrentFolder) {
+                    id = mBookmarks.getLong(BOOKMARK_INDEX_PARENT_ID);
                     views.setImageViewResource(R.id.thumb, R.drawable.thumb_bookmark_widget_folder_back_holo);
                 } else {
                     views.setImageViewResource(R.id.thumb, R.drawable.thumb_bookmark_widget_folder_holo);
@@ -276,20 +241,45 @@
                 views.setImageViewResource(R.id.favicon, R.drawable.ic_bookmark_widget_bookmark_holo_dark);
                 views.setDrawableParameters(R.id.thumb, true, 0, -1, null, -1);
             } else {
+                // RemoteViews require a valid bitmap config
+                Options options = new Options();
+                options.inPreferredConfig = Config.ARGB_8888;
+                Bitmap thumbnail = null, favicon = null;
+                byte[] blob = mBookmarks.getBlob(BOOKMARK_INDEX_THUMBNAIL);
                 views.setDrawableParameters(R.id.thumb, true, 255, -1, null, -1);
-                if (res.mThumbnail != null) {
-                    views.setImageViewBitmap(R.id.thumb, res.mThumbnail);
+                if (blob != null && blob.length > 0) {
+                    thumbnail = BitmapFactory.decodeByteArray(
+                            blob, 0, blob.length, options);
+                    views.setImageViewBitmap(R.id.thumb, thumbnail);
                 } else {
                     views.setImageViewResource(R.id.thumb,
                             R.drawable.browser_thumbnail);
                 }
-                if (res.mIcon != null) {
-                    views.setImageViewBitmap(R.id.favicon, res.mIcon);
+                blob = mBookmarks.getBlob(BOOKMARK_INDEX_FAVICON);
+                if (blob != null && blob.length > 0) {
+                    favicon = BitmapFactory.decodeByteArray(
+                            blob, 0, blob.length, options);
+                    views.setImageViewBitmap(R.id.favicon, favicon);
                 } else {
                     views.setImageViewResource(R.id.favicon,
                             R.drawable.app_web_browser_sm);
                 }
             }
+            Intent fillin;
+            if (isFolder) {
+                fillin = new Intent(ACTION_CHANGE_FOLDER)
+                        .putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mWidgetId)
+                        .putExtra(Bookmarks._ID, id);
+            } else {
+                if (!TextUtils.isEmpty(url)) {
+                    fillin = new Intent(Intent.ACTION_VIEW)
+                            .addCategory(Intent.CATEGORY_BROWSABLE)
+                            .setData(Uri.parse(url));
+                } else {
+                    fillin = new Intent(BrowserActivity.ACTION_SHOW_BROWSER);
+                }
+            }
+            views.setOnClickFillInIntent(R.id.list_item, fillin);
             return views;
         }
 
@@ -305,187 +295,70 @@
 
         @Override
         public void onCreate() {
-            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
-            mAccountType = prefs.getString(BrowserBookmarksPage.PREF_ACCOUNT_TYPE, null);
-            mAccountName = prefs.getString(BrowserBookmarksPage.PREF_ACCOUNT_NAME, null);
-            prefs.registerOnSharedPreferenceChangeListener(this);
-            loadData();
         }
 
         @Override
         public void onDestroy() {
-            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
-            prefs.unregisterOnSharedPreferenceChangeListener(this);
-
-            // Workaround known framework bug
-            // This class currently leaks, so free as much memory as we can
-            recycleBitmaps();
-            mBookmarks.clear();
-            mBreadcrumbs.clear();
-            if (mLoadTask != null) {
-                mLoadTask.cancel(false);
-                mLoadTask = null;
+            if (mBookmarks != null) {
+                mBookmarks.close();
+                mBookmarks = null;
             }
+            deleteWidgetState(mContext, mWidgetId);
         }
 
         @Override
         public void onDataSetChanged() {
+            long token = Binder.clearCallingIdentity();
+            syncState();
+            if (mRootFolder < 0 || mCurrentFolder < 0) {
+                // Our state has been zero'd, reset (account change most likely)
+                mRootFolder = getRootFolder();
+                mCurrentFolder = mRootFolder;
+                saveState();
+            }
+            loadBookmarks();
+            Binder.restoreCallingIdentity(token);
         }
 
-        void loadData() {
-            if (mLoadTask != null) {
-                mLoadTask.cancel(false);
-            }
-            mLoadTask = new LoadBookmarksTask();
-            mLoadTask.execute();
-        }
-
-        class LoadBookmarksTask extends AsyncTask<Void, Void, List<RenderResult>> {
-            private Breadcrumb mFolder;
-
-            @Override
-            protected void onPreExecute() {
-                mFolder = mBreadcrumbs.empty() ? null : mBreadcrumbs.peek();
-            }
-
-            @Override
-            protected List<RenderResult> doInBackground(Void... params) {
-                return loadBookmarks(mFolder);
-            }
-
-            @Override
-            protected void onPostExecute(List<RenderResult> result) {
-                if (!isCancelled() && result != null) {
-                    recycleBitmaps();
-                    mBookmarks = result;
-                    AppWidgetManager.getInstance(mContext)
-                            .notifyAppWidgetViewDataChanged(mWidgetId, R.id.bookmarks_list);
-                }
-            }
-        }
-
-        List<RenderResult> loadBookmarks(Breadcrumb folder) {
-            String where = null;
-            Uri uri;
-            if (USE_FOLDERS) {
-                uri = BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER;
-                if (folder != null) {
-                    uri = ContentUris.withAppendedId(uri, folder.mId);
-                }
-            } else {
-                uri = BrowserContract.Bookmarks.CONTENT_URI;
-                where = Bookmarks.IS_FOLDER + " == 0";
-            }
-            uri = uri.buildUpon()
-                    .appendQueryParameter(Bookmarks.PARAM_ACCOUNT_TYPE, mAccountType)
-                    .appendQueryParameter(Bookmarks.PARAM_ACCOUNT_NAME, mAccountName)
-                    .build();
-            Cursor c = null;
-            try {
-                c = mContext.getContentResolver().query(uri, PROJECTION,
-                        where, null, null);
-                if (c != null) {
-                    ArrayList<RenderResult> bookmarks
-                            = new ArrayList<RenderResult>(c.getCount() + 1);
-                    if (folder != null) {
-                        RenderResult res = new RenderResult(
-                                folder.mId, folder.mTitle, null);
-                        res.mIsFolder = true;
-                        bookmarks.add(res);
-                    }
-                    while (c.moveToNext()) {
-                        long id = c.getLong(BOOKMARK_INDEX_ID);
-                        String title = c.getString(BOOKMARK_INDEX_TITLE);
-                        String url = c.getString(BOOKMARK_INDEX_URL);
-                        RenderResult res = new RenderResult(id, title, url);
-                        res.mIsFolder = c.getInt(BOOKMARK_INDEX_IS_FOLDER) != 0;
-                        if (!res.mIsFolder) {
-                            // RemoteViews require a valid bitmap config
-                            Options options = new Options();
-                            options.inPreferredConfig = Config.ARGB_8888;
-                            Bitmap thumbnail = null, favicon = null;
-                            byte[] blob = c.getBlob(BOOKMARK_INDEX_THUMBNAIL);
-                            if (blob != null && blob.length > 0) {
-                                thumbnail = BitmapFactory.decodeByteArray(
-                                        blob, 0, blob.length, options);
-                            }
-                            blob = c.getBlob(BOOKMARK_INDEX_FAVICON);
-                            if (blob != null && blob.length > 0) {
-                                favicon = BitmapFactory.decodeByteArray(
-                                        blob, 0, blob.length, options);
-                            }
-                            res.mThumbnail = thumbnail;
-                            res.mIcon = favicon;
-                        }
-                        bookmarks.add(res);
-                    }
-                    if (bookmarks.size() == 0) {
-                        RenderResult res = new RenderResult(0, "", "");
-                        Bitmap thumbnail = BitmapFactory.decodeResource(
-                                mContext.getResources(),
-                                R.drawable.thumbnail_bookmarks_widget_no_bookmark_holo);
-                        Bitmap favicon = Bitmap.createBitmap(1, 1, Config.ALPHA_8);
-                        res.mThumbnail = thumbnail;
-                        res.mIcon = favicon;
-                        for (int i = 0; i < 6; i++) {
-                            bookmarks.add(res);
-                        }
-                    }
-                    return bookmarks;
-                }
-            } catch (IllegalStateException e) {
-                Log.e(TAG, "update bookmark widget", e);
-            } finally {
-                if (c != null) {
-                    c.close();
-                }
-            }
-            return null;
-        }
-
-        private void recycleBitmaps() {
-            // Do a bit of house cleaning for the system
+        private void resetBookmarks() {
             if (mBookmarks != null) {
-                for (RenderResult res : mBookmarks) {
-                    if (res.mThumbnail != null) {
-                        res.mThumbnail.recycle();
-                        res.mThumbnail = null;
-                    }
-                }
+                mBookmarks.close();
+                mBookmarks = null;
             }
         }
 
-        @Override
-        public void onSharedPreferenceChanged(
-                SharedPreferences prefs, String key) {
-            if (BrowserBookmarksPage.PREF_ACCOUNT_TYPE.equals(key)) {
-                mAccountType = prefs.getString(BrowserBookmarksPage.PREF_ACCOUNT_TYPE, null);
-                mBreadcrumbs.clear();
-                loadData();
-            }
-            if (BrowserBookmarksPage.PREF_ACCOUNT_NAME.equals(key)) {
-                mAccountName = prefs.getString(BrowserBookmarksPage.PREF_ACCOUNT_NAME, null);
-                mBreadcrumbs.clear();
-                loadData();
+        long getRootFolder() {
+            Uri uri = Uri.withAppendedPath(
+                    BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER, "id");
+            uri = BookmarkUtils.addAccountInfo(mContext, uri.buildUpon()).build();
+            Cursor c = mContext.getContentResolver().query(
+                    uri, null, null, null, null);
+            try {
+                c.moveToFirst();
+                return c.getLong(0);
+            } finally {
+                c.close();
             }
         }
-    }
 
-    // Class containing the rendering information for a specific bookmark.
-    private static class RenderResult {
-        final String mTitle;
-        final String mUrl;
-        Bitmap mThumbnail;
-        Bitmap mIcon;
-        boolean mIsFolder;
-        long mId;
+        void loadBookmarks() {
+            resetBookmarks();
 
-        RenderResult(long id, String title, String url) {
-            mId = id;
-            mTitle = title;
-            mUrl = url;
+            Uri uri = ContentUris.withAppendedId(
+                    BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER,
+                    mCurrentFolder);
+            uri = BookmarkUtils.addAccountInfo(mContext, uri.buildUpon()).build();
+            mBookmarks = mContext.getContentResolver().query(uri, PROJECTION,
+                    null, null, null);
+            if (mCurrentFolder != mRootFolder) {
+                uri = ContentUris.withAppendedId(
+                        BrowserContract.Bookmarks.CONTENT_URI,
+                        mCurrentFolder);
+                Cursor c = mContext.getContentResolver().query(uri, PROJECTION,
+                        null, null, null);
+                mBookmarks = new MergeCursor(new Cursor[] { c, mBookmarks });
+            }
         }
-
     }
 
 }
diff --git a/src/com/android/browser/widget/BookmarkWidgetProxy.java b/src/com/android/browser/widget/BookmarkWidgetProxy.java
new file mode 100644
index 0000000..8ab57fc
--- /dev/null
+++ b/src/com/android/browser/widget/BookmarkWidgetProxy.java
@@ -0,0 +1,53 @@
+/*
+ * 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.widget;
+
+import com.android.browser.BrowserActivity;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+public class BookmarkWidgetProxy extends BroadcastReceiver {
+
+    private static final String TAG = "BookmarkWidgetProxy";
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        if (BookmarkThumbnailWidgetService.ACTION_CHANGE_FOLDER.equals(intent.getAction())) {
+            BookmarkThumbnailWidgetService.changeFolder(context, intent);
+        } else if (BrowserActivity.ACTION_SHOW_BROWSER.equals(intent.getAction())) {
+            startActivity(context,
+                    new Intent(BrowserActivity.ACTION_SHOW_BROWSER,
+                    null, context, BrowserActivity.class));
+        } else {
+            Intent view = new Intent(intent);
+            view.setComponent(null);
+            startActivity(context, view);
+        }
+    }
+
+    void startActivity(Context context, Intent intent) {
+        try {
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            context.startActivity(intent);
+        } catch (Exception e) {
+            Log.w(TAG, "Failed to start intent activity", e);
+        }
+    }
+}
diff --git a/tests/src/com/android/browser/BrowserProviderTests.java b/tests/src/com/android/browser/BrowserProviderTests.java
index f4bf942..eb8ba80 100644
--- a/tests/src/com/android/browser/BrowserProviderTests.java
+++ b/tests/src/com/android/browser/BrowserProviderTests.java
@@ -16,11 +16,14 @@
 
 package com.android.browser;
 
+import com.android.browser.provider.BrowserProvider2;
+import com.android.browser.tests.utils.ProviderTestCase3;
+
 import android.app.SearchManager;
 import android.content.ContentValues;
 import android.database.Cursor;
 import android.net.Uri;
-import android.test.AndroidTestCase;
+import android.provider.BrowserContract;
 import android.test.suitebuilder.annotation.MediumTest;
 
 import java.util.ArrayList;
@@ -30,10 +33,15 @@
  * Unit tests for {@link BrowserProvider}.
  */
 @MediumTest
-public class BrowserProviderTests extends AndroidTestCase {
+public class BrowserProviderTests extends ProviderTestCase3<BrowserProvider2> {
 
     private ArrayList<Uri> mDeleteUris;
 
+    public BrowserProviderTests() {
+        super(BrowserProvider2.class,
+                BrowserContract.AUTHORITY, BrowserProvider2.LEGACY_AUTHORITY);
+    }
+
     @Override
     protected void setUp() throws Exception {
         mDeleteUris = new ArrayList<Uri>();
@@ -128,7 +136,7 @@
     private Cursor getBookmarksSuggest(String query) {
         Uri suggestUri = Uri.parse("content://browser/bookmarks/search_suggest_query");
         String[] selectionArgs = { query };
-        Cursor c = getContext().getContentResolver().query(suggestUri, null, "url LIKE ?",
+        Cursor c = getMockContentResolver().query(suggestUri, null, "url LIKE ?",
                 selectionArgs, null);
         assertNotNull(c);
         return c;
@@ -149,12 +157,12 @@
         values.put("date", 0);
         values.put("created", 0);
         values.put("bookmark", 1);
-        return getContext().getContentResolver().insert(android.provider.Browser.BOOKMARKS_URI,
+        return getMockContentResolver().insert(android.provider.Browser.BOOKMARKS_URI,
                 values);
     }
 
     private void deleteUri(Uri uri) {
-        int count = getContext().getContentResolver().delete(uri, null, null);
+        int count = getMockContentResolver().delete(uri, null, null);
         assertEquals("Failed to delete " + uri, 1, count);
     }
 
diff --git a/tests/src/com/android/browser/PopularUrlsTest.java b/tests/src/com/android/browser/PopularUrlsTest.java
index 5e367be..3e7515f 100644
--- a/tests/src/com/android/browser/PopularUrlsTest.java
+++ b/tests/src/com/android/browser/PopularUrlsTest.java
@@ -305,12 +305,14 @@
         private int page;
         private String url;
         private boolean isRecovery;
+        private boolean allClear;
 
         private RunStatus(File file) throws IOException {
             mFile = file;
             FileReader input = null;
             BufferedReader reader = null;
             isRecovery = false;
+            allClear = false;
             iteration = 0;
             page = 0;
             try {
@@ -369,7 +371,9 @@
         }
 
         public void cleanUp() {
-            if (mFile.exists()) {
+            // only perform cleanup when allClear flag is set
+            // i.e. when the test was not interrupted by a Java crash
+            if (mFile.exists() && allClear) {
                 mFile.delete();
             }
         }
@@ -380,6 +384,7 @@
 
         public void incrementPage() {
             ++page;
+            allClear = true;
         }
 
         public void incrementIteration() {
@@ -400,6 +405,7 @@
 
         public void setUrl(String url) {
             this.url = url;
+            allClear = false;
         }
     }
 
diff --git a/tests/src/com/android/browser/autocomplete/SuggestedTextControllerTest.java b/tests/src/com/android/browser/autocomplete/SuggestedTextControllerTest.java
new file mode 100644
index 0000000..f162e3b
--- /dev/null
+++ b/tests/src/com/android/browser/autocomplete/SuggestedTextControllerTest.java
@@ -0,0 +1,547 @@
+/*
+ * 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.autocomplete;
+
+import com.android.browser.autocomplete.SuggestedTextController.TextOwner;
+
+import android.graphics.Color;
+import android.os.Parcelable;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.text.Editable;
+import android.text.Selection;
+import android.text.Spannable;
+import android.text.SpannableStringBuilder;
+import android.text.TextWatcher;
+import android.view.AbsSavedState;
+
+/**
+ * Test cases for {@link SuggestedTextController}.
+ */
+@SmallTest
+public class SuggestedTextControllerTest extends AndroidTestCase {
+
+    // these two must have a common prefix (but not be identical):
+    private static final String RUBY_MURRAY = "ruby murray";
+    private static final String RUBY_TUESDAY = "ruby tuesday";
+    private static final String EXTRA_USER_TEXT = " curry";
+    // no common prefix with the top two above:
+    private static final String TOD_SLOAN = "tod sloan";
+
+    private SuggestedTextController mController;
+    private SpannableStringBuilder mString;
+
+    private SuggestedTextController m2ndController;
+    private SpannableStringBuilder m2ndString;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        mString = new SpannableStringBuilder();
+        Selection.setSelection(mString, 0); // position cursor
+        mController = new SuggestedTextController(new BufferTextOwner(mString), Color.GRAY);
+        checkInvariant();
+    }
+
+    private void create2ndController() {
+        m2ndString = new SpannableStringBuilder();
+        Selection.setSelection(m2ndString, 0); // position cursor
+        m2ndController = new SuggestedTextController(new BufferTextOwner(m2ndString), Color.GRAY);
+        check2ndInvariant();
+    }
+
+    private int cursorPos(Spannable string) {
+        int selStart = Selection.getSelectionStart(string);
+        int selEnd = Selection.getSelectionEnd(string);
+        assertEquals("Selection has non-zero length", selStart, selEnd);
+        return selEnd;
+    }
+
+    private int cursorPos() {
+        return cursorPos(mString);
+    }
+
+    private void insertAtCursor(String text) {
+        mString.insert(cursorPos(), text);
+        checkInvariant();
+    }
+
+    private void insertAtCursor(char ch) {
+        insertAtCursor(Character.toString(ch));
+    }
+
+    private void insertAt2ndCursor(String text) {
+        m2ndString.insert(cursorPos(m2ndString), text);
+        check2ndInvariant();
+    }
+
+    private void insertAt2ndCursor(char ch) {
+        insertAt2ndCursor(Character.toString(ch));
+    }
+
+    private void deleteBeforeCursor(int count) {
+        int pos = cursorPos();
+        count = Math.min(pos, count);
+        mString.delete(pos - count, pos);
+        checkInvariant();
+    }
+
+    private void replaceSelection(String withThis) {
+        mString.replace(Selection.getSelectionStart(mString),
+                Selection.getSelectionEnd(mString), withThis);
+        checkInvariant();
+    }
+
+    private void setSuggested(String suggested) {
+        mController.setSuggestedText(suggested);
+        checkInvariant();
+    }
+
+    private void set2ndSuggested(String suggested) {
+        m2ndController.setSuggestedText(suggested);
+        check2ndInvariant();
+    }
+
+    private void checkInvariant() {
+        mController.checkInvariant(mString);
+    }
+
+    private void check2ndInvariant() {
+        m2ndController.checkInvariant(m2ndString);
+    }
+
+    private void assertUserEntered(String expected, SuggestedTextController controller) {
+        assertEquals("User entered text not as expected", expected, controller.getUserText());
+    }
+
+    private void assertUserEntered(String expected) {
+        assertUserEntered(expected, mController);
+    }
+
+    private void assertBuffer(String expected, Editable string) {
+        assertEquals("Buffer contents not as expected", expected, string.toString());
+    }
+
+    private void assertBuffer(String expected) {
+        assertBuffer(expected, mString);
+    }
+
+    private void assertCursorPos(int where, Spannable string) {
+        assertEquals("Cursor not at expected position", where, cursorPos(string));
+    }
+
+    private void assertCursorPos(int where) {
+        assertCursorPos(where, mString);
+    }
+
+    private static final String commonPrefix(String a, String b) {
+        int pos = 0;
+        while (a.charAt(pos) == b.charAt(pos)) {
+            pos++;
+        }
+        assertTrue("No common prefix between '" + a + "' and '" + b + "'", pos > 0);
+        return a.substring(0, pos);
+    }
+
+    public void testTypeNoSuggested() {
+        for (int i = 0; i < RUBY_MURRAY.length(); ++i) {
+            assertCursorPos(i);
+            assertUserEntered(RUBY_MURRAY.substring(0, i));
+            assertBuffer(RUBY_MURRAY.substring(0, i));
+            insertAtCursor(RUBY_MURRAY.substring(i, i + 1));
+        }
+    }
+
+    public void testTypeSuggested() {
+        setSuggested(RUBY_MURRAY);
+        assertCursorPos(0);
+        assertBuffer(RUBY_MURRAY);
+        for (int i = 0; i < RUBY_MURRAY.length(); ++i) {
+            assertCursorPos(i);
+            assertUserEntered(RUBY_MURRAY.substring(0, i));
+            assertBuffer(RUBY_MURRAY);
+            insertAtCursor(RUBY_MURRAY.charAt(i));
+        }
+    }
+
+    public void testSetSuggestedAfterTextEntry() {
+        final int count = RUBY_MURRAY.length() / 2;
+        for (int i = 0; i < count; ++i) {
+            assertCursorPos(i);
+            assertUserEntered(RUBY_MURRAY.substring(0, i));
+            insertAtCursor(RUBY_MURRAY.substring(i, i + 1));
+        }
+        setSuggested(RUBY_MURRAY);
+        assertUserEntered(RUBY_MURRAY.substring(0, count));
+        assertBuffer(RUBY_MURRAY);
+    }
+
+    public void testTypeSuggestedUpperCase() {
+        setSuggested(RUBY_MURRAY);
+        assertCursorPos(0);
+        for (int i = 0; i < RUBY_MURRAY.length(); ++i) {
+            assertCursorPos(i);
+            assertUserEntered(RUBY_MURRAY.substring(0, i).toUpperCase());
+            assertTrue("Buffer doesn't contain suggested text",
+                    RUBY_MURRAY.equalsIgnoreCase(mString.toString()));
+            insertAtCursor(Character.toUpperCase(RUBY_MURRAY.charAt(i)));
+        }
+    }
+
+    public void testChangeSuggestedText() {
+        String pref = commonPrefix(RUBY_MURRAY, RUBY_TUESDAY);
+        setSuggested(RUBY_MURRAY);
+        insertAtCursor(pref);
+        assertBuffer(RUBY_MURRAY);
+        assertUserEntered(pref);
+        setSuggested(RUBY_TUESDAY);
+        assertBuffer(RUBY_TUESDAY);
+        assertUserEntered(pref);
+    }
+
+    public void testTypeNonSuggested() {
+        setSuggested(RUBY_MURRAY);
+        insertAtCursor(RUBY_MURRAY.charAt(0));
+        assertBuffer(RUBY_MURRAY);
+        insertAtCursor('x');
+        assertBuffer("rx");
+    }
+
+    public void testTypeNonSuggestedThenNewSuggestion() {
+        final String pref = commonPrefix(RUBY_MURRAY, RUBY_TUESDAY);
+        setSuggested(RUBY_MURRAY);
+        assertCursorPos(0);
+        insertAtCursor(pref);
+        assertCursorPos(pref.length());
+        assertUserEntered(pref);
+        insertAtCursor(RUBY_TUESDAY.charAt(pref.length()));
+        assertBuffer(RUBY_TUESDAY.substring(0, pref.length() + 1));
+        setSuggested(RUBY_TUESDAY);
+        assertBuffer(RUBY_TUESDAY);
+    }
+
+    public void testChangeSuggestedToNonUserEntered() {
+        final String half = RUBY_MURRAY.substring(0, RUBY_MURRAY.length() / 2);
+        setSuggested(RUBY_MURRAY);
+        insertAtCursor(half);
+        setSuggested(TOD_SLOAN);
+        assertUserEntered(half);
+        assertBuffer(half);
+    }
+
+    public void testChangeSuggestedToUserEntered() {
+        setSuggested(RUBY_MURRAY);
+        insertAtCursor(TOD_SLOAN);
+        setSuggested(TOD_SLOAN);
+        assertUserEntered(TOD_SLOAN);
+        assertBuffer(TOD_SLOAN);
+    }
+
+    public void testChangeSuggestedToEmpty() {
+        final String half = RUBY_MURRAY.substring(0, RUBY_MURRAY.length() / 2);
+        setSuggested(RUBY_MURRAY);
+        insertAtCursor(half);
+        setSuggested(null);
+        assertUserEntered(half);
+        assertBuffer(half);
+    }
+
+    public void testChangeSuggestedToEmptyFromUserEntered() {
+        setSuggested(RUBY_MURRAY);
+        insertAtCursor(RUBY_MURRAY);
+        setSuggested(null);
+        assertUserEntered(RUBY_MURRAY);
+        assertBuffer(RUBY_MURRAY);
+    }
+
+    public void typeNonSuggestedThenDelete() {
+        final String half = RUBY_MURRAY.substring(0, RUBY_MURRAY.length() / 2);
+        assertCursorPos(0);
+        insertAtCursor(half);
+        assertCursorPos(half.length());
+        setSuggested(RUBY_MURRAY);
+        insertAtCursor('x');
+        assertBuffer(half + "x");
+        deleteBeforeCursor(1);
+        assertUserEntered(half);
+        assertBuffer(RUBY_MURRAY);
+    }
+
+    public void testDeleteMultipleFromSuggested() {
+        final String twoThirds = RUBY_MURRAY.substring(0, (RUBY_MURRAY.length() * 2) / 3);
+        setSuggested(RUBY_MURRAY);
+        insertAtCursor(twoThirds);
+        assertCursorPos(twoThirds.length());
+        // select some of the text just entered:
+        Selection.setSelection(mString, RUBY_MURRAY.length() / 3, twoThirds.length());
+        // and delete it:
+        replaceSelection("");
+        assertCursorPos(RUBY_MURRAY.length() / 3);
+        assertUserEntered(RUBY_MURRAY.substring(0, RUBY_MURRAY.length() / 3));
+        assertBuffer(RUBY_MURRAY);
+    }
+
+    public void testDeleteMultipleToFormSuggested() {
+        final String pref = commonPrefix(RUBY_TUESDAY, RUBY_MURRAY);
+        final int extra = (RUBY_TUESDAY.length() - pref.length()) / 2;
+        setSuggested(RUBY_MURRAY);
+        insertAtCursor(RUBY_TUESDAY.substring(0, pref.length() + extra));
+        assertCursorPos(pref.length() + extra);
+        // select and delete extra characters, leaving just prefix
+        Selection.setSelection(mString, pref.length(), pref.length() + extra);
+        replaceSelection("");
+        assertCursorPos(pref.length());
+        assertBuffer(RUBY_MURRAY);
+        assertUserEntered(pref);
+    }
+
+    public void testBackspaceWithinUserTextFromSuggested() {
+        StringBuffer half = new StringBuffer(RUBY_MURRAY.substring(0, RUBY_MURRAY.length() / 2));
+        insertAtCursor(half.toString());
+        int backSpaceFrom = half.length() / 2;
+        Selection.setSelection(mString, backSpaceFrom);
+        deleteBeforeCursor(1);
+        assertCursorPos(backSpaceFrom - 1);
+        half.delete(backSpaceFrom - 1, backSpaceFrom);
+        assertUserEntered(half.toString());
+        assertBuffer(half.toString());
+    }
+
+    public void testInsertWithinUserTextToFormSuggested() {
+        final String half = RUBY_MURRAY.substring(0, RUBY_MURRAY.length() / 2);
+        StringBuffer initial = new StringBuffer(half);
+        int pos = initial.length() / 2;
+        char toInsert = initial.charAt(pos);
+        initial.delete(pos, pos + 1);
+        insertAtCursor(initial.toString());
+        setSuggested(RUBY_MURRAY);
+        assertUserEntered(initial.toString());
+        assertBuffer(initial.toString());
+        Selection.setSelection(mString, pos);
+        insertAtCursor(toInsert);
+        assertCursorPos(pos + 1);
+        assertUserEntered(half);
+        assertBuffer(RUBY_MURRAY);
+    }
+
+    public void testEnterTextBeyondSuggested() {
+        setSuggested(RUBY_MURRAY);
+        int i = RUBY_MURRAY.length() / 2;
+        insertAtCursor(RUBY_MURRAY.substring(0, i));
+        String query = RUBY_MURRAY + EXTRA_USER_TEXT;
+        for (; i < query.length(); ++i) {
+            assertUserEntered(query.substring(0, i));
+            if (i <= RUBY_MURRAY.length()) {
+                assertBuffer(RUBY_MURRAY);
+            }
+            insertAtCursor(query.charAt(i));
+        }
+        assertUserEntered(query);
+    }
+
+    public void testDeleteFromLongerThanSuggested() {
+        setSuggested(RUBY_MURRAY);
+        final String entered = RUBY_MURRAY + EXTRA_USER_TEXT;
+        insertAtCursor(entered);
+        for (int i = entered.length(); i > (RUBY_MURRAY.length() / 2); --i) {
+            assertCursorPos(i);
+            assertUserEntered(entered.substring(0, i));
+            if (i <= RUBY_MURRAY.length()) {
+                assertBuffer(RUBY_MURRAY);
+            }
+            deleteBeforeCursor(1);
+        }
+    }
+
+    public void testReplaceWithShorterToFormSuggested() {
+        final String pref = commonPrefix(RUBY_TUESDAY, RUBY_MURRAY);
+        final int extra = (RUBY_TUESDAY.length() - pref.length()) / 2;
+        setSuggested(RUBY_MURRAY);
+        insertAtCursor(RUBY_TUESDAY.substring(0, pref.length() + extra));
+        assertCursorPos(pref.length() + extra);
+        // select and replace extra characters, to match suggested
+        Selection.setSelection(mString, pref.length(), pref.length() + extra);
+        replaceSelection(RUBY_MURRAY.substring(pref.length(), pref.length() + extra - 1));
+        assertBuffer(RUBY_MURRAY);
+        assertUserEntered(RUBY_MURRAY.substring(0, pref.length() + extra - 1));
+    }
+
+    public void testReplaceWithSameLengthToFormSuggested() {
+        final String pref = commonPrefix(RUBY_TUESDAY, RUBY_MURRAY);
+        final int extra = (RUBY_TUESDAY.length() - pref.length()) / 2;
+        setSuggested(RUBY_MURRAY);
+        insertAtCursor(RUBY_TUESDAY.substring(0, pref.length() + extra));
+        assertCursorPos(pref.length() + extra);
+        // select and replace extra characters, to match suggested
+        Selection.setSelection(mString, pref.length(), pref.length() + extra);
+        replaceSelection(RUBY_MURRAY.substring(pref.length(), pref.length() + extra));
+        assertBuffer(RUBY_MURRAY);
+        assertUserEntered(RUBY_MURRAY.substring(0, pref.length() + extra));
+    }
+
+    public void testReplaceWithLongerToFormSuggested() {
+        final String pref = commonPrefix(RUBY_TUESDAY, RUBY_MURRAY);
+        final int extra = (RUBY_TUESDAY.length() - pref.length()) / 2;
+        setSuggested(RUBY_MURRAY);
+        insertAtCursor(RUBY_TUESDAY.substring(0, pref.length() + extra));
+        assertCursorPos(pref.length() + extra);
+        // select and replace extra characters, to match suggested
+        Selection.setSelection(mString, pref.length(), pref.length() + extra);
+        replaceSelection(RUBY_MURRAY.substring(pref.length(), pref.length() + extra + 1));
+        assertBuffer(RUBY_MURRAY);
+        assertUserEntered(RUBY_MURRAY.substring(0, pref.length() + extra + 1));
+    }
+
+    public void testMoveCursorIntoSuggested() {
+        final String half = RUBY_MURRAY.substring(0, RUBY_MURRAY.length() / 2);
+        insertAtCursor(half);
+        setSuggested(RUBY_MURRAY);
+        assertCursorPos(half.length());
+        Selection.setSelection(mString, half.length() + 1);
+        checkInvariant();
+        assertUserEntered(RUBY_MURRAY);
+    }
+
+    public void testMoveCursorWithinUserEntered() {
+        final String half = RUBY_MURRAY.substring(0, RUBY_MURRAY.length() / 2);
+        insertAtCursor(half);
+        setSuggested(RUBY_MURRAY);
+        assertCursorPos(half.length());
+        Selection.setSelection(mString, half.length() - 1);
+        checkInvariant();
+        assertUserEntered(half);
+    }
+
+    public void testSelectWithinSuggested() {
+        final String half = RUBY_MURRAY.substring(0, RUBY_MURRAY.length() / 2);
+        insertAtCursor(half);
+        setSuggested(RUBY_MURRAY);
+        assertCursorPos(half.length());
+        Selection.setSelection(mString, half.length() + 1, half.length() + 2);
+        checkInvariant();
+        assertUserEntered(RUBY_MURRAY);
+    }
+
+    public void testSelectStraddlingSuggested() {
+        final String half = RUBY_MURRAY.substring(0, RUBY_MURRAY.length() / 2);
+        insertAtCursor(half);
+        setSuggested(RUBY_MURRAY);
+        assertCursorPos(half.length());
+        Selection.setSelection(mString, half.length() - 1, half.length() + 1);
+        checkInvariant();
+        assertUserEntered(RUBY_MURRAY);
+    }
+
+    public void testSaveAndRestoreNoText() {
+        create2ndController();
+        Parcelable state = mController.saveInstanceState(AbsSavedState.EMPTY_STATE);
+        m2ndController.restoreInstanceState(state);
+        check2ndInvariant();
+        assertBuffer("", m2ndString);
+    }
+
+    public void testSaveAndRestoreWithSuggestedText() {
+        create2ndController();
+        setSuggested(TOD_SLOAN);
+        Parcelable state = mController.saveInstanceState(AbsSavedState.EMPTY_STATE);
+        m2ndController.restoreInstanceState(state);
+        check2ndInvariant();
+        assertBuffer(TOD_SLOAN, m2ndString);
+        assertUserEntered("", m2ndController);
+    }
+
+    public void testSaveAndRestoreWithUserEnteredAndSuggestedText() {
+        final String half = TOD_SLOAN.substring(0, TOD_SLOAN.length() / 2);
+        create2ndController();
+        setSuggested(TOD_SLOAN);
+        insertAtCursor(half);
+        Parcelable state = mController.saveInstanceState(AbsSavedState.EMPTY_STATE);
+        m2ndController.restoreInstanceState(state);
+        check2ndInvariant();
+        assertBuffer(TOD_SLOAN, m2ndString);
+        assertUserEntered(half, m2ndController);
+        assertCursorPos(half.length(), m2ndString);
+    }
+
+    public void testSaveAndRestoreWithNonSuggested() {
+        final String half = TOD_SLOAN.substring(0, TOD_SLOAN.length() / 2);
+        create2ndController();
+        setSuggested(RUBY_MURRAY);
+        insertAtCursor(half);
+        Parcelable state = mController.saveInstanceState(AbsSavedState.EMPTY_STATE);
+        m2ndController.restoreInstanceState(state);
+        check2ndInvariant();
+        assertBuffer(half, m2ndString);
+        assertUserEntered(half, m2ndController);
+        assertCursorPos(half.length(), m2ndString);
+    }
+
+    public void testSaveAndRestoreThenTypeSuggested() {
+        final String half = TOD_SLOAN.substring(0, TOD_SLOAN.length() / 2);
+        create2ndController();
+        set2ndSuggested(TOD_SLOAN);
+        insertAt2ndCursor(half);
+        insertAt2ndCursor('x');
+        Parcelable state = m2ndController.saveInstanceState(AbsSavedState.EMPTY_STATE);
+        mController.restoreInstanceState(state);
+        assertCursorPos(half.length() + 1);
+        // delete the x
+        deleteBeforeCursor(1);
+        assertCursorPos(half.length());
+        assertBuffer(TOD_SLOAN);
+        assertUserEntered(half);
+    }
+
+    public void testSuspendAndResumeCursorProcessing() {
+        final String half = TOD_SLOAN.substring(0, TOD_SLOAN.length() / 2);
+        setSuggested(TOD_SLOAN);
+        insertAtCursor(half);
+        mController.suspendCursorMovementHandling();
+        Selection.setSelection(mString, TOD_SLOAN.length());
+        Selection.setSelection(mString, half.length());
+        mController.resumeCursorMovementHandlingAndApplyChanges();
+        assertCursorPos(half.length());
+        assertUserEntered(half);
+        assertBuffer(TOD_SLOAN);
+    }
+
+    private static class BufferTextOwner implements TextOwner {
+
+        private final Editable mBuffer;
+
+        public BufferTextOwner(Editable buffer) {
+            mBuffer = buffer;
+        }
+
+        public void addTextChangedListener(TextWatcher watcher) {
+            mBuffer.setSpan(watcher , 0, mBuffer.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
+        }
+
+        public void removeTextChangedListener(TextWatcher watcher) {
+            mBuffer.removeSpan(watcher);
+        }
+
+        public Editable getText() {
+            return mBuffer;
+        }
+
+        public void setText(String text) {
+            mBuffer.replace(0, mBuffer.length(), text);
+        }
+
+    }
+
+}
diff --git a/tests/src/com/android/browser/tests/BP2ProviderTests.java b/tests/src/com/android/browser/tests/BP2ProviderTests.java
new file mode 100644
index 0000000..6c3c71e
--- /dev/null
+++ b/tests/src/com/android/browser/tests/BP2ProviderTests.java
@@ -0,0 +1,104 @@
+/*
+ * 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.tests;
+
+import com.android.browser.tests.utils.BP2TestCaseHelper;
+
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.Bitmap.Config;
+import android.net.Uri;
+import android.provider.BrowserContract;
+import android.provider.BrowserContract.Images;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import java.io.ByteArrayOutputStream;
+
+@SmallTest
+public class BP2ProviderTests extends BP2TestCaseHelper {
+
+    public void testUpdateImage() {
+        String url = "http://stub1.com";
+        insertBookmark(url, "stub 1");
+        ContentValues values = new ContentValues();
+        values.put(Images.URL, url);
+        Bitmap bitmap = Bitmap.createBitmap(1, 1, Config.ARGB_8888);
+        ByteArrayOutputStream os = new ByteArrayOutputStream();
+        bitmap.compress(Bitmap.CompressFormat.PNG, 100, os);
+        values.put(Images.THUMBNAIL, os.toByteArray());
+        // Use updateBookmarks because the bookmarks URI observer should
+        // be triggered, even though we aren't giving it a bookmarks URI
+        assertTrue(updateBookmark(Images.CONTENT_URI, values));
+    }
+
+    public void testIsValidParentNullAccount() {
+        doTestIsValidParent(null, null);
+    }
+
+    public void testIsValidParentWithAccount() {
+        doTestIsValidParent("test@gmail.com", "com.google");
+    }
+
+    private void doTestIsValidParent(String accountName, String accountType) {
+        ContentValues values = new ContentValues();
+        values.put(BrowserContract.Bookmarks.TITLE, "New Folder");
+        values.put(BrowserContract.Bookmarks.IS_FOLDER, 1);
+        values.put(BrowserContract.Bookmarks.ACCOUNT_NAME, accountName);
+        values.put(BrowserContract.Bookmarks.ACCOUNT_TYPE, accountType);
+        Uri folderUri = insertBookmark(values);
+        assertNotNull(folderUri);
+        long folderId = ContentUris.parseId(folderUri);
+        assertTrue("Failed to parse folder id!", folderId > 0);
+        values.put(BrowserContract.Bookmarks.TITLE, "google");
+        values.put(BrowserContract.Bookmarks.URL, "http://google.com");
+        values.put(BrowserContract.Bookmarks.IS_FOLDER, 0);
+        values.put(BrowserContract.Bookmarks.PARENT, folderId);
+        Uri insertedUri = insertBookmark(values);
+        assertNotNull(insertedUri);
+        Cursor c = getMockContentResolver().query(insertedUri,
+                new String[] { BrowserContract.Bookmarks.PARENT },
+                null, null, null);
+        try {
+            assertNotNull(c);
+            assertTrue(c.moveToFirst());
+            long insertedParentId = c.getLong(0);
+            assertEquals(folderId, insertedParentId);
+            if (accountName == null) {
+                values.put(BrowserContract.Bookmarks.ACCOUNT_NAME, "test2@gmail.com");
+                values.put(BrowserContract.Bookmarks.ACCOUNT_TYPE, "com.google");
+            } else {
+                values.remove(BrowserContract.Bookmarks.ACCOUNT_NAME);
+                values.remove(BrowserContract.Bookmarks.ACCOUNT_TYPE);
+            }
+            insertedUri = insertBookmark(values);
+            assertNotNull(insertedUri);
+            c.close();
+            c = getMockContentResolver().query(insertedUri,
+                    new String[] { BrowserContract.Bookmarks.PARENT },
+                    null, null, null);
+            assertNotNull(c);
+            assertTrue(c.moveToFirst());
+            insertedParentId = c.getLong(0);
+            assertFalse("child has different accounts than parent!",
+                    folderId == insertedParentId);
+        } finally {
+            c.close();
+        }
+    }
+}
diff --git a/tests/src/com/android/browser/tests/BP2UriObserverTests.java b/tests/src/com/android/browser/tests/BP2UriObserverTests.java
new file mode 100644
index 0000000..2e84814
--- /dev/null
+++ b/tests/src/com/android/browser/tests/BP2UriObserverTests.java
@@ -0,0 +1,105 @@
+/*
+ * 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.tests;
+
+import com.android.browser.tests.utils.BP2TestCaseHelper;
+
+import android.content.ContentValues;
+import android.graphics.Bitmap;
+import android.graphics.Bitmap.Config;
+import android.net.Uri;
+import android.provider.BrowserContract.Bookmarks;
+import android.provider.BrowserContract.History;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import java.io.ByteArrayOutputStream;
+
+@SmallTest
+public class BP2UriObserverTests extends BP2TestCaseHelper {
+
+    public void testInsertBookmark() {
+        Uri insertedUri = insertBookmark("http://stub1.com", "Stub1");
+        TriggeredObserver stubObs = new TriggeredObserver(insertedUri);
+        assertObserversTriggered(false, stubObs);
+        insertBookmark("http://stub2.com", "Stub2");
+        perfIdeallyUntriggered(stubObs);
+    }
+
+    public void testUpdateBookmark() {
+        Uri toUpdate = insertBookmark("http://stub1.com", "Stub1");
+        Uri unchanged = insertBookmark("http://stub2.com", "Stub2");
+        TriggeredObserver updateObs = new TriggeredObserver(toUpdate);
+        TriggeredObserver unchangedObs = new TriggeredObserver(unchanged);
+        assertObserversTriggered(false, updateObs, unchangedObs);
+        assertTrue(updateBookmark(toUpdate, "http://stub1.com", "Stub1: Revenge of the stubs"));
+        assertTrue("Update observer not notified!", updateObs.checkTriggered());
+        perfIdeallyUntriggered(unchangedObs);
+    }
+
+    public void testUpdateBookmarkImages() {
+        Uri toUpdate = insertBookmark("http://stub1.com", "Stub1");
+        Uri unchanged = insertBookmark("http://stub2.com", "Stub2");
+        Bitmap favicon = Bitmap.createBitmap(16, 16, Config.ARGB_8888);
+        ByteArrayOutputStream os = new ByteArrayOutputStream();
+        favicon.compress(Bitmap.CompressFormat.PNG, 100, os);
+        byte[] rawFavicon = os.toByteArray();
+        ContentValues values = new ContentValues();
+        values.put(Bookmarks.FAVICON, rawFavicon);
+        values.put(Bookmarks.TITLE, "Stub1");
+        TriggeredObserver updateObs = new TriggeredObserver(toUpdate);
+        TriggeredObserver unchangedObs = new TriggeredObserver(unchanged);
+        assertTrue(updateBookmark(toUpdate, values));
+        assertTrue("Update observer not notified!", updateObs.checkTriggered());
+        perfIdeallyUntriggered(unchangedObs);
+    }
+
+    public void testInsertHistory() {
+        Uri insertedUri = insertHistory("http://stub1.com", "Stub1");
+        TriggeredObserver stubObs = new TriggeredObserver(insertedUri);
+        assertObserversTriggered(false, stubObs);
+        insertHistory("http://stub2.com", "Stub2");
+        perfIdeallyUntriggered(stubObs);
+    }
+
+    public void testUpdateHistory() {
+        Uri toUpdate = insertHistory("http://stub1.com", "Stub1");
+        Uri unchanged = insertHistory("http://stub2.com", "Stub2");
+        TriggeredObserver updateObs = new TriggeredObserver(toUpdate);
+        TriggeredObserver unchangedObs = new TriggeredObserver(unchanged);
+        assertObserversTriggered(false, updateObs, unchangedObs);
+        assertTrue(updateHistory(toUpdate, "http://stub1.com", "Stub1: Revenge of the stubs"));
+        assertTrue("Update observer not notified!", updateObs.checkTriggered());
+        perfIdeallyUntriggered(unchangedObs);
+    }
+
+    public void testUpdateHistoryImages() {
+        Uri toUpdate = insertHistory("http://stub1.com", "Stub1");
+        Uri unchanged = insertHistory("http://stub2.com", "Stub2");
+        Bitmap favicon = Bitmap.createBitmap(16, 16, Config.ARGB_8888);
+        ByteArrayOutputStream os = new ByteArrayOutputStream();
+        favicon.compress(Bitmap.CompressFormat.PNG, 100, os);
+        byte[] rawFavicon = os.toByteArray();
+        ContentValues values = new ContentValues();
+        values.put(History.FAVICON, rawFavicon);
+        values.put(History.TITLE, "Stub1");
+        TriggeredObserver updateObs = new TriggeredObserver(toUpdate);
+        TriggeredObserver unchangedObs = new TriggeredObserver(unchanged);
+        assertTrue(updateHistory(toUpdate, values));
+        assertTrue("Update observer not notified!", updateObs.checkTriggered());
+        perfIdeallyUntriggered(unchangedObs);
+    }
+}
diff --git a/tests/src/com/android/browser/tests/BookmarksTests.java b/tests/src/com/android/browser/tests/BookmarksTests.java
new file mode 100644
index 0000000..bd1a1b2
--- /dev/null
+++ b/tests/src/com/android/browser/tests/BookmarksTests.java
@@ -0,0 +1,64 @@
+/*
+ * 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.tests;
+
+import com.android.browser.Bookmarks;
+import com.android.browser.tests.utils.BP2TestCaseHelper;
+
+import android.content.ContentResolver;
+import android.database.Cursor;
+import android.test.suitebuilder.annotation.SmallTest;
+
+/**
+ * Extends from BP2TestCaseHelper for the helper methods
+ * and to get the mock database
+ */
+@SmallTest
+public class BookmarksTests extends BP2TestCaseHelper {
+
+    public void testQueryCombinedForUrl() {
+        // First, add some bookmarks
+        assertNotNull(insertBookmark(
+                "http://google.com/search?q=test", "Test search"));
+        assertNotNull(insertBookmark(
+                "http://google.com/search?q=mustang", "Mustang search"));
+        assertNotNull(insertBookmark(
+                "http://google.com/search?q=aliens", "Aliens search"));
+        ContentResolver cr = getMockContentResolver();
+
+        Cursor c = null;
+        try {
+            // First, search for a match
+            String url = "http://google.com/search?q=test";
+            c = Bookmarks.queryCombinedForUrl(cr, null, url);
+            assertEquals(1, c.getCount());
+            assertTrue(c.moveToFirst());
+            assertEquals(url, c.getString(0));
+            c.close();
+
+            // Next, search for no match
+            url = "http://google.com/search";
+            c = Bookmarks.queryCombinedForUrl(cr, null, url);
+            assertEquals(0, c.getCount());
+            assertFalse(c.moveToFirst());
+            c.close();
+        } finally {
+            if (c != null) c.close();
+        }
+    }
+
+}
diff --git a/tests/src/com/android/browser/tests/utils/BP2TestCaseHelper.java b/tests/src/com/android/browser/tests/utils/BP2TestCaseHelper.java
new file mode 100644
index 0000000..18c1c10
--- /dev/null
+++ b/tests/src/com/android/browser/tests/utils/BP2TestCaseHelper.java
@@ -0,0 +1,211 @@
+/*
+ * 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.tests.utils;
+
+import com.android.browser.provider.BrowserProvider2;
+
+import android.content.ContentValues;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.provider.Browser;
+import android.provider.BrowserContract;
+import android.provider.BrowserContract.Bookmarks;
+import android.provider.BrowserContract.History;
+import android.util.Log;
+
+/**
+ *  This is a replacement for ProviderTestCase2 that can handle notifyChange testing.
+ *  It also has helper methods specifically for testing BrowserProvider2
+ */
+public abstract class BP2TestCaseHelper extends ProviderTestCase3<BrowserProvider2> {
+
+    // Tag for potential performance impacts
+    private static final String PERFTAG = "BP2-PerfCheck";
+
+    private TriggeredObserver mLegacyObserver;
+    private TriggeredObserver mRootObserver;
+    private TriggeredObserver mBookmarksObserver;
+    private TriggeredObserver mHistoryObserver;
+    private TriggeredObserver mWidgetObserver;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mLegacyObserver = new TriggeredObserver(Browser.BOOKMARKS_URI);
+        mRootObserver = new TriggeredObserver(BrowserContract.AUTHORITY_URI);
+        mBookmarksObserver = new TriggeredObserver(Bookmarks.CONTENT_URI);
+        mHistoryObserver = new TriggeredObserver(History.CONTENT_URI);
+        mWidgetObserver = new TriggeredObserver();
+        // We don't need to worry about setting this back to null since this
+        // is a private instance local to the MockContentResolver
+        getProvider().setWidgetObserver(mWidgetObserver);
+    }
+
+    public BP2TestCaseHelper() {
+        super(BrowserProvider2.class,
+                BrowserContract.AUTHORITY, BrowserProvider2.LEGACY_AUTHORITY);
+    }
+
+    public void perfIdeallyUntriggered(TriggeredObserver... obs) {
+        for (TriggeredObserver ob : obs) {
+            if (ob.checkTriggered()) {
+                // Not ideal, unnecessary notification
+                Log.i(PERFTAG, ob.mUri + " onChange called but content unaltered!");
+            }
+        }
+    }
+
+    public void assertObserversTriggered(boolean triggered,
+            TriggeredObserver... observers) {
+        for (TriggeredObserver obs : observers) {
+            assertEquals(obs.mUri + ", descendents:" + obs.mNotifyForDescendents,
+                    triggered, obs.checkTriggered());
+        }
+    }
+
+    public class TriggeredObserver extends ContentObserver {
+        private boolean mTriggered;
+        Uri mUri;
+        boolean mNotifyForDescendents;
+
+        /**
+         * Creates an unmanaged TriggeredObserver
+         */
+        public TriggeredObserver() {
+            super(null);
+        }
+
+        /**
+         * Same as TriggeredObserver(uri, true);
+         */
+        public TriggeredObserver(Uri uri) {
+            this(uri, true);
+        }
+
+        /**
+         * Creates a managed TriggeredObserver that self-registers with the
+         * mock ContentResolver
+         */
+        public TriggeredObserver(Uri uri, boolean notifyForDescendents) {
+            super(null);
+            mUri = uri;
+            mNotifyForDescendents = notifyForDescendents;
+            registerContentObserver(uri, notifyForDescendents, this);
+        }
+
+        @Override
+        public void onChange(boolean selfChange) {
+            super.onChange(selfChange);
+            mTriggered = true;
+        }
+
+        public boolean checkTriggered() {
+            boolean ret = mTriggered;
+            mTriggered = false;
+            return ret;
+        }
+    }
+
+    Uri mockInsert(Uri uri, ContentValues values) {
+        assertObserversTriggered(false, mLegacyObserver, mRootObserver);
+        Uri ret = getMockContentResolver().insert(uri, values);
+        assertObserversTriggered(true, mLegacyObserver, mRootObserver);
+        return ret;
+    }
+
+    int mockUpdate(Uri uri, ContentValues values, String where,
+            String[] selectionArgs) {
+        assertObserversTriggered(false, mLegacyObserver, mRootObserver);
+        int ret = getMockContentResolver().update(uri, values, where, selectionArgs);
+        if (ret > 0) {
+            assertObserversTriggered(true, mLegacyObserver, mRootObserver);
+        } else {
+            perfIdeallyUntriggered(mLegacyObserver);
+            perfIdeallyUntriggered(mRootObserver);
+        }
+        return ret;
+    }
+
+    public Uri insertBookmark(String url, String title) {
+        ContentValues values = new ContentValues();
+        values.put(BrowserContract.Bookmarks.TITLE, title);
+        values.put(BrowserContract.Bookmarks.URL, url);
+        values.put(BrowserContract.Bookmarks.IS_FOLDER, 0);
+        return insertBookmark(values);
+    }
+
+    public Uri insertBookmark(ContentValues values) {
+        assertObserversTriggered(false, mBookmarksObserver, mWidgetObserver);
+        Uri ret = mockInsert(Bookmarks.CONTENT_URI, values);
+        assertObserversTriggered(true, mBookmarksObserver, mWidgetObserver);
+        perfIdeallyUntriggered(mHistoryObserver);
+        return ret;
+    }
+
+    public boolean updateBookmark(Uri uri, String url, String title) {
+        ContentValues values = new ContentValues();
+        values.put(BrowserContract.Bookmarks.TITLE, title);
+        values.put(BrowserContract.Bookmarks.URL, url);
+        return updateBookmark(uri, values);
+    }
+
+    public boolean updateBookmark(Uri uri, ContentValues values) {
+        assertObserversTriggered(false, mBookmarksObserver, mWidgetObserver);
+        int modifyCount = mockUpdate(uri, values, null, null);
+        assertTrue("UpdatedBookmark modified too much! " + uri, modifyCount <= 1);
+        boolean updated = modifyCount == 1;
+        if (updated) {
+            assertObserversTriggered(updated, mBookmarksObserver, mWidgetObserver);
+        } else {
+            perfIdeallyUntriggered(mBookmarksObserver, mWidgetObserver);
+        }
+        perfIdeallyUntriggered(mHistoryObserver);
+        return updated;
+    }
+
+    public Uri insertHistory(String url, String title) {
+        ContentValues values = new ContentValues();
+        values.put(BrowserContract.History.TITLE, title);
+        values.put(BrowserContract.History.URL, url);
+        assertObserversTriggered(false, mHistoryObserver);
+        Uri ret = mockInsert(History.CONTENT_URI, values);
+        assertObserversTriggered(true, mHistoryObserver);
+        perfIdeallyUntriggered(mBookmarksObserver, mWidgetObserver);
+        return ret;
+    }
+
+    public boolean updateHistory(Uri uri, String url, String title) {
+        ContentValues values = new ContentValues();
+        values.put(BrowserContract.History.TITLE, title);
+        values.put(BrowserContract.History.URL, url);
+        return updateHistory(uri, values);
+    }
+
+    public boolean updateHistory(Uri uri, ContentValues values) {
+        assertObserversTriggered(false, mHistoryObserver);
+        int modifyCount = mockUpdate(uri, values, null, null);
+        assertTrue("UpdatedHistory modified too much! " + uri, modifyCount <= 1);
+        boolean updated = modifyCount == 1;
+        if (updated) {
+            assertObserversTriggered(updated, mHistoryObserver);
+        } else {
+            perfIdeallyUntriggered(mHistoryObserver);
+        }
+        perfIdeallyUntriggered(mBookmarksObserver, mWidgetObserver);
+        return updated;
+    }
+}
diff --git a/tests/src/com/android/browser/tests/utils/MockContentResolver2.java b/tests/src/com/android/browser/tests/utils/MockContentResolver2.java
new file mode 100644
index 0000000..20f5521
--- /dev/null
+++ b/tests/src/com/android/browser/tests/utils/MockContentResolver2.java
@@ -0,0 +1,102 @@
+/*
+ * 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.tests.utils;
+
+import com.google.android.collect.Maps;
+
+import android.content.ContentProvider;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.IContentProvider;
+import android.database.ContentObserver;
+import android.net.Uri;
+
+import java.util.Map;
+
+public class MockContentResolver2 extends ContentResolver {
+
+    Map<String, ContentProvider> mProviders;
+    private final MockObserverNode mRootNode = new MockObserverNode("");
+
+    /*
+     * Creates a local map of providers. This map is used instead of the global map when an
+     * API call tries to acquire a provider.
+     */
+    public MockContentResolver2() {
+        super(null);
+        mProviders = Maps.newHashMap();
+    }
+
+    /**
+     * Adds access to a provider based on its authority
+     *
+     * @param name The authority name associated with the provider.
+     * @param provider An instance of {@link android.content.ContentProvider} or one of its
+     * subclasses, or null.
+     */
+    public void addProvider(String name, ContentProvider provider) {
+
+        /*
+         * Maps the authority to the provider locally.
+         */
+        mProviders.put(name, provider);
+    }
+
+    /** @hide */
+    @Override
+    protected IContentProvider acquireProvider(Context context, String name) {
+        return acquireExistingProvider(context, name);
+    }
+
+    /** @hide */
+    @Override
+    protected IContentProvider acquireExistingProvider(Context context, String name) {
+
+        /*
+         * Gets the content provider from the local map
+         */
+        final ContentProvider provider = mProviders.get(name);
+
+        if (provider != null) {
+            return provider.getIContentProvider();
+        } else {
+            return null;
+        }
+    }
+
+    /** @hide */
+    @Override
+    public boolean releaseProvider(IContentProvider provider) {
+        return true;
+    }
+
+    @Override
+    public void notifyChange(Uri uri, ContentObserver observer,
+            boolean syncToNetwork) {
+        mRootNode.notifyMyObservers(uri, 0, observer, false);
+    }
+
+    public void safeRegisterContentObserver(Uri uri, boolean notifyForDescendents,
+            ContentObserver observer) {
+        mRootNode.addObserver(uri, observer, notifyForDescendents);
+    }
+
+    public void safeUnregisterContentObserver(ContentObserver observer) {
+        mRootNode.removeObserver(observer);
+    }
+
+}
diff --git a/tests/src/com/android/browser/tests/utils/MockObserverNode.java b/tests/src/com/android/browser/tests/utils/MockObserverNode.java
new file mode 100644
index 0000000..edcffd4
--- /dev/null
+++ b/tests/src/com/android/browser/tests/utils/MockObserverNode.java
@@ -0,0 +1,169 @@
+/*
+ * 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.tests.utils;
+
+import android.database.ContentObserver;
+import android.net.Uri;
+
+import java.util.ArrayList;
+
+public final class MockObserverNode {
+    private class MockObserverEntry {
+        public final ContentObserver observer;
+        public final boolean notifyForDescendents;
+
+        public MockObserverEntry(ContentObserver o, boolean n) {
+            observer = o;
+            notifyForDescendents = n;
+        }
+    }
+
+    public static final int INSERT_TYPE = 0;
+    public static final int UPDATE_TYPE = 1;
+    public static final int DELETE_TYPE = 2;
+
+    private String mName;
+    private ArrayList<MockObserverNode> mChildren = new ArrayList<MockObserverNode>();
+    private ArrayList<MockObserverEntry> mObservers = new ArrayList<MockObserverEntry>();
+
+    public MockObserverNode(String name) {
+        mName = name;
+    }
+
+    private String getUriSegment(Uri uri, int index) {
+        if (uri != null) {
+            if (index == 0) {
+                return uri.getAuthority();
+            } else {
+                return uri.getPathSegments().get(index - 1);
+            }
+        } else {
+            return null;
+        }
+    }
+
+    private int countUriSegments(Uri uri) {
+        if (uri == null) {
+            return 0;
+        }
+        return uri.getPathSegments().size() + 1;
+    }
+
+    public void addObserver(Uri uri, ContentObserver observer,
+            boolean notifyForDescendents) {
+        addObserver(uri, 0, observer, notifyForDescendents);
+    }
+
+    private void addObserver(Uri uri, int index, ContentObserver observer,
+            boolean notifyForDescendents) {
+        // If this is the leaf node add the observer
+        if (index == countUriSegments(uri)) {
+            mObservers.add(new MockObserverEntry(observer, notifyForDescendents));
+            return;
+        }
+
+        // Look to see if the proper child already exists
+        String segment = getUriSegment(uri, index);
+        if (segment == null) {
+            throw new IllegalArgumentException("Invalid Uri (" + uri + ") used for observer");
+        }
+        int N = mChildren.size();
+        for (int i = 0; i < N; i++) {
+            MockObserverNode node = mChildren.get(i);
+            if (node.mName.equals(segment)) {
+                node.addObserver(uri, index + 1, observer, notifyForDescendents);
+                return;
+            }
+        }
+
+        // No child found, create one
+        MockObserverNode node = new MockObserverNode(segment);
+        mChildren.add(node);
+        node.addObserver(uri, index + 1, observer, notifyForDescendents);
+    }
+
+    public boolean removeObserver(ContentObserver observer) {
+        int size = mChildren.size();
+        for (int i = 0; i < size; i++) {
+            boolean empty = mChildren.get(i).removeObserver(observer);
+            if (empty) {
+                mChildren.remove(i);
+                i--;
+                size--;
+            }
+        }
+
+        size = mObservers.size();
+        for (int i = 0; i < size; i++) {
+            MockObserverEntry entry = mObservers.get(i);
+            if (entry.observer == observer) {
+                mObservers.remove(i);
+                break;
+            }
+        }
+
+        if (mChildren.size() == 0 && mObservers.size() == 0) {
+            return true;
+        }
+        return false;
+    }
+
+    private void notifyMyObservers(boolean leaf, ContentObserver observer,
+            boolean selfNotify) {
+        int N = mObservers.size();
+        for (int i = 0; i < N; i++) {
+            MockObserverEntry entry = mObservers.get(i);
+
+            // Don't notify the observer if it sent the notification and isn't interesed
+            // in self notifications
+            if (entry.observer == observer && !selfNotify) {
+                continue;
+            }
+
+            // Make sure the observer is interested in the notification
+            if (leaf || (!leaf && entry.notifyForDescendents)) {
+                entry.observer.onChange(selfNotify);
+            }
+        }
+    }
+
+    public void notifyMyObservers(Uri uri, int index, ContentObserver observer,
+            boolean selfNotify) {
+        String segment = null;
+        int segmentCount = countUriSegments(uri);
+        if (index >= segmentCount) {
+            // This is the leaf node, notify all observers
+            notifyMyObservers(true, observer, selfNotify);
+        } else if (index < segmentCount){
+            segment = getUriSegment(uri, index);
+            // Notify any observers at this level who are interested in descendents
+            notifyMyObservers(false, observer, selfNotify);
+        }
+
+        int N = mChildren.size();
+        for (int i = 0; i < N; i++) {
+            MockObserverNode node = mChildren.get(i);
+            if (segment == null || node.mName.equals(segment)) {
+                // We found the child,
+                node.notifyMyObservers(uri, index + 1, observer, selfNotify);
+                if (segment != null) {
+                    break;
+                }
+            }
+        }
+    }
+}
diff --git a/tests/src/com/android/browser/tests/utils/ProviderTestCase3.java b/tests/src/com/android/browser/tests/utils/ProviderTestCase3.java
new file mode 100644
index 0000000..c374292
--- /dev/null
+++ b/tests/src/com/android/browser/tests/utils/ProviderTestCase3.java
@@ -0,0 +1,166 @@
+/*
+ * 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.tests.utils;
+
+import android.content.ContentProvider;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.res.Resources;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.test.AndroidTestCase;
+import android.test.IsolatedContext;
+import android.test.RenamingDelegatingContext;
+import android.test.mock.MockContext;
+
+import java.io.File;
+
+/**
+ * Replacement for ProviderTestCase2 that keeps calls to ContentResolver.notifyChanged
+ * internal to observers registered with ProviderTestCase3.registerContentObserver
+ */
+public abstract class ProviderTestCase3<T extends ContentProvider> extends AndroidTestCase {
+
+    Class<T> mProviderClass;
+    String[] mProviderAuthority;
+
+    private IsolatedContext mProviderContext;
+    private MockContentResolver2 mResolver;
+
+    private class MockContext2 extends MockContext {
+
+        @Override
+        public Resources getResources() {
+            return getContext().getResources();
+        }
+
+        @Override
+        public File getDir(String name, int mode) {
+            // name the directory so the directory will be separated from
+            // one created through the regular Context
+            return getContext().getDir("mockcontext2_" + name, mode);
+        }
+
+        @Override
+        public String getPackageName() {
+            return getContext().getPackageName();
+        }
+
+        @Override
+        public SharedPreferences getSharedPreferences(String name, int mode) {
+            return getContext().getSharedPreferences("mockcontext2_" + name, mode);
+        }
+
+        @Override
+        public Context getApplicationContext() {
+            return this;
+        }
+    }
+    /**
+     * Constructor.
+     *
+     * @param providerClass The class name of the provider under test
+     * @param providerAuthorities The provider's authority string
+     */
+    public ProviderTestCase3(Class<T> providerClass, String... providerAuthorities) {
+        mProviderClass = providerClass;
+        mProviderAuthority = providerAuthorities;
+    }
+
+    private T mProvider;
+
+    /**
+     * Returns the content provider created by this class in the {@link #setUp()} method.
+     * @return T An instance of the provider class given as a parameter to the test case class.
+     */
+    public T getProvider() {
+        return mProvider;
+    }
+
+    /**
+     * Sets up the environment for the test fixture.
+     * <p>
+     * Creates a new
+     * {@link com.android.browser.tests.utils.MockContentResolver2}, a new IsolatedContext
+     * that isolates the provider's file operations, and a new instance of
+     * the provider under test within the isolated environment.
+     * </p>
+     *
+     * @throws Exception
+     */
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        mResolver = new MockContentResolver2();
+        final String filenamePrefix = "test.";
+        RenamingDelegatingContext targetContextWrapper = new
+                RenamingDelegatingContext(
+                new MockContext2(), // The context that most methods are
+                                    //delegated to
+                getContext(), // The context that file methods are delegated to
+                filenamePrefix);
+        mProviderContext = new IsolatedContext(mResolver, targetContextWrapper);
+
+        mProvider = mProviderClass.newInstance();
+        mProvider.attachInfo(mProviderContext, null);
+        assertNotNull(mProvider);
+        for (String auth : mProviderAuthority) {
+            mResolver.addProvider(auth, getProvider());
+        }
+    }
+
+    /**
+     * Tears down the environment for the test fixture.
+     * <p>
+     * Calls {@link android.content.ContentProvider#shutdown()} on the
+     * {@link android.content.ContentProvider} represented by mProvider.
+     */
+    @Override
+    protected void tearDown() throws Exception {
+        mProvider.shutdown();
+        super.tearDown();
+    }
+
+    /**
+     * Gets the {@link MockContentResolver2} created by this class during initialization. You
+     * must use the methods of this resolver to access the provider under test.
+     *
+     * @return A {@link MockContentResolver2} instance.
+     */
+    public MockContentResolver2 getMockContentResolver() {
+        return mResolver;
+    }
+
+    /**
+     * Gets the {@link IsolatedContext} created by this class during initialization.
+     * @return The {@link IsolatedContext} instance
+     */
+    public IsolatedContext getMockContext() {
+        return mProviderContext;
+    }
+
+    public void registerContentObserver(Uri uri, boolean notifyForDescendents,
+            ContentObserver observer) {
+        mResolver.safeRegisterContentObserver(uri, notifyForDescendents, observer);
+    }
+
+    public void unregisterContentObserver(ContentObserver observer) {
+        mResolver.safeUnregisterContentObserver(observer);
+    }
+
+}