am 2660b267: (-s ours) Import revised translations.  DO NOT MERGE

* commit '2660b2670a27005cb3514d2d673cb4d82ac3b1d3':
  Import revised translations.  DO NOT MERGE
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/anim/autologin_enter.xml b/res/anim/autologin_enter.xml
new file mode 100644
index 0000000..45e5204
--- /dev/null
+++ b/res/anim/autologin_enter.xml
@@ -0,0 +1,19 @@
+<?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.
+-->
+
+<translate xmlns:android="http://schemas.android.com/apk/res/android"
+    android:fromYDelta="-100%" android:toYDelta="0"
+    android:duration="@android:integer/config_longAnimTime"/>
diff --git a/res/anim/autologin_exit.xml b/res/anim/autologin_exit.xml
new file mode 100644
index 0000000..6faa715
--- /dev/null
+++ b/res/anim/autologin_exit.xml
@@ -0,0 +1,19 @@
+<?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.
+-->
+
+<translate xmlns:android="http://schemas.android.com/apk/res/android"
+    android:fromYDelta="0" android:toYDelta="-100%"
+    android:duration="@android:integer/config_longAnimTime"/>
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/bg_bookmarks_widget_holo.9.png b/res/drawable-mdpi/bg_bookmarks_widget_holo.9.png
new file mode 100644
index 0000000..4fd263f
--- /dev/null
+++ b/res/drawable-mdpi/bg_bookmarks_widget_holo.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/qc_background_normal.png b/res/drawable-mdpi/qc_background_normal.png
new file mode 100644
index 0000000..b9a16d1
--- /dev/null
+++ b/res/drawable-mdpi/qc_background_normal.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/item_background_holo_dark.xm b/res/drawable/item_background_holo_dark.xm
deleted file mode 100644
index d5fa3c0..0000000
--- a/res/drawable/item_background_holo_dark.xm
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:exitFadeDuration="@android:integer/config_mediumAnimTime">
-    <item
-        android:state_window_focused="false"
-        android:drawable="@color/transparent" />
-    <!--
-        Even though these two point to the same resource, have two states so the
-        drawable will invalidate itself when coming out of pressed state.
-    -->
-    <item
-        android:state_focused="true"
-        android:state_enabled="false"
-        android:state_pressed="true"
-        android:drawable="@drawable/list_selector_disabled_holo_dark" />
-    <item
-        android:state_focused="true"
-        android:state_enabled="false"
-        android:drawable="@drawable/list_selector_disabled_holo_dark" />
-    <item
-        android:state_focused="true"
-        android:state_pressed="true"
-        android:drawable="@drawable/list_selector_background_transition_holo_dark" />
-    <item
-        android:state_focused="false"
-        android:state_pressed="true"
-        android:drawable="@drawable/list_selector_background_transition_holo_dark" />
-    <item
-        android:state_focused="true"
-        android:drawable="@drawable/list_focused_holo" />
-    <item
-        android:drawable="@color/transparent" />
-</selector>
\ No newline at end of file
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.xml b/res/layout/bookmarkthumbnailwidget.xml
index 12191e8..2ac0db1 100644
--- a/res/layout/bookmarkthumbnailwidget.xml
+++ b/res/layout/bookmarkthumbnailwidget.xml
@@ -17,25 +17,26 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:paddingTop="4dip"
-    android:paddingBottom="20dip"
-    android:paddingLeft="12dip"
-    android:paddingRight="12dip">
+    android:paddingTop="0dip"
+    android:paddingBottom="23dip"
+    android:paddingLeft="8dip"
+    android:paddingRight="8dip">
     <GridView
         android:id="@+id/bookmarks_list"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:numColumns="2"
-        android:paddingBottom="6dip"
-        android:paddingRight="3dip"
-        android:paddingLeft="3dip"
+        android:paddingTop="6dip"
+        android:paddingRight="7dip"
+        android:paddingLeft="7dip"
         android:stretchMode="columnWidth"
         android:horizontalSpacing="@dimen/widgetHorizontalSpacing"
         android:verticalSpacing="@dimen/widgetVerticalSpacing"
         android:drawSelectorOnTop="true"
         android:listSelector="@drawable/bookmark_widget_thumb_selector"
         android:fadingEdgeLength="24dp"
-        android:scrollbarStyle="outsideOverlay" />
+        android:scrollbarStyle="outsideOverlay"
+        android:background="@drawable/bg_bookmarks_widget_holo" />
 
     <ImageButton
         android:id="@+id/app_shortcut"
diff --git a/res/layout/bookmarkthumbnailwidget_item.xml b/res/layout/bookmarkthumbnailwidget_item.xml
index b67b386..8bc1efb 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"
@@ -53,9 +53,8 @@
             android:layout_gravity="center_vertical"
             android:singleLine="true"
             android:ellipsize="end"
-            android:textSize="14sp"
+            android:textSize="12sp"
             android:typeface="sans"
-            android:textStyle="bold"
             android:textColor="@android:color/white" />
     </LinearLayout>
 </RelativeLayout>
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..8743906 100644
--- a/res/layout/url_bar.xml
+++ b/res/layout/url_bar.xml
@@ -10,12 +10,66 @@
         the specific language governing permissions and limitations under the
         License.
     -->
-<LinearLayout
+<RelativeLayout
     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">
+    >
+    <LinearLayout
+        android:id="@+id/autologin"
+        android:background="#FBF0A0"
+        android:gravity="center_vertical"
+        android:paddingTop="3dip"
+        android:visibility="gone"
+        android:layout_below="@+id/taburlbar"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+        <TextView
+            android:text="@string/autologin_bar_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textColor="@android:color/primary_text_light"
+            android:paddingLeft="15dip"
+            android:paddingRight="15dip"
+            android:textAppearance="?android:attr/textAppearanceMedium"/>
+        <Spinner
+            android:id="@+id/autologin_account"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            style="@android:style/Widget.Holo.Light.Spinner" />
+        <Button
+            android:id="@+id/autologin_login"
+            android:text="@string/autologin_bar_login_text"
+            style="@android:style/Widget.Holo.Light.Button"
+            android:layout_marginRight="15dip"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content" />
+        <ProgressBar
+            android:id="@+id/autologin_progress"
+            android:indeterminateOnly="true"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:visibility="gone" />
+        <TextView
+            android:id="@+id/autologin_error"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:textColor="#dd6826"
+            android:text="@string/autologin_bar_error"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:visibility="gone" />
+        <View
+            android:layout_width="2dip"
+            android:layout_height="match_parent"
+            android:layout_weight="1"/>
+        <ImageButton
+            android:id="@+id/autologin_close"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:paddingRight="15dip"
+            android:background="@null"
+            android:src="@*android:drawable/btn_close"/>
+    </LinearLayout>
     <LinearLayout
         android:id="@+id/taburlbar"
         android:layout_width="match_parent"
@@ -52,19 +106,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 +119,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"
@@ -137,7 +183,8 @@
         android:layout_width="match_parent"
         android:layout_height="22dip"
         android:background="@null"
+        android:layout_below="@+id/taburlbar"
         android:src="@drawable/progress"
         android:layout_marginTop="-11dip"
         android:visibility="gone" />
-</LinearLayout>
+</RelativeLayout>
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..98d59bd 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"حفظ الصفحة"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"تم حفظ الصفحة."</string>
+    <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>
+    <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>
+    <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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"بيانات الملء التلقائي"</string>
+    <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>
-    <string name="pref_autologin_disable" msgid="3342145058494577628">"عدم تسجيل الدخول تلقائيًا"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"سيستخدم الملء التلقائي ملفك الشخصي لمساعدتك على إكمال نماذج الويب بنقرة واحدة."</string>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"تسجيل الدخول إلى مواقع Google باستخدام <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"تسجل الدخول التلقائي متاح."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"تسجيل الدخول"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"أخفق تسجيل الدخول."</string>
+    <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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"يمكن تهيئة الملء التلقائي دائمًا من خلال إعدادات المتصفح."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"تعطيل الملء التلقائي"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"عناصر التحكم السريعة"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"مرر الإبهام من الحافة اليسرى أو اليمنى للدخول إلى عناصر التحكم السريعة وإخفاء أشرطة عناوين URL والتطبيق"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"الصفحة الرئيسية الأكثر زيارة"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"تعرض صفحتك الرئيسية مواقع الويب الأكثر زيارة."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"بحث Google الفوري"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"استخدم بحث Google الفوري عندما تستخدم بحث Google, لإظهار النتائج أثناء الكتابة (يمكن أن يزيد ذلك من استخدام البيانات)."</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"مشكلة في اتصال البيانات"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"مشكلة في الملف"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"تأكيد"</string>
@@ -316,6 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"لم يتم إقران الإشارات المرجعية حتى الآن مع حساب Google. احفظ هذه الإشارات من خلال إضافتها إلى حساب. ويمكنك حذفها إذا كنت لا ترغب في مزامنتها."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"إضافة الإشارات المرجعية الموجودة على هذا الجهاز حاليًا وبدء مزامنتها مع حساب Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"حذف الإشارات المرجعية الموجودة على هذا الجهاز حاليًا وبدء مزامنتها مع حساب Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"حذف الإشارات المرجعية الموجودة على هذا الجهاز حاليًا وبدء مزامنتها مع <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"إضافة الإشارات المرجعية الموجودة على هذا الجهاز حاليًا وبدء مزامنتها مع <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"حذف الإشارات المرجعية"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"التالي"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"السابق"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"إلغاء"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"تم"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"إضافة الإشارات المرجعية إلى حساب Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google مع البحث الفوري (ميزات اختبارية)"</string>
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index efd5a8c..d4f727b 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>
@@ -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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Запазване на страницата"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Страницата е запазена."</string>
+    <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>
+    <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>
+    <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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Данни за автоматичното попълване"</string>
+    <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>
-    <string name="pref_autologin_disable" msgid="3342145058494577628">"Да не се влиза автоматично"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Автоматичното попълване ще използва потребителския ви профил, за да ви помогне да попълвате уеб формуляри с едно кликване."</string>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Влизате в сайтове на Google посредством <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Автоматичният вход е налице."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Вход"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Влизането не бе успешно."</string>
+    <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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Автоматичното попълване винаги може да се конфигурира от „Настройки на браузъра“."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Деактивиране на автоматичното попълване"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Бързи контроли"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Прокарайте палец от левия/десния край за достъп до бързите контроли и скр. на лентите за прил. и URL адр."</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Най-посещаваната начална страница"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Началната ви страница показва най-посещаваните от вас уеб страници."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Динамично търсене"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Използвайте Google Динамично търсене, за да се показват резултати, докато пишете (може да увеличи употребата на данни)."</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблем с обмен на данни"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблем с файла"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Потвърждаване"</string>
@@ -316,6 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Отметките на това устройство още не са свързани с профил в Google. Запазете ги, като ги добавите към профил. Изтрийте тези отметки, ако не искате да ги синхронизирате."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Добавяне на текущите отметки от това устройство и начало на синхронизирането с профил в Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Изтриване на текущите отметки от това устройство и начало на синхронизирането с профил в Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Изтриване на текущите отметки от това устройство и начало на синхронизирането на отметките с/ъс <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Добавяне на текущите отметки от това устройство и начало на синхронизирането на отметките с/ъс <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Изтриване на отметките"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Напред"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Назад"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Отказ"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Готово"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Добавяне на отметките към профил в Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google с Динамично търсене (Лаборатория)"</string>
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index ad14bd1..4071fed 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>
@@ -97,7 +98,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>
@@ -110,9 +110,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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Desa la pàgina"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"S\'ha desat la pàgina."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"No s\'ha pogut desar la pàgina."</string>
     <string name="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>
@@ -137,7 +137,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>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"Bloqueja 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>
@@ -147,7 +147,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>
+    <string name="pref_content_homepage" msgid="3324574611613105696">"Estableix 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>
@@ -158,7 +158,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>
+    <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>
@@ -166,16 +166,16 @@
     <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>
+    <string name="pref_autofill_enabled" msgid="1015751713312396713">"Emplenament autom. 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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Dades d\'emplenament automàtic"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Introdueix i desa les dades per emplenar automàticament els camps del formulari web"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Inici de la sessió a Llocs web de Google amb <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Inici de sessió automàtic disponible."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Inici sessió"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Error en iniciar sessió."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Introdueix les dades que vulguis que s\'emplenin automàticament als camps web quan els toquis."</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>
@@ -194,9 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"L\'emplenament automàtic sempre es pot establir mitjançant la configuració del navegador."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Desactiva l\'emplenament automàtic"</string>
+    <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>
@@ -269,10 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controls ràpids"</string>
+    <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 i ocultar les barres d\'aplicació i URL"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Pàgina d\'inici més visitada"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"La teva pàgina d\'inici mostra les pàgines web que més visites."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Utilitza Google Instant quan utilitzis la Cerca de Google per mostrar resultats mentre escrius (augmenta l\'ús de dades)."</string>
     <string name="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>
@@ -316,6 +318,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>
@@ -364,9 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Els marcadors d\'aquest dispositiu encara no estan associats a un compte de Google. Afegeix aquests marcadors a un compte per desar-los. Suprimeix-los si no vols sincronitzar-los."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Afegeix els marcadors d\'aquest dispositiu i comença a sincronitzar-los amb el compte de Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Afegeix els marcadors d\'aquest dispositiu i comença a sincronitzar-los amb el compte de Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Suprimeix els marcadors d\'aquest dispositiu i comença a sincronitzar els marcadors amb <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Afegeix els marcadors d\'aquest dispositiu i comença a sincronitzar els marcadors amb <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Suprimeix els marcadors"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Següent"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Anterior"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Cancel·la"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Fet"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Afegeix marcadors al compte de Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google amb Instant (Labs)"</string>
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index c83ae1f..34def37 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Uložit stránku"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Stránka byla uložena."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Uložení stránky se nezdařilo."</string>
     <string name="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>
+    <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>
+    <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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Automatické vyplnění údajů"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Zadat a uložit údaje pro automatické vyplnění polí webový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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Přihlašování do webů Google pomocí uživatelského jména <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Automatické přihlašování je k dispozici."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Přihlášení"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Přihlášení selhalo."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Zadejte data, která chcete automaticky vyplňovat do textových polí na webu, když se jich dotknete."</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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automatické vyplňování lze vždy nakonfigurovat prostřednictvím nastavení prohlížeče."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Vypnout automatické vyplňování"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Rychlé ovládací prvky"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Posunutím prstu od levého nebo pravého okraje zobrazíte rychlé ovládací prvky a skryjete panely aplikací a URL."</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Nejnavštěvovanější domovská stránka"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Na vaší domovské stránce se zobrazují nejnavštěvovanější webové stránky."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Dynamické vyhledávání Google"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Dynamické vyhledávání ve Vyhledávání Google zobrazuje výsledky již při zadávání dotazu. (Může se zvýšit množství přenesených dat.)"</string>
     <string name="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 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Záložky v tomto zařízení zatím nejsou přidruženy k žádnému účtu Google. Pokud je chcete uložit, přidejte je do nějakého účtu. Pokud je s účtem synchronizovat nechcete, smažte je."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Přidat záložky aktuálně uložené v tomto zařízení a zahájit synchronizaci s účtem Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Smazat záložky aktuálně uložené v tomto zařízení a zahájit synchronizaci s účtem Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Smazat záložky aktuálně uložené v tomto zařízení a zahájit synchronizaci záložek s účtem <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Přidat záložky aktuálně uložené v tomto zařízení a zahájit synchronizaci záložek s účtem <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Smazat záložky"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Další"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Předchozí"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Zrušit"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Hotovo"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Přidat záložky do účtu Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google s dynamickým vyhledáváním (experimentální funkce)"</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 74c1333..c0647c7 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Gem side."</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Siden er gemt."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Siden kunne ikke gemmes."</string>
     <string name="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>
+    <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>
+    <string name="pref_content_homepage" msgid="3324574611613105696">"Indstil 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>
+    <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,16 @@
     <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>
+    <string name="pref_autofill_enabled" msgid="1015751713312396713">"Formular til Autofyld"</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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Data i AutoFyld"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Indtast og gem data til autoudfyldning af felter i webformularer"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Logger ind på Google-websteder med <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Automatisk login er tilgængelig."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Log ind"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Login mislykkedes."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Angiv de data, der skal udfyldes automatisk i webfelter, når du trykker på dem."</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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"AutoFyld kan altid konfigureres via indstillingerne for Browser."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Deaktiver AutoFyld"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Hurtig betjening"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Glid fra venstre til højre for hurtig betjening og for at skjule applikation og adresselinje"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Mest besøgte startside"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Din startside viser dine mest besøgte websider."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Direkte"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Brug Google Direkte, når du søger på Google for at få vist resultater ved indtastning (kan forøge dataforbruget)."</string>
     <string name="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 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Bogmærker på denne enhed er endnu ikke knyttet til en Google-konto. Gem disse bogmærker ved at føje dem til en konto. Slet disse bogmærker, hvis du ikke vil synkronisere dem."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Tilføj bogmærker på denne enhed, og begynd synkronisering med Google-konto"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Slet bogmærker på denne enhed, og begynd synkronisering med Google-konto"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Slet bogmærker på denne enhed, og begynd synkronisering af bogmærker med <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Tilføj bogmærker på denne enhed, og begynd synkronisering af bogmærker med <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Slet bogmærker"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Næste"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Forrige"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Annuller"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Udfør"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Føj bogmærker til Google-konto"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google med Direkte (Labs)"</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 80e3e80..7ffc171 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>
@@ -110,9 +110,9 @@
     <string name="menu_view_download" msgid="2124570321712995120">"Downloads"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Seiten-URL kopieren"</string>
     <string name="share_page" msgid="593756995297268343">"Seitenlink weitergeben"</string>
-    <string name="menu_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="menu_save_webarchive" msgid="2474117375302625691">"Seite speichern"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Seite wurde gespeichert."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Seite konnte nicht gespeichert werden."</string>
     <string name="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>
@@ -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>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"Pop-ups 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>
+    <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>
+    <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,16 @@
     <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>
+    <string name="pref_autofill_enabled" msgid="1015751713312396713">"Formular 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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Daten automatisch ausfüllen"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Eingabe und Speichern von Daten für automatisch auszufüllende Webformularfelder"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Anmeldung in Google Sites mit <xliff:g id="ID_1">%s</xliff:g>..."</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Automatische Anmeldung ist verfügbar."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Anmelden"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Anmeldung fehlgeschlagen"</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Geben Sie die Daten ein, die automatisch in Web-Felder eingetragen werden sollen, wenn Sie sie berühren."</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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"AutoFill kann jederzeit über die Browsereinstellungen konfiguriert werden."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"AutoFill deaktivieren"</string>
+    <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 +269,12 @@
   </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 Startseite die häufigst besuchten Seiten angez. werden"</string>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Schnellsteuerung"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Für Schnellsteuerung/Ausblenden der App- und URL-Leisten Daumen von links nach rechts ziehen"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"\"Am häufigsten besucht\" auf Startseite"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Auf Ihrer Startseite werden Ihre am häufigsten besuchten Webseiten angezeigt."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Nutzen Sie Google Instant bei der Google-Suche. Ergebnisse werden bei Eingabe angezeigt - ggf. mehr Speicher erforderlich."</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Datenverbindungsproblem"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem mit Datei"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bestätigen"</string>
