am 2edc80c2: URL bar select all

* commit '2edc80c2ccca9030f8013328cc2e37bc374d3d92':
  URL bar select all
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 60a9336..30b1d6f 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -41,6 +41,8 @@
     <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="android.permission.READ_PROFILE" />
+    <uses-permission android:name="android.permission.READ_CONTACTS" />
     <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"/>
diff --git a/res/layout-port/autofill_settings_fragment.xml b/res/layout-port/autofill_settings_fragment.xml
index 63dba4d..16f674d 100644
--- a/res/layout-port/autofill_settings_fragment.xml
+++ b/res/layout-port/autofill_settings_fragment.xml
@@ -43,35 +43,19 @@
                 android:layout_width="match_parent" />
 
             <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:textAppearance="?android:attr/textAppearanceMedium"
+                style="@style/AutofillProfileTextView"
                 android:text="@string/autofill_profile_editor_name" />
             <EditText android:id="@+id/autofill_profile_editor_name_edit"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:inputType="textPersonName|textCapWords"
-                android:singleLine="true" />
+                style="@style/AutofillProfileEditText"
+                android:inputType="textPersonName|textCapWords" />
+
             <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:textAppearance="?android:attr/textAppearanceMedium"
+                style="@style/AutofillProfileTextView"
                 android:text="@string/autofill_profile_editor_company_name" />
             <EditText android:id="@+id/autofill_profile_editor_company_name_edit"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:inputType="textCapWords"
-                android:singleLine="true" />
+                style="@style/AutofillProfileEditText"
+                android:inputType="textCapWords" />
+
             <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
@@ -91,13 +75,9 @@
                     android:text="@string/autofill_profile_editor_address_line_1_hint" />
             </LinearLayout>
             <EditText android:id="@+id/autofill_profile_editor_address_line_1_edit"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:inputType="textCapWords"
-                android:singleLine="true" />
+                style="@style/AutofillProfileEditText"
+                android:inputType="textCapWords" />
+
             <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
@@ -117,115 +97,50 @@
                     android:text="@string/autofill_profile_editor_address_line_2_hint" />
             </LinearLayout>
             <EditText android:id="@+id/autofill_profile_editor_address_line_2_edit"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:gravity="bottom"
-                android:layout_margin="2dip"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:inputType="textCapWords"
-                android:singleLine="true" />
+                style="@style/AutofillProfileEditText"
+                android:inputType="textCapWords" />
+
             <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:textAppearance="?android:attr/textAppearanceMedium"
+                style="@style/AutofillProfileTextView"
                 android:text="@string/autofill_profile_editor_city" />
             <EditText android:id="@+id/autofill_profile_editor_city_edit"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:inputType="textCapWords"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:singleLine="true" />
+                style="@style/AutofillProfileEditText"
+                android:inputType="textCapWords" />
+
             <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:textAppearance="?android:attr/textAppearanceMedium"
+                style="@style/AutofillProfileTextView"
                 android:text="@string/autofill_profile_editor_state" />
             <EditText android:id="@+id/autofill_profile_editor_state_edit"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:inputType="textCapWords"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:singleLine="true" />
+                style="@style/AutofillProfileEditText"
+                android:inputType="textCapWords" />
+
             <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:textAppearance="?android:attr/textAppearanceMedium"
+                style="@style/AutofillProfileTextView"
                 android:text="@string/autofill_profile_editor_zip_code" />
             <EditText android:id="@+id/autofill_profile_editor_zip_code_edit"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:inputType="textCapCharacters"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:singleLine="true" />
+                style="@style/AutofillProfileEditText"
+                android:inputType="textCapCharacters" />
+
             <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:textAppearance="?android:attr/textAppearanceMedium"
+                style="@style/AutofillProfileTextView"
                 android:text="@string/autofill_profile_editor_country" />
             <EditText android:id="@+id/autofill_profile_editor_country_edit"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:inputType="textCapWords"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:singleLine="true" />
+                style="@style/AutofillProfileEditText"
+                android:inputType="textCapWords" />
+
             <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:textAppearance="?android:attr/textAppearanceMedium"
+                style="@style/AutofillProfileTextView"
                 android:text="@string/autofill_profile_editor_phone_number" />
             <EditText android:id="@+id/autofill_profile_editor_phone_number_edit"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:singleLine="true"
+                style="@style/AutofillProfileEditText"
                 android:phoneNumber="true" />
+
             <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:textAppearance="?android:attr/textAppearanceMedium"
+                style="@style/AutofillProfileTextView"
                 android:text="@string/autofill_profile_editor_email_address" />
             <EditText android:id="@+id/autofill_profile_editor_email_address_edit"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:gravity="center_vertical"
-                android:layout_margin="2dip"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:inputType="textEmailAddress"
-                android:singleLine="true" />
+                style="@style/AutofillProfileEditText"
+                android:inputType="textEmailAddress" />
         </LinearLayout>
     </ScrollView>
-
-    <View
-        android:layout_height="12dip"
-        android:layout_width="match_parent" />
-
-    <Button
-        android:id="@+id/autofill_profile_editor_save_button"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/autofill_profile_editor_save_profile"
-        android:textAppearance="?android:attr/textAppearanceMedium" />
-
 </LinearLayout>
diff --git a/res/layout/autofill_settings_fragment.xml b/res/layout/autofill_settings_fragment.xml
index 8c90dd7..ab23ffb 100644
--- a/res/layout/autofill_settings_fragment.xml
+++ b/res/layout/autofill_settings_fragment.xml
@@ -49,37 +49,19 @@
                 android:stretchColumns="1">
                 <TableRow>
                     <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
+                        style="@style/AutofillProfileTextView"
                         android:text="@string/autofill_profile_editor_name" />
                     <EditText android:id="@+id/autofill_profile_editor_name_edit"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
-                        android:inputType="textPersonName|textCapWords"
-                        android:singleLine="true" />
+                        style="@style/AutofillProfileEditText"
+                        android:inputType="textPersonName|textCapWords" />
                 </TableRow>
                 <TableRow>
                     <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
+                        style="@style/AutofillProfileTextView"
                         android:text="@string/autofill_profile_editor_company_name" />
                     <EditText android:id="@+id/autofill_profile_editor_company_name_edit"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
-                        android:inputType="textCapWords"
-                        android:singleLine="true" />
+                        style="@style/AutofillProfileEditText"
+                        android:inputType="textCapWords" />
                 </TableRow>
                 <TableRow>
                     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
@@ -101,13 +83,8 @@
                             android:text="@string/autofill_profile_editor_address_line_1_hint" />
                     </LinearLayout>
                     <EditText android:id="@+id/autofill_profile_editor_address_line_1_edit"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
-                        android:inputType="textCapWords"
-                        android:singleLine="true" />
+                        style="@style/AutofillProfileEditText"
+                        android:inputType="textCapWords" />
                 </TableRow>
                 <TableRow>
                     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
@@ -129,130 +106,59 @@
                             android:text="@string/autofill_profile_editor_address_line_2_hint" />
                     </LinearLayout>
                     <EditText android:id="@+id/autofill_profile_editor_address_line_2_edit"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:gravity="bottom"
-                        android:layout_margin="2dip"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
-                        android:inputType="textCapWords"
-                        android:singleLine="true" />
+                        style="@style/AutofillProfileEditText"
+                        android:inputType="textCapWords" />
                 </TableRow>
                 <TableRow>
                     <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
+                        style="@style/AutofillProfileTextView"
                         android:text="@string/autofill_profile_editor_city" />
                     <EditText android:id="@+id/autofill_profile_editor_city_edit"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:inputType="textCapWords"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
-                        android:singleLine="true" />
+                        style="@style/AutofillProfileEditText"
+                        android:inputType="textCapWords" />
                 </TableRow>
                 <TableRow>
                     <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
+                        style="@style/AutofillProfileTextView"
                         android:text="@string/autofill_profile_editor_state" />
                     <EditText android:id="@+id/autofill_profile_editor_state_edit"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:inputType="textCapWords"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
-                        android:singleLine="true" />
+                        style="@style/AutofillProfileEditText"
+                        android:inputType="textCapWords" />
                 </TableRow>
                 <TableRow>
                     <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
+                        style="@style/AutofillProfileTextView"
                         android:text="@string/autofill_profile_editor_zip_code" />
                     <EditText android:id="@+id/autofill_profile_editor_zip_code_edit"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:inputType="textCapCharacters"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
-                        android:singleLine="true" />
+                        style="@style/AutofillProfileEditText"
+                        android:inputType="textCapCharacters" />
                 </TableRow>
                 <TableRow>
                     <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
+                        style="@style/AutofillProfileTextView"
                         android:text="@string/autofill_profile_editor_country" />
                     <EditText android:id="@+id/autofill_profile_editor_country_edit"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:inputType="textCapWords"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
-                        android:singleLine="true" />
+                        style="@style/AutofillProfileEditText"
+                        android:inputType="textCapWords" />
                 </TableRow>
                 <TableRow>
                     <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
+                        style="@style/AutofillProfileTextView"
                         android:text="@string/autofill_profile_editor_phone_number" />
                     <EditText android:id="@+id/autofill_profile_editor_phone_number_edit"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
-                        android:singleLine="true"
+                        style="@style/AutofillProfileEditText"
                         android:phoneNumber="true" />
                 </TableRow>
                 <TableRow>
                     <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
+                        style="@style/AutofillProfileTextView"
                         android:text="@string/autofill_profile_editor_email_address" />
                     <EditText android:id="@+id/autofill_profile_editor_email_address_edit"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:gravity="center_vertical"
-                        android:layout_margin="2dip"
-                        android:textAppearance="?android:attr/textAppearanceMedium"
-                        android:inputType="textEmailAddress"
-                        android:singleLine="true" />
+                        style="@style/AutofillProfileEditText"
+                        android:inputType="textEmailAddress" />
                 </TableRow>
             </TableLayout>
        </LinearLayout>
     </ScrollView>