@@ -316,6 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Die Lesezeichen auf diesem Gerät sind noch nicht mit einem Google-Konto verknüpft. Speichern Sie diese Lesezeichen, indem Sie sie zu einem Konto hinzufügen. Falls Sie sie nicht synchronisieren möchten, löschen Sie diese Lesezeichen."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Zurzeit auf diesem Gerät befindliche Lesezeichen hinzufügen und Synchronisierung mit Google-Konto starten"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Zurzeit auf diesem Gerät befindliche Lesezeichen löschen und Synchronisierung mit Google-Konto starten"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Zurzeit auf diesem Gerät befindliche Lesezeichen löschen und Synchronisierung der Lesezeichen mit <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> starten"</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Zurzeit auf diesem Gerät befindliche Lesezeichen hinzufügen und Synchronisierung der Lesezeichen mit <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> starten"</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Lesezeichen löschen"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Weiter"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Zurück"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Abbrechen"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Fertig"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Lesezeichen zu Google-Konto hinzufügen"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google mit dynamischer Suche (Labs)"</string>
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index b43d812..297eb46 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Αποθήκευση σελίδας"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Η σελίδα αποθηκεύτηκε."</string>
+    <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>
+    <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>
+    <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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Αυτόματη συμπλήρωση δεδομένων"</string>
+    <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>
-    <string name="pref_autologin_disable" msgid="3342145058494577628">"Να μην γίνεται αυτόματη σύνδεση"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Η Αυτόματη Συμπλήρωση θα χρησιμοποιήσει το προφίλ σας για να σας βοηθήσει να συμπληρώσετε φόρμες ιστού με ένα κλικ."</string>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Συνδεθείτε σε Ιστότοπους Google χρησιμοποιώντας το <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Διαθέσιμη αυτόματη σύνδεση."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Σύνδεση"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Η σύνδεση απέτυχε."</string>
+    <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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Μπορείτε να διαμορφώσετε τη λειτουργία αυτόματης συμπλήρωσης μέσα από τις ρυθμίσεις του προγράμματος περιήγησης."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Απενεργοποιήστε τη λειτουργία αυτόματης συμπλήρωσης"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Στοιχεία γρήγορου ελέγχου"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Σύρετε τον αντίχειρα από αρ. ή δεξ. για τα στοιχ. γρήγ. ελέγχου και κρύψτε τις γραμμές Εφαρμογές και URL"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Αρχική σελίδα με τις περισσότερες επισκέψεις"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Η αρχική σελίδα εμφανίζει τις ιστοσελίδες με τις περισσότερες επισκέψεις σας."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Χρησιμοποιήστε το Instant μαζί με την Αναζήτηση για να εμφανίζονται αποτελ. καθώς πληκτρολ. (πιθανή αύξηση δεδομένων)."</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Πρόβλημα σύνδεσης δεδομένων"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Υπάρχει πρόβλημα με το αρχείο"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Επιβεβαίωση"</string>
@@ -316,6 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Οι σελιδοδείκτες που υπάρχουν σε αυτή τη συσκευή δεν έχουν συσχετιστεί ακόμα με κάποιον λογαριασμό Google. Αποθηκεύστε αυτούς τους σελιδοδείκτες προσθέτοντάς τους σε κάποιον λογαριασμό. Διαγράψτε αυτούς τους σελιδοδείκτες αν δεν θέλετε να τους συγχρονίσετε."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Προσθέστε τους σελιδοδείκτες που υπάρχουν αυτή τη στιγμή στη συσκευή σας και αρχίστε να εκτελείτε συγχρονισμό με κάποιον Λογαριασμό Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Διαγράψτε τους σελιδοδείκτες που υπάρχουν αυτή τη στιγμή στη συσκευή σας και ξεκινήστε συγχρονισμό με κάποιον Λογαριασμό Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Διαγράψτε τους σελιδοδείκτες που υπάρχουν αυτή τη στιγμή στη συσκευή σας και ξεκινήστε συγχρονισμό των σελιδοδεικτών με τον λογαριασμό <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Προσθέστε τους σελιδοδείκτες που υπάρχουν αυτή τη στιγμή στη συσκευή σας και ξεκινήστε συγχρονισμό των σελιδοδεικτών με τον λογαριασμό <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Διαγραφή σελιδοδεικτών"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Επόμενο"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Προηγούμενο"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Ακύρωση"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Τέλος"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Προσθέστε σελιδοδείκτες στον Λογαριασμό Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google με Instant (Labs)"</string>
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index e2bb5fe..e8c0538 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Save page"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Page saved."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Failed to save page."</string>
     <string name="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>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"Block pop-ups"</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>
+    <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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Auto-fill data"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Enter and save data for auto-filling web form fields"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Signing in to Google sites using <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Automatic sign-in is available."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Login"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Login failed."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Enter the data that you want to auto-fill in web fields when you touch them."</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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Auto-fill can always be configured through Browser Settings."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Disable auto-fill"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Quick controls"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Swipe thumb from left or right edge to access quick controls and hide Application and URL bars"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Most-visited homepage"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Your homepage displays your most-visited web pages."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Use Google Instant when you use Google Search, to show results as you type (this can increase data use)."</string>
     <string name="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 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"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>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Add bookmarks currently on this device and begin syncing with Google Account"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Delete bookmarks currently on this device and begin synchronising with Google Account"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Delete bookmarks currently on this device and begin synchronising bookmarks with <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Add bookmarks currently on this device and begin synchronising bookmarks with <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Delete bookmarks"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Next"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Previous"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Cancel"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Done"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Add bookmarks to Google Account"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google with Instant (Labs)"</string>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 4a868a1..6b5c40a 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>
@@ -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">"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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Guardar página"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Página guardada"</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Error al guardar la página"</string>
     <string name="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,7 +137,7 @@
     <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>
+    <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>
@@ -147,7 +147,7 @@
     <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>
+    <string name="pref_content_homepage" msgid="3324574611613105696">"Configurar 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,7 +158,7 @@
     <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>
+    <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 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,16 @@
     <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">"Autocompletar formulario"</string>
+    <string name="pref_autofill_enabled" msgid="1015751713312396713">"Completado automático de formulario"</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 autocompletado"</string>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Datos de completado automático"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Ingresa y guarda datos para completar campos de formularios web 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 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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Accediendo a Google Sites utilizando <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Acceso automático disponible"</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Acceder"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Falló el acceso."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Ingresa los datos que deseas que se completen automáticamente al tocar los campos web."</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>
@@ -194,9 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"La función de autocompletar siempre se puede configurar mediante los Parámetros de configuración del navegador."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Inhabilitar Autocompletar"</string>
+    <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 eliminará el contenido y las bases de datos de la memoria caché local."</string>
@@ -269,10 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controles rápidos"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Desliza pulgar de borde izq. o der. para acceder a contr. ráp. y ocultar barras Aplicación y URL"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Página principal más visitada"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Tu página principal muestra tus páginas web más visitadas."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Usa Google Instant con Búsq. de Google para que los resultados aparezcan mientras tipeas (esto puede aumentar el uso de datos)."</string>
     <string name="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>
@@ -316,6 +318,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 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>
@@ -364,9 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Los favoritos de este dispositivo aún no están asociados a una cuenta de Google. Guarda estos favoritos agregándolos a una cuenta. Si no deseas sincronizarlos, elimínalos."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Agrega los favoritos que actualmente tienes en este dispositivo y comienza a sincronizarlos con una cuenta de Google."</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Elimina los favoritos que actualmente tienes en este dispositivo y comienza a sincronizarlos con una cuenta de Google."</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Elimina los favoritos que actualmente tienes en este dispositivo y comienza a sincronizar favoritos con <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Agrega  los favoritos que actualmente tienes en este dispositivo y comienza a sincronizar favoritos con <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Eliminar favoritos"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Siguiente"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Anterior"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Cancelar"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Finalizado"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Agregar favoritos a una Cuenta de Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google con Instant (Labs)"</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 6da6458..d270534 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Guardar página"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Página guardada"</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Error al guardar la página"</string>
     <string name="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>
+    <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>
+    <string name="pref_content_homepage" msgid="3324574611613105696">"Establecer página principal"</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>
+    <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,16 @@
     <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>
+    <string name="pref_autofill_enabled" msgid="1015751713312396713">"Autocompletado de 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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Datos de Autocompletar"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Introducir y guardar datos de campos de cumplimentación automática de formularios web"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Accediendo a Google Sites mediante <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"El acceso automático está disponible."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Acceder"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Error al acceder"</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Introduce los datos con los que quieres que los campos web se completen automáticamente al tocarlos."</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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"La función Autocompletar se puede configurar a través de los ajustes del navegador."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Inhabilitar autocompletar"</string>
+    <string name="pref_privacy_security_title" msgid="3480313968942160914">"Seguridad y privacidad"</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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controles rápidos"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Desliza el pulgar para acceder a los controles rápidos y ocultar las barras."</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Página principal más visitada"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"En la página principal se muestran las páginas web más visitadas."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Con Google Instant, aparecerán resultados de búsqueda de Google a medida que escribas (puede aumentar el uso de datos)."</string>
     <string name="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 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Los marcadores de este dispositivo aún no están asociados a ninguna cuenta de Google. Añádelos a una cuenta para guardarlos o elimínalos si no quieres sincronizarlos."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Añadir los marcadores de este dispositivo e iniciar la sincronización con la cuenta de Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Eliminar los marcadores de este dispositivo e iniciar la sincronización con la cuenta de Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Eliminar los marcadores de este dispositivo y empezar a sincronizarlos con <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Añadir los marcadores de este dispositivo y empezar a sincronizar los marcadores con <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Eliminar marcadores"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Siguiente"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Anterior"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Cancelar"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Listo"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Añadir marcadores a la cuenta de Google"</string>
     <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Añadir tus marcadores de Android a marcadores de <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
     <string name="menu_share_url" msgid="5851814357333739700">"Compartir"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"No hay más pestañas disponibles."</string>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google con Instant (experimental)"</string>
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 8e2ba66..4a0204a 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>
@@ -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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"ذخیره صفحه"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"صفحه ذخیره شد."</string>
+    <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>
+    <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>
+    <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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"تکمیل خودکار داده ها"</string>
+    <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>
-    <string name="pref_autologin_disable" msgid="3342145058494577628">"به صورت خودکار به سیستم وارد نشوید"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"تکمیل خودکار از نمایه شما استفاده می کند تا به شما کمک کند فرم های وب را با یک کلیک پر کنید."</string>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"ورود به سیستم سایت های Google با استفاده از <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"ورود به سیستم خودکار امکان پذیر است."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"ورود به سیستم"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"ورود به سیستم انجام نشد."</string>
+    <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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"تکمیل خودکار را همیشه می توانید از طریق تنظیمات مرورگر پیکربندی کنید."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"غیرفعال کردن تکمیل خودکار"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"کنترل های سریع"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"انگشت شست را از لبه چپ یا راست حرکت دهید تا به کنترل های سریع دسترسی داشته و نوارهای URL و برنامه را پنهان کنید"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"صفحه اصلی بیشتر بازدید شده"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"صفحات وب بیشتر بازدید شده شما در صفحه اصلی نشان داده می شود."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"هنگام استفاده از جستجوی Google، برای نمایش نتایج در حین تایپ از Google Instant استفاده کنید (ممکن است مصرف داده بالا برود)."</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"مشکل اتصال داده"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"مشکل در فایل"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"تأیید"</string>
@@ -316,6 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"نشانک های موجود در این دستگاه هنوز با یک حساب Google مرتبط نشده اند. این نشانک ها را با افزودن به یک حساب ذخیره کنید. اگر نمی خواهید این نشانک ها را همگام سازی کنید، آن ها را حذف نمایید."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"نشانک های موجود در این دستگاه را اضافه کرده و شروع به همگام سازی با حساب Google کنید"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"نشانک های موجود در این دستگاه را حذف کرده و شروع به همگام سازی آن ها با حساب Google کنید."</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"نشانک های موجود در این دستگاه را حذف کرده و شروع به همگام سازی آن ها با <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> کنید."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"نشانک های موجود در این دستگاه را اضافه کرده و شروع به همگام سازی آن ها با <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> کنید."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"حذف نشانک ها"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"بعدی"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"قبلی"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"لغو"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"انجام شد"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"افزودن نشانک ها به حساب Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google با Instant (ویژگی های آزمایشی)"</string>
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 6bfe70e..f14f718 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Tallenna sivu"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Sivu tallennettu."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Sivun tallennus epäonnistui."</string>
     <string name="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>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"Estä ponnahdusikkunat"</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>
+    <string name="pref_content_homepage" msgid="3324574611613105696">"Aseta etusivu"</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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Tietojen automaattinen täyttö"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Tallenna tietoja verkkolomakkeiden automaattista täyttöä varten"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Kirjaudutaan Google-sivustoihin käyttäjänimellä <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Automaattinen kirjautuminen käytettävissä."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Kirjaudu"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Kirjautuminen epäonnistui."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Kirjoita tiedot, jotka haluat täyttää automaattisesti verkon kenttiin koskettaessasi kenttiä."</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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automaattisen täytön asetuksia voi aina muuttaa selainasetuksista."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Poista automaattinen täyttö käytöstä"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Pikasäätimet"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Saat pikasäätimet käyttöösi ja voit piilottaa Sovellus- ja URL-palkit liu\'uttamalla vasemmalta tai oikealta reunalta"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Eniten käytetty etusivu"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Etusivulla näytetään eniten käyttämäsi verkkosivut."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Käyttämällä Google Instantia hakiessasi näet tuloksia jo hakua kirjoittaessasi (tämä voi kasvattaa tiedonsiirron määrää)."</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Datayhteysongelma"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Tiedosto-ongelma"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Vahvista"</string>
@@ -316,6 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Tämän laitteen kirjanmerkkejä ei ole vielä yhdistetty Google-tiliin. Tallenna kirjanmerkit lisäämällä ne tiliin. Poista kirjanmerkit, jos et halua synkronoida niitä."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Lisää tämän laitteen kirjanmerkit ja aloita synkronoiminen Google-tilin kanssa"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Poista tämän laitteen kirjanmerkit ja aloita synkronoiminen Google-tilin kanssa"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Poista tämän laitteen kirjanmerkit ja aloita kirjanmerkkien synkronointi tilin <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> kanssa."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Lisää tämän laitteen kirjanmerkit ja aloita kirjanmerkkien synkronointi tilin <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> kanssa."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Poista kirjanmerkit"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Seuraava"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Edellinen"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Peruuta"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Valmis"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Lisää kirjanmerkit Google-tiliin"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google ja Instant (Labs)"</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index c979a35..42219fa 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>
@@ -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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Enregistrer la page"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"La page a été enregistrée."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Échec de l\'enregistrement de la page"</string>
     <string name="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>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"Bloquer les fenêtres 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,7 +147,7 @@
     <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>
+    <string name="pref_content_homepage" msgid="3324574611613105696">"Définir 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électionner un moteur de recherche"</string>
     <string name="pref_set_homepage_to" msgid="7196350233061395098">"Définir comme..."</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>
+    <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,16 @@
     <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" msgid="1015751713312396713">"Saisie automatique du formulaire"</string>
     <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Remplir 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">"Configurer et gérer les données de remplissage automatique des formulaires"</string>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Données de la saisie automatique"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Saisir et enregistrer des données à des fins de saisie automatique dans les champs de formulaires Web"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Connexion à Google Sites avec le compte <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"La connexion automatique est disponible."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Connexion"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Échec de la connexion"</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Renseignez les données à saisir automatiquement dans les champs Web lorsque vous appuyez sur ces derniers."</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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Notez que vous pouvez configurer la saisie automatique dans les paramètres du navigateur."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Désactiver la saisie automatique"</string>
+    <string name="pref_privacy_security_title" msgid="3480313968942160914">"Confidentialité et sécurité"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Vider 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>
@@ -269,10 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Commandes rapides"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Accès commandes rapides/masquer barres applications et URL : faire glisser vers droite/gauche"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Page d\'accueil Les plus visitées"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Votre page d\'accueil affiche les pages Web les plus visitées."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Recherche instantanée Google"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Affichez plus de résultats lors de la saisie avec la recherche instantanée Google. Peut utiliser plus de données."</string>
     <string name="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>
@@ -316,6 +318,7 @@
     <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 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>
@@ -364,9 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Les favoris de cet appareil ne sont pas encore associés à un compte Google. Enregistrez-les en les ajoutant à un compte. Supprimez-les si vous ne souhaitez pas les synchroniser."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Ajouter les favoris de cet appareil et démarrer la synchronisation avec le compte Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Supprimer les favoris de cet appareil et démarrer la synchronisation avec le compte Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Supprimer les favoris de cet appareil et démarrer la synchronisation avec les favoris du compte <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Ajouter les favoris de cet appareil et démarrer la synchronisation avec les favoris du compte <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Supprimer les favoris"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Suivant"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Précédent"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Annuler"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"OK"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Ajouter les favoris au compte Google"</string>
     <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">"Partager"</string>
     <string name="max_tabs_warning" msgid="4122034303809457570">"Plus aucun onglet n\'est disponible."</string>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google avec Recherche instantanée (Google Labs)"</string>
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 1e2eb68..e2636da 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>
@@ -97,7 +98,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>
@@ -110,9 +110,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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Spremi stranicu"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Stranica je spremljena."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Spremanje stranice nije uspjelo."</string>
     <string name="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>
@@ -137,7 +137,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>
+    <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>
@@ -147,7 +147,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>
+    <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>
@@ -158,7 +158,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>
+    <string name="pref_general_autofill_title" msgid="547881256865816858">"Automatsko popunjavanje"</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>
@@ -166,16 +166,16 @@
     <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>
+    <string name="pref_autofill_enabled" msgid="1015751713312396713">"Automatsko popunjavanje obrasca"</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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Automatsko popunjavanje podataka"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Unošenje i spremanje podataka za automatsko popunjavanje polja web-obrasca"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Prijava na Google web-lokacije putem <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Dostupna je automatska prijava."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Prijava"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Prijava nije uspjela."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Unesite podatke koje želite automatski unijeti u web-polja kad ih dodirnete."</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>
@@ -194,9 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automatsko popunjavanje može se bilo kada konfigurirati putem Postavki preglednika."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Onemogući automatsko popunjavanje"</string>
+    <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>
@@ -269,10 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Brze kontrole"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Za pristup brzim kontrolama i skrivanje Aplikacija i URL-ova prijeđite palcem"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Najposjećenija početna stranica"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Vaša početna stranica prikazuje vaše najposjećenije web-stranice."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Kada u Google Pretraživanju upotrebljavate Google Instant, rezultati se prikazuju dok tipkate (promet podataka može porasti)."</string>
     <string name="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>
@@ -316,6 +318,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>
@@ -364,9 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Oznake na ovom uređaju još nisu povezane s Google Računom. Spremite te oznake dodavanjem na račun. Izbrišite oznake ako ih ne želite sinkronizirati."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Dodavanje oznaka trenutačno spremljenih na uređaju i početak sinkronizacije s Google Računom"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Brisanje oznaka trenutačno spremljenih na uređaju i početak sinkronizacije s Google Računom"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Brisanje oznaka trenutačno spremljenih na uređaju i početak sinkronizacije oznaka s računom <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Dodavanje oznaka trenutačno spremljenih na uređaju i početak sinkronizacije oznaka s računom <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Izbriši oznake"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Dalje"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Prethodno"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Odustani"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Gotovo"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Dodaj oznake na Google Račun"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google sa značajkom Instant (Labs)"</string>
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 496bd20..5a5a97e 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Oldal mentése"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Oldal mentve."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Nem sikerült menteni az oldalt."</string>
     <string name="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>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"Pop-upok 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>
+    <string name="pref_content_homepage" msgid="3324574611613105696">"Kezdőlap 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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Adatok automatikus kitöltése"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Adatok beírása és mentése az internetes űrlapok mezőinek automatikus kitöltéséhez"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Bejelentkezés Google-webhelyekre a következők használatával: <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Az automatikus bejelentkezés elérhető."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Belépés"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Sikertelen bejelentkezés."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Adja meg azokat az adatokat, amelyekkel ki szeretné tölteni az internetes mezőket, amikor megérinti azokat."</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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Az Automatikus kitöltést bármikor konfigurálhatja a Böngésző beállításai között."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Automatikus kitöltés letiltása"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Gyorsbeállítások"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Seperjen az ujjával: gyorsvezérlők elérése, az Alkalmazás és URL-sáv elrejtése."</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Leggyakrabban felkeresett kezdőlap"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Kezdőlapján a leggyakrabban felkeresett webhelyek jelennek meg."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"A Google-keresésnél használja a Google Instantot, és a találatok gépelés közben megjelennek (az adatforgalom nőhet)."</string>
     <string name="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 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Az eszközön található könyvjelzők még nincsenek Google Fiókhoz társítva. Mentse a könyvjelzőket úgy, hogy hozzáadja azokat egy fiókhoz. Törölje a könyvjelzőket, ha nem szeretné szinkronizálni azokat."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Az eszközön jelenleg található könyvjelzők hozzáadása, és a szinkronizálás megkezdése a Google Fiókkal"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Az eszközön jelenleg található könyvjelzők törlése, és a könyvjelzők szinkronizálásának megkezdése a Google Fiókkal"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Az eszközön jelenleg található könyvjelzők törlése, és a könyvjelzők szinkronizálásának megkezdése a következővel: <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Az eszközön jelenleg található könyvjelzők hozzáadása, és a könyvjelzők szinkronizálásának megkezdése a következővel: <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Könyvjelzők törlése"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Tovább"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Előző"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Mégse"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Kész"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Könyvjelzők hozzáadása a Google Fiókhoz"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google Instanttal (Labs)"</string>
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index b2d6118..9e0bd1e 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>
@@ -97,7 +98,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>
@@ -110,9 +110,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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Simpan laman"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Laman tersimpan."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Gagal menyimpan laman."</string>
     <string name="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>
@@ -137,7 +137,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>
+    <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>
@@ -147,7 +147,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>
+    <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>
@@ -158,7 +158,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>
+    <string name="pref_general_autofill_title" msgid="547881256865816858">"Isi-otomatis"</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>
@@ -166,16 +166,16 @@
     <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>
+    <string name="pref_autofill_enabled" msgid="1015751713312396713">"Isi-otomatis 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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Isi-otomatis data"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Masukkan dan simpan data untuk mengisi-otomatis bidang formulir web"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Masuk ke situs Google dengan <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Fitur masuk otomatis tersedia."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Masuk"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Upaya masuk gagal."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Masukkan data yang ingin Anda isi-otomatiskan ke bidang web saat disentuh."</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>
@@ -194,9 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Isi-otomatis selalu dapat dikonfigurasi melalui Setelan Peramban."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Nonaktifkan isi-otomatis"</string>
+    <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>
@@ -269,10 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Kontrol cepat"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Gesek ibu jari dari tepi kiri atau kanan untuk mengakses kontrol cepat dan menyembunyikan bilah aplikasi dan URL"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Beranda paling sering disinggahi"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Beranda Anda menampilkan situs web yang paling sering disinggahi."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Sekejap"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Gunakan Google Sekejap di Google Penelusuran agar hasilnya tampil selagi mengetik (ini dapat menambah pemakaian data)."</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Masalah konektivitas data"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Masalah dengan berkas"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Konfirmasi"</string>
@@ -316,6 +318,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>
@@ -364,9 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Bookmark pada perangkat ini belum terkait dengan Akun Google. Simpan bookmark ini dengan menambahkannya ke sebuah akun. Hapus bookmark jika Anda tidak ingin menyinkronkannya."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Menambahkan bookmark yang ada di perangkat ini dan mulai menyinkronkannya dengan Akun Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Menghapus bookmark yang ada di perangkat ini dan mulai menyinkronkannya dengan Akun Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Menghapus bookmark yang ada di perangkat ini dan mulai menyinkronkan bookmark dengan <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Menambahkan bookmark yang ada di perangkat ini dan mulai menyinkronkan bookmark dengan <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Hapus bookmark"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Berikutnya"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Sebelumnya"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Batal"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Selesai"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Tambahkan bookmark ke Akun Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google dengan Sekejap (Labs)"</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 32b84af..8ac3436 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Salva pagina"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Pagina salvata."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Impossibile salvare la pagina."</string>
     <string name="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>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"Blocca 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>
+    <string name="pref_content_homepage" msgid="3324574611613105696">"Imposta pagina iniziale"</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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Dati per compilazione automatica"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Inserisci e salva dati per la compilazione automatica dei campi dei moduli web"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Accesso ai siti Google utilizzando <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Accesso automatico disponibile."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Accedi"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Accesso non riuscito."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Inserisci i dati desiderati per la compilazione automatica dei moduli web quando li tocchi."</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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"È sempre possibile configurare la compilazione automatica tramite le impostazioni del browser."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Disattiva compilazione automatica"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controlli rapidi"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Fai scorrere il pollice dal lato sinistro/destro per accedere ai controlli e nascondere le barre delle applicazioni e dell\'URL"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Più visitati in pagina iniziale"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"La tua pagina iniziale mostra le tue pagine web più visitate."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Usa Google Instant con Ricerca Google per visualizzare i risultati mentre digiti (può aumentare l\'uso dei dati)."</string>
     <string name="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 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"I segnalibri su questo dispositivo non sono ancora associati a un account Google. Salva questi segnalibri aggiungendoli a un account. Elimina questi segnalibri se non desideri sincronizzarli."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Aggiungi i segnalibri attualmente presenti su questo dispositivo e inizia a sincronizzarli con l\'account Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Elimina i segnalibri attualmente presenti su questo dispositivo e inizia la sincronizzazione con l\'account Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Elimina i segnalibri attualmente presenti su questo dispositivo e inizia a sincronizzare i segnalibri con <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Aggiungi i segnalibri attualmente presenti su questo dispositivo e inizia a sincronizzarli con <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Elimina segnalibri"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Avanti"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Indietro"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Annulla"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Fine"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Aggiungi segnalibri all\'account Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google con Instant (Labs)"</string>
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 47a3e20..0230fc1 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"שמור דף"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"הדף נשמר."</string>
+    <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>
+    <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>
+    <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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"נתונים של \'מילוי אוטומטי\'"</string>
+    <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>
-    <string name="pref_autologin_disable" msgid="3342145058494577628">"אל תיכנס באופן אוטומטי"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"\'מילוי אוטומטי\' ישתמש בפרופיל שלך כדי לעזור לך להשלים טופסי אינטרנט בלחיצה אחת."</string>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"כניסה אל Google Sites באמצעות <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"הכניסה האוטומטית זמינה."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"התחבר"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"ההתחברות נכשלה."</string>
+    <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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"תוכל תמיד להגדיר את \'מילוי אוטומטי\' דרך \'הגדרות דפדפן\'."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"השבת את \'מילוי אוטומטי\'"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"פקדים מהירים"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"העבר את האגודל מאחד הצדדים  כדי לגשת לפקדים המהירים ולהסתיר את סרגלי היישום וה-URL"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"דף הבית שבו ביקרת בתדירות הגבוהה ביותר"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"דף הבית שלך מציג את דפי האינטרנט שבהם ביקרת בתדירות הגבוהה ביותר."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"השתמש ב-Google Instant כאשר אתה משתמש בחיפוש Google, כדי להציג תוצאות בעת ההקלדה (פעולה זו יכולה להגדיל שימוש בנתונים)."</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"בעיה בקישוריות נתונים"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"בעיה בקובץ"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"אשר"</string>
@@ -316,6 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"הסימניות בהתקן זה עדיין לא משויכות לחשבון Google. כדי לשמור את הסימניות, הוסף אותן לחשבון. מחק את הסימניות אם אינך מעוניין לסנכרן אותן."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"הוסף את הסימניות הקיימות כרגע בהתקן זה והתחל בסינכרון עם חשבון Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"מחק את הסימניות הקיימות כרגע בהתקן זה והתחל בסינכרון עם חשבון Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"מחק סימניות הקיימות כרגע בהתקן זה והתחל בסינכרון סימניות עם <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"הוסף את הסימניות הקיימות כרגע בהתקן זה והתחל בסינכרון הסימניות עם <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"מחק סימניות"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"הבא"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"הקודם"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"ביטול"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"סיום"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"הוסף סימניות לחשבון Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google עם Instant ‏(Google Labs)"</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index d45b0ef..7266a9f 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"ページを保存"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"ページを保存しました。"</string>
+    <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>
+    <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>
+    <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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"自動入力データ"</string>
+    <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>
-    <string name="pref_autologin_disable" msgid="3342145058494577628">"自動的にログインしない"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"プロフィールは自動入力機能で使用され、1回タップするだけでウェブフォームに入力することができます。"</string>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"<xliff:g id="ID_1">%s</xliff:g>を使用してGoogleサイトにログインしています"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"自動ログインを利用できます。"</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"ログイン"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"ログインに失敗しました。"</string>
+    <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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"自動入力はいつでもブラウザの[設定]から設定できます。"</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"自動入力を無効にする"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"クイックコントロール"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"クイックコントロールへのアクセス(アプリ/URLバー非表示)には左/右端からスワイプ"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"アクセス数が最も多いホームページ"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"アクセス数が最も多いウェブページをホームページとして表示します。"</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Googleインスタント検索"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Google検索時にGoogleインスタント検索を使用すると、入力中に結果が表示されます(データの使用量が増えることがあります)。"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"データアクセスエラー"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"ファイルに問題があります"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"確認"</string>
@@ -316,6 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"この携帯端末のブックマークはまだGoogleアカウントに関連付けられていません。ブックマークはアカウントに追加して保存できます。同期したくない場合はこれらのブックマークを削除してください。"</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"この携帯端末の現在のブックマークを追加し、Googleアカウントとの同期を開始する"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"この携帯端末の現在のブックマークを削除し、Googleアカウントとの同期を開始する"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"この携帯端末の現在のブックマークを削除し、<xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>とのブックマークの同期を開始します。"</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"この携帯端末の現在のブックマークを追加し、<xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>とのブックマークの同期を開始します。"</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"ブックマークを削除"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"次へ"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"戻る"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"キャンセル"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"完了"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Googleアカウントにブックマークを追加"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Googleインスタント検索(Labs)"</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index d416e65..d247e52 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>
@@ -75,7 +76,7 @@
     <string name="name" msgid="5462672162695365387">"라벨"</string>
     <string name="http" msgid="2163722670597250102">"http://"</string>
     <string name="save_to_bookmarks" msgid="6101482434920313244">"북마크에 추가"</string>
-    <string name="bookmark_this_page" msgid="7530739804320811054">"북마크하기"</string>
+    <string name="bookmark_this_page" msgid="7530739804320811054">"페이지 북마크"</string>
     <string name="remove" msgid="7820112494467011374">"삭제"</string>
     <string name="edit_bookmark" msgid="5024089053490231905">"북마크 수정"</string>
     <string name="create_shortcut_bookmark" msgid="1995095662095484289">"홈에 바로가기 추가"</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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"페이지 저장"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"페이지가 저장되었습니다."</string>
+    <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>
+    <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>
+    <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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"데이터 자동 입력"</string>
+    <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>
-    <string name="pref_autologin_disable" msgid="3342145058494577628">"자동 로그인 안함"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"자동완성 기능은 사용자의 프로필을 사용하여 단 한번의 클릭으로 웹 양식을 작성할 수 있도록 도와줍니다."</string>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"<xliff:g id="ID_1">%s</xliff:g>(으)로 Google 사이트에 로그인 중"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"자동 로그인을 사용할 수 있습니다."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"로그인"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"로그인하지 못했습니다."</string>
+    <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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"브라우저 설정에서 언제든지 자동완성을 구성할 수 있습니다."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"자동 입력 사용중지"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"빠른 컨트롤"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"좌/우 끝에서 엄지로 스와이프하여 빠른 컨트롤에 액세스하고 앱 및 URL 표시줄 숨김"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"자주 방문한 홈페이지"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"홈페이지에 자주 방문한 웹페이지가 표시됩니다."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google 순간 검색"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Google 검색을 사용할 때 Google 순간 검색을 사용하면 입력하는 동안 결과가 표시됩니다(데이터 사용이 증가될 수 있음)."</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"데이터 연결에 문제 발생"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"파일 문제 발생"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"확인"</string>
@@ -316,6 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"이 기기의 북마크가 Google 계정과 아직 연결되지 않았습니다. 이러한 북마크를 계정에 추가하여 저장하세요. 이러한 북마크를 동기화하지 않으려면 삭제하세요."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"현재 이 기기에서 북마크를 추가하고 Google 계정과 동기화를 시작하세요."</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"현재 이 기기에서 북마크를 삭제하고 Google 계정과 동기화를 시작하세요."</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"현재 이 기기에서 북마크를 삭제하고 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>와(과) 북마크 동기화를 시작하세요."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"현재 이 기기에서 북마크를 추가하고 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>와(과) 북마크 동기화를 시작하세요."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"북마크 삭제"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"다음"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"이전"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"취소"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"완료"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Google 계정에 북마크 추가"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google 순간 검색(실험실)"</string>
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 25d884d..f449b26 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>
@@ -97,7 +98,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>
@@ -110,9 +110,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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Išsaugoti puslapį"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Puslapis išsaugotas."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Nepavyko išsaugoti puslapio."</string>
     <string name="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>
@@ -137,7 +137,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>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"Blokuoti iššokanč. 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>
@@ -147,7 +147,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>
+    <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>
@@ -158,7 +158,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>
+    <string name="pref_general_autofill_title" msgid="547881256865816858">"Automatinis 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>
@@ -166,16 +166,16 @@
     <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>
+    <string name="pref_autofill_enabled" msgid="1015751713312396713">"Automatinis formos pildymas"</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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Automatinis duomenų pildymas"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Įveskite duomenis ir išsaugokite juos automatinio pildymo formos žiniatinklyje laukuose"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Prisijungiama prie „Google“ svetainių naudojant <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Galimas automatinis prisijungimas."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Prisijung."</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Nepavyko prisijungti."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Įveskite duomenis, kuriais norite automatiškai užpildyti žiniatinklio laukus, kai juos paliesite."</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>
@@ -194,9 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automatinį pildymą visada galima konfigūruoti skiltyje „Naršyklės nustatymai“."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Neleisti automatinio pildymo"</string>
+    <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>
@@ -269,10 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Spartieji valdikliai"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Sl. nykščiu iš kair. ar deš. kr., kad pasiekt. sparč. vald. ir pasl. pr. ir URL juost."</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Dažn. lankomas pagrindinis puslapis"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Pagrindiniame puslapyje pateikiami dažniausiai lankyti tinklalapiai."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Intuityvioji „Google“ paieška"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Kai naud. „Google“ paiešką, naud. Int. „Google“ paiešką, kad renk. tekst. b. rodomi rezult. (tai g. padid. duom. naud.)."</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Duomenų jungiamumo problema"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Failo problema"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Patvirtinti"</string>
@@ -316,6 +318,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>
@@ -364,9 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Šiame įrenginyje esančios žymės dar nesusietos su „Google“ paskyra. Išsaugokite šias žymes pridėdami jas prie paskyros. Jei nenorite žymių sinchronizuoti, ištrinkite jas."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Pridėti šiuo metu šiame įrenginyje esančias žymes ir pradėti sinchronizavimą su „Google“ paskyra"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Ištrinti šiuo metu šiame įrenginyje esančias žymes ir pradėti sinchronizavimą su „Google“ paskyra"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Ištrinti šiuo metu šiame įrenginyje esančias žymes ir pradėti žymių sinchronizavimą su <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Pridėti šiuo metu šiame įrenginyje esančias žymes ir pradėti žymių sinchronizavimą su <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Ištrinti žymes"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Kitas"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Ankstesnis"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Atšaukti"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Atlikta"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Pridėti žymių prie „Google“ paskyros"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"„Google“ su Intuityviąja paieška (Laboratorijos)"</string>
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 84a5dc0..7322e2e 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>
@@ -97,7 +98,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>
@@ -110,9 +110,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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Saglabāt lapu"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Lapa ir saglabāta."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Neizdevās saglabāt lapu."</string>
     <string name="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>
@@ -137,7 +137,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>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"Bloķēt uznirstošos vienumus"</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>
@@ -147,7 +147,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>
+    <string name="pref_content_homepage" msgid="3324574611613105696">"Iestatīt sākumlapu"</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>
@@ -158,7 +158,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>
+    <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>
@@ -166,16 +166,16 @@
     <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>
+    <string name="pref_autofill_enabled" msgid="1015751713312396713">"Automātiski aizpildīt veidlapas"</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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Datu automātiskā ievadīšana"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Ievadiet un saglabājiet datus tīmekļa veidlapu lauku automātiskai aizpildīšanai."</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Pierakstīšanās pakalpojumā Google vietnes, izmantojot <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Ir pieejama automātiskā pierakstīšanās."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Pieteikties"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Neizdevās pieteikties."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Ievadiet datus, kas automātiski jāaizpilda tīmekļa laukos, kad tiem pieskaraties."</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>
@@ -194,9 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automātisko aizpildi jebkurā brīdī var konfigurēt, izmantojot pārlūkprogrammas iestatījumus."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Atspējot automātisko aizpildi"</string>
+    <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>
@@ -269,10 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Ātrās piekļuves vadīklas"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Lai piekļ. ātr. piekļ. vadīklām un slēptu lietojumpr. un URL joslas, ekr. lab. vai kr. malā pavelciet ar īkšķi."</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Biežāk apmeklēto lapu sākumlapa"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Sākumlapā tiek rādītas biežāk apmeklētās tīmekļa lapas."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google dinamiskā meklēšana"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Izmantojiet Google dinamisko meklēšanu, kad lietojat Google meklēšanu, lai redzētu rezultātus rakstīšanas laikā (var tikt izmantots vairāk datu)."</string>
     <string name="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>
@@ -316,6 +318,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>
@@ -364,9 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Šajā ierīcē esošās grāmatzīmes vēl nav saistītas ar Google kontu. Saglabājiet šīs grāmatzīmes, pievienojot tās kontam. Dzēsiet šīs grāmatzīmes, ja nevēlaties tās sinhronizēt."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Pievienot šajā ierīcē pašlaik esošās grāmatzīmes un sākt sinhronizāciju ar Google kontu"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Dzēst šajā ierīcē pašlaik esošās grāmatzīmes un sākt sinhronizāciju ar Google kontu"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Dzēsiet šajā ierīcē pašlaik esošās grāmatzīmes un sāciet grāmatzīmju sinhronizāciju ar kontu <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Pievienojiet šajā ierīcē pašlaik esošās grāmatzīmes un sāciet grāmatzīmju sinhronizāciju ar kontu <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Dzēst grāmatzīmes"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Nākamais"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Iepriekšējais"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Atcelt"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Gatavs"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Pievienot grāmatzīmes Google kontam"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Pakalpojums Google ar dinamisko meklēšanu (Laboratorijas)"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 0584755..18007c7 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Lagre siden"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Siden ble lagret."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Fikk ikke lagret siden."</string>
     <string name="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>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"Blokker 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>
+    <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>
+    <string name="pref_general_autofill_title" msgid="547881256865816858">"Automatisk utfylling"</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,16 @@
     <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>
+    <string name="pref_autofill_enabled" msgid="1015751713312396713">"Automatisk utfylling av skjema"</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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Fyll inn data automatisk"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Skriv inn og lagre data for automatisk utfylling av nettskjemafelter"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Pålogging til Google-nettsteder ved hjelp av <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Automatisk pålogging er tilgjengelig."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Logg på"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Pålogging mislyktes."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Skriv inn dataene du vil fylle inn automatisk når du trykker på felter på nettet."</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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Autofyll kan alltid konfigureres via nettleserinnstillingene."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Deaktiver automatisk utfylling"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Hurtigkontroller"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Sveip fra venstre mot høyre kant for å bruke hurtigkontr. og skjule app- og nettadresserader"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Mest besøkte startside"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Startsiden viser dine mest besøkte nettsider."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Bruk Google Instant når du bruker Google Søk for å vise resultater mens du skriver (dette kan gi økt databruk)."</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Datatilkoblingsproblem"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem med fil"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bekreft"</string>
@@ -316,6 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Bokmerkene som er på enheten nå er foreløpig ikke knyttet til en Google-konto. Du kan lagre bokmerkene ved å legge dem til en konto. Slett bokmerkene hvis du ikke ønsker å synkronisere dem."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Legg til bokmerkene som er på enheten nå, og start synkronisering med en Google-konto"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Slett bokmerkene som er på enheten nå, og start synkronisering med en Google-konto"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Slett bokmerkene som er på enheten nå, og start synkronisering av bokmerker med <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Legg til bokmerkene som er på enheten nå, og start synkronisering av bokmerker med <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Slett bokmerker"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Neste"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Forrige"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Avbryt"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Fullført"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Legg til bokmerker til en Google-konto"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google med Instant (Labs)"</string>
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 6152107..8c25469 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Pagina opslaan"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Pagina opgeslagen."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Opslaan van pagina mislukt."</string>
     <string name="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>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"Pop-ups 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>
+    <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>
+    <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,16 @@
     <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>