-
-    <View
-        android:layout_height="12dip"
-        android:layout_width="match_parent" />
-
-    <Button
-        android:id="@+id/autofill_profile_editor_save_button"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/autofill_profile_editor_save_profile"
-        android:textAppearance="?android:attr/textAppearanceMedium" />
-
 </LinearLayout>
 
diff --git a/res/menu/autofill_profile_editor.xml b/res/menu/autofill_profile_editor.xml
index 4e746e5..9dab635 100644
--- a/res/menu/autofill_profile_editor.xml
+++ b/res/menu/autofill_profile_editor.xml
@@ -15,6 +15,11 @@
 -->
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@+id/autofill_profile_editor_save_profile_menu_id"
+        android:title="@string/autofill_profile_editor_save_profile"
+        android:icon="@android:drawable/ic_menu_save"
+        android:showAsAction="ifRoom|withText" />
+
     <item android:id="@+id/autofill_profile_editor_delete_profile_menu_id"
         android:title="@string/autofill_profile_editor_delete_profile"
         android:icon="@android:drawable/ic_menu_delete"
diff --git a/res/menu/browser.xml b/res/menu/browser.xml
index bf95574..2886aa7 100644
--- a/res/menu/browser.xml
+++ b/res/menu/browser.xml
@@ -91,10 +91,6 @@
             android:id="@+id/dump_nav_menu_id"
             android:title="@string/dump_nav"
             android:visible="false" />
-        <item
-            android:id="@+id/dump_counters_menu_id"
-            android:title="@string/dump_counters"
-            android:visible="false" />
     </group>
     <group android:id="@+id/MAIN_SHORTCUT_MENU" android:visible="false">
         <item android:id="@+id/view_downloads_menu_id"
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 4dc836b..50dfb53 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -52,7 +52,7 @@
     <string name="ssl_unknown" msgid="5679243486524754571">"अज्ञात प्रमाणपत्र त्रुटि."</string>
     <string name="stopping" msgid="4839698519340302982">"रोका जा रहा है…"</string>
     <string name="stop" msgid="5687251076030630074">"रोकें"</string>
-    <string name="reload" msgid="8585220783228408062">"रीफ़्रेश करें"</string>
+    <string name="reload" msgid="8585220783228408062">"रीफ़्रेश करें"</string>
     <string name="back" msgid="8414603107175713668">"वापस जाएं"</string>
     <string name="forward" msgid="4288210890526641577">"अग्रेषित करें"</string>
     <string name="save" msgid="5922311934992468496">"ठीक"</string>
@@ -116,7 +116,7 @@
     <string name="contextmenu_view_image" msgid="3870625602053600905">"छवि देखें"</string>
     <string name="contextmenu_set_wallpaper" msgid="3691902960115350686">"वॉलपेपर के रूप में सेट करें"</string>
     <string name="contextmenu_dial_dot" msgid="5856550683415933806">"डायल करें…"</string>
-    <string name="contextmenu_add_contact" msgid="3183511922223645716">"संपर्क जोड़ें"</string>
+    <string name="contextmenu_add_contact" msgid="3183511922223645716">"संपर्क जोड़ें"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"ईमेल भेजें"</string>
     <string name="contextmenu_map" msgid="7471390435434034912">"मानचित्र"</string>
     <string name="choosertitle_sharevia" msgid="4600490613341909086">"इसके द्वारा शेयर करें"</string>
@@ -148,7 +148,7 @@
     <item msgid="6092441301001006473">"सर्वाधिक देखी गई साइटें"</item>
     <item msgid="6569304572171444894">"अन्य"</item>
   </string-array>
-    <string name="pref_content_autofit" msgid="8260474534053660809">"स्वतः फ़िट पृष्ठ"</string>
+    <string name="pref_content_autofit" msgid="8260474534053660809">"स्वतः फ़िट पृष्ठ"</string>
     <string name="pref_content_autofit_summary" msgid="324810555822572112">"स्‍क्रीन में फ़िट करने के लिए वेबपृष्ठों को प्रारूपित करें"</string>
     <string name="pref_general_title" msgid="1946872771219249323">"सामान्य"</string>
     <string name="pref_general_sync_title" msgid="3138637035975860324">"समन्वयित करें"</string>
@@ -378,7 +378,7 @@
     <string name="accessibility_button_closetab" msgid="6954807842756927737">"टैब बंद करें"</string>
     <string name="accessibility_button_newtab" msgid="4116986240706315748">"नया टैब खोलें"</string>
     <string name="accessibility_button_newincognitotab" msgid="5254901889040012964">"नया गुप्त टैब खोलें"</string>
-    <string name="accessibility_button_clear" msgid="6943152307986161598">"इनपुट साफ़ करें"</string>
+    <string name="accessibility_button_clear" msgid="6943152307986161598">"इनपुट साफ़ करें"</string>
     <string name="accessibility_button_uaswitch" msgid="6286804719724282339">"उपयोगकर्ता एजेंट स्विच करें"</string>
     <string name="accessibility_button_go" msgid="1182818872083055958">"जाएं"</string>
     <string name="accessibility_button_navscreen" msgid="9142904748728713075">"पृष्ठ प्रबंधक"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 5032737..718f936 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -190,7 +190,7 @@
     <string name="pref_privacy_clear_cache_dlg" msgid="4344512581716422465">"Hapus basis data dan konten dalam tembolok lokal?"</string>
     <string name="pref_privacy_cookies_title" msgid="6763274282214830526">"Kuki"</string>
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Hapus semua data kuki"</string>
-    <string name="pref_privacy_clear_cookies_summary" msgid="6962742063990677520">"Menghapus semua kuki peramban"</string>
+    <string name="pref_privacy_clear_cookies_summary" msgid="6962742063990677520">"Hapus semua kuki peramban"</string>
     <string name="pref_privacy_clear_cookies_dlg" msgid="1493252163164621278">"Hapus semua kuki?"</string>
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Hapus riwayat"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Hapus riwayat navigasi peramban"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 8b52381..9d5825a 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -22,7 +22,7 @@
     <string name="new_tab" msgid="7971857320679510529">"כרטיסייה חדשה"</string>
     <string name="new_incognito_tab" msgid="3606197964239039478">"כרטיסייה חדשה של גלישה בסתר"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"סימניות"</string>
-    <string name="tab_most_visited" msgid="1077402532455000703">"אתרים שבהם אתה מבקר הכי הרבה"</string>
+    <string name="tab_most_visited" msgid="1077402532455000703">"אתרים שבהם אתה מבקר בתדירות הגבוהה ביותר"</string>
     <string name="tab_history" msgid="1979267558744613746">"היסטוריה"</string>
     <string name="tab_snapshots" msgid="1449241204980265186">"דפים שמורים"</string>
     <string name="added_to_bookmarks" msgid="4028710765672851635">"נוסף לסימניות."</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index a15fd2b..767bc5c 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -22,7 +22,7 @@
     <string name="new_tab" msgid="7971857320679510529">"แท็บใหม่"</string>
     <string name="new_incognito_tab" msgid="3606197964239039478">"แท็บใหม่ที่ไม่ระบุตัวตน"</string>
     <string name="tab_bookmarks" msgid="2305793036003473653">"บุ๊กมาร์ก"</string>
-    <string name="tab_most_visited" msgid="1077402532455000703">"เข้าชมบ่อยที่สุด"</string>
+    <string name="tab_most_visited" msgid="1077402532455000703">"เข้าชมมากที่สุด"</string>
     <string name="tab_history" msgid="1979267558744613746">"ประวัติ"</string>
     <string name="tab_snapshots" msgid="1449241204980265186">"หน้าที่บันทึกไว้"</string>
     <string name="added_to_bookmarks" msgid="4028710765672851635">"เพิ่มลงในบุ๊กมาร์กแล้ว"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 5ef5241..90e03c0 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -25,8 +25,8 @@
     <string name="tab_most_visited" msgid="1077402532455000703">"Truy cập nhiều nhất"</string>
     <string name="tab_history" msgid="1979267558744613746">"Lịch sử"</string>
     <string name="tab_snapshots" msgid="1449241204980265186">"Trang đã lưu"</string>
-    <string name="added_to_bookmarks" msgid="4028710765672851635">"Đã thêm vào dấu trang."</string>
-    <string name="removed_from_bookmarks" msgid="546648923924996722">"Đã xóa khỏi dấu trang."</string>
+    <string name="added_to_bookmarks" msgid="4028710765672851635">"Đã thêm vào dấu trang."</string>
+    <string name="removed_from_bookmarks" msgid="546648923924996722">"Đã xóa khỏi dấu trang."</string>
     <string name="sign_in_to" msgid="5939425800148759165">"Đăng nhập vào <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
     <string name="username" msgid="5057566336518215922">"Tên"</string>
     <string name="password" msgid="1177138552305184404">"Mật khẩu"</string>
@@ -34,12 +34,12 @@
     <string name="bookmarks_search" msgid="5229596268214362873">"Trình duyệt"</string>
     <string name="cancel" msgid="3017274947407233702">"Hủy"</string>
     <string name="ok" msgid="1509280796718850364">"OK"</string>
-    <string name="title_bar_loading" msgid="7438217780834640678">"Đang tải…"</string>
+    <string name="title_bar_loading" msgid="7438217780834640678">"Đang tải…"</string>
     <string name="page_info" msgid="4048529256302257195">"Thông tin trang"</string>
     <string name="page_info_view" msgid="5303490449842635158">"Xem thông tin trang"</string>
     <string name="page_info_address" msgid="2222306609532903254">"Địa chỉ:"</string>
     <string name="ssl_warnings_header" msgid="79744901983636370">"Có sự cố với chứng chỉ bảo mật cho trang web này."</string>