+    <string name="pref_autofill_enabled" msgid="1015751713312396713">"Formulier automatisch invullen"</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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Gegevens automatisch aanvullen"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Gegevens invoeren en opslaan voor automatisch invullen van velden in webformulieren"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Aanmelden bij Google-sites met <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Automatisch aanmelden is beschikbaar."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Aanmelden"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Aanmelden mislukt."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Geef de gegevens op die u automatisch in webvelden wilt laten invullen wanneer u ze aanraakt."</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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"U kunt Automatisch aanvullen altijd configureren via de browserinstellingen."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Automatisch aanvullen uitschakelen"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Snelle bedieningselementen"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Schuif vanaf links of rechts voor Quick Controls en om app- en URL-balken te verbergen"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Meest bezochte startpagina"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Op uw startpagina staan uw meest bezochte webpagina\'s."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Gebruik Google Instant bij Google Zoeken voor resultaten tijdens het typen (kan resulteren in meer gegevensverbruik)."</string>
     <string name="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 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Bladwijzers op dit apparaat zijn nog niet gekoppeld aan een Google-account. Sla deze bladwijzers op door ze toe te voegen aan een account. Verwijder deze bladwijzers als u ze niet wilt synchroniseren."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Huidige bladwijzers op dit apparaat toevoegen en synchronisatie met Google-account starten"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Huidige bladwijzers op dit apparaat verwijderen en synchronisatie met Google-account starten"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Verwijder huidige bladwijzers op dit apparaat en start de synchronisatie van bladwijzers met <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Voeg huidige bladwijzers op dit apparaat toe en start de synchronisatie van bladwijzers met <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Bladwijzers verwijderen"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Volgende"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Vorige"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Annuleren"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Gereed"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Bladwijzers toevoegen aan Google-account"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google met Instant (Labs)"</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 1dcb99e..e686328 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Zapisz stronę"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Strona została zapisana."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Nie można zapisać strony."</string>
     <string name="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>
+    <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>
+    <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, by dopasować je 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>
+    <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 oraz dane między przeglądarką Androida i Google Chrome"</string>
     <string name="pref_personal_google_account" msgid="952360133341490071">"Konto Google"</string>
@@ -166,16 +166,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Dane autouzupełniania"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Wpisz i zachowaj dane, które chcesz automatycznie uzupełniać w formularzach internetowych"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Logowanie w witrynach Google za pomocą identyfikatora <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Automatyczne logowanie jest dostępne."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Zaloguj"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Niepowodzenie logowania."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Wprowadź dane, które chcesz automatycznie umieszczać w formularzach internetowych."</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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Autouzupełnianie można zawsze skonfigurować w ustawieniach przeglądarki."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Wyłącz autouzupełnianie"</string>
+    <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 +269,12 @@
   </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">"Przejedź palcem od bocznej krawędzi ekranu, aby wyświetlić opcje 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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Szybkie sterowanie"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Przesuń kciukiem od lewej lub prawej, aby użyć szybkiego sterowania oraz ukryć paski aplikacji i URL"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Najczęściej odwiedzane na stronie głównej"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Na stronie głównej wyświetlane są najczęściej odwiedzane strony internetowe."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Wyszukiwanie dynamiczne Google"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Użyj wyszukiwania dynamicznego Google, aby uzyskiwać wyniki podczas pisania (może być pobierana większa ilość danych)."</string>
     <string name="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 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Zakładki na tym urządzeniu nie są powiązane z kontem Google. Możesz je zapisać, dodając do konta, a jeśli nie chcesz ich synchronizować, po prostu je usuń."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Dodaj bieżące zakładki z tego urządzenia i rozpocznij synchronizację zakładek z kontem Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Usuń bieżące zakładki z tego urządzenia i rozpocznij synchronizację zakładek z kontem Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Usuń bieżące zakładki z tego urządzenia i rozpocznij synchronizację zakładek z kontem <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Dodaj bieżące zakładki z tego urządzenia i rozpocznij synchronizację zakładek z kontem <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Usuń zakładki"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Dalej"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Wstecz"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Anuluj"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Gotowe"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Dodaj zakładki do konta Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google z wyszukiwaniem dynamicznym (Laboratorium)"</string>
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 5846b16..a9017fb 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Guardar página"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Página guardada."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Ocorreu uma falha ao guardar a página."</string>
     <string name="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>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"Bloquear pop-ups"</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>
+    <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>
+    <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,16 @@
     <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>
+    <string name="pref_autofill_enabled" msgid="1015751713312396713">"Preench. automático formulários"</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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Preencher dados automaticamente"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Introduzir e guardar dados de campos de formulários Web de preenchimento automático"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Iniciar sessão em Web sites do Google utilizando <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Início sessão automático disponível."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"In. sessão"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Falha ao iniciar sessão."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Introduza os dados que pretende preencher automaticamente nos campos Web quando tocar nos mesmos."</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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"O Preenchimento automático pode sempre ser configurado através das Definições do navegador."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Desativar preenchimento automático"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controlos rápidos"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Deslize polegar margem esq. ou dir. p/ aceder contr. rápidos e ocultar barras Aplicação e URL"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Página inicial mais visitada"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"A sua página inicial apresenta as páginas Web mais visitadas."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instantâneo"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Utilize Google Instantâneo na Pesquisa do Google para mostrar resultados quando escreve (pode aumentar utiliz. dados)."</string>
     <string name="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 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Os marcadores neste aparelho ainda não estão associados a uma Conta Google. Guarde estes marcadores, adicionando-os a uma conta ou elimine-os se não pretender sincronizá-los."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Adicione marcadores atualmente neste aparelho e comece a sincronizar com a Conta Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Elimine marcadores atualmente neste aparelho e comece a sincronizar com a Conta Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Elimine marcadores atualmente neste aparelho e comece a sincronizar marcadores com <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Adicione marcadores atualmente neste aparelho e comece a sincronizar marcadores com <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Eliminar marcadores"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Seguinte"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Anterior"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Cancelar"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Concluído"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Adicionar marcadores à Conta Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google com Instantâneo (Labs)"</string>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 86ddbff..baa56ab 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Salvar a página"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Página salva."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Falha ao salvar página."</string>
     <string name="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>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"Bloquear pop-ups"</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>
+    <string name="pref_content_homepage" msgid="3324574611613105696">"Definir 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>
+    <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">"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,16 @@
     <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>
+    <string name="pref_autofill_enabled" msgid="1015751713312396713">"Preenchim. autom. do formulário"</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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Dados de preenchim. autom."</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Inserir e salvar dados para preencher automaticamente os campos dos formulários da web"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Faça login nos sites do Google usando <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"O login automático está disponível."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Fazer login"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Falha de login."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Insira os dados que deseja preencher automaticamente em campos da web ao tocá-los."</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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"O preenchimento automático sempre pode ser configurado através das configurações do navegador."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Desativar o preenchimento automático"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controles rápidos"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Deslize o polegar da esqu. ou dir. para acessar controles rápidos e ocultar barras de apps e URL"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Páginas mais visitadas"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Sua página inicial exibe as páginas da web mais visitadas."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Use o Google Instant ao usar a Pesquisa Google para exibir resultados enquanto digita (o uso de dados pode aumentar)."</string>
     <string name="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 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Os favoritos localizados neste dispositivo ainda não estão associados a uma Conta do Google. Salve esses favoritos adicionando-os a uma conta. Exclua-os se não desejar sincronizá-los."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Adicione os favoritos localizados atualmente neste dispositivo e comece a sincronizá-los com a Conta do Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Exclua os favoritos localizados atualmente neste dispositivo e comece a sincronizar com a Conta do Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Exclua os favoritos localizados atualmente neste dispositivo e comece a sincronizá-los com <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Adicione os favoritos localizados atualmente neste dispositivo e comece a sincronizá-los com <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Excluir favoritos"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Avançar"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Anterior"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Cancelar"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Concluído"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Adicione os favoritos à Conta do Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google com Instant (Labs)"</string>
 </resources>
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index 777e778..5cabaa0 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,25 +198,25 @@
     <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 />
-    <!-- no translation found for pref_autologin_no_account (4409223615542478868) -->
+    <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
     <skip />
-    <!-- no translation found for pref_autologin_summary (8168866316823968574) -->
+    <!-- no translation found for autologin_bar_text (8013977161879448141) -->
     <skip />
-    <!-- no translation found for pref_autologin_progress (8643826219376543293) -->
+    <!-- no translation found for autologin_bar_login_text (7052816600314556734) -->
     <skip />
-    <!-- no translation found for pref_autologin_disable (3342145058494577628) -->
+    <!-- no translation found for autologin_bar_error (5132514366023044839) -->
     <skip />
-    <!-- no translation found for autofill_profile_editor_heading (5009490178189728877) -->
+    <!-- no translation found for autofill_profile_editor_heading (8392952553626722083) -->
     <skip />
     <!-- no translation found for autofill_profile_editor_name (8566130291459685955) -->
     <skip />
@@ -253,11 +254,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 +338,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 +394,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 +448,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 +476,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 75de2a9..53c3e97 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>
@@ -97,7 +98,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>
@@ -110,9 +110,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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Salvaţi pagina"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Pagina a fost salvată."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Pagina nu a fost salvată."</string>
     <string name="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>
@@ -137,7 +137,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>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"Blocaţi ferestre 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>
@@ -147,7 +147,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>
+    <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>
@@ -158,7 +158,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>
+    <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>
@@ -166,16 +166,16 @@
     <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>
+    <string name="pref_autofill_enabled" msgid="1015751713312396713">"Completare automată formular"</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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Date completare automată"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Introduceţi şi salvaţi date pentru completarea automată a câmpurilor din formularele web"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Se conectează la site-urile Google utilizând <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Este disponibilă conectarea automată."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Conectare"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Conectare eşuată."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Introduceţi datele care se vor completa automat în câmpurile web, atunci când le atingeţi."</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>
@@ -194,9 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Completarea automată poate fi configurată oricând din Setările browserului."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Dezactivaţi completarea automată"</string>
+    <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>
@@ -269,10 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Comenzi rapide"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Glis. deg. mare din marg. st. sau dr. şi acc. com. rapide/asc. bar. Apl. şi URL"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Pagina de pornire cea mai accesată"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Pagina dvs. de pornire afişează paginile web cele mai accesate."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Utilizaţi Google Instant în Căutarea Google şi vedeţi rezultate în timp ce introd. text (creşte vol. de date utilizate)."</string>
     <string name="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>
@@ -316,6 +318,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>
@@ -364,9 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Marcajele de pe acest dispozitiv nu sunt asociate încă unui Cont Google. Salvaţi marcajele prin adăugarea lor într-un cont. Ştergeţi marcajele dacă nu doriţi sincronizarea acestora."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Adăugaţi marcajele curente de pe acest dispozitiv şi începeţi sincronizarea cu Contul Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Ştergeţi marcajele curente de pe acest dispozitiv şi începeţi sincronizarea cu Contul Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Ştergeţi marcajele curente de pe acest dispozitiv şi începeţi sincronizarea marcajelor cu <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Adăugaţi marcajele curente de pe acest dispozitiv şi începeţi sincronizarea acestora cu <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Ştergeţi marcajele"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Înainte"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Înapoi"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Anulaţi"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Terminat"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Adăugaţi marcajele în Contul Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google cu Instant (Google Labs)"</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 8598f1d..5c3ae46 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Сохранить страницу"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Страница сохранена."</string>
+    <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>
+    <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>
+    <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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Автозаполнение"</string>
+    <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">"Выполняется вход в <xliff:g id="ID_1">%s</xliff:g>"\n"Автоматический вход настраивается в меню \"Конфиденциальность и безопасность\""</string>
-    <string name="pref_autologin_disable" msgid="3342145058494577628">"Запретить автоматический вход"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Автозаполнение будет использовать ваш профиль, чтобы вы могли заполнять веб-формы одним щелчком."</string>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Вход в Сайты Google с помощью аккаунта <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Доступен автоматический вход."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Войти"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Вход не выполнен."</string>
+    <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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Автозаполнение всегда можно настроить в меню \"Настройки браузера\"."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Отключить автозаполнение"</string>
+    <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>
@@ -248,7 +248,7 @@
     <string name="pref_content_load_page" msgid="2219810141690955452">"Обзор страниц"</string>
     <string name="pref_content_load_page_summary" msgid="8792093504054149369">"Открывать страницы в мелком маштабе для ознакомления"</string>
     <string name="pref_extras_title" msgid="7075456173747370647">"Дополнительные функции"</string>
-    <string name="pref_extras_website_settings" msgid="67866640052455549">"Настройки веб-сайтов"</string>
+    <string name="pref_extras_website_settings" msgid="67866640052455549">"Настройки веб-сайта"</string>
     <string name="pref_extras_website_settings_summary" msgid="1656771443223494406">"Дополнительные настройки для отдельных сайтов"</string>
     <string name="pref_extras_reset_default_title" msgid="3579760449455761762">"Сброс настроек"</string>
     <string name="pref_extras_reset_default" msgid="8904000515846202110">"Сброс настроек"</string>
@@ -269,10 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Панель инструментов"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Чтобы открыть панель инструментов, скрыв адресную строку и панель приложений, проведите пальцем в правом или левом углу экрана"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"\"Часто посещаемые\" на стартовой странице"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Отображение часто посещаемых веб-сайтов на стартовой странице."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Живой поиск"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"В Живом поиске результаты появляются прямо при вводе текста (возможно увеличение объема передаваемых данных)."</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблема с подключением"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблема с файлом"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Подтвердить"</string>
@@ -316,6 +318,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>
@@ -341,11 +344,11 @@
     <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"Объем занятой памяти телефона (МБ)"</string>
     <string name="loading_video" msgid="4887871585216091096">"Загрузка видео"</string>
     <string name="geolocation_permissions_prompt_message" msgid="356796102004052471">"<xliff:g id="WEBSITE_ORIGIN">%s</xliff:g> запрашивает данные о вашем местоположении"</string>
-    <string name="geolocation_permissions_prompt_share" msgid="9084486342048347976">"Разрешить"</string>
+    <string name="geolocation_permissions_prompt_share" msgid="9084486342048347976">"Сообщить местоположение"</string>
     <string name="geolocation_permissions_prompt_dont_share" msgid="6303025160237860300">"Отклонить"</string>
     <string name="geolocation_permissions_prompt_remember" msgid="3118526300707348308">"Запомнить настройки"</string>
-    <string name="geolocation_permissions_prompt_toast_allowed" msgid="987286072035125498">"У этого сайта есть доступ к данным о вашем местоположении. Для изменения параметров доступа выберите Настройки -&gt; Настройки веб-сайтов"</string>
-    <string name="geolocation_permissions_prompt_toast_disallowed" msgid="7695100950212692515">"У этого сайта нет доступа к данным о вашем местоположении. Для изменения параметров доступа выберите Настройки -&gt; Настройки веб-сайтов"</string>
+    <string name="geolocation_permissions_prompt_toast_allowed" msgid="987286072035125498">"У этого сайта есть доступ к данным о вашем местоположении. Для изменения параметров доступа выберите Настройки -&gt; Настройки веб-сайта"</string>
+    <string name="geolocation_permissions_prompt_toast_disallowed" msgid="7695100950212692515">"У этого сайта нет доступа к данным о вашем местоположении. Для изменения параметров доступа выберите Настройки -&gt; Настройки веб-сайта"</string>
     <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Закрыть геоданные"</string>
     <string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Этот сайт сейчас имеет доступ к вашему местоположению"</string>
     <string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Этот сайт в настоящее время не имеет доступа к вашему местоположению"</string>
@@ -364,9 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Закладки на этом устройстве пока не связаны с аккаунтом Google. Чтобы сохранить и синхронизировать эти закладки, добавьте их в аккаунт. В противном случае просто удалите их."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Добавить закладки, имеющиеся на этом устройстве, и начать синхронизацию с аккаунтом Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Удалить закладки, имеющиеся на этом устройстве, и начать синхронизацию с аккаунтом Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Удалить закладки, имеющиеся на этом устройстве, и начать синхронизацию закладок с аккаунтом <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>?"</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Добавить закладки, имеющиеся на этом устройстве, и начать синхронизацию закладок с аккаунтом <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>?"</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Удалить закладки"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Далее"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Назад"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Отмена"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Готово"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Добавить закладки в аккаунт Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google с Живым поиском (Лаборатория Google)"</string>
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index c83c2d0..12a0aed 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>
@@ -97,7 +98,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>
@@ -110,9 +110,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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Uložiť stránku"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Stránka bola uložená."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Ukladanie stránky zlyhalo."</string>
     <string name="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>
@@ -137,7 +137,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>
+    <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>
@@ -147,7 +147,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>
+    <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>
@@ -158,7 +158,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>
+    <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>
@@ -166,16 +166,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Automatické dopĺňanie údajov"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Zadajte a uložte údaje pre automatické dopĺňanie polí webový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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Prihlasovanie na stránky Google pomocou používateľského mena <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Automatické prihlásenie je k dispozícii."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Prihlásiť"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Prihlásenie zlyhalo."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Zadajte údaje, ktoré sa majú pri dotyku automaticky doplniť do webových polí."</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>
@@ -194,9 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automatické dopĺňanie môžete kedykoľvek nakonfigurovať v Nastaveniach prehliadača."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Zakázať automatické dopĺňanie"</string>
+    <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>
@@ -269,10 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Rýchle ovládacie prvky"</string>
+    <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 a skryjete panely aplikácií a adresy URL"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Najviac navštevovaná domovská stránka"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Na vašej domovskej stránke sa zobrazujú najviac navštevované webové stránky."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Dynamické vyhľadávanie Google"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Ak chcete zobrazovať výsl. počas zadávania textu, použite Dynamické vyhľ. Google (môže sa zvýšiť spotr. údajov)."</string>
     <string name="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>
@@ -316,6 +318,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>
@@ -364,9 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Záložky na tomto zariadení ešte nie sú priradené k účtu Google. Pridaním záložiek k účtu ich uložíte. Ak záložky nechcete synchronizovať, odstráňte ich."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Pridať záložky aktuálne sa nachádzajúce na tomto zariadení a začať synchronizáciu s účtom Google."</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Odstrániť záložky aktuálne sa nachádzajúce na tomto zariadení a začať synchronizáciu s účtom Google."</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Odstrániť záložky aktuálne sa nachádzajúce na tomto zariadení a začať synchronizáciu záložiek s účtom <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Pridať záložky aktuálne sa nachádzajúce na tomto zariadení a začať synchronizáciu záložiek s účtom <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Odstrániť záložky"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Ďalej"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Predchádzajúca"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Zrušiť"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Hotovo"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Pridať záložky do účtu Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google s Dynamickým vyhľadávaním (Labs)"</string>
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 990faee..b153da3 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>
@@ -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">"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>
@@ -110,9 +110,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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Shrani stran"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Stran je shranjena."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Shranjevanje strani ni uspelo."</string>
     <string name="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>
@@ -137,7 +137,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>
+    <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>
@@ -147,7 +147,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>
+    <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>
@@ -158,7 +158,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>
+    <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>
@@ -166,16 +166,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Samodejno izpolnjevanje podatkov"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Vnesite in shranite podatke za samodejno izpolnjevanje polj v spletnih obrazcih"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Prijavljanje v Google Spletna mesta z <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Na voljo je samodejna prijava."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Prijava"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Prijava ni uspela."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Vnesite podatke, za katere želite, da se samodejno vnesejo v spletna polja, ko se jih dotaknete."</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>
@@ -194,9 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Samodejno izpolnjevanje lahko nastavite v nastavitvah brskalnika."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Onemogoči samodejno izpolnjevanje"</string>
+    <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>
@@ -269,10 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Hitri kontrolniki"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Povlecite palec z l./d. roba za hitre kontr. in skrivanje vrstic Program in URL"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Stran »Najpogosteje obiskana mesta«"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Na domači strani so prikazane najpogosteje obiskane spletne strani."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Dinamično iskanje"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Če uporabljate Google Dinamično iskanje, se rezultati prikazujejo že med tipkanjem, kar lahko poveča porabo podatkov."</string>
     <string name="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>