-    <string name="ssl_continue" msgid="8031515015829358457">"Tiếp tục"</string>
+    <string name="ssl_continue" msgid="8031515015829358457">"Tiếp tục"</string>
     <string name="security_warning" msgid="6607795404322797541">"Cảnh báo bảo mật"</string>
     <string name="view_certificate" msgid="1472768887529093862">"Xem chứng chỉ"</string>
     <string name="ssl_go_back" msgid="4598951822061593819">"Quay lại"</string>
@@ -69,17 +69,17 @@
     <string name="add_to_other_folder_menu_option" msgid="5947586525822134105">"Thư mục khác"</string>
     <string name="name" msgid="5462672162695365387">"Nhãn"</string>
     <string name="http" msgid="2163722670597250102">"http://"</string>
-    <string name="save_to_bookmarks" msgid="1679286010089780932">"Lưu vào dấu trang"</string>
+    <string name="save_to_bookmarks" msgid="1679286010089780932">"Lưu vào dấu trang"</string>
     <string name="bookmark_this_page" msgid="7530739804320811054">"Đánh dấu trang này"</string>
     <string name="remove" msgid="7820112494467011374">"Xóa"</string>
-    <string name="edit_bookmark" msgid="5024089053490231905">"Chỉnh sửa dấu trang"</string>
+    <string name="edit_bookmark" msgid="5024089053490231905">"Chỉnh sửa dấu trang"</string>
     <string name="create_shortcut_bookmark" msgid="1995095662095484289">"Thêm lối tắt tới màn hình trang chủ"</string>
-    <string name="open_bookmark" msgid="8473581305759935790">"Mở"</string>
+    <string name="open_bookmark" msgid="8473581305759935790">"Mở"</string>
     <string name="remove_bookmark" msgid="8407495852801410891">"Xoá dấu trang"</string>
-    <string name="remove_from_bookmarks" msgid="4374080666576982775">"Xoá khỏi dấu trang"</string>
+    <string name="remove_from_bookmarks" msgid="4374080666576982775">"Xoá khỏi dấu trang"</string>
     <string name="remove_history_item" msgid="5021424935726728618">"Xoá khỏi lịch sử"</string>
     <string name="set_as_homepage" msgid="4752937379414905560">"Đặt làm trang chủ"</string>
-    <string name="bookmark_saved" msgid="2766434679871317557">"Đã lưu vào dấu trang."</string>
+    <string name="bookmark_saved" msgid="2766434679871317557">"Đã lưu vào dấu trang."</string>
     <string name="bookmark_not_saved" msgid="1077732557310662080">"Không thể lưu dấu trang."</string>
     <string name="homepage_set" msgid="8768087280310966395">"Đã đặt trang chủ."</string>
     <string name="bookmark_needs_title" msgid="6245900436119218187">"Dấu trang phải có tên."</string>
@@ -99,26 +99,26 @@
     <string name="shortcut_bookmark_title" msgid="7570786275916681296">"Chọn dấu trang"</string>
     <string name="history" msgid="2451240511251410032">"Lịch sử"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Nội dung tải xuống"</string>
-    <string name="copy_page_url" msgid="1188679152608889555">"Sao chép url của trang"</string>
+    <string name="copy_page_url" msgid="1188679152608889555">"Sao chép url của trang"</string>
     <string name="share_page" msgid="593756995297268343">"Chia sẻ trang"</string>
     <string name="menu_save_snapshot" msgid="6935080344031126139">"Lưu để đọc ngoại tuyến"</string>
     <string name="snapshot_failed" msgid="4584580873565876033">"Không thể lưu để đọc ngoại tuyến."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> dấu trang"</string>
     <string name="contextheader_folder_empty" msgid="974171637803391651">"Thư mục trống"</string>
-    <string name="contextmenu_openlink" msgid="7237961252214188935">"Mở"</string>
-    <string name="contextmenu_openlink_newwindow" msgid="1205313604181761403">"Mở trong tab mới"</string>
+    <string name="contextmenu_openlink" msgid="7237961252214188935">"Mở"</string>
+    <string name="contextmenu_openlink_newwindow" msgid="1205313604181761403">"Mở trong tab mới"</string>
     <string name="contextmenu_openlink_newwindow_background" msgid="4690381019116746687">"Mở trong tab nền mới"</string>
     <string name="contextmenu_savelink" msgid="5508554930832538184">"Lưu liên kết"</string>
     <string name="contextmenu_sharelink" msgid="5392275392280130331">"Chia sẻ liên kết"</string>
-    <string name="contextmenu_copy" msgid="398860586635404030">"Sao chép"</string>
-    <string name="contextmenu_copylink" msgid="5153657160294534270">"Sao chép URL liên kết"</string>
+    <string name="contextmenu_copy" msgid="398860586635404030">"Sao chép"</string>
+    <string name="contextmenu_copylink" msgid="5153657160294534270">"Sao chép URL liên kết"</string>
     <string name="contextmenu_download_image" msgid="4243829645180686912">"Lưu hình ảnh"</string>
     <string name="contextmenu_view_image" msgid="3870625602053600905">"Xem hình ảnh"</string>
     <string name="contextmenu_set_wallpaper" msgid="3691902960115350686">"Đặt làm hình nền"</string>
     <string name="contextmenu_dial_dot" msgid="5856550683415933806">"Quay số…"</string>
     <string name="contextmenu_add_contact" msgid="3183511922223645716">"Thêm liên hệ"</string>
     <string name="contextmenu_send_mail" msgid="1014513374828775660">"Gửi email"</string>
-    <string name="contextmenu_map" msgid="7471390435434034912">"Bản đồ"</string>
+    <string name="contextmenu_map" msgid="7471390435434034912">"Bản đồ"</string>
     <string name="choosertitle_sharevia" msgid="4600490613341909086">"Chia sẻ qua"</string>
     <string name="clear" msgid="7070043081700011461">"Xoá"</string>
     <string name="replace" msgid="4843033491070384047">"Thay thế"</string>
@@ -129,7 +129,7 @@
     <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="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_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>
   <string-array name="pref_content_plugins_choices">
     <item msgid="6745108155096660725">"Luôn bật"</item>
@@ -175,7 +175,7 @@
     <string name="autofill_profile_editor_state" msgid="2150403366835080407">"Tiểu bang/Tỉnh/Vùng:"</string>
     <string name="autofill_profile_editor_zip_code" msgid="283668573295656671">"Mã zip:"</string>
     <string name="autofill_profile_editor_country" msgid="7234470301239156656">"Quốc gia:"</string>
-    <string name="autofill_profile_editor_phone_number" msgid="4938852821413729276">"Điện thoại:"</string>
+    <string name="autofill_profile_editor_phone_number" msgid="4938852821413729276">"Điện thoại:"</string>
     <string name="autofill_profile_editor_phone_number_invalid" msgid="6795411298467068957">"Số điện thoại không hợp lệ."</string>
     <string name="autofill_profile_editor_save_profile" msgid="3230301454458581157">"Lưu"</string>
     <string name="autofill_profile_successful_save" msgid="5691459703493331983">"Đã lưu văn bản tự động điền."</string>
@@ -219,9 +219,9 @@
     <string name="pref_security_accept_cookies_summary" msgid="1907951236154433751">"Cho phép trang web lưu và đọc dữ liệu cookie"</string>
   <string-array name="pref_text_size_choices">
     <item msgid="4952686548944739548">"Rất nhỏ"</item>
-    <item msgid="1950030433642671460">"Nhỏ"</item>
+    <item msgid="1950030433642671460">"Nhỏ"</item>
     <item msgid="4338347520133294584">"Thường"</item>
-    <item msgid="5043128215356351184">"Lớn"</item>
+    <item msgid="5043128215356351184">"Lớn"</item>
     <item msgid="7201512237890458902">"Rất lớn"</item>
   </string-array>
     <string name="pref_min_font_size" msgid="8811125835817449131">"Kích thước phông chữ tối thiểu"</string>
@@ -238,10 +238,10 @@
   <string-array name="pref_default_zoom_choices">
     <item msgid="549583171195154919">"Xa"</item>
     <item msgid="5619034257768161024">"Trung bình"</item>
-    <item msgid="3840999588443167001">"Đóng"</item>
+    <item msgid="3840999588443167001">"Đóng"</item>
   </string-array>
     <string name="pref_default_zoom_dialogtitle" msgid="6095974367125109021">"Thu phóng mặc định"</string>
-    <string name="pref_content_load_page" msgid="2219810141690955452">"Mở các trang trong chế độ xem tổng quan"</string>
+    <string name="pref_content_load_page" msgid="2219810141690955452">"Mở các trang trong chế độ xem tổng quan"</string>
     <string name="pref_content_load_page_summary" msgid="9168803276420332955">"Hiển thị tổng quan về các trang mới mở"</string>
     <string name="pref_extras_title" msgid="7075456173747370647">"Nâng cao"</string>
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Cài đặt trang web"</string>
@@ -260,7 +260,7 @@
     <item msgid="891615911084608570">"Tiếng Nhật (ISO-2022-JP)"</item>
     <item msgid="5589150448475151241">"Tiếng Nhật (SHIFT_JIS)"</item>
     <item msgid="7356792686950371843">"Tiếng Nhật (EUC-JP)"</item>
-    <item msgid="2193955365569270096">"Tiếng Hàn (EUC-KR)"</item>
+    <item msgid="2193955365569270096">"Tiếng Hàn (EUC-KR)"</item>
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Mã hoá văn bản"</string>
     <string name="pref_accessibility_title" msgid="5127836981587423215">"Khả năng truy cập"</string>
@@ -360,7 +360,7 @@
     <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>
-    <string name="preview" msgid="6450823514561689038">"Xem trước"</string>
+    <string name="preview" msgid="6450823514561689038">"Xem trước"</string>
     <string name="local_bookmarks" msgid="533816851415228520">"Địa phương"</string>
     <string name="ua_switcher_desktop" msgid="220097077327558435">"Yêu cầu trang web dành cho máy tính"</string>
     <string name="permission_preload_label" msgid="4856971662337877316">"Tải trước kết quả"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 8674734..75a94d6 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -42,7 +42,7 @@
     <string name="ssl_continue" msgid="8031515015829358457">"Qhubeka"</string>
     <string name="security_warning" msgid="6607795404322797541">"Isexwayiso sokuvikeleka"</string>
     <string name="view_certificate" msgid="1472768887529093862">"Buka isitifiketi"</string>
-    <string name="ssl_go_back" msgid="4598951822061593819">"Emuva"</string>
+    <string name="ssl_go_back" msgid="4598951822061593819">"Phindela emuva"</string>
     <string name="ssl_untrusted" msgid="7754507359360636447">"Lesi sitifiketi asiphumi embusweni othembekile."</string>
     <string name="ssl_mismatch" msgid="3809794439740523641">"Igama lale ngosi alifani negama elikusitifiketi."</string>
     <string name="ssl_expired" msgid="5739349389499575559">"Lesi sitifiketi siphelelwe yisikhathi"</string>
@@ -127,10 +127,10 @@
     <string name="pref_content_title" msgid="3834107397725342174">"Okuqukethwe ekhasini"</string>
     <string name="pref_content_load_images" msgid="2125616852957377561">"Hlohla izithombe"</string>
     <string name="pref_content_load_images_summary" msgid="5055874125248398584">"Bonisa izithombe emakhasini lewebhu"</string>
-    <string name="pref_content_block_popups" msgid="4158524847764470895">"Vimba ama-pop-ups"</string>
+    <string name="pref_content_block_popups" msgid="4158524847764470895">"Vimba okuzivulakelayo"</string>
     <string name="pref_content_javascript" msgid="4570972030299516843">"Vumela i-JavaScript"</string>
     <string name="pref_content_open_in_background" msgid="824123779725118663">"Vula emuva"</string>
-    <string name="pref_content_plugins" msgid="7231944644794301582">"Nika amandla ama-plugin"</string>
+    <string name="pref_content_plugins" msgid="7231944644794301582">"Nika amandla intshutheko"</string>
   <string-array name="pref_content_plugins_choices">
     <item msgid="6745108155096660725">"Njalo ivuliwe"</item>
     <item msgid="2484126708670016519">"Kuyadingeka kakhulu"</item>
@@ -155,7 +155,7 @@
     <string name="pref_general_autofill_title" msgid="547881256865816858">"Ukufaka-okuzenzakalelayo"</string>
     <string name="pref_autofill_enabled" msgid="1015751713312396713">"Ukufaka-okuzenzakalelayo kweFomu"</string>
     <string name="pref_autofill_enabled_summary" msgid="7659954073892471496">"Gcwalisa amafomu ewebhu ngokuthinta kanye"</string>
-    <string name="pref_autofill_profile_editor" msgid="8934844472922113166">"Umbhalo ofakwe ngokuzenzakalelayo"</string>
+    <string name="pref_autofill_profile_editor" msgid="8934844472922113166">"Ubhalo ozenzakalelayo"</string>
     <string name="pref_autofill_profile_editor_summary" msgid="4864447251676856190">"Setha ukuzilayisha kombhalo emafomini ewebhu"</string>
     <string name="pref_autologin_title" msgid="4421187193809267096">"Ukusayinda ku-Google okuzenzakalelayo"</string>
     <string name="pref_autologin_progress" msgid="8333244467048833461">"Ingena ngemvume kumasayithi e-Google isebenzisa i-<xliff:g id="ID_1">%s</xliff:g>"</string>
@@ -163,7 +163,7 @@
     <string name="autologin_bar_login_text" msgid="3336615320510851879">"Ngena ngemvume"</string>
     <string name="autologin_bar_hide_text" msgid="3629355974385859580">"Fihla"</string>
     <string name="autologin_bar_error" msgid="7470001207395920811">"Ayikwazanga ukungena ngemvume."</string>
-    <string name="autofill_profile_editor_heading" msgid="4798644544927738078">"Bhala umbhalo owufunayo ukuzigcwalisela amafomu ewebhu."</string>
+    <string name="autofill_profile_editor_heading" msgid="4798644544927738078">"Bhala umbhalo owufunayo ukuzigcwalisela aafomu ewebhu."</string>
     <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Igama eliphelele:"</string>
     <string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"I-imeyili:"</string>
     <string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Igama lenkampani:"</string>
@@ -182,7 +182,7 @@
     <string name="autofill_profile_successful_delete" msgid="1790262652460723127">"Ukuzifakekela kwamagama kususiwe."</string>
     <string name="autofill_profile_editor_delete_profile" msgid="3098369314558164153">"Susa"</string>
     <string name="autofill_setup_dialog_message" msgid="1096164985825394616">"Isiphequluli singazigcwalisela amafomu ewebhu afana nalawa. Ungathanda ukulungisa uhlelo lokuzigcwalisela umbhalo?"</string>
-    <string name="autofill_setup_dialog_negative_toast" msgid="3288881675232206984">"Ungakwazi njalo ukuthi usethe ukuzifakekela kombhalo usuka Esipheqululini; Izilungiselelosetho; Iskrini esijwayelekile."</string>
+    <string name="autofill_setup_dialog_negative_toast" msgid="3288881675232206984">"Ungakwazi njalo ukuthi usethe ukuzifakekela kombhalo usuka Esipheqululini &gt; Izisetho &gt; Iskrini esijwayelekile."</string>
     <string name="disable_autofill" msgid="8305901059849400354">"Khubaza ukufaka-okuzenzakalelayo"</string>
     <string name="pref_privacy_security_title" msgid="3480313968942160914">"Ubumfihlo nokuvikela"</string>
     <string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Sula inqolobane"</string>
@@ -191,7 +191,7 @@
     <string name="pref_privacy_cookies_title" msgid="6763274282214830526">"Amakhukhi"</string>
     <string name="pref_privacy_clear_cookies" msgid="3095583579133780331">"Sula yonke idatha yekhukhi"</string>
     <string name="pref_privacy_clear_cookies_summary" msgid="6962742063990677520">"Sula wonke amakhukhi okuphequlula"</string>
-    <string name="pref_privacy_clear_cookies_dlg" msgid="1493252163164621278">"Susa wonke amakhukhi?"</string>
+    <string name="pref_privacy_clear_cookies_dlg" msgid="1493252163164621278">"Susa wonke ama-cookie?"</string>
     <string name="pref_privacy_clear_history" msgid="8723795508825198477">"Sula umlando"</string>
     <string name="pref_privacy_clear_history_summary" msgid="6868501330708940734">"Sula umlando wokuzulazula isiphequluli"</string>
     <string name="pref_privacy_clear_history_dlg" msgid="6934317391642846227">"Susa umlando wokubheka umlando?"</string>
@@ -220,13 +220,13 @@
   <string-array name="pref_text_size_choices">
     <item msgid="4952686548944739548">"Ncane"</item>
     <item msgid="1950030433642671460">"Ncane"</item>
-    <item msgid="4338347520133294584">"Jwayelekile"</item>
+    <item msgid="4338347520133294584">"Kuvamile"</item>
     <item msgid="5043128215356351184">"Okukhulu"</item>
-    <item msgid="7201512237890458902">"Nkulu kakhulu"</item>
+    <item msgid="7201512237890458902">"Kukhulu kakhulu"</item>
   </string-array>
     <string name="pref_min_font_size" msgid="8811125835817449131">"Usayizi wefonti olinganiselwe ophansi"</string>
     <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>pt"</string>
-    <string name="pref_text_zoom" msgid="5171056101805125497">"Ukukekela kombhalo"</string>
+    <string name="pref_text_zoom" msgid="5171056101805125497">"Umbhalo uyakekela"</string>
     <string name="pref_zoom_on_double_tap" msgid="902786475250741795">"Sondeza ithephu ephindwe kabili"</string>
     <string name="pref_force_userscalable" msgid="5641500562399892621">"Phoqelela ukuvumela ukusondeza"</string>
     <string name="pref_force_userscalable_summary" msgid="3613242300617172230">"Shintsha isicelo sewebusayithi ukulawula indlela yokwandisa"</string>
@@ -247,7 +247,7 @@
     <string name="pref_extras_website_settings" msgid="67866640052455549">"Izilungiselelo zewebhusayithi"</string>
     <string name="pref_extras_website_settings_summary" msgid="1656771443223494406">"Izilungiselelo ezithuthukisiwe zamawebhusayithi omuntu ngamunye"</string>
     <string name="pref_extras_reset_default_title" msgid="3579760449455761762">"Setha kabusha okumisiwe"</string>
-    <string name="pref_extras_reset_default" msgid="8904000515846202110">"Setha kabusha kube okumisiwe"</string>
+    <string name="pref_extras_reset_default" msgid="8904000515846202110">"Setha kabusha kube okuzenzakalelayo"</string>
     <string name="pref_extras_reset_default_summary" msgid="4247870778270414501">"Buyisela esimweni izilungiselelo ezizenzakalelayo"</string>
     <string name="pref_extras_reset_default_dlg" msgid="7922814420184322450">"Buyisela izisetho kokumisiwe?"</string>
     <string name="pref_development_title" msgid="3263854204533056480">"Lungisa amaphutha"</string>
@@ -272,7 +272,7 @@
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Sebenzisa i-Google Instant uma usebenzisa Usesho lwe-Google, ukubonisa imiphumelo njengoba uthayipha (lokhu kungakhuphula ukusetshenziswa kwedatha)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Isikrini esigcwele"</string>
     <string name="pref_lab_fullscreen_summary" msgid="7694738112219376740">"Sebenzisa imodi yesikrini esiphelele ukuze ufihle umudwa ochaza ngesimo."</string>