@@ -316,6 +318,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>
@@ -364,9 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Zaznamki v tej napravi še niso povezani z Google Računom. Shranite jih tako, da jih dodate v račun. Če jih ne želite sinhronizirati, jih izbrišite."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Dodaj zaznamke trenutno v napravi in začni sinhronizacijo z Google Računom"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Izbriši zaznamke trenutno v napravi in začni sinhronizacijo z Google Računom"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Izbriši trenutne zaznamke v napravi in začni sinhronizacijo zaznamkov z računom <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Dodaj zaznamke trenutno v napravi in začni sinhronizacijo zaznamkov z računom <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Izbriši zaznamke"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Naprej"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Nazaj"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Prekliči"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Končano"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Dodaj zaznamke v Google Račun"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google z Dinamičnim iskanjem (Labs)"</string>
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 2c49831..77a0145 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>
@@ -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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Сачувај страницу"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Страница је сачувана."</string>
+    <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>
+    <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>
+    <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">"Општa"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"Синхронизација"</string>
-    <string name="pref_general_autofill_title" msgid="64638897890112873">"Аутоматско попуњавање"</string>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Аутоматски попуни податке"</string>
+    <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>
-    <string name="pref_autologin_disable" msgid="3342145058494577628">"Не пријављуј ме аутоматски"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Аутоматско попуњавање ће користити ваш профил како би вам помогло у попуњавању веб образаца једним кликом."</string>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Пријављивање на Google сајтове помоћу <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Аутоматско пријављивање је доступно."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Пријави ме"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Пријављивање није успело."</string>
+    <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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Аутоматско попуњавање увек можете да конфигуришете у Подешавањима прегледача."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Онемогући аутоматско попуњавање"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Брзе контроле"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Листањем са леве или десне ивице приступа се брзим контролама и сакривају траке Апликације и URL адресе"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Најпосећенија почетна страница"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Почетна страница приказује веб странице које најчешће посећујете."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google инстант"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Користите Google инстант са Google претрагом да бисте видели резултате док куцате (то може да повећа употребу података)."</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблем при повезивању са подацима"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблем са датотеком"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Потврда"</string>
@@ -316,6 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Обележивачи на овом уређају још увек нису повезани са Google налогом. Сачувајте  oве обележиваче тако што ћете их додати на налог. Избришите их уколико не желите да их синхронизујете."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Додајте обележиваче који се тренутно налазе на овом уређају и започните синхронизовање са Google налогом"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Избришите обележиваче који се тренутно налазе на овом уређају и започните синхронизовање са Google налогом"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Избришите обележиваче који се тренутно налазе на овом уређају и започните синхронизовање обележивача са налогом <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Додајте обележиваче који се тренутно налазе на овом уређају и започните синхронизовање обележивача са налогом <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Избриши обележиваче"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Следеће"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Претходно"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Откажи"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Готово"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Додај обележиваче на Google налог"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google са Инстантом (Labs)"</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 6e23ccb..35715ff 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Spara sida"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Sidan har sparats."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Sidan kunde inte sparas."</string>
     <string name="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>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"Blockera popupfö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>
+    <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>
+    <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,16 @@
     <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>
+    <string name="pref_autofill_enabled" msgid="1015751713312396713">"Fyll i formulär automatiskt"</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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Fyll i data automatiskt"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Ange och spara data för automatisk ifyllning av webbformulärfält"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Loggar in på Google Sites med <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Automatisk inloggning är tillgänglig."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Logga in"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Misslyckad inloggning."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Ange de data som du vill ska fyllas i automatiskt i webbformulär när du trycker på dem."</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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Du kan när som helst ändra inställningarna för Autofyll bland inställningarna för webbläsaren."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Inaktivera Autofyll"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Snabbkontroller"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Svep från vänster eller höger så visas snabbkontrollerna och program- och adressfälten döljs"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Mest besökt startsida"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"På startsidan visas de webbplatser du besöker oftast."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Använd Google Instant när du söker på Google så får du resultat medan du skriver (detta kan öka dataanvändningen)."</string>
     <string name="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 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Det finns bokmärken på enheten som inte har kopplats till något Google-konto än. Du sparar dessa bokmärken genom att lägga till dem i ett konto. Ta bort dem om du inte vill att de ska synkroniseras."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Lägg till de bokmärken som finns på enheten för närvarande och börja synkronisera med Google-kontot"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Ta bort de bokmärken som finns på enheten för närvarande och börja synkronisera med Google-kontot"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Ta bort de bokmärken som finns på enheten för närvarande och börja synkronisera bokmärken med <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Lägg till de bokmärken som finns på enheten för närvarande och börja synkronisera bokmärken med <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Ta bort bokmärken"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Nästa"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Föregående"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Avbryt"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Klar"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Lägg till bokmärken i Google-kontot"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google med Instant (Labs)"</string>
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 35307d7..97e9d23 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"บันทึกหน้าเว็บ"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"บันทึกหน้าเว็บแล้ว"</string>
+    <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>
+    <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>
+    <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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"ป้อนข้อมูลอัตโนมัติ"</string>
+    <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>
-    <string name="pref_autologin_disable" msgid="3342145058494577628">"อย่าลงชื่อเข้าใช้โดยอัตโนมัติ"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"การป้อนอัตโนมัติจะใช้โปรไฟล์ของคุณเพื่อช่วยให้คุณกรอกเว็บฟอร์มได้ในคลิกเดียว"</string>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"ลงชื่อเข้าใช้ Google Sites โดยใช้ <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"การลงชื่อเข้าใช้อัตโนมัติพร้อมใช้งาน"</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"ลงชื่อเข้าใช้"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"ลงชื่อเข้าใช้ล้มเหลว"</string>
+    <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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"การป้อนอัตโนมัติสามารถกำหนดค่าผ่านการตั้งค่าเบราว์เซอร์"</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"ปิดใช้งานการป้อนอัตโนมัติ"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"การควบคุมอย่างรวดเร็ว"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"กวาดหัวแม่มือจากซ้ายหรือขวาเพื่อการควบคุมที่รวดเร็วและซ่อนแอปพลิเคชันและแถบ URL"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"หน้าแรกที่เข้าชมบ่อยที่สุด"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"หน้าแรกของคุณจะแสดงหน้าเว็บที่เข้าชมบ่อยที่สุด"</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google ค้นหาทันใจ"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"ใช้ Google ค้นหาทันใจเมื่อคุณใช้ Google Search เพื่อแสดงผลการค้นหาในขณะที่คุณพิมพ์ (ซึ่งสามารถเพิ่มการใช้งานข้อมูล)"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"ปัญหาการเชื่อมต่อข้อมูล"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"ปัญหาเกี่ยวกับไฟล์"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"ยืนยัน"</string>
@@ -316,6 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"บุ๊กมาร์กในอุปกรณ์นี้ยังไม่ได้เชื่อมโยงกับบัญชี Google บันทึกบุ๊กมาร์กเหล่านี้โดยเพิ่มบุ๊กมาร์กไปยังบัญชี ลบบุ๊กมาร์กเหล่านี้หากคุณไม่ต้องการซิงค์"</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"เพิ่มบุ๊กมาร์กที่มีอยู่ในอุปกรณ์นี้และเริ่มซิงค์ข้อมูลกับบัญชี Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"ลบบุ๊กมาร์กที่มีอยู่ในอุปกรณ์นี้และเริ่มซิงค์ข้อมูลกับบัญชี Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"ลบบุ๊กมาร์กที่มีอยู่ในอุปกรณ์นี้และเริ่มซิงค์ข้อมูลบุ๊กมาร์กกับ <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"เพิ่มบุ๊กมาร์กที่มีอยู่ในอุปกรณ์นี้และเริ่มซิงค์ข้อมูลบุ๊กมาร์กกับ <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"ลบบุ๊กมาร์ก"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"ถัดไป"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"ก่อนหน้า"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"ยกเลิก"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"เสร็จสิ้น"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"เพิ่มบุ๊กมาร์กไปยังบัญชี Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google พร้อมการค้นหาทันใจ (Labs)"</string>
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 4b306b4..cf791c4 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>
@@ -97,7 +98,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>
@@ -110,9 +110,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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"I-save ang pahina"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Na-save na ang pahina."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Nabigong ma-save ang pahina."</string>
     <string name="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>
@@ -137,7 +137,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>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"I-block ang mga pop-up"</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>
@@ -147,7 +147,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>
+    <string name="pref_content_homepage" msgid="3324574611613105696">"Magtakda ng homepage"</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>
@@ -158,7 +158,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>
+    <string name="pref_general_autofill_title" msgid="547881256865816858">"Auto-fill"</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>
@@ -166,16 +166,16 @@
     <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>
+    <string name="pref_autofill_enabled" msgid="1015751713312396713">"Bumuo ng auto-fill"</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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Data ng auto-fill"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Ilagay at i-save ang data para sa mga field ng form ng web sa pag-auto-fill"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Pag-sign in sa mga site ng Google gamit ang <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Available ang awtomatikong pag-sign in."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Mag-login"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Nabigo ang pag-login."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Ilagay ang data na gusto mong i-auto-fill sa mga field ng web kapag hinawakan mo ang mga ito."</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>
@@ -194,9 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Mako-configure anumang oras ang auto-fill sa pamamagitan ng Mga Setting ng Browser."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Huwag paganahin ang auto-fill"</string>
+    <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>
@@ -269,10 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Mga mabilis na pagkontrol"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"I-swipe thumb sa kaliwa o kanan gilid para access bilis kontrol at itago Application at URL bar"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Pinaka-nabibisitang homepage"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Ipinapakita ng iyong homepage ang iyong pinaka-nabibisitang mga webpage."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Gamit Google Instant pag gumamit ka Google Search, para magpakita resulta habang type ka (mapataas nito paggamit data)."</string>
     <string name="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>
@@ -316,6 +318,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>
@@ -364,9 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Hindi pa nauugnay sa Google account ang mga bookmark sa device na ito. I-save ang mga bookmark na ito sa pamamagitan ng pagdaragdag sa mga ito sa isang account. Tanggalin ang mga bookmark na ito kung ayaw mong i-sync ang mga ito."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Magdagdag ng mga bookmark na kasalukuyang nasa device na ito at simulan ang pag-sync sa Google Account"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Magtanggal ng mga bookmark na kasalukuyang nasa device na ito at simulan ang pag-synchronize sa Google Account"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Tanggalin ang mga bookmark na kasalukuyang nasa device na ito at simulan ang pag-synchronize ng mga bookmark gamit ang <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Magdagdag ng mga bookmark na kasalukuyang nasa device na ito at simulan ang pag-synchronize ng mga bookmark sa <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Magtanggal ng mga bookmark"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Susunod"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Nakaraan"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Kanselahin"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Tapos na"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Magdagdag ng mga bookmark sa Google Account"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google na mayroong Instant (Labs)"</string>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 9ca233a..9896e0c 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Sayfayı kaydet"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Sayfa kaydedildi."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Sayfa kaydedilemedi."</string>
     <string name="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>
+    <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>
+    <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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Otomatik doldurma verileri"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Web formu alanlarının otomatik olarak doldurulması için verileri girin ve kaydedin"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"<xliff:g id="ID_1">%s</xliff:g> kullanılarak Google sitelerinde oturum açılıyor"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Otomatik oturum açma kullanılabilir."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Giriş yap"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Giriş yapılamadı."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Dokunduğunuz web alanlarına otomatik olarak doldurulmasını istediğiniz verileri girin."</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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Otomatik doldurmayı istediğiniz zaman Tarayıcı Ayarları\'ndan yapılandırabilirsiniz."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Otomatik doldurmayı devre dışı bırak"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Hızlı denetimler"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Hızlı dentmlr erşmk, Uyg ve URL çubklr gizlmk için başprmğnzı sol veya sağ kenrdn hızlc kaydrn"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"En çok ziyaret edilen ana sayfa"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Ana sayfanızda en sık ziyaret edilen web sayfaları görüntülenir."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Anında Arama"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Yazarken sonuçların görüntülenmesi için, Google Arama\'yı kullanırken Google Anında Arama\'dan yararlanın (veri kullanımını artırabilir)."</string>
     <string name="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 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Bu cihazdaki yer işaretleri henüz bir Google hesabıyla ilişkilendirilmemiş. Yer işaretlerini bir hesaba ekleyerek kaydedin. Bu yer işaretlerini senkronize etmek istemiyorsanız silin."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Bu cihazdaki mevcut yer işaretlerini ekleyin ve Google Hesabı ile senkronize etmeye başlayın"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Bu cihazdaki mevcut yer işaretlerini silin ve Google Hesabı ile senkronize etmeye başlayın"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Bu cihazdaki mevcut yer işaretlerini silin ve <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> ile yer işaretlerini senkronize etmeye başlayın."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Bu cihazdaki mevcut yer işaretlerini ekleyin ve <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> ile yer işaretlerini senkronize etmeye başlayın."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Yer işaretlerini sil"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Sonraki"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Önceki"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"İptal"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Bitti"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Yer işaretlerini Google Hesabına ekle"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Anında Arama ile Google (Labs)"</string>
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 50aacb9..eec1e19 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>
@@ -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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Зберегти сторінку"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Сторінку збережено."</string>
+    <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>
+    <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>
+    <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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Дані автозаповнення"</string>
+    <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>
-    <string name="pref_autologin_disable" msgid="3342145058494577628">"Не входити автоматично"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"Функція \"Автозаповнення\" буде використовувати ваш профіль, щоб заповнювати веб-форми за допомогою лише одного кліка."</string>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Вхід у Google Sites за допомогою <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Доступний автоматичний вхід."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Увійти"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Помилка входу."</string>
+    <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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Автозаповнення завжди можна налаштувати в налаштуваннях веб-переглядача."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Вимкнути автозаповнення"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Швидкі елементи керування"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Гортайте зліва чи справа, щоб відкрити швидкі елем. керування та сховати панелі програми й URL"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Найчастіше відвідувана домашня сторінка"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"На вашій домашній сторінці відображаються найчастіше відвідувані веб-сторінки."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Миттєвий пошук Google"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Використовуйте Миттєвий пошук у пошуку Google для відображ. результ. під час введення (може збільшитись викорис. даних)."</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблема з доступом до даних"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблема з файлом"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Підтверд."</string>
@@ -316,6 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Закладки на цьому пристрої ще не пов’язано з обліковим записом Google. Збережіть ці закладки, додавши їх до облікового запису. Якщо не хочете синхронізувати закладки, видаліть їх."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Додати поточні закладки на цьому пристрої та розпочати синхронізацію з обліковим записом Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Видалити поточні закладки на цьому пристрої та розпочати синхронізацію з обліковим записом Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Видалити поточні закладки на цьому пристрої та розпочати синхронізацію закладок із <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Додати поточні закладки на цьому пристрої та розпочати синхронізацію закладок із <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Видалити закладки"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Далі"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Назад"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Скасувати"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Готово"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Додати закладки до облікового запису Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google із Миттєвим пошуком (Лабораторії)"</string>
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index a58a7be..d5010a4 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>
@@ -97,7 +98,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>
@@ -110,9 +110,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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"Lưu trang"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"Đã lưu trang."</string>
+    <string name="webarchive_failed" msgid="19950914584285713">"Không thể lưu trang."</string>
     <string name="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>
@@ -137,7 +137,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>
+    <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>
@@ -147,7 +147,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>
+    <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>
@@ -158,7 +158,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>
+    <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>
@@ -166,16 +166,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Tự động điền dữ liệu"</string>
+    <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Nhập và lưu dữ liệu cho các trường tự động điền biểu mẫu web"</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>
-    <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>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"Đang đăng nhập vào trang web Google bằng <xliff:g id="ID_1">%s</xliff:g>"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"Tính năng đăng nhập tự động hiện khả dụng."</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"Đăng nhập"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"Đăng nhập không thành công."</string>
+    <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Nhập dữ liệu bạn muốn để tự động điền vào các trường trên web khi bạn gặp chúng."</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>
@@ -194,9 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Luôn có thể định cấu hình tính năng Tự động điền thông qua Cài đặt trình duyệt."</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"Tắt tính năng tự động điền"</string>
+    <string name="pref_privacy_security_title" msgid="3480313968942160914">"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>
@@ -269,10 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Các điều khiển nhanh"</string>
+    <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 và ẩn các thanh Ứng dụng và URL"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Trang chủ được truy cập nhiều nhất"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Trang chủ hiển thị các trang web được truy cập nhiều nhất của bạn."</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Sử dụng Google Instant khi bạn sử dụng Tìm kiếm của Google để hiển thị kết quả khi nhập (điều này có thể tăng việc sử dụng dữ liệu)."</string>
     <string name="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>
@@ -316,6 +318,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>
@@ -364,9 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Các dấu trang trên thiết bị này hiện chưa được liên kết với tài khoản Google. Lưu các dấu trang này bằng cách thêm chúng vào tài khoản. Xóa các dấu trang này nếu bạn không muốn đồng bộ hóa chúng."</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Thêm dấu trang hiện tại trên thiết bị này và bắt đầu đồng bộ hóa với Tài khoản Google"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Xóa dấu trang hiện tại trên thiết bị này và bắt đầu đồng bộ hóa với Tài khoản Google"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Xóa dấu trang hiện tại trên thiết bị này và bắt đầu đồng bộ hóa dấu trang với <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Thêm dấu trang hiện tại trên thiết bị này và bắt đầu đồng bộ hóa dấu trang với <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Xóa dấu trang"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Tiếp theo"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Trước"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Hủy"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Xong"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Thêm dấu trang vào Tài khoản Google"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"Google với tính năng Instant (Labs)"</string>
 </resources>
diff --git a/res/values-xlarge-port/dimensions.xml b/res/values-xlarge-port/dimensions.xml
index f891396..7c0d447 100644
--- a/res/values-xlarge-port/dimensions.xml
+++ b/res/values-xlarge-port/dimensions.xml
@@ -12,8 +12,8 @@
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <dimen name="widgetThumbnailHeight">84dip</dimen>
-    <dimen name="widgetHorizontalSpacing">10dip</dimen>
-    <dimen name="widgetVerticalSpacing">10dip</dimen>
+    <dimen name="widgetHorizontalSpacing">6dip</dimen>
+    <dimen name="widgetVerticalSpacing">6dip</dimen>
     <dimen name="combo_paddingLeftRight">16dip</dimen>
     <dimen name="combo_horizontalSpacing">8dip</dimen>
 </resources>
diff --git a/res/values-xlarge/dimensions.xml b/res/values-xlarge/dimensions.xml
index 27c1ce2..2549818 100644
--- a/res/values-xlarge/dimensions.xml
+++ b/res/values-xlarge/dimensions.xml
@@ -14,9 +14,10 @@
     <dimen name="bookmarkThumbnailWidth">180dip</dimen>
     <dimen name="bookmarkThumbnailHeight">120dip</dimen>
     <dimen name="widgetThumbnailHeight">104dip</dimen>
-    <dimen name="widgetHorizontalSpacing">14dip</dimen>
-    <dimen name="widgetVerticalSpacing">12dip</dimen>
+    <dimen name="widgetHorizontalSpacing">6dip</dimen>
+    <dimen name="widgetVerticalSpacing">6dip</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..ed5f8e1 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"保存网页"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"网页已保存。"</string>
+    <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>
+    <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>
+    <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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"自动填充数据"</string>
+    <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>
-    <string name="pref_autologin_disable" msgid="3342145058494577628">"不自动登录"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"只需点击一下,自动填充功能即可使用您的个人资料帮助您完成网络表单。"</string>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"正使用 <xliff:g id="ID_1">%s</xliff:g> 登录 Google 网站"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"自动登录已可使用。"</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"登录"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"登录失败。"</string>
+    <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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"您可以随时通过“浏览器设置”配置自动填充功能。"</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"停用自动填充"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"快速控制"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"从左边缘或右边缘滑动拇指即可访问快速控制并隐藏应用程序和网址栏"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"“最常访问的网页”主页"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"您的主页会显示最常访问的网页。"</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google 即搜即得"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"借助 Google 即搜即得,您可以在使用 Google 搜索时一边键入内容一边查看结果(此功能可能会增加数据使用量)。"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"数据连接性问题"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"文件有问题"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"确认"</string>
@@ -316,6 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"该设备上的书签尚未与 Google 帐户关联。可以通过将这些书签添加到帐户以进行保存。如果不希望同步书签,请将书签删除。"</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"添加此设备上的当前书签,并开始与 Google 帐户同步"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"删除此设备上的当前书签,并开始与 Google 帐户同步"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"删除此设备上的当前书签,并开始与 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> 同步书签。"</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"添加此设备上的当前书签,并开始与 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> 同步书签。"</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"删除书签"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"下一页"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"上一页"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"取消"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"完成"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"将书签添加到 Google 帐户"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"具有即搜即得功能的 Google(实验室)"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index e5df8ec..a3dc094 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>
+    <string name="menu_save_webarchive" msgid="2474117375302625691">"儲存網頁"</string>
+    <string name="webarchive_saved" msgid="2212053339474523406">"網頁已儲存。"</string>
+    <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>
+    <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>
+    <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>
+    <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,16 @@
     <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>