-    <string name="pref_data_title" msgid="7255058703417796578">"Ukuphathwa kwebhendiwithi"</string>
+    <string name="pref_data_title" msgid="7255058703417796578">"Ukuphathwa Komkhawulokudonsa"</string>
     <string name="pref_data_preload_title" msgid="4479320472980292873">"Imiphumela yosesho iyafaka"</string>
   <string-array name="pref_data_preload_choices">
     <item msgid="5180466923190095508">"Akusoze"</item>
@@ -352,7 +352,7 @@
     <string name="import_bookmarks_dialog_confirm_add" msgid="8942794112340838111">"Engeza amabhukimakhi akuledivayisi okwamanje bese uqalisa ukuvumelanisa amabhukimakhi nge <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>?"</string>
     <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Susa amabhukimakhi"</string>
     <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Okulandelayo"</string>
-    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Okwandulele"</string>
+    <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Okwangaphambilini"</string>
     <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Khansela"</string>
     <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Kwenziwe"</string>
     <string name="import_bookmarks_dialog_add" msgid="1743359725294101189">"Engeza amabhukimaka e-Akhawuntini ye-Google"</string>
@@ -367,7 +367,7 @@
     <string name="empty_snapshots_folder" msgid="7675378008107026013">"Awekho amakhasi alondoloziwe."</string>
     <string name="remove_snapshot" msgid="1624447424544976849">"Susa ikhasi elilondiwe"</string>
     <string name="snapshot_go_live" msgid="1209542802541168497">"Iya bukhoma"</string>
-    <string name="accessibility_button_back" msgid="6194680634245279407">"Emuva"</string>
+    <string name="accessibility_button_back" msgid="6194680634245279407">"Phindela emuva"</string>
     <string name="accessibility_button_forward" msgid="1236827218480658168">"Iya phambili"</string>
     <string name="accessibility_button_refresh" msgid="1023441396241841313">"Vuselela ikhasi"</string>
     <string name="accessibility_button_stop" msgid="6793644120043222148">"Misa ukulayisha ikhasi"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1e5f68f..1daa43f 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -762,8 +762,6 @@
 
     <!-- Do not translate.  Testing only -->
     <string name="dump_nav" translatable="false">Dump navigation cache</string>
-    <!-- Do not translate.  Testing only -->
-    <string name="dump_counters" translatable="false">Dump V8 counters</string>
 
     <!-- The default homepage. If it starts with "http://www.google" and the
             user signs up the device with a Google sites account, the site's
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 361702e..3c87e22 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -80,4 +80,17 @@
         <item name="android:textColor">?android:attr/textColorSecondary</item>
         <item name="android:textStyle">normal</item>
     </style>
+
+    <style name="AutofillProfileTextView">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:gravity">center_vertical</item>
+        <item name="android:layout_margin">2dip</item>
+        <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
+    </style>
+    <style name="AutofillProfileEditText" parent="@style/AutofillProfileTextView">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:imeOptions">flagNoExtractUi</item>
+        <item name="android:singleLine">true</item>
+    </style>
 </resources>
diff --git a/src/com/android/browser/AutoFillSettingsFragment.java b/src/com/android/browser/AutoFillSettingsFragment.java
index 04f45b5..7be657d 100644
--- a/src/com/android/browser/AutoFillSettingsFragment.java
+++ b/src/com/android/browser/AutoFillSettingsFragment.java
@@ -52,7 +52,9 @@
     private EditText mCountryEdit;
     private EditText mPhoneEdit;
 
-    private Button mSaveButton;
+    private MenuItem mSaveMenuItem;
+
+    private boolean mInitialised;
 
     // Used to display toast after DB interactions complete.
     private Handler mHandler;
@@ -87,7 +89,7 @@
                 mPhoneEdit.setError(null);
             }
 
-            updateButtonState();
+            updateSaveMenuItemState();
         }
 
         public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -99,7 +101,7 @@
 
     private class FieldChangedListener implements TextWatcher {
         public void afterTextChanged(Editable s) {
-            updateButtonState();
+            updateSaveMenuItemState();
         }
 
         public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -147,11 +149,14 @@
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
         inflater.inflate(R.menu.autofill_profile_editor, menu);
+        mSaveMenuItem = menu.findItem(R.id.autofill_profile_editor_save_profile_menu_id);
+        updateSaveMenuItemState();
     }
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == R.id.autofill_profile_editor_delete_profile_menu_id) {
+        switch (item.getItemId()) {
+        case R.id.autofill_profile_editor_delete_profile_menu_id:
             // Clear the UI.
             mFullNameEdit.setText("");
             mEmailEdit.setText("");
@@ -168,10 +173,30 @@
             // trigger the current profile to get deleted from the DB.
             mSettings.setAutoFillProfile(null,
                     mHandler.obtainMessage(PROFILE_DELETED_MSG));
-            updateButtonState();
+            updateSaveMenuItemState();
             return true;
+
+        case R.id.autofill_profile_editor_save_profile_menu_id:
+            AutoFillProfile newProfile = new AutoFillProfile(
+                    mUniqueId,
+                    mFullNameEdit.getText().toString(),
+                    mEmailEdit.getText().toString(),
+                    mCompanyEdit.getText().toString(),
+                    mAddressLine1Edit.getText().toString(),
+                    mAddressLine2Edit.getText().toString(),
+                    mCityEdit.getText().toString(),
+                    mStateEdit.getText().toString(),
+                    mZipEdit.getText().toString(),
+                    mCountryEdit.getText().toString(),
+                    mPhoneEdit.getText().toString());
+
+            mSettings.setAutoFillProfile(newProfile,
+                    mHandler.obtainMessage(PROFILE_SAVED_MSG));
+            return true;
+
+        default:
+            return false;
         }
-        return false;
     }
 
     @Override
@@ -203,27 +228,6 @@
         mCountryEdit.addTextChangedListener(mFieldChangedListener);
         mPhoneEdit.addTextChangedListener(new PhoneNumberValidator());
 
-        mSaveButton = (Button)v.findViewById(R.id.autofill_profile_editor_save_button);
-        mSaveButton.setOnClickListener(new OnClickListener() {
-            public void onClick(View button) {
-                AutoFillProfile newProfile = new AutoFillProfile(
-                        mUniqueId,
-                        mFullNameEdit.getText().toString(),
-                        mEmailEdit.getText().toString(),
-                        mCompanyEdit.getText().toString(),
-                        mAddressLine1Edit.getText().toString(),
-                        mAddressLine2Edit.getText().toString(),
-                        mCityEdit.getText().toString(),
-                        mStateEdit.getText().toString(),
-                        mZipEdit.getText().toString(),
-                        mCountryEdit.getText().toString(),
-                        mPhoneEdit.getText().toString());
-
-                mSettings.setAutoFillProfile(newProfile,
-                        mHandler.obtainMessage(PROFILE_SAVED_MSG));
-            }
-        });
-
         // Populate the text boxes with any pre existing AutoFill data.
         AutoFillProfile activeProfile = mSettings.getAutoFillProfile();
         if (activeProfile != null) {
@@ -239,14 +243,25 @@
             mPhoneEdit.setText(activeProfile.getPhoneNumber());
         }
 
-        updateButtonState();
+        mInitialised = true;
+
+        updateSaveMenuItemState();
 
         return v;
     }
 