+    <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>
+    <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"自動填入資料"</string>
+    <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>
-    <string name="pref_autologin_disable" msgid="3342145058494577628">"不要自動登入"</string>
-    <string name="autofill_profile_editor_heading" msgid="5009490178189728877">"自動填入功能會運用您的設定檔,讓您輕按一下即可填妥網頁表單。"</string>
+    <string name="pref_autologin_progress" msgid="8333244467048833461">"正使用 <xliff:g id="ID_1">%s</xliff:g> 登入 Google 網站"</string>
+    <string name="autologin_bar_text" msgid="8013977161879448141">"可自動登入。"</string>
+    <string name="autologin_bar_login_text" msgid="7052816600314556734">"登入"</string>
+    <string name="autologin_bar_error" msgid="5132514366023044839">"登入失敗。"</string>
+    <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 +194,9 @@
     <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>
+    <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"您可隨時透過 [瀏覽器設定] 設定自動填入功能。"</string>
+    <string name="disable_autofill" msgid="8305901059849400354">"停用自動填入功能"</string>
+    <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 +269,12 @@
   </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>
+    <string name="pref_lab_quick_controls" msgid="3267606522082281367">"快速控制介面"</string>
+    <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"於左右邊緣滑動拇指即可使用快速控制介面,以及隱藏應用程式列和網址列"</string>
+    <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"最常瀏覽首頁"</string>
+    <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"首頁會顯示您最常瀏覽的網頁。"</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google 互動智慧搜尋"</string>
+    <string name="pref_use_instant_search_summary" msgid="839320474961917522">"使用「Google 搜尋」時啟用「Google 互動智慧搜尋」功能,您輸入查詢時可以即時獲得顯示搜尋結果 (這會增加資料傳輸量)。"</string>
     <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"資料連線問題"</string>
     <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"檔案有問題"</string>
     <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"確認"</string>
@@ -316,6 +318,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 +367,19 @@
     <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>
+    <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"這個裝置上的書籤尚未與 Google 帳戶建立關聯。您可將這些書籤新增至帳戶中加以儲存;如果您不想同步處理這些書籤,只需將其刪除即可。"</string>
+    <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"新增這個裝置上現有的書籤,並開始與 Google 帳戶同步化"</string>
+    <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"刪除這個裝置上現有的書籤,並開始與 Google 帳戶同步化"</string>
+    <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"刪除這個裝置上現有的書籤,並開始與 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> 的書籤同步化。"</string>
+    <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"新增這個裝置上現有的書籤,並開始與 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> 的書籤同步化。"</string>
+    <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"刪除書籤"</string>
+    <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"繼續"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"返回"</string>
+    <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"取消"</string>
+    <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"完成"</string>
+    <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"將書籤新增至 Google 帳戶中"</string>
     <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>
+    <string name="instant_search_label" msgid="8769284297650716935">"使用 Google 互動智慧搜尋 (研究室)"</string>
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 68b58f7..6a7c578 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -29,10 +29,11 @@
     <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>
+    <color name="qc_normal">#C02447B2</color>
+    <color name="qc_selected">#D0102052</color>
 </resources>
diff --git a/res/values/dimensions.xml b/res/values/dimensions.xml
index 300714b..99eb43e 100644
--- a/res/values/dimensions.xml
+++ b/res/values/dimensions.xml
@@ -20,18 +20,24 @@
     <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">70dip</dimen>
     <dimen name="qc_slop">15dip</dimen>
+    <dimen name="qc_touch_offset">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 +50,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..e754ea9 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,27 +371,27 @@
     <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>
-    <!-- Summary when no accounts are found [CHAR-LIMIT=32] -->
-    <string name="pref_autologin_no_account">No accounts found</string>
-    <!-- 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>
-    <!-- Option in account list to disable autologin [CHAR-LIMIT=50] -->
-    <string name="pref_autologin_disable">Don\'t sign in automatically</string>
+    <string name="pref_autologin_progress">Signing into Google sites using <xliff:g>%s</xliff:g></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 +432,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 +574,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 +628,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 +758,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>
@@ -805,6 +816,9 @@
             domain will be appended. -->
     <string name="homepage_base" translatable="false">
         http://www.google.com/webhp?client={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={CID}&amp;source=android-omnibox-instant&amp;ion=1</string>
 
     <!-- Bookmarks -->
     <string-array name="bookmarks" translatable="false">
@@ -819,7 +833,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 +845,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 +927,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 +971,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/res/xml/privacy_security_preferences.xml b/res/xml/privacy_security_preferences.xml
index 9bff4b8..50802ca 100644
--- a/res/xml/privacy_security_preferences.xml
+++ b/res/xml/privacy_security_preferences.xml
@@ -39,10 +39,6 @@
             android:title="@string/pref_security_show_security_warning"
             android:summary="@string/pref_security_show_security_warning_summary" />
 
-    <ListPreference
-            android:key="autologin_account"
-            android:title="@string/pref_autologin_title" />
-
     <PreferenceCategory android:title="@string/pref_privacy_cookies_title">
         <CheckBoxPreference
                 android:key="accept_cookies"
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..71346ae 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,24 @@
     }
 
     @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);
+        updateAutoLogin(tab, false);
     }
 
     Tab getActiveTab() {
@@ -252,7 +269,7 @@
         attachTabToContentView(tab);
     }
 
-    private void attachTabToContentView(Tab tab) {
+    protected void attachTabToContentView(Tab tab) {
         if ((tab == null) || (tab.getWebView() == null)) {
             return;
         }
@@ -292,7 +309,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 +398,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 +455,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
      */
@@ -523,11 +547,23 @@
             && mComboView == null;
     }
 
+    @Override
+    public void showAutoLogin(Tab tab) {
+        updateAutoLogin(tab, true);
+    }
+
+    @Override
+    public void hideAutoLogin(Tab tab) {
+        updateAutoLogin(tab, true);
+    }
+
     // -------------------------------------------------------------------------
 
     protected void updateNavigationState(Tab tab) {
     }
 
+    protected void updateAutoLogin(Tab tab, boolean animate) {}
+
     /**
      * Update the lock icon to correspond to our latest state.
      */
@@ -547,8 +583,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 +594,7 @@
         }
         if (tab.isInVoiceSearchMode()) return;
         if (tab.inForeground()) {
-            getEmbeddedTitleBar().setDisplayTitle(url);
-            getFakeTitleBar().setDisplayTitle(url);
+            getTitleBar().setDisplayTitle(url);
         }
     }
 
@@ -568,8 +602,7 @@
     protected void setFavicon(Tab tab) {
         if (tab.inForeground()) {
             Bitmap icon = tab.getFavicon();
-            getEmbeddedTitleBar().setFavicon(icon);
-            getFakeTitleBar().setFavicon(icon);
+            getTitleBar().setFavicon(icon);
         }
     }
 
@@ -578,7 +611,7 @@
         if (inLoad) {
             // the titlebar was removed when the CAB was shown
             // if the page is loading, show it again
-            showFakeTitleBar();
+            showTitleBar();
         }
     }
 
@@ -596,6 +629,11 @@
     // menu handling callbacks
 
     @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        return true;
+    }
+
+    @Override
     public void onOptionsMenuOpened() {
     }
 
@@ -623,6 +661,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 +721,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..de28d0d 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();
@@ -442,7 +453,7 @@
     }
 
     private void loadUrl(int position) {
-        if (mCallbacks != null) {
+        if (mCallbacks != null && mAdapter != null) {
             mCallbacks.onBookmarkSelected(mAdapter.getItem(position), false);
         }
     }
@@ -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/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index faf0042..357d1e9 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -92,9 +92,6 @@
     private String databasePath; // default value set in loadFromDb()
     private String geolocationDatabasePath; // default value set in loadFromDb()
     private WebStorageSizeManager webStorageSizeManager;
-    // Autologin settings
-    private boolean autoLoginEnabled;
-    private String autoLoginAccount;
 
     private String jsFlags = "";
 
@@ -109,10 +106,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,13 +160,13 @@
     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";
     public final static String PREF_MOST_VISITED_HOMEPAGE = "use_most_visited_homepage";
-    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 +249,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 +410,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 +502,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);
@@ -522,11 +532,6 @@
         geolocationEnabled = p.getBoolean("enable_geolocation", geolocationEnabled);
         workersEnabled = p.getBoolean("enable_workers", workersEnabled);
 
-        // Autologin account settings.  The account preference may be null until
-        // the user explicitly changes the account in the settings.
-        autoLoginEnabled = p.getBoolean(PREF_AUTOLOGIN, autoLoginEnabled);
-        autoLoginAccount = p.getString(PREF_AUTOLOGIN_ACCOUNT, autoLoginAccount);
-
         update();
     }
 
@@ -589,6 +594,10 @@
         return hardwareAccelerated;
     }
 
+    public boolean showVisualIndicator() {
+        return showVisualIndicator;
+    }
+
     public boolean useQuickControls() {
         return quickControls;
     }
@@ -597,6 +606,10 @@
         return useMostVisitedHomepage;
     }
 
+    public boolean useInstant() {
+        return useInstant;
+    }
+
     public boolean showDebugSettings() {
         return showDebugSettings;
     }
@@ -609,32 +622,6 @@
         update();
     }
 