-    public void updateButtonState() {
+    private void updateSaveMenuItemState() {
+        if (mSaveMenuItem == null) {
+            return;
+        }
 
-        boolean valid = (mFullNameEdit.getText().toString().length() > 0 ||
+        if (!mInitialised) {
+            mSaveMenuItem.setEnabled(false);
+            return;
+        }
+
+        boolean currentState = mSaveMenuItem.isEnabled();
+        boolean newState = (mFullNameEdit.getText().toString().length() > 0 ||
             mEmailEdit.getText().toString().length() > 0 ||
             mCompanyEdit.getText().toString().length() > 0 ||
             mAddressLine1Edit.getText().toString().length() > 0 ||
@@ -257,9 +272,9 @@
             mCountryEdit.getText().toString().length() > 0) &&
             mPhoneEdit.getError() == null;
 
-        // Only enable the save buttons if we have at least one field completed
-        // and the phone number (if present is valid).
-        mSaveButton.setEnabled(valid);
+        if (currentState != newState) {
+            mSaveMenuItem.setEnabled(newState);
+        }
     }
 
     private void closeEditor() {
diff --git a/src/com/android/browser/AutofillHandler.java b/src/com/android/browser/AutofillHandler.java
index c4b14d7..dc23d00 100644
--- a/src/com/android/browser/AutofillHandler.java
+++ b/src/com/android/browser/AutofillHandler.java
@@ -21,9 +21,11 @@
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
 import android.database.Cursor;
+import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Message;
 import android.preference.PreferenceManager;
+import android.provider.ContactsContract;
 import android.webkit.WebSettings.AutoFillProfile;
 
 import java.util.concurrent.CountDownLatch;
@@ -114,8 +116,58 @@
             c.close();
             autoFillDb.close();
 
+            if (mAutoFillProfile == null) {
+                // We did not load a profile from disk. Try to populate one with the user's
+                // "me" contact.
+                final Uri profileUri = Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI,
+                        ContactsContract.Contacts.Data.CONTENT_DIRECTORY);
+
+                String name = getContactField(profileUri,
+                        ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
+                        ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
+                // Only attempt to read other data and set a profile if we could successfully
+                // get a name.
+                if (name != null) {
+                    String email = getContactField(profileUri,
+                            ContactsContract.CommonDataKinds.Email.ADDRESS,
+                            ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE);
+                    String phone = getContactField(profileUri,
+                            ContactsContract.CommonDataKinds.Phone.NUMBER,
+                            ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
+                    String company = getContactField(profileUri,
+                            ContactsContract.CommonDataKinds.Organization.COMPANY,
+                            ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE);
+
+                    // Can't easily get structured postal address information (even using
+                    // CommonDataKinds.StructuredPostal) so omit prepopulating that for now.
+                    // When querying structured postal data, it often all comes back as a string
+                    // inside the "street" field.
+
+                    mAutoFillProfile = new AutoFillProfile(
+                            1, name, email, company, null, null, null, null,
+                            null, null, phone);
+                }
+            }
+
             mLoaded.countDown();
         }
+
+        private String getContactField(Uri uri, String field, String itemType) {
+            String result = null;
+
+            Cursor c = mContext.getContentResolver().query(uri, new String[] { field },
+                    ContactsContract.Data.MIMETYPE + "=?", new String[] { itemType }, null);
+
+            try {
+                // Just use the first returned value if we get more than one.
+                if (c.moveToFirst()) {
+                    result = c.getString(0);
+                }
+            } finally {
+                c.close();
+            }
+            return result;
+        }
     }
 
     public void setAutoFillProfile(AutoFillProfile profile, Message msg) {
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 2a57edf..c9756da 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -1511,9 +1511,6 @@
         nav.setEnabled(isNavDump);
 
         boolean showDebugSettings = mSettings.isDebugEnabled();
-        final MenuItem counter = menu.findItem(R.id.dump_counters_menu_id);
-        counter.setVisible(showDebugSettings);
-        counter.setEnabled(showDebugSettings);
         final MenuItem uaSwitcher = menu.findItem(R.id.ua_desktop_menu_id);
         uaSwitcher.setChecked(isDesktopUa);
         menu.setGroupVisible(R.id.LIVE_MENU, isLive);
@@ -1668,10 +1665,6 @@
                 getCurrentTopWebView().debugDump();
                 break;
 
-            case R.id.dump_counters_menu_id:
-                getCurrentTopWebView().dumpV8Counters();
-                break;
-
             case R.id.zoom_in_menu_id:
                 getCurrentTopWebView().zoomIn();
                 break;
@@ -2108,7 +2101,7 @@
                  manager.addCompletedDownload(target.getName(),
                         mActivity.getTitle().toString(), false,
                         uri.getMimeType(), target.getAbsolutePath(),
-                        (long)uri.getData().length, false);
+                        (long)uri.getData().length, true);
             } catch (IOException e) {
                 Log.e(LOGTAG, "Could not save data URL");
             } finally {
diff --git a/tests/assets/bindings_test.html b/tests/assets/bindings_test.html
deleted file mode 100755
index 7218f58..0000000
--- a/tests/assets/bindings_test.html
+++ /dev/null
@@ -1,239 +0,0 @@
-<html>
-<head>
-<script type="text/javascript">
-
-function testPrimitiveTypes() {
-  return JNIBindingsTest.testPrimitiveTypes(100, 'c', 123.34567890, 456.789, 1234567, 1234567890, 6000, true);
-}
-
-function testObjectTypes() {
-  return JNIBindingsTest.testObjectTypes("Foo", "", null, {"foo":"bar"}, {});
-}
-
-function testArray() {
-  return JNIBindingsTest.testArray([1,2,3], ['d', 'o', 'g'], [1.2, 2.3, 3.4], [4.5,5.6,6.7], [1,2,3], [4,5,6], [7,8,9], [true, false]);
-}
-
-function testObjectArray() {
-  return JNIBindingsTest.testObjectArray(['Hello', 'World', '!'], [], [{"foo":"bar"}]);
-}
-
-function testObjectMembers() {
-  var foo = {"bool":true,
-             "byte":101,
-             "char":'d',
-             "double":123.456,
-             "float":456.789,
-             "int":102,
-             "long":103,
-             "short":104,
-             "string":"Hello World",
-             "array": [1,2,3],
-             "objArray":["foo", "bar", "baz"],
-             "object": {"foo":1}
-  };
-  return JNIBindingsTest.testObjectMembers(foo.bool, foo.byte, foo.char, foo.double, foo.float, foo.int, foo.long, foo.short, foo.string, foo.array, foo.objArray, foo.object);
-}
-
-function testJSPrimitivesToStringsInJava() {
-    return JNIBindingsTest.testJSPrimitivesToStringsInJava(123, null, 456.789, true, 'd', undefined);
-}
-
-function testJavaReturnTypes() {
-  var expectedBoolReturn = true;
-  var expectedByteReturn = 1;
-  var expectedCharReturn = 98; // 'b'; Currently bindings in JSC and V8 return chars as their ASCII equivalent.
-  var expectedDoubleReturn = 123.456;
-  var expectedFloatReturn = 456.789;
-  var expectedIntReturn = 123;
-  var expectedLongReturn = 1234;
-  var expectedShortReturn = 12345;
-  var expectedStringReturn = "Hello World!";
-
-  var returned = JNIBindingsTest.returnBool();
-  if (returned != expectedBoolReturn) {
-    appendLog("returnBool() failed: expected "+ expectedBoolReturn +", got " + returned);
-    return false;
-  }
-
-  returned = JNIBindingsTest.returnByte();
-  if (returned != expectedByteReturn) {
-    appendLog("returnByte() failed: expected "+ expectedByteReturn +", got " + returned);
-    return false;
-  }
-
-  returned = JNIBindingsTest.returnChar();
-  if (returned != expectedCharReturn) {
-    appendLog("returnChar() failed: expected "+ expectedCharReturn +", got " + returned);
-    return false;
-  }
-
-  returned = JNIBindingsTest.returnDouble();
-  if (returned != expectedDoubleReturn) {
-    appendLog("returnDouble() failed: expected "+ expectedDoubleReturn +", got " + returned);
-    return false;
-  }
-
-  returned = JNIBindingsTest.returnFloat();
-  if (Math.abs(returned - expectedFloatReturn) > 0.001) {
-    appendLog("returnFloat() failed: expected "+ expectedFloatReturn +", got " + returned);
-    return false;
-  }
-
-  returned = JNIBindingsTest.returnInt();
-  if (returned != expectedIntReturn) {
-    appendLog("returnInt() failed: expected "+ expectedIntReturn +", got " + returned);
-    return false;
-  }
-
-  returned = JNIBindingsTest.returnLong();
-  if (returned != expectedLongReturn) {
-    appendLog("returnLong() failed: expected "+ expectedLongReturn +", got " + returned);
-    return false;
-  }
-
-  returned = JNIBindingsTest.returnShort();
-  if (returned != expectedShortReturn) {
-    appendLog("returnShort() failed: expected "+ expectedShortReturn +", got " + returned);
-    return false;
-  }
-
-  returned = JNIBindingsTest.returnString();
-  if (returned != expectedStringReturn) {
-    appendLog("returnString() failed: expected "+ expectedStringReturn +", got " + returned);
-    return false;
-  }
-
-  returned = JNIBindingsTest.returnNullString();
-  if (returned !== undefined) {
-    appendLog("returnNullString() failed: expected undefined, got " + returned);
-    return false;
-  }
-
-  returned = JNIBindingsTest.returnObject();
-  if (returned == null) {
-    appendLog("returnObject() failed: expected non-null, got " + returned);
-    return false;
-  } else if (returned.x != undefined) {
-    // We do not support getting object properties.
-    appendLog("returnObject() failed: expected 'x' property undefined, got " + returned.x)
-    return false;
-  } else if (returned.s != undefined) {
-    // We do not support getting object properties.
-    appendLog("returnObject() failed: expected 's' property undefined, got " + returned.s);
-    return false;
-  } else if (!returned.aMethod()) {
-    appendLog("returnObject() failed: expected 'aMethod' method to return true, got " + returned.aMethod());
-    return false;
-  } else if (returned.anotherMethod() != "Hello World") {
-    appendLog("returnObject() failed: expected 'anotherMethod' to return 'Hello World' got "+ returned.anotherMethod());
-    return false;
-  }
-
-  returned = JNIBindingsTest.returnArray();
-  if (returned != null) {
-    appendLog("returnArray() failed: expected null, got " + returned);
-    return false;
-  }
-
-  returned = JNIBindingsTest.returnVoid();
-  if (returned != null) {
-    appendLog("returnVoid() failed: expected null, got " + returned);
-    return false;
-  }
-
-  return true;
-}
-
-function getIfaceProperties() {
-  if (JNIBindingsTest.mInt != undefined) {
-    // We do not support getting object properties.
-    appendLog("getIfaceProperties() failed: expected mInt = undefined, got " + JNIBindingsTest.mInt);
-    return false;
-  }
-
-  if (JNIBindingsTest.mString != undefined) {
-    // We do not support getting object properties.
-    appendLog("getIfaceProperties() failed: expected mString = undefined, got " + JNIBindingsTest.mString);
-    return false;
-  }
-
-  return true;
-}
-
-function testParameterTypeMismatch() {
-  return JNIBindingsTest.testParameterTypeMismatch("dog");
-}
-
-function appendLog(msg) {
-  var log = document.getElementById("status");
-  log.innerHTML += "<br/>" + msg;
-}
-
-function runTests() {
-
-  // Assume that if the test isn't done after 10s that we failed.
-  window.setTimeout(function() { JNIBindingsTest.notifyComplete(); }, 10000);
-
-  if (testPrimitiveTypes()) {
-    appendLog("testPrimitiveTypes passed!");
-  } else {
-    appendLog("testPrimtiveTypes failed!");
-  }
-
-  if (testObjectTypes()) {
-    appendLog("testObjectTypes passed!");
-  } else {
-    appendLog("testObjectTypes failed!");
-  }
-
-  if (testArray()) {
-    appendLog("testArray passed!");
-  } else {
-    appendLog("testArray failed!");
-  }
-
-  if (testObjectArray()) {
-    appendLog("testObjectArray passed!");
-  } else {
-    appendLog("testObjectArray failed!");
-  }
-
-  if (testObjectMembers()) {
-    appendLog("testObjectMembers passed!");
-  } else {
-    appendLog("<br/>testObjectMembers failed!");
-  }
-
-  if (testJSPrimitivesToStringsInJava()) {
-    appendLog("testJSPrimitivesToStringsInJava passed!");
-  } else {
-    appendLog("testJSPrimitivesToStringsInJava failed!");
-  }
-
-  if (testJavaReturnTypes()) {
-    appendLog("testJavaReturnTypes passed!");
-  } else {
-    appendLog("testJavaReturnTypes failed!");
-  }
-
-  if (getIfaceProperties()) {
-    appendLog("getIfaceProperties passed!");
-  } else {
-    appendLog("getIfaceProperties failed!");
-  }
-
-  if (testParameterTypeMismatch()) {
-    appendLog("testParameterTypeMismatch passed!");
-  } else {
-    appendLog("testParameterTypeMismatch failed!");
-  }
-
-  JNIBindingsTest.notifyComplete();
-}
-</script>
-
-<body onload="runTests();">
-<p id="status">Running JNI Bindings test...</p>
-</body>
-</html>
diff --git a/tests/src/com/android/browser/JNIBindingsTest.java b/tests/src/com/android/browser/JNIBindingsTest.java
deleted file mode 100644
index ae694c9..0000000
--- a/tests/src/com/android/browser/JNIBindingsTest.java
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.browser;
-
-import android.test.AndroidTestCase;
-import android.util.Log;
-
-import java.util.Arrays;
-
-import junit.framework.AssertionFailedError;
-
-public class JNIBindingsTest extends AndroidTestCase {
-
-    private final static String LOGTAG = "JNIBindingsTest";
-    private JNIBindingsTestApp mTestApp;
-
-    public int mInt = 123;
-    public String mString = "Hello World";
-
-    public JNIBindingsTest(JNIBindingsTestApp testApp) {
-        mTestApp = testApp;
-    }
-
-    public void notifyComplete() {
-        Log.v(LOGTAG, "Completing the test.");
-        mTestApp.notifyComplete();
-    }
-
-    public void printAssertionFailed(AssertionFailedError e) {
-        Log.e(LOGTAG, "");
-        Log.e(LOGTAG, "*** ASSERTION FAILED: " + e.getMessage());
-        Log.e(LOGTAG, "*** Stack trace:");
-        StackTraceElement[] trace = e.getStackTrace();
-        for(StackTraceElement elem : trace) {
-            Log.e(LOGTAG, "***\t" + elem.toString());
-        }
-        Log.e(LOGTAG, "");
-    }
-
-    public boolean testPrimitiveTypes(byte byteParam, char charParam, double doubleParam,
-            float floatParam, int intParam, long longParam, short shortParam,
-            boolean booleanParam) {
-        byte expectedByteParam = 100;
-        char expectedCharParam = 'c';
-        double expectedDoubleParam = 123.34567890;
-        float expectedFloatParam = 456.789f;
-        int expectedIntParam = 1234567;
-        long expectedLongParam = 1234567890L;
-        short expectedShortParam = 6000;
-        boolean expectedBooleanParam = true;
-
-        try {
-            assertEquals(expectedByteParam, byteParam);
-
-            // EMULATE_JSC_BINDINGS: JSC does not pass chars correctly
-            // assertEquals(expectedCharParam, charParam);
-
-            assertEquals(expectedDoubleParam, doubleParam);
-            assertEquals(expectedFloatParam, floatParam);
-            assertEquals(expectedIntParam, intParam);
-            assertEquals(expectedLongParam, longParam);
-            assertEquals(expectedShortParam, shortParam);
-            assertEquals(expectedBooleanParam, booleanParam);
-        } catch (AssertionFailedError e) {
-            printAssertionFailed(e);
-           return false;
-        }
-        return true;
-    }
-
-    public boolean testObjectTypes(String stringParam, String emptyString, String nullString,
-            Object objectParam, Object emptyObject) {
-        String expectedString = "Foo";
-        String expectedEmptyString = "";
-
-        try {
-            assertNotNull(stringParam);
-            assertNotNull(emptyString);
-            assertEquals(expectedString, stringParam);
-            assertEquals(expectedEmptyString, emptyString);
-            assertNull(nullString);
-            assertNull(objectParam);
-            assertNull(emptyObject);
-        } catch (AssertionFailedError e) {
-            printAssertionFailed(e);
-            return false;
-        }
-        return true;
-    }
-
-    public boolean testArray(byte[] byteArray, char[] charArray, double[] doubleArray,
-            float[] floatArray, int[] intArray, long[] longArray, short[] shortArray,
-            boolean[] booleanArray) {
-        byte[] expectedByteArray = { 1,2,3};
-        char[] expectedCharArray = {'d', 'o', 'g'};
-        double[] expectedDoubleArray = {1.2,2.3,3.4};
-        float[] expectedFloatArray = {4.5F,5.6F,6.7F};
-        int[] expectedIntArray = {1,2,3};
-        long[] expectedLongArray = {4L,5L,6L};
-        short[] expectedShortArray = {7,8,9};
-        boolean[] expectedBooleanArray = {true, false};
-
-        try {
-            assertNotNull(byteArray);
-            assertNotNull(charArray);
-            assertNotNull(doubleArray);
-            assertNotNull(floatArray);
-            assertNotNull(intArray);
-            assertNotNull(longArray);
-            assertNotNull(shortArray);
-            assertNotNull(booleanArray);
-            assertEquals(Arrays.toString(expectedByteArray), Arrays.toString(byteArray));
-            assertEquals(Arrays.toString(expectedCharArray), Arrays.toString(charArray));
-            assertEquals(Arrays.toString(expectedDoubleArray), Arrays.toString(doubleArray));
-            assertEquals(Arrays.toString(expectedFloatArray), Arrays.toString(floatArray));
-            assertEquals(Arrays.toString(expectedIntArray), Arrays.toString(intArray));
-            assertEquals(Arrays.toString(expectedLongArray), Arrays.toString(longArray));
-            assertEquals(Arrays.toString(expectedShortArray), Arrays.toString(shortArray));
-            assertEquals(Arrays.toString(expectedBooleanArray), Arrays.toString(booleanArray));
-        } catch (AssertionFailedError e) {
-            printAssertionFailed(e);
-            return false;
-        }
-        return true;
-    }
-
-    public boolean testObjectArray(String[] stringArray, Object[] emptyArray,
-            Object[] objectArray) {
-        String[] expectedStringArray = {"Hello", "World", "!"};
-        String expectedStringArrayClassName = "[Ljava.lang.String;";
-        Object[] expectedObjectArray = {};
-
-        try {
-            assertNotNull(stringArray);
-
-            // EMULATE_JSC_BINDINGS JSC pass null for object arrays that are not strings.
-            // Should be an empty array?
-            assertNull(emptyArray);
-            assertNull(objectArray);
-
-            assertEquals(Arrays.toString(expectedStringArray), Arrays.toString(stringArray));
-            assertEquals(expectedStringArrayClassName, stringArray.getClass().getName());
-
-            // EMULATE_JSC_BINDINGS
-            // assertEquals(Arrays.toString(expectedObjectArray), Arrays.toString(emptyArray));
-            // assertEquals(expectedObjectArrayClassName, emptyArray.getClass().getName());
-            // assertEquals(Arrays.toString(expectedObjectArray), Arrays.toString(objectArray));
-            // assertEquals(expectedStringObjectClassName, objectArray.getClass().getName());
-
-        } catch (AssertionFailedError e) {
-            printAssertionFailed(e);
-            return false;
-        }
-        return true;
-    }
-
-    public boolean testObjectMembers(boolean boolParam, byte byteParam, char charParam,
-            double doubleParam, float floatParam, int intParam, long longParam, short shortParam,
-            String stringParam, int[] intArrayParam, String[] stringArrayParam,
-            Object objectParam) {
-        boolean expectedBoolParam = true;
-        byte expectedByteParam = 101;
-        char expectedCharParam = 'd';
-        double expectedDoubleParam = 123.456;
-        float expectedFloatParam = 456.789F;
-        int expectedIntParam = 102;
-        long expectedLongParam = 103L;
-        short expectedShortParam = 104;
-        String expectedStringParam = "Hello World";
-        int[] expectedIntArray = {1,2,3};
-        String[] expectedStringArrayParam = {"foo", "bar", "baz"};
-        String expectedStringArrayClassName = "[Ljava.lang.String;";
-
-        try {
-            assertEquals(expectedBoolParam, boolParam);
-            assertEquals(expectedByteParam, byteParam);
-
-            // EMULATE_JSC_BINDINGS: JSC does not pass chars correctly. (chars are strings in JS)
-            // assertEquals(expectedCharParam, charParam);
-
-            assertEquals(expectedDoubleParam, doubleParam);
-            assertEquals(expectedFloatParam, floatParam);
-            assertEquals(expectedIntParam, intParam);
-            assertEquals(expectedLongParam, longParam);
-            assertEquals(expectedShortParam, shortParam);
-            assertEquals(expectedStringParam, stringParam);
-            assertEquals(Arrays.toString(expectedIntArray), Arrays.toString(intArrayParam));
-            assertEquals(Arrays.toString(expectedStringArrayParam),
-                    Arrays.toString(stringArrayParam));
-            assertEquals(expectedStringArrayClassName, stringArrayParam.getClass().getName());
-            assertNull(objectParam);
-        } catch (AssertionFailedError e) {
-            printAssertionFailed(e);
-            return false;
-        }
-        return true;
-    }
-
-    public boolean testJSPrimitivesToStringsInJava(String intParam, String nullParam,
-            String doubleParam, String booleanParam, String charParam,
-            String undefinedParam) {
-        String expectedIntParam = "123";
-        String expectedDoubleParam = "456.789";
-        String expectedBooleanParam = "true";
-        String expectedCharParam = "d";
-
-        // EMULATE_JSC_BINDINGS JSC passes "undefined" for undefined types. Should be null?
-        String expectedUndefinedParam = "undefined";
-
-        try {
-            assertNotNull(intParam);
-            assertNull(nullParam);
-            assertNotNull(doubleParam);
-            assertNotNull(booleanParam);
-            assertNotNull(charParam);
-
-            // EMULATE_JSC_BINDINGS JSC passes "undefined" for undefined types.
-            assertNotNull(undefinedParam);
-
-            assertEquals(expectedIntParam, intParam);
-            assertEquals(expectedDoubleParam, doubleParam);
-            assertEquals(expectedBooleanParam, booleanParam);
-            assertEquals(expectedCharParam, charParam);
-
-            // EMULATE_JSC_BINDINGS  JSC passes "undefined" for undefined types.
-            assertEquals(expectedUndefinedParam, undefinedParam);
-
-        } catch (AssertionFailedError e) {
-            printAssertionFailed(e);
-            return false;
-        }
-        return true;
-    }
-
-    public boolean testParameterTypeMismatch(String[] stringArrayParam) {
-        // The JS test will pass a string, not an array to this test.
-        try {
-            assertNull(stringArrayParam);
-        } catch (AssertionFailedError e) {
-            printAssertionFailed(e);
-            return false;
-        }
-
-        return true;
-    }
-
-    public boolean returnBool() { return true; }
-    public byte returnByte() { return 1; }
-    public char returnChar() { return 'b'; }
-    public double returnDouble() { return 123.456; }
-    public float returnFloat() { return 456.789F; }
-    public int returnInt() { return 123; }
-    public long returnLong() { return 1234L; }
-    public short returnShort() { return 12345; }
-    public String returnString() { return "Hello World!"; }
-    public String returnNullString() { return null; }
-
-    public class TestObject {
-        public int x = 123;
-        public String s = "Hello World!";
-
-        public boolean aMethod() { return true; }
-        public String anotherMethod() { return "Hello World"; }
-    }
-
-    public TestObject returnObject() { return new TestObject(); }
-
-    public int[] returnArray() {
-        int[] array = {1,2,3,4,5};
-        return array;
-    }
-
-    public void returnVoid() { }
-}
diff --git a/tests/src/com/android/browser/JNIBindingsTestApp.java b/tests/src/com/android/browser/JNIBindingsTestApp.java
deleted file mode 100644
index 5d1fd0d..0000000
--- a/tests/src/com/android/browser/JNIBindingsTestApp.java
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.browser;
-
-import android.app.Instrumentation;
-import android.net.http.SslError;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.test.ActivityInstrumentationTestCase2;
-import android.util.Log;
-import android.webkit.ClientCertRequestHandler;
-import android.webkit.JsPromptResult;
-import android.webkit.JsResult;
-import android.webkit.SslErrorHandler;
-import android.webkit.WebView;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * Adds a JavaScript interface to the webview and calls functions on it to verify variables
- * are passed from JS to Java correctly.
- * To run this test, execute:
- * adb shell am instrument -w -e class com.android.browser.JNIBindingsTestApp#testJNIBindings \
- *     com.android.browser.tests/android.test.InstrumentationTestRunner
- */
-public class JNIBindingsTestApp extends ActivityInstrumentationTestCase2<BrowserActivity> {
-
-    private final static String TAG = "JNIBindingsTest";
-
-    private static final String SDCARD_BINDINGS_TEST_HTML = "/sdcard/bindings_test.html";
-
-    private static final int MSG_WEBKIT_DATA_READY = 101;
-
-    private BrowserActivity mActivity = null;
-    private Controller mController = null;
-    private Instrumentation mInst = null;
-
-    private boolean mTestDone = false;
-    private String mWebKitResult;
-
-    private String mExpectedWebKitResult = "Running JNI Bindings test...\n" +
-            "testPrimitiveTypes passed!\n" +
-            "testObjectTypes passed!\n" +
-            "testArray passed!\n" +
-            "testObjectArray passed!\n" +
-            "testObjectMembers passed!\n" +
-            "testJSPrimitivesToStringsInJava passed!\n" +
-            "testJavaReturnTypes passed!\n" +
-            "getIfaceProperties passed!\n" +
-            "testParameterTypeMismatch passed!\n";
-
-
-    private class GetWebKitDataThread extends Thread {
-        private JNIBindingsTestApp mTestApp;
-        private WebView mWebView;
-        private Handler mHandler;
-
-        GetWebKitDataThread(JNIBindingsTestApp testApp, WebView webView) {
-            mTestApp = testApp;
-            mWebView = webView;
-        }
-
-        @Override
-        public void run() {
-            Looper.prepare();
-            mHandler = new Handler() {
-                @Override
-                public void handleMessage(Message msg) {
-                    switch (msg.what) {
-                        case MSG_WEBKIT_DATA_READY: {
-                            mTestApp.setWebKitResult((String)msg.obj);
-                            Looper.myLooper().quit();
-                        }
-                        default: super.handleMessage(msg); break;
-                    }
-                }
-            };
-            mWebView.documentAsText(mHandler.obtainMessage(MSG_WEBKIT_DATA_READY, 1, 0));
-            Looper.loop();
-        }
-    }
-
-    public synchronized void setWebKitResult(String result) {
-       mWebKitResult = result;
-       notify();
-    }
-
-    public JNIBindingsTestApp() {
-        super(BrowserActivity.class);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        mActivity = getActivity();
-        mController = mActivity.getController();
-        mInst = getInstrumentation();
-        mInst.waitForIdleSync();
-
-        extractAsset();
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        removeAsset();
-        super.tearDown();
-    }
-
-    protected void extractAsset() throws IOException {
-        InputStream in = getInstrumentation().getContext().getAssets().open("bindings_test.html");
-        OutputStream out = new FileOutputStream(SDCARD_BINDINGS_TEST_HTML);
-
-        byte[] buf = new byte[2048];
-        int len;
-
-        while ((len = in.read(buf)) >= 0 ) {
-            out.write(buf, 0, len);
-        }
-        out.close();
-        in.close();
-    }
-
-    protected void removeAsset(){
-        File fileToDelete = new File(SDCARD_BINDINGS_TEST_HTML);
-        fileToDelete.delete();
-    }
-
-    /**
-     * Gets the browser ready for testing by starting the application
-     * and wrapping the WebView's helper clients.
-     */
-    void setUpBrowser() {
-        Tab tab = mController.getTabControl().getCurrentTab();
-        WebView webView = tab.getWebView();
-        webView.addJavascriptInterface(new JNIBindingsTest(this), "JNIBindingsTest");
-
-        webView.setWebChromeClient(new TestWebChromeClient(webView.getWebChromeClient()) {
-
-            /**
-             * Dismisses and logs Javascript alerts.
-             */
-            @Override
-            public boolean onJsAlert(WebView view, String url, String message,
-                    JsResult result) {
-                String logMsg = String.format("JS Alert '%s' received from %s", message, url);
-                Log.w(TAG, logMsg);
-                result.confirm();
-
-                return true;
-            }
-
-            /**
-             * Confirms and logs Javascript alerts.
-             */
-            @Override
-            public boolean onJsConfirm(WebView view, String url, String message,
-                    JsResult result) {
-                String logMsg = String.format("JS Confirmation '%s' received from %s",
-                        message, url);
-                Log.w(TAG, logMsg);
-                result.confirm();
-
-                return true;
-            }
-
-            /**
-             * Confirms and logs Javascript alerts, providing the default value.
-             */
-            @Override
-            public boolean onJsPrompt(WebView view, String url, String message,
-                    String defaultValue, JsPromptResult result) {
-                String logMsg = String.format("JS Prompt '%s' received from %s; " +
-                        "Giving default value '%s'", message, url, defaultValue);
-                Log.w(TAG, logMsg);
-                result.confirm(defaultValue);
-
-                return true;
-            }
-        });
-
-        webView.setWebViewClient(new TestWebViewClient(webView.getWebViewClient()) {
-
-            /**
-             * Bypasses and logs errors.
-             */
-            @Override
-            public void onReceivedError(WebView view, int errorCode,
-                    String description, String failingUrl) {
-                String message = String.format("Error '%s' (%d) loading url: %s",
-                        description, errorCode, failingUrl);
-                Log.w(TAG, message);
-            }
-
-            /**
-             * Ignores and logs SSL errors.
-             */
-            @Override
-            public void onReceivedSslError(WebView view, SslErrorHandler handler,
-                    SslError error) {
-                Log.w(TAG, "SSL error: " + error);
-                handler.proceed();
-            }
-
-            /**
-             * Ignores and logs SSL client certificate requests.
-             */
-            @Override
-            public void onReceivedClientCertRequest(WebView view, ClientCertRequestHandler handler,
-                    String host_and_port) {
-                Log.w(TAG, "SSL client certificate request: " + host_and_port);
-                handler.cancel();
-            }
-
-        });
-    }
-
-    public synchronized void notifyComplete() {
-        mTestDone = true;
-        notify();
-    }
-
-    public void testJNIBindings() {
-        setUpBrowser();
-
-        Tab tab = mController.getTabControl().getCurrentTab();
-        WebView webView = tab.getWebView();
-        webView.loadUrl("file://" + SDCARD_BINDINGS_TEST_HTML);
-        synchronized(this) {
-            while(!mTestDone) {
-                try {
-                    wait();
-                } catch (InterruptedException e) {}
-            }
-        }
-
-        // Now the tests are complete grab the DOM content and compare to the reference.
-        GetWebKitDataThread getWKData = new GetWebKitDataThread(this, webView);
-        mWebKitResult = null;
-        getWKData.start();
-
-        synchronized(this) {
-            while(mWebKitResult == null) {
-                try {
-                    wait();
-                } catch (InterruptedException e) {}
-            }
-        }
-
-        Log.v(TAG, "WebKit result:");
-        Log.v(TAG, mWebKitResult);
-        assertEquals("Bindings test failed! See logcat for more details!", mExpectedWebKitResult,
-                mWebKitResult);
-    }
-}