-    public boolean isAutoLoginEnabled() {
-        return autoLoginEnabled;
-    }
-
-    public String getAutoLoginAccount(Context context) {
-        // Each time we attempt to get the account, we need to verify that the
-        // account is still valid.
-        return GoogleAccountLogin.validateAccount(context, autoLoginAccount);
-    }
-
-    public void setAutoLoginAccount(Context context, String name) {
-        Editor ed = PreferenceManager.
-                getDefaultSharedPreferences(context).edit();
-        ed.putString(PREF_AUTOLOGIN_ACCOUNT, name);
-        ed.apply();
-        autoLoginAccount = name;
-    }
-
-    public void setAutoLoginEnabled(Context context, boolean enable) {
-        Editor ed = PreferenceManager.
-                getDefaultSharedPreferences(context).edit();
-        ed.putBoolean(PREF_AUTOLOGIN, enable);
-        ed.apply();
-        autoLoginEnabled = enable;
-    }
-
     public void setAutoFillProfile(Context ctx, AutoFillProfile profile, Message msg) {
         if (profile != null) {
             setActiveAutoFillProfileId(ctx, profile.getUniqueId());
@@ -716,6 +703,10 @@
     /* package */void setController(Controller ctrl) {
         mController = ctrl;
         updateTabControlSettings();
+
+        if (mController != null && (searchEngine instanceof InstantSearchEngine)) {
+             ((InstantSearchEngine) searchEngine).setController(mController);
+        }
     }
 
     /*
@@ -827,9 +818,6 @@
         domStorageEnabled = true;
         geolocationEnabled = true;
         workersEnabled = true;  // only affects V8. JSC does not have a similar setting
-        // Autologin default is true.  The account will be populated when
-        // reading from the DB as that is when a context is available.
-        autoLoginEnabled = true;
     }
 
     private abstract class AutoFillProfileDbTask<T> extends AsyncTask<T, Void, Void> {
@@ -886,6 +874,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 +883,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..a028882 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;
@@ -158,9 +161,6 @@
     private int mOldMenuState = EMPTY_MENU;
     private Menu mCachedMenu;
 
-    // Used to prevent chording to result in firing two shortcuts immediately
-    // one after another.  Fixes bug 1211714.
-    boolean mCanChord;
     private boolean mMenuIsDown;
 
     // For select and find, we keep track of the ActionMode so that
@@ -276,7 +276,7 @@
             CookieManager.getInstance().removeSessionCookie();
         }
 
-        GoogleAccountLogin.startLoginIfNeeded(mActivity, mSettings,
+        GoogleAccountLogin.startLoginIfNeeded(mActivity,
                 new Runnable() {
                     @Override public void run() {
                         start(icicle, intent, currentTab, restoreIncognitoTabs);
@@ -315,7 +315,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 +486,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 +512,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 +680,7 @@
     }
 
     void onDestroy() {
-        if (mUploadHandler != null) {
+        if (mUploadHandler != null && !mUploadHandler.handled()) {
             mUploadHandler.onResult(Activity.RESULT_CANCELED, null);
             mUploadHandler = null;
         }
@@ -747,7 +751,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 +798,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 +855,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 +903,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 +961,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()) {
@@ -988,6 +993,19 @@
         mPageDialogsHandler.showSSLCertificateOnError(view, handler, error);
     }
 
+    @Override
+    public void showAutoLogin(Tab tab) {
+        assert tab.inForeground();
+        // Update the title bar to show the auto-login request.
+        mUi.showAutoLogin(tab);
+    }
+
+    @Override
+    public void hideAutoLogin(Tab tab) {
+        assert tab.inForeground();
+        mUi.hideAutoLogin(tab);
+    }
+
     // helper method
 
     /*
@@ -1024,9 +1042,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 +1104,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 +1384,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));
@@ -1406,9 +1422,6 @@
         if (mOptionsMenuHandler != null) {
             return mOptionsMenuHandler.onPrepareOptionsMenu(menu);
         }
-        // This happens when the user begins to hold down the menu key, so
-        // allow them to chord to get a shortcut.
-        mCanChord = true;
         // Note: setVisible will decide whether an item is visible; while
         // setEnabled() will decide whether an item is enabled, which also means
         // whether the matching shortcut key will function.
@@ -1465,10 +1478,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) {
@@ -1482,11 +1500,6 @@
             // if main menu option is selected
             removeComboView();
         }
-        if (!mCanChord) {
-            // The user has already fired a shortcut with this hold down of the
-            // menu key.
-            return false;
-        }
         if (null == getCurrentTopWebView()) {
             return false;
         }
@@ -1520,7 +1533,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 +1580,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);
@@ -1580,7 +1643,6 @@
             case R.id.share_page_menu_id:
                 Tab currentTab = mTabControl.getCurrentTab();
                 if (null == currentTab) {
-                    mCanChord = false;
                     return false;
                 }
                 shareCurrentPage(currentTab);
@@ -1632,7 +1694,6 @@
             default:
                 return false;
         }
-        mCanChord = false;
         return true;
     }
 
@@ -1642,9 +1703,6 @@
             return false;
         }
 
-        // chording is not an issue with context menus, but we use the same
-        // options selector, so set mCanChord to true so we can access them.
-        mCanChord = true;
         int id = item.getItemId();
         boolean result = true;
         switch (id) {
@@ -1683,7 +1741,6 @@
                 // For other context menus
                 result = onOptionsItemSelected(item);
         }
-        mCanChord = false;
         return result;
     }
 
@@ -1804,9 +1861,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 +1888,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 +1927,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 +1952,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 +1976,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 +2008,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 +2054,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 +2104,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() {
@@ -2125,17 +2212,9 @@
             // animation behavior.
             addTab(tab);
             setActiveTab(tab);
-
-            // Callback to load the url data.
-            final Runnable load = new Runnable() {
-                @Override public void run() {
-                    if (!urlData.isEmpty()) {
-                        loadUrlDataIn(tab, urlData);
-                    }
-                }
-            };
-
-            GoogleAccountLogin.startLoginIfNeeded(mActivity, mSettings, load);
+            if (!urlData.isEmpty()) {
+                loadUrlDataIn(tab, urlData);
+            }
             return tab;
         } else {
             // Get rid of the subwindow if it exists
@@ -2298,20 +2377,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 +2414,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) {
@@ -2367,6 +2442,23 @@
     }
 
     /**
+     * helper method for key handler
+     * returns the current tab if it can't advance
+     */
+    private int getNextTabIndex() {
+        return Math.min(mTabControl.getTabCount() - 1,
+                mTabControl.getCurrentIndex() + 1);
+    }
+
+    /**
+     * helper method for key handler
+     * returns the current tab if it can't advance
+     */
+    private int getPrevTabIndex() {
+        return  Math.max(0, mTabControl.getCurrentIndex() - 1);
+    }
+
+    /**
      * handle key events in browser
      *
      * @param keyCode
@@ -2378,14 +2470,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;
@@ -2394,10 +2485,18 @@
         boolean shift = event.hasModifiers(KeyEvent.META_SHIFT_ON);
 
         switch(keyCode) {
-            case KeyEvent.KEYCODE_ESCAPE:
-                if (!noModifiers) break;
-                stopLoading();
-                return true;
+            case KeyEvent.KEYCODE_TAB:
+                if (event.isCtrlPressed()) {
+                    if (event.isShiftPressed()) {
+                        // prev tab
+                        switchToTab(getPrevTabIndex());
+                    } else {
+                        // next tab
+                        switchToTab(getNextTabIndex());
+                    }
+                    return true;
+                }
+                break;
             case KeyEvent.KEYCODE_SPACE:
                 // WebView/WebTextView handle the keys in the KeyDown. As
                 // the Activity's shortcut keys are only handled when WebView
@@ -2410,15 +2509,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 +2550,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 {
@@ -2472,13 +2566,30 @@
                 break;
 //          case KeyEvent.KEYCODE_U:    // in Chrome: opens source of page
 //          case KeyEvent.KEYCODE_V:    // text view intercepts to paste
-//          case KeyEvent.KEYCODE_W:    // menu
+            case KeyEvent.KEYCODE_W:    // in Chrome: close tab
+                if (ctrl) {
+                    closeCurrentTab();
+                    return true;
+                }
+                break;
 //          case KeyEvent.KEYCODE_X:    // text view intercepts to cut
 //          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 +2635,8 @@
         }
     }
 
+    @Override
+    public void registerDropdownChangeListener(DropdownChangeListener d) {
+        mUi.registerDropdownChangeListener(d);
+    }
 }
diff --git a/src/com/android/browser/DeviceAccountLogin.java b/src/com/android/browser/DeviceAccountLogin.java
new file mode 100644
index 0000000..8d734c2
--- /dev/null
+++ b/src/com/android/browser/DeviceAccountLogin.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AccountManagerCallback;
+import android.accounts.AccountManagerFuture;
+import android.app.Activity;
+import android.os.Bundle;
+import android.webkit.WebView;
+
+public class DeviceAccountLogin implements
+        AccountManagerCallback<Bundle> {
+
+    private final Activity mActivity;
+    private final WebView mWebView;
+    private final Tab mTab;
+    private final WebViewController mWebViewController;
+    private final AccountManager mAccountManager;
+    Account[] mAccounts;
+    private AutoLoginCallback mCallback;
+    private String mAuthToken;
+
+    // Current state of the login.
+    private int mState = INITIAL;
+
+    public static final int INITIAL = 0;
+    public static final int FAILED = 1;
+    public static final int PROCESSING = 2;
+
+    public interface AutoLoginCallback {
+        public void loginFailed();
+    }
+
+    public DeviceAccountLogin(Activity activity, WebView view, Tab tab,
+            WebViewController controller) {
+        mActivity = activity;
+        mWebView = view;
+        mTab = tab;
+        mWebViewController = controller;
+        mAccountManager = AccountManager.get(activity);
+    }
+
+    public void handleLogin(String realm, String account, String args) {
+        mAccounts = mAccountManager.getAccountsByType(realm);
+        mAuthToken = "weblogin:" + args;
+
+        // No need to display UI if there are no accounts.
+        if (mAccounts.length == 0) {
+            return;
+        }
+
+        // Verify the account before using it.
+        for (Account a : mAccounts) {
+            if (a.name.equals(account)) {
+                // Handle the automatic login case where the service gave us an
+                // account to use.
+                mAccountManager.getAuthToken(a, mAuthToken, null,
+                       mActivity, this, null);
+                return;
+            }
+        }
+
+        displayLoginUi();
+    }
+
+    @Override
+    public void run(AccountManagerFuture<Bundle> value) {
+        try {
+            String result = value.getResult().getString(
+                    AccountManager.KEY_AUTHTOKEN);
+            if (result == null) {
+                loginFailed();
+            } else {
+                mWebView.loadUrl(result);
+                mTab.setDeviceAccountLogin(null);
+                if (mTab.inForeground()) {
+                    mWebViewController.hideAutoLogin(mTab);
+                }
+            }
+        } catch (Exception e) {
+            loginFailed();
+        }
+    }
+
+    public int getState() {
+        return mState;
+    }
+
+    private void loginFailed() {
+        mState = FAILED;
+        if (mTab.getDeviceAccountLogin() == null) {
+            displayLoginUi();
+        } else {
+            if (mCallback != null) {
+                mCallback.loginFailed();
+            }
+        }
+    }
+
+    private void displayLoginUi() {
+        // Display the account picker.
+        mTab.setDeviceAccountLogin(this);
+        if (mTab.inForeground()) {
+            mWebViewController.showAutoLogin(mTab);
+        }
+    }
+
+    public void cancel() {
+        mTab.setDeviceAccountLogin(null);
+    }
+
+    public void login(int accountIndex, AutoLoginCallback cb) {
+        mState = PROCESSING;
+        mCallback = cb;
+        mAccountManager.getAuthToken(
+                mAccounts[accountIndex], mAuthToken, null,
+                mActivity, this, null);
+    }
+
+    public String[] getAccountNames() {
+        String[] names = new String[mAccounts.length];
+        for (int i = 0; i < mAccounts.length; i++) {
+            names[i] = mAccounts[i].name;
+        }
+        return names;
+    }
+}
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..37654dc 100644
--- a/src/com/android/browser/GoogleAccountLogin.java
+++ b/src/com/android/browser/GoogleAccountLogin.java
@@ -16,8 +16,6 @@
 
 package com.android.browser;
 
-import org.apache.http.Header;
-import org.apache.http.HeaderIterator;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
@@ -34,18 +32,16 @@
 import android.content.DialogInterface;
 import android.content.DialogInterface.OnCancelListener;
 import android.content.SharedPreferences.Editor;
-import android.net.http.AndroidHttpClient;
 import android.net.Uri;
+import android.net.http.AndroidHttpClient;
 import android.os.Bundle;
 import android.os.Handler;
 import android.preference.PreferenceManager;
 import android.util.Log;
-import android.webkit.CookieManager;
+import android.webkit.CookieSyncManager;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
 
-import java.util.StringTokenizer;
-
 public class GoogleAccountLogin implements Runnable,
         AccountManagerCallback<Bundle>, OnCancelListener {
 
@@ -79,13 +75,19 @@
     private int mState;  // {NONE(0), SID(1), LSID(2)}
     private boolean mTokensInvalidated;
 
-    private GoogleAccountLogin(Activity activity, String name,
+    private GoogleAccountLogin(Activity activity, Account account,
             Runnable runnable) {
         mActivity = activity;
-        mAccount = new Account(name, GOOGLE);
+        mAccount = account;
         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) {
@@ -226,28 +228,22 @@
     // Start the login process if auto-login is enabled and the user is not
     // already logged in.
     public static void startLoginIfNeeded(Activity activity,
-            BrowserSettings settings, Runnable runnable) {
-        // Auto login not enabled?
-        if (!settings.isAutoLoginEnabled()) {
-            runnable.run();
-            return;
-        }
-
-        // No account found?
-        String account = settings.getAutoLoginAccount(activity);
-        if (account == null) {
-            runnable.run();
-            return;
-        }
-
+            Runnable runnable) {
         // Already logged in?
         if (isLoggedIn(activity)) {
             runnable.run();
             return;
         }
 
+        // No account found?
+        Account[] accounts = getAccounts(activity);
+        if (accounts == null || accounts.length == 0) {
+            runnable.run();
+            return;
+        }
+
         GoogleAccountLogin login =
-                new GoogleAccountLogin(activity, account, runnable);
+                new GoogleAccountLogin(activity, accounts[0], runnable);
         login.startLogin();
     }
 
@@ -264,31 +260,12 @@
                 mAccount, "SID", null, mActivity, this, null);
     }
 
-    // Returns the account name passed in if the account exists, otherwise
-    // returns the default account.
-    public static String validateAccount(Context ctx, String name) {
-        Account[] accounts = getAccounts(ctx);
-        if (accounts.length == 0) {
-            return null;
-        }
-        if (name != null) {
-            // Make sure the account still exists.
-            for (Account a : accounts) {
-                if (a.name.equals(name)) {
-                    return name;
-                }
-            }
-        }
-        // Return the first entry.
-        return accounts[0].name;
-    }
-
-    public static Account[] getAccounts(Context ctx) {
+    private static Account[] getAccounts(Context ctx) {
         return AccountManager.get(ctx).getAccountsByType(GOOGLE);
     }
 
-    // Checks for the presence of the SID cookie on google.com.
-    public static boolean isLoggedIn(Context ctx) {
+    // Checks if we already did pre-login.
+    private static boolean isLoggedIn(Context ctx) {
         // See if we last logged in less than a week ago.
         long lastLogin = PreferenceManager.
                 getDefaultSharedPreferences(ctx).
@@ -296,31 +273,7 @@
         if (lastLogin == -1) {
             return false;
         }
-        long diff = System.currentTimeMillis() - lastLogin;
-        if (diff > WEEK_IN_MILLIS) {
-            Log.d(LOGTAG, "Forcing login after " + diff + "ms");
-            return false;
-        }
-
-        // This will potentially block the UI thread but we have to have the
-        // most updated cookies.
-        // FIXME: Figure out how to avoid waiting to clear session cookies.
-        CookieManager.getInstance().waitForCookieOperationsToComplete();
-
-        // Use /a/ to grab hosted cookies as well as the base set of google.com
-        // cookies.
-        String cookies = CookieManager.getInstance().getCookie(
-                "http://www.google.com/a/");
-        if (cookies != null) {
-            StringTokenizer tokenizer = new StringTokenizer(cookies, ";");
-            while (tokenizer.hasMoreTokens()) {
-                String cookie = tokenizer.nextToken().trim();
-                if (cookie.startsWith("SID=") || cookie.startsWith("ASIDAP=")) {
-                    return true;
-                }
-            }
-        }
-        return false;
+        return true;
     }
 
     // Used to indicate that the Browser should continue loading the main page.
@@ -332,12 +285,14 @@
 
             // Post a delayed message to dismiss the dialog in order to avoid a
             // flash of the progress dialog.
-            mHandler.postDelayed(new Runnable() {
-                @Override public void run() {
-                    mProgressDialog.dismiss();
-                }
-            }, 1000);
-
+                mHandler.postDelayed(new Runnable() {
+                    @Override
+                    public void run() {
+                        if (mProgressDialog.isShowing()) {
+                            mProgressDialog.dismiss();
+                        }
+                    }
+                }, 2000);
             mRunnable = null;
             mWebView.destroy();
         }
@@ -347,4 +302,5 @@
     public void onCancel(DialogInterface unused) {
         done();
     }
+
 }
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..fa8bfbc 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)
@@ -141,14 +145,18 @@
                     || (activateVoiceSearch && appId != null))
                     && !mActivity.getPackageName().equals(appId)
                     && (flags & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
-                Tab appTab = mTabControl.getTabFromId(appId);
-                if (appTab != null) {
-                    mController.reuseTab(appTab, appId, urlData);
-                    return;
+                if (activateVoiceSearch) {
+                    Tab appTab = mTabControl.getTabFromId(appId);
+                    if (appTab != null) {
+                        mController.reuseTab(appTab, appId, urlData);
+                        return;
+                    } else {
+                        mController.openTabAndShow(null, urlData, false, appId);
+                    }
                 } else {
                     // No matching application tab, try to find a regular tab
                     // with a matching url.
-                    appTab = mTabControl.findUnusedTabWithUrl(urlData.mUrl);
+                    Tab appTab = mTabControl.findUnusedTabWithUrl(urlData.mUrl);
                     if (appTab != null) {
                         if (current != appTab) {
                             mController.switchToTab(mTabControl.getTabIndex(appTab));
@@ -160,7 +168,7 @@
                         // MAX_TABS. Then the url will be opened in the current
                         // tab. If a new tab is created, it will have "true" for
                         // exit on close.
-                        mController.openTabAndShow(null, urlData, true, appId);
+                        mController.openTabAndShow(null, urlData, false, appId);
                     }
                 }
             } else {
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..38ed1bb 100644
--- a/src/com/android/browser/PieControl.java
+++ b/src/com/android/browser/PieControl.java
@@ -16,18 +16,32 @@
 
 package com.android.browser;
 
+import com.android.browser.view.PieItem;
+import com.android.browser.view.PieListView;
 import com.android.browser.view.PieMenu;
+import com.android.browser.view.PieMenu.PieView.OnLayoutListener;
+import com.android.browser.view.PieStackView;
+import com.android.browser.view.PieStackView.OnCurrentListener;
 
 import android.app.Activity;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
+import android.view.ViewGroup;
 import android.view.ViewGroup.LayoutParams;
 import android.webkit.WebView;
+import android.widget.BaseAdapter;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
+import android.widget.ImageView.ScaleType;
+import android.widget.TextView;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * controller for Quick Controls pie menu
@@ -38,24 +52,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 +79,107 @@
             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);
+        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);
+        return new PieItem(view, l);
+    }
+
+    private void setClickListener(PieItem... items) {
+        for (PieItem item : items) {
+            item.getView().setOnClickListener(this);
         }
     }
 
@@ -112,41 +192,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..ecdaa15 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,18 +59,17 @@
     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;
 
     interface CompletionListener {
@@ -87,6 +87,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 +112,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);
         }
     }
 
@@ -136,9 +136,6 @@
 
     @Override
     public SuggestItem getItem(int position) {
-        if (mReverseResults) {
-            position = (getCount() - 1) - position;
-        }
         if (mVoiceResults != null) {
             SuggestItem item = new SuggestItem(mVoiceResults.get(position),
                     null, TYPE_VOICE_SEARCH);
@@ -151,10 +148,6 @@
         return mMixedResults.items.get(position);
     }
 
-    public void setReverseResults(boolean reverse) {
-        mReverseResults = reverse;
-    }
-
     @Override
     public long getItemId(int position) {
         return position;
@@ -179,7 +172,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 +275,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 +311,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 +331,12 @@
                 notifyDataSetChanged();
             }
         }
+    }
 
+    private int getMaxLines() {
+        int maxLines = mLandscapeMode ? mLinesLandscape : mLinesPortrait;
+        maxLines = (int) Math.ceil(maxLines / 2.0);
+        return maxLines;
     }
 
     /**
@@ -366,11 +368,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 +390,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 +541,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 +550,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..863fc95 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -132,10 +132,14 @@
     // Listener used to know when we move forward or back in the history list.
     private final WebBackForwardListClient mWebBackForwardListClient;
     private DataController mDataController;
+    // State of the auto-login request.
+    private DeviceAccountLogin mDeviceAccountLogin;
 
     // 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 +195,7 @@
     static final String APPID = "appid";
     static final String ORIGINALURL = "originalUrl";
     static final String INCOGNITO = "privateBrowsingEnabled";
+    static final String SCREENSHOT = "screenshot";
 
     // -------------------------------------------------------------------------
 
@@ -527,6 +532,13 @@
                 }
             }
 
+            // Cancel the auto-login process.
+            if (mDeviceAccountLogin != null) {
+                mDeviceAccountLogin.cancel();
+                mDeviceAccountLogin = null;
+                mWebViewController.hideAutoLogin(Tab.this);
+            }
+
             // finally update the UI in the activity if it is in the foreground
             mWebViewController.onPageStarted(Tab.this, view, favicon);
 
@@ -809,8 +821,27 @@
             }
             mWebViewController.onUnhandledKeyEvent(event);
         }
+
+        @Override
+        public void onReceivedLoginRequest(WebView view, String realm,
+                String account, String args) {
+            new DeviceAccountLogin(mActivity, view, Tab.this, mWebViewController)
+                    .handleLogin(realm, account, args);
+        }
+
     };
 
+    // Called by DeviceAccountLogin when the Tab needs to have the auto-login UI
+    // displayed.
+    void setDeviceAccountLogin(DeviceAccountLogin login) {
+        mDeviceAccountLogin = login;
+    }
+
+    // Returns non-null if the title bar should display the auto-login UI.
+    DeviceAccountLogin getDeviceAccountLogin() {
+        return mDeviceAccountLogin;
+    }
+
     // -------------------------------------------------------------------------
     // WebChromeClient implementation for the main WebView
     // -------------------------------------------------------------------------
@@ -1583,6 +1614,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 +1751,9 @@
             mSavedState.putInt(PARENTTAB, mWebViewController.getTabControl().getTabIndex(
                     mParentTab));
         }
+        if (mScreenshot != null) {
+            mSavedState.putParcelable(SCREENSHOT, mScreenshot);
+        }
         return true;
     }
 
@@ -1728,6 +1769,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 +1792,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..601d35f 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,94 @@
     /* package */ void setInVoiceMode(boolean inVoiceMode) {}
 
     /* package */ void setIncognitoMode(boolean incognito) {}
+
+    void setTitleGravity(int gravity) {
+        int newTop = 0;
+        int newLeft = 0;
+        View parent = (View) getParent();
+        if (parent != null) {
+            newLeft = parent.getScrollX();
+        }
+        if (gravity != Gravity.NO_GRAVITY) {
+            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.x = newLeft;
+            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..5f02002 100644
--- a/src/com/android/browser/TitleBarXLarge.java
+++ b/src/com/android/browser/TitleBarXLarge.java
@@ -16,28 +16,37 @@
 
 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.accounts.Account;
 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.ContextThemeWrapper;
+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.view.animation.Animation;
+import android.view.animation.Animation.AnimationListener;
+import android.view.animation.AnimationUtils;
 import android.webkit.WebView;
+import android.widget.AbsoluteLayout;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.FrameLayout;
 import android.widget.ImageButton;
 import android.widget.ImageView;
+import android.widget.ProgressBar;
+import android.widget.Spinner;
+import android.widget.TextView;
 
 import java.util.List;
 
@@ -45,12 +54,9 @@
  * tabbed title bar for xlarge screen browser
  */
 public class TitleBarXLarge extends TitleBarBase
-    implements UrlInputListener, OnClickListener, OnFocusChangeListener,
-    TextWatcher {
+        implements OnClickListener, OnFocusChangeListener, TextChangeWatcher,
+        DeviceAccountLogin.AutoLoginCallback {
 
-    private static final int PROGRESS_MAX = 100;
-
-    private UiController mUiController;
     private XLargeUi mUi;
 
     private Drawable mStopDrawable;
@@ -60,29 +66,33 @@
     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;
+    // Auto-login UI
+    private View mAutoLogin;
+    private Spinner mAutoLoginAccount;
+    private Button mAutoLoginLogin;
+    private ProgressBar mAutoLoginProgress;
+    private TextView mAutoLoginError;
+    private ImageButton mAutoLoginCancel;
+    private DeviceAccountLogin mAutoLoginHandler;
+    private ArrayAdapter<String> mAccountsAdapter;
 
     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 +101,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 +128,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 +147,24 @@
         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);
+        mAutoLogin = findViewById(R.id.autologin);
+        mAutoLoginAccount = (Spinner) findViewById(R.id.autologin_account);
+        mAutoLoginLogin = (Button) findViewById(R.id.autologin_login);
+        mAutoLoginLogin.setOnClickListener(this);
+        mAutoLoginProgress =
+                (ProgressBar) findViewById(R.id.autologin_progress);
+        mAutoLoginError = (TextView) findViewById(R.id.autologin_error);
+        mAutoLoginCancel =
+                (ImageButton) mAutoLogin.findViewById(R.id.autologin_close);
+        mAutoLoginCancel.setOnClickListener(this);
+
+        setFocusState(false);
     }
 
     void updateNavigationState(Tab tab) {
@@ -148,34 +179,94 @@
         }
     }
 
-    public void setEditable(boolean editable) {
-        mEditable = editable;
-        mUrlInput.setFocusable(mEditable);
-        if (!mEditable) {
-            mUrlInput.setOnClickListener(this);
+    void updateAutoLogin(Tab tab, boolean animate) {
+        DeviceAccountLogin login = tab.getDeviceAccountLogin();
+        if (login != null) {
+            mAutoLoginHandler = login;
+            mAutoLogin.setVisibility(View.VISIBLE);
+            ContextThemeWrapper wrapper = new ContextThemeWrapper(mContext,
+                    android.R.style.Theme_Holo_Light);
+            mAccountsAdapter = new ArrayAdapter<String>(wrapper,
+                    android.R.layout.simple_spinner_item, login.getAccountNames());
+            mAccountsAdapter.setDropDownViewResource(
+                    android.R.layout.simple_spinner_dropdown_item);
+            mAutoLoginAccount.setAdapter(mAccountsAdapter);
+            mAutoLoginAccount.setSelection(0);
+            mAutoLoginAccount.setEnabled(true);
+            mAutoLoginLogin.setEnabled(true);
+            mAutoLoginProgress.setVisibility(View.GONE);
+            mAutoLoginError.setVisibility(View.GONE);
+            switch (login.getState()) {
+                case DeviceAccountLogin.PROCESSING:
+                    mAutoLoginAccount.setEnabled(false);
+                    mAutoLoginLogin.setEnabled(false);
+                    mAutoLoginProgress.setVisibility(View.VISIBLE);
+                    break;
+                case DeviceAccountLogin.FAILED:
+                    mAutoLoginProgress.setVisibility(View.GONE);
+                    mAutoLoginError.setVisibility(View.VISIBLE);
+                    break;
+                case DeviceAccountLogin.INITIAL:
+                    break;
+                default:
+                    throw new IllegalStateException();
+            }
+            if (mUseQuickControls) {
+                mUi.showTitleBar();
+            } else {
+                if (animate) {
+                    mAutoLogin.startAnimation(AnimationUtils.loadAnimation(
+                            getContext(), R.anim.autologin_enter));
+                }
+            }
         } else {
-            mUrlContainer.setOnClickListener(null);
+            mAutoLoginHandler = null;
+            if (mUseQuickControls) {
+                mUi.hideTitleBar();
+                mAutoLogin.setVisibility(View.GONE);
+                mUi.refreshWebView();
+            } else {
+                if (animate) {
+                    hideAutoLogin();
+                } else if (mAutoLogin.getAnimation() == null) {
+                    mAutoLogin.setVisibility(View.GONE);
+                    mUi.refreshWebView();
+                }
+            }
         }
     }
 
+    boolean inAutoLogin() {
+        return mAutoLoginHandler != null;
+    }
+
+    private ViewGroup.LayoutParams makeLayoutParams() {
+        if (mUseQuickControls) {
+            return new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,
+                    LayoutParams.WRAP_CONTENT);
+        } else {
+            return new AbsoluteLayout.LayoutParams(
+                    LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT,
+                    0, 0);
+        }
+    }
+
+    @Override
+    public int getEmbeddedHeight() {
+        int height = mContainer.getHeight();
+        if (mAutoLogin.getVisibility() == View.VISIBLE) {
+            height += mAutoLogin.getHeight();
+        }
+        return height;
+    }
+
     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) {
-        if (progress) {
+        if (progress && !inAutoLogin()) {
             mContainer.setVisibility(View.GONE);
         } else {
             mContainer.setVisibility(View.VISIBLE);
@@ -184,30 +275,44 @@
 
     @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();
+            }
+
+            if (mUrlInput.getText().length() == 0) {
+                Tab currentTab = mUiController.getTabControl().getCurrentTab();
+                if (currentTab != null) {
+                    mUrlInput.setText(currentTab.getUrl(), false);
+                }
             }
         }
-        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 +332,33 @@
         return mUrlInput.hasFocus();
     }
 
+    void stopEditingUrl() {
+        mUrlInput.clearFocus();
+    }
+
+    private void hideAutoLogin() {
+        Animation anim = AnimationUtils.loadAnimation(
+                getContext(), R.anim.autologin_exit);
+        anim.setAnimationListener(new AnimationListener() {
+            @Override public void onAnimationEnd(Animation a) {
+                mAutoLogin.setVisibility(View.GONE);
+                mUi.refreshWebView();
+            }
+            @Override public void onAnimationStart(Animation a) {}
+            @Override public void onAnimationRepeat(Animation a) {}
+        });
+        mAutoLogin.startAnimation(anim);
+    }
+
     @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) {
@@ -257,108 +374,67 @@
             clearOrClose();
         } else if (mVoiceSearch == v) {
             mUiController.startVoiceSearch();
+        } else if (mAutoLoginCancel == v) {
+            if (mAutoLoginHandler != null) {
+                mAutoLoginHandler.cancel();
+                mAutoLoginHandler = null;
+            }
+            hideAutoLogin();
+        } else if (mAutoLoginLogin == v) {
+            if (mAutoLoginHandler != null) {
+                mAutoLoginAccount.setEnabled(false);
+                mAutoLoginLogin.setEnabled(false);
+                mAutoLoginProgress.setVisibility(View.VISIBLE);
+                mAutoLoginError.setVisibility(View.GONE);
+                mAutoLoginHandler.login(
+                        mAutoLoginAccount.getSelectedItemPosition(), this);
+            }
         }
     }
 
-    int getHeightWithoutProgress() {
-        return mContainer.getHeight();
+    @Override
+    public void loginFailed() {
+        mAutoLoginAccount.setEnabled(true);
+        mAutoLoginLogin.setEnabled(true);
+        mAutoLoginProgress.setVisibility(View.GONE);
+        mAutoLoginError.setVisibility(View.VISIBLE);
     }
 
     @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 +472,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 +497,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 +516,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 +526,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..368c829 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,16 @@
 
     void showMaxTabsWarning();
 
+    void editUrl(boolean clearInput);
+
     boolean dispatchKey(int code, KeyEvent event);
 
+    public static interface DropdownChangeListener {
+        void onNewDropdownDimensions(int height);
+    }
+    void registerDropdownChangeListener(DropdownChangeListener d);
+
+    void showAutoLogin(Tab tab);
+
+    void hideAutoLogin(Tab tab);
 }
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..350d772 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) {
@@ -96,20 +127,16 @@
         setCustomSelectionActionModeCallback(urlSelectionMode);
     }
 
-    void setUseQuickControls(boolean useQuickControls) {
-        mVOffset = (useQuickControls
-                ? (int) getResources().getDimension(R.dimen.dropdown_offset)
-                : 0);
-        mAdapter.setReverseResults(useQuickControls);
-    }
-
     void setContainer(View container) {
         mContainer = container;
     }
 
+    public void setUrlInputListener(UrlInputListener listener) {
+        mListener = listener;
+    }
+
     void setVoiceResults(List<String> voiceResults) {
         mAdapter.setVoiceResults(voiceResults);
-        mInVoiceMode = (voiceResults != null);
     }
 
     @Override
@@ -120,7 +147,7 @@
         mAdapter.setLandscapeMode(mLandscape);
         if (isPopupShowing() && (getVisibility() == View.VISIBLE)) {
             setupDropDown();
-            performFiltering(getText(), 0);
+            performFiltering(getUserText(), 0);
         }
     }
 
@@ -137,55 +164,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 +240,7 @@
 
     @Override
     public void onSearch(String search) {
-        mListener.onEdit(search);
+        mListener.onCopySuggestion(search);
     }
 
     @Override
@@ -231,21 +250,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 +262,7 @@
 
         public void onAction(String text, String extra, String source);
 
-        public void onEdit(String text);
+        public void onCopySuggestion(String text);
 
     }
 
@@ -263,4 +271,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/WebViewController.java b/src/com/android/browser/WebViewController.java
index 813b63b..6b44207 100644
--- a/src/com/android/browser/WebViewController.java
+++ b/src/com/android/browser/WebViewController.java
@@ -112,4 +112,7 @@
 
     void bookmarkedStatusHasChanged(Tab tab);
 
+    void showAutoLogin(Tab tab);
+
+    void hideAutoLogin(Tab tab);
 }
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index 562705b..8c34fc9 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -18,18 +18,24 @@
 
 import com.android.browser.ScrollWebView.ScrollListener;
 
+import android.animation.Animator;
+import android.animation.Animator.AnimatorListener;
+import android.animation.ObjectAnimator;
 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 +50,12 @@
     private TabBar mTabBar;
 
     private TitleBarXLarge mTitleBar;
-    private TitleBarXLarge mFakeTitleBar;
+    private Animator mTitleBarAnimator;
+    private boolean mSkipTitleBarAnimations;
 
     private boolean mUseQuickControls;
     private PieControl mPieControl;
+    private Handler mHandler;
 
     /**
      * @param browser
@@ -55,11 +63,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 +88,60 @@
 
     @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);
             }
         } else {
             mActivity.getActionBar().show();
             if (mPieControl != null) {
                 mPieControl.removeFromContainer(mContentView);
             }
-            setFakeTitleBarGravity(Gravity.TOP);
-            // remove embedded title bar if present
             WebView web = mTabControl.getCurrentWebView();
-            if ((web != null) && (web.getVisibleTitleHeight() == 0)) {
+            if (web != null) {
                 web.setEmbeddedTitleBar(mTitleBar);
             }
+            setTitleGravity(Gravity.NO_GRAVITY);
         }
         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 +153,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 +169,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 +183,26 @@
     // 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() && !mTitleBar.inAutoLogin()) {
+                    hideTitleBar();
                     if (mUseQuickControls) {
-                        mFakeTitleBar.setShowProgressOnly(false);
-                        setFakeTitleBarGravity(Gravity.BOTTOM);
+                        mTitleBar.setShowProgressOnly(false);
                     }
                 }
             } 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 +222,22 @@
     }
 
     @Override
-    public void setActiveTab(Tab tab) {
-        super.setActiveTab(tab);
+    public void setActiveTab(final Tab tab) {
+        cancelTitleBarAnimation(true);
+        mSkipTitleBarAnimations = true;
+        stopEditingUrl();
+        if (mUseQuickControls) {
+            if (mActiveTab != null) {
+                captureTab(mActiveTab);
+            }
+        }
+        super.setActiveTab(tab, true);
+        setActiveTab(tab, true);
+        mSkipTitleBarAnimations = false;
+    }
+
+    @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 +251,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 +267,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);
@@ -255,8 +284,11 @@
 
     @Override
     public void removeTab(Tab tab) {
+        cancelTitleBarAnimation(true);
+        mSkipTitleBarAnimations = true;
         super.removeTab(tab);
         mTabBar.onRemoveTab(tab);
+        mSkipTitleBarAnimations = false;
     }
 
     protected void onRemoveTabCompleted(Tab tab) {
@@ -270,69 +302,142 @@
         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 {
+                if (!mSkipTitleBarAnimations) {
+                    cancelTitleBarAnimation(false);
+                    int visibleHeight = getVisibleTitleHeight();
+                    float startPos = (-mTitleBar.getEmbeddedHeight() + visibleHeight);
+                    if (mTitleBar.getTranslationY() != 0) {
+                        startPos = Math.max(startPos, mTitleBar.getTranslationY());
+                    }
+                    mTitleBarAnimator = ObjectAnimator.ofFloat(mTitleBar,
+                            "translationY",
+                            startPos, 0);
+                    mTitleBarAnimator.start();
+                }
+                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 {
+                if (!mSkipTitleBarAnimations) {
+                    cancelTitleBarAnimation(false);
+                    int visibleHeight = getVisibleTitleHeight();
+                    mTitleBarAnimator = ObjectAnimator.ofFloat(mTitleBar,
+                            "translationY", mTitleBar.getTranslationY(),
+                            (-mTitleBar.getEmbeddedHeight() + visibleHeight));
+                    mTitleBarAnimator.addListener(mHideTileBarAnimatorListener);
+                    mTitleBarAnimator.start();
+                } else {
+                    setTitleGravity(Gravity.NO_GRAVITY);
+                }
+            }
+            super.hideTitleBar();
         }
     }
 
-    @Override
-    protected boolean isFakeTitleBarShowing() {
-        return (mFakeTitleBar.getParent() != null);
+    private void cancelTitleBarAnimation(boolean reset) {
+        if (mTitleBarAnimator != null) {
+            mTitleBarAnimator.cancel();
+            mTitleBarAnimator = null;
+        }
+        if (reset) {
+            mTitleBar.setTranslationY(0);
+        }
+    }
+
+    private int getVisibleTitleHeight() {
+        WebView webview = mActiveTab != null ? mActiveTab.getWebView() : null;
+        return webview != null ? webview.getVisibleTitleHeight() : 0;
+    }
+
+    private AnimatorListener mHideTileBarAnimatorListener = new AnimatorListener() {
+
+        boolean mWasCanceled;
+        @Override
+        public void onAnimationStart(Animator animation) {
+            mWasCanceled = false;
+        }
+
+        @Override
+        public void onAnimationRepeat(Animator animation) {
+        }
+
+        @Override
+        public void onAnimationEnd(Animator animation) {
+            if (!mWasCanceled) {
+                mTitleBar.setTranslationY(0);
+            }
+            setTitleGravity(Gravity.NO_GRAVITY);
+        }
+
+        @Override
+        public void onAnimationCancel(Animator animation) {
+            mWasCanceled = true;
+        }
+    };
+
+    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 +447,28 @@
         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);
             }
-            showFakeTitleBar();
+            showTitleBar();
         }
     }
 
     @Override
     protected void updateNavigationState(Tab tab) {
         mTitleBar.updateNavigationState(tab);
-        mFakeTitleBar.updateNavigationState(tab);
+    }
+
+    @Override
+    protected void updateAutoLogin(Tab tab, boolean animate) {
+        mTitleBar.updateAutoLogin(tab, animate);
+    }
+
+    protected void refreshWebView() {
+        Tab tab = getActiveTab();
+        if ((tab != null) && (tab.getWebView() != null)) {
+            tab.getWebView().invalidate();
+        }
     }
 
     @Override
@@ -375,10 +490,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 +499,6 @@
         mTitleBar.setInVoiceMode(false, null);
         String url = tab.getUrl();
         mTitleBar.setDisplayTitle(url);
-        mFakeTitleBar.setInVoiceMode(false, null);
-        mFakeTitleBar.setDisplayTitle(url);
     }
 
     @Override
@@ -408,22 +519,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..e51a629
--- /dev/null
+++ b/src/com/android/browser/autocomplete/SuggestiveAutoCompleteTextView.java
@@ -0,0 +1,849 @@
+/*
+ * 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;
+            // If cursor movement handling was suspended (the view is
+            // not in focus), resume it and apply the pending change.
+            // Since we don't want to perform any filtering, this change
+            // is safe.
+            boolean wasSuspended = false;
+            if (mController.isCursorHandlingSuspended()) {
+                mController.resumeCursorMovementHandlingAndApplyChanges();
+                wasSuspended = true;
+            }
+
+            setText(text);
+
+            if (wasSuspended) {
+                mController.suspendCursorMovementHandling();
+            }
+            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..0c63ab5 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) {
@@ -80,6 +68,8 @@
                 .getString(BrowserSettings.PREF_HOMEPAGE, null));
         ((BrowserHomepagePreference) e).setCurrentPage(
                 getActivity().getIntent().getStringExtra(BrowserPreferencesPage.CURRENT_PAGE));
+        mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
+        mSharedPrefs.registerOnSharedPreferenceChangeListener(mListener);
     }
 
     @Override
@@ -106,13 +96,11 @@
         // Setup the proper state for the sync with chrome item
         mChromeSync = findPreference(PREF_CHROME_SYNC);
         refreshUi();
-        mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
-        mSharedPrefs.registerOnSharedPreferenceChangeListener(mListener);
     }
 
     @Override
-    public void onPause() {
-        super.onPause();
+    public void onDestroy() {
+        super.onDestroy();
 
         mSharedPrefs.unregisterOnSharedPreferenceChangeListener(mListener);
     }
@@ -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..2266608 100644
--- a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
+++ b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
@@ -17,14 +17,11 @@
 package com.android.browser.preferences;
 
 import com.android.browser.BrowserSettings;
-import com.android.browser.GoogleAccountLogin;
 import com.android.browser.R;
 
-import android.accounts.Account;
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
-import android.preference.ListPreference;
 import android.preference.Preference;
 import android.preference.PreferenceFragment;
 
@@ -49,47 +46,6 @@
     @Override
     public void onResume() {
         super.onResume();
-        setupAutoLoginPreference();
-    }
-
-    void setupAutoLoginPreference() {
-        ListPreference autologinPref = (ListPreference) findPreference(
-                BrowserSettings.PREF_AUTOLOGIN_ACCOUNT);
-        autologinPref.setOnPreferenceChangeListener(this);
-        updateAutoLoginSummary(autologinPref);
-        Account[] accounts = GoogleAccountLogin.getAccounts(getActivity());
-        // +1 for disable
-        CharSequence[] names = new CharSequence[accounts.length + 1];
-        CharSequence[] values = new CharSequence[names.length];
-        int i = 0;
-        int defaultAccount = 0;
-        for (Account a : accounts) {
-            values[i] = names[i] = a.name;
-            i++;
-        }
-        names[i] = getResources().getString(R.string.pref_autologin_disable);
-        values[i] = "";
-        autologinPref.setEntries(names);
-        autologinPref.setEntryValues(values);
-        BrowserSettings bs = BrowserSettings.getInstance();
-        if (bs.isAutoLoginEnabled()) {
-            autologinPref.setValue(bs.getAutoLoginAccount(getActivity()));
-        } else {
-            autologinPref.setValue("");
-        }
-    }
-
-    private void updateAutoLoginSummary(Preference pref) {
-        if (!mSettings.isAutoLoginEnabled()) {
-            pref.setSummary(R.string.pref_autologin_disable);
-        } else {
-            String account = mSettings.getAutoLoginAccount(getActivity());
-            if (account == null) {
-                pref.setSummary(R.string.pref_autologin_no_account);
-            } else {
-                pref.setSummary(getString(R.string.pref_autologin_summary, account));
-            }
-        }
     }
 
     @Override
@@ -101,17 +57,6 @@
             getActivity().setResult(Activity.RESULT_OK, (new Intent()).putExtra(Intent.EXTRA_TEXT,
                     pref.getKey()));
             return true;
-        } else if (pref.getKey().equals(BrowserSettings.PREF_AUTOLOGIN_ACCOUNT)) {
-            String account = (String) objValue;
-            if (account.length() == 0) {
-                // Disable
-                mSettings.setAutoLoginEnabled(getActivity(), false);
-            } else {
-                mSettings.setAutoLoginEnabled(getActivity(), true);
-            }
-            mSettings.setAutoLoginAccount(getActivity(), account);
-            updateAutoLoginSummary(pref);
-            return true;
         }
 
         return false;
diff --git a/src/com/android/browser/provider/BrowserProvider2.java b/src/com/android/browser/provider/BrowserProvider2.java
index 830355f..d154f20 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++) {
@@ -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..ec02e3a
--- /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, float angle) {
+        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..3674447
--- /dev/null
+++ b/src/com/android/browser/view/PieItem.java
@@ -0,0 +1,109 @@
+/*
+ * 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.graphics.Path;
+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;
+    private Path mPath;
+
+    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, Path p) {
+        start = st;
+        sweep = sw;
+        inner = inside;
+        outer = outside;
+        mPath = p;
+    }
+
+    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;
+    }
+
+    public Path getPath() {
+        return mPath;
+    }
+
+}
diff --git a/src/com/android/browser/view/PieListView.java b/src/com/android/browser/view/PieListView.java
new file mode 100644
index 0000000..04b512b
--- /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, float angle) {
+        super.layout(anchorX, anchorY, left, angle);
+        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..cded435 100644
--- a/src/com/android/browser/view/PieMenu.java
+++ b/src/com/android/browser/view/PieMenu.java
@@ -25,22 +25,21 @@
 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 +48,46 @@
          */
         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, float angle);
+
+        public void draw(Canvas c);
+
+        public boolean onTouchEvent(MotionEvent evt);
+
+    }
+
     private Point mCenter;
     private int mRadius;
     private int mRadiusInc;
     private int mSlop;
+    private int mTouchOffset;
 
     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;
+    private Paint mNormalPaint;
+    private Paint mSelectedPaint;
+
+    // touch handling
+    PieItem mCurrentItem;
 
     /**
      * @param context
@@ -92,99 +117,66 @@
     }
 
     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));
+        mTouchOffset = (int) res.getDimension(R.dimen.qc_touch_offset);
         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);
+        mNormalPaint = new Paint();
+        mNormalPaint.setColor(res.getColor(R.color.qc_normal));
+        mNormalPaint.setAntiAlias(true);
+        mSelectedPaint = new Paint();
+        mSelectedPaint.setColor(res.getColor(R.color.qc_selected));
+        mSelectedPaint.setAntiAlias(true);
     }
 
     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 +190,121 @@
         mCenter.y = y;
     }
 
-    private boolean onTheLeft() {
-        return mCenter.x < mSlop;
-    }
-
-    @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);
+    private void layoutPie() {
+        float emptyangle = (float) Math.PI / 16;
+        int rgap = 2;
+        int inner = mRadius + rgap;
+        int outer = mRadius + mRadiusInc - rgap;
+        int radius = mRadius;
+        int gap = 1;
+        for (int i = 0; i < mLevels; i++) {
+            int level = i + 1;
+            float sweep = (float) (Math.PI - 2 * emptyangle) / mCounts[level];
+            float angle = emptyangle + sweep / 2;
+            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 r = inner + (outer - inner) * 2 / 3;
+                    int x = (int) (r * Math.sin(angle));
+                    int y = mCenter.y - (int) (r * Math.cos(angle)) - h / 2;
+                    if (onTheLeft()) {
+                        x = mCenter.x + x - w / 2;
+                    } else {
+                        x = mCenter.x - x - w / 2;
+                    }
+                    view.layout(x, y, x + w, y + h);
+                    float itemstart = angle - sweep / 2;
+                    Path slice = makeSlice(getDegrees(itemstart) - gap,
+                            getDegrees(itemstart + sweep) + gap,
+                            outer, inner, mCenter);
+                    item.setGeometry(itemstart, sweep, inner, outer, slice);
+                    angle += sweep;
                 }
-                anchor = drawSlices(canvas, subs, radius, angles.x, angles.y);
-                radius += mRadiusInc + RADIUS_GAP;
             }
-            canvas.restoreToCount(state);
-            mDirty = false;
+            inner += mRadiusInc;
+            outer += mRadiusInc;
         }
     }
 
-    /**
-     * 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 state = canvas.save();
-            if (onTheLeft()) {
-                canvas.scale(-1, 1);
-            }
-            canvas.translate(item.getX(), item.getY());
-            item.draw(canvas);
-            canvas.restoreToCount(state);
-            if (mStack.contains(item)) {
-                // item is anchor for sub menu
-                newanchor = angle;
-            }
-            angle += sweep;
-        }
-        return newanchor;
-    }
 
     /**
      * converts a
-     * @param angle from 0..PI to Android degrees (clockwise starting at 3 o'clock)
+     *
+     * @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);
+    @Override
+    protected void onDraw(Canvas canvas) {
+        if (mOpen) {
+            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;
+            state = canvas.save();
+            if (onTheLeft()) {
+                canvas.scale(-1, 1);
+            }
+            mBackground.draw(canvas);
+            canvas.restoreToCount(state);
+            for (PieItem item : mItems) {
+                Paint p = item.isSelected() ? mSelectedPaint : mNormalPaint;
+                state = canvas.save();
+                if (onTheLeft()) {
+                    canvas.scale(-1, 1);
+                }
+                drawPath(canvas, item.getPath(), p);
+                canvas.restoreToCount(state);
+                drawItem(canvas, item);
+            }
+            if (mPieView != null) {
+                mPieView.draw(canvas);
+            }
+        }
+    }
+
+    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);
+    }
+
+    private void drawPath(Canvas canvas, Path path, Paint paint) {
+        canvas.drawPath(path, paint);
+    }
+
+    private Path makeSlice(float start, float end, int outer, int inner, Point center) {
+        RectF bb =
+                new RectF(center.x - outer, center.y - outer, center.x + outer,
+                        center.y + outer);
+        RectF bbi =
+                new RectF(center.x - inner, center.y - inner, center.x + inner,
+                        center.y + inner);
         Path path = new Path();
-        path.arcTo(bb, startangle, endangle - startangle, true);
-        path.arcTo(bbi, endangle, startangle - endangle);
+        path.arcTo(bb, start, end - start, true);
+        path.arcTo(bbi, end, start - end);
         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;
-    }
-
     // touch handling for pie
 
-    View mCurrentView;
-    Rect mHitRect = new Rect();
-
     @Override
     public boolean onTouchEvent(MotionEvent evt) {
         float x = evt.getX();
@@ -342,12 +319,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 +338,36 @@
             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,
+                            (item.getStartAngle() + item.getSweep()) / 2);
+                }
                 invalidate();
             }
         }
@@ -377,52 +375,35 @@
         return false;
     }
 
+    private void layoutPieView(PieView pv, int x, int y, float angle) {
+        pv.layout(x, y, onTheLeft(), angle);
+    }
+
     /**
      * 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 +427,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() - mTouchOffset < polar.y)
+                    && (item.getOuterRadius() - mTouchOffset > 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..ca641f9
--- /dev/null
+++ b/src/com/android/browser/view/PieStackView.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.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, float angle) {
+        super.layout(anchorX, anchorY, left, angle);
+        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) {
+            int x = mLeft;
+            view.layout(x, top, x + 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);
+    }
+
+}