diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 6362cfa..c0eba8b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1,25 +1,25 @@
 <!--
-/* //device/apps/Browser/AndroidManifest.xml
-**
-** Copyright 2006, 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.
-*/
+/*
+ * Copyright 2006, 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.
+ */
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.browser">
 
     <uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH" />
+    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
     <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
@@ -31,20 +31,20 @@
     <uses-permission android:name="android.permission.READ_HISTORY_BOOKMARKS"/>
     <uses-permission android:name="android.permission.WRITE_HISTORY_BOOKMARKS"/>
 
-    <supports-density android:density="160" />
-    <supports-density android:density="240" />
-    <expandable />
-
     <application   android:name="Browser"
                    android:label="@string/application_name"
                    android:icon="@drawable/ic_launcher_browser"
+                   android:backupAgent=".BrowserBackupAgent"
                    android:taskAffinity="android.task.browser" >
 
         <provider android:name="BrowserProvider"
                   android:authorities="browser"
                   android:multiprocess="true"
                   android:readPermission="android.permission.READ_HISTORY_BOOKMARKS"
-                  android:writePermission="android.permission.WRITE_HISTORY_BOOKMARKS"/>
+                  android:writePermission="android.permission.WRITE_HISTORY_BOOKMARKS">
+            <path-permission android:path="/bookmarks/search_suggest_query"
+                    android:readPermission="android.permission.GLOBAL_SEARCH" />
+        </provider>
         <activity android:name="BrowserActivity"
                   android:label="@string/application_name"
                   android:launchMode="singleTask"
@@ -121,7 +121,6 @@
         <activity android:name="BrowserBookmarksPage" android:label="@string/bookmarks"
                   android:launchMode="singleTop" android:configChanges="orientation|keyboardHidden">
         </activity>
-
         <activity android:name="MostVisitedActivity" android:label=""
                 android:launchMode="singleTop" android:configChanges="orientation|keyboardHidden"/>
 
@@ -153,11 +152,20 @@
                   android:configChanges="orientation|keyboardHidden">
         </activity>
 
+        <activity android:name="WebsiteSettingsActivity" android:label=""
+                  android:configChanges="orientation|keyboardHidden">
+        </activity>
+
         <activity android:name="GearsDialog" android:process=":dialog"
                   android:configChanges="orientation|keyboardHidden"
                   android:theme="@android:style/Theme.Dialog">
         </activity>
 
+        <activity android:name="PermissionDialog"
+                  android:configChanges="orientation|keyboardHidden"
+                  android:theme="@android:style/Theme.Dialog">
+        </activity>
+
         <activity android:name="GearsNativeDialog"
                   android:configChanges="orientation|keyboardHidden"
                   android:theme="@android:style/Theme.Dialog">
diff --git a/res/drawable/background_titlebar.png b/res/drawable/background_titlebar.png
new file mode 100644
index 0000000..1fdb078
--- /dev/null
+++ b/res/drawable/background_titlebar.png
Binary files differ
diff --git a/res/drawable/blank.xml b/res/drawable/blank.xml
new file mode 100644
index 0000000..724f5e7
--- /dev/null
+++ b/res/drawable/blank.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape>
+            <corners android:radius="5dip"/>
+            <solid android:color="@color/white"/>
+        </shape>
+    </item>
+</layer-list>
diff --git a/res/drawable/button_line.xml b/res/drawable/button_line.xml
new file mode 100644
index 0000000..67869d0
--- /dev/null
+++ b/res/drawable/button_line.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape android:width="2dip">
+            <solid android:color="#ff000000"/>
+        </shape>
+    </item>
+    <item android:left="1dip" android:width="1dip">
+        <shape>
+            <solid android:color="#ffffffff"/>
+        </shape>
+    </item>
+</layer-list>
diff --git a/res/drawable/ic_titlebar_zoom.png b/res/drawable/ic_titlebar_zoom.png
new file mode 100644
index 0000000..b497dab
--- /dev/null
+++ b/res/drawable/ic_titlebar_zoom.png
Binary files differ
diff --git a/res/drawable/ic_titlebar_zoom_out.png b/res/drawable/ic_titlebar_zoom_out.png
new file mode 100644
index 0000000..4b5a3dd
--- /dev/null
+++ b/res/drawable/ic_titlebar_zoom_out.png
Binary files differ
diff --git a/res/layout/application.xml b/res/layout/application.xml
new file mode 100644
index 0000000..d8de265
--- /dev/null
+++ b/res/layout/application.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  android:drawingCacheQuality="auto"
+  android:layout_width="fill_parent"
+  android:layout_height="wrap_content"
+  android:gravity="center"
+  android:padding="0dip">
+
+  <ImageView android:id="@+id/icon"
+    android:layout_width="32px"
+    android:layout_height="32px"
+    android:padding="2dip" />
+
+  <TwoLineListItem
+    android:paddingTop="2dip"
+    android:paddingBottom="2dip"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:mode="twoLine">
+
+    <TextView android:id="@+id/title"
+      android:layout_width="fill_parent"
+      android:layout_height="wrap_content"
+      android:layout_marginLeft="6dip"
+      android:layout_marginTop="6dip"
+      android:textAppearance="?android:attr/textAppearanceLarge"/>
+
+    <TextView android:id="@+id/subtitle"
+      android:layout_width="fill_parent"
+      android:layout_height="wrap_content"
+      android:layout_below="@+id/title"
+      android:layout_alignLeft="@+id/title"
+      android:textAppearance="?android:attr/textAppearanceSmall"/>
+
+  </TwoLineListItem>
+
+</LinearLayout>
diff --git a/res/layout/bookmark_thumbnail.xml b/res/layout/bookmark_thumbnail.xml
new file mode 100644
index 0000000..2f8a09d
--- /dev/null
+++ b/res/layout/bookmark_thumbnail.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:orientation="vertical"
+    android:padding="4dip"
+    >
+
+    <ImageView android:id="@+id/thumb"
+        android:src="@drawable/blank"
+        android:scaleType="center"
+        android:layout_width="100dip"
+        android:layout_height="80dip"
+        />
+
+    <ImageView android:id="@+id/fav"
+        android:scaleType="center"
+        android:layout_width="20dip"
+        android:layout_height="20dip"
+        android:layout_alignBottom="@+id/thumb"
+        android:background="@color/white"
+        />
+    <LinearLayout android:id="@+id/holder"
+        android:layout_height="wrap_content"
+        android:layout_width="fill_parent"
+        android:orientation="horizontal"
+        android:background="#cc000000"
+        android:gravity="center"
+        android:layout_alignBottom="@+id/thumb"
+        >
+        <ImageView
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_marginTop="3dip"
+            android:layout_marginBottom="3dip"
+            android:src="@drawable/ic_tab_browser_bookmark_selected"
+            />
+        <TextView
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:textStyle="bold"
+            android:textColor="@color/white"
+            android:text="@string/add_bookmark_short"
+            />
+    </LinearLayout>
+    <!-- Keep the width in sync with BrowserBookmarksPage and
+            BrowserActivity.updateScreenshot -->
+    <TextView android:id="@+id/label"
+        android:layout_width="100dip"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/thumb"
+        android:layout_gravity="bottom"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textStyle="bold"
+        android:textColor="@color/white"
+        android:maxLines="1"
+        android:paddingTop="3dip"
+        android:paddingBottom="3dip"
+        android:paddingLeft="2dip"
+        android:paddingRight="2dip"
+        android:scrollHorizontally="true"
+        android:ellipsize="marquee"
+        />
+</RelativeLayout>
diff --git a/res/layout/browser_downloads_page.xml b/res/layout/browser_downloads_page.xml
index c83a727..1d4d4e6 100644
--- a/res/layout/browser_downloads_page.xml
+++ b/res/layout/browser_downloads_page.xml
@@ -18,8 +18,14 @@
 ** limitations under the License.
 */
 -->
-
-<ListView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/list"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"/>
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+    <ListView 
+        android:id="@+id/list"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"/>
+    <ViewStub 
+        android:id="@+id/empty"
+        android:layout="@layout/no_downloads"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"/>
+</merge>
diff --git a/res/layout/custom_screen.xml b/res/layout/custom_screen.xml
new file mode 100644
index 0000000..3ea8ec9
--- /dev/null
+++ b/res/layout/custom_screen.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android">
+    <FrameLayout android:id="@+id/fullscreen_custom_content"
+        android:visibility="gone"
+        android:background="@color/black"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"
+    />
+    <LinearLayout android:orientation="vertical"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent">
+        <com.android.browser.TitleBar android:id="@+id/title_bar"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+        />
+
+        <LinearLayout android:id="@+id/error_console"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+        />
+
+        <FrameLayout android:id="@+id/main_content"
+            android:layout_width="fill_parent"
+            android:layout_height="fill_parent"
+            android:foreground="?android:attr/windowContentOverlay"
+        />
+    </LinearLayout>
+</FrameLayout>
diff --git a/res/layout/error_console.xml b/res/layout/error_console.xml
new file mode 100644
index 0000000..0fffcde
--- /dev/null
+++ b/res/layout/error_console.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/error_console_view_group_id"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="vertical"
+    android:background="#000000">
+
+    <TextView android:id="@+id/error_console_header_id"
+        android:text="@string/error_console_header_text_minimized"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:paddingTop="2dip"
+        android:paddingBottom="2dip"
+        android:paddingLeft="5dip"
+        style="?android:attr/listSeparatorTextViewStyle"
+        android:visibility="gone"
+    />
+
+    <view class="com.android.browser.ErrorConsoleView$ErrorConsoleListView"
+        android:id="@+id/error_console_list_id"
+        android:layout_width="fill_parent"
+        android:layout_height="200dip"
+        android:visibility="gone"
+        android:layout_weight="1"
+        android:cacheColorHint="#000000"
+    />
+
+    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:id="@+id/error_console_eval_view_group_id"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:visibility="gone">
+
+        <EditText android:id="@+id/error_console_eval_text_id"
+            android:hint="@string/error_console_eval_text_hint"
+            android:layout_height="wrap_content"
+            android:scrollHorizontally="true"
+            android:inputType="text"
+            android:layout_width="0dip"
+            android:layout_gravity="left"
+            android:layout_weight="1.0"
+        />
+
+        <Button android:id="@+id/error_console_eval_button_id"
+            android:text="@string/error_console_eval_button_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+        />
+    </LinearLayout>
+</LinearLayout>
diff --git a/res/layout/permission_dialog.xml b/res/layout/permission_dialog.xml
new file mode 100644
index 0000000..ff24eaf
--- /dev/null
+++ b/res/layout/permission_dialog.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright 2009, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  android:drawingCacheQuality="auto"
+  android:layout_width="fill_parent"
+  android:layout_height="wrap_content"
+  android:orientation="vertical"
+  android:padding="0dip">
+
+  <LinearLayout
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:orientation="horizontal"
+    android:padding="10dip">
+
+    <ImageView
+      android:id="@+id/icon"
+      android:paddingRight="10dip"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_centerHorizontal="true"/>
+
+    <TextView
+      android:id="@+id/dialog_title"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_centerVertical="true"
+      android:gravity="center_vertical"
+      android:visibility="gone"
+      android:textSize="16dip"
+      android:textStyle="bold"
+      android:textColor="@color/white"/>
+
+  </LinearLayout>
+
+  <LinearLayout
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <ImageView android:id="@+id/titleDivider"
+        android:layout_width="fill_parent"
+        android:layout_height="1dip"
+        android:scaleType="fitXY"
+        android:gravity="fill_horizontal"
+        android:src="@drawable/dialog_divider_horizontal_light"
+        android:layout_marginLeft="10dip"
+        android:layout_marginRight="10dip"/>
+
+  </LinearLayout>
+
+  <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:paddingBottom="10dip"
+    android:layout_weight="1">
+
+    <LinearLayout
+      android:orientation="vertical"
+      android:layout_width="fill_parent"
+      android:paddingTop="10dip"
+      android:paddingLeft="10dip"
+      android:paddingRight="10dip"
+      android:layout_height="wrap_content">
+
+      <TextView
+        android:id="@+id/origin"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:visibility="gone"
+        android:textStyle="bold"
+        android:gravity="left"
+        android:textSize="16dip"
+        android:textColor="@color/white"/>
+
+      <TextView
+        android:id="@+id/dialog_message"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:paddingLeft="4dip"
+        android:paddingTop="10dip"
+        android:gravity="left"
+        android:textSize="16dip"
+        android:textColor="@color/white"/>
+
+    </LinearLayout>
+
+  </ScrollView>
+
+  <LinearLayout
+    android:layout_width="fill_parent"
+    android:background="@color/gray"
+    android:layout_height="wrap_content"
+    android:paddingTop="4dip"
+    android:paddingLeft="0dip"
+    android:paddingRight="0dip">
+
+    <LinearLayout android:id="@+id/leftSpacer"
+       android:layout_weight="0.25"
+       android:layout_width="0dip"
+       android:layout_height="wrap_content"
+       android:orientation="horizontal"
+       android:visibility="gone"/>
+
+    <Button
+      android:id="@+id/button_allow"
+      android:layout_width="96dip"
+      android:layout_height="48dip"
+      android:layout_gravity="left"
+      android:layout_weight="1"
+      android:maxLines="2"
+      android:textSize="13dip"/>
+
+    <Button
+      android:id="@+id/button_alwaysdeny"
+      android:layout_width="96dip"
+      android:layout_height="48dip"
+      android:layout_gravity="left"
+      android:layout_weight="1"
+      android:maxLines="2"
+      android:textSize="13dip"/>
+
+    <Button
+      android:id="@+id/button_deny"
+      android:layout_width="96dip"
+      android:layout_height="48dip"
+      android:layout_gravity="right"
+      android:layout_weight="1"
+      android:maxLines="2"
+      android:textSize="13dip"/>
+
+    <LinearLayout android:id="@+id/rightSpacer"
+      android:layout_width="0dip"
+      android:layout_weight="0.25"
+      android:layout_height="wrap_content"
+      android:orientation="horizontal"
+      android:visibility="gone" />
+
+  </LinearLayout>
+
+</LinearLayout>
diff --git a/res/layout/title_bar.xml b/res/layout/title_bar.xml
new file mode 100644
index 0000000..0f70519
--- /dev/null
+++ b/res/layout/title_bar.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:fitsSystemWindows="true"
+    android:orientation="horizontal"
+    android:layout_width="fill_parent"
+    android:background="@drawable/background_titlebar"
+    android:layout_height="45dip">
+    <ImageView android:id="@+id/favicon"
+        android:layout_height="20dip"
+        android:layout_width="20dip"
+        android:layout_marginLeft="6dip"
+        android:layout_marginRight="6dip"
+        android:layout_gravity="center_vertical"
+        />
+    <!-- layout which contains the title, progress bar, and url -->
+    <LinearLayout
+        android:orientation="vertical"
+        android:layout_width="0dip"
+        android:layout_weight="1"
+        android:layout_height="wrap_content">
+        <!-- This part contains the favicon and the progress bar -->
+        <RelativeLayout
+            android:layout_marginTop="3dip"
+            android:layout_height="wrap_content"
+            android:layout_width="fill_parent"
+            >
+            <LinearLayout
+                android:orientation="horizontal"
+                android:layout_marginTop="3dip"
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content">
+                <ProgressBar android:id="@+id/progress_horizontal"
+                    style="?android:attr/progressBarStyleHorizontal"
+                    android:layout_width="0dip"
+                    android:layout_weight="1"
+                    android:layout_height="wrap_content"
+                    android:max="100" />
+                <ProgressBar android:id="@+id/progress_circular"
+                    style="?android:attr/progressBarStyleSmallTitle"
+                    android:layout_marginLeft="3dip"
+                    android:layout_gravity="center_vertical"
+                    android:max="100"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content" />
+            </LinearLayout>
+            <!-- need to make this no wider than the horizontal progress bar -->
+            <TextView android:id="@+id/title"
+                android:layout_height="wrap_content"
+                android:layout_width="wrap_content"
+                android:layout_marginLeft="6dip"
+                android:layout_marginTop="4dip"
+                android:textSize="14dip"
+                android:textColor="@color/white"
+                android:textStyle="bold"
+                android:singleLine="true"
+                />
+            <TextView android:id="@+id/url"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="6dip"
+                android:layout_below="@id/title"
+                android:textSize="12dip"
+                android:textColor="@color/white"
+                android:singleLine="true"
+                />
+            <ImageView android:id="@+id/lock_icon"
+                android:layout_height="wrap_content"
+                android:layout_width="wrap_content"
+                android:layout_alignBottom="@id/title"
+                android:layout_alignParentRight="true"
+                android:visibility="gone"/>
+        </RelativeLayout>
+    </LinearLayout>
+    <!-- These buttons will change look/functionality -->
+    <ImageView android:id="@+id/lft_button"
+        android:layout_width="52dip"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:src="@android:drawable/btn_star"/>
+    <!-- divider -->
+    <View android:id="@+id/divider"
+        android:layout_height="fill_parent"
+        android:layout_width="2dip"
+        android:background="@drawable/button_line"/>
+    <ImageView android:id="@+id/rt_button"
+        android:layout_width="52dip"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:src="@*android:drawable/btn_browser_zoom_page_overview"/>
+</LinearLayout>
diff --git a/res/menu/bookmarks.xml b/res/menu/bookmarks.xml
index 50dcfa9..8a6e32e 100644
--- a/res/menu/bookmarks.xml
+++ b/res/menu/bookmarks.xml
@@ -18,4 +18,6 @@
     <item android:id="@+id/new_context_menu_id"
         android:icon="@android:drawable/ic_menu_add"
         android:title="@string/bookmark_page" />
+    <item android:id="@+id/switch_mode_menu_id"
+        android:title="@string/switch_mode"/>
 </menu>
diff --git a/res/menu/bookmarkscontext.xml b/res/menu/bookmarkscontext.xml
index b43e242..ba5d1dc 100644
--- a/res/menu/bookmarkscontext.xml
+++ b/res/menu/bookmarkscontext.xml
@@ -34,5 +34,7 @@
       android:title="@string/contextmenu_copylink"/>
     <item android:id="@+id/delete_context_menu_id"
       android:title="@string/remove_bookmark"/>
+    <item android:id="@+id/homepage_context_menu_id"
+      android:title="@string/set_as_homepage"/>
   </group>
 </menu>
diff --git a/res/menu/historycontext.xml b/res/menu/historycontext.xml
index dfda010..5306396 100644
--- a/res/menu/historycontext.xml
+++ b/res/menu/historycontext.xml
@@ -26,5 +26,7 @@
     <item android:id="@+id/copy_context_menu_id"
         android:title="@string/contextmenu_copylink"/> 
     <item android:id="@+id/delete_context_menu_id"
-        android:title="@string/remove_history_item"/> 
+        android:title="@string/remove_history_item"/>
+    <item android:id="@+id/homepage_context_menu_id"
+        android:title="@string/set_as_homepage"/>
 </menu>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 67ab130..0bea424 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -25,6 +25,7 @@
     <string name="username">"Název"</string>
     <string name="password">"Heslo"</string>
     <string name="action">"Přihlásit se"</string>
+    <string name="bookmarks_search">"Prohlížeč"</string>
     <string name="cancel">"Zrušit"</string>
     <string name="ok">"OK"</string>
   <plurals name="matches_found">
@@ -149,7 +150,7 @@
     <string name="pref_security_show_security_warning_summary">"Zobrazit upozornění, pokud dojde k problému se zabezpečením webu"</string>
     <string name="pref_security_accept_cookies">"Přijímat soubory cookie"</string>
     <string name="pref_security_accept_cookies_summary">"Povolit webům ukládat a číst soubory cookie"</string>
-    <string name="pref_text_size">"Nastavení velikosti textu"</string>
+    <string name="pref_text_size">"Velikost textu"</string>
   <string-array name="pref_text_size_choices">
     <item>"Velmi malé"</item>
     <item>"Malé"</item>
@@ -158,6 +159,13 @@
     <item>"Velmi velké"</item>
   </string-array>
     <string name="pref_text_size_dialogtitle">"Velikost textu"</string>
+    <string name="pref_default_zoom">"Výchozí přiblížení"</string>
+  <string-array name="pref_default_zoom_choices">
+    <item>"Daleko"</item>
+    <item>"Střední"</item>
+    <item>"Zavřít"</item>
+  </string-array>
+    <string name="pref_default_zoom_dialogtitle">"Výchozí přiblížení"</string>
     <string name="pref_extras_title">"Upřesnit nastavení"</string>
     <string name="pref_extras_gears_enable">"Povolit službu Gears"</string>
     <string name="pref_extras_gears_enable_summary">"Aplikace, které rozšiřují funkce prohlížeče"</string>
@@ -170,7 +178,7 @@
     <string name="pref_extras_reset_default_dlg">"Všechna data prohlížeče budou vymazána a bude použito výchozí nastavení."</string>
     <string name="pref_extras_reset_default_dlg_title">"Obnovit výchozí"</string>
     <string name="pref_development_title">"Ladit"</string>
-    <string name="pref_default_text_encoding">"Nastavení kódování textu"</string>
+    <string name="pref_default_text_encoding">"Kódování textu"</string>
   <string-array name="pref_default_text_encoding_choices">
     <item>"Latin-1 (ISO-8859-1)"</item>
     <item>"Unicode (UTF-8)"</item>
@@ -195,6 +203,8 @@
     <string name="no_database">"Databáze neexistuje."</string>
     <string name="search_hint">"Zadejte webovou adresu"</string>
     <string name="search_button_text">"Přejít"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
     <string name="attention">"Upozornění"</string>
     <string name="popup_window_attempt">"Tato stránka se pokouší otevřít vyskakovací okno."</string>
     <string name="allow">"Povolit"</string>
@@ -236,10 +246,8 @@
     <string name="download_length_required">"Nelze stáhnout. Velikost položky nelze určit."</string>
     <string name="download_precondition_failed">"Stahování bylo přerušeno a nelze v něm pokračovat."</string>
     <string name="activity_instrumentation_test_runner">"Testovací verze prohlížeče"</string>
-    <string name="permlab_readHistoryBookmarks">"čtení historie a záložek prohlížeče"</string>
-    <string name="permdesc_readHistoryBookmarks">"Umožňuje aplikaci číst všechny navštívené adresy URL a záložky prohlížeče."</string>
-    <string name="permlab_writeHistoryBookmarks">"zápis historie a záložek prohlížeče"</string>
-    <string name="permdesc_writeHistoryBookmarks">"Umožní aplikaci změnit historii či záložky prohlížeče uložené v telefonu. Škodlivé aplikace mohou pomocí tohoto nastavení vymazat či pozměnit data prohlížeče."</string>
+    <string name="homepage_base">"http://www.google.com/m?client=ms-{CID}"</string>
+    <string name="search_the_web">"Vyhledat na webu"</string>
     <string name="query_data_prompt">"Povolit úložiště"</string>
     <string name="query_data_message">"Tyto webové stránky chtějí uložit informace do vašeho telefonu."</string>
     <string name="location_prompt">"Přistupovat k poloze"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
new file mode 100644
index 0000000..bbf91ec
--- /dev/null
+++ b/res/values-da/strings.xml
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="application_name">"Browser"</string>
+    <string name="tab_bookmarks">"Bogmærker"</string>
+    <string name="tab_most_visited">"Mest besøgte"</string>
+    <string name="tab_history">"Oversigt"</string>
+    <string name="added_to_bookmarks">"Føjet til bogmærker"</string>
+    <string name="removed_from_bookmarks">"Fjernet fra bogmærker"</string>
+    <string name="sign_in_to">"Log ind på <xliff:g id="HOSTNAME">%s1</xliff:g>\"<xliff:g id="REALM">%s2</xliff:g>\""</string>
+    <string name="username">"Navn"</string>
+    <string name="password">"Adgangskode"</string>
+    <string name="action">"Log ind"</string>
+    <!-- no translation found for bookmarks_search (5229596268214362873) -->
+    <skip />
+    <string name="cancel">"Annuller"</string>
+    <string name="ok">"OK"</string>
+  <plurals name="matches_found">
+    <item quantity="zero">"Der er ingen matches"</item>
+    <item quantity="one">"1 match"</item>
+    <item quantity="few">"<xliff:g id="NUMBER">%d</xliff:g> matches"</item>
+    <item quantity="other">"<xliff:g id="NUMBER">%d</xliff:g> matches"</item>
+  </plurals>
+    <string name="page_info">"Sideoplysninger"</string>
+    <string name="page_info_view">"Vis sideoplysninger"</string>
+    <string name="page_info_address">"Adresse:"</string>
+    <string name="ssl_warnings_header">"Der er problemer med sikkerhedscertifikatet for dette websted."</string>
+    <string name="ssl_continue">"Fortsæt"</string>
+    <string name="security_warning">"Sikkerhedsadvarsel"</string>
+    <string name="view_certificate">"Vis certifikat"</string>
+    <string name="ssl_untrusted">"Dette certifikat stammer ikke fra en troværdig autoritet."</string>
+    <string name="ssl_mismatch">"Navnet på dette websted stemmer ikke overens med navnet på certifikatet."</string>
+    <string name="ssl_expired">"Dette certifikat er udløbet."</string>
+    <string name="ssl_not_yet_valid">"Dette certifikat er ikke gyldigt endnu."</string>
+    <string name="ssl_certificate">"Sikkerhedscertifikat"</string>
+    <string name="ssl_certificate_is_valid">"Dette certifikat er gyldigt."</string>
+    <string name="issued_to">"Udstedt til:"</string>
+    <string name="common_name">"Fællesnavn:"</string>
+    <string name="org_name">"Organisation:"</string>
+    <string name="org_unit">"Organisatorisk enhed:"</string>
+    <string name="issued_by">"Udstedt af:"</string>
+    <string name="validity_period">"Gyldighed:"</string>
+    <string name="issued_on">"Udstedt den:"</string>
+    <string name="expires_on">"Udløber den:"</string>
+    <string name="retrieving_creds_dlg_msg">"Henter logindetaljer ..."</string>
+    <string name="stopping">"Standser ..."</string>
+    <string name="stop">"Stop"</string>
+    <string name="reload">"Opdater"</string>
+    <string name="forward">"Fremad"</string>
+    <string name="save">"OK"</string>
+    <string name="do_not_save">"Annuller"</string>
+    <string name="location">"Placering"</string>
+    <string name="name">"Navn"</string>
+    <string name="http">"http://"</string>
+    <string name="save_to_bookmarks">"Tilføj et bogmærke"</string>
+    <string name="edit_bookmark">"Rediger bogmærke"</string>
+    <string name="create_shortcut_bookmark">"Føj genvej til Start"</string>
+    <string name="open_bookmark">"Åbn"</string>
+    <string name="remove_bookmark">"Slet bogmærke"</string>
+    <string name="remove_history_item">"Fjern fra oversigt"</string>
+    <string name="bookmark_saved">"Gemt i bogmærker."</string>
+    <string name="bookmark_needs_title">"Bogmærke skal have et navn."</string>
+    <string name="bookmark_needs_url">"Bogmærke skal have en placering."</string>
+    <string name="empty_bookmark">"Der kan ikke oprettes et tomt bogmærke."</string>
+    <string name="bookmark_url_not_valid">"Webadresse er ikke gyldig."</string>
+    <string name="delete_bookmark">"Slet"</string>
+    <string name="bookmark_page">"Tilføj bogmærke ved sidst viste side"</string>
+    <string name="current_page">"fra "</string>
+    <string name="delete_bookmark_warning">"Bogmærket \"<xliff:g id="BOOKMARK">%s</xliff:g>\" slettes."</string>
+    <string name="open_in_new_window">"Åbn i et nyt vindue"</string>
+    <string name="new_window">"Nyt vindue"</string>
+    <string name="goto_dot">"Gå"</string>
+    <string name="find_dot">"Find på side"</string>
+    <string name="select_dot">"Vælg tekst"</string>
+    <string name="view_tabs">"Vinduesoversigt"</string>
+    <string name="view_tabs_condensed">"Vinduer"</string>
+    <string name="tab_picker_title">"Nuværende vinduer"</string>
+    <string name="tab_picker_view_tab">"Vis"</string>
+    <string name="tab_picker_new_tab">"Nyt vindue"</string>
+    <string name="tab_picker_remove_tab">"Luk"</string>
+    <string name="tab_picker_bookmark">"Tilføj et bogmærke"</string>
+    <string name="tab_picker_send_url">"Del link"</string>
+    <string name="bookmarks">"Bogmærker"</string>
+    <string name="shortcut_bookmark">"Bogmærke"</string>
+    <string name="history">"Oversigt"</string>
+    <string name="menu_view_download">"Downloads"</string>
+    <string name="share_page">"Del side"</string>
+    <string name="contextmenu_openlink">"Åbn"</string>
+    <string name="contextmenu_openlink_newwindow">"Åbn i et nyt vindue"</string>
+    <string name="contextmenu_bookmark_thislink">"Tilføj et bogmærke ved linket"</string>
+    <string name="contextmenu_savelink">"Gem link"</string>
+    <string name="contextmenu_sharelink">"Del link"</string>
+    <string name="contextmenu_copy">"Kopier"</string>
+    <string name="contextmenu_copylink">"Kopier linkets webadresse"</string>
+    <string name="contextmenu_download_image">"Gem billede"</string>
+    <string name="contextmenu_view_image">"Vis billede"</string>
+    <string name="contextmenu_dial_dot">"Ring til ..."</string>
+    <string name="contextmenu_add_contact">"Tilføj kontaktperson"</string>
+    <string name="contextmenu_send_mail">"Send e-mail"</string>
+    <string name="contextmenu_map">"Kort"</string>
+    <string name="clear">"Ryd"</string>
+    <string name="replace">"Erstat"</string>
+    <string name="browser_bookmarks_page_bookmarks_text">"Bogmærker"</string>
+    <string name="menu_preferences">"Indstillinger"</string>
+    <string name="pref_content_title">"Indstillinger for sideindhold"</string>
+    <string name="pref_content_load_images">"Indlæs billeder"</string>
+    <string name="pref_content_load_images_summary">"Vis billeder på websider"</string>
+    <string name="pref_content_block_popups">"Bloker pop op-vinduer"</string>
+    <string name="pref_content_javascript">"Aktiver Javascript"</string>
+    <string name="pref_content_open_in_background">"Åbn i baggrunden"</string>
+    <string name="pref_content_open_in_background_summary">"Nye vinduer åbnes bag det nuværende"</string>
+    <string name="pref_content_homepage">"Indstil startside"</string>
+    <string name="pref_content_autofit">"Automatisk tilpassede sider"</string>
+    <string name="pref_content_autofit_summary">"Formater websider til at passe til skærmen"</string>
+    <string name="pref_privacy_title">"Fortrolighedsindstillinger"</string>
+    <string name="pref_privacy_clear_cache">"Ryd cache"</string>
+    <string name="pref_privacy_clear_cache_summary">"Slet alt cachelagret sideindhold"</string>
+    <string name="pref_privacy_clear_cache_dlg">"Cachen ryddes."</string>
+    <string name="pref_privacy_clear_cookies">"Ryd alle cookiedata"</string>
+    <string name="pref_privacy_clear_cookies_summary">"Ryd alle browsercookierne"</string>
+    <string name="pref_privacy_clear_cookies_dlg">"Alle cookies ryddes."</string>
+    <string name="pref_privacy_clear_history">"Ryd oversigt"</string>
+    <string name="pref_privacy_clear_history_summary">"Ryd browserens navigationsoversigt"</string>
+    <string name="pref_privacy_clear_history_dlg">"Browserens navigationsoversigt ryddes."</string>
+    <string name="pref_privacy_clear_form_data">"Ryd formulardata"</string>
+    <string name="pref_privacy_clear_form_data_summary">"Ryd alle gemte formulardata"</string>
+    <string name="pref_privacy_clear_form_data_dlg">"Alle gemte formulardata ryddes."</string>
+    <string name="pref_privacy_clear_passwords">"Ryd adgangskoder"</string>
+    <string name="pref_privacy_clear_passwords_summary">"Ryd alle gemte adgangskoder"</string>
+    <string name="pref_privacy_clear_passwords_dlg">"Alle gemte adgangskoder ryddes."</string>
+    <string name="pref_security_title">"Sikkerhedsindstillinger"</string>
+    <string name="pref_security_remember_passwords">"Husk adgangskoder"</string>
+    <string name="pref_security_remember_passwords_summary">"Gem brugernavne og adgangskoder til websteder"</string>
+    <string name="pref_security_save_form_data">"Husk formulardata"</string>
+    <string name="pref_security_save_form_data_summary">"Husk data, jeg indtaster i formularer, til senere brug"</string>
+    <string name="pref_security_show_security_warning">"Vis sikkerhedsadvarsler"</string>
+    <string name="pref_security_show_security_warning_summary">"Vis advarsler, hvis der er et problem med et websteds sikkerhed"</string>
+    <string name="pref_security_accept_cookies">"Accepter cookies"</string>
+    <string name="pref_security_accept_cookies_summary">"Tillad websteder at gemme og læse \"cookie\"-data"</string>
+    <string name="pref_text_size">"Tekststørrelse"</string>
+  <string-array name="pref_text_size_choices">
+    <item>"Lillebitte"</item>
+    <item>"Lille"</item>
+    <item>"Normal"</item>
+    <item>"Stor"</item>
+    <item>"Kæmpestor"</item>
+  </string-array>
+    <string name="pref_text_size_dialogtitle">"Tekststørrelse"</string>
+    <!-- no translation found for pref_default_zoom (8076142259097187395) -->
+    <skip />
+    <!-- no translation found for pref_default_zoom_choices:0 (549583171195154919) -->
+    <!-- no translation found for pref_default_zoom_choices:1 (5619034257768161024) -->
+    <!-- no translation found for pref_default_zoom_choices:2 (3840999588443167001) -->
+    <!-- no translation found for pref_default_zoom_dialogtitle (6095974367125109021) -->
+    <skip />
+    <string name="pref_extras_title">"Avancerede indstillinger"</string>
+    <string name="pref_extras_gears_enable">"Aktiver Gears"</string>
+    <string name="pref_extras_gears_enable_summary">"Programmer, der udvider browserfunktionalitet"</string>
+    <string name="pref_extras_gears_settings">"Indstillinger for Gears"</string>
+    <string name="pref_plugin_installed">"Liste over plugins"</string>
+    <string name="pref_plugin_installed_empty_list">"Der er ingen installerede plugins."</string>
+    <string name="pref_extras_gears_settings_summary">"Programmer, der udvider browserfunktionalitet"</string>
+    <string name="pref_extras_reset_default">"Nulstil til standard"</string>
+    <string name="pref_extras_reset_default_summary">"Ryd alle browserdata, og nulstil alle indstillinger til standard"</string>
+    <string name="pref_extras_reset_default_dlg">"Alle browserdata slettes, og indstillingerne vender tilbage til standardværdier."</string>
+    <string name="pref_extras_reset_default_dlg_title">"Nulstil til standard"</string>
+    <string name="pref_development_title">"Fejlretning"</string>
+    <!-- no translation found for pref_default_text_encoding (5742965543955558478) -->
+    <skip />
+  <string-array name="pref_default_text_encoding_choices">
+    <item>"Latin-1 (ISO-8859-1)"</item>
+    <item>"Unicode (UTF-8)"</item>
+    <item>"Japansk (ISO-2022-JP)"</item>
+    <item>"Japansk (SHIFT_JIS)"</item>
+    <item>"Japansk (EUC-JP)"</item>
+  </string-array>
+    <string name="pref_default_text_encoding_dialogtitle">"Tekstkodning"</string>
+    <string name="pref_default_text_encoding_default">"Latin-1"</string>
+    <string name="browserFrameRedirect">"Omdiriger"</string>
+    <string name="browserFrame307Post">"Dette websted omdirigeres. Send dine indtastede formulardata til den nye placering?"</string>
+    <string name="browserFrameNetworkErrorLabel">"Dataforbindelsesproblem"</string>
+    <string name="browserFrameFileErrorLabel">"Der er et problem med filen"</string>
+    <string name="browserFrameFormResubmitLabel">"Bekræft"</string>
+    <string name="browserFrameFormResubmitMessage">"Den side, du prøver at få vist, indeholder data, der allerede er indsendt (\"POSTDATA\"). Hvis du sender dataene igen, gentages alle handlinger, som formularen på siden udførte (som f.eks. en søgning eller et online køb)."</string>
+    <string name="loadSuspendedTitle">"Der er ingen netværksforbindelse"</string>
+    <string name="loadSuspended">"Indlæsningen af siden fortsættes, når forbindelsen er genoprettet."</string>
+    <string name="clear_history">"Ryd oversigt"</string>
+    <string name="browser_history">"Nyligt besøgte sider"</string>
+    <string name="empty_history">"Browseroversigt er tom."</string>
+    <string name="add_new_bookmark">"Tilføj bogmærke ..."</string>
+    <string name="no_database">"Der er ingen database!"</string>
+    <string name="search_hint">"Indtast webadresse"</string>
+    <string name="search_button_text">"Gå"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
+    <string name="attention">"Bemærk"</string>
+    <string name="popup_window_attempt">"Dette websted forsøger at åbne et pop op-vindue."</string>
+    <string name="allow">"Tillad"</string>
+    <string name="block">"Bloker"</string>
+    <string name="too_many_windows_dialog_title">"Grænsen for vinduet er nået"</string>
+    <string name="too_many_windows_dialog_message">"Der kunne ikke åbnes et nyt vindue, fordi du allerede har åbnet det maksimale antal."</string>
+    <string name="too_many_subwindows_dialog_title">"Pop op er allerede åben"</string>
+    <string name="too_many_subwindows_dialog_message">"Der kunne ikke åbnes et nyt pop op-vindue, da der kun kan være ét åbent ad gangen."</string>
+    <string name="download_title">"Downloadoversigt"</string>
+    <string name="download_unknown_filename">"&lt;Ukendt&gt;"</string>
+    <string name="download_menu_open">"Åbn"</string>
+    <string name="download_menu_clear">"Ryd fra listen"</string>
+    <string name="download_menu_cancel">"Annuller download"</string>
+    <string name="download_menu_cancel_all">"Annuller alle downloads"</string>
+    <string name="download_menu_clear_all">"Ryd liste"</string>
+    <string name="download_clear_dlg_title">"Ryd"</string>
+    <string name="download_clear_dlg_msg">"Alle elementer ryddes fra listen og fjernes fra browserens cache."</string>
+    <string name="download_cancel_dlg_title">"Annuller downloads"</string>
+    <string name="download_cancel_dlg_msg">"Alle <xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> downloads annulleres og ryddes fra downloadoversigten."</string>
+    <string name="download_file_error_dlg_title">"Der er ikke mere plads"</string>
+    <string name="download_file_error_dlg_msg">"<xliff:g id="FILENAME">%s</xliff:g> kunne ikke downloades."\n"Frigør noget plads på din telefon, og prøv igen."</string>
+    <string name="download_failed_generic_dlg_title">"Download mislykkedes"</string>
+    <string name="download_no_sdcard_dlg_title">"Der er intet SD-kort"</string>
+    <string name="download_no_sdcard_dlg_msg">"Et SD-kort er påkrævet for at downloade <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="download_sdcard_busy_dlg_title">"SD-kort er ikke tilgængeligt"</string>
+    <string name="download_sdcard_busy_dlg_msg">"SD-kortet er optaget. Vælg \"Slå USB-lagring fra\" i meddelelsen for at tillade downloads."</string>
+    <string name="download_no_application">"Der blev ikke fundet et program, der kan åbne denne fil."</string>
+    <string name="retry">"Prøv igen"</string>
+    <string name="no_downloads">"Downloadoversigt er tom."</string>
+    <string name="download_error">"Download mislykkedes."</string>
+    <string name="download_success">"<xliff:g id="FILE">%s</xliff:g> Download afsluttet."</string>
+    <string name="download_running">"Downloader ..."</string>
+    <string name="download_pending">"Starter download ..."</string>
+    <string name="download_pending_network">"Venter på dataforbindelse ..."</string>
+    <string name="download_running_paused">"Venter på dataforbindelse ..."</string>
+    <string name="download_canceled">"Download annulleret."</string>
+    <string name="download_not_acceptable">"Der kan ikke downloades. Indholdet er ikke understøttet på telefonen."</string>
+    <string name="download_file_error">"Download kan ikke afsluttes. Der er ikke nok plads."</string>
+    <string name="download_length_required">"Der kan ikke downloades. Størrelsen på elementet kan ikke afgøres."</string>
+    <string name="download_precondition_failed">"Download blev afbrudt. Den kan ikke genoptages."</string>
+    <string name="activity_instrumentation_test_runner">"Browsertestkørsel"</string>
+    <!-- no translation found for homepage_base (7888126987935305566) -->
+    <skip />
+    <!-- no translation found for search_the_web (6046130189241962337) -->
+    <skip />
+    <string name="query_data_prompt">"Tillad lagring"</string>
+    <string name="query_data_message">"Dette websted ønsker at gemme oplysninger på din telefon."</string>
+    <string name="location_prompt">"Få adgang til din placering"</string>
+    <string name="location_message">"Dette websted ønsker at få adgang til din placering."</string>
+    <string name="shortcut_prompt">"Opret en genvej"</string>
+    <string name="shortcut_message">"Dette websted vil gerne oprette en genvej til denne side på din startskærm."</string>
+    <string name="settings_message">"Nedenstående tabel viser de tilladelser, du har givet til hvert websted, som har forsøgt at bruge Gears."</string>
+    <string name="filepicker_message">"Filsamler"</string>
+    <string name="image_message">"Valgt billede"</string>
+    <string name="settings_title">"Indstillinger for Gears"</string>
+    <string name="privacy_policy">"Læs webstedets fortrolighedspolitik for at se, hvordan din placering bruges."</string>
+    <string name="settings_storage_title">"Tillad lokal lagring"</string>
+    <string name="settings_storage_subtitle_on">"Dette websted kan gemme oplysninger på din telefon"</string>
+    <string name="settings_storage_subtitle_off">"Dette websted kan ikke gemme oplysninger på din telefon"</string>
+    <string name="settings_location_title">"Tillad lokaliseringsregistrering"</string>
+    <string name="settings_location_subtitle_on">"Dette websted kan læse din aktuelle placering"</string>
+    <string name="settings_location_subtitle_off">"Dette websted kan ikke læse din aktuelle placering"</string>
+    <string name="settings_remove_site">"Fjern dette websted fra Gears"</string>
+    <string name="settings_empty">"Der er ikke indstillet nogen tilladelser"</string>
+    <string name="settings_confirmation_remove_title">"Fjern dette websted"</string>
+    <string name="settings_confirmation_remove">"Alle tilladelser ryddes, og alle data, som er gemt på din telefon af webstedet, slettes."</string>
+    <string name="storage_notification">"Dette websted gemmer oplysninger på din telefon."\n" Skift denne indstilling i:"\n" Indstillinger-&gt; Indstillinger for Gears"</string>
+    <string name="storage_notification_alwaysdeny">"Dette websted gemmer aldrig oplysninger på din telefon."\n" Skift denne indstilling i:"\n" Indstillinger-&gt; Indstillinger for Gears"</string>
+    <string name="location_notification">"Dette websted har adgang til din aktuelle placering."\n" Skift denne indstilling i:"\n" Indstillinger -&gt; Indstillinger for Gears"</string>
+    <string name="location_notification_alwaysdeny">"Dette websted har ikke adgang til din aktuelle placering."\n" Skift denne indstilling i:"\n" Indstillinger -&gt; Indstillinger for Gears"</string>
+    <string name="shortcut_notification">"Genvej oprettet"</string>
+    <string name="permission_button_alwaysdeny">"Tillad aldrig"</string>
+    <string name="permission_button_allow">"OK"</string>
+    <string name="permission_button_deny">"Annuller"</string>
+    <string name="shortcut_button_alwaysdeny">"Tillad aldrig"</string>
+    <string name="shortcut_button_allow">"OK"</string>
+    <string name="shortcut_button_deny">"Annuller"</string>
+    <string name="settings_button_allow">"Anvend"</string>
+    <string name="settings_button_deny">"Annuller"</string>
+    <string name="filepicker_button_allow">"OK"</string>
+    <string name="filepicker_button_deny">"Annuller"</string>
+    <string name="filepicker_path">"sti:"</string>
+    <string name="filepicker_no_files_selected">"Der blev ikke valgt nogen filer"</string>
+    <string name="filepicker_one_file_selected">"Der er valgt én fil"</string>
+    <string name="filepicker_some_files_selected">"valgte filer"</string>
+    <string name="remove">"Fjern"</string>
+    <string name="local_storage">"Lokal lagring"</string>
+    <string name="allowed">"Tilladt"</string>
+    <string name="denied">"Afvist"</string>
+    <string name="unrecognized_dialog_message">"Ikke anerkendt dialogtype"</string>
+    <string name="default_button">"OK"</string>
+    <string name="zoom_overview_button_text">"Oversigt"</string>
+</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 184bc83..67f10e3 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -25,6 +25,7 @@
     <string name="username">"Name"</string>
     <string name="password">"Passwort"</string>
     <string name="action">"Anmelden"</string>
+    <string name="bookmarks_search">"Browser"</string>
     <string name="cancel">"Abbrechen"</string>
     <string name="ok">"OK"</string>
   <plurals name="matches_found">
@@ -149,7 +150,7 @@
     <string name="pref_security_show_security_warning_summary">"Bei Problemen mit der Sicherheit der Website Warnung anzeigen"</string>
     <string name="pref_security_accept_cookies">"Cookies akzeptieren"</string>
     <string name="pref_security_accept_cookies_summary">"Speichern und Lesen von \"Cookie\"-Daten zulassen"</string>
-    <string name="pref_text_size">"Textgröße einstellen"</string>
+    <string name="pref_text_size">"Textgröße"</string>
   <string-array name="pref_text_size_choices">
     <item>"Sehr klein"</item>
     <item>"Klein"</item>
@@ -158,6 +159,13 @@
     <item>"Sehr groß"</item>
   </string-array>
     <string name="pref_text_size_dialogtitle">"Textgröße"</string>
+    <string name="pref_default_zoom">"Standard-Zoom"</string>
+  <string-array name="pref_default_zoom_choices">
+    <item>"Entfernt"</item>
+    <item>"Mittel"</item>
+    <item>"Schließen"</item>
+  </string-array>
+    <string name="pref_default_zoom_dialogtitle">"Standard-Zoom"</string>
     <string name="pref_extras_title">"Erweiterte Einstellungen"</string>
     <string name="pref_extras_gears_enable">"Gears aktivieren"</string>
     <string name="pref_extras_gears_enable_summary">"Anwendungen, die die Browserfunktionen erweitern"</string>
@@ -170,7 +178,7 @@
     <string name="pref_extras_reset_default_dlg">"Alle Browserdaten werden gelöscht. Alle Einstellungen werden auf die Standardeinstellung zurückgesetzt."</string>
     <string name="pref_extras_reset_default_dlg_title">"Auf Standardeinstellung zurücksetzen"</string>
     <string name="pref_development_title">"Debuggen"</string>
-    <string name="pref_default_text_encoding">"Textcodierung einstellen"</string>
+    <string name="pref_default_text_encoding">"Textcodierung"</string>
   <string-array name="pref_default_text_encoding_choices">
     <item>"Latin-1 (ISO-8859-1)"</item>
     <item>"Unicode (UTF-8)"</item>
@@ -195,6 +203,8 @@
     <string name="no_database">"Keine Datenbank!"</string>
     <string name="search_hint">"Webadresse eingeben"</string>
     <string name="search_button_text">"Los"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
     <string name="attention">"Achtung"</string>
     <string name="popup_window_attempt">"Diese Website versucht, ein Pop-up-Fenster zu öffnen."</string>
     <string name="allow">"Zulassen"</string>
@@ -236,10 +246,8 @@
     <string name="download_length_required">"Download kann nicht gestartet werden, da die Größe des Elements nicht bestimmt werden kann."</string>
     <string name="download_precondition_failed">"Download wurde unterbrochen und kann nicht fortgesetzt werden."</string>
     <string name="activity_instrumentation_test_runner">"Browser Test Runner"</string>
-    <string name="permlab_readHistoryBookmarks">"Browserverlauf und Lesezeichen lesen"</string>
-    <string name="permdesc_readHistoryBookmarks">"Ermöglicht der Anwendung, alle URLs, die mit dem Browser besucht wurden, sowie alle Lesezeichen des Browsers zu lesen."</string>
-    <string name="permlab_writeHistoryBookmarks">"Browserverlauf und Lesezeichen schreiben"</string>
-    <string name="permdesc_writeHistoryBookmarks">"Ermöglicht einer Anwendung, den auf Ihrem Telefon gespeicherten Browserverlauf und die Lesezeichen zu ändern. Schädliche Anwendungen können so Ihre Browserdaten löschen oder ändern."</string>
+    <string name="homepage_base">"http://www.google.com/m?client=ms-{CID}"</string>
+    <string name="search_the_web">"Web durchsuchen"</string>
     <string name="query_data_prompt">"Speicher zulassen"</string>
     <string name="query_data_message">"Diese Website möchte Informationen auf Ihrem Telefon speichern."</string>
     <string name="location_prompt">"Zugriff auf Ihren Standort"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
new file mode 100644
index 0000000..781d20c
--- /dev/null
+++ b/res/values-el/strings.xml
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="application_name">"Πρόγραμμα περιήγησης"</string>
+    <string name="tab_bookmarks">"Σελιδοδείκτες"</string>
+    <string name="tab_most_visited">"Οι πιο δημοφιλείς"</string>
+    <string name="tab_history">"Ιστορικό"</string>
+    <string name="added_to_bookmarks">"Έγινε προσθήκη στους σελιδοδείκτες"</string>
+    <string name="removed_from_bookmarks">"Κατάργηση από τους σελιδοδείκτες"</string>
+    <string name="sign_in_to">"Σύνδεση στο <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
+    <string name="username">"Όνομα"</string>
+    <string name="password">"Κωδικός πρόσβασης"</string>
+    <string name="action">"Σύνδεση"</string>
+    <!-- no translation found for bookmarks_search (5229596268214362873) -->
+    <skip />
+    <string name="cancel">"Ακύρωση"</string>
+    <string name="ok">"OK"</string>
+  <plurals name="matches_found">
+    <item quantity="zero">"Δεν υπάρχουν αποτελέσματα"</item>
+    <item quantity="one">"1 αποτέλεσμα"</item>
+    <item quantity="few">"<xliff:g id="NUMBER">%d</xliff:g> αποτελέσματα"</item>
+    <item quantity="other">"<xliff:g id="NUMBER">%d</xliff:g> αποτελέσματα"</item>
+  </plurals>
+    <string name="page_info">"Πληροφορίες σελίδας"</string>
+    <string name="page_info_view">"Προβολή πληροφοριών σελίδας"</string>
+    <string name="page_info_address">"Διεύθυνση:"</string>
+    <string name="ssl_warnings_header">"Παρουσιάστηκαν προβλήματα με το πιστοποιητικό ασφαλείας αυτού του ιστότοπου."</string>
+    <string name="ssl_continue">"Συνέχεια"</string>
+    <string name="security_warning">"Προειδοποίηση ασφαλείας"</string>
+    <string name="view_certificate">"Προβολή πιστοποιητικού"</string>
+    <string name="ssl_untrusted">"Αυτό το πιστοποιητικό δεν είναι από έμπιστη αρχή."</string>
+    <string name="ssl_mismatch">"Το όνομα του ιστότοπου δεν αντιστοιχεί στο όνομα του πιστοποιητικού."</string>
+    <string name="ssl_expired">"Αυτό το πιστοποιητικό έχει λήξει."</string>
+    <string name="ssl_not_yet_valid">"Αυτό το πιστοποιητικό δεν είναι έγκυρο ακόμα."</string>
+    <string name="ssl_certificate">"Πιστοποιητικό ασφαλείας"</string>
+    <string name="ssl_certificate_is_valid">"Αυτό το πιστοποιητικό είναι έγκυρο."</string>
+    <string name="issued_to">"Εκδόθηκε στις:"</string>
+    <string name="common_name">"Κοινό όνομα:"</string>
+    <string name="org_name">"Οργανισμός:"</string>
+    <string name="org_unit">"Μονάδα οργάνωσης:"</string>
+    <string name="issued_by">"Εκδόθηκε:"</string>
+    <string name="validity_period">"Ισχύς:"</string>
+    <string name="issued_on">"Εκδόθηκε στις:"</string>
+    <string name="expires_on">"Λήγει:"</string>
+    <string name="retrieving_creds_dlg_msg">"Ανάκτηση λεπτομερειών σύνδεσης..."</string>
+    <string name="stopping">"Διακοπή..."</string>
+    <string name="stop">"Διακοπή"</string>
+    <string name="reload">"Ανανέωση"</string>
+    <string name="forward">"Εμπρός"</string>
+    <string name="save">"OK"</string>
+    <string name="do_not_save">"Ακύρωση"</string>
+    <string name="location">"Τοποθεσία"</string>
+    <string name="name">"Όνομα"</string>
+    <string name="http">"http://"</string>
+    <string name="save_to_bookmarks">"Σελιδοδείκτης"</string>
+    <string name="edit_bookmark">"Επεξεργασία σελιδοδείκτη"</string>
+    <string name="create_shortcut_bookmark">"Προσθήκη συντόμευσης στην αρχική οθόνη"</string>
+    <string name="open_bookmark">"Άνοιγμα"</string>
+    <string name="remove_bookmark">"Διαγραφή σελιδοδείκτη"</string>
+    <string name="remove_history_item">"Κατάργηση από το ιστορικό"</string>
+    <string name="bookmark_saved">"Αποθηκεύτηκε στους σελιδοδείκτες."</string>
+    <string name="bookmark_needs_title">"Ο σελιδοδείκτης πρέπει να έχει ένα όνομα."</string>
+    <string name="bookmark_needs_url">"Ο σελιδοδείκτης πρέπει να έχει μια τοποθεσία."</string>
+    <string name="empty_bookmark">"Δεν είναι δυνατή η δημιουργία κενού σελιδοδείκτη."</string>
+    <string name="bookmark_url_not_valid">"Μη έγκυρη διεύθυνση URL."</string>
+    <string name="delete_bookmark">"Διαγραφή"</string>
+    <string name="bookmark_page">"Προσθήκη της τελευταίας σελίδας που προβλήθηκε στους σελιδοδείκτες"</string>
+    <string name="current_page">"από "</string>
+    <string name="delete_bookmark_warning">"Ο σελιδοδείκτης \"<xliff:g id="BOOKMARK">%s</xliff:g>\" θα διαγραφεί."</string>
+    <string name="open_in_new_window">"Άνοιγμα σε νέο παράθυρο"</string>
+    <string name="new_window">"Νέο παράθυρο"</string>
+    <string name="goto_dot">"Μετάβαση"</string>
+    <string name="find_dot">"Εύρεση στη σελίδα"</string>
+    <string name="select_dot">"Επιλογή κειμένου"</string>
+    <string name="view_tabs">"Προεπισκόπηση παραθύρου"</string>
+    <string name="view_tabs_condensed">"Παράθυρα"</string>
+    <string name="tab_picker_title">"Τρέχοντα παράθυρα"</string>
+    <string name="tab_picker_view_tab">"Προβολή"</string>
+    <string name="tab_picker_new_tab">"Νέο παράθυρο"</string>
+    <string name="tab_picker_remove_tab">"Κλείσιμο"</string>
+    <string name="tab_picker_bookmark">"Σελιδοδείκτης"</string>
+    <string name="tab_picker_send_url">"Κοινή χρήση συνδέσμου"</string>
+    <string name="bookmarks">"Σελιδοδείκτες"</string>
+    <string name="shortcut_bookmark">"Σελιδοδείκτης"</string>
+    <string name="history">"Ιστορικό"</string>
+    <string name="menu_view_download">"Λήψεις"</string>
+    <string name="share_page">"Κοινή χρήση σελίδας"</string>
+    <string name="contextmenu_openlink">"Άνοιγμα"</string>
+    <string name="contextmenu_openlink_newwindow">"Άνοιγμα σε νέο παράθυρο"</string>
+    <string name="contextmenu_bookmark_thislink">"Πρόσθεση συνδέσμου στους σελιδοδείκτες"</string>
+    <string name="contextmenu_savelink">"Αποθήκευση συνδέσμου"</string>
+    <string name="contextmenu_sharelink">"Κοινή χρήση συνδέσμου"</string>
+    <string name="contextmenu_copy">"Αντιγραφή"</string>
+    <string name="contextmenu_copylink">"Αντιγραφή συνδέσμου διεύθυνσης URL"</string>
+    <string name="contextmenu_download_image">"Αποθήκευση εικόνας"</string>
+    <string name="contextmenu_view_image">"Προβολή εικόνας"</string>
+    <string name="contextmenu_dial_dot">"Κλήση..."</string>
+    <string name="contextmenu_add_contact">"Προσθήκη επαφής"</string>
+    <string name="contextmenu_send_mail">"Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου"</string>
+    <string name="contextmenu_map">"Χάρτης"</string>
+    <string name="clear">"Εκκαθάριση"</string>
+    <string name="replace">"Αντικατάσταση"</string>
+    <string name="browser_bookmarks_page_bookmarks_text">"Σελιδοδείκτες"</string>
+    <string name="menu_preferences">"Ρυθμίσεις"</string>
+    <string name="pref_content_title">"Ρυθμίσεις περιεχομένου σελίδας"</string>
+    <string name="pref_content_load_images">"Φόρτωση εικόνων"</string>
+    <string name="pref_content_load_images_summary">"Προβολή εικόνων στις ιστοσελίδες"</string>
+    <string name="pref_content_block_popups">"Αποκλεισμός αναδυόμενων παραθύρων"</string>
+    <string name="pref_content_javascript">"Ενεργοποίηση JavaScript"</string>
+    <string name="pref_content_open_in_background">"Άνοιγμα στο παρασκήνιο"</string>
+    <string name="pref_content_open_in_background_summary">"Τα νέα παράθυρα ανοίγουν πίσω από το τρέχον"</string>
+    <string name="pref_content_homepage">"Ορισμός ως αρχική σελίδα"</string>
+    <string name="pref_content_autofit">"Αυτόματη προσαρμογή σελίδων"</string>
+    <string name="pref_content_autofit_summary">"Μορφοποίηση ιστοσελίδων για την προσαρμογή τους στο μέγεθος της οθόνης"</string>
+    <string name="pref_privacy_title">"Ρυθμίσεις απορρήτου"</string>
+    <string name="pref_privacy_clear_cache">"Εκκαθάριση προσωρινής μνήμης"</string>
+    <string name="pref_privacy_clear_cache_summary">"Διαγραφή όλου του περιεχομένου των προσωρινά αποθηκευμένων σελίδων"</string>
+    <string name="pref_privacy_clear_cache_dlg">"Θα γίνει εκκαθάριση της προσωρινής μνήμης."</string>
+    <string name="pref_privacy_clear_cookies">"Εκκαθάριση όλων των δεδομένων cookie"</string>
+    <string name="pref_privacy_clear_cookies_summary">"Εκκαθάριση όλων των cookie του προγράμματος περιήγησης"</string>
+    <string name="pref_privacy_clear_cookies_dlg">"Θα γίνει εκκαθάριση όλων των cookie."</string>
+    <string name="pref_privacy_clear_history">"Εκκαθάριση ιστορικού"</string>
+    <string name="pref_privacy_clear_history_summary">"Εκκαθάριση ιστορικού πλοήγησης προγράμματος περιήγησης"</string>
+    <string name="pref_privacy_clear_history_dlg">"Θα γίνει εκκαθάριση του ιστορικού πλοήγησης του προγράμματος περιήγησης."</string>
+    <string name="pref_privacy_clear_form_data">"Εκκαθάριση δεδομένων φόρμας"</string>
+    <string name="pref_privacy_clear_form_data_summary">"Εκκαθάριση όλων των αποθηκευμένων δεδομένων φόρμας"</string>
+    <string name="pref_privacy_clear_form_data_dlg">"Θα γίνει εκκαθάριση όλων των αποθηκευμένων δεδομένων φόρμας."</string>
+    <string name="pref_privacy_clear_passwords">"Εκκαθάριση κωδικών πρόσβασης"</string>
+    <string name="pref_privacy_clear_passwords_summary">"Εκκαθάριση όλων των αποθηκευμένων κωδικών πρόσβασης"</string>
+    <string name="pref_privacy_clear_passwords_dlg">"Θα γίνει εκκαθάριση όλων των αποθηκευμένων κωδικών πρόσβασης."</string>
+    <string name="pref_security_title">"Ρυθμίσεις ασφαλείας"</string>
+    <string name="pref_security_remember_passwords">"Απομνημόνευση κωδικών πρόσβασης"</string>
+    <string name="pref_security_remember_passwords_summary">"Αποθήκευση ονομάτων χρήστη και κωδικών πρόσβασης για τους ιστότοπους"</string>
+    <string name="pref_security_save_form_data">"Απομνημόνευση δεδομένων φόρμας"</string>
+    <string name="pref_security_save_form_data_summary">"Να γίνεται απομνημόνευση των δεδομένων που εισάγω σε φόρμες για μελλοντική χρήση"</string>
+    <string name="pref_security_show_security_warning">"Εμφάνιση προειδοποιήσεων ασφαλείας"</string>
+    <string name="pref_security_show_security_warning_summary">"Να εμφανίζεται προειδοποίηση εάν υπάρχει πρόβλημα με την ασφάλεια ενός ιστότοπου"</string>
+    <string name="pref_security_accept_cookies">"Αποδοχή cookie"</string>
+    <string name="pref_security_accept_cookies_summary">"Να επιτρέπεται η αποθήκευση και η ανάγνωση δεδομένων \"cookie\" από τους ιστότοπους"</string>
+    <!-- no translation found for pref_text_size (3827031324346612208) -->
+    <skip />
+  <string-array name="pref_text_size_choices">
+    <item>"Πολύ μικρό"</item>
+    <item>"Μικρό"</item>
+    <item>"Κανονικό"</item>
+    <item>"Μεγάλο"</item>
+    <item>"Πολύ μεγάλο"</item>
+  </string-array>
+    <string name="pref_text_size_dialogtitle">"Μέγεθος κειμένου"</string>
+    <!-- no translation found for pref_default_zoom (8076142259097187395) -->
+    <skip />
+    <!-- no translation found for pref_default_zoom_choices:0 (549583171195154919) -->
+    <!-- no translation found for pref_default_zoom_choices:1 (5619034257768161024) -->
+    <!-- no translation found for pref_default_zoom_choices:2 (3840999588443167001) -->
+    <!-- no translation found for pref_default_zoom_dialogtitle (6095974367125109021) -->
+    <skip />
+    <string name="pref_extras_title">"Σύνθετες ρυθμίσεις"</string>
+    <string name="pref_extras_gears_enable">"Ενεργοποίηση Gears"</string>
+    <string name="pref_extras_gears_enable_summary">"Εφαρμογές που επεκτείνουν τις δυνατότητες του προγράμματος περιήγησης"</string>
+    <string name="pref_extras_gears_settings">"Ρυθμίσεις Gears"</string>
+    <string name="pref_plugin_installed">"Λίστα προσθηκών"</string>
+    <string name="pref_plugin_installed_empty_list">"Δεν υπάρχουν εγκατεστημένες προσθήκες."</string>
+    <string name="pref_extras_gears_settings_summary">"Εφαρμογές που επεκτείνουν τις δυνατότητες του προγράμματος περιήγησης"</string>
+    <string name="pref_extras_reset_default">"Επαναφορά προεπιλογών"</string>
+    <string name="pref_extras_reset_default_summary">"Εκκαθάριση όλων των δεδομένων του προγράμματος περιήγησης και επαναφορά όλων των ρυθμίσεων στις προεπιλεγμένες ρυθμίσεις"</string>
+    <string name="pref_extras_reset_default_dlg">"Θα γίνει εκκαθάριση όλων των δεδομένων του προγράμματος περιήγησης και επαναφορά των ρυθμίσεων στις προεπιλεγμένες τιμές."</string>
+    <string name="pref_extras_reset_default_dlg_title">"Επαναφορά προεπιλογών"</string>
+    <string name="pref_development_title">"Εντοπισμός σφαλμάτων"</string>
+    <!-- no translation found for pref_default_text_encoding (5742965543955558478) -->
+    <skip />
+  <string-array name="pref_default_text_encoding_choices">
+    <item>"Latin-1 (ISO-8859-1)"</item>
+    <item>"Unicode (UTF-8)"</item>
+    <item>"Ιαπωνικά (ISO-2022-JP)"</item>
+    <item>"Ιαπωνικά (SHIFT_JIS)"</item>
+    <item>"Ιαπωνικά (EUC-JP)"</item>
+  </string-array>
+    <string name="pref_default_text_encoding_dialogtitle">"Κωδικοποίηση κειμένου"</string>
+    <string name="pref_default_text_encoding_default">"Latin-1"</string>
+    <string name="browserFrameRedirect">"Ανακατεύθυνση"</string>
+    <string name="browserFrame307Post">"Γίνεται ανακατεύθυνση αυτής της ιστοσελίδας. Να αποσταλούν ξανά τα δεδομένα φόρμας που έχετε εισάγει, στην νέα τοποθεσία;"</string>
+    <string name="browserFrameNetworkErrorLabel">"Πρόβλημα σύνδεσης δεδομένων"</string>
+    <string name="browserFrameFileErrorLabel">"Υπάρχει πρόβλημα με το αρχείο"</string>
+    <string name="browserFrameFormResubmitLabel">"Επιβεβαίωση"</string>
+    <string name="browserFrameFormResubmitMessage">"Η σελίδα που προσπαθείτε να προβάλλετε, περιέχει δεδομένα που έχουν ήδη υποβληθεί (\"POSTDATA\"). Εάν αποστείλετε ξανά τα δεδομένα, όλες οι ενέργειες που εκτελέστηκαν από τη φόρμα στη σελίδα (όπως μια αναζήτηση ή μια αγορά στο διαδίκτυο) θα επαναληφθούν."</string>
+    <string name="loadSuspendedTitle">"Δεν υπάρχει σύνδεση δικτύου"</string>
+    <string name="loadSuspended">"Η φόρτωση της σελίδας θα συνεχιστεί μετά την επαναφορά της σύνδεσης."</string>
+    <string name="clear_history">"Εκκαθάριση ιστορικού"</string>
+    <string name="browser_history">"Σελίδες που έχετε επισκεφθεί πρόσφατα"</string>
+    <string name="empty_history">"Το ιστορικό του προγράμματος περιήγησης είναι κενό."</string>
+    <string name="add_new_bookmark">"Προσθήκη σελιδοδείκτη..."</string>
+    <string name="no_database">"Δεν υπάρχει βάση δεδομένων!"</string>
+    <string name="search_hint">"Πληκτρολογήστε τη διεύθυνση ιστού"</string>
+    <string name="search_button_text">"Μετάβαση"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
+    <string name="attention">"Προσοχή"</string>
+    <string name="popup_window_attempt">"Αυτός ο ιστότοπος επιχειρεί να ανοίξει ένα αναδυόμενο παράθυρο."</string>
+    <string name="allow">"Να επιτρέπεται"</string>
+    <string name="block">"Αποκλεισμός"</string>
+    <string name="too_many_windows_dialog_title">"Το όριο παραθύρων εξαντλήθηκε"</string>
+    <string name="too_many_windows_dialog_message">"Δεν ήταν δυνατό το άνοιγμα νέου παραθύρου, επειδή έχετε ήδη ανοίξει τον μέγιστο αριθμό παραθύρων."</string>
+    <string name="too_many_subwindows_dialog_title">"Το αναδυόμενο παράθυρο είναι ήδη ανοιχτό"</string>
+    <string name="too_many_subwindows_dialog_message">"Δεν είναι δυνατό το άνοιγμα ενός νέου αναδυόμενου παράθυρου, επειδή επιτρέπεται το άνοιγμα μόνο ενός παράθυρου κάθε φορά."</string>
+    <string name="download_title">"Ιστορικό λήψης"</string>
+    <string name="download_unknown_filename">"&lt;Άγνωστο&gt;"</string>
+    <string name="download_menu_open">"Άνοιγμα"</string>
+    <string name="download_menu_clear">"Εκκαθάριση από τη λίστα"</string>
+    <string name="download_menu_cancel">"Ακύρωση λήψης"</string>
+    <string name="download_menu_cancel_all">"Ακύρωση όλων των λήψεων"</string>
+    <string name="download_menu_clear_all">"Εκκαθάριση λίστας"</string>
+    <string name="download_clear_dlg_title">"Εκκαθάριση"</string>
+    <string name="download_clear_dlg_msg">"Θα γίνει εκκαθάριση όλων των στοιχείων από τη λίστα και κατάργηση από την προσωρινή μνήμη του προγράμματος περιήγησης."</string>
+    <string name="download_cancel_dlg_title">"Ακύρωση λήψεων"</string>
+    <string name="download_cancel_dlg_msg">"Οι <xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> λήψεις θα ακυρωθούν και θα γίνει εκκαθάρισή τους από το ιστορικό λήψεων."</string>
+    <string name="download_file_error_dlg_title">"Εξαντλήθηκε ο χώρος"</string>
+    <string name="download_file_error_dlg_msg">"Δεν ήταν δυνατή η λήψη του <xliff:g id="FILENAME">%s</xliff:g>."\n"Απελευθερώστε λίγο χώρο στο τηλέφωνό σας και δοκιμάστε ξανά."</string>
+    <string name="download_failed_generic_dlg_title">"Ανεπιτυχής λήψη"</string>
+    <string name="download_no_sdcard_dlg_title">"Δεν υπάρχει κάρτα SD"</string>
+    <string name="download_no_sdcard_dlg_msg">"Για τη λήψη του <xliff:g id="FILENAME">%s</xliff:g> απαιτείται κάρτα SD."</string>
+    <string name="download_sdcard_busy_dlg_title">"Η κάρτα SD δεν είναι διαθέσιμη"</string>
+    <string name="download_sdcard_busy_dlg_msg">"Η κάρτα SD είναι απασχολημένη. Για να επιτρέψετε τις λήψεις, στην ειδοποίηση επιλέξτε \"Απενεργοποίηση χώρου αποθήκευσης USB\"."</string>
+    <string name="download_no_application">"Δεν βρέθηκε εφαρμογή για το άνοιγμα αυτού του αρχείου."</string>
+    <string name="retry">"Επανάληψη"</string>
+    <string name="no_downloads">"Το ιστορικό λήψεων του προγράμματος περιήγησης είναι κενό."</string>
+    <string name="download_error">"Ανεπιτυχής λήψη."</string>
+    <string name="download_success">"<xliff:g id="FILE">%s</xliff:g> Ολοκλήρωση λήψης."</string>
+    <string name="download_running">"Λήψη..."</string>
+    <string name="download_pending">"Έναρξη λήψης..."</string>
+    <string name="download_pending_network">"Αναμονή για σύνδεση δεδομένων…"</string>
+    <string name="download_running_paused">"Αναμονή για σύνδεση δεδομένων…"</string>
+    <string name="download_canceled">"Η λήψη ακυρώθηκε."</string>
+    <string name="download_not_acceptable">"Δεν είναι δυνατή η λήψη. Το περιεχόμενο δεν υποστηρίζεται από το τηλέφωνο."</string>
+    <string name="download_file_error">"Δεν είναι δυνατή η ολοκλήρωση της λήψης. Δεν υπάρχει αρκετός διαθέσιμος χώρος."</string>
+    <string name="download_length_required">"Δεν είναι δυνατή η λήψη. Δεν είναι δυνατός ο προσδιορισμός του μεγέθους του στοιχείου."</string>
+    <string name="download_precondition_failed">"Η λήψη διακόπηκε. Δεν είναι δυνατή η συνέχισή της."</string>
+    <string name="activity_instrumentation_test_runner">"Πρόγραμμα εκτέλεσης δοκιμών προγράμματος περιήγησης"</string>
+    <!-- no translation found for homepage_base (7888126987935305566) -->
+    <skip />
+    <!-- no translation found for search_the_web (6046130189241962337) -->
+    <skip />
+    <string name="query_data_prompt">"Να επιτρέπεται η αποθήκευση"</string>
+    <string name="query_data_message">"Αυτός ο ιστότοπος θέλει να αποθηκεύσει πληροφορίες στο τηλέφωνό σας."</string>
+    <string name="location_prompt">"Πρόσβαση στην τοποθεσία σας"</string>
+    <string name="location_message">"Αυτός ο ιστότοπος θέλει να αποκτήσει πρόσβαση στην τοποθεσία σας."</string>
+    <string name="shortcut_prompt">"Δημιουργία συντόμευσης"</string>
+    <string name="shortcut_message">"Αυτός ο ιστότοπος θέλει να δημιουργήσει μια συντόμευση αυτής της σελίδας στην αρχική σας οθόνη."</string>
+    <string name="settings_message">"Ο παρακάτω πίνακας εμφανίζει τα δικαιώματα που έχετε παραχωρήσει σε κάθε ιστότοπο που προσπάθησε να χρησιμοποιήσει το Gears."</string>
+    <string name="filepicker_message">"Πρόγραμμα επιλογής αρχείων"</string>
+    <string name="image_message">"Επιλεγμένη εικόνα"</string>
+    <string name="settings_title">"Ρυθμίσεις Gears"</string>
+    <string name="privacy_policy">"Διαβάστε την πολιτική απορρήτου αυτού του ιστότοπου για να μάθετε πώς θα χρησιμοποιηθεί η τοποθεσία σας."</string>
+    <string name="settings_storage_title">"Να επιτρέπεται η τοπική αποθήκευση"</string>
+    <string name="settings_storage_subtitle_on">"Αυτός ο ιστότοπος μπορεί να αποθηκεύσει πληροφορίες στο τηλέφωνό σας"</string>
+    <string name="settings_storage_subtitle_off">"Αυτός ο ιστότοπος δεν μπορεί να αποθηκεύσει πληροφορίες στο τηλέφωνό σας"</string>
+    <string name="settings_location_title">"Να επιτρέπεται ο εντοπισμός τοποθεσίας"</string>
+    <string name="settings_location_subtitle_on">"Είναι δυνατή η ανάγνωση της τοποθεσίας σας από αυτόν τον ιστότοπο"</string>
+    <string name="settings_location_subtitle_off">"Δεν είναι δυνατή η ανάγνωση της τοποθεσίας σας από αυτόν τον ιστότοπο"</string>
+    <string name="settings_remove_site">"Κατάργηση αυτού του ιστότοπου από το Gears"</string>
+    <string name="settings_empty">"Δεν έχουν οριστεί δικαιώματα"</string>
+    <string name="settings_confirmation_remove_title">"Κατάργηση αυτού του ιστότοπου"</string>
+    <string name="settings_confirmation_remove">"Θα γίνει εκκαθάριση όλων των δικαιωμάτων και τα δεδομένα που έχουν αποθηκευτεί στο τηλέφωνό σας από τον ιστότοπο, θα διαγραφούν."</string>
+    <string name="storage_notification">"Αυτός ο ιστότοπος θα αποθηκεύσει πληροφορίες στο τηλέφωνό σας."\n" Αλλάξτε αυτήν τη ρύθμιση στο μενού:"\n" Ρυθμίσεις -&gt; Ρυθμίσεις Gears"</string>
+    <string name="storage_notification_alwaysdeny">"Αυτός ο ιστότοπος δεν θα αποθηκεύσει ποτέ πληροφορίες στο τηλέφωνό σας."\n" Αλλάξτε αυτήν τη ρύθμιση στο μενού:"\n" Ρυθμίσεις -&gt; Ρυθμίσεις Gears"</string>
+    <string name="location_notification">"Αυτός ο ιστότοπος μπορεί να αποκτήσει πρόσβαση στην τρέχουσα τοποθεσία σας."\n" Αλλάξτε αυτήν τη ρύθμιση στο μενού:"\n" Ρυθμίσεις -&gt; Ρυθμίσεις Gears"</string>
+    <string name="location_notification_alwaysdeny">"Αυτός ο ιστότοπος δεν θα έχει πρόσβαση στην τοποθεσία σας."\n" Αλλάξτε αυτήν τη ρύθμιση από το μενού:"\n" Ρυθμίσεις -&gt; Ρυθμίσεις Gears"</string>
+    <string name="shortcut_notification">"Η συντόμευση δημιουργήθηκε"</string>
+    <string name="permission_button_alwaysdeny">"Να μην επιτρέπεται ποτέ"</string>
+    <string name="permission_button_allow">"OK"</string>
+    <string name="permission_button_deny">"Ακύρωση"</string>
+    <string name="shortcut_button_alwaysdeny">"Να μην επιτρέπεται ποτέ"</string>
+    <string name="shortcut_button_allow">"OK"</string>
+    <string name="shortcut_button_deny">"Ακύρωση"</string>
+    <string name="settings_button_allow">"Εφαρμογή"</string>
+    <string name="settings_button_deny">"Ακύρωση"</string>
+    <string name="filepicker_button_allow">"OK"</string>
+    <string name="filepicker_button_deny">"Ακύρωση"</string>
+    <string name="filepicker_path">"διαδρομή:"</string>
+    <string name="filepicker_no_files_selected">"Δεν έχουν επιλεχθεί αρχεία"</string>
+    <string name="filepicker_one_file_selected">"Επιλέχθηκε ένα αρχείο"</string>
+    <string name="filepicker_some_files_selected">"επιλεγμένα αρχεία"</string>
+    <string name="remove">"Κατάργηση"</string>
+    <string name="local_storage">"Τοπικός χώρος αποθήκευσης"</string>
+    <string name="allowed">"Επιτρέπεται"</string>
+    <string name="denied">"Απορρίφθηκε"</string>
+    <string name="unrecognized_dialog_message">"Άγνωστος τύπος πλαισίου διαλόγου"</string>
+    <string name="default_button">"OK"</string>
+    <string name="zoom_overview_button_text">"Επισκόπηση"</string>
+</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 5a5eb6e..fd47725 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -25,12 +25,16 @@
     <string name="username">"Nombre"</string>
     <string name="password">"Contraseña"</string>
     <string name="action">"Iniciar sesión"</string>
+    <!-- no translation found for bookmarks_search (5229596268214362873) -->
+    <skip />
     <string name="cancel">"Cancelar"</string>
     <string name="ok">"Aceptar"</string>
-    <!-- no translation found for matches_found:zero (6242659159545399963) -->
-    <!-- no translation found for matches_found:one (4352019729062956802) -->
-    <!-- no translation found for matches_found:few (5544267486978946555) -->
-    <!-- no translation found for matches_found:other (6616125067364315405) -->
+  <plurals name="matches_found">
+    <item quantity="zero">"Sin coincidencias"</item>
+    <item quantity="one">"1 coincidencia"</item>
+    <item quantity="few">"<xliff:g id="NUMBER">%d</xliff:g> coincide"</item>
+    <item quantity="other">"<xliff:g id="NUMBER">%d</xliff:g> coincide"</item>
+  </plurals>
     <string name="page_info">"Información de la página"</string>
     <string name="page_info_view">"Ver información de la página"</string>
     <string name="page_info_address">"Dirección:"</string>
@@ -118,13 +122,13 @@
     <string name="pref_content_block_popups">"Bloquear ventanas emergentes"</string>
     <string name="pref_content_javascript">"Habilitar JavaScript"</string>
     <string name="pref_content_open_in_background">"Abrir en modo subordinado"</string>
-    <string name="pref_content_open_in_background_summary">"Hay ventanas nuevas abiertas detrás de la ventana actual"</string>
+    <string name="pref_content_open_in_background_summary">"Las ventanas nuevas se abren detrás de la actual"</string>
     <string name="pref_content_homepage">"Definir página de inicio"</string>
     <string name="pref_content_autofit">"Ajuste automático de páginas"</string>
     <string name="pref_content_autofit_summary">"Formatea las páginas web para que se ajusten a la pantalla"</string>
     <string name="pref_privacy_title">"Configuración de privacidad"</string>
     <string name="pref_privacy_clear_cache">"Borrar caché"</string>
-    <string name="pref_privacy_clear_cache_summary">"Eliminar todo el contenido de la página en caché"</string>
+    <string name="pref_privacy_clear_cache_summary">"Eliminar todo el contenido de la página del caché"</string>
     <string name="pref_privacy_clear_cache_dlg">"Se borrará el caché."</string>
     <string name="pref_privacy_clear_cookies">"Borrar todos los datos de cookies"</string>
     <string name="pref_privacy_clear_cookies_summary">"Borrar todas las cookies del navegador"</string>
@@ -147,15 +151,22 @@
     <string name="pref_security_show_security_warning_summary">"Mostrar una advertencia si hay un problema con la seguridad de un sitio"</string>
     <string name="pref_security_accept_cookies">"Aceptar cookies"</string>
     <string name="pref_security_accept_cookies_summary">"Permitir que los sitios guarden y lean datos de las \"cookies\""</string>
-    <string name="pref_text_size">"Definir tamaño del texto"</string>
+    <string name="pref_text_size">"Tamaño del texto"</string>
   <string-array name="pref_text_size_choices">
-    <item>"Pequeño"</item>
+    <item>"Más pequeño"</item>
     <item>"Pequeño"</item>
     <item>"Normal"</item>
     <item>"Grande"</item>
     <item>"Enorme"</item>
   </string-array>
     <string name="pref_text_size_dialogtitle">"Tamaño del texto"</string>
+    <!-- no translation found for pref_default_zoom (8076142259097187395) -->
+    <skip />
+    <!-- no translation found for pref_default_zoom_choices:0 (549583171195154919) -->
+    <!-- no translation found for pref_default_zoom_choices:1 (5619034257768161024) -->
+    <!-- no translation found for pref_default_zoom_choices:2 (3840999588443167001) -->
+    <!-- no translation found for pref_default_zoom_dialogtitle (6095974367125109021) -->
+    <skip />
     <string name="pref_extras_title">"Configuración avanzada"</string>
     <string name="pref_extras_gears_enable">"Habilitar Gears"</string>
     <string name="pref_extras_gears_enable_summary">"Aplicaciones que amplían la funcionalidad del navegador"</string>
@@ -168,7 +179,8 @@
     <string name="pref_extras_reset_default_dlg">"Se borrarán todos los datos del navegador y la configuración volverá a los valores predeterminados."</string>
     <string name="pref_extras_reset_default_dlg_title">"Restablecer a los valores predeterminados"</string>
     <string name="pref_development_title">"Depurar"</string>
-    <string name="pref_default_text_encoding">"Definir codificación de texto"</string>
+    <!-- no translation found for pref_default_text_encoding (5742965543955558478) -->
+    <skip />
   <string-array name="pref_default_text_encoding_choices">
     <item>"Latino-1 (ISO-8859-1)"</item>
     <item>"Unicode (UTF-8)"</item>
@@ -193,6 +205,8 @@
     <string name="no_database">"No hay base de datos"</string>
     <string name="search_hint">"Escribe la dirección web"</string>
     <string name="search_button_text">"Ir"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
     <string name="attention">"Atención"</string>
     <string name="popup_window_attempt">"Este sitio está intentando abrir una ventana emergente."</string>
     <string name="allow">"Permitir"</string>
@@ -220,7 +234,7 @@
     <string name="download_sdcard_busy_dlg_title">"Tarjeta SD no disponible"</string>
     <string name="download_sdcard_busy_dlg_msg">"La tarjeta SD está llena. Para permitir descargas, selecciona \"Desactivar almacenamiento USB\" en la notificación."</string>
     <string name="download_no_application">"No se encuentra una aplicación para abrir este archivo."</string>
-    <string name="retry">"¿Intentar nuevamente"</string>
+    <string name="retry">"Intentar nuevamente"</string>
     <string name="no_downloads">"El historial de descarga está vacío."</string>
     <string name="download_error">"Descarga incorrecta."</string>
     <string name="download_success">"<xliff:g id="FILE">%s</xliff:g> Descarga completa."</string>
@@ -234,10 +248,10 @@
     <string name="download_length_required">"No es posible realizar la descarga. No puede determinarse el tamaño del elemento."</string>
     <string name="download_precondition_failed">"Descarga interrumpida. No se puede retomar."</string>
     <string name="activity_instrumentation_test_runner">"Ejecutor de pruebas del navegador"</string>
-    <string name="permlab_readHistoryBookmarks">"leer historial y marcadores del navegador"</string>
-    <string name="permdesc_readHistoryBookmarks">"Permite a la aplicación leer todas las URL que ha visitado el navegador y todos los marcadores del navegador."</string>
-    <string name="permlab_writeHistoryBookmarks">"escribir historial y marcadores del navegador"</string>
-    <string name="permdesc_writeHistoryBookmarks">"Permite a una aplicación modificar el historial y los marcadores del navegador almacenados en tu teléfono. Las aplicaciones maliciosas pueden utilizarlo para borrar o modificar tus datos."</string>
+    <!-- no translation found for homepage_base (7888126987935305566) -->
+    <skip />
+    <!-- no translation found for search_the_web (6046130189241962337) -->
+    <skip />
     <string name="query_data_prompt">"Permitir almacenamiento"</string>
     <string name="query_data_message">"Este sitio web desea almacenar información en tu teléfono."</string>
     <string name="location_prompt">"Acceder a tu ubicación"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 0ba9501..924e2ea 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -25,6 +25,7 @@
     <string name="username">"Nombre"</string>
     <string name="password">"Contraseña"</string>
     <string name="action">"Acceder"</string>
+    <string name="bookmarks_search">"Navegador"</string>
     <string name="cancel">"Cancelar"</string>
     <string name="ok">"Aceptar"</string>
   <plurals name="matches_found">
@@ -117,12 +118,12 @@
     <string name="pref_content_title">"Configuración de contenido de la página"</string>
     <string name="pref_content_load_images">"Cargar imágenes"</string>
     <string name="pref_content_load_images_summary">"Mostrar imágenes en páginas web"</string>
-    <string name="pref_content_block_popups">"Bloquear ventanas emergentes"</string>
+    <string name="pref_content_block_popups">"Bloquear ventanas emer."</string>
     <string name="pref_content_javascript">"Habilitar JavaScript"</string>
     <string name="pref_content_open_in_background">"Abrir en segundo plano"</string>
     <string name="pref_content_open_in_background_summary">"Nuevas ventanas abiertas detrás de la actual"</string>
     <string name="pref_content_homepage">"Establecer página principal"</string>
-    <string name="pref_content_autofit">"Ajustar páginas automáticamente"</string>
+    <string name="pref_content_autofit">"Ajustar páginas automát."</string>
     <string name="pref_content_autofit_summary">"Configurar las páginas web para ajustarlas a la pantalla"</string>
     <string name="pref_privacy_title">"Configuración de privacidad"</string>
     <string name="pref_privacy_clear_cache">"Borrar caché"</string>
@@ -143,13 +144,13 @@
     <string name="pref_security_title">"Configuración de seguridad"</string>
     <string name="pref_security_remember_passwords">"Recordar contraseñas"</string>
     <string name="pref_security_remember_passwords_summary">"Guardar nombres de usuario y contraseñas de sitios web"</string>
-    <string name="pref_security_save_form_data">"Recordar datos de formulario"</string>
+    <string name="pref_security_save_form_data">"Recordar formularios"</string>
     <string name="pref_security_save_form_data_summary">"Recordar datos introducidos en formularios"</string>
-    <string name="pref_security_show_security_warning">"Mostrar advertencias de seguridad"</string>
+    <string name="pref_security_show_security_warning">"Mostrar advertencias"</string>
     <string name="pref_security_show_security_warning_summary">"Mostrar advertencia si hay algún problema con la seguridad del sitio"</string>
     <string name="pref_security_accept_cookies">"Aceptar cookies"</string>
     <string name="pref_security_accept_cookies_summary">"Permitir que los sitios guarden y lean datos de cookies"</string>
-    <string name="pref_text_size">"Establecer tamaño de texto"</string>
+    <string name="pref_text_size">"Tamaño de texto"</string>
   <string-array name="pref_text_size_choices">
     <item>"Muy pequeño"</item>
     <item>"Pequeño"</item>
@@ -158,6 +159,13 @@
     <item>"Enorme"</item>
   </string-array>
     <string name="pref_text_size_dialogtitle">"Tamaño de texto"</string>
+    <string name="pref_default_zoom">"Zoom predeterminado"</string>
+  <string-array name="pref_default_zoom_choices">
+    <item>"Lejos"</item>
+    <item>"Media distancia"</item>
+    <item>"Cerca"</item>
+  </string-array>
+    <string name="pref_default_zoom_dialogtitle">"Zoom predeterminado"</string>
     <string name="pref_extras_title">"Configuración avanzada"</string>
     <string name="pref_extras_gears_enable">"Habilitar Gears"</string>
     <string name="pref_extras_gears_enable_summary">"Aplicaciones que amplían las funciones del navegador"</string>
@@ -165,12 +173,12 @@
     <string name="pref_plugin_installed">"Lista de complementos"</string>
     <string name="pref_plugin_installed_empty_list">"Ningún complemento instalado"</string>
     <string name="pref_extras_gears_settings_summary">"Aplicaciones que amplían las funciones del navegador"</string>
-    <string name="pref_extras_reset_default">"Restablecer valores predeterminados"</string>
+    <string name="pref_extras_reset_default">"Restablecer valores pred."</string>
     <string name="pref_extras_reset_default_summary">"Borrar todos los datos del navegador y restablecer la configuración predeterminada"</string>
     <string name="pref_extras_reset_default_dlg">"Se borrarán todos los datos del navegador y se restablecerá la configuración predeterminada."</string>
     <string name="pref_extras_reset_default_dlg_title">"Restablecer valores predeterminados"</string>
     <string name="pref_development_title">"Depurar"</string>
-    <string name="pref_default_text_encoding">"Establecer codificación de texto"</string>
+    <string name="pref_default_text_encoding">"Codificación de texto"</string>
   <string-array name="pref_default_text_encoding_choices">
     <item>"Latín-1 (ISO-8859-1)"</item>
     <item>"Unicode (UTF-8)"</item>
@@ -195,6 +203,8 @@
     <string name="no_database">"No hay ninguna base de datos."</string>
     <string name="search_hint">"Introduce la dirección web."</string>
     <string name="search_button_text">"Ir"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
     <string name="attention">"Atención"</string>
     <string name="popup_window_attempt">"Este sitio está intentando mostrar una ventana emergente."</string>
     <string name="allow">"Permitir"</string>
@@ -236,10 +246,8 @@
     <string name="download_length_required">"No se puede realizar la descarga, porque no es posible determinar el tamaño del elemento."</string>
     <string name="download_precondition_failed">"La descarga se ha interrumpido y no se puede reanudar."</string>
     <string name="activity_instrumentation_test_runner">"Realizador de pruebas del navegador"</string>
-    <string name="permlab_readHistoryBookmarks">"leer información de marcadores y del historial del navegador"</string>
-    <string name="permdesc_readHistoryBookmarks">"Permite que la aplicación lea todas las URL que ha visitado el navegador y todos sus marcadores."</string>
-    <string name="permlab_writeHistoryBookmarks">"escribir en marcadores y en el historial del navegador"</string>
-    <string name="permdesc_writeHistoryBookmarks">"Permite que una aplicación modifique la información de los marcadores o del historial del navegador almacenada en el teléfono. Las aplicaciones malintencionadas pueden utilizar este permiso para borrar o modificar los datos del navegador."</string>
+    <string name="homepage_base">"http://www.google.com/m?client=ms-{CID}"</string>
+    <string name="search_the_web">"Buscar en la Web"</string>
     <string name="query_data_prompt">"Permitir almacenamiento"</string>
     <string name="query_data_message">"Este sitio web desea almacenar información en el teléfono."</string>
     <string name="location_prompt">"Acceso a tu ubicación"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 4be49ee..9709d07 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -25,6 +25,7 @@
     <string name="username">"Nom"</string>
     <string name="password">"Mot de passe"</string>
     <string name="action">"Se connecter"</string>
+    <string name="bookmarks_search">"Navigateur"</string>
     <string name="cancel">"Annuler"</string>
     <string name="ok">"OK"</string>
   <plurals name="matches_found">
@@ -122,7 +123,7 @@
     <string name="pref_content_open_in_background">"Ouvrir en arrière-plan"</string>
     <string name="pref_content_open_in_background_summary">"Les nouvelles fenêtres s\'ouvrent derrière la fenêtre actuelle"</string>
     <string name="pref_content_homepage">"Configurer la page d\'accueil"</string>
-    <string name="pref_content_autofit">"Redimensionner les pages"</string>
+    <string name="pref_content_autofit">"Redimensionner"</string>
     <string name="pref_content_autofit_summary">"Configurer les pages Web pour qu\'elles s\'ajustent à l\'écran"</string>
     <string name="pref_privacy_title">"Paramètres de confidentialité"</string>
     <string name="pref_privacy_clear_cache">"Effacer le cache"</string>
@@ -134,22 +135,22 @@
     <string name="pref_privacy_clear_history">"Effacer l\'historique"</string>
     <string name="pref_privacy_clear_history_summary">"Effacer l\'historique du navigateur"</string>
     <string name="pref_privacy_clear_history_dlg">"L\'historique du navigateur sera effacé."</string>
-    <string name="pref_privacy_clear_form_data">"Effacer données formulaire"</string>
+    <string name="pref_privacy_clear_form_data">"Eff. données formulaires"</string>
     <string name="pref_privacy_clear_form_data_summary">"Effacer toutes les données de formulaire enregistrées"</string>
     <string name="pref_privacy_clear_form_data_dlg">"Toutes les données de formulaire enregistrées seront effacées."</string>
     <string name="pref_privacy_clear_passwords">"Effacer les mots de passe"</string>
     <string name="pref_privacy_clear_passwords_summary">"Effacer tous les mots de passe enregistrés"</string>
     <string name="pref_privacy_clear_passwords_dlg">"Tous les mots de passe enregistrés seront effacés."</string>
     <string name="pref_security_title">"Paramètres de sécurité"</string>
-    <string name="pref_security_remember_passwords">"Mémoriser les mots de passe"</string>
+    <string name="pref_security_remember_passwords">"Mém. mots de passe"</string>
     <string name="pref_security_remember_passwords_summary">"Enregistrer les noms d\'utilisateur et les mots de passe pour les sites Web"</string>
-    <string name="pref_security_save_form_data">"Mémoriser données formulaire"</string>
-    <string name="pref_security_save_form_data_summary">"Mémoriser les données saisies dans les formulaires pour les utiliser ultérieurement"</string>
-    <string name="pref_security_show_security_warning">"Avertissements de sécurité"</string>
+    <string name="pref_security_save_form_data">"Mém. données formulaire"</string>
+    <string name="pref_security_save_form_data_summary">"Mémoriser les données saisies dans les formulaires pour les réutiliser"</string>
+    <string name="pref_security_show_security_warning">"Avertiss. de sécurité"</string>
     <string name="pref_security_show_security_warning_summary">"Afficher un avertissement en cas de problème de sécurité d\'un site"</string>
     <string name="pref_security_accept_cookies">"Accepter les cookies"</string>
     <string name="pref_security_accept_cookies_summary">"Autoriser les sites à enregistrer et lire les données des cookies"</string>
-    <string name="pref_text_size">"Définir la taille du texte"</string>
+    <string name="pref_text_size">"Taille de la police"</string>
   <string-array name="pref_text_size_choices">
     <item>"Très petite"</item>
     <item>"Petite"</item>
@@ -158,6 +159,13 @@
     <item>"Très grande"</item>
   </string-array>
     <string name="pref_text_size_dialogtitle">"Taille de la police"</string>
+    <string name="pref_default_zoom">"Zoom par défaut"</string>
+  <string-array name="pref_default_zoom_choices">
+    <item>"Éloigné"</item>
+    <item>"Moyen"</item>
+    <item>"Proche"</item>
+  </string-array>
+    <string name="pref_default_zoom_dialogtitle">"Zoom par défaut"</string>
     <string name="pref_extras_title">"Paramètres avancés"</string>
     <string name="pref_extras_gears_enable">"Activer Gears"</string>
     <string name="pref_extras_gears_enable_summary">"Applications étendant les fonctionnalités du navigateur"</string>
@@ -170,7 +178,7 @@
     <string name="pref_extras_reset_default_dlg">"Toutes les données du navigateur seront effacées et les paramètres par défaut rétablis."</string>
     <string name="pref_extras_reset_default_dlg_title">"Rétablir les valeurs par défaut"</string>
     <string name="pref_development_title">"Débogage"</string>
-    <string name="pref_default_text_encoding">"Définir le codage du texte"</string>
+    <string name="pref_default_text_encoding">"Codage du texte"</string>
   <string-array name="pref_default_text_encoding_choices">
     <item>"Latin-1 (ISO-8859-1)"</item>
     <item>"Unicode (UTF-8)"</item>
@@ -195,6 +203,8 @@
     <string name="no_database">"Aucune base de données !"</string>
     <string name="search_hint">"Saisir l\'adresse Web"</string>
     <string name="search_button_text">"Aller"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
     <string name="attention">"Attention"</string>
     <string name="popup_window_attempt">"Le site tente d\'ouvrir une fenêtre contextuelle."</string>
     <string name="allow">"Autoriser"</string>
@@ -236,21 +246,19 @@
     <string name="download_length_required">"Téléchargement impossible. La taille de l\'élément n\'a pas pu être déterminée."</string>
     <string name="download_precondition_failed">"Téléchargement interrompu. Impossible de reprendre le téléchargement."</string>
     <string name="activity_instrumentation_test_runner">"Testeur de navigateur"</string>
-    <string name="permlab_readHistoryBookmarks">"Lecture de l\'historique du navigateur et des favoris"</string>
-    <string name="permdesc_readHistoryBookmarks">"Permet à l\'application de lire toutes les URL visitées par le navigateur et tous les favoris."</string>
-    <string name="permlab_writeHistoryBookmarks">"Enregistrement de l\'historique du navigateur et des favoris"</string>
-    <string name="permdesc_writeHistoryBookmarks">"Permet à une application de modifier l\'historique du navigateur ou les favoris enregistrés sur votre téléphone. Des applications malveillantes peuvent utiliser cette fonction pour effacer ou modifier les données de votre navigateur."</string>
+    <string name="homepage_base">"http://www.google.com/m?client=ms-{CID}"</string>
+    <string name="search_the_web">"Rechercher sur le Web"</string>
     <string name="query_data_prompt">"Autoriser le stockage"</string>
     <string name="query_data_message">"Ce site souhaite enregistrer des informations sur votre téléphone."</string>
-    <string name="location_prompt">"Afficher votre position"</string>
+    <string name="location_prompt">"Afficher ma position"</string>
     <string name="location_message">"Ce site souhaite afficher votre position."</string>
     <string name="shortcut_prompt">"Créer un raccourci"</string>
-    <string name="shortcut_message">"Le site souhaite créer un raccourci vers cette page sur votre page d\'accueil."</string>
+    <string name="shortcut_message">"Le site souhaite créer un raccourci vers cette page sur votre écran d\'accueil."</string>
     <string name="settings_message">"Le tableau ci-dessous indique les fonctions que vous avez autorisées pour chaque site ayant tenté d\'utiliser Google Gears."</string>
     <string name="filepicker_message">"Sélecteur de fichier"</string>
     <string name="image_message">"Image sélectionnée"</string>
     <string name="settings_title">"Paramètres Google Gears"</string>
-    <string name="privacy_policy">"Lisez les règles de confidentialité du site pour voir comment votre emplacement sera utilisé."</string>
+    <string name="privacy_policy">"Lisez les règles de confidentialité du site pour savoir comment les informations sur votre localisation seront utilisées."</string>
     <string name="settings_storage_title">"Autoriser le stockage local"</string>
     <string name="settings_storage_subtitle_on">"Ce site peut enregistrer des informations sur votre téléphone."</string>
     <string name="settings_storage_subtitle_off">"Ce site ne peut enregistrer aucune information sur votre téléphone."</string>
@@ -263,7 +271,7 @@
     <string name="settings_confirmation_remove">"Toutes les autorisations seront effacées et toutes les données enregistrées par le site sur votre téléphone seront supprimées."</string>
     <string name="storage_notification">"Ce site enregistrera des informations sur votre téléphone."\n" Modifiez ce paramètre dans :"\n" Paramètres -&gt; Paramètres Gears."</string>
     <string name="storage_notification_alwaysdeny">"Ce site n\'enregistrera jamais aucune information sur votre téléphone."\n" Modifiez ce paramètre dans :"\n" Paramètres -&gt; Paramètres Gears."</string>
-    <string name="location_notification">"Ce site peut afficher votre emplacement actuel. "\n" Modifiez ce paramètre dans :"\n" Paramètres -&gt; Paramètres Gears."</string>
+    <string name="location_notification">"Ce site peut afficher votre position actuelle. "\n" Modifiez ce paramètre dans :"\n" Paramètres -&gt; Paramètres Gears."</string>
     <string name="location_notification_alwaysdeny">"Ce site n\'affichera pas votre position actuelle."\n" Modifiez ce paramètre dans :"\n" Paramètres -&gt; Paramètres Gears."</string>
     <string name="shortcut_notification">"Raccourci créé"</string>
     <string name="permission_button_alwaysdeny">"Ne jamais autoriser"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index d441fba..7b8dbb2 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -25,6 +25,7 @@
     <string name="username">"Nome"</string>
     <string name="password">"Password"</string>
     <string name="action">"Accedi"</string>
+    <string name="bookmarks_search">"Browser"</string>
     <string name="cancel">"Annulla"</string>
     <string name="ok">"OK"</string>
   <plurals name="matches_found">
@@ -145,11 +146,11 @@
     <string name="pref_security_remember_passwords_summary">"Salva nomi utente e password per i siti web"</string>
     <string name="pref_security_save_form_data">"Memorizza dati moduli"</string>
     <string name="pref_security_save_form_data_summary">"Memorizza i dati che digito nei moduli per usi futuri"</string>
-    <string name="pref_security_show_security_warning">"Mostra avvisi di protezione"</string>
+    <string name="pref_security_show_security_warning">"Mostra avvisi protezione"</string>
     <string name="pref_security_show_security_warning_summary">"Mostra un avviso se esiste un problema di sicurezza con un sito"</string>
     <string name="pref_security_accept_cookies">"Accetta cookie"</string>
     <string name="pref_security_accept_cookies_summary">"Consenti ai siti di salvare e leggere i dati \"cookie\""</string>
-    <string name="pref_text_size">"Imposta dim. testo"</string>
+    <string name="pref_text_size">"Dimensioni testo"</string>
   <string-array name="pref_text_size_choices">
     <item>"Molto piccolo"</item>
     <item>"Piccolo"</item>
@@ -158,6 +159,13 @@
     <item>"Molto grande"</item>
   </string-array>
     <string name="pref_text_size_dialogtitle">"Dimensioni testo"</string>
+    <string name="pref_default_zoom">"Zoom predefinito"</string>
+  <string-array name="pref_default_zoom_choices">
+    <item>"Lontano"</item>
+    <item>"Medio"</item>
+    <item>"Chiudi"</item>
+  </string-array>
+    <string name="pref_default_zoom_dialogtitle">"Zoom predefinito"</string>
     <string name="pref_extras_title">"Impostazioni avanzate"</string>
     <string name="pref_extras_gears_enable">"Attiva Gears"</string>
     <string name="pref_extras_gears_enable_summary">"Applicazioni che estendono le funzionalità del browser"</string>
@@ -170,7 +178,7 @@
     <string name="pref_extras_reset_default_dlg">"Verranno cancellati tutti i dati del browser e ripristinate le impostazioni predefinite."</string>
     <string name="pref_extras_reset_default_dlg_title">"Ripristina valori predefiniti"</string>
     <string name="pref_development_title">"Debug"</string>
-    <string name="pref_default_text_encoding">"Imposta codifica testo"</string>
+    <string name="pref_default_text_encoding">"Codifica testo"</string>
   <string-array name="pref_default_text_encoding_choices">
     <item>"Latin-1 (ISO-8859-1)"</item>
     <item>"Unicode (UTF-8)"</item>
@@ -195,6 +203,8 @@
     <string name="no_database">"Nessun database"</string>
     <string name="search_hint">"Digita l\'indirizzo web"</string>
     <string name="search_button_text">"Vai"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
     <string name="attention">"Attenzione"</string>
     <string name="popup_window_attempt">"Il sito sta tentando di aprire una finestra pop-up."</string>
     <string name="allow">"Consenti"</string>
@@ -236,10 +246,8 @@
     <string name="download_length_required">"Impossibile effettuare il download. Impossibile determinare le dimensioni dell\'elemento."</string>
     <string name="download_precondition_failed">"Download interrotto. Impossibile ripristinarlo."</string>
     <string name="activity_instrumentation_test_runner">"Browser Test Runner"</string>
-    <string name="permlab_readHistoryBookmarks">"lettura cronologia e segnalibri del browser"</string>
-    <string name="permdesc_readHistoryBookmarks">"Consente all\'applicazione di leggere tutti gli URL visitati e tutti i segnalibri del browser."</string>
-    <string name="permlab_writeHistoryBookmarks">"creazione cronologia e segnalibri del browser"</string>
-    <string name="permdesc_writeHistoryBookmarks">"Consente a un\'applicazione di modificare la cronologia o i segnalibri del browser memorizzati sul telefono. Le applicazioni dannose possono sfruttare questa possibilità per cancellare o modificare i dati del browser."</string>
+    <string name="homepage_base">"http://www.google.com/m?client=ms-{CID}"</string>
+    <string name="search_the_web">"Cerca nel Web"</string>
     <string name="query_data_prompt">"Consenti archiviazione"</string>
     <string name="query_data_message">"Il sito web vorrebbe memorizzare informazioni sul cellulare."</string>
     <string name="location_prompt">"Accedi alla tua posizione"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index be64425..8509f83 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -25,6 +25,8 @@
     <string name="username">"名前"</string>
     <string name="password">"パスワード"</string>
     <string name="action">"ログイン"</string>
+    <!-- no translation found for bookmarks_search (5229596268214362873) -->
+    <skip />
     <string name="cancel">"キャンセル"</string>
     <string name="ok">"OK"</string>
   <plurals name="matches_found">
@@ -65,10 +67,10 @@
     <string name="name">"名前"</string>
     <string name="http">"http://"</string>
     <string name="save_to_bookmarks">"ブックマーク"</string>
-    <string name="edit_bookmark">"ブックマークを編集"</string>
-    <string name="create_shortcut_bookmark">"ショートカットをホームに追加"</string>
+    <string name="edit_bookmark">"編集"</string>
+    <string name="create_shortcut_bookmark">"ショートカットを作成"</string>
     <string name="open_bookmark">"開く"</string>
-    <string name="remove_bookmark">"ブックマークを削除"</string>
+    <string name="remove_bookmark">"削除"</string>
     <string name="remove_history_item">"履歴から消去"</string>
     <string name="bookmark_saved">"ブックマークを保存しました。"</string>
     <string name="bookmark_needs_title">"名前を指定してください。"</string>
@@ -95,7 +97,7 @@
     <string name="bookmarks">"ブックマーク"</string>
     <string name="shortcut_bookmark">"ブックマーク"</string>
     <string name="history">"履歴"</string>
-    <string name="menu_view_download">"ダウンロード"</string>
+    <string name="menu_view_download">"ダウンロード履歴"</string>
     <string name="share_page">"ページを共有"</string>
     <string name="contextmenu_openlink">"開く"</string>
     <string name="contextmenu_openlink_newwindow">"新しいウィンドウで開く"</string>
@@ -103,7 +105,7 @@
     <string name="contextmenu_savelink">"リンクを保存"</string>
     <string name="contextmenu_sharelink">"リンクを共有"</string>
     <string name="contextmenu_copy">"コピー"</string>
-    <string name="contextmenu_copylink">"リンクのURLをコピー"</string>
+    <string name="contextmenu_copylink">"URLをコピー"</string>
     <string name="contextmenu_download_image">"画像を保存"</string>
     <string name="contextmenu_view_image">"画像を表示"</string>
     <string name="contextmenu_dial_dot">"発信..."</string>
@@ -149,7 +151,7 @@
     <string name="pref_security_show_security_warning_summary">"サイトの安全性に問題がある場合に警告を表示する"</string>
     <string name="pref_security_accept_cookies">"Cookieを受け入れる"</string>
     <string name="pref_security_accept_cookies_summary">"サイトによるCookieの保存と読み取りを許可する"</string>
-    <string name="pref_text_size">"文字サイズを選択"</string>
+    <string name="pref_text_size">"テキストサイズ"</string>
   <string-array name="pref_text_size_choices">
     <item>"最小"</item>
     <item>"小"</item>
@@ -158,6 +160,13 @@
     <item>"最大"</item>
   </string-array>
     <string name="pref_text_size_dialogtitle">"文字サイズ"</string>
+    <!-- no translation found for pref_default_zoom (8076142259097187395) -->
+    <skip />
+    <!-- no translation found for pref_default_zoom_choices:0 (549583171195154919) -->
+    <!-- no translation found for pref_default_zoom_choices:1 (5619034257768161024) -->
+    <!-- no translation found for pref_default_zoom_choices:2 (3840999588443167001) -->
+    <!-- no translation found for pref_default_zoom_dialogtitle (6095974367125109021) -->
+    <skip />
     <string name="pref_extras_title">"詳細設定"</string>
     <string name="pref_extras_gears_enable">"Gearsを有効にする"</string>
     <string name="pref_extras_gears_enable_summary">"ブラウザの機能拡張を許可する"</string>
@@ -170,7 +179,8 @@
     <string name="pref_extras_reset_default_dlg">"ブラウザデータをすべて消去して初期設定に戻します。"</string>
     <string name="pref_extras_reset_default_dlg_title">"初期設定にリセット"</string>
     <string name="pref_development_title">"デバッグ"</string>
-    <string name="pref_default_text_encoding">"エンコードを選択"</string>
+    <!-- no translation found for pref_default_text_encoding (5742965543955558478) -->
+    <skip />
   <string-array name="pref_default_text_encoding_choices">
     <item>"Latin-1 (ISO-8859-1)"</item>
     <item>"Unicode (UTF-8)"</item>
@@ -179,7 +189,7 @@
     <item>"日本語 (EUC-JP)"</item>
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle">"テキストエンコード"</string>
-    <string name="pref_default_text_encoding_default">"Latin-1"</string>
+    <string name="pref_default_text_encoding_default">"SHIFT_JIS"</string>
     <string name="browserFrameRedirect">"リダイレクト"</string>
     <string name="browserFrame307Post">"このウェブページはリダイレクトされます。入力したフォームデータをリダイレクト先に送信しますか？"</string>
     <string name="browserFrameNetworkErrorLabel">"データアクセスエラー"</string>
@@ -195,6 +205,8 @@
     <string name="no_database">"データベースがありません。"</string>
     <string name="search_hint">"ウェブアドレスを入力"</string>
     <string name="search_button_text">"移動"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
     <string name="attention">"注意"</string>
     <string name="popup_window_attempt">"このサイトはポップアップウィンドウを開こうとしています。"</string>
     <string name="allow">"許可"</string>
@@ -202,7 +214,7 @@
     <string name="too_many_windows_dialog_title">"ウィンドウの数が最大です"</string>
     <string name="too_many_windows_dialog_message">"既にウィンドウの数が最大なので、新しいウィンドウを開けません。"</string>
     <string name="too_many_subwindows_dialog_title">"ポップアップが既に開いています"</string>
-    <string name="too_many_subwindows_dialog_message">"一度に開けるポップアップウィンドウは1つだけなので、新しいポップアップウィンドウを開けませんでした。"</string>
+    <string name="too_many_subwindows_dialog_message">"一度に1つのポップアップウィンドウしか開けません。"</string>
     <string name="download_title">"ダウンロード履歴"</string>
     <string name="download_unknown_filename">"&lt;不明&gt;"</string>
     <string name="download_menu_open">"開く"</string>
@@ -236,10 +248,10 @@
     <string name="download_length_required">"項目のサイズを特定できないため、ダウンロードできません。"</string>
     <string name="download_precondition_failed">"ダウンロードが中断されました。再開できません。"</string>
     <string name="activity_instrumentation_test_runner">"Browser Test Runner"</string>
-    <string name="permlab_readHistoryBookmarks">"ブラウザの履歴とブックマークの読み取り"</string>
-    <string name="permdesc_readHistoryBookmarks">"ブラウザでアクセスしたすべてのURLとブックマークの読み取りをアプリケーションに許可します。"</string>
-    <string name="permlab_writeHistoryBookmarks">"ブラウザの履歴とブックマークの書き込み"</string>
-    <string name="permdesc_writeHistoryBookmarks">"携帯電話に保存されたブラウザの履歴やブックマークの変更をアプリケーションに許可します。これにより悪意のあるアプリケーションが、ブラウザのデータを消去または変更する恐れがあります。"</string>
+    <!-- no translation found for homepage_base (7888126987935305566) -->
+    <skip />
+    <!-- no translation found for search_the_web (6046130189241962337) -->
+    <skip />
     <string name="query_data_prompt">"保存を許可"</string>
     <string name="query_data_message">"このサイトは携帯電話に情報を保存しようとしています。"</string>
     <string name="location_prompt">"現在地情報にアクセス"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 60c1975..5276664 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -20,11 +20,13 @@
     <string name="tab_most_visited">"최다 방문 웹사이트"</string>
     <string name="tab_history">"기록"</string>
     <string name="added_to_bookmarks">"북마크에 추가되었습니다."</string>
-    <string name="removed_from_bookmarks">"북마크에서 삭제"</string>
+    <string name="removed_from_bookmarks">"북마크에서 삭제됨"</string>
     <string name="sign_in_to">"<xliff:g id="HOSTNAME">%s1</xliff:g> \'<xliff:g id="REALM">%s2</xliff:g>\'에 로그인"</string>
     <string name="username">"이름"</string>
     <string name="password">"비밀번호"</string>
     <string name="action">"로그인"</string>
+    <!-- no translation found for bookmarks_search (5229596268214362873) -->
+    <skip />
     <string name="cancel">"취소"</string>
     <string name="ok">"확인"</string>
   <plurals name="matches_found">
@@ -40,20 +42,20 @@
     <string name="ssl_continue">"계속"</string>
     <string name="security_warning">"보안 경고"</string>
     <string name="view_certificate">"인증서 보기"</string>
-    <string name="ssl_untrusted">"신뢰된 인증기관에서 발급된 인증서가 아닙니다."</string>
-    <string name="ssl_mismatch">"사이트의 이름이 인증서에 있는 이름과 일치하지 않습니다."</string>
-    <string name="ssl_expired">"만료된 인증서입니다."</string>
-    <string name="ssl_not_yet_valid">"아직 유효하지 않은 인증서입니다."</string>
+    <string name="ssl_untrusted">"신뢰할 수 있는 인증 기관에서 발급한 인증서가 아닙니다."</string>
+    <string name="ssl_mismatch">"사이트 이름이 인증서에 있는 것과 일치하지 않습니다."</string>
+    <string name="ssl_expired">"인증서가 만료되었습니다."</string>
+    <string name="ssl_not_yet_valid">"인증서가 아직 유효하지 않습니다."</string>
     <string name="ssl_certificate">"보안 인증서"</string>
     <string name="ssl_certificate_is_valid">"유효한 인증서입니다."</string>
     <string name="issued_to">"발급 대상:"</string>
     <string name="common_name">"일반 이름:"</string>
     <string name="org_name">"조직:"</string>
     <string name="org_unit">"조직 구성 단위:"</string>
-    <string name="issued_by">"발급자:"</string>
+    <string name="issued_by">"발급 기관:"</string>
     <string name="validity_period">"유효성:"</string>
-    <string name="issued_on">"발급일:"</string>
-    <string name="expires_on">"만료일:"</string>
+    <string name="issued_on">"발급 날짜:"</string>
+    <string name="expires_on">"만료 날짜:"</string>
     <string name="retrieving_creds_dlg_msg">"로그인 세부정보를 가져오는 중..."</string>
     <string name="stopping">"중지하는 중..."</string>
     <string name="stop">"중지"</string>
@@ -69,12 +71,12 @@
     <string name="create_shortcut_bookmark">"홈에 바로가기 추가"</string>
     <string name="open_bookmark">"열기"</string>
     <string name="remove_bookmark">"북마크 삭제"</string>
-    <string name="remove_history_item">"기록에서 제거"</string>
+    <string name="remove_history_item">"기록에서 삭제"</string>
     <string name="bookmark_saved">"북마크에 저장되었습니다."</string>
-    <string name="bookmark_needs_title">"북마크에는 이름이 있어야 합니다."</string>
-    <string name="bookmark_needs_url">"북마크에는 위치가 있어야 합니다."</string>
-    <string name="empty_bookmark">"빈 북마크는 만들 수 없습니다."</string>
-    <string name="bookmark_url_not_valid">"URL이 올바르지 않습니다."</string>
+    <string name="bookmark_needs_title">"북마크의 이름을 입력해야 합니다."</string>
+    <string name="bookmark_needs_url">"북마크의 위치를 입력해야 합니다."</string>
+    <string name="empty_bookmark">"빈 북마크를 만들 수 없습니다."</string>
+    <string name="bookmark_url_not_valid">"URL이 유효하지 않습니다."</string>
     <string name="delete_bookmark">"삭제"</string>
     <string name="bookmark_page">"마지막으로 본 페이지를 북마크 설정"</string>
     <string name="current_page">"북마크할 페이지 "</string>
@@ -82,10 +84,10 @@
     <string name="open_in_new_window">"새 창에서 열기"</string>
     <string name="new_window">"새 창"</string>
     <string name="goto_dot">"실행"</string>
-    <string name="find_dot">"검색 페이지"</string>
+    <string name="find_dot">"페이지에서 찾기"</string>
     <string name="select_dot">"텍스트 선택"</string>
-    <string name="view_tabs">"창 세부정보"</string>
-    <string name="view_tabs_condensed">"Windows"</string>
+    <string name="view_tabs">"창 전체보기"</string>
+    <string name="view_tabs_condensed">"창"</string>
     <string name="tab_picker_title">"현재 창"</string>
     <string name="tab_picker_view_tab">"보기"</string>
     <string name="tab_picker_new_tab">"새 창"</string>
@@ -99,7 +101,7 @@
     <string name="share_page">"페이지 공유"</string>
     <string name="contextmenu_openlink">"열기"</string>
     <string name="contextmenu_openlink_newwindow">"새 창에서 열기"</string>
-    <string name="contextmenu_bookmark_thislink">"북마크 링크"</string>
+    <string name="contextmenu_bookmark_thislink">"링크를 북마크에 추가"</string>
     <string name="contextmenu_savelink">"링크 저장"</string>
     <string name="contextmenu_sharelink">"링크 공유"</string>
     <string name="contextmenu_copy">"복사"</string>
@@ -111,20 +113,20 @@
     <string name="contextmenu_send_mail">"이메일 보내기"</string>
     <string name="contextmenu_map">"지도"</string>
     <string name="clear">"지우기"</string>
-    <string name="replace">"기존 URL"</string>
+    <string name="replace">"교체"</string>
     <string name="browser_bookmarks_page_bookmarks_text">"북마크"</string>
     <string name="menu_preferences">"설정"</string>
-    <string name="pref_content_title">"페이지 내용 설정"</string>
+    <string name="pref_content_title">"페이지 콘텐츠 설정"</string>
     <string name="pref_content_load_images">"이미지 로드"</string>
     <string name="pref_content_load_images_summary">"웹페이지에 이미지 표시"</string>
     <string name="pref_content_block_popups">"팝업 창 차단"</string>
-    <string name="pref_content_javascript">"자바스크립트 활성화"</string>
-    <string name="pref_content_open_in_background">"배경에서 열기"</string>
-    <string name="pref_content_open_in_background_summary">"새 창이 현재 창 뒤쪽에 열립니다."</string>
+    <string name="pref_content_javascript">"자바스크립트 사용"</string>
+    <string name="pref_content_open_in_background">"백그라운드에서 열기"</string>
+    <string name="pref_content_open_in_background_summary">"현재 창 뒤에 새 창이 열림"</string>
     <string name="pref_content_homepage">"홈페이지 설정"</string>
     <string name="pref_content_autofit">"페이지 자동 맞춤"</string>
-    <string name="pref_content_autofit_summary">"화면에 맞게 웹페이지의 형식 조정"</string>
-    <string name="pref_privacy_title">"개인정보보호 설정"</string>
+    <string name="pref_content_autofit_summary">"화면에 맞게 웹페이지 형식 지정"</string>
+    <string name="pref_privacy_title">"개인정보 설정"</string>
     <string name="pref_privacy_clear_cache">"캐시 지우기"</string>
     <string name="pref_privacy_clear_cache_summary">"캐시된 모든 페이지 콘텐츠 삭제"</string>
     <string name="pref_privacy_clear_cache_dlg">"캐시가 지워집니다."</string>
@@ -138,28 +140,35 @@
     <string name="pref_privacy_clear_form_data_summary">"저장된 양식 데이터 모두 지우기"</string>
     <string name="pref_privacy_clear_form_data_dlg">"저장된 양식 데이터가 모두 지워집니다."</string>
     <string name="pref_privacy_clear_passwords">"비밀번호 지우기"</string>
-    <string name="pref_privacy_clear_passwords_summary">"저장된 비밀번호 모두 지우기"</string>
+    <string name="pref_privacy_clear_passwords_summary">"저장된 모든 비밀번호 지우기"</string>
     <string name="pref_privacy_clear_passwords_dlg">"저장된 비밀번호가 모두 지워집니다."</string>
     <string name="pref_security_title">"보안 설정"</string>
     <string name="pref_security_remember_passwords">"비밀번호 기억"</string>
-    <string name="pref_security_remember_passwords_summary">"웹사이트의 사용자 이름과 비밀번호 저장"</string>
+    <string name="pref_security_remember_passwords_summary">"웹사이트의 사용자 이름 및 비밀번호 저장"</string>
     <string name="pref_security_save_form_data">"양식 데이터 기억"</string>
     <string name="pref_security_save_form_data_summary">"나중에 사용할 수 있도록 양식에 입력한 데이터 기억"</string>
     <string name="pref_security_show_security_warning">"보안 경고 표시"</string>
-    <string name="pref_security_show_security_warning_summary">"사이트의 보안에 문제가 있는 경우 경고 표시"</string>
+    <string name="pref_security_show_security_warning_summary">"사이트 보안 관련 문제가 있는 경우 경고 표시"</string>
     <string name="pref_security_accept_cookies">"쿠키 허용"</string>
-    <string name="pref_security_accept_cookies_summary">"사이트에서 \'쿠키\' 데이터를 저장하고 읽을 수 있도록 허용"</string>
-    <string name="pref_text_size">"텍스트 크기 설정"</string>
+    <string name="pref_security_accept_cookies_summary">"사이트에서 \'쿠키\' 데이터 저장 및 읽기 허용"</string>
+    <string name="pref_text_size">"텍스트 크기"</string>
   <string-array name="pref_text_size_choices">
-    <item>"매우 작게"</item>
+    <item>"아주 작게"</item>
     <item>"작게"</item>
     <item>"보통"</item>
     <item>"크게"</item>
-    <item>"매우 크게"</item>
+    <item>"아주 크게"</item>
   </string-array>
     <string name="pref_text_size_dialogtitle">"텍스트 크기"</string>
+    <!-- no translation found for pref_default_zoom (8076142259097187395) -->
+    <skip />
+    <!-- no translation found for pref_default_zoom_choices:0 (549583171195154919) -->
+    <!-- no translation found for pref_default_zoom_choices:1 (5619034257768161024) -->
+    <!-- no translation found for pref_default_zoom_choices:2 (3840999588443167001) -->
+    <!-- no translation found for pref_default_zoom_dialogtitle (6095974367125109021) -->
+    <skip />
     <string name="pref_extras_title">"고급 설정"</string>
-    <string name="pref_extras_gears_enable">"Gears 활성화"</string>
+    <string name="pref_extras_gears_enable">"Gears 사용"</string>
     <string name="pref_extras_gears_enable_summary">"브라우저 기능을 확장하는 응용프로그램"</string>
     <string name="pref_extras_gears_settings">"Gears 설정"</string>
     <string name="pref_plugin_installed">"플러그인 목록"</string>
@@ -170,7 +179,8 @@
     <string name="pref_extras_reset_default_dlg">"모든 브라우저 데이터가 지워지고 설정이 기본값으로 돌아갑니다."</string>
     <string name="pref_extras_reset_default_dlg_title">"기본값으로 재설정"</string>
     <string name="pref_development_title">"디버그"</string>
-    <string name="pref_default_text_encoding">"텍스트 인코딩 설정"</string>
+    <!-- no translation found for pref_default_text_encoding (5742965543955558478) -->
+    <skip />
   <string-array name="pref_default_text_encoding_choices">
     <item>"라틴어-1(ISO-8859-1)"</item>
     <item>"유니코드(UTF-8)"</item>
@@ -182,27 +192,29 @@
     <string name="pref_default_text_encoding_default">"라틴어-1"</string>
     <string name="browserFrameRedirect">"리디렉션"</string>
     <string name="browserFrame307Post">"웹페이지가 리디렉션됩니다. 입력한 양식 데이터를 새 위치로 다시 보내시겠습니까?"</string>
-    <string name="browserFrameNetworkErrorLabel">"데이터 연결 문제"</string>
+    <string name="browserFrameNetworkErrorLabel">"데이터 연결에 문제 발생"</string>
     <string name="browserFrameFileErrorLabel">"파일 문제 발생"</string>
     <string name="browserFrameFormResubmitLabel">"확인"</string>
-    <string name="browserFrameFormResubmitMessage">"보려는 페이지에 이미 제출된 데이터(\'POSTDATA\')가 포함되어 있습니다. 데이터를 다시 보내면 페이지의 양식에서 수행한 작업(예: 검색 또는 온라인 구매)이 반복됩니다."</string>
+    <string name="browserFrameFormResubmitMessage">"보려는 페이지에 이미 제출된 데이터(\'POSTDATA\')가 있습니다. 해당 데이터를 다시 보내면 페이지의 양식에서 수행한 작업(예: 검색 또는 온라인 구매)이 반복됩니다."</string>
     <string name="loadSuspendedTitle">"네트워크 연결 없음"</string>
     <string name="loadSuspended">"연결이 복원된 후에 페이지 로드가 계속됩니다."</string>
     <string name="clear_history">"기록 지우기"</string>
     <string name="browser_history">"최근에 방문한 페이지"</string>
     <string name="empty_history">"브라우저 기록이 비어 있습니다."</string>
     <string name="add_new_bookmark">"북마크에 추가..."</string>
-    <string name="no_database">"데이터베이스 없음"</string>
+    <string name="no_database">"데이터베이스가 없습니다."</string>
     <string name="search_hint">"웹 주소 입력"</string>
     <string name="search_button_text">"이동"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
     <string name="attention">"주의"</string>
     <string name="popup_window_attempt">"사이트에서 팝업 창을 열려고 합니다."</string>
     <string name="allow">"허용"</string>
     <string name="block">"차단"</string>
-    <string name="too_many_windows_dialog_title">"창 개수 제한에 도달했습니다."</string>
+    <string name="too_many_windows_dialog_title">"창 개수 한도에 도달"</string>
     <string name="too_many_windows_dialog_message">"이미 최대 개수의 창을 열었기 때문에 새 창을 열 수 없습니다."</string>
-    <string name="too_many_subwindows_dialog_title">"팝업이 이미 열려 있습니다."</string>
-    <string name="too_many_subwindows_dialog_message">"팝업 창은 하나만 열 수 있기 때문에 새 팝업 창을 열 수 없습니다."</string>
+    <string name="too_many_subwindows_dialog_title">"팝업이 이미 열려 있음"</string>
+    <string name="too_many_subwindows_dialog_message">"한 번에 하나만 열 수 있으므로 새 팝업 창을 열 수 없습니다."</string>
     <string name="download_title">"다운로드 기록"</string>
     <string name="download_unknown_filename">"&lt;알 수 없음&gt;"</string>
     <string name="download_menu_open">"열기"</string>
@@ -211,42 +223,42 @@
     <string name="download_menu_cancel_all">"모든 다운로드 취소"</string>
     <string name="download_menu_clear_all">"목록 지우기"</string>
     <string name="download_clear_dlg_title">"지우기"</string>
-    <string name="download_clear_dlg_msg">"목록에서 모든 항목이 지워지고 브라우저 캐시에서 제거됩니다."</string>
+    <string name="download_clear_dlg_msg">"목록에서 모든 항목이 지워지고 브라우저 캐시에서 삭제됩니다."</string>
     <string name="download_cancel_dlg_title">"다운로드 취소"</string>
     <string name="download_cancel_dlg_msg">"<xliff:g id="DOWNLOAD_COUNT">%d</xliff:g>개의 다운로드가 모두 취소되고 다운로드 기록에서 지워집니다."</string>
-    <string name="download_file_error_dlg_title">"공간 부족"</string>
-    <string name="download_file_error_dlg_msg">"<xliff:g id="FILENAME">%s</xliff:g>을(를) 다운로드하지 못했습니다."\n"전화기에서 여유 공간을 늘린 후에 다시 시도하세요."</string>
+    <string name="download_file_error_dlg_title">"여유 공간이 없음"</string>
+    <string name="download_file_error_dlg_msg">"<xliff:g id="FILENAME">%s</xliff:g>을(를) 다운로드할 수 없습니다."\n"휴대전화에서 여유 공간을 늘린 후에 다시 시도하세요."</string>
     <string name="download_failed_generic_dlg_title">"다운로드 실패"</string>
     <string name="download_no_sdcard_dlg_title">"SD 카드 없음"</string>
     <string name="download_no_sdcard_dlg_msg">"<xliff:g id="FILENAME">%s</xliff:g>을(를) 다운로드하려면 SD 카드가 필요합니다."</string>
     <string name="download_sdcard_busy_dlg_title">"SD 카드를 사용할 수 없음"</string>
     <string name="download_sdcard_busy_dlg_msg">"SD 카드가 사용 중입니다. 다운로드를 허용하려면 알림에서 \'USB 저장소 끄기\'를 선택하세요."</string>
-    <string name="download_no_application">"파일을 열 수 있는 응용프로그램이 없습니다."</string>
+    <string name="download_no_application">"이 파일을 열 수 있는 응용프로그램을 찾을 수 없습니다."</string>
     <string name="retry">"다시 시도"</string>
     <string name="no_downloads">"다운로드 기록이 비어 있습니다."</string>
-    <string name="download_error">"다운로드 실패"</string>
-    <string name="download_success">"<xliff:g id="FILE">%s</xliff:g> 다운로드 완료"</string>
+    <string name="download_error">"다운로드에 실패했습니다."</string>
+    <string name="download_success">"<xliff:g id="FILE">%s</xliff:g> 다운로드가 완료되었습니다."</string>
     <string name="download_running">"다운로드 중..."</string>
     <string name="download_pending">"다운로드 시작 중..."</string>
-    <string name="download_pending_network">"데이터 연결을 기다리는 중..."</string>
+    <string name="download_pending_network">"데이터 연결 대기 중..."</string>
     <string name="download_running_paused">"데이터 연결을 기다리는 중..."</string>
     <string name="download_canceled">"다운로드가 취소되었습니다."</string>
-    <string name="download_not_acceptable">"다운로드할 수 없습니다. 전화기에서 지원하지 않는 콘텐츠입니다."</string>
-    <string name="download_file_error">"공간이 부족하여 다운로드를 완료할 수 없습니다."</string>
+    <string name="download_not_acceptable">"휴대전화에서 지원하지 않는 콘텐츠이므로 다운로드할 수 없습니다."</string>
+    <string name="download_file_error">"저장 용량이 부족하여 다운로드를 완료할 수 없습니다."</string>
     <string name="download_length_required">"항목의 크기를 확인할 수 없으므로 다운로드할 수 없습니다."</string>
-    <string name="download_precondition_failed">"다운로드 중단됨. 다시 시작할 수 없습니다."</string>
+    <string name="download_precondition_failed">"다운로드가 중단되었으며 다시 시작할 수 없습니다."</string>
     <string name="activity_instrumentation_test_runner">"브라우저 테스트 실행기"</string>
-    <string name="permlab_readHistoryBookmarks">"브라우저의 기록 및 북마크 읽기"</string>
-    <string name="permdesc_readHistoryBookmarks">"응용프로그램이 브라우저에서 방문한 모든 URL과 브라우저의 북마크를 모두 읽을 수 있습니다."</string>
-    <string name="permlab_writeHistoryBookmarks">"브라우저의 기록 및 북마크 쓰기"</string>
-    <string name="permdesc_writeHistoryBookmarks">"응용프로그램이 전화기에 저장된 브라우저의 기록 또는 북마크를 수정할 수 있습니다. 악성 응용프로그램은 이 기능을 이용하여 브라우저의 데이터를 지우거나 수정할 수 있습니다."</string>
+    <!-- no translation found for homepage_base (7888126987935305566) -->
+    <skip />
+    <!-- no translation found for search_the_web (6046130189241962337) -->
+    <skip />
     <string name="query_data_prompt">"저장소 허용"</string>
     <string name="query_data_message">"웹사이트에서 휴대전화에 정보를 저장하려고 합니다."</string>
     <string name="location_prompt">"사용자 위치에 액세스"</string>
     <string name="location_message">"웹사이트가 사용자의 위치에 액세스하려고 합니다."</string>
     <string name="shortcut_prompt">"바로가기 만들기"</string>
     <string name="shortcut_message">"웹사이트가 홈 화면에 이 페이지의 바로가기를 만들려고 합니다."</string>
-    <string name="settings_message">"아래 표는 Gears를 사용하려고 시도한 각 사이트에 부여한 권한을 보여줍니다."</string>
+    <string name="settings_message">"아래 표는 Gears를 사용하려는 각 사이트에 부여된 권한을 보여줍니다."</string>
     <string name="filepicker_message">"파일 선택기"</string>
     <string name="image_message">"선택한 이미지"</string>
     <string name="settings_title">"Gears 설정"</string>
@@ -266,10 +278,10 @@
     <string name="location_notification">"사이트에서 사용자의 현재 위치에 액세스할 수 있습니다."\n" 설정을 변경하려면"\n" 설정 -&gt; Gears 설정으로 이동하세요."</string>
     <string name="location_notification_alwaysdeny">"사이트에서 사용자의 현재 위치에 액세스하지 않습니다."\n" 설정을 변경하려면"\n" 설정 -&gt; Gears 설정으로 이동하세요."</string>
     <string name="shortcut_notification">"바로가기 생성됨"</string>
-    <string name="permission_button_alwaysdeny">"허용 안 함"</string>
+    <string name="permission_button_alwaysdeny">"허용 안함"</string>
     <string name="permission_button_allow">"확인"</string>
     <string name="permission_button_deny">"취소"</string>
-    <string name="shortcut_button_alwaysdeny">"허용 안 함"</string>
+    <string name="shortcut_button_alwaysdeny">"허용 안함"</string>
     <string name="shortcut_button_allow">"확인"</string>
     <string name="shortcut_button_deny">"취소"</string>
     <string name="settings_button_allow">"적용"</string>
@@ -277,14 +289,14 @@
     <string name="filepicker_button_allow">"확인"</string>
     <string name="filepicker_button_deny">"취소"</string>
     <string name="filepicker_path">"경로:"</string>
-    <string name="filepicker_no_files_selected">"선택한 파일이 없습니다."</string>
-    <string name="filepicker_one_file_selected">"1개 파일 선택됨"</string>
-    <string name="filepicker_some_files_selected">"개 파일 선택됨"</string>
-    <string name="remove">"제거"</string>
-    <string name="local_storage">"로컬 저장공간"</string>
+    <string name="filepicker_no_files_selected">"선택한 파일 없음"</string>
+    <string name="filepicker_one_file_selected">"하나의 파일이 선택됨"</string>
+    <string name="filepicker_some_files_selected">"파일을 선택함"</string>
+    <string name="remove">"삭제"</string>
+    <string name="local_storage">"로컬 저장소"</string>
     <string name="allowed">"허용됨"</string>
     <string name="denied">"거부됨"</string>
-    <string name="unrecognized_dialog_message">"인식할 수 없는 대화상자 유형"</string>
+    <string name="unrecognized_dialog_message">"인식할 수 없는 대화 유형"</string>
     <string name="default_button">"확인"</string>
     <string name="zoom_overview_button_text">"전체보기"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index ad4fee2..92310b7 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -25,12 +25,16 @@
     <string name="username">"Brukernavn"</string>
     <string name="password">"Passord"</string>
     <string name="action">"Logg inn"</string>
+    <!-- no translation found for bookmarks_search (5229596268214362873) -->
+    <skip />
     <string name="cancel">"Avbryt"</string>
     <string name="ok">"OK"</string>
-    <!-- no translation found for matches_found:zero (6242659159545399963) -->
-    <!-- no translation found for matches_found:one (4352019729062956802) -->
-    <!-- no translation found for matches_found:few (5544267486978946555) -->
-    <!-- no translation found for matches_found:other (6616125067364315405) -->
+  <plurals name="matches_found">
+    <item quantity="zero">"Ingen treff"</item>
+    <item quantity="one">"Ett treff"</item>
+    <item quantity="few">"<xliff:g id="NUMBER">%d</xliff:g> treff"</item>
+    <item quantity="other">"<xliff:g id="NUMBER">%d</xliff:g> treff"</item>
+  </plurals>
     <string name="page_info">"Sideinformasjon"</string>
     <string name="page_info_view">"Vis sideinformasjon"</string>
     <string name="page_info_address">"Adresse:"</string>
@@ -147,7 +151,8 @@
     <string name="pref_security_show_security_warning_summary">"Vis advarsel hvis det er et problem med sikkerheten på en side"</string>
     <string name="pref_security_accept_cookies">"Godta informasjonskapsler"</string>
     <string name="pref_security_accept_cookies_summary">"Tillat nettsteder å lagre og lese informasjonskapsler"</string>
-    <string name="pref_text_size">"Sett tekststørrelse"</string>
+    <!-- no translation found for pref_text_size (3827031324346612208) -->
+    <skip />
   <string-array name="pref_text_size_choices">
     <item>"Bitteliten"</item>
     <item>"Liten"</item>
@@ -156,6 +161,13 @@
     <item>"Kjempestor"</item>
   </string-array>
     <string name="pref_text_size_dialogtitle">"Tekststørrelse"</string>
+    <!-- no translation found for pref_default_zoom (8076142259097187395) -->
+    <skip />
+    <!-- no translation found for pref_default_zoom_choices:0 (549583171195154919) -->
+    <!-- no translation found for pref_default_zoom_choices:1 (5619034257768161024) -->
+    <!-- no translation found for pref_default_zoom_choices:2 (3840999588443167001) -->
+    <!-- no translation found for pref_default_zoom_dialogtitle (6095974367125109021) -->
+    <skip />
     <string name="pref_extras_title">"Avanserte innstillinger"</string>
     <string name="pref_extras_gears_enable">"Aktiver Gears"</string>
     <string name="pref_extras_gears_enable_summary">"Applikasjoner som utvider nettleserfunksjonaliteten"</string>
@@ -168,7 +180,8 @@
     <string name="pref_extras_reset_default_dlg">"Alle data vil bli fjernet fra nettleseren, og alle innstillinger vil bli nullstilt."</string>
     <string name="pref_extras_reset_default_dlg_title">"Nullstill"</string>
     <string name="pref_development_title">"Avlusing"</string>
-    <string name="pref_default_text_encoding">"Velg tekstkoding"</string>
+    <!-- no translation found for pref_default_text_encoding (5742965543955558478) -->
+    <skip />
   <string-array name="pref_default_text_encoding_choices">
     <item>"Latin-1 (ISO-8859-1)"</item>
     <item>"Unicode (UTF-8)"</item>
@@ -193,6 +206,8 @@
     <string name="no_database">"Ingen database!"</string>
     <string name="search_hint">"Skriv inn nettadresse"</string>
     <string name="search_button_text">"Gå"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
     <string name="attention">"Obs"</string>
     <string name="popup_window_attempt">"Denne siden prøver å åpne et sprettoppvindu."</string>
     <string name="allow">"Tillat"</string>
@@ -234,10 +249,10 @@
     <string name="download_length_required">"Kan ikke laste ned. Klarte ikke bestemme størrelsen på filen."</string>
     <string name="download_precondition_failed">"Nedlastingen ble avbrutt. Den kan ikke fortsettes."</string>
     <string name="activity_instrumentation_test_runner">"Browser Test Runner"</string>
-    <string name="permlab_readHistoryBookmarks">"read Browser\'s history and bookmarks"</string>
-    <string name="permdesc_readHistoryBookmarks">"Allows the application to read all the URLs that the Browser has visited, and all of the Browser\'s bookmarks."</string>
-    <string name="permlab_writeHistoryBookmarks">"write Browser\'s history and bookmarks"</string>
-    <string name="permdesc_writeHistoryBookmarks">"Allows an application to modify the Browser\'s history or bookmarks stored on your phone. Malicious applications can use this to erase or modify your Browser\'s data."</string>
+    <!-- no translation found for homepage_base (7888126987935305566) -->
+    <skip />
+    <!-- no translation found for search_the_web (6046130189241962337) -->
+    <skip />
     <string name="query_data_prompt">"Tillat lagring"</string>
     <string name="query_data_message">"Nettsiden under ønsker å lagre informasjon på datamaskinen ved hjelp av Gears."</string>
     <string name="location_prompt">"Få tilgang til plassering"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 5904587..37dae9d 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -25,6 +25,7 @@
     <string name="username">"Naam"</string>
     <string name="password">"Wachtwoord"</string>
     <string name="action">"Aanmelden"</string>
+    <string name="bookmarks_search">"Browser"</string>
     <string name="cancel">"Annuleren"</string>
     <string name="ok">"OK"</string>
   <plurals name="matches_found">
@@ -149,7 +150,7 @@
     <string name="pref_security_show_security_warning_summary">"Waarschuwen als er een beveiligingsprobleem is met een site"</string>
     <string name="pref_security_accept_cookies">"Cookies toelaten"</string>
     <string name="pref_security_accept_cookies_summary">"Sites toestaan cookiegegevens te lezen en schrijven"</string>
-    <string name="pref_text_size">"Tekengrootte instellen"</string>
+    <string name="pref_text_size">"Tekengrootte"</string>
   <string-array name="pref_text_size_choices">
     <item>"Minuscuul"</item>
     <item>"Klein"</item>
@@ -158,6 +159,13 @@
     <item>"Enorm"</item>
   </string-array>
     <string name="pref_text_size_dialogtitle">"Tekengrootte"</string>
+    <string name="pref_default_zoom">"Standaardzoom"</string>
+  <string-array name="pref_default_zoom_choices">
+    <item>"Ver"</item>
+    <item>"Gemiddeld"</item>
+    <item>"Sluiten"</item>
+  </string-array>
+    <string name="pref_default_zoom_dialogtitle">"Standaardzoom"</string>
     <string name="pref_extras_title">"Geavanceerde instellingen"</string>
     <string name="pref_extras_gears_enable">"Gears inschakelen"</string>
     <string name="pref_extras_gears_enable_summary">"Toepassingen die de functionaliteit van de browser vergroten"</string>
@@ -170,7 +178,7 @@
     <string name="pref_extras_reset_default_dlg">"Alle browsergegevens worden gewist en de standaardinstellingen worden hersteld."</string>
     <string name="pref_extras_reset_default_dlg_title">"Standaardinstellingen herstellen"</string>
     <string name="pref_development_title">"Foutopsporing"</string>
-    <string name="pref_default_text_encoding">"Tekstcodering instellen"</string>
+    <string name="pref_default_text_encoding">"Tekstcodering"</string>
   <string-array name="pref_default_text_encoding_choices">
     <item>"Latijns-1 (ISO-8859-1)"</item>
     <item>"Unicode (UTF-8)"</item>
@@ -195,6 +203,8 @@
     <string name="no_database">"Geen database."</string>
     <string name="search_hint">"Typ het webadres"</string>
     <string name="search_button_text">"Ga"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
     <string name="attention">"Opgelet"</string>
     <string name="popup_window_attempt">"Deze site probeert een pop-upvenster te openen."</string>
     <string name="allow">"Toestaan"</string>
@@ -236,10 +246,8 @@
     <string name="download_length_required">"Kan niet downloaden. De grootte van het item kan niet worden vastgesteld."</string>
     <string name="download_precondition_failed">"Download is onderbroken. Deze kan niet worden voortgezet."</string>
     <string name="activity_instrumentation_test_runner">"Browser Test Runner"</string>
-    <string name="permlab_readHistoryBookmarks">"browsergeschiedenis en bladwijzers lezen"</string>
-    <string name="permdesc_readHistoryBookmarks">"Hiermee kan een toepassing de URL\'s lezen die u via de browser heeft bezocht, evenals alle bladwijzers van de browser."</string>
-    <string name="permlab_writeHistoryBookmarks">"browsergeschiedenis en bladwijzers schrijven"</string>
-    <string name="permdesc_writeHistoryBookmarks">"Hiermee kan een toepassing de op uw telefoon opgeslagen browsergeschiedenis of bladwijzers wijzigen. Schadelijke toepassingen kunnen hiermee uw browsergegevens verwijderen of wijzigen."</string>
+    <string name="homepage_base">"http://www.google.com/m?client=ms-{CID}"</string>
+    <string name="search_the_web">"Zoeken op internet"</string>
     <string name="query_data_prompt">"Opslag toestaan"</string>
     <string name="query_data_message">"Deze website wil informatie opslaan op uw telefoon."</string>
     <string name="location_prompt">"Toegang tot uw locatie"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 9b8b29b..0295c72 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -17,7 +17,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name">"Internet"</string>
     <string name="tab_bookmarks">"Zakładki"</string>
-    <string name="tab_most_visited">"Najczęściej odwiedzane"</string>
+    <string name="tab_most_visited">"Popularne"</string>
     <string name="tab_history">"Historia"</string>
     <string name="added_to_bookmarks">"Dodano do zakładek"</string>
     <string name="removed_from_bookmarks">"Usunięto z zakładek"</string>
@@ -25,6 +25,7 @@
     <string name="username">"Nazwa"</string>
     <string name="password">"Hasło"</string>
     <string name="action">"Zaloguj się"</string>
+    <string name="bookmarks_search">"Przeglądarka"</string>
     <string name="cancel">"Anuluj"</string>
     <string name="ok">"OK"</string>
   <plurals name="matches_found">
@@ -81,7 +82,7 @@
     <string name="delete_bookmark_warning">"Zakładka „<xliff:g id="BOOKMARK">%s</xliff:g>” zostanie usunięta."</string>
     <string name="open_in_new_window">"Otwórz w nowym oknie"</string>
     <string name="new_window">"Nowe okno"</string>
-    <string name="goto_dot">"Idź"</string>
+    <string name="goto_dot">"Przejdź"</string>
     <string name="find_dot">"Znajdź na stronie"</string>
     <string name="select_dot">"Zaznacz tekst"</string>
     <string name="view_tabs">"Przegląd okien"</string>
@@ -108,7 +109,7 @@
     <string name="contextmenu_view_image">"Wyświetl obraz"</string>
     <string name="contextmenu_dial_dot">"Wybierz numer…"</string>
     <string name="contextmenu_add_contact">"Dodaj kontakt"</string>
-    <string name="contextmenu_send_mail">"Wyślij wiadomość e-mail"</string>
+    <string name="contextmenu_send_mail">"Wyślij e-mail"</string>
     <string name="contextmenu_map">"Mapa"</string>
     <string name="clear">"Wyczyść"</string>
     <string name="replace">"Zastąp adres"</string>
@@ -128,7 +129,7 @@
     <string name="pref_privacy_clear_cache">"Wyczyść pamięć podręczną"</string>
     <string name="pref_privacy_clear_cache_summary">"Usuń całą zawartość stron z pamięci podręcznej"</string>
     <string name="pref_privacy_clear_cache_dlg">"Pamięć podręczna zostanie wyczyszczona."</string>
-    <string name="pref_privacy_clear_cookies">"Wyczyść wszystkie cookies"</string>
+    <string name="pref_privacy_clear_cookies">"Wyczyść wszystkie pliki cookie"</string>
     <string name="pref_privacy_clear_cookies_summary">"Wyczyść pliki cookie przeglądarki"</string>
     <string name="pref_privacy_clear_cookies_dlg">"Wszystkie pliki cookie zostaną usunięte."</string>
     <string name="pref_privacy_clear_history">"Wyczyść historię"</string>
@@ -141,15 +142,15 @@
     <string name="pref_privacy_clear_passwords_summary">"Wyczyść wszystkie zapamiętane hasła"</string>
     <string name="pref_privacy_clear_passwords_dlg">"Wszystkie zapamiętane hasła zostaną wyczyszczone."</string>
     <string name="pref_security_title">"Ustawienia zabezpieczeń"</string>
-    <string name="pref_security_remember_passwords">"Zapamiętuj hasła"</string>
+    <string name="pref_security_remember_passwords">"Pamiętaj hasła"</string>
     <string name="pref_security_remember_passwords_summary">"Zapamiętuj nazwy użytkownika i hasła do stron WWW"</string>
-    <string name="pref_security_save_form_data">"Zapamiętuj wpisane dane"</string>
+    <string name="pref_security_save_form_data">"Pamiętaj wpisane dane"</string>
     <string name="pref_security_save_form_data_summary">"Zapamiętuj do późniejszego użycia dane, które wpisuję w formularzach"</string>
     <string name="pref_security_show_security_warning">"Wyświetlaj ostrzeżenia"</string>
     <string name="pref_security_show_security_warning_summary">"Wyświetl ostrzeżenie w razie problemów z zabezpieczeniami strony"</string>
     <string name="pref_security_accept_cookies">"Akceptuj pliki cookie"</string>
-    <string name="pref_security_accept_cookies_summary">"Zezwalaj witrynom na zapis i odczyt danych plików „cookie”."</string>
-    <string name="pref_text_size">"Ustaw rozmiar tekstu"</string>
+    <string name="pref_security_accept_cookies_summary">"Zezwalaj witrynom na zapis i odczyt danych w plikach cookie"</string>
+    <string name="pref_text_size">"Rozmiar tekstu"</string>
   <string-array name="pref_text_size_choices">
     <item>"Bardzo mały"</item>
     <item>"Mały"</item>
@@ -158,10 +159,17 @@
     <item>"Bardzo duży"</item>
   </string-array>
     <string name="pref_text_size_dialogtitle">"Rozmiar tekstu"</string>
+    <string name="pref_default_zoom">"Powiększenie domyślne"</string>
+  <string-array name="pref_default_zoom_choices">
+    <item>"Małe"</item>
+    <item>"Średnie"</item>
+    <item>"Duże"</item>
+  </string-array>
+    <string name="pref_default_zoom_dialogtitle">"Powiększenie domyślne"</string>
     <string name="pref_extras_title">"Ustawienia zaawansowane"</string>
-    <string name="pref_extras_gears_enable">"Włącz technologię Gears"</string>
+    <string name="pref_extras_gears_enable">"Włącz dodatek Gears"</string>
     <string name="pref_extras_gears_enable_summary">"Aplikacje rozszerzające zakres funkcji przeglądarki"</string>
-    <string name="pref_extras_gears_settings">"Gears – ustawienia"</string>
+    <string name="pref_extras_gears_settings">"Ustawienia dodatku Gears"</string>
     <string name="pref_plugin_installed">"Lista dodatków plug-in"</string>
     <string name="pref_plugin_installed_empty_list">"Brak zainstalowanych dodatków plug-in."</string>
     <string name="pref_extras_gears_settings_summary">"Aplikacje rozszerzające zakres funkcji przeglądarki"</string>
@@ -170,7 +178,7 @@
     <string name="pref_extras_reset_default_dlg">"Wszystkie dane przeglądarki zostaną wyczyszczone, a ustawienia powrócą do wartości domyślnych."</string>
     <string name="pref_extras_reset_default_dlg_title">"Przywróć wartości domyślne"</string>
     <string name="pref_development_title">"Debugowanie"</string>
-    <string name="pref_default_text_encoding">"Ustaw kodowanie tekstu"</string>
+    <string name="pref_default_text_encoding">"Kodowanie tekstu"</string>
   <string-array name="pref_default_text_encoding_choices">
     <item>"Latin-1 (ISO-8859-1)"</item>
     <item>"Unicode (UTF-8)"</item>
@@ -195,6 +203,8 @@
     <string name="no_database">"Brak bazy danych!"</string>
     <string name="search_hint">"Wpisz adres WWW"</string>
     <string name="search_button_text">"Otwórz"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
     <string name="attention">"Uwaga"</string>
     <string name="popup_window_attempt">"Ta strona próbuje otworzyć okienko wyskakujące."</string>
     <string name="allow">"Zezwól"</string>
@@ -236,20 +246,18 @@
     <string name="download_length_required">"Pobieranie niemożliwe. Nie można ustalić rozmiaru elementu."</string>
     <string name="download_precondition_failed">"Pobieranie zostało przerwane. Nie można go wznowić."</string>
     <string name="activity_instrumentation_test_runner">"Uruchamianie testów przeglądarki"</string>
-    <string name="permlab_readHistoryBookmarks">"odczytywanie historii i zakładek przeglądarki"</string>
-    <string name="permdesc_readHistoryBookmarks">"Zezwala aplikacji na odczytanie wszystkich adresów URL odwiedzonych przy użyciu przeglądarki oraz wszystkich zakładek przeglądarki."</string>
-    <string name="permlab_writeHistoryBookmarks">"zapisać historię i zakładki przeglądarki"</string>
-    <string name="permdesc_writeHistoryBookmarks">"Pozwala aplikacji na zmianę historii lub zakładek przeglądarki zapisanych w telefonie. Szkodliwe aplikacje mogą to wykorzystać, aby usunąć lub zmienić dane przeglądarki."</string>
+    <string name="homepage_base">"http://www.google.com/m?client=ms-{CID}"</string>
+    <string name="search_the_web">"Szukaj w internecie"</string>
     <string name="query_data_prompt">"Zezwól na zapis"</string>
     <string name="query_data_message">"Ta witryna internetowa chce zapisać informacje w telefonie."</string>
     <string name="location_prompt">"Dostęp do informacji o Twojej lokalizacji"</string>
     <string name="location_message">"Ta witryna internetowa chce uzyskać dostęp do informacji o Twojej lokalizacji."</string>
     <string name="shortcut_prompt">"Utwórz skrót"</string>
     <string name="shortcut_message">"Ta witryna internetowa chce utworzyć skrót do tej strony na Twoim ekranie głównym."</string>
-    <string name="settings_message">"W poniższej tabeli przedstawiono uprawnienia udzielone każdej z witryn próbujących użyć Gears."</string>
+    <string name="settings_message">"W poniższej tabeli przedstawiono uprawnienia udzielone każdej z witryn próbujących użyć dodatku Gears."</string>
     <string name="filepicker_message">"Wybór plików"</string>
     <string name="image_message">"Wybrany obraz"</string>
-    <string name="settings_title">"Gears – ustawienia"</string>
+    <string name="settings_title">"Ustawienia dodatku Gears"</string>
     <string name="privacy_policy">"Przeczytaj zasady zachowania poufności informacji witryny, aby dowiedzieć się, jak będą użyte informacje o twojej lokalizacji."</string>
     <string name="settings_storage_title">"Zezwól na zapis lokalnie"</string>
     <string name="settings_storage_subtitle_on">"Ta witryna może zapisać informacje w telefonie"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..7ac06f5
--- /dev/null
+++ b/res/values-pt-rPT/strings.xml
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="application_name">"Browser"</string>
+    <string name="tab_bookmarks">"Marcadores"</string>
+    <string name="tab_most_visited">"Os mais visitados"</string>
+    <string name="tab_history">"Histórico"</string>
+    <string name="added_to_bookmarks">"Adicionado aos marcadores"</string>
+    <string name="removed_from_bookmarks">"Removido dos marcadores"</string>
+    <string name="sign_in_to">"Iniciar sessão em <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
+    <string name="username">"Nome"</string>
+    <string name="password">"Palavra-passe"</string>
+    <string name="action">"Iniciar sessão"</string>
+    <!-- no translation found for bookmarks_search (5229596268214362873) -->
+    <skip />
+    <string name="cancel">"Cancelar"</string>
+    <string name="ok">"OK"</string>
+  <plurals name="matches_found">
+    <item quantity="zero">"Sem correspondência"</item>
+    <item quantity="one">"1 correspondência"</item>
+    <item quantity="few">"<xliff:g id="NUMBER">%d</xliff:g> correspondências"</item>
+    <item quantity="other">"<xliff:g id="NUMBER">%d</xliff:g> correspondências"</item>
+  </plurals>
+    <string name="page_info">"Informações da página"</string>
+    <string name="page_info_view">"Ver informações da página"</string>
+    <string name="page_info_address">"Endereço:"</string>
+    <string name="ssl_warnings_header">"Existem problemas com o certificado de segurança deste site."</string>
+    <string name="ssl_continue">"Continuar"</string>
+    <string name="security_warning">"Aviso de segurança"</string>
+    <string name="view_certificate">"Ver certificado"</string>
+    <string name="ssl_untrusted">"Este certificado não pertence a uma autoridade fidedigna."</string>
+    <string name="ssl_mismatch">"O nome do site não corresponde ao nome constante no certificado."</string>
+    <string name="ssl_expired">"Este certificado expirou."</string>
+    <string name="ssl_not_yet_valid">"Este certificado ainda não é válido."</string>
+    <string name="ssl_certificate">"Certificado de segurança"</string>
+    <string name="ssl_certificate_is_valid">"Este certificado é válido."</string>
+    <string name="issued_to">"Emitido para:"</string>
+    <string name="common_name">"Nome comum:"</string>
+    <string name="org_name">"Organização:"</string>
+    <string name="org_unit">"Unidade organizacional:"</string>
+    <string name="issued_by">"Emitido por:"</string>
+    <string name="validity_period">"Validade:"</string>
+    <string name="issued_on">"Emitido em:"</string>
+    <string name="expires_on">"Expira em:"</string>
+    <string name="retrieving_creds_dlg_msg">"A obter detalhes de início de sessão..."</string>
+    <string name="stopping">"A interromper..."</string>
+    <string name="stop">"Parar"</string>
+    <string name="reload">"Actualizar"</string>
+    <string name="forward">"Avançar"</string>
+    <string name="save">"OK"</string>
+    <string name="do_not_save">"Cancelar"</string>
+    <string name="location">"Local"</string>
+    <string name="name">"Nome"</string>
+    <string name="http">"http://"</string>
+    <string name="save_to_bookmarks">"Adicionar aos marcadores"</string>
+    <string name="edit_bookmark">"Editar marcador"</string>
+    <string name="create_shortcut_bookmark">"Adicionar atalho à página inicial"</string>
+    <string name="open_bookmark">"Abrir"</string>
+    <string name="remove_bookmark">"Eliminar marcador"</string>
+    <string name="remove_history_item">"Remover do histórico"</string>
+    <string name="bookmark_saved">"Guardado nos marcadores"</string>
+    <string name="bookmark_needs_title">"Os marcadores têm de ter um nome."</string>
+    <string name="bookmark_needs_url">"O marcador tem de ter uma localização."</string>
+    <string name="empty_bookmark">"Não é possível criar um marcador vazio."</string>
+    <string name="bookmark_url_not_valid">"O URL não é válido."</string>
+    <string name="delete_bookmark">"Eliminar"</string>
+    <string name="bookmark_page">"Adicionar aos marcadores a última página visualizada"</string>
+    <string name="current_page">"de "</string>
+    <string name="delete_bookmark_warning">"O marcador \"<xliff:g id="BOOKMARK">%s</xliff:g>\" será eliminado."</string>
+    <string name="open_in_new_window">"Abrir numa janela nova"</string>
+    <string name="new_window">"Nova janela"</string>
+    <string name="goto_dot">"Ir"</string>
+    <string name="find_dot">"Encontrar na página"</string>
+    <string name="select_dot">"Seleccionar texto"</string>
+    <string name="view_tabs">"Visão geral das janelas"</string>
+    <string name="view_tabs_condensed">"Janelas"</string>
+    <string name="tab_picker_title">"Janelas actuais"</string>
+    <string name="tab_picker_view_tab">"Ver"</string>
+    <string name="tab_picker_new_tab">"Nova janela"</string>
+    <string name="tab_picker_remove_tab">"Fechar"</string>
+    <string name="tab_picker_bookmark">"Adicionar aos marcadores"</string>
+    <string name="tab_picker_send_url">"Partilhar link"</string>
+    <string name="bookmarks">"Marcadores"</string>
+    <string name="shortcut_bookmark">"Marcador"</string>
+    <string name="history">"Histórico"</string>
+    <string name="menu_view_download">"Transferências"</string>
+    <string name="share_page">"Partilhar página"</string>
+    <string name="contextmenu_openlink">"Abrir"</string>
+    <string name="contextmenu_openlink_newwindow">"Abrir numa janela nova"</string>
+    <string name="contextmenu_bookmark_thislink">"Adicionar link aos marcadores"</string>
+    <string name="contextmenu_savelink">"Guardar link"</string>
+    <string name="contextmenu_sharelink">"Partilhar link"</string>
+    <string name="contextmenu_copy">"Copiar"</string>
+    <string name="contextmenu_copylink">"Copiar URL do link"</string>
+    <string name="contextmenu_download_image">"Guardar imagem"</string>
+    <string name="contextmenu_view_image">"Ver imagem"</string>
+    <string name="contextmenu_dial_dot">"Marcar..."</string>
+    <string name="contextmenu_add_contact">"Adicionar contacto"</string>
+    <string name="contextmenu_send_mail">"Enviar e-mail"</string>
+    <string name="contextmenu_map">"Mapa"</string>
+    <string name="clear">"Limpar"</string>
+    <string name="replace">"Substituir"</string>
+    <string name="browser_bookmarks_page_bookmarks_text">"Marcadores"</string>
+    <string name="menu_preferences">"Definições"</string>
+    <string name="pref_content_title">"Definições de conteúdo da página"</string>
+    <string name="pref_content_load_images">"Carregar imagens"</string>
+    <string name="pref_content_load_images_summary">"Apresentar imagens em páginas Web"</string>
+    <string name="pref_content_block_popups">"Bloquear janelas de pop-up"</string>
+    <string name="pref_content_javascript">"Activar JavaScript"</string>
+    <string name="pref_content_open_in_background">"Abrir em segundo plano"</string>
+    <string name="pref_content_open_in_background_summary">"As novas janelas serão abertas atrás da janela actual"</string>
+    <string name="pref_content_homepage">"Definir página inicial"</string>
+    <string name="pref_content_autofit">"Ajustar páginas automaticamente"</string>
+    <string name="pref_content_autofit_summary">"Formatar páginas Web para se ajustarem ao ecrã"</string>
+    <string name="pref_privacy_title">"Definições de privacidade"</string>
+    <string name="pref_privacy_clear_cache">"Limpar cache"</string>
+    <string name="pref_privacy_clear_cache_summary">"Eliminar todo o conteúdo de páginas em cache"</string>
+    <string name="pref_privacy_clear_cache_dlg">"A cache será limpa."</string>
+    <string name="pref_privacy_clear_cookies">"Limpar todos os dados de cookies"</string>
+    <string name="pref_privacy_clear_cookies_summary">"Limpar todos os cookies do browser"</string>
+    <string name="pref_privacy_clear_cookies_dlg">"Todos os cookies serão limpos."</string>
+    <string name="pref_privacy_clear_history">"Limpar histórico"</string>
+    <string name="pref_privacy_clear_history_summary">"Limpar o histórico de navegação do browser"</string>
+    <string name="pref_privacy_clear_history_dlg">"O histórico de navegação do browser será limpo."</string>
+    <string name="pref_privacy_clear_form_data">"Limpar dados de formulário"</string>
+    <string name="pref_privacy_clear_form_data_summary">"Limpar todos os dados de formulário guardados"</string>
+    <string name="pref_privacy_clear_form_data_dlg">"Todos os dados de formulário guardados serão limpos."</string>
+    <string name="pref_privacy_clear_passwords">"Limpar palavras-passe"</string>
+    <string name="pref_privacy_clear_passwords_summary">"Limpar todas as palavras-passe guardadas"</string>
+    <string name="pref_privacy_clear_passwords_dlg">"Todas as palavras-passe guardadas serão limpas."</string>
+    <string name="pref_security_title">"Definições de segurança"</string>
+    <string name="pref_security_remember_passwords">"Lembrar palavras-passe"</string>
+    <string name="pref_security_remember_passwords_summary">"Guardar nomes de utilizador e palavras-passe de Web sites"</string>
+    <string name="pref_security_save_form_data">"Lembrar dados de formulário"</string>
+    <string name="pref_security_save_form_data_summary">"Lembrar dados introduzidos em formulários para utilização posterior"</string>
+    <string name="pref_security_show_security_warning">"Mostrar avisos de segurança"</string>
+    <string name="pref_security_show_security_warning_summary">"Mostrar aviso se ocorrer um problema com a segurança de um site"</string>
+    <string name="pref_security_accept_cookies">"Aceitar cookies"</string>
+    <string name="pref_security_accept_cookies_summary">"Permitir que os sites guardem e leiam dados de \"cookies\""</string>
+    <!-- no translation found for pref_text_size (3827031324346612208) -->
+    <skip />
+  <string-array name="pref_text_size_choices">
+    <item>"Muito pequeno"</item>
+    <item>"Pequeno"</item>
+    <item>"Normal"</item>
+    <item>"Grande"</item>
+    <item>"Muito grande"</item>
+  </string-array>
+    <string name="pref_text_size_dialogtitle">"Tamanho do texto"</string>
+    <!-- no translation found for pref_default_zoom (8076142259097187395) -->
+    <skip />
+    <!-- no translation found for pref_default_zoom_choices:0 (549583171195154919) -->
+    <!-- no translation found for pref_default_zoom_choices:1 (5619034257768161024) -->
+    <!-- no translation found for pref_default_zoom_choices:2 (3840999588443167001) -->
+    <!-- no translation found for pref_default_zoom_dialogtitle (6095974367125109021) -->
+    <skip />
+    <string name="pref_extras_title">"Definições avançadas"</string>
+    <string name="pref_extras_gears_enable">"Activar o Gears"</string>
+    <string name="pref_extras_gears_enable_summary">"Aplicações que aumentam a funcionalidade do browser"</string>
+    <string name="pref_extras_gears_settings">"Definições do Gears"</string>
+    <string name="pref_plugin_installed">"Lista de plug-ins"</string>
+    <string name="pref_plugin_installed_empty_list">"Nenhum plug-in instalado."</string>
+    <string name="pref_extras_gears_settings_summary">"Aplicações que aumentam a funcionalidade do browser"</string>
+    <string name="pref_extras_reset_default">"Repor as predefinições"</string>
+    <string name="pref_extras_reset_default_summary">"Limpar todos os dados do browser e repor todas as predefinições"</string>
+    <string name="pref_extras_reset_default_dlg">"Todos os dados do browser serão limpos e as definições serão repostas para os valores predefinidos."</string>
+    <string name="pref_extras_reset_default_dlg_title">"Repor as predefinições"</string>
+    <string name="pref_development_title">"Depuração"</string>
+    <!-- no translation found for pref_default_text_encoding (5742965543955558478) -->
+    <skip />
+  <string-array name="pref_default_text_encoding_choices">
+    <item>"Latim-1 (ISO-8859-1)"</item>
+    <item>"Unicode (UTF-8)"</item>
+    <item>"Japonês (ISO-2022-JP)"</item>
+    <item>"Japonês (SHIFT_JIS)"</item>
+    <item>"Japonês (EUC-JP)"</item>
+  </string-array>
+    <string name="pref_default_text_encoding_dialogtitle">"Codificação do texto"</string>
+    <string name="pref_default_text_encoding_default">"Latim-1"</string>
+    <string name="browserFrameRedirect">"Redireccionar"</string>
+    <string name="browserFrame307Post">"Esta página Web está a ser redireccionada. Pretende reenviar os dados de formulário introduzidos para a nova localização?"</string>
+    <string name="browserFrameNetworkErrorLabel">"Problema de conectividade de dados"</string>
+    <string name="browserFrameFileErrorLabel">"Problemas com o ficheiro"</string>
+    <string name="browserFrameFormResubmitLabel">"Confirmar"</string>
+    <string name="browserFrameFormResubmitMessage">"A página que está a tentar visualizar contém dados enviados anteriormente (\"REGISTDADOS\"). Se reenviar os dados, qualquer acção já tomada pelo formulário da página (como uma pesquisa ou compra on-line) será repetida."</string>
+    <string name="loadSuspendedTitle">"Sem ligação de rede"</string>
+    <string name="loadSuspended">"O carregamento desta página será retomado depois do restabelecimento da ligação."</string>
+    <string name="clear_history">"Limpar histórico"</string>
+    <string name="browser_history">"Páginas visitadas recentemente"</string>
+    <string name="empty_history">"O histórico do browser está vazio."</string>
+    <string name="add_new_bookmark">"Adicionar marcador..."</string>
+    <string name="no_database">"Não existe base de dados!"</string>
+    <string name="search_hint">"Escreva o endereço Web"</string>
+    <string name="search_button_text">"Ir"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
+    <string name="attention">"Atenção"</string>
+    <string name="popup_window_attempt">"Este site está a tentar abrir uma janela de pop-up."</string>
+    <string name="allow">"Permitir"</string>
+    <string name="block">"Bloquear"</string>
+    <string name="too_many_windows_dialog_title">"Limite de janelas alcançado"</string>
+    <string name="too_many_windows_dialog_message">"Não foi possível abrir uma nova janela porque o número máximo de janelas abertas foi atingido."</string>
+    <string name="too_many_subwindows_dialog_title">"Janela de pop-up já aberta"</string>
+    <string name="too_many_subwindows_dialog_message">"Não foi possível abrir uma nova janela de pop-up, pois só é permitido abrir uma de cada vez."</string>
+    <string name="download_title">"Histórico de transferências"</string>
+    <string name="download_unknown_filename">"&lt;Desconhecido&gt;"</string>
+    <string name="download_menu_open">"Abrir"</string>
+    <string name="download_menu_clear">"Limpar da lista"</string>
+    <string name="download_menu_cancel">"Cancelar transferência"</string>
+    <string name="download_menu_cancel_all">"Cancelar todas as transferências"</string>
+    <string name="download_menu_clear_all">"Limpar lista"</string>
+    <string name="download_clear_dlg_title">"Limpar"</string>
+    <string name="download_clear_dlg_msg">"Todos os itens serão limpos da lista e removidos da cache do browser."</string>
+    <string name="download_cancel_dlg_title">"Cancelar transferências"</string>
+    <string name="download_cancel_dlg_msg">"As <xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> transferências serão canceladas e limpas do histórico de transferências."</string>
+    <string name="download_file_error_dlg_title">"Sem espaço"</string>
+    <string name="download_file_error_dlg_msg">"Não foi possível transferir <xliff:g id="FILENAME">%s</xliff:g>. "\n"Liberte algum espaço no telefone e tente novamente."</string>
+    <string name="download_failed_generic_dlg_title">"Falha na transferência"</string>
+    <string name="download_no_sdcard_dlg_title">"Sem cartão SD"</string>
+    <string name="download_no_sdcard_dlg_msg">"É necessário um cartão SD para transferir <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="download_sdcard_busy_dlg_title">"Cartão SD não disponível"</string>
+    <string name="download_sdcard_busy_dlg_msg">"O cartão SD está ocupado. Para permitir as transferências, seleccione \"Desactivar armazenamento USB\" na notificação."</string>
+    <string name="download_no_application">"Nenhuma aplicação encontrada para abrir este ficheiro."</string>
+    <string name="retry">"Tentar novamente"</string>
+    <string name="no_downloads">"O histórico de transferências está vazio."</string>
+    <string name="download_error">"Falha na transferência."</string>
+    <string name="download_success">"Transferência de <xliff:g id="FILE">%s</xliff:g> concluída."</string>
+    <string name="download_running">"A transferir..."</string>
+    <string name="download_pending">"A iniciar a transferência..."</string>
+    <string name="download_pending_network">"A aguardar ligação de dados…"</string>
+    <string name="download_running_paused">"A aguardar ligação de dados…"</string>
+    <string name="download_canceled">"Transferência cancelada."</string>
+    <string name="download_not_acceptable">"Não é possível transferir. Este conteúdo não é suportado pelo telefone."</string>
+    <string name="download_file_error">"Não é possível concluir a transferência. Não existe espaço suficiente."</string>
+    <string name="download_length_required">"Não é possível transferir porque o tamanho do item é indeterminado."</string>
+    <string name="download_precondition_failed">"A transferência foi interrompida e não pode ser retomada."</string>
+    <string name="activity_instrumentation_test_runner">"Teste·de·browser"</string>
+    <!-- no translation found for homepage_base (7888126987935305566) -->
+    <skip />
+    <!-- no translation found for search_the_web (6046130189241962337) -->
+    <skip />
+    <string name="query_data_prompt">"Permitir armazenamento"</string>
+    <string name="query_data_message">"Este Web site pretende armazenar informações no seu telefone."</string>
+    <string name="location_prompt">"Aceder à sua localização"</string>
+    <string name="location_message">"Este Web site pretende ter acesso à sua localização."</string>
+    <string name="shortcut_prompt">"Criar um atalho"</string>
+    <string name="shortcut_message">"Este Web site pretende criar um atalho para esta página no seu ecrã inicial."</string>
+    <string name="settings_message">"A tabela seguinte mostra as permissões concedidas a cada site que tenha tentado utilizar o Gears."</string>
+    <string name="filepicker_message">"Seleccionador de ficheiros"</string>
+    <string name="image_message">"Imagem escolhida"</string>
+    <string name="settings_title">"Definições do Gears"</string>
+    <string name="privacy_policy">"Leia a política de privacidade do site para saber que uso será dado à sua localização."</string>
+    <string name="settings_storage_title">"Permitir armazenamento local"</string>
+    <string name="settings_storage_subtitle_on">"Este site pode guardar informações no seu telefone"</string>
+    <string name="settings_storage_subtitle_off">"Este site não consegue guardar informações no seu telefone"</string>
+    <string name="settings_location_title">"Permitir detecção de localização"</string>
+    <string name="settings_location_subtitle_on">"Este site não consegue ler a sua localização actual"</string>
+    <string name="settings_location_subtitle_off">"Este site não consegue ler a sua localização actual"</string>
+    <string name="settings_remove_site">"Remover este site do Gears"</string>
+    <string name="settings_empty">"Sem permissões definidas"</string>
+    <string name="settings_confirmation_remove_title">"Remover este site"</string>
+    <string name="settings_confirmation_remove">"Todas as permissões serão limpas e quaisquer dados armazenados no telefone pelo site serão eliminados."</string>
+    <string name="storage_notification">"Este site irá armazenar informações neste telefone. "\n" Altere esta definição em:"\n" Definições -&gt; Definições do Gears"</string>
+    <string name="storage_notification_alwaysdeny">"Este site nunca irá armazenar informações neste telefone. "\n" Altere esta definição em:"\n" Definições -&gt; Definições do Gears"</string>
+    <string name="location_notification">"Este site tem acesso à sua localização actual. "\n" Altere esta definição em: "\n" Definições -&gt; Definições do Gears"</string>
+    <string name="location_notification_alwaysdeny">"Este site não irá aceder à sua localização actual."\n" Altere esta definição em: "\n" Definições -&gt; Definições do Gears"</string>
+    <string name="shortcut_notification">"Atalho criado"</string>
+    <string name="permission_button_alwaysdeny">"Nunca permitir"</string>
+    <string name="permission_button_allow">"OK"</string>
+    <string name="permission_button_deny">"Cancelar"</string>
+    <string name="shortcut_button_alwaysdeny">"Nunca permitir"</string>
+    <string name="shortcut_button_allow">"OK"</string>
+    <string name="shortcut_button_deny">"Cancelar"</string>
+    <string name="settings_button_allow">"Aplicar"</string>
+    <string name="settings_button_deny">"Cancelar"</string>
+    <string name="filepicker_button_allow">"OK"</string>
+    <string name="filepicker_button_deny">"Cancelar"</string>
+    <string name="filepicker_path">"caminho:"</string>
+    <string name="filepicker_no_files_selected">"Nenhum ficheiro seleccionado"</string>
+    <string name="filepicker_one_file_selected">"Um ficheiro seleccionado"</string>
+    <string name="filepicker_some_files_selected">"ficheiros seleccionados"</string>
+    <string name="remove">"Remover"</string>
+    <string name="local_storage">"Armazenamento local"</string>
+    <string name="allowed">"Permitido"</string>
+    <string name="denied">"Negado"</string>
+    <string name="unrecognized_dialog_message">"Tipo de diálogo desconhecido"</string>
+    <string name="default_button">"OK"</string>
+    <string name="zoom_overview_button_text">"Visão geral"</string>
+</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 0522b74..e4988e9 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -15,19 +15,13 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for application_name (1935869255545976415) -->
-    <skip />
-    <!-- no translation found for tab_bookmarks (2305793036003473653) -->
-    <skip />
-    <!-- no translation found for tab_most_visited (1077402532455000703) -->
-    <skip />
-    <!-- no translation found for tab_history (1979267558744613746) -->
-    <skip />
-    <!-- no translation found for added_to_bookmarks (1020224130695956728) -->
-    <skip />
-    <!-- no translation found for removed_from_bookmarks (6063705902028438800) -->
-    <skip />
-    <string name="sign_in_to">"Fazer login em <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
+    <string name="application_name">"Navegador"</string>
+    <string name="tab_bookmarks">"Favoritos"</string>
+    <string name="tab_most_visited">"Mais visitados"</string>
+    <string name="tab_history">"Histórico"</string>
+    <string name="added_to_bookmarks">"Adicionado aos favoritos"</string>
+    <string name="removed_from_bookmarks">"Removido dos favoritos"</string>
+    <string name="sign_in_to">"Fazer login no <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
     <string name="username">"Nome"</string>
     <string name="password">"Senha"</string>
     <string name="action">"Fazer login"</string>
@@ -35,19 +29,21 @@
     <skip />
     <string name="cancel">"Cancelar"</string>
     <string name="ok">"OK"</string>
-    <!-- no translation found for matches_found:zero (6242659159545399963) -->
-    <!-- no translation found for matches_found:one (4352019729062956802) -->
-    <!-- no translation found for matches_found:few (5544267486978946555) -->
-    <!-- no translation found for matches_found:other (6616125067364315405) -->
+  <plurals name="matches_found">
+    <item quantity="zero">"Sem correspondências"</item>
+    <item quantity="one">"1 correspondência"</item>
+    <item quantity="few">"<xliff:g id="NUMBER">%d</xliff:g> correspondências"</item>
+    <item quantity="other">"<xliff:g id="NUMBER">%d</xliff:g> correspondências"</item>
+  </plurals>
     <string name="page_info">"Informações da página"</string>
     <string name="page_info_view">"Visualizar informações da página"</string>
     <string name="page_info_address">"Endereço:"</string>
-    <string name="ssl_warnings_header">"Existem problemas no certificado de segurança deste site."</string>
+    <string name="ssl_warnings_header">"Há problemas com o certificado de segurança deste site."</string>
     <string name="ssl_continue">"Continuar"</string>
     <string name="security_warning">"Aviso de segurança"</string>
     <string name="view_certificate">"Visualizar certificado"</string>
     <string name="ssl_untrusted">"Este certificado não é de uma autoridade confiável."</string>
-    <string name="ssl_mismatch">"O nome do site não coincide com o nome do certificado."</string>
+    <string name="ssl_mismatch">"O nome do site não corresponde ao nome no certificado."</string>
     <string name="ssl_expired">"Este certificado expirou."</string>
     <string name="ssl_not_yet_valid">"Este certificado ainda não é válido."</string>
     <string name="ssl_certificate">"Certificado de segurança"</string>
@@ -60,8 +56,8 @@
     <string name="validity_period">"Validade:"</string>
     <string name="issued_on">"Emitido em:"</string>
     <string name="expires_on">"Expira em:"</string>
-    <string name="retrieving_creds_dlg_msg">"Recuperando detalhes de login..."</string>
-    <string name="stopping">"Parando..."</string>
+    <string name="retrieving_creds_dlg_msg">"Recuperando detalhes do login…"</string>
+    <string name="stopping">"Parando…"</string>
     <string name="stop">"Parar"</string>
     <string name="reload">"Atualizar"</string>
     <string name="forward">"Encaminhar"</string>
@@ -72,31 +68,28 @@
     <string name="http">"http://"</string>
     <string name="save_to_bookmarks">"Favorito"</string>
     <string name="edit_bookmark">"Editar favorito"</string>
-    <string name="create_shortcut_bookmark">"Adicionar atalho à página inicial"</string>
+    <string name="create_shortcut_bookmark">"Adicionar atalho à Página inicial"</string>
     <string name="open_bookmark">"Abrir"</string>
     <string name="remove_bookmark">"Excluir favorito"</string>
     <string name="remove_history_item">"Remover do histórico"</string>
     <string name="bookmark_saved">"Salvo nos favoritos."</string>
-    <string name="bookmark_needs_title">"O favorito deve ter um nome."</string>
-    <string name="bookmark_needs_url">"O favorito deve ter um local."</string>
+    <string name="bookmark_needs_title">"O favorito precisa ter um nome."</string>
+    <string name="bookmark_needs_url">"O favorito precisa ter um local."</string>
     <string name="empty_bookmark">"Não é possível criar um favorito vazio."</string>
     <string name="bookmark_url_not_valid">"O URL não é válido."</string>
     <string name="delete_bookmark">"Excluir"</string>
-    <string name="bookmark_page">"Página do último favorito visualizado"</string>
-    <!-- no translation found for current_page (7510129573681663135) -->
-    <skip />
+    <string name="bookmark_page">"Adicionar última página visualizada aos favoritos"</string>
+    <string name="current_page">"de "</string>
     <string name="delete_bookmark_warning">"O favorito \"<xliff:g id="BOOKMARK">%s</xliff:g>\" será excluído."</string>
-    <string name="open_in_new_window">"Abrir em nova janela"</string>
+    <string name="open_in_new_window">"Abrir em uma nova janela"</string>
     <string name="new_window">"Nova janela"</string>
-    <!-- no translation found for goto_dot (3895839050522602723) -->
-    <skip />
+    <string name="goto_dot">"Ir"</string>
     <string name="find_dot">"Localizar na página"</string>
-    <!-- no translation found for select_dot (6299170761900561967) -->
-    <skip />
+    <string name="select_dot">"Selecione o texto"</string>
     <string name="view_tabs">"Visão geral da janela"</string>
     <string name="view_tabs_condensed">"Janelas"</string>
     <string name="tab_picker_title">"Janelas atuais"</string>
-    <string name="tab_picker_view_tab">"Visualizar"</string>
+    <string name="tab_picker_view_tab">"Exibir"</string>
     <string name="tab_picker_new_tab">"Nova janela"</string>
     <string name="tab_picker_remove_tab">"Fechar"</string>
     <string name="tab_picker_bookmark">"Favorito"</string>
@@ -107,7 +100,7 @@
     <string name="menu_view_download">"Downloads"</string>
     <string name="share_page">"Compartilhar página"</string>
     <string name="contextmenu_openlink">"Abrir"</string>
-    <string name="contextmenu_openlink_newwindow">"Abrir em nova janela"</string>
+    <string name="contextmenu_openlink_newwindow">"Abrir em uma nova janela"</string>
     <string name="contextmenu_bookmark_thislink">"Link do favorito"</string>
     <string name="contextmenu_savelink">"Salvar link"</string>
     <string name="contextmenu_sharelink">"Compartilhar link"</string>
@@ -129,189 +122,166 @@
     <string name="pref_content_block_popups">"Bloquear janelas pop-up"</string>
     <string name="pref_content_javascript">"Ativar JavaScript"</string>
     <string name="pref_content_open_in_background">"Abrir em segundo plano"</string>
-    <string name="pref_content_open_in_background_summary">"As novas janelas são abertas atrás da atual"</string>
-    <string name="pref_content_homepage">"Definir página inicial"</string>
+    <string name="pref_content_open_in_background_summary">"As novas janelas abrem atrás da janela atual."</string>
+    <string name="pref_content_homepage">"Definir a página inicial"</string>
     <string name="pref_content_autofit">"Ajustar páginas automaticamente"</string>
-    <string name="pref_content_autofit_summary">"Formatar páginas da web para ajustá-las à tela"</string>
+    <string name="pref_content_autofit_summary">"Formatar páginas da web para se ajustarem à tela"</string>
     <string name="pref_privacy_title">"Configurações de privacidade"</string>
     <string name="pref_privacy_clear_cache">"Limpar cache"</string>
-    <string name="pref_privacy_clear_cache_summary">"Excluir todo o conteúdo da página em cache"</string>
+    <string name="pref_privacy_clear_cache_summary">"Excluir todo conteúdo da página armazenado em cache"</string>
     <string name="pref_privacy_clear_cache_dlg">"O cache será limpo."</string>
-    <string name="pref_privacy_clear_cookies">"Apagar todos os dados de cookies"</string>
-    <string name="pref_privacy_clear_cookies_summary">"Apagar todos os cookies do navegador"</string>
-    <string name="pref_privacy_clear_cookies_dlg">"Todos os cookies serão apagados."</string>
+    <string name="pref_privacy_clear_cookies">"Limpar todos os dados de cookie"</string>
+    <string name="pref_privacy_clear_cookies_summary">"Limpar todos os cookies do navegador"</string>
+    <string name="pref_privacy_clear_cookies_dlg">"Todos os cookies serão limpos."</string>
     <string name="pref_privacy_clear_history">"Limpar histórico"</string>
-    <string name="pref_privacy_clear_history_summary">"Apagar o histórico de navegação do navegador"</string>
-    <string name="pref_privacy_clear_history_dlg">"O histórico de navegação do navegador será apagado."</string>
-    <string name="pref_privacy_clear_form_data">"Apagar dados de formulário"</string>
-    <string name="pref_privacy_clear_form_data_summary">"Apagar todos os dados de formulário salvos"</string>
-    <string name="pref_privacy_clear_form_data_dlg">"Todos os dados de formulário salvos serão apagados."</string>
-    <string name="pref_privacy_clear_passwords">"Apagar senhas"</string>
-    <string name="pref_privacy_clear_passwords_summary">"Apagar todas as senhas salvas"</string>
-    <string name="pref_privacy_clear_passwords_dlg">"Todas as senhas salvas serão apagadas."</string>
+    <string name="pref_privacy_clear_history_summary">"Limpar o histórico de navegação do navegador"</string>
+    <string name="pref_privacy_clear_history_dlg">"O histórico de navegação do navegador será limpo."</string>
+    <string name="pref_privacy_clear_form_data">"Limpar dados do formulário"</string>
+    <string name="pref_privacy_clear_form_data_summary">"Limpar todos os dados de formulário salvos"</string>
+    <string name="pref_privacy_clear_form_data_dlg">"Todos os dados de formulário salvos serão limpos."</string>
+    <string name="pref_privacy_clear_passwords">"Limpar senhas"</string>
+    <string name="pref_privacy_clear_passwords_summary">"Limpar todas as senhas salvas"</string>
+    <string name="pref_privacy_clear_passwords_dlg">"Todas as senhas salvas serão excluídas."</string>
     <string name="pref_security_title">"Configurações de segurança"</string>
     <string name="pref_security_remember_passwords">"Lembrar senhas"</string>
     <string name="pref_security_remember_passwords_summary">"Salvar nomes de usuário e senhas de sites"</string>
-    <string name="pref_security_save_form_data">"Lembrar dados de formulário"</string>
-    <string name="pref_security_save_form_data_summary">"Lembrar dados digitados para uso futuro"</string>
+    <string name="pref_security_save_form_data">"Lembrar dados do formulário"</string>
+    <string name="pref_security_save_form_data_summary">"Lembrar os dados que digitei nos formulários para uso posterior."</string>
     <string name="pref_security_show_security_warning">"Mostrar avisos de segurança"</string>
-    <string name="pref_security_show_security_warning_summary">"Mostrar aviso se houver um problema com a segurança de um site"</string>
+    <string name="pref_security_show_security_warning_summary">"Mostrar aviso se houver um problema com a segurança de um site."</string>
     <string name="pref_security_accept_cookies">"Aceitar cookies"</string>
     <string name="pref_security_accept_cookies_summary">"Permitir que os sites salvem e leiam dados de \"cookie\""</string>
-    <string name="pref_text_size">"Definir tamanho do texto"</string>
+    <string name="pref_text_size">"Tamanho do texto"</string>
   <string-array name="pref_text_size_choices">
-    <item>"Bem pequeno"</item>
+    <item>"Muito pequeno"</item>
     <item>"Pequeno"</item>
     <item>"Normal"</item>
     <item>"Grande"</item>
-    <item>"Grande"</item>
+    <item>"Enorme"</item>
   </string-array>
     <string name="pref_text_size_dialogtitle">"Tamanho do texto"</string>
+    <!-- no translation found for pref_default_zoom (8076142259097187395) -->
+    <skip />
+    <!-- no translation found for pref_default_zoom_choices:0 (549583171195154919) -->
+    <!-- no translation found for pref_default_zoom_choices:1 (5619034257768161024) -->
+    <!-- no translation found for pref_default_zoom_choices:2 (3840999588443167001) -->
+    <!-- no translation found for pref_default_zoom_dialogtitle (6095974367125109021) -->
+    <skip />
     <string name="pref_extras_title">"Configurações avançadas"</string>
-    <string name="pref_extras_gears_enable">"Ativar Google Gears"</string>
-    <string name="pref_extras_gears_enable_summary">"Aplicativos que ampliam a funcionalidade do navegador"</string>
-    <string name="pref_extras_gears_settings">"Configurações do Google Gears"</string>
+    <string name="pref_extras_gears_enable">"Ativar o Gears"</string>
+    <string name="pref_extras_gears_enable_summary">"Aplicativos que estendem a funcionalidade do navegador"</string>
+    <string name="pref_extras_gears_settings">"Configurações do Gears"</string>
     <string name="pref_plugin_installed">"Lista de plug-ins"</string>
     <string name="pref_plugin_installed_empty_list">"Nenhum plug-in instalado."</string>
-    <string name="pref_extras_gears_settings_summary">"Aplicativos que ampliam a funcionalidade do navegador"</string>
-    <string name="pref_extras_reset_default">"Voltar aos valores padrão"</string>
-    <string name="pref_extras_reset_default_summary">"Apagar todos os dados do navegador e redefinir todas as configurações para os valores padrão"</string>
-    <string name="pref_extras_reset_default_dlg">"Todos os dados do navegador serão apagados e as configurações voltarão aos valores padrão."</string>
-    <string name="pref_extras_reset_default_dlg_title">"Voltar aos valores padrão"</string>
+    <string name="pref_extras_gears_settings_summary">"Aplicativos que estendem a funcionalidade do navegador"</string>
+    <string name="pref_extras_reset_default">"Redefinir para o padrão"</string>
+    <string name="pref_extras_reset_default_summary">"Limpar todos os dados do navegador e redefinir todas as configurações para o padrão"</string>
+    <string name="pref_extras_reset_default_dlg">"Todos os dados do navegador serão limpos e as configurações voltarão para os valores padrão."</string>
+    <string name="pref_extras_reset_default_dlg_title">"Redefinir para o padrão"</string>
     <string name="pref_development_title">"Depurar"</string>
-    <string name="pref_default_text_encoding">"Definir codificação do texto"</string>
+    <!-- no translation found for pref_default_text_encoding (5742965543955558478) -->
+    <skip />
   <string-array name="pref_default_text_encoding_choices">
-    <item>"Latim-1 (ISO-8859-1)"</item>
+    <item>"Latin-1 (ISO-8859-1)"</item>
     <item>"Unicode (UTF-8)"</item>
     <item>"Japonês (ISO-2022-JP)"</item>
     <item>"Japonês (SHIFT_JIS)"</item>
     <item>"Japonês (EUC-JP)"</item>
   </string-array>
-    <string name="pref_default_text_encoding_dialogtitle">"Codificação do texto"</string>
-    <string name="pref_default_text_encoding_default">"Latim-1"</string>
+    <string name="pref_default_text_encoding_dialogtitle">"Codificação de texto"</string>
+    <string name="pref_default_text_encoding_default">"Latin-1"</string>
     <string name="browserFrameRedirect">"Redirecionar"</string>
-    <string name="browserFrame307Post">"de formulário Esta página da web está sendo redirecionada. Deseja reenviar os dados de formulário digitados para o novo local?"</string>
-    <string name="browserFrameNetworkErrorLabel">"Problema de conectividade dos dados"</string>
-    <string name="browserFrameFileErrorLabel">"Problema com arquivo"</string>
+    <string name="browserFrame307Post">"Esta página da web está sendo redirecionada. Reenviar os seus dados de formulário digitados para o novo local?"</string>
+    <string name="browserFrameNetworkErrorLabel">"Problema de conectividade de dados"</string>
+    <string name="browserFrameFileErrorLabel">"Problema com o arquivo"</string>
     <string name="browserFrameFormResubmitLabel">"Confirmar"</string>
-    <string name="browserFrameFormResubmitMessage">"A página que você está tentando visualizar contém dados que já foram enviados (\"POSTDATA\"). Se os dados forem reenviados, qualquer ação realizada na página (como uma pesquisa ou compra on-line) será repetida."</string>
-    <string name="loadSuspendedTitle">"Sem conexão de rede"</string>
-    <string name="loadSuspended">"A página continuará sendo carregada assim que a conexão for restaurada."</string>
+    <string name="browserFrameFormResubmitMessage">"A página que você está tentando visualizar contém dados já enviados (\"POSTDATA\"). Se você reenviar os dados, qualquer ação executada pelo formulário na página (como uma pesquisa ou uma compra on-line) será repetida."</string>
+    <string name="loadSuspendedTitle">"Nenhuma conexão de rede"</string>
+    <string name="loadSuspended">"A página continuará a carregar após a restauração da conexão."</string>
     <string name="clear_history">"Limpar histórico"</string>
     <string name="browser_history">"Páginas visitadas recentemente"</string>
     <string name="empty_history">"O histórico do navegador está vazio."</string>
-    <!-- no translation found for add_new_bookmark (8086367791400349049) -->
-    <skip />
-    <string name="no_database">"Nenhum banco de dados."</string>
-    <string name="search_hint">"Digite o endereço da web"</string>
+    <string name="add_new_bookmark">"Adicionar favorito…"</string>
+    <string name="no_database">"Nenhum banco de dados!"</string>
+    <string name="search_hint">"Digitar endereço da web"</string>
     <string name="search_button_text">"Ir"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
     <string name="attention">"Atenção"</string>
     <string name="popup_window_attempt">"Este site está tentando abrir uma janela pop-up."</string>
     <string name="allow">"Permitir"</string>
     <string name="block">"Bloquear"</string>
-    <string name="too_many_windows_dialog_title">"Limite da janela atingido"</string>
-    <string name="too_many_windows_dialog_message">"Não foi possível abrir uma nova janela porque você já abriu o número máximo permitido."</string>
-    <string name="too_many_subwindows_dialog_title">"Pop-up já aberto"</string>
+    <string name="too_many_windows_dialog_title">"Limite de janelas atingido"</string>
+    <string name="too_many_windows_dialog_message">"Não foi possível abrir uma nova janela porque você já abriu o número máximo."</string>
+    <string name="too_many_subwindows_dialog_title">"Pop-up já aberta"</string>
     <string name="too_many_subwindows_dialog_message">"Não foi possível abrir uma nova janela pop-up porque apenas uma pode ser aberta por vez."</string>
-    <string name="download_title">"Histórico de downloads"</string>
+    <string name="download_title">"Fazer download do histórico"</string>
     <string name="download_unknown_filename">"&lt;Desconhecido&gt;"</string>
     <string name="download_menu_open">"Abrir"</string>
-    <string name="download_menu_clear">"Apagar da lista"</string>
+    <string name="download_menu_clear">"Limpar da lista"</string>
     <string name="download_menu_cancel">"Cancelar download"</string>
-    <string name="download_menu_cancel_all">"Cancelar todos os dowloads"</string>
+    <string name="download_menu_cancel_all">"Cancelar todos os downloads"</string>
     <string name="download_menu_clear_all">"Limpar lista"</string>
     <string name="download_clear_dlg_title">"Limpar"</string>
-    <string name="download_clear_dlg_msg">"Todos os itens serão apagados da lista e removidos do cache do navegador."</string>
-    <string name="download_cancel_dlg_title">"Cancelar dowloads"</string>
-    <string name="download_cancel_dlg_msg">"Todos os <xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> downloads serão cancelados e apagados do histórico de downloads."</string>
+    <string name="download_clear_dlg_msg">"Todos os itens serão limpos da lista e removidos do cache do navegador."</string>
+    <string name="download_cancel_dlg_title">"Cancelar downloads"</string>
+    <string name="download_cancel_dlg_msg">"Todos os <xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> downloads serão cancelados e limpos do histórico de downloads."</string>
     <string name="download_file_error_dlg_title">"Sem espaço"</string>
-    <string name="download_file_error_dlg_msg">"Não foi possível fazer o download de <xliff:g id="FILENAME">%s</xliff:g>."\n"Libere algum espaço no telefone e tente novamente."</string>
-    <string name="download_failed_generic_dlg_title">"Falha de download"</string>
-    <string name="download_no_sdcard_dlg_title">"Sem cartão SD"</string>
-    <string name="download_no_sdcard_dlg_msg">"Para fazer download de <xliff:g id="FILENAME">%s</xliff:g>, é necessário um cartão SD."</string>
-    <string name="download_sdcard_busy_dlg_title">"O cartão SD não está disponível"</string>
-    <!-- no translation found for download_sdcard_busy_dlg_msg (3473883538192835204) -->
-    <skip />
-    <string name="download_no_application">"Não foi possível encontrar nenhum aplicativo para abrir este arquivo."</string>
+    <string name="download_file_error_dlg_msg">"Não foi possível fazer o download do <xliff:g id="FILENAME">%s</xliff:g>."\n"Libere espaço no seu telefone e tente novamente."</string>
+    <string name="download_failed_generic_dlg_title">"Falha no download"</string>
+    <string name="download_no_sdcard_dlg_title">"Nenhum cartão SD disponível"</string>
+    <string name="download_no_sdcard_dlg_msg">"Um cartão SD é solicitado para fazer download do <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="download_sdcard_busy_dlg_title">"Cartão SD não disponível"</string>
+    <string name="download_sdcard_busy_dlg_msg">"O cartão SD está ocupado. Para permitir downloads, selecione \"Desativar armazenamento USB\" na notificação."</string>
+    <string name="download_no_application">"Não é possível encontrar um aplicativo para abrir este arquivo."</string>
     <string name="retry">"Tentar novamente"</string>
     <string name="no_downloads">"O histórico de downloads está vazio."</string>
-    <string name="download_error">"Falha de download."</string>
-    <string name="download_success">"<xliff:g id="FILE">%s</xliff:g> Download concluído."</string>
-    <string name="download_running">"Fazendo download..."</string>
-    <string name="download_pending">"Iniciando download..."</string>
-    <string name="download_pending_network">"Aguardando conexão dos dados..."</string>
-    <string name="download_running_paused">"Aguardando conexão dos dados..."</string>
+    <string name="download_error">"Falha no download."</string>
+    <string name="download_success">"Download do <xliff:g id="FILE">%s</xliff:g> concluído."</string>
+    <string name="download_running">"Download em andamento..."</string>
+    <string name="download_pending">"Iniciando download…"</string>
+    <string name="download_pending_network">"Aguardando conexão dos dados…"</string>
+    <string name="download_running_paused">"Aguardando conexão dos dados…"</string>
     <string name="download_canceled">"Download cancelado."</string>
-    <string name="download_not_acceptable">"Não é possível fazer download. O conteúdo não é compatível com o telefone."</string>
-    <string name="download_file_error">"Não é possível finalizar o download. Não há espaço suficiente."</string>
-    <string name="download_length_required">"Não é possível fazer download. O tamanho do item não pode ser determinado."</string>
-    <string name="download_precondition_failed">"Download interrompido. Não é possível restaurá-lo."</string>
-    <string name="activity_instrumentation_test_runner">"Executor de testes de navegador"</string>
+    <string name="download_not_acceptable">"Não foi possível fazer o download. O conteúdo não é suportado no telefone."</string>
+    <string name="download_file_error">"Não é possível concluir o download. Não há espaço suficiente."</string>
+    <string name="download_length_required">"Não é possível fazer o download. O tamanho do item não pode ser determinado."</string>
+    <string name="download_precondition_failed">"Download interrompido. Não é possível retomar."</string>
+    <string name="activity_instrumentation_test_runner">"Executador de teste do navegador"</string>
     <!-- no translation found for homepage_base (7888126987935305566) -->
     <skip />
     <!-- no translation found for search_the_web (6046130189241962337) -->
     <skip />
-    <string name="permlab_readHistoryBookmarks">"ler histórico e favoritos do navegador"</string>
-    <string name="permdesc_readHistoryBookmarks">"Permite que o aplicativo leia todos os URLs visitados pelo navegador, bem como todos os seus favoritos."</string>
-    <string name="permlab_writeHistoryBookmarks">"gravar histórico e favoritos do navegador"</string>
-    <string name="permdesc_writeHistoryBookmarks">"Permite que um aplicativo modifique o histórico ou os favoritos do navegador armazenados no seu telefone. Aplicativos maliciosos podem usar isso para apagar ou modificar os dados do navegador."</string>
-    <!-- no translation found for query_data_prompt (5474381240981604223) -->
-    <skip />
-    <!-- no translation found for query_data_message (8789381063185445197) -->
-    <skip />
-    <!-- no translation found for location_prompt (226262202057302423) -->
-    <skip />
-    <!-- no translation found for location_message (1729456751935683242) -->
-    <skip />
-    <!-- no translation found for shortcut_prompt (437193299088893596) -->
-    <skip />
-    <!-- no translation found for shortcut_message (4793042709293755892) -->
-    <skip />
-    <string name="settings_message">"A tabela a seguir mostra as permissões que você concedeu a cada site que realizou uma tentativa de utilizar o Google Gears."</string>
-    <!-- no translation found for filepicker_message (4929726371602896039) -->
-    <skip />
-    <!-- no translation found for image_message (5450245866521896891) -->
-    <skip />
-    <string name="settings_title">"Configurações do Google Gears"</string>
-    <string name="privacy_policy">"Leia a política de privacidade do site para saber como sua localização será utilizada."</string>
-    <!-- no translation found for settings_storage_title (7089119630457156408) -->
-    <skip />
-    <!-- no translation found for settings_storage_subtitle_on (2733295483569432111) -->
-    <skip />
-    <!-- no translation found for settings_storage_subtitle_off (1338039396087898813) -->
-    <skip />
-    <!-- no translation found for settings_location_title (4953062923509886651) -->
-    <skip />
-    <!-- no translation found for settings_location_subtitle_on (1496219621849158879) -->
-    <skip />
-    <!-- no translation found for settings_location_subtitle_off (5216466051810596189) -->
-    <skip />
-    <!-- no translation found for settings_remove_site (1822247070226589958) -->
-    <skip />
-    <!-- no translation found for settings_empty (2008952224378583146) -->
-    <skip />
-    <!-- no translation found for settings_confirmation_remove_title (5360857296753219635) -->
-    <skip />
-    <!-- no translation found for settings_confirmation_remove (585560170733446898) -->
-    <skip />
-    <!-- no translation found for storage_notification (6534213782873968255) -->
-    <skip />
-    <!-- no translation found for storage_notification_alwaysdeny (5473208033665783513) -->
-    <skip />
-    <!-- no translation found for location_notification (3495804750470905804) -->
-    <skip />
-    <!-- no translation found for location_notification_alwaysdeny (6184925953783312629) -->
-    <skip />
-    <!-- no translation found for shortcut_notification (1659700220868444568) -->
-    <skip />
-    <!-- no translation found for permission_button_alwaysdeny (3837055994905214848) -->
-    <skip />
-    <!-- no translation found for permission_button_allow (7301874925704148242) -->
-    <skip />
-    <!-- no translation found for permission_button_deny (104712269725153018) -->
-    <skip />
-    <!-- no translation found for shortcut_button_alwaysdeny (4172277731325126605) -->
-    <skip />
+    <string name="query_data_prompt">"Permitir o armazenamento"</string>
+    <string name="query_data_message">"Este site deseja armazenar informações no seu telefone."</string>
+    <string name="location_prompt">"Acesse o seu local"</string>
+    <string name="location_message">"Este site deseja ter acesso ao seu local."</string>
+    <string name="shortcut_prompt">"Criar um atalho"</string>
+    <string name="shortcut_message">"Este site deseja criar um atalho para esta página na sua tela inicial."</string>
+    <string name="settings_message">"A tabela abaixo mostra as permissões concedidas por você a cada site que tentou usar o Gears."</string>
+    <string name="filepicker_message">"Selecionador de arquivos"</string>
+    <string name="image_message">"Imagem escolhida"</string>
+    <string name="settings_title">"Configurações do Gears"</string>
+    <string name="privacy_policy">"Leia a política de privacidade do site para ver como o seu local será usado."</string>
+    <string name="settings_storage_title">"Permitir armazenamento local"</string>
+    <string name="settings_storage_subtitle_on">"Este site pode salvar informações no seu telefone."</string>
+    <string name="settings_storage_subtitle_off">"Este site não pode salvar informações no seu telefone."</string>
+    <string name="settings_location_title">"Permitir detecção de local"</string>
+    <string name="settings_location_subtitle_on">"Este site pode ler o seu local atual."</string>
+    <string name="settings_location_subtitle_off">"Este site não pode ler o seu local atual"</string>
+    <string name="settings_remove_site">"Remover este site do Gears"</string>
+    <string name="settings_empty">"Nenhuma permissão definida"</string>
+    <string name="settings_confirmation_remove_title">"Remover este site"</string>
+    <string name="settings_confirmation_remove">"Todas as permissões serão limpas e quaisquer dados armazenados no seu telefone pelo site serão excluídos."</string>
+    <string name="storage_notification">"Este site armazenará informações neste telefone."\n" Altere esta configuração em:"\n" Configurações -&gt; Configurações do Gears"</string>
+    <string name="storage_notification_alwaysdeny">"Este site nunca armazenará informações neste telefone."\n" Altere esta configuração em:"\n" Configurações -&gt; Configurações do Gears"</string>
+    <string name="location_notification">"Este site pode acessar o seu local atual."\n" Altere esta configuração em:"\n" Configurações -&gt; Configurações do Gears"</string>
+    <string name="location_notification_alwaysdeny">"Este site não acessará o seu local atual."\n" Altere esta configuração em:"\n" Configurações -&gt; Configurações do Gears"</string>
+    <string name="shortcut_notification">"Atalho criado"</string>
+    <string name="permission_button_alwaysdeny">"Nunca permitir"</string>
+    <string name="permission_button_allow">"OK"</string>
+    <string name="permission_button_deny">"Cancelar"</string>
+    <string name="shortcut_button_alwaysdeny">"Nunca permitir"</string>
     <string name="shortcut_button_allow">"OK"</string>
     <string name="shortcut_button_deny">"Cancelar"</string>
     <string name="settings_button_allow">"Aplicar"</string>
@@ -325,9 +295,8 @@
     <string name="remove">"Remover"</string>
     <string name="local_storage">"Armazenamento local"</string>
     <string name="allowed">"Permitido"</string>
-    <string name="denied">"Rejeitado"</string>
-    <string name="unrecognized_dialog_message">"Tipo de caixa de diálogo desconhecido"</string>
+    <string name="denied">"Negado"</string>
+    <string name="unrecognized_dialog_message">"Tipo de caixa de diálogo não reconhecido"</string>
     <string name="default_button">"OK"</string>
-    <!-- no translation found for zoom_overview_button_text (4146579940085488881) -->
-    <skip />
+    <string name="zoom_overview_button_text">"Visão geral"</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index b4aa71b..bdfb566 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -21,236 +21,248 @@
     <string name="tab_history">"История"</string>
     <string name="added_to_bookmarks">"Добавлено в закладки"</string>
     <string name="removed_from_bookmarks">"Удалено из закладок"</string>
-    <string name="sign_in_to">"Регистрация в <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
-    <string name="username">"Название"</string>
+    <string name="sign_in_to">"Войти в <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
+    <string name="username">"Имя"</string>
     <string name="password">"Пароль"</string>
-    <string name="action">"Войти"</string>
+    <string name="action">"Вход"</string>
+    <!-- no translation found for bookmarks_search (5229596268214362873) -->
+    <skip />
     <string name="cancel">"Отмена"</string>
     <string name="ok">"ОК"</string>
   <plurals name="matches_found">
-    <item quantity="zero">"Совпадений нет"</item>
-    <item quantity="one">"1 совпадение"</item>
-    <item quantity="few">"Совпадений: <xliff:g id="NUMBER">%d</xliff:g>"</item>
-    <item quantity="other">"Совпадений: <xliff:g id="NUMBER">%d</xliff:g>"</item>
+    <item quantity="zero">"Соответствий нет"</item>
+    <item quantity="one">"1 соответствие"</item>
+    <item quantity="few">"Соответствий: <xliff:g id="NUMBER">%d</xliff:g>"</item>
+    <item quantity="other">"Соответствий: <xliff:g id="NUMBER">%d</xliff:g>"</item>
   </plurals>
-    <string name="page_info">"Сведения о странице"</string>
-    <string name="page_info_view">"Просмотреть сведения о странице"</string>
+    <string name="page_info">"Информация о странице"</string>
+    <string name="page_info_view">"Просмотр информации о странице"</string>
     <string name="page_info_address">"Адрес:"</string>
-    <string name="ssl_warnings_header">"Есть проблемы с сертификатом безопасности для этого сайта."</string>
+    <string name="ssl_warnings_header">"У этого сайта проблемы с сертификатом безопасности."</string>
     <string name="ssl_continue">"Продолжить"</string>
-    <string name="security_warning">"Предупреждение о безопасности"</string>
+    <string name="security_warning">"Угроза безопасности"</string>
     <string name="view_certificate">"Просмотреть сертификат"</string>
-    <string name="ssl_untrusted">"Этот сертификат получен из ненадежного центра сертификации."</string>
-    <string name="ssl_mismatch">"Название сайта не соответствует названию сертификата."</string>
+    <string name="ssl_untrusted">"Этот сертификат получен из ненадежных источников."</string>
+    <string name="ssl_mismatch">"Название сайта не соответствует названию в сертификате."</string>
     <string name="ssl_expired">"Срок действия сертификата истек."</string>
-    <string name="ssl_not_yet_valid">"Этот сертификат пока не действителен."</string>
+    <string name="ssl_not_yet_valid">"Данный сертификат еще недействителен."</string>
     <string name="ssl_certificate">"Сертификат безопасности"</string>
-    <string name="ssl_certificate_is_valid">"Это действительный сертификат."</string>
-    <string name="issued_to">"Кому выдан:"</string>
-    <string name="common_name">"Обычное название:"</string>
+    <string name="ssl_certificate_is_valid">"Этот сертификат действителен."</string>
+    <string name="issued_to">"Владелец сертификата:"</string>
+    <string name="common_name">"Стандартное имя:"</string>
     <string name="org_name">"Организация:"</string>
-    <string name="org_unit">"Подразделение:"</string>
-    <string name="issued_by">"Кем выдан:"</string>
+    <string name="org_unit">"Подразделение организации:"</string>
+    <string name="issued_by">"Выпущен:"</string>
     <string name="validity_period">"Срок действия:"</string>
-    <string name="issued_on">"Когда выдан:"</string>
-    <string name="expires_on">"Действителен до:"</string>
-    <string name="retrieving_creds_dlg_msg">"Получение сведений о входе…"</string>
-    <string name="stopping">"Остановка загрузки…"</string>
-    <string name="stop">"Остановить"</string>
+    <string name="issued_on">"Дата издания:"</string>
+    <string name="expires_on">"Дата окончания действия:"</string>
+    <string name="retrieving_creds_dlg_msg">"Получение регистрационной информации..."</string>
+    <string name="stopping">"Остановка..."</string>
+    <string name="stop">"Стоп"</string>
     <string name="reload">"Обновить"</string>
-    <string name="forward">"Вперед"</string>
+    <string name="forward">"Переслать"</string>
     <string name="save">"ОК"</string>
     <string name="do_not_save">"Отмена"</string>
-    <string name="location">"Адрес"</string>
-    <string name="name">"Название"</string>
+    <string name="location">"Место"</string>
+    <string name="name">"Имя"</string>
     <string name="http">"http://"</string>
     <string name="save_to_bookmarks">"Добавить в закладки"</string>
     <string name="edit_bookmark">"Изменить закладку"</string>
-    <string name="create_shortcut_bookmark">"Добавить ярлык на главный экран"</string>
+    <string name="create_shortcut_bookmark">"Добавить ярлык на главную страницу"</string>
     <string name="open_bookmark">"Открыть"</string>
     <string name="remove_bookmark">"Удалить закладку"</string>
     <string name="remove_history_item">"Удалить из истории"</string>
-    <string name="bookmark_saved">"Сохранено в заклкдках."</string>
-    <string name="bookmark_needs_title">"У закладки должно быть название."</string>
-    <string name="bookmark_needs_url">"У закладки должен быть адрес."</string>
+    <string name="bookmark_saved">"Сохранено в закладках."</string>
+    <string name="bookmark_needs_title">"Необходимо указать имя закладки."</string>
+    <string name="bookmark_needs_url">"Необходимо указать место закладки."</string>
     <string name="empty_bookmark">"Невозможно создать пустую закладку."</string>
     <string name="bookmark_url_not_valid">"URL недействителен."</string>
-    <string name="delete_bookmark">"Удаление"</string>
+    <string name="delete_bookmark">"Удалить"</string>
     <string name="bookmark_page">"Добавить в закладки последнюю просмотренную страницу"</string>
     <string name="current_page">"из "</string>
     <string name="delete_bookmark_warning">"Закладка \"<xliff:g id="BOOKMARK">%s</xliff:g>\" будет удалена."</string>
     <string name="open_in_new_window">"Открыть в новом окне"</string>
     <string name="new_window">"Новое окно"</string>
-    <string name="goto_dot">"Выбрать"</string>
+    <string name="goto_dot">"Поиск"</string>
     <string name="find_dot">"Найти на странице"</string>
     <string name="select_dot">"Выбрать текст"</string>
     <string name="view_tabs">"Обзор окон"</string>
     <string name="view_tabs_condensed">"Окна"</string>
-    <string name="tab_picker_title">"Текущие окна"</string>
-    <string name="tab_picker_view_tab">"Просмотреть"</string>
+    <string name="tab_picker_title">"Открытые окна"</string>
+    <string name="tab_picker_view_tab">"Просмотр"</string>
     <string name="tab_picker_new_tab">"Новое окно"</string>
     <string name="tab_picker_remove_tab">"Закрыть"</string>
     <string name="tab_picker_bookmark">"Добавить в закладки"</string>
     <string name="tab_picker_send_url">"Отправить ссылку"</string>
     <string name="bookmarks">"Закладки"</string>
-    <string name="shortcut_bookmark">"Закладка"</string>
+    <string name="shortcut_bookmark">"Добавить в закладки"</string>
     <string name="history">"История"</string>
     <string name="menu_view_download">"Загрузки"</string>
     <string name="share_page">"Отправить страницу"</string>
     <string name="contextmenu_openlink">"Открыть"</string>
     <string name="contextmenu_openlink_newwindow">"Открыть в новом окне"</string>
-    <string name="contextmenu_bookmark_thislink">"Добавить в закладки"</string>
+    <string name="contextmenu_bookmark_thislink">"Добавить ссылку в закладки"</string>
     <string name="contextmenu_savelink">"Сохранить ссылку"</string>
     <string name="contextmenu_sharelink">"Отправить ссылку"</string>
     <string name="contextmenu_copy">"Копировать"</string>
-    <string name="contextmenu_copylink">"Копировать ссылку"</string>
+    <string name="contextmenu_copylink">"Копировать URL ссылки"</string>
     <string name="contextmenu_download_image">"Сохранить изображение"</string>
-    <string name="contextmenu_view_image">"Просмотреть изображение"</string>
-    <string name="contextmenu_dial_dot">"Вызвать…"</string>
-    <string name="contextmenu_add_contact">"Добавить в адресную книгу"</string>
-    <string name="contextmenu_send_mail">"Отправить сообщение электронной почты"</string>
-    <string name="contextmenu_map">"На карте"</string>
-    <string name="clear">"Очистка"</string>
+    <string name="contextmenu_view_image">"Просмотр изображения"</string>
+    <string name="contextmenu_dial_dot">"Набор номера..."</string>
+    <string name="contextmenu_add_contact">"Добавить контакт"</string>
+    <string name="contextmenu_send_mail">"Отправить сообщение по электронной почте"</string>
+    <string name="contextmenu_map">"Карта"</string>
+    <string name="clear">"Очистить"</string>
     <string name="replace">"Заменить"</string>
     <string name="browser_bookmarks_page_bookmarks_text">"Закладки"</string>
     <string name="menu_preferences">"Настройки"</string>
-    <string name="pref_content_title">"Настройки содержания страниц"</string>
-    <string name="pref_content_load_images">"Загружать изображения"</string>
-    <string name="pref_content_load_images_summary">"Показывать изображения на страницах"</string>
-    <string name="pref_content_block_popups">"Заблокировать всплывающие окна"</string>
-    <string name="pref_content_javascript">"Разрешить JavaScript"</string>
+    <string name="pref_content_title">"Настройки содержания страницы"</string>
+    <string name="pref_content_load_images">"Загружать картинки"</string>
+    <string name="pref_content_load_images_summary">"Показывать картинки на веб-страницах"</string>
+    <string name="pref_content_block_popups">"Блокировать всплывающие окна"</string>
+    <string name="pref_content_javascript">"Включить JavaScript"</string>
     <string name="pref_content_open_in_background">"Открывать в фоновом режиме"</string>
-    <string name="pref_content_open_in_background_summary">"Новые окна открываются позади текущего"</string>
+    <string name="pref_content_open_in_background_summary">"Новые окна открываются позади текущего окна"</string>
     <string name="pref_content_homepage">"Выбрать главную страницу"</string>
-    <string name="pref_content_autofit">"Автоподбор размеров страниц"</string>
-    <string name="pref_content_autofit_summary">"Форматировать веб-страницы по размеру экрана"</string>
+    <string name="pref_content_autofit">"Подгонять страницы"</string>
+    <string name="pref_content_autofit_summary">"Подгонять веб-страницы под размер экрана"</string>
     <string name="pref_privacy_title">"Настройки конфиденциальности"</string>
     <string name="pref_privacy_clear_cache">"Очистить кэш"</string>
-    <string name="pref_privacy_clear_cache_summary">"Удалить все кэшированные страницы"</string>
+    <string name="pref_privacy_clear_cache_summary">"Удалить все кэшированное содержание страницы"</string>
     <string name="pref_privacy_clear_cache_dlg">"Кэш будет очищен."</string>
-    <string name="pref_privacy_clear_cookies">"Удалить все данные cookie"</string>
-    <string name="pref_privacy_clear_cookies_summary">"Удалить все файлы cookie браузера"</string>
+    <string name="pref_privacy_clear_cookies">"Очистить все данные cookie"</string>
+    <string name="pref_privacy_clear_cookies_summary">"Очистить все cookie браузера"</string>
     <string name="pref_privacy_clear_cookies_dlg">"Все cookie будут удалены."</string>
     <string name="pref_privacy_clear_history">"Очистить историю"</string>
-    <string name="pref_privacy_clear_history_summary">"Очистить историю посещений браузера"</string>
-    <string name="pref_privacy_clear_history_dlg">"История посещений браузера будет удалена."</string>
-    <string name="pref_privacy_clear_form_data">"Удалить данные форм"</string>
-    <string name="pref_privacy_clear_form_data_summary">"Удалить все сохраненные данные форм"</string>
-    <string name="pref_privacy_clear_form_data_dlg">"Все сохраненные данные форм будут удалены."</string>
-    <string name="pref_privacy_clear_passwords">"Удалить пароли"</string>
+    <string name="pref_privacy_clear_history_summary">"Очистить историю браузера"</string>
+    <string name="pref_privacy_clear_history_dlg">"История браузера будет очищена."</string>
+    <string name="pref_privacy_clear_form_data">"Очистить данные формы"</string>
+    <string name="pref_privacy_clear_form_data_summary">"Очистить все данные сохраненных форм"</string>
+    <string name="pref_privacy_clear_form_data_dlg">"Все данные сохраненных форм будут удалены."</string>
+    <string name="pref_privacy_clear_passwords">"Очистить пароли"</string>
     <string name="pref_privacy_clear_passwords_summary">"Удалить все сохраненные пароли"</string>
     <string name="pref_privacy_clear_passwords_dlg">"Все сохраненные пароли будут удалены."</string>
     <string name="pref_security_title">"Настройки безопасности"</string>
-    <string name="pref_security_remember_passwords">"Запоминать пароли"</string>
-    <string name="pref_security_remember_passwords_summary">"Сохранять имена пользователя и пароли для веб-сайтов"</string>
-    <string name="pref_security_save_form_data">"Запоминать данные форм"</string>
-    <string name="pref_security_save_form_data_summary">"Запоминать данные форм для дальнейшего использования"</string>
-    <string name="pref_security_show_security_warning">"Показывать предупреждения о безопасности"</string>
-    <string name="pref_security_show_security_warning_summary">"Показывать предупреждение при наличии проблем с безопасностью сайта"</string>
+    <string name="pref_security_remember_passwords">"Сохранять пароли"</string>
+    <string name="pref_security_remember_passwords_summary">"Сохранять имена пользователей и пароли для веб-сайтов"</string>
+    <string name="pref_security_save_form_data">"Сохранять данные форм"</string>
+    <string name="pref_security_save_form_data_summary">"Запоминать введенные данные для дальнейшего использования"</string>
+    <string name="pref_security_show_security_warning">"Показывать предупреждения безопасности"</string>
+    <string name="pref_security_show_security_warning_summary">"Сообщать о найденных проблемах с безопасностью сайта"</string>
     <string name="pref_security_accept_cookies">"Разрешить cookie"</string>
-    <string name="pref_security_accept_cookies_summary">"Разрешить сайтам сохранять и считывать данные cookie"</string>
-    <string name="pref_text_size">"Выбрать размер текста"</string>
+    <string name="pref_security_accept_cookies_summary">"Разрешить сайтам сохранять и читать файлы cookie"</string>
+    <string name="pref_text_size">"Размер текста"</string>
   <string-array name="pref_text_size_choices">
-    <item>"Очень мелкий"</item>
     <item>"Мелкий"</item>
-    <item>"Обычный"</item>
-    <item>"Крупный"</item>
-    <item>"Очень крупный"</item>
+    <item>"Маленький"</item>
+    <item>"Средний"</item>
+    <item>"Большой"</item>
+    <item>"Огромный"</item>
   </string-array>
     <string name="pref_text_size_dialogtitle">"Размер текста"</string>
-    <string name="pref_extras_title">"Дополнительные настройки"</string>
+    <!-- no translation found for pref_default_zoom (8076142259097187395) -->
+    <skip />
+    <!-- no translation found for pref_default_zoom_choices:0 (549583171195154919) -->
+    <!-- no translation found for pref_default_zoom_choices:1 (5619034257768161024) -->
+    <!-- no translation found for pref_default_zoom_choices:2 (3840999588443167001) -->
+    <!-- no translation found for pref_default_zoom_dialogtitle (6095974367125109021) -->
+    <skip />
+    <string name="pref_extras_title">"Расширенные настройки"</string>
     <string name="pref_extras_gears_enable">"Включить Gears"</string>
     <string name="pref_extras_gears_enable_summary">"Приложения, расширяющие возможности браузера"</string>
     <string name="pref_extras_gears_settings">"Настройки Gears"</string>
     <string name="pref_plugin_installed">"Список плагинов"</string>
     <string name="pref_plugin_installed_empty_list">"Нет установленных плагинов."</string>
     <string name="pref_extras_gears_settings_summary">"Приложения, расширяющие возможности браузера"</string>
-    <string name="pref_extras_reset_default">"Восстановить значения по умолчанию"</string>
-    <string name="pref_extras_reset_default_summary">"Удалить все данные браузера и восстановить настройки по умолчанию"</string>
-    <string name="pref_extras_reset_default_dlg">"Все данные бразуера будут удалены, а для настроек будут восстановлены значения по умолчанию."</string>
-    <string name="pref_extras_reset_default_dlg_title">"Восстановить значения по умолчанию"</string>
+    <string name="pref_extras_reset_default">"Восстановить настройки по умолчанию"</string>
+    <string name="pref_extras_reset_default_summary">"Очистить все данные браузера и восстановить все настройки по умолчанию"</string>
+    <string name="pref_extras_reset_default_dlg">"Все данные браузера будут удалены, настройки по умолчанию будут восстановлены."</string>
+    <string name="pref_extras_reset_default_dlg_title">"Восстановить настройки по умолчанию"</string>
     <string name="pref_development_title">"Отладка"</string>
-    <string name="pref_default_text_encoding">"Выбрать кодировку текста"</string>
+    <!-- no translation found for pref_default_text_encoding (5742965543955558478) -->
+    <skip />
   <string-array name="pref_default_text_encoding_choices">
-    <item>"Латиница-1 (ISO-8859-1)"</item>
-    <item>"Юникод (UTF-8)"</item>
+    <item>"Latin-1 (ISO-8859-1)"</item>
+    <item>"Unicode (UTF-8)"</item>
     <item>"Японская (ISO-2022-JP)"</item>
     <item>"Японская (SHIFT_JIS)"</item>
     <item>"Японская (EUC-JP)"</item>
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle">"Кодировка текста"</string>
-    <string name="pref_default_text_encoding_default">"Латиница-1"</string>
+    <string name="pref_default_text_encoding_default">"Latin-1"</string>
     <string name="browserFrameRedirect">"Перенаправление"</string>
-    <string name="browserFrame307Post">"С этой веб-страницы выполняется перенаправление. Отправить введенные данные формы по новому адресу?"</string>
-    <string name="browserFrameNetworkErrorLabel">"Неполадка подключения для передачи данных"</string>
+    <string name="browserFrame307Post">"Вы перенаправлены с этой страницы. Отправить ваши данные формы в новое место?"</string>
+    <string name="browserFrameNetworkErrorLabel">"Проблема с подключением"</string>
     <string name="browserFrameFileErrorLabel">"Проблема с файлом"</string>
     <string name="browserFrameFormResubmitLabel">"Подтверждение"</string>
-    <string name="browserFrameFormResubmitMessage">"Страница, которую вы пытаетесь просмотреть, содержит отправленные ранее данные (\"POSTDATA\"). При повторной отправке данных выполняемое формой действие (например поиск или онлайн-покупка) будет повторено."</string>
-    <string name="loadSuspendedTitle">"Нет сетевого подключения"</string>
-    <string name="loadSuspended">"Загрузка страницы будет продолжена после восстановления подключения."</string>
+    <string name="browserFrameFormResubmitMessage">"Страница, которую вы пытаетесь просмотреть, содержит уже отправленные данные (\"POSTDATA\"). Если отправить их еще раз, произойдет повтор всех действий, которые форма выполнила на странице (например, поиск или покупка через Интернет)."</string>
+    <string name="loadSuspendedTitle">"Сетевое подключение отсутствует"</string>
+    <string name="loadSuspended">"Загрузка страницы продолжится после восстановления соединения."</string>
     <string name="clear_history">"Очистить историю"</string>
     <string name="browser_history">"Недавно посещенные страницы"</string>
-    <string name="empty_history">"История бразуера пуста."</string>
+    <string name="empty_history">"История браузера пуста."</string>
     <string name="add_new_bookmark">"Добавить закладку…"</string>
-    <string name="no_database">"Нет базы данных!"</string>
-    <string name="search_hint">"Введите веб-адрес"</string>
-    <string name="search_button_text">"Перейти"</string>
+    <string name="no_database">"База данных отсутствует!"</string>
+    <string name="search_hint">"Укажите адрес в Интернете"</string>
+    <string name="search_button_text">"Поиск"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
     <string name="attention">"Внимание"</string>
     <string name="popup_window_attempt">"Этот сайт пытается открыть всплывающее окно."</string>
     <string name="allow">"Разрешить"</string>
     <string name="block">"Заблокировать"</string>
-    <string name="too_many_windows_dialog_title">"Предельное количество окон"</string>
-    <string name="too_many_windows_dialog_message">"Открыть новое окно невозможно, потому что открыто максимальное количество окон."</string>
+    <string name="too_many_windows_dialog_title">"Открыто максимальное число окон"</string>
+    <string name="too_many_windows_dialog_message">"Открыто максимальное число окон, поэтому открыть новое окно невозможно."</string>
     <string name="too_many_subwindows_dialog_title">"Всплывающее окно уже открыто"</string>
-    <string name="too_many_subwindows_dialog_message">"Не удалось открыть всплывающее окно, потому что нельзя открыть больше одного такого окна одновременно."</string>
+    <string name="too_many_subwindows_dialog_message">"Невозможно открыть более одного всплывающего окна одновременно."</string>
     <string name="download_title">"История загрузок"</string>
-    <string name="download_unknown_filename">"&lt;Неизвестно&gt;"</string>
+    <string name="download_unknown_filename">"&lt;неизвестно&gt;"</string>
     <string name="download_menu_open">"Открыть"</string>
     <string name="download_menu_clear">"Удалить из списка"</string>
     <string name="download_menu_cancel">"Отменить загрузку"</string>
     <string name="download_menu_cancel_all">"Отменить все загрузки"</string>
     <string name="download_menu_clear_all">"Очистить список"</string>
-    <string name="download_clear_dlg_title">"Очистка"</string>
-    <string name="download_clear_dlg_msg">"Все элементы будут удалены из списка и кэша браузера."</string>
-    <string name="download_cancel_dlg_title">"Отмена загрузок"</string>
+    <string name="download_clear_dlg_title">"Очистить"</string>
+    <string name="download_clear_dlg_msg">"Будут удалены все данные из списка и кэша браузера."</string>
+    <string name="download_cancel_dlg_title">"Отменить загрузки"</string>
     <string name="download_cancel_dlg_msg">"Все загрузки (<xliff:g id="DOWNLOAD_COUNT">%d</xliff:g>) будут отменены и удалены из истории загрузок."</string>
     <string name="download_file_error_dlg_title">"Недостаточно места"</string>
-    <string name="download_file_error_dlg_msg">"Не удалось загрузить <xliff:g id="FILENAME">%s</xliff:g>."\n"Освободите пространство на телефоне и повторите попытку."</string>
-    <string name="download_failed_generic_dlg_title">"Загрузка не удалась"</string>
-    <string name="download_no_sdcard_dlg_title">"Нет карты SD"</string>
-    <string name="download_no_sdcard_dlg_msg">"Для загрузки файла <xliff:g id="FILENAME">%s</xliff:g> нужна карта SD."</string>
-    <string name="download_sdcard_busy_dlg_title">"Карта SD недоступна"</string>
+    <string name="download_file_error_dlg_msg">"Невозможно загрузить <xliff:g id="FILENAME">%s</xliff:g>."\n"Освободите место в памяти телефона и повторите попытку."</string>
+    <string name="download_failed_generic_dlg_title">"Ошибка загрузки"</string>
+    <string name="download_no_sdcard_dlg_title">"SD-карта отсутствует"</string>
+    <string name="download_no_sdcard_dlg_msg">"Для загрузки <xliff:g id="FILENAME">%s</xliff:g> необходима SD-карта."</string>
+    <string name="download_sdcard_busy_dlg_title">"SD-карта недоступна"</string>
     <string name="download_sdcard_busy_dlg_msg">"Карта SD занята. Чтобы разрешить загрузки, выберите \"Выключить USB-накопитель\" в уведомлении."</string>
-    <string name="download_no_application">"Не удалось найти приложение для открытия этого файла."</string>
-    <string name="retry">"Повторить"</string>
+    <string name="download_no_application">"Приложение для открытия этого файла не найдено."</string>
+    <string name="retry">"Повторить попытку"</string>
     <string name="no_downloads">"История загрузок пуста."</string>
-    <string name="download_error">"Загрузка безуспешна."</string>
-    <string name="download_success">"Загрузка файла <xliff:g id="FILE">%s</xliff:g> завершена."</string>
-    <string name="download_running">"Выполняется загрузка…"</string>
-    <string name="download_pending">"Загрузка начинается…"</string>
+    <string name="download_error">"Ошибка загрузки."</string>
+    <string name="download_success">"Загрузка <xliff:g id="FILE">%s</xliff:g> завершена."</string>
+    <string name="download_running">"Загрузка..."</string>
+    <string name="download_pending">"Начинается загрузка…"</string>
     <string name="download_pending_network">"Ожидание подключения для передачи данных…"</string>
     <string name="download_running_paused">"Ожидание подключения для передачи данных…"</string>
     <string name="download_canceled">"Загрузка отменена."</string>
     <string name="download_not_acceptable">"Загрузка невозможна. Содержание не поддерживается телефоном."</string>
     <string name="download_file_error">"Невозможно завершить загрузку. Недостаточно места."</string>
-    <string name="download_length_required">"Загрузка невозможна. Не удается определить размер элемента."</string>
-    <string name="download_precondition_failed">"Загрузка прервана и не может быть продолжена."</string>
-    <string name="activity_instrumentation_test_runner">"Проверка браузера"</string>
-    <string name="permlab_readHistoryBookmarks">"считывать историю и закладки браузера"</string>
-    <string name="permdesc_readHistoryBookmarks">"Позволяет приложению считывать все URL, открытые через браузер, и все закладки браузера."</string>
-    <string name="permlab_writeHistoryBookmarks">"записывать историю и закладки браузера"</string>
-    <string name="permdesc_writeHistoryBookmarks">"Позволяет приложению изменять сохраненные в телефоне историю и закладки браузера. Вредоносное ПО сможет стирать или изменять данные браузера."</string>
+    <string name="download_length_required">"Загрузка невозможна. Размер файла не определен."</string>
+    <string name="download_precondition_failed">"Загрузка прервана и не может быть возобновлена."</string>
+    <string name="activity_instrumentation_test_runner">"Тестирование браузера"</string>
+    <!-- no translation found for homepage_base (7888126987935305566) -->
+    <skip />
+    <!-- no translation found for search_the_web (6046130189241962337) -->
+    <skip />
     <string name="query_data_prompt">"Разрешить сохранение"</string>
     <string name="query_data_message">"Этот веб-сайт пытается сохранить данные на вашем телефоне."</string>
     <string name="location_prompt">"Доступ к вашему местоположению"</string>
     <string name="location_message">"Этот веб-сайт пытается получить доступ к данным о вашем местоположении."</string>
     <string name="shortcut_prompt">"Создать ярлык"</string>
     <string name="shortcut_message">"Этот веб-сайт пытается создать ярлык данной страницы на главном экране телефона."</string>
-    <string name="settings_message">"В таблице ниже показаны разрешения, которые вы дали сайтам, пытавшимся использовать Gears."</string>
+    <string name="settings_message">"В таблице ниже показаны разрешения, установленные вами для всех сайтов, пытавшихся использовать Gears."</string>
     <string name="filepicker_message">"Выбор файлов"</string>
     <string name="image_message">"Выбранное изображение"</string>
     <string name="settings_title">"Настройки Gears"</string>
-    <string name="privacy_policy">"Прочитайте политику конфиденциальности сайта, чтобы узнать, как будут использованы данные о вашем местоположении."</string>
+    <string name="privacy_policy">"Ознакомьтесь с политикой конфиденциальности сайта, чтобы узнать, как будет использоваться информация о вашем местоположении."</string>
     <string name="settings_storage_title">"Разрешить сохранение в памяти"</string>
     <string name="settings_storage_subtitle_on">"Этот сайт может сохранять данные на вашем телефоне"</string>
     <string name="settings_storage_subtitle_off">"Этот сайт не может сохранять данные на вашем телефоне"</string>
@@ -279,10 +291,10 @@
     <string name="filepicker_path">"путь:"</string>
     <string name="filepicker_no_files_selected">"Файлы не выбраны"</string>
     <string name="filepicker_one_file_selected">"Выбран один файл"</string>
-    <string name="filepicker_some_files_selected">"файлов выбрано"</string>
+    <string name="filepicker_some_files_selected">"файл(ов) выбрано"</string>
     <string name="remove">"Удалить"</string>
-    <string name="local_storage">"Локальное хранение"</string>
-    <string name="allowed">"Разрешено"</string>
+    <string name="local_storage">"Сохранение в памяти"</string>
+    <string name="allowed">"Разрешенные"</string>
     <string name="denied">"Запрещено"</string>
     <string name="unrecognized_dialog_message">"Неизвестный тип диалога"</string>
     <string name="default_button">"ОК"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
new file mode 100644
index 0000000..b38dc08
--- /dev/null
+++ b/res/values-sv/strings.xml
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="application_name">"Webbläsare"</string>
+    <string name="tab_bookmarks">"Bokmärken"</string>
+    <string name="tab_most_visited">"Mest besökta"</string>
+    <string name="tab_history">"Historik"</string>
+    <string name="added_to_bookmarks">"Har lagts till i Bokmärken"</string>
+    <string name="removed_from_bookmarks">"Har tagits bort från Bokmärken"</string>
+    <string name="sign_in_to">"Logga in på <xliff:g id="HOSTNAME">%s1</xliff:g> <xliff:g id="REALM">%s2</xliff:g>"</string>
+    <string name="username">"Namn"</string>
+    <string name="password">"Lösenord"</string>
+    <string name="action">"Logga in"</string>
+    <!-- no translation found for bookmarks_search (5229596268214362873) -->
+    <skip />
+    <string name="cancel">"Avbryt"</string>
+    <string name="ok">"OK"</string>
+  <plurals name="matches_found">
+    <item quantity="zero">"Inga träffar"</item>
+    <item quantity="one">"1 träff"</item>
+    <item quantity="few">"<xliff:g id="NUMBER">%d</xliff:g> träffar"</item>
+    <item quantity="other">"<xliff:g id="NUMBER">%d</xliff:g> träffar"</item>
+  </plurals>
+    <string name="page_info">"Sidinformation"</string>
+    <string name="page_info_view">"Visa sidinformation"</string>
+    <string name="page_info_address">"Adress:"</string>
+    <string name="ssl_warnings_header">"Det har uppstått problem med säkerhetscertifikatet för den här webbplatsen."</string>
+    <string name="ssl_continue">"Fortsätt"</string>
+    <string name="security_warning">"Säkerhetsvarning"</string>
+    <string name="view_certificate">"Visa certifikat"</string>
+    <string name="ssl_untrusted">"Detta certifikat kommer inte från en betrodd utfärdare."</string>
+    <string name="ssl_mismatch">"Webbplatsens namn stämmer inte med namnet på certifikatet."</string>
+    <string name="ssl_expired">"Certifikatet har upphört att gälla."</string>
+    <string name="ssl_not_yet_valid">"Certifikatet är inte giltigt än."</string>
+    <string name="ssl_certificate">"Säkerhetscertifikat"</string>
+    <string name="ssl_certificate_is_valid">"Detta certifikat är giltigt."</string>
+    <string name="issued_to">"Utfärdat till:"</string>
+    <string name="common_name">"Nätverksnamn:"</string>
+    <string name="org_name">"Organisation:"</string>
+    <string name="org_unit">"Organisationsenhet:"</string>
+    <string name="issued_by">"Utfärdat av:"</string>
+    <string name="validity_period">"Giltighet:"</string>
+    <string name="issued_on">"Utfärdat den:"</string>
+    <string name="expires_on">"Upphör att gälla:"</string>
+    <string name="retrieving_creds_dlg_msg">"Hämtar inloggningsuppgifter…"</string>
+    <string name="stopping">"Avbryter…"</string>
+    <string name="stop">"Stoppa"</string>
+    <string name="reload">"Uppdatera"</string>
+    <string name="forward">"Vidarebefordra"</string>
+    <string name="save">"OK"</string>
+    <string name="do_not_save">"Avbryt"</string>
+    <string name="location">"Plats"</string>
+    <string name="name">"Namn"</string>
+    <string name="http">"http://"</string>
+    <string name="save_to_bookmarks">"Bokmärke"</string>
+    <string name="edit_bookmark">"Redigera bokmärke"</string>
+    <string name="create_shortcut_bookmark">"Lägg till genväg till startsidan"</string>
+    <string name="open_bookmark">"Öppna"</string>
+    <string name="remove_bookmark">"Ta bort bokmärke"</string>
+    <string name="remove_history_item">"Ta bort från historiken"</string>
+    <string name="bookmark_saved">"Bokmärke sparat."</string>
+    <string name="bookmark_needs_title">"Du måste ange ett namn på bokmärket."</string>
+    <string name="bookmark_needs_url">"Du måste ange en plats för bokmärket."</string>
+    <string name="empty_bookmark">"Det går inte att skapa tomma bokmärken."</string>
+    <string name="bookmark_url_not_valid">"Webbadressen är ogiltig."</string>
+    <string name="delete_bookmark">"Ta bort"</string>
+    <string name="bookmark_page">"Skapa bokmärke för den senast visade sidan"</string>
+    <string name="current_page">"från "</string>
+    <string name="delete_bookmark_warning">"Bokmärket <xliff:g id="BOOKMARK">%s</xliff:g> tas bort."</string>
+    <string name="open_in_new_window">"Öppna i nytt fönster"</string>
+    <string name="new_window">"Nytt fönster"</string>
+    <string name="goto_dot">"Kör"</string>
+    <string name="find_dot">"Sök på sidan"</string>
+    <string name="select_dot">"Markera text"</string>
+    <string name="view_tabs">"Översikt över fönster"</string>
+    <string name="view_tabs_condensed">"Fönster"</string>
+    <string name="tab_picker_title">"Aktuellt fönster"</string>
+    <string name="tab_picker_view_tab">"Visa"</string>
+    <string name="tab_picker_new_tab">"Nytt fönster"</string>
+    <string name="tab_picker_remove_tab">"Stäng"</string>
+    <string name="tab_picker_bookmark">"Bokmärke"</string>
+    <string name="tab_picker_send_url">"Dela länk"</string>
+    <string name="bookmarks">"Bokmärken"</string>
+    <string name="shortcut_bookmark">"Bokmärke"</string>
+    <string name="history">"Historik"</string>
+    <string name="menu_view_download">"Hämtningar"</string>
+    <string name="share_page">"Dela sida"</string>
+    <string name="contextmenu_openlink">"Öppna"</string>
+    <string name="contextmenu_openlink_newwindow">"Öppna i nytt fönster"</string>
+    <string name="contextmenu_bookmark_thislink">"Skapa ett bokmärke av länken"</string>
+    <string name="contextmenu_savelink">"Spara länk"</string>
+    <string name="contextmenu_sharelink">"Dela länk"</string>
+    <string name="contextmenu_copy">"Kopiera"</string>
+    <string name="contextmenu_copylink">"Kopiera länkens webbadress"</string>
+    <string name="contextmenu_download_image">"Spara bild"</string>
+    <string name="contextmenu_view_image">"Visa bild"</string>
+    <string name="contextmenu_dial_dot">"Ring..."</string>
+    <string name="contextmenu_add_contact">"Lägg till kontakt"</string>
+    <string name="contextmenu_send_mail">"Skicka e-post"</string>
+    <string name="contextmenu_map">"Karta"</string>
+    <string name="clear">"Rensa"</string>
+    <string name="replace">"Ersätt"</string>
+    <string name="browser_bookmarks_page_bookmarks_text">"Bokmärken"</string>
+    <string name="menu_preferences">"Inställningar"</string>
+    <string name="pref_content_title">"Inställningar för sidinnehåll"</string>
+    <string name="pref_content_load_images">"Överför bilder"</string>
+    <string name="pref_content_load_images_summary">"Visa bilder på webbsidor"</string>
+    <string name="pref_content_block_popups">"Blockera popup-fönster"</string>
+    <string name="pref_content_javascript">"Aktivera JavaScript"</string>
+    <string name="pref_content_open_in_background">"Öppen i bakgrunden"</string>
+    <string name="pref_content_open_in_background_summary">"Ett nytt fönster öppnas bakom det aktuella"</string>
+    <string name="pref_content_homepage">"Ange startsida"</string>
+    <string name="pref_content_autofit">"Autoanpassa sidor"</string>
+    <string name="pref_content_autofit_summary">"Anpassa webbsidor efter skärmen"</string>
+    <string name="pref_privacy_title">"Sekretessinställningar"</string>
+    <string name="pref_privacy_clear_cache">"Rensa cacheminne"</string>
+    <string name="pref_privacy_clear_cache_summary">"Ta bort allt cachelagrat sidinnehåll"</string>
+    <string name="pref_privacy_clear_cache_dlg">"Cacheminnet kommer att rensas."</string>
+    <string name="pref_privacy_clear_cookies">"Ta bort alla cookie-data"</string>
+    <string name="pref_privacy_clear_cookies_summary">"Ta bort alla webbläsarens cookies"</string>
+    <string name="pref_privacy_clear_cookies_dlg">"Alla cookies tas bort."</string>
+    <string name="pref_privacy_clear_history">"Rensa historik"</string>
+    <string name="pref_privacy_clear_history_summary">"Rensa webbläsarhistoriken"</string>
+    <string name="pref_privacy_clear_history_dlg">"Webbläsarhistoriken kommer att tas bort."</string>
+    <string name="pref_privacy_clear_form_data">"Rensa data i formulär"</string>
+    <string name="pref_privacy_clear_form_data_summary">"Rensa data från alla sparade formulär"</string>
+    <string name="pref_privacy_clear_form_data_dlg">"Alla sparade formulär kommer att rensas."</string>
+    <string name="pref_privacy_clear_passwords">"Ta bort lösenord"</string>
+    <string name="pref_privacy_clear_passwords_summary">"Ta bort alla sparade lösenord"</string>
+    <string name="pref_privacy_clear_passwords_dlg">"Alla sparade lösenord tas bort."</string>
+    <string name="pref_security_title">"Säkerhetsinställningar"</string>
+    <string name="pref_security_remember_passwords">"Kom ihåg lösenord"</string>
+    <string name="pref_security_remember_passwords_summary">"Spara användarnamn och lösenord på webbplatser"</string>
+    <string name="pref_security_save_form_data">"Spara data i formulär"</string>
+    <string name="pref_security_save_form_data_summary">"Kom ihåg data som jag anger i formulär för senare bruk"</string>
+    <string name="pref_security_show_security_warning">"Visa säkerhetsvarningar"</string>
+    <string name="pref_security_show_security_warning_summary">"Visa varningar om det uppstår problem med en webbplats säkerhet"</string>
+    <string name="pref_security_accept_cookies">"Acceptera cookies"</string>
+    <string name="pref_security_accept_cookies_summary">"Tillåt att webbplatser sparar och läser cookie-data"</string>
+    <!-- no translation found for pref_text_size (3827031324346612208) -->
+    <skip />
+  <string-array name="pref_text_size_choices">
+    <item>"Pytteliten"</item>
+    <item>"Liten"</item>
+    <item>"Normal"</item>
+    <item>"Stor"</item>
+    <item>"Mycket stor"</item>
+  </string-array>
+    <string name="pref_text_size_dialogtitle">"Textstorlek"</string>
+    <!-- no translation found for pref_default_zoom (8076142259097187395) -->
+    <skip />
+    <!-- no translation found for pref_default_zoom_choices:0 (549583171195154919) -->
+    <!-- no translation found for pref_default_zoom_choices:1 (5619034257768161024) -->
+    <!-- no translation found for pref_default_zoom_choices:2 (3840999588443167001) -->
+    <!-- no translation found for pref_default_zoom_dialogtitle (6095974367125109021) -->
+    <skip />
+    <string name="pref_extras_title">"Avancerade inställningar"</string>
+    <string name="pref_extras_gears_enable">"Aktivera Gears"</string>
+    <string name="pref_extras_gears_enable_summary">"Program som ger utökade webbläsarfunktioner"</string>
+    <string name="pref_extras_gears_settings">"Inställningar för Gears"</string>
+    <string name="pref_plugin_installed">"Lista över insticksprogram"</string>
+    <string name="pref_plugin_installed_empty_list">"Inga insticksprogram har installerats."</string>
+    <string name="pref_extras_gears_settings_summary">"Program som ger utökade webbläsarfunktioner"</string>
+    <string name="pref_extras_reset_default">"Återställ standardinställningarna"</string>
+    <string name="pref_extras_reset_default_summary">"Ta bort alla data i webbläsaren och återställ standardinställningarna"</string>
+    <string name="pref_extras_reset_default_dlg">"Alla data i webbläsaren tas bort och standardinställningarna återställs."</string>
+    <string name="pref_extras_reset_default_dlg_title">"Återställ standardinställningarna"</string>
+    <string name="pref_development_title">"Felsökning"</string>
+    <!-- no translation found for pref_default_text_encoding (5742965543955558478) -->
+    <skip />
+  <string-array name="pref_default_text_encoding_choices">
+    <item>"Latin-1 (ISO-8859-1)"</item>
+    <item>"Unicode (UTF-8)"</item>
+    <item>"Japansk (ISO-2022-JP)"</item>
+    <item>"Japansk (SHIFT_JIS)"</item>
+    <item>"Japansk (EUC-JP)"</item>
+  </string-array>
+    <string name="pref_default_text_encoding_dialogtitle">"Textkodning"</string>
+    <string name="pref_default_text_encoding_default">"Latin-1"</string>
+    <string name="browserFrameRedirect">"Omdirigera"</string>
+    <string name="browserFrame307Post">"Den här webbsidan omdirigeras. Vill du skicka uppgifterna i formuläret till den nya platsen?"</string>
+    <string name="browserFrameNetworkErrorLabel">"Problem med dataanslutning"</string>
+    <string name="browserFrameFileErrorLabel">"Problem med filen"</string>
+    <string name="browserFrameFormResubmitLabel">"Bekräfta"</string>
+    <string name="browserFrameFormResubmitMessage">"Sidan du försöker öppna innehåller data som redan har skickats (POSTDATA). Om du skickar uppgifterna igen kommer alla åtgärder i formuläret på sidan (till exempel sökningar eller onlineköp) att utföras en gång till."</string>
+    <string name="loadSuspendedTitle">"Ingen nätverksanslutning"</string>
+    <string name="loadSuspended">"Sidan fortsätter att läsas in när anslutningen har återställts."</string>
+    <string name="clear_history">"Rensa historik"</string>
+    <string name="browser_history">"Nyligen besökta sidor"</string>
+    <string name="empty_history">"Det finns ingen webbläsarhistorik."</string>
+    <string name="add_new_bookmark">"Lägg till bokmärke…"</string>
+    <string name="no_database">"Ingen databas!"</string>
+    <string name="search_hint">"Ange webbadress"</string>
+    <string name="search_button_text">"Kör"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
+    <string name="attention">"Obs!"</string>
+    <string name="popup_window_attempt">"Webbplatsen försöker öppna ett popup-fönster."</string>
+    <string name="allow">"Tillåt"</string>
+    <string name="block">"Blockera"</string>
+    <string name="too_many_windows_dialog_title">"Det går inte att öppna fler fönster"</string>
+    <string name="too_many_windows_dialog_message">"Det gick inte att öppna ett nytt fönster. Högsta antalet fönster är redan öppna."</string>
+    <string name="too_many_subwindows_dialog_title">"Ett popup-fönster är redan öppet"</string>
+    <string name="too_many_subwindows_dialog_message">"Det gick inte att öppna ett nytt popup-fönster. Endast ett fönster i taget kan vara öppet."</string>
+    <string name="download_title">"Hämtningshistorik"</string>
+    <string name="download_unknown_filename">"&lt;Okänd&gt;"</string>
+    <string name="download_menu_open">"Öppna"</string>
+    <string name="download_menu_clear">"Ta bort från listan"</string>
+    <string name="download_menu_cancel">"Avbryt hämtning"</string>
+    <string name="download_menu_cancel_all">"Avbryt alla hämtningar"</string>
+    <string name="download_menu_clear_all">"Rensa listan"</string>
+    <string name="download_clear_dlg_title">"Rensa"</string>
+    <string name="download_clear_dlg_msg">"Alla objekt tas bort från listan och från webbläsarens cacheminne."</string>
+    <string name="download_cancel_dlg_title">"Avbryt hämtningar"</string>
+    <string name="download_cancel_dlg_msg">"Alla <xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> hämtningar avbryts och tas bort från hämtningshistoriken."</string>
+    <string name="download_file_error_dlg_title">"Slut på ledigt diskutrymme"</string>
+    <string name="download_file_error_dlg_msg">"<xliff:g id="FILENAME">%s</xliff:g> gick inte att hämta."\n"Frigör lite utrymme i telefonen och försök igen."</string>
+    <string name="download_failed_generic_dlg_title">"Det gick inte att hämta"</string>
+    <string name="download_no_sdcard_dlg_title">"Inget SD-kort"</string>
+    <string name="download_no_sdcard_dlg_msg">"Du behöver ett SD-kort för att hämta <xliff:g id="FILENAME">%s</xliff:g>."</string>
+    <string name="download_sdcard_busy_dlg_title">"SD-kortet är inte tillgängligt"</string>
+    <string name="download_sdcard_busy_dlg_msg">"SD-kortet är upptaget. Om du vill tillåta hämtning väljer du Inaktivera USB-lagring i meddelandet."</string>
+    <string name="download_no_application">"Vi hittade inget program som kunde öppna filen."</string>
+    <string name="retry">"Försök igen"</string>
+    <string name="no_downloads">"Det finns ingen hämtningshistorik."</string>
+    <string name="download_error">"Det gick inte att hämta."</string>
+    <string name="download_success">"<xliff:g id="FILE">%s</xliff:g> har hämtats."</string>
+    <string name="download_running">"Hämtar..."</string>
+    <string name="download_pending">"Startar hämtning…"</string>
+    <string name="download_pending_network">"Väntar på dataanslutning…"</string>
+    <string name="download_running_paused">"Väntar på dataanslutning…"</string>
+    <string name="download_canceled">"Hämtningen avbröts."</string>
+    <string name="download_not_acceptable">"Det gick inte att hämta. Innehållet stöds inte på telefonen."</string>
+    <string name="download_file_error">"Det går inte att hämta. Det finns inte tillräckligt med utrymme."</string>
+    <string name="download_length_required">"Det går inte att hämta eftersom objektets storlek inte kan avläsas."</string>
+    <string name="download_precondition_failed">"Hämtningen avbröts. Den kan inte återupptas."</string>
+    <string name="activity_instrumentation_test_runner">"Testprogram för webbläsaren"</string>
+    <!-- no translation found for homepage_base (7888126987935305566) -->
+    <skip />
+    <!-- no translation found for search_the_web (6046130189241962337) -->
+    <skip />
+    <string name="query_data_prompt">"Tillåt lagring"</string>
+    <string name="query_data_message">"Den här webbplatsen vill spara information i din telefon."</string>
+    <string name="location_prompt">"Få åtkomst till din plats"</string>
+    <string name="location_message">"Webbplatsen vill ha åtkomst till din plats."</string>
+    <string name="shortcut_prompt">"Skapa en genväg"</string>
+    <string name="shortcut_message">"Webbplatsen vill skapa en genväg till den här sidan på din startsida."</string>
+    <string name="settings_message">"Tabellen nedan visar vilka behörigheter du har beviljat webbplatserna som har försökt använda Gears."</string>
+    <string name="filepicker_message">"Filväljaren"</string>
+    <string name="image_message">"Vald bild"</string>
+    <string name="settings_title">"Inställningar för Gears"</string>
+    <string name="privacy_policy">"Läs webbplatsens sekretesspolicy om du vill veta hur din plats kommer att användas."</string>
+    <string name="settings_storage_title">"Tillåt lokal lagring"</string>
+    <string name="settings_storage_subtitle_on">"Webbplatsen kan spara information i din telefon"</string>
+    <string name="settings_storage_subtitle_off">"Webbplatsen kan inte spara information i din telefon"</string>
+    <string name="settings_location_title">"Tillåt identifiering av plats"</string>
+    <string name="settings_location_subtitle_on">"Webbplatsen kan läsa din aktuella plats"</string>
+    <string name="settings_location_subtitle_off">"Webbplatsen kan inte läsa din aktuella plats"</string>
+    <string name="settings_remove_site">"Ta bort webbplatsen från Gears"</string>
+    <string name="settings_empty">"Ingen behörighet har angetts"</string>
+    <string name="settings_confirmation_remove_title">"Ta bort webbplatsen"</string>
+    <string name="settings_confirmation_remove">"Alla behörigheter och alla data som webbplatsen sparat i telefonen tas bort."</string>
+    <string name="storage_notification">"Webbplatsen sparar information på den här telefonen."\n" Ändra inställningen i:"\n" Inställningar -&gt; Inställningar för Gears"</string>
+    <string name="storage_notification_alwaysdeny">"Webbplatsen sparar aldrig information på den här telefonen."\n" Ändra inställningen i:"\n" Inställningar -&gt; Inställningar för Gears"</string>
+    <string name="location_notification">"Webbplatsen har åtkomst till din aktuella plats."\n" Ändra inställningen i:"\n" Inställningar -&gt; Inställningar för Gears"</string>
+    <string name="location_notification_alwaysdeny">"Webbplatsen har inte åtkomst till din aktuella plats."\n" Ändra inställningen i:"\n" Inställningar -&gt; Inställningar för Gears"</string>
+    <string name="shortcut_notification">"Genväg har skapats"</string>
+    <string name="permission_button_alwaysdeny">"Tillåt aldrig"</string>
+    <string name="permission_button_allow">"OK"</string>
+    <string name="permission_button_deny">"Avbryt"</string>
+    <string name="shortcut_button_alwaysdeny">"Tillåt aldrig"</string>
+    <string name="shortcut_button_allow">"OK"</string>
+    <string name="shortcut_button_deny">"Avbryt"</string>
+    <string name="settings_button_allow">"Tillämpa"</string>
+    <string name="settings_button_deny">"Avbryt"</string>
+    <string name="filepicker_button_allow">"OK"</string>
+    <string name="filepicker_button_deny">"Avbryt"</string>
+    <string name="filepicker_path">"sökväg:"</string>
+    <string name="filepicker_no_files_selected">"Inga filer har valts"</string>
+    <string name="filepicker_one_file_selected">"En fil har valts"</string>
+    <string name="filepicker_some_files_selected">"valda filer"</string>
+    <string name="remove">"Ta bort"</string>
+    <string name="local_storage">"Lokal lagring"</string>
+    <string name="allowed">"Tillåts"</string>
+    <string name="denied">"Nekad"</string>
+    <string name="unrecognized_dialog_message">"Okänd dialogtyp"</string>
+    <string name="default_button">"OK"</string>
+    <string name="zoom_overview_button_text">"Översikt"</string>
+</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
new file mode 100644
index 0000000..b5dc05b
--- /dev/null
+++ b/res/values-tr/strings.xml
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="application_name">"Tarayıcı"</string>
+    <string name="tab_bookmarks">"Favoriler"</string>
+    <string name="tab_most_visited">"En çok ziyaret edilenler"</string>
+    <string name="tab_history">"Geçmiş"</string>
+    <string name="added_to_bookmarks">"Favorilere eklendi"</string>
+    <string name="removed_from_bookmarks">"Favorilerden kaldırıldı"</string>
+    <string name="sign_in_to">"<xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\" oturumu aç"</string>
+    <string name="username">"Ad"</string>
+    <string name="password">"Şifre"</string>
+    <string name="action">"Oturum aç"</string>
+    <!-- no translation found for bookmarks_search (5229596268214362873) -->
+    <skip />
+    <string name="cancel">"İptal"</string>
+    <string name="ok">"Tamam"</string>
+  <plurals name="matches_found">
+    <item quantity="zero">"Eşleşme yok"</item>
+    <item quantity="one">"1 eşleşme"</item>
+    <item quantity="few">"<xliff:g id="NUMBER">%d</xliff:g> eşleşme"</item>
+    <item quantity="other">"<xliff:g id="NUMBER">%d</xliff:g> eşleşme"</item>
+  </plurals>
+    <string name="page_info">"Sayfa bilgileri"</string>
+    <string name="page_info_view">"Sayfa bilgilerini görüntüle"</string>
+    <string name="page_info_address">"Adres:"</string>
+    <string name="ssl_warnings_header">"Bu sitenin güvenlik sertifikasında sorunlar var."</string>
+    <string name="ssl_continue">"Devam Et"</string>
+    <string name="security_warning">"Güvenlik uyarısı"</string>
+    <string name="view_certificate">"Sertifikayı görüntüle"</string>
+    <string name="ssl_untrusted">"Bu sertifika güvenilir bir yetkiliden değil."</string>
+    <string name="ssl_mismatch">"Sitenin adı sertifika üzerindeki adla eşleşmiyor."</string>
+    <string name="ssl_expired">"Bu sertifikanın süresi dolmuş."</string>
+    <string name="ssl_not_yet_valid">"Bu sertifika henüz geçerli değil."</string>
+    <string name="ssl_certificate">"Güvenlik sertifikası"</string>
+    <string name="ssl_certificate_is_valid">"Bu sertifika geçerli."</string>
+    <string name="issued_to">"Alıcı:"</string>
+    <string name="common_name">"Ortak ad:"</string>
+    <string name="org_name">"Kuruluş:"</string>
+    <string name="org_unit">"Kuruluş birimi:"</string>
+    <string name="issued_by">"Yayınlayan:"</string>
+    <string name="validity_period">"Geçerlilik:"</string>
+    <string name="issued_on">"Yayınlanma tarihi:"</string>
+    <string name="expires_on">"Sona erme tarihi:"</string>
+    <string name="retrieving_creds_dlg_msg">"Oturum açma bilgileri alınıyor..."</string>
+    <string name="stopping">"Durduruluyor..."</string>
+    <string name="stop">"Durdur"</string>
+    <string name="reload">"Yenile"</string>
+    <string name="forward">"Yönlendir"</string>
+    <string name="save">"Tamam"</string>
+    <string name="do_not_save">"İptal"</string>
+    <string name="location">"Konum"</string>
+    <string name="name">"Ad"</string>
+    <string name="http">"http://"</string>
+    <string name="save_to_bookmarks">"Favori"</string>
+    <string name="edit_bookmark">"Favorileri düzenle"</string>
+    <string name="create_shortcut_bookmark">"Ana ekrana kısayol ekle"</string>
+    <string name="open_bookmark">"Aç"</string>
+    <string name="remove_bookmark">"Favoriyi sil"</string>
+    <string name="remove_history_item">"Geçmişten kaldır"</string>
+    <string name="bookmark_saved">"Favorilere kaydedildi."</string>
+    <string name="bookmark_needs_title">"Favorinin bir adı olmalıdır."</string>
+    <string name="bookmark_needs_url">"Favorinin bir konumu olmalıdır."</string>
+    <string name="empty_bookmark">"Boş favori oluşturulamaz."</string>
+    <string name="bookmark_url_not_valid">"URL geçerli değil."</string>
+    <string name="delete_bookmark">"Sil"</string>
+    <string name="bookmark_page">"Son görüntülenen sayfayı favori olarak işaretle"</string>
+    <string name="current_page">"kaynak: "</string>
+    <string name="delete_bookmark_warning">"Favori \"<xliff:g id="BOOKMARK">%s</xliff:g>\" silinecek."</string>
+    <string name="open_in_new_window">"Yeni pencerede aç"</string>
+    <string name="new_window">"Yeni pencere"</string>
+    <string name="goto_dot">"Git"</string>
+    <string name="find_dot">"Sayfada bul"</string>
+    <string name="select_dot">"Metni seç"</string>
+    <string name="view_tabs">"Pencereye genel bakış"</string>
+    <string name="view_tabs_condensed">"Pencereler"</string>
+    <string name="tab_picker_title">"Geçerli pencereler"</string>
+    <string name="tab_picker_view_tab">"Görüntüle"</string>
+    <string name="tab_picker_new_tab">"Yeni pencere"</string>
+    <string name="tab_picker_remove_tab">"Kapat"</string>
+    <string name="tab_picker_bookmark">"Favori"</string>
+    <string name="tab_picker_send_url">"Bağlantıyı paylaş"</string>
+    <string name="bookmarks">"Favoriler"</string>
+    <string name="shortcut_bookmark">"Favori"</string>
+    <string name="history">"Geçmiş"</string>
+    <string name="menu_view_download">"İndirme işlemleri"</string>
+    <string name="share_page">"Sayfayı paylaş"</string>
+    <string name="contextmenu_openlink">"Aç"</string>
+    <string name="contextmenu_openlink_newwindow">"Yeni pencerede aç"</string>
+    <string name="contextmenu_bookmark_thislink">"Favori bağlantısı"</string>
+    <string name="contextmenu_savelink">"Bağlantıyı kaydet"</string>
+    <string name="contextmenu_sharelink">"Bağlantıyı paylaş"</string>
+    <string name="contextmenu_copy">"Kopyala"</string>
+    <string name="contextmenu_copylink">"Bağlantı URL\'sini kopyala"</string>
+    <string name="contextmenu_download_image">"Görseli kaydet"</string>
+    <string name="contextmenu_view_image">"Görseli görüntüle"</string>
+    <string name="contextmenu_dial_dot">"Ara..."</string>
+    <string name="contextmenu_add_contact">"Kişi ekle"</string>
+    <string name="contextmenu_send_mail">"E-posta gönder"</string>
+    <string name="contextmenu_map">"Harita"</string>
+    <string name="clear">"Temizle"</string>
+    <string name="replace">"Değiştir"</string>
+    <string name="browser_bookmarks_page_bookmarks_text">"Favoriler"</string>
+    <string name="menu_preferences">"Ayarlar"</string>
+    <string name="pref_content_title">"Sayfa içeriği ayarları"</string>
+    <string name="pref_content_load_images">"Görselleri yükle"</string>
+    <string name="pref_content_load_images_summary">"Web sayfalarındaki görselleri görüntüle"</string>
+    <string name="pref_content_block_popups">"Pop-up\'ları engelle"</string>
+    <string name="pref_content_javascript">"JavaScript\'i etkinleştir"</string>
+    <string name="pref_content_open_in_background">"Arka planda aç"</string>
+    <string name="pref_content_open_in_background_summary">"Yeni pencereler geçerli olanın arkasında açılır"</string>
+    <string name="pref_content_homepage">"Ana sayfayı ayarla"</string>
+    <string name="pref_content_autofit">"Sayfaları otomatik sığdır"</string>
+    <string name="pref_content_autofit_summary">"Web sayfalarını ekrana sığacak şekilde biçimlendir"</string>
+    <string name="pref_privacy_title">"Gizlilik ayarları"</string>
+    <string name="pref_privacy_clear_cache">"Önbelleği temizle"</string>
+    <string name="pref_privacy_clear_cache_summary">"Önbelleğe alınmış tüm sayfa içeriğini sil"</string>
+    <string name="pref_privacy_clear_cache_dlg">"Önbellek temizlenecek."</string>
+    <string name="pref_privacy_clear_cookies">"Tüm çerez verilerini temizle"</string>
+    <string name="pref_privacy_clear_cookies_summary">"Tüm tarayıcı çerezlerini temizle"</string>
+    <string name="pref_privacy_clear_cookies_dlg">"Tüm çerezler temizlenecek."</string>
+    <string name="pref_privacy_clear_history">"Geçmişi temizle"</string>
+    <string name="pref_privacy_clear_history_summary">"Tarayıcı gezinme geçmişini temizle"</string>
+    <string name="pref_privacy_clear_history_dlg">"Tarayıcının gezinme geçmişi temizlenecek."</string>
+    <string name="pref_privacy_clear_form_data">"Form verilerini temizle"</string>
+    <string name="pref_privacy_clear_form_data_summary">"Tüm kayıtlı form verilerini temizle"</string>
+    <string name="pref_privacy_clear_form_data_dlg">"Kayıtlı tüm form verileri temizlenecek."</string>
+    <string name="pref_privacy_clear_passwords">"Şifreleri temizle"</string>
+    <string name="pref_privacy_clear_passwords_summary">"Kayıtlı tüm şifreleri temizle"</string>
+    <string name="pref_privacy_clear_passwords_dlg">"Kayıtlı tüm şifreler temizlenecek."</string>
+    <string name="pref_security_title">"Güvenlik ayarları"</string>
+    <string name="pref_security_remember_passwords">"Şifreleri hatırla"</string>
+    <string name="pref_security_remember_passwords_summary">"Web siteleri için kullanıcı adlarını ve şifreleri kaydet"</string>
+    <string name="pref_security_save_form_data">"Form verilerini hatırla"</string>
+    <string name="pref_security_save_form_data_summary">"Daha sonra kullanmak üzere formlara yazdığım verileri hatırla"</string>
+    <string name="pref_security_show_security_warning">"Güvenlik uyarıl. göster"</string>
+    <string name="pref_security_show_security_warning_summary">"Site güvenliği ile ilgili bir sorun varsa uyarı göster"</string>
+    <string name="pref_security_accept_cookies">"Çerezleri kabul et"</string>
+    <string name="pref_security_accept_cookies_summary">"Sitelere \"çerez\" verilerini kaydetme ve okuma izni ver"</string>
+    <string name="pref_text_size">"Metin boyutu"</string>
+  <string-array name="pref_text_size_choices">
+    <item>"Çok Küçük"</item>
+    <item>"Küçük"</item>
+    <item>"Normal"</item>
+    <item>"Büyük"</item>
+    <item>"Çok büyük"</item>
+  </string-array>
+    <string name="pref_text_size_dialogtitle">"Metin boyutu"</string>
+    <!-- no translation found for pref_default_zoom (8076142259097187395) -->
+    <skip />
+    <!-- no translation found for pref_default_zoom_choices:0 (549583171195154919) -->
+    <!-- no translation found for pref_default_zoom_choices:1 (5619034257768161024) -->
+    <!-- no translation found for pref_default_zoom_choices:2 (3840999588443167001) -->
+    <!-- no translation found for pref_default_zoom_dialogtitle (6095974367125109021) -->
+    <skip />
+    <string name="pref_extras_title">"Gelişmiş ayarlar"</string>
+    <string name="pref_extras_gears_enable">"Gears\'ı Etkinleştir"</string>
+    <string name="pref_extras_gears_enable_summary">"Tarayıcınızın işlevini artıran uygulamalar"</string>
+    <string name="pref_extras_gears_settings">"Gears ayarları"</string>
+    <string name="pref_plugin_installed">"Eklenti listesi"</string>
+    <string name="pref_plugin_installed_empty_list">"Yüklenmiş eklenti yok."</string>
+    <string name="pref_extras_gears_settings_summary">"Tarayıcınızın işlevini artıran uygulamalar"</string>
+    <string name="pref_extras_reset_default">"Varsayılana sıfırla"</string>
+    <string name="pref_extras_reset_default_summary">"Tüm tarayıcı verilerini temizle ve tüm ayarları varsayılana sıfırla"</string>
+    <string name="pref_extras_reset_default_dlg">"Tüm tarayıcı verileri temizlenecek ve ayarlar varsayılan değerlere geri döndürülecek."</string>
+    <string name="pref_extras_reset_default_dlg_title">"Varsayılana sıfırla"</string>
+    <string name="pref_development_title">"Hata Ayıklama"</string>
+    <!-- no translation found for pref_default_text_encoding (5742965543955558478) -->
+    <skip />
+  <string-array name="pref_default_text_encoding_choices">
+    <item>"Latin-1 (ISO-8859-1)"</item>
+    <item>"Unicode (UTF-8)"</item>
+    <item>"Japonca (ISO-2022-JP)"</item>
+    <item>"Japonca (SHIFT_JIS)"</item>
+    <item>"Japonca (EUC-JP)"</item>
+  </string-array>
+    <string name="pref_default_text_encoding_dialogtitle">"Metin kodlama"</string>
+    <string name="pref_default_text_encoding_default">"Latin-1"</string>
+    <string name="browserFrameRedirect">"Yeniden yönlendir"</string>
+    <string name="browserFrame307Post">"Bu Web sayfası yeniden yönlendiriliyor. Yazılı form verileriniz yeni konuma tekrar gönderilsin mi?"</string>
+    <string name="browserFrameNetworkErrorLabel">"Veri bağlantısı sorunu"</string>
+    <string name="browserFrameFileErrorLabel">"Sorunlu dosya"</string>
+    <string name="browserFrameFormResubmitLabel">"Doğrula"</string>
+    <string name="browserFrameFormResubmitMessage">"Görüntülemeye çalıştığınız sayfa zaten gönderilmiş veriler (\"POSTDATA\") içeriyor. Verileri tekrar gönderirseniz sayfa üzerinde yapılmış tüm işlemler (arama veya çevrimiçi satın alma gibi) tekrarlanacaktır."</string>
+    <string name="loadSuspendedTitle">"Ağ bağlantısı yok"</string>
+    <string name="loadSuspended">"Bağlantı tekrar kurulduktan sonra sayfa yüklenmeye devam edecek."</string>
+    <string name="clear_history">"Geçmişi temizle"</string>
+    <string name="browser_history">"Son ziyaret edilen sayfalar"</string>
+    <string name="empty_history">"Tarayıcı geçmişi boş."</string>
+    <string name="add_new_bookmark">"Favori ekle..."</string>
+    <string name="no_database">"Veritabanı yok!"</string>
+    <string name="search_hint">"Web adresini yazın"</string>
+    <string name="search_button_text">"Git"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
+    <string name="attention">"Dikkat"</string>
+    <string name="popup_window_attempt">"Bu site pop-up pencere açmaya çalışıyor."</string>
+    <string name="allow">"İzin Ver"</string>
+    <string name="block">"Engelle"</string>
+    <string name="too_many_windows_dialog_title">"Pencere sınırına ulaşıldı"</string>
+    <string name="too_many_windows_dialog_message">"Zaten maksimum sayıda pencere açmış olduğunuz için yeni bir pencere açılamadı."</string>
+    <string name="too_many_subwindows_dialog_title">"Pop-up pencere zaten açık"</string>
+    <string name="too_many_subwindows_dialog_message">"Bir seferde yalnızca bir tane açılabileceğinden yeni pop-up pencere açılamadı."</string>
+    <string name="download_title">"İndirme geçmişi"</string>
+    <string name="download_unknown_filename">"&lt;Bilinmiyor&gt;"</string>
+    <string name="download_menu_open">"Aç"</string>
+    <string name="download_menu_clear">"Listeden temizle"</string>
+    <string name="download_menu_cancel">"İndirme işlemini iptal et"</string>
+    <string name="download_menu_cancel_all">"Tüm indirme işlemlerini iptal et"</string>
+    <string name="download_menu_clear_all">"Listeyi temizle"</string>
+    <string name="download_clear_dlg_title">"Temizle"</string>
+    <string name="download_clear_dlg_msg">"Tüm öğeler listeden silinecek ve tarayıcı önbelleğinden kaldırılacak."</string>
+    <string name="download_cancel_dlg_title">"İndirme işlemlerini iptal et"</string>
+    <string name="download_cancel_dlg_msg">"<xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> indirme işleminin tümü iptal edilecek ve indirme geçmişinden temizlenecek."</string>
+    <string name="download_file_error_dlg_title">"Alan yetersiz"</string>
+    <string name="download_file_error_dlg_msg">"<xliff:g id="FILENAME">%s</xliff:g> indirilemedi."\n"Telefonunuzda biraz yer açın ve tekrar deneyin."</string>
+    <string name="download_failed_generic_dlg_title">"İndirme işlemi başarısız"</string>
+    <string name="download_no_sdcard_dlg_title">"SD kart yok"</string>
+    <string name="download_no_sdcard_dlg_msg">"<xliff:g id="FILENAME">%s</xliff:g> dosyasını indirmek için bir SD kart gerekli."</string>
+    <string name="download_sdcard_busy_dlg_title">"SD kart kullanılamıyor"</string>
+    <string name="download_sdcard_busy_dlg_msg">"SD kart meşgul. İndirme işlemlerine izin vermek için bildirim alanında \"USB\'de depolamayı kapat\"ı seçin."</string>
+    <string name="download_no_application">"Bu dosyayı açmak için hiçbir uygulama bulunamadı."</string>
+    <string name="retry">"Tekrar Dene"</string>
+    <string name="no_downloads">"İndirme geçmişi boş."</string>
+    <string name="download_error">"İndirme işlemi başarısız."</string>
+    <string name="download_success">"<xliff:g id="FILE">%s</xliff:g> İndirme işlemi tamamlandı."</string>
+    <string name="download_running">"İndiriliyor..."</string>
+    <string name="download_pending">"İndirme işlemi başlatılıyor..."</string>
+    <string name="download_pending_network">"Veri bağlantısı bekleniyor..."</string>
+    <string name="download_running_paused">"Veri bağlantısı bekleniyor..."</string>
+    <string name="download_canceled">"İndirme işlemi iptal edildi."</string>
+    <string name="download_not_acceptable">"İndirilemiyor. İçerik bu telefonda desteklenmiyor."</string>
+    <string name="download_file_error">"İndirme işlemi tamamlanamıyor. Yeterli alan yok."</string>
+    <string name="download_length_required">"İndirilemiyor. Öğenin boyutu belirlenemiyor."</string>
+    <string name="download_precondition_failed">"İndirme işlemi kesintiye uğradı. Sürdürülemez."</string>
+    <string name="activity_instrumentation_test_runner">"Tarayıcı Test Aracı"</string>
+    <!-- no translation found for homepage_base (7888126987935305566) -->
+    <skip />
+    <!-- no translation found for search_the_web (6046130189241962337) -->
+    <skip />
+    <string name="query_data_prompt">"Depolamaya izin ver"</string>
+    <string name="query_data_message">"Bu web sitesi telefonunuzda bilgi depolamak istiyor."</string>
+    <string name="location_prompt">"Konumunuza erişin"</string>
+    <string name="location_message">"Bu web sitesi konumunuza erişmek istiyor."</string>
+    <string name="shortcut_prompt">"Kısayol oluştur"</string>
+    <string name="shortcut_message">"Bu web sitesi ana ekranınızda bu sayfaya kısayol oluşturmak istiyor."</string>
+    <string name="settings_message">"Aşağıdaki tabloda Gears\'ı kullanmaya çalışan her siteye vermiş olduğunuz izinler gösterilmektedir."</string>
+    <string name="filepicker_message">"Dosya Toplayıcı"</string>
+    <string name="image_message">"Seçilen Görsel"</string>
+    <string name="settings_title">"Gears ayarları"</string>
+    <string name="privacy_policy">"Konumunuzun nasıl kullanılacağını görmek için sitenin gizlilik politikasını okuyun."</string>
+    <string name="settings_storage_title">"Yerel Depolamaya İzin Ver"</string>
+    <string name="settings_storage_subtitle_on">"Bu site telefonunuza bilgi kaydedebilir"</string>
+    <string name="settings_storage_subtitle_off">"Bu site telefonunuza bilgi kaydedemez"</string>
+    <string name="settings_location_title">"Konum Tespitine İzin Ver"</string>
+    <string name="settings_location_subtitle_on">"Bu site geçerli konumunuzu okuyabilir"</string>
+    <string name="settings_location_subtitle_off">"Bu site geçerli konumunuzu okuyamaz"</string>
+    <string name="settings_remove_site">"Bu siteyi Gears\'tan kaldır"</string>
+    <string name="settings_empty">"Hiçbir izin ayarlanmadı"</string>
+    <string name="settings_confirmation_remove_title">"Bu siteyi kaldır"</string>
+    <string name="settings_confirmation_remove">"Tüm izinler kaldırılacak ve site tarafından telefonunuzda depolanmış tüm veriler silinecek."</string>
+    <string name="storage_notification">"Bu site bu telefona bilgi depolayacak."\n" Bu ayarları şuradan değiştirin:"\n" Ayarlar -&gt; Gears Ayarları"</string>
+    <string name="storage_notification_alwaysdeny">"Bu site bu telefona asla bilgi depolamayacak."\n" Bu ayarları şuradan değiştirin:"\n" Ayarlar -&gt; Gears Ayarları"</string>
+    <string name="location_notification">"Bu site geçerli konumunuza erişebilir."\n" Bu ayarı şuradan değiştirin: "\n" Ayarlar -&gt; Gears Ayarları"</string>
+    <string name="location_notification_alwaysdeny">"Bu site geçerli konumunuza erişmeyecek. "\n" Bu ayarı şuradan değiştirin:"\n" Ayarlar -&gt; Gears Ayarları"</string>
+    <string name="shortcut_notification">"Kısayol oluşturuldu"</string>
+    <string name="permission_button_alwaysdeny">"Asla İzin Verme"</string>
+    <string name="permission_button_allow">"Tamam"</string>
+    <string name="permission_button_deny">"İptal"</string>
+    <string name="shortcut_button_alwaysdeny">"Asla İzin Verme"</string>
+    <string name="shortcut_button_allow">"Tamam"</string>
+    <string name="shortcut_button_deny">"İptal"</string>
+    <string name="settings_button_allow">"Uygula"</string>
+    <string name="settings_button_deny">"İptal"</string>
+    <string name="filepicker_button_allow">"Tamam"</string>
+    <string name="filepicker_button_deny">"İptal"</string>
+    <string name="filepicker_path">"yol:"</string>
+    <string name="filepicker_no_files_selected">"Seçili dosya yok"</string>
+    <string name="filepicker_one_file_selected">"Bir dosya seçildi"</string>
+    <string name="filepicker_some_files_selected">"dosyalar seçildi"</string>
+    <string name="remove">"Kaldır"</string>
+    <string name="local_storage">"Yerel depolama"</string>
+    <string name="allowed">"İzin Verildi"</string>
+    <string name="denied">"Reddedildi"</string>
+    <string name="unrecognized_dialog_message">"Tanınmayan iletişim türü"</string>
+    <string name="default_button">"Tamam"</string>
+    <string name="zoom_overview_button_text">"Genel Bakış"</string>
+</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 2928301..8f005e1 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -15,46 +15,46 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- Do not translate.  This string is an internal URI, not seen in the UI. -->
-    <string name="google_search_base" translatable="false">
-        http://www.google.cn/m?hl=%1$s&amp;gl=%2$s&amp;</string>
-
     <string name="application_name">"浏览器"</string>
     <string name="tab_bookmarks">"书签"</string>
-    <string name="tab_most_visited">"访问最多的网站"</string>
+    <string name="tab_most_visited">"访问最多"</string>
     <string name="tab_history">"历史记录"</string>
-    <string name="added_to_bookmarks">"添加到书签"</string>
+    <string name="added_to_bookmarks">"已添加到书签"</string>
     <string name="removed_from_bookmarks">"从书签中删除"</string>
-    <string name="sign_in_to">"登录至 <xliff:g id="HOSTNAME">%s1</xliff:g>“<xliff:g id="REALM">%s2</xliff:g>”"</string>
+    <string name="sign_in_to">"登录 <xliff:g id="HOSTNAME">%s1</xliff:g>“<xliff:g id="REALM">%s2</xliff:g>”"</string>
     <string name="username">"名称"</string>
     <string name="password">"密码"</string>
     <string name="action">"登录"</string>
+    <!-- no translation found for bookmarks_search (5229596268214362873) -->
+    <skip />
     <string name="cancel">"取消"</string>
     <string name="ok">"确定"</string>
-    <!-- no translation found for matches_found:zero (6242659159545399963) -->
-    <!-- no translation found for matches_found:one (4352019729062956802) -->
-    <!-- no translation found for matches_found:few (5544267486978946555) -->
-    <!-- no translation found for matches_found:other (6616125067364315405) -->
-    <string name="page_info">"页面信息"</string>
-    <string name="page_info_view">"查看页面信息"</string>
+  <plurals name="matches_found">
+    <item quantity="zero">"没有匹配项"</item>
+    <item quantity="one">"1 个匹配项"</item>
+    <item quantity="few">"<xliff:g id="NUMBER">%d</xliff:g> 个匹配项"</item>
+    <item quantity="other">"<xliff:g id="NUMBER">%d</xliff:g> 个匹配项"</item>
+  </plurals>
+    <string name="page_info">"网页信息"</string>
+    <string name="page_info_view">"查看网页信息"</string>
     <string name="page_info_address">"地址："</string>
     <string name="ssl_warnings_header">"该网站的安全证书有问题。"</string>
     <string name="ssl_continue">"继续"</string>
     <string name="security_warning">"安全警告"</string>
     <string name="view_certificate">"查看证书"</string>
-    <string name="ssl_untrusted">"该证书并非来自可信的授权机构。"</string>
+    <string name="ssl_untrusted">"该证书并非来自可信的授权中心。"</string>
     <string name="ssl_mismatch">"网站的名称与证书上的名称不一致。"</string>
     <string name="ssl_expired">"该证书已过期。"</string>
     <string name="ssl_not_yet_valid">"该证书尚未生效。"</string>
     <string name="ssl_certificate">"安全证书"</string>
     <string name="ssl_certificate_is_valid">"该证书有效。"</string>
-    <string name="issued_to">"发布位置："</string>
+    <string name="issued_to">"颁发给："</string>
     <string name="common_name">"常用名称："</string>
     <string name="org_name">"组织："</string>
     <string name="org_unit">"组织单位："</string>
-    <string name="issued_by">"发布者："</string>
-    <string name="validity_period">"有效性："</string>
-    <string name="issued_on">"发布时间："</string>
+    <string name="issued_by">"颁发者："</string>
+    <string name="validity_period">"有效期："</string>
+    <string name="issued_on">"颁发时间："</string>
     <string name="expires_on">"有效期至："</string>
     <string name="retrieving_creds_dlg_msg">"正在检索登录详细信息..."</string>
     <string name="stopping">"正在停止..."</string>
@@ -68,24 +68,24 @@
     <string name="http">"http://"</string>
     <string name="save_to_bookmarks">"书签"</string>
     <string name="edit_bookmark">"编辑书签"</string>
-    <string name="create_shortcut_bookmark">"向“主页”添加快捷方式"</string>
+    <string name="create_shortcut_bookmark">"向主屏幕添加快捷方式"</string>
     <string name="open_bookmark">"打开"</string>
     <string name="remove_bookmark">"删除书签"</string>
     <string name="remove_history_item">"从历史记录中删除"</string>
-    <string name="bookmark_saved">"保存至书签。"</string>
+    <string name="bookmark_saved">"已保存至书签。"</string>
     <string name="bookmark_needs_title">"书签必须具有名称。"</string>
     <string name="bookmark_needs_url">"书签必须具有位置。"</string>
     <string name="empty_bookmark">"无法创建空书签。"</string>
     <string name="bookmark_url_not_valid">"网址无效。"</string>
     <string name="delete_bookmark">"删除"</string>
-    <string name="bookmark_page">"将上次查看过的页面加为书签"</string>
+    <string name="bookmark_page">"将上次查看过的网页加为书签"</string>
     <string name="current_page">"来源 "</string>
-    <string name="delete_bookmark_warning">"会删除书签“<xliff:g id="BOOKMARK">%s</xliff:g>”。"</string>
+    <string name="delete_bookmark_warning">"将会删除书签“<xliff:g id="BOOKMARK">%s</xliff:g>”。"</string>
     <string name="open_in_new_window">"在新窗口中打开"</string>
     <string name="new_window">"新窗口"</string>
     <string name="goto_dot">"开始"</string>
-    <string name="find_dot">"在页面上查找"</string>
-    <string name="select_dot">"选择文本"</string>
+    <string name="find_dot">"在网页上查找"</string>
+    <string name="select_dot">"选择文字"</string>
     <string name="view_tabs">"窗口概述"</string>
     <string name="view_tabs_condensed">"窗口"</string>
     <string name="tab_picker_title">"当前窗口"</string>
@@ -93,17 +93,17 @@
     <string name="tab_picker_new_tab">"新窗口"</string>
     <string name="tab_picker_remove_tab">"关闭"</string>
     <string name="tab_picker_bookmark">"书签"</string>
-    <string name="tab_picker_send_url">"共享链接"</string>
+    <string name="tab_picker_send_url">"分享链接"</string>
     <string name="bookmarks">"书签"</string>
     <string name="shortcut_bookmark">"书签"</string>
     <string name="history">"历史记录"</string>
     <string name="menu_view_download">"下载"</string>
-    <string name="share_page">"共享页面"</string>
+    <string name="share_page">"分享网页"</string>
     <string name="contextmenu_openlink">"打开"</string>
     <string name="contextmenu_openlink_newwindow">"在新窗口中打开"</string>
     <string name="contextmenu_bookmark_thislink">"书签链接"</string>
     <string name="contextmenu_savelink">"保存链接"</string>
-    <string name="contextmenu_sharelink">"共享链接"</string>
+    <string name="contextmenu_sharelink">"分享链接"</string>
     <string name="contextmenu_copy">"复制"</string>
     <string name="contextmenu_copylink">"复制链接网址"</string>
     <string name="contextmenu_download_image">"保存图片"</string>
@@ -116,50 +116,57 @@
     <string name="replace">"替换"</string>
     <string name="browser_bookmarks_page_bookmarks_text">"书签"</string>
     <string name="menu_preferences">"设置"</string>
-    <string name="pref_content_title">"页面内容设置"</string>
+    <string name="pref_content_title">"网页内容设置"</string>
     <string name="pref_content_load_images">"载入图片"</string>
     <string name="pref_content_load_images_summary">"在网页上显示图片"</string>
-    <string name="pref_content_block_popups">"阻止弹出窗口"</string>
+    <string name="pref_content_block_popups">"阻止弹出式窗口"</string>
     <string name="pref_content_javascript">"启用 JavaScript"</string>
     <string name="pref_content_open_in_background">"在后台打开"</string>
     <string name="pref_content_open_in_background_summary">"新窗口会在当前窗口后方打开"</string>
     <string name="pref_content_homepage">"设置主页"</string>
-    <string name="pref_content_autofit">"自动适应页面"</string>
+    <string name="pref_content_autofit">"自动调整为网页大小"</string>
     <string name="pref_content_autofit_summary">"调整网页格式以适合屏幕大小"</string>
-    <string name="pref_privacy_title">"隐私设置"</string>
+    <string name="pref_privacy_title">"隐私权设置"</string>
     <string name="pref_privacy_clear_cache">"清除缓存"</string>
-    <string name="pref_privacy_clear_cache_summary">"删除所有缓存的页面内容"</string>
-    <string name="pref_privacy_clear_cache_dlg">"会清除缓存。"</string>
+    <string name="pref_privacy_clear_cache_summary">"删除所有缓存的网页内容"</string>
+    <string name="pref_privacy_clear_cache_dlg">"将会清除缓存。"</string>
     <string name="pref_privacy_clear_cookies">"清除所有 Cookie 数据"</string>
     <string name="pref_privacy_clear_cookies_summary">"清除所有浏览器 Cookie"</string>
-    <string name="pref_privacy_clear_cookies_dlg">"会清除所有 Cookie。"</string>
+    <string name="pref_privacy_clear_cookies_dlg">"将会清除所有 Cookie。"</string>
     <string name="pref_privacy_clear_history">"清除历史记录"</string>
     <string name="pref_privacy_clear_history_summary">"清除浏览器导航历史记录"</string>
-    <string name="pref_privacy_clear_history_dlg">"会清除浏览器导航历史记录。"</string>
+    <string name="pref_privacy_clear_history_dlg">"将会清除浏览器导航历史记录。"</string>
     <string name="pref_privacy_clear_form_data">"清除表单数据"</string>
     <string name="pref_privacy_clear_form_data_summary">"清除所有已保存的表单数据"</string>
-    <string name="pref_privacy_clear_form_data_dlg">"会清除所有保存的表单数据。"</string>
+    <string name="pref_privacy_clear_form_data_dlg">"将会清除所有保存的表单数据。"</string>
     <string name="pref_privacy_clear_passwords">"清除密码"</string>
     <string name="pref_privacy_clear_passwords_summary">"清除所有保存的密码"</string>
-    <string name="pref_privacy_clear_passwords_dlg">"会清除所有保存的密码。"</string>
+    <string name="pref_privacy_clear_passwords_dlg">"将会清除所有保存的密码。"</string>
     <string name="pref_security_title">"安全设置"</string>
     <string name="pref_security_remember_passwords">"记住密码"</string>
-    <string name="pref_security_remember_passwords_summary">"保存用于网站的用户名和密码"</string>
+    <string name="pref_security_remember_passwords_summary">"保存访问网站所用的用户名和密码"</string>
     <string name="pref_security_save_form_data">"记住表单数据"</string>
-    <string name="pref_security_save_form_data_summary">"记住我在表单中键入的数据以供以后使用"</string>
+    <string name="pref_security_save_form_data_summary">"记住我在表单中输入的数据以便于以后使用"</string>
     <string name="pref_security_show_security_warning">"显示安全警告"</string>
     <string name="pref_security_show_security_warning_summary">"当网站的安全有问题时显示警告"</string>
     <string name="pref_security_accept_cookies">"接受 Cookie"</string>
-    <string name="pref_security_accept_cookies_summary">"允许网站保存并读取“Cookie”数据"</string>
-    <string name="pref_text_size">"设置文字大小"</string>
+    <string name="pref_security_accept_cookies_summary">"允许网站保存并读取 Cookie 数据"</string>
+    <string name="pref_text_size">"文字大小"</string>
   <string-array name="pref_text_size_choices">
-    <item>"极小"</item>
+    <item>"超小"</item>
     <item>"小"</item>
     <item>"正常"</item>
     <item>"大"</item>
-    <item>"极大"</item>
+    <item>"超大"</item>
   </string-array>
     <string name="pref_text_size_dialogtitle">"文字大小"</string>
+    <!-- no translation found for pref_default_zoom (8076142259097187395) -->
+    <skip />
+    <!-- no translation found for pref_default_zoom_choices:0 (549583171195154919) -->
+    <!-- no translation found for pref_default_zoom_choices:1 (5619034257768161024) -->
+    <!-- no translation found for pref_default_zoom_choices:2 (3840999588443167001) -->
+    <!-- no translation found for pref_default_zoom_dialogtitle (6095974367125109021) -->
+    <skip />
     <string name="pref_extras_title">"高级设置"</string>
     <string name="pref_extras_gears_enable">"启用 Gears"</string>
     <string name="pref_extras_gears_enable_summary">"扩展浏览器功能的应用程序"</string>
@@ -169,42 +176,45 @@
     <string name="pref_extras_gears_settings_summary">"扩展浏览器功能的应用程序"</string>
     <string name="pref_extras_reset_default">"重置为默认值"</string>
     <string name="pref_extras_reset_default_summary">"清除所有浏览器数据并将所有设置重置为默认值"</string>
-    <string name="pref_extras_reset_default_dlg">"会清除所有浏览器数据并且设置会恢复为默认值。"</string>
+    <string name="pref_extras_reset_default_dlg">"将会清除所有浏览器数据并将设置恢复为默认值。"</string>
     <string name="pref_extras_reset_default_dlg_title">"重置为默认值"</string>
     <string name="pref_development_title">"调试"</string>
-    <string name="pref_default_text_encoding">"设置文字编码"</string>
+    <!-- no translation found for pref_default_text_encoding (5742965543955558478) -->
+    <skip />
   <string-array name="pref_default_text_encoding_choices">
-    <item>"Latin-1 (ISO-8859-1)"</item>
+    <item>"拉丁语-1 (ISO-8859-1)"</item>
     <item>"Unicode (UTF-8)"</item>
-    <item>"Japanese (ISO-2022-JP)"</item>
-    <item>"Japanese (SHIFT_JIS)"</item>
-    <item>"Japanese (EUC-JP)"</item>
+    <item>"日文 (ISO-2022-JP)"</item>
+    <item>"日文 (SHIFT_JIS)"</item>
+    <item>"日文 (EUC-JP)"</item>
   </string-array>
     <string name="pref_default_text_encoding_dialogtitle">"文字编码"</string>
-    <string name="pref_default_text_encoding_default">"Latin-1"</string>
+    <string name="pref_default_text_encoding_default">"拉丁语-1"</string>
     <string name="browserFrameRedirect">"重定向"</string>
-    <string name="browserFrame307Post">"该网页正被重定向。是否将您键入的表单数据重新发送到新位置？"</string>
+    <string name="browserFrame307Post">"该网页正在进行重定向。是否要将您输入的表单数据重新发送到新位置？"</string>
     <string name="browserFrameNetworkErrorLabel">"数据连接性问题"</string>
     <string name="browserFrameFileErrorLabel">"文件有问题"</string>
     <string name="browserFrameFormResubmitLabel">"确认"</string>
-    <string name="browserFrameFormResubmitMessage">"您尝试查看的页面中包含已经提交的数据（“POSTDATA”）。如果重新发送数据，系统会重复该页面上的表单所执行过的一切操作（如搜索或在线购买）。"</string>
+    <string name="browserFrameFormResubmitMessage">"您尝试查看的网页中包含已经提交的数据（“POSTDATA”）。如果您重新发送这些数据，系统会重复该网页上的表单所执行过的一切操作（如搜索或在线购买）。"</string>
     <string name="loadSuspendedTitle">"没有网络连接"</string>
-    <string name="loadSuspended">"连接恢复后页面会继续载入。"</string>
+    <string name="loadSuspended">"连接恢复后网页会继续载入。"</string>
     <string name="clear_history">"清除历史记录"</string>
-    <string name="browser_history">"最近访问过的页面"</string>
+    <string name="browser_history">"最近访问过的网页"</string>
     <string name="empty_history">"浏览器历史记录为空。"</string>
     <string name="add_new_bookmark">"添加书签..."</string>
     <string name="no_database">"没有数据库！"</string>
-    <string name="search_hint">"键入网址"</string>
+    <string name="search_hint">"输入网址"</string>
     <string name="search_button_text">"转至"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
     <string name="attention">"注意"</string>
-    <string name="popup_window_attempt">"该网站正试图打开一个弹出窗口。"</string>
+    <string name="popup_window_attempt">"该网站试图打开一个弹出式窗口。"</string>
     <string name="allow">"允许"</string>
     <string name="block">"阻止"</string>
-    <string name="too_many_windows_dialog_title">"已达到窗口限制"</string>
-    <string name="too_many_windows_dialog_message">"无法打开新窗口，因为您打开的窗口数已达到允许的最高数目。"</string>
-    <string name="too_many_subwindows_dialog_title">"弹出窗口已经打开"</string>
-    <string name="too_many_subwindows_dialog_message">"无法打开新的弹出窗口，因为不管何时一次都只能打开一个。"</string>
+    <string name="too_many_windows_dialog_title">"打开的窗口数已达上限"</string>
+    <string name="too_many_windows_dialog_message">"无法打开新窗口，因为打开的窗口数已达到上限。"</string>
+    <string name="too_many_subwindows_dialog_title">"弹出式窗口已经打开"</string>
+    <string name="too_many_subwindows_dialog_message">"无法打开新的弹出式窗口，因为任何时候都是一次只能打开一个窗口。"</string>
     <string name="download_title">"下载历史记录"</string>
     <string name="download_unknown_filename">"&lt;未知&gt;"</string>
     <string name="download_menu_open">"打开"</string>
@@ -213,14 +223,14 @@
     <string name="download_menu_cancel_all">"取消所有下载"</string>
     <string name="download_menu_clear_all">"清除列表"</string>
     <string name="download_clear_dlg_title">"清除"</string>
-    <string name="download_clear_dlg_msg">"所有条目都会从列表中清除并会从浏览器缓存中删除。"</string>
+    <string name="download_clear_dlg_msg">"所有项都会从列表中清除并会从浏览器缓存中删除。"</string>
     <string name="download_cancel_dlg_title">"取消下载"</string>
-    <string name="download_cancel_dlg_msg">"所有 <xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> 个下载都会取消并从下载历史记录中清除。"</string>
+    <string name="download_cancel_dlg_msg">"所有 <xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> 项下载都会取消并从下载历史记录中清除。"</string>
     <string name="download_file_error_dlg_title">"空间不足"</string>
-    <string name="download_file_error_dlg_msg">"无法下载<xliff:g id="FILENAME">%s</xliff:g>。"\n"请释放手机中的一些空间并重试。"</string>
+    <string name="download_file_error_dlg_msg">"无法下载<xliff:g id="FILENAME">%s</xliff:g>。"\n"请释放部分手机空间，然后重试。"</string>
     <string name="download_failed_generic_dlg_title">"下载不成功"</string>
     <string name="download_no_sdcard_dlg_title">"无 SD 卡"</string>
-    <string name="download_no_sdcard_dlg_msg">"需要 SD 卡才能下载 <xliff:g id="FILENAME">%s</xliff:g>。"</string>
+    <string name="download_no_sdcard_dlg_msg">"需要有 SD 卡才能下载<xliff:g id="FILENAME">%s</xliff:g>。"</string>
     <string name="download_sdcard_busy_dlg_title">"SD 卡不可用"</string>
     <string name="download_sdcard_busy_dlg_msg">"SD 卡正忙。要允许下载，请在通知中选择“关闭 USB 存储”。"</string>
     <string name="download_no_application">"无法找到可打开此文件的应用程序。"</string>
@@ -233,26 +243,26 @@
     <string name="download_pending_network">"正在等待数据连接..."</string>
     <string name="download_running_paused">"正在等待数据连接..."</string>
     <string name="download_canceled">"下载已取消。"</string>
-    <string name="download_not_acceptable">"无法下载。手机不支持该内容。"</string>
-    <string name="download_file_error">"无法完成下载。存储空间不足。"</string>
-    <string name="download_length_required">"无法下载。无法确定该项的大小。"</string>
+    <string name="download_not_acceptable">"无法下载，手机不支持此内容。"</string>
+    <string name="download_file_error">"无法完成下载，存储空间不足。"</string>
+    <string name="download_length_required">"无法下载，无法确定该项的大小。"</string>
     <string name="download_precondition_failed">"下载中断，无法重新开始。"</string>
-    <string name="activity_instrumentation_test_runner">"浏览器测试运行器"</string>
-    <string name="permlab_readHistoryBookmarks">"读取浏览器的历史记录和书签"</string>
-    <string name="permdesc_readHistoryBookmarks">"允许应用程序读取浏览器访问过的所有网址以及浏览器的所有书签。"</string>
-    <string name="permlab_writeHistoryBookmarks">"写入浏览器的历史记录和书签"</string>
-    <string name="permdesc_writeHistoryBookmarks">"允许应用程序修改您手机中存储的浏览器的历史记录或书签。恶意应用程序可能会利用此权限清除或修改您浏览器的数据。"</string>
+    <string name="activity_instrumentation_test_runner">"浏览器测试运行程序"</string>
+    <!-- no translation found for homepage_base (7888126987935305566) -->
+    <skip />
+    <!-- no translation found for search_the_web (6046130189241962337) -->
+    <skip />
     <string name="query_data_prompt">"允许存储"</string>
     <string name="query_data_message">"此网站要将信息存储在您的手机上。"</string>
     <string name="location_prompt">"访问您所在的位置"</string>
     <string name="location_message">"此网站要访问您所在的位置。"</string>
     <string name="shortcut_prompt">"创建快捷方式"</string>
     <string name="shortcut_message">"此网站要在您的主屏幕上创建此网页的快捷方式。"</string>
-    <string name="settings_message">"下表显示了您授予尝试使用 Gears 的各个网站的权限。"</string>
+    <string name="settings_message">"下表显示了您已授予试图使用 Gears 的各个网站的权限。"</string>
     <string name="filepicker_message">"文件选择器"</string>
     <string name="image_message">"选择的图片"</string>
     <string name="settings_title">"Gears 设置"</string>
-    <string name="privacy_policy">"阅读网站的隐私政策，以了解会如何使用您的位置。"</string>
+    <string name="privacy_policy">"阅读网站的隐私权政策，了解将会如何使用您的位置。"</string>
     <string name="settings_storage_title">"允许本地存储"</string>
     <string name="settings_storage_subtitle_on">"此网站可以将信息保存到您的手机上"</string>
     <string name="settings_storage_subtitle_off">"此网站无法将信息保存到您的手机上"</string>
@@ -279,14 +289,14 @@
     <string name="filepicker_button_allow">"确定"</string>
     <string name="filepicker_button_deny">"取消"</string>
     <string name="filepicker_path">"路径："</string>
-    <string name="filepicker_no_files_selected">"未选择文件"</string>
-    <string name="filepicker_one_file_selected">"选择了一个文件"</string>
-    <string name="filepicker_some_files_selected">"选择了文件"</string>
+    <string name="filepicker_no_files_selected">"未选定任何文件"</string>
+    <string name="filepicker_one_file_selected">"一个文件已选定"</string>
+    <string name="filepicker_some_files_selected">"个文件已选定"</string>
     <string name="remove">"删除"</string>
     <string name="local_storage">"本地存储"</string>
     <string name="allowed">"允许"</string>
     <string name="denied">"已拒绝"</string>
-    <string name="unrecognized_dialog_message">"未识别的对话类型"</string>
+    <string name="unrecognized_dialog_message">"无法识别的对话类型"</string>
     <string name="default_button">"确定"</string>
     <string name="zoom_overview_button_text">"概览"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index b1729d2..fec7a13 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -25,6 +25,7 @@
     <string name="username">"名字"</string>
     <string name="password">"密碼"</string>
     <string name="action">"登入"</string>
+    <string name="bookmarks_search">"瀏覽器"</string>
     <string name="cancel">"取消"</string>
     <string name="ok">"確定"</string>
   <plurals name="matches_found">
@@ -149,7 +150,7 @@
     <string name="pref_security_show_security_warning_summary">"當網站安全性有問題時，顯示警告訊息"</string>
     <string name="pref_security_accept_cookies">"接受 cookie"</string>
     <string name="pref_security_accept_cookies_summary">"允許網站存取 cookie"</string>
-    <string name="pref_text_size">"設定文字大小"</string>
+    <string name="pref_text_size">"文字大小"</string>
   <string-array name="pref_text_size_choices">
     <item>"最小"</item>
     <item>"小"</item>
@@ -158,6 +159,13 @@
     <item>"最大"</item>
   </string-array>
     <string name="pref_text_size_dialogtitle">"文字大小"</string>
+    <string name="pref_default_zoom">"預設縮放"</string>
+  <string-array name="pref_default_zoom_choices">
+    <item>"遠"</item>
+    <item>"中"</item>
+    <item>"近"</item>
+  </string-array>
+    <string name="pref_default_zoom_dialogtitle">"預設縮放"</string>
     <string name="pref_extras_title">"進階設定"</string>
     <string name="pref_extras_gears_enable">"啟用 Gears"</string>
     <string name="pref_extras_gears_enable_summary">"可擴充瀏覽器功能的應用程式"</string>
@@ -170,7 +178,7 @@
     <string name="pref_extras_reset_default_dlg">"瀏覽器所有資料會被清除， 並還原至初始設定。"</string>
     <string name="pref_extras_reset_default_dlg_title">"還原至初始設定"</string>
     <string name="pref_development_title">"偵錯"</string>
-    <string name="pref_default_text_encoding">"設定文字編碼"</string>
+    <string name="pref_default_text_encoding">"文字編碼"</string>
   <string-array name="pref_default_text_encoding_choices">
     <item>"Latin-1 (ISO-8859-1)"</item>
     <item>"Unicode (UTF-8)"</item>
@@ -195,6 +203,8 @@
     <string name="no_database">"沒有資料！"</string>
     <string name="search_hint">"輸入網頁位址"</string>
     <string name="search_button_text">"前往"</string>
+    <!-- no translation found for search_settings_description (1422401062529014107) -->
+    <skip />
     <string name="attention">"注意"</string>
     <string name="popup_window_attempt">"此網站試圖開啟快顯視窗。"</string>
     <string name="allow">"允許"</string>
@@ -214,7 +224,7 @@
     <string name="download_clear_dlg_msg">"所有清單中的項目會被清除，並從快取中移除。"</string>
     <string name="download_cancel_dlg_title">"取消下載"</string>
     <string name="download_cancel_dlg_msg">"所有 (<xliff:g id="DOWNLOAD_COUNT">%d</xliff:g>) 下載會取消並從下載記錄中清除。"</string>
-    <string name="download_file_error_dlg_title">"超出空間"</string>
+    <string name="download_file_error_dlg_title">"空間不足"</string>
     <string name="download_file_error_dlg_msg">"無法下載 <xliff:g id="FILENAME">%s</xliff:g>。"\n" 請清除手機上的空間或再試一次。"</string>
     <string name="download_failed_generic_dlg_title">"下載失敗"</string>
     <string name="download_no_sdcard_dlg_title">"沒有 SD 卡"</string>
@@ -236,10 +246,8 @@
     <string name="download_length_required">"無法下載。物件大小無法估計。"</string>
     <string name="download_precondition_failed">"下載中斷。無法續傳。"</string>
     <string name="activity_instrumentation_test_runner">"Browser Test Runner"</string>
-    <string name="permlab_readHistoryBookmarks">"讀取瀏覽器的瀏覽記錄和書籤"</string>
-    <string name="permdesc_readHistoryBookmarks">"允許應用程式讀取瀏覽器造訪過的所有 URL 和瀏覽器所有的書籤。"</string>
-    <string name="permlab_writeHistoryBookmarks">"寫入瀏覽器的瀏覽記錄和書籤"</string>
-    <string name="permdesc_writeHistoryBookmarks">"允許應用程式修改儲存在電話上的瀏覽記錄或書籤。請注意：惡意應用程式可能會使用此選項來清除或修改您瀏覽器的資料。"</string>
+    <string name="homepage_base">"http://www.google.com/m?client=ms-{CID}"</string>
+    <string name="search_the_web">"搜尋網頁"</string>
     <string name="query_data_prompt">"允許儲存"</string>
     <string name="query_data_message">"此網站要在您的手機上儲存資訊。"</string>
     <string name="location_prompt">"存取您的位置資訊"</string>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
new file mode 100644
index 0000000..219cc6b
--- /dev/null
+++ b/res/values/arrays.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+  -->
+<resources>
+   <string-array name="webstorage_quota_entries">
+      <item>No quota allowed</item>
+      <item>5 MB</item>
+      <item>10 MB</item>
+      <item>30 MB</item>
+      <item>100 MB</item>
+   </string-array>
+   <string-array name="webstorage_quota_entries_values">
+      <item>0</item>
+      <item>5</item>
+      <item>10</item>
+      <item>30</item>
+      <item>100</item>
+   </string-array>
+</resources>
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 69c17cb..0d1c229 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -58,7 +58,10 @@
         <!-- Case of several matches -->
         <item quantity="other"><xliff:g id="number" example="137">%d</xliff:g> matches</item>
     </plurals>
-    
+
+    <!-- Displayed on the title bar while the page is loading -->
+    <string name="title_bar_loading">Loading\u2026</string>
+
     <!-- Menu item -->
     <string name="page_info">Page info</string>
     <!-- Label for a button on an SSL error dialog that allows the user to see
@@ -143,8 +146,12 @@
     <string name="remove_bookmark">Delete bookmark</string>
     <!-- Menu item to remove the currently highlighted history entry from the list of previously visited sites -->
     <string name="remove_history_item">Remove from history</string>
+    <!-- Context menu item for setting the bookmark/history item as the homepage -->
+    <string name="set_as_homepage">Set as homepage</string>
     <!-- Toast informing the user that their action to save a bookmark has succeeded -->
     <string name="bookmark_saved">Saved to bookmarks.</string>
+    <!-- Toast confirming that the homepage has been set -->
+    <string name="homepage_set">Homepage set</string>
     <!-- Error that appears in the title of Bookmark dialog when user selects OK with empty Name field -->
     <string name="bookmark_needs_title">"Bookmark must have a name."</string>
         <!-- Error that appears in the title of Bookmark dialog when user selects OK with empty Location field -->
@@ -160,6 +167,9 @@
             currently on, but is not visible because the bookmarks page is 
             showing. -->
     <string name="bookmark_page">Bookmark last-viewed page</string>
+    <!-- Menu item in the page that displays all bookmarks.  Switches between
+            a vertical list view and a grid view which shows thumbnails -->
+    <string name="switch_mode">Switch viewing mode</string>
     <!-- Summary text under the New Bookmark item on the Bookmarks screen.
             Tells the user that if they select this item, it will bring up a
             dialog to bookmark the page that the browser is currently viewing,
@@ -284,14 +294,18 @@
     <string name="pref_content_autofit">Auto-fit pages</string>
     <!-- Settings summary -->
     <string name="pref_content_autofit_summary">Format Web pages to fit the screen</string>
+    <!-- Settings label for enabling a mode where the browser is always set to landscape mode -->
+    <string name="pref_content_landscape_only">Landscape only display</string>
+    <!-- Settings summary -->
+    <string name="pref_content_landscape_only_summary">Always read pages in the wider, landscape screen orientation</string>
     <!-- Settings screen, section title -->
     <string name="pref_privacy_title">Privacy settings</string>
     <!-- Settings label -->
     <string name="pref_privacy_clear_cache">Clear cache</string>
     <!-- Settings summary -->
-    <string name="pref_privacy_clear_cache_summary">Delete all cached page content</string>
+    <string name="pref_privacy_clear_cache_summary">Clear locally cached content and databases</string>
     <!-- Confirmation dialog message -->
-    <string name="pref_privacy_clear_cache_dlg">The cache will be cleared.</string>
+    <string name="pref_privacy_clear_cache_dlg">Locally cached content and databases will be cleared.</string>
     <!-- Settings label -->
     <string name="pref_privacy_clear_cookies">Clear all cookie data</string>
     <!-- Settings summary -->
@@ -316,6 +330,16 @@
     <string name="pref_privacy_clear_passwords_summary">Clear all the saved passwords</string>
     <!-- Confirmation dialog message -->
     <string name="pref_privacy_clear_passwords_dlg">All saved passwords will be cleared.</string>
+    <!-- Settings label -->
+    <string name="pref_privacy_request_location">Enable location</string>
+    <!-- Settings summary -->
+    <string name="pref_privacy_request_location_summary">Allow sites to request access to your location</string>
+    <!-- Settings label -->
+    <string name="pref_privacy_clear_location_requests">Clear location access</string>
+    <!-- Settings summary -->
+    <string name="pref_privacy_clear_location_requests_summary">Clear location access for all websites</string>
+    <!-- Confirmation dialog message -->
+    <string name="pref_privacy_clear_location_requests_dlg">Clear all previous location requests</string>
     <!-- Settings screen, section title -->
     <string name="pref_security_title">Security settings</string>
     <!-- Settings label -->
@@ -377,6 +401,10 @@
     <!-- Settings summary -->
     <string name="pref_extras_gears_enable_summary">Applications that extend browser functionality</string>
     <!-- Settings label -->
+    <string name="pref_extras_website_settings">Website Settings</string>
+    <!-- Settings summary -->
+    <string name="pref_extras_website_settings_summary">View advanced settings for individual websites</string>
+    <!-- Settings label -->
     <string name="pref_extras_gears_settings">Gears settings</string>
     <!-- Settings summary -->
     <string name="pref_plugin_installed">Plugins list</string>
@@ -404,6 +432,8 @@
     <!-- Do not tranlsate.  Development option -->
     <string name="pref_development_nav_dump" translatable="false">Enable nav cache dump</string>
     <!-- Do not tranlsate.  Development option -->
+    <string name="js_engine_flags" translatable="false">Set JS flags</string>
+    <!-- Do not tranlsate.  Development option -->
     <string name="pref_development_uastring" translatable="false">UAString</string>
     <!-- Do not tranlsate.  Development option -->
     <string-array name="pref_development_ua_choices" translatable="false">
@@ -417,6 +447,7 @@
         <item>1</item>
         <item>2</item>
     </string-array>
+    <string name="pref_development_error_console" translatable="false">Show JavaScript Console</string>
     <!-- Settings screen, setting option name -->
     <string name="pref_default_text_encoding">Text encoding</string>
     <!-- Options in the Default encoding dialog box -->
@@ -465,6 +496,9 @@
     <string name="empty_history">Browser history is empty.</string>
     <!-- Displayed at the top of the bookmarks page.  When clicked, it bookmarks the page the browser is currently showing -->
     <string name="add_new_bookmark">Add bookmark\u2026</string>
+    <!-- Verb placed in front of a screenshot of a web page that, when clicked,
+            will add that page to bookmarks -->
+    <string name="add_bookmark_short">Add</string>
     <!-- Add bookmark dialog sets its title to this if we have no database.
             This is an error case -->
     <string name="no_database">No database!</string>
@@ -671,6 +705,9 @@
     <!-- Gears Dialogs -->
     <string name="query_data_prompt">Allow storage</string>
     <string name="query_data_message">This web site would like to store information on your phone.</string>
+    <string name="query_storage_quota_prompt">Increase storage quota</string>
+    <string name="query_storage_quota_message">This web site is over its current
+      storage limit. Would you like to increase its quota limit ?</string>
     <string name="location_prompt">Access your location</string>
     <string name="location_message">This web site would like to have access to your location.</string>
     <string name="shortcut_prompt">Create a shortcut</string>
@@ -727,7 +764,26 @@
     <string name="unrecognized_dialog_message">Unrecognized dialog type</string>
     <string name="default_button">OK</string>
 
+    <!-- HTML5 dialogs -->
+    <!-- Used as a toast notification after the user close the html5 webstorage permission dialog -->
+    <string name="webstorage_notification">The quota for this site can be changed in the Local Storage section of the Browser settings</string>
+    <!-- Used in the Browser Settings -->
+    <string name="webstorage_clear_data_title">Clear Stored Data</string>
+    <string name="webstorage_clear_data_summary">Remove all databases associated with this website</string>
+    <!-- Confirmation dialog when the user ask to clear all data for an origin -->
+    <string name="webstorage_clear_data_dialog_title">Clear All Data</string>
+    <string name="webstorage_clear_data_dialog_message">All stored data by this origin will be deleted</string>
+    <string name="webstorage_clear_data_dialog_ok_button">Clear All</string>
+    <string name="webstorage_clear_data_dialog_cancel_button">Cancel</string>
+    <!-- Strings used in the summary of origins -->
+    <string name="webstorage_origin_summary_mb_stored">MB stored on your phone</string>
+
     <!-- Zoom-related strings --><skip />
     <!-- Caption for a button that is shown when the zoom widget is showing.  The button's action will switch to the zoom overview mode. -->
     <string name="zoom_overview_button_text">Overview</string>
+
+    <string name="error_console_header_text_minimized" translatable="false">Show JavaScript Console</string>
+    <string name="error_console_header_text_maximized" translatable="false">JavaScript Console</string>
+    <string name="error_console_eval_text_hint" translatable="false">Evaluate JavaScript</string>
+    <string name="error_console_eval_button_text" translatable="false">Evaluate</string>
 </resources>
diff --git a/res/xml/bookmarks_searchable.xml b/res/xml/bookmarks_searchable.xml
index bc6ac93..de56add 100644
--- a/res/xml/bookmarks_searchable.xml
+++ b/res/xml/bookmarks_searchable.xml
@@ -22,6 +22,7 @@
     android:imeOptions="actionGo"
 
     android:includeInGlobalSearch="true"
+    android:searchSettingsDescription="@string/search_settings_description"
     android:searchSuggestAuthority="browser"
     android:searchSuggestPath="bookmarks"
     android:searchSuggestSelection="url LIKE ?"
diff --git a/res/xml/browser_preferences.xml b/res/xml/browser_preferences.xml
index 23618c5..dffb550 100644
--- a/res/xml/browser_preferences.xml
+++ b/res/xml/browser_preferences.xml
@@ -62,6 +62,12 @@
                 android:summary="@string/pref_content_autofit_summary" />  
 
         <CheckBoxPreference
+                android:key="landscape_only"
+                android:defaultValue="false"
+                android:title="@string/pref_content_landscape_only"
+                android:summary="@string/pref_content_landscape_only_summary" />
+
+        <CheckBoxPreference
                 android:key="enable_javascript"
                 android:defaultValue="true"
                 android:title="@string/pref_content_javascript" />     
@@ -128,6 +134,24 @@
                 android:dialogTitle="@string/clear" 
                 android:dialogIcon="@android:drawable/ic_dialog_alert"/>
 
+        <!-- below preferences will be shown when html5 location is implemented -->
+        <!--
+
+        <CheckBoxPreference
+                android:key="request_location"
+                android:defaultValue="true"
+                android:title="@string/pref_privacy_request_location"
+                android:summary="@string/pref_privacy_request_location_summary" />
+
+        <com.android.browser.BrowserYesNoPreference
+                android:key="privacy_clear_location_requests"
+                android:title="@string/pref_privacy_clear_location_requests"
+                android:summary="@string/pref_privacy_clear_location_requests_summary"
+                android:dialogMessage="@string/pref_privacy_clear_location_requests_dlg"
+                android:dialogTitle="@string/clear"
+                android:dialogIcon="@android:drawable/ic_dialog_alert"/>
+        -->
+
     </PreferenceCategory>
     
         <PreferenceCategory
@@ -173,6 +197,11 @@
                     android:title="@string/pref_extras_gears_settings"
                     android:summary="@string/pref_extras_gears_settings_summary" />
 
+            <PreferenceScreen
+                  android:key="website_settings"
+                  android:title="@string/pref_extras_website_settings"
+                  android:summary="@string/pref_extras_website_settings_summary" />
+
             <com.android.browser.BrowserYesNoPreference
                     android:key="reset_default_preferences"
                     android:title="@string/pref_extras_reset_default"
diff --git a/res/xml/debug_preferences.xml b/res/xml/debug_preferences.xml
index 22b5997..c1ed1e6 100644
--- a/res/xml/debug_preferences.xml
+++ b/res/xml/debug_preferences.xml
@@ -19,6 +19,13 @@
     <PreferenceCategory
         android:title="@string/pref_development_title" 
         android:key="debug_menu" >
+
+        <!-- The javascript console is enabled by default when the user has
+             also enabled debug mode by navigating to about:debug. -->
+        <CheckBoxPreference
+            android:key="javascript_console"
+            android:defaultValue="true"
+            android:title="@string/pref_development_error_console" />
                         
         <CheckBoxPreference
             android:key="small_screen"
@@ -50,6 +57,11 @@
             android:defaultValue="false"
             android:title="@string/pref_development_nav_dump" />
 
+        <EditTextPreference
+            android:key="js_engine_flags"
+            android:title="@string/js_engine_flags"
+            android:singleLine="true" />
+
         <ListPreference
             android:key="user_agent"
             android:title="@string/pref_development_uastring"
diff --git a/res/xml/searchable.xml b/res/xml/searchable.xml
index a3b2d90..bb578c6 100644
--- a/res/xml/searchable.xml
+++ b/res/xml/searchable.xml
@@ -27,7 +27,6 @@
     android:inputType="textUri"
     android:imeOptions="actionGo"
     
-    android:searchSettingsDescription="@string/search_settings_description"
     android:searchSuggestAuthority="browser"
     android:searchSuggestSelection="url LIKE ?"
     android:searchSuggestIntentAction="android.intent.action.VIEW"
diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index cf3fe70..e827a7e 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -18,18 +18,14 @@
 
 import android.app.Activity;
 import android.content.ContentResolver;
-import android.content.ContentUris;
-import android.content.ContentValues;
 import android.content.Intent;
 import android.content.res.Resources;
-import android.database.Cursor;
 import android.net.ParseException;
 import android.net.WebAddress;
 import android.os.Bundle;
 import android.provider.Browser;
 import android.view.View;
 import android.view.Window;
-import android.webkit.WebIconDatabase;
 import android.widget.EditText;
 import android.widget.TextView;
 import android.widget.Toast;
@@ -46,11 +42,6 @@
     private View        mCancelButton;
     private boolean     mEditingExisting;
     private Bundle      mMap;
-    
-    private static final String[]   mProjection = 
-        { "_id", "url", "bookmark", "created", "title", "visits" };
-    private static final String     WHERE_CLAUSE = "url = ?";
-    private final String[]          SELECTION_ARGS = new String[1];
 
     private View.OnClickListener mSaveBookmark = new View.OnClickListener() {
         public void onClick(View v) {
@@ -151,70 +142,7 @@
                 setResult(RESULT_OK, (new Intent()).setAction(
                         getIntent().toString()).putExtras(mMap));
             } else {
-                // Want to append to the beginning of the list
-                long creationTime = new Date().getTime();
-                SELECTION_ARGS[0] = url;
-                ContentResolver cr = getContentResolver();
-                Cursor c = cr.query(Browser.BOOKMARKS_URI,
-                        mProjection,
-                        WHERE_CLAUSE,
-                        SELECTION_ARGS,
-                        null);
-                ContentValues map = new ContentValues();
-                if (c.moveToFirst() && c.getInt(c.getColumnIndexOrThrow(
-                        Browser.BookmarkColumns.BOOKMARK)) == 0) {
-                    // This means we have been to this site but not bookmarked
-                    // it, so convert the history item to a bookmark                    
-                    map.put(Browser.BookmarkColumns.CREATED, creationTime);
-                    map.put(Browser.BookmarkColumns.TITLE, title);
-                    map.put(Browser.BookmarkColumns.BOOKMARK, 1);
-                    cr.update(Browser.BOOKMARKS_URI, map, 
-                            "_id = " + c.getInt(0), null);
-                } else {
-                    int count = c.getCount();
-                    boolean matchedTitle = false;
-                    for (int i = 0; i < count; i++) {
-                        // One or more bookmarks already exist for this site.
-                        // Check the names of each
-                        c.moveToPosition(i);
-                        if (c.getString(c.getColumnIndexOrThrow(
-                                Browser.BookmarkColumns.TITLE)).equals(title)) {
-                            // The old bookmark has the same name.
-                            // Update its creation time.
-                            map.put(Browser.BookmarkColumns.CREATED,
-                                    creationTime);
-                            cr.update(Browser.BOOKMARKS_URI, map, 
-                                    "_id = " + c.getInt(0), null);
-                            matchedTitle = true;
-                        }
-                    }
-                    if (!matchedTitle) {
-                        // Adding a bookmark for a site the user has visited,
-                        // or a new bookmark (with a different name) for a site
-                        // the user has visited
-                        map.put(Browser.BookmarkColumns.TITLE, title);
-                        map.put(Browser.BookmarkColumns.URL, url);
-                        map.put(Browser.BookmarkColumns.CREATED, creationTime);
-                        map.put(Browser.BookmarkColumns.BOOKMARK, 1);
-                        map.put(Browser.BookmarkColumns.DATE, 0);
-                        int visits = 0;
-                        if (count > 0) {
-                            // The user has already bookmarked, and possibly
-                            // visited this site.  However, they are creating
-                            // a new bookmark with the same url but a different
-                            // name.  The new bookmark should have the same
-                            // number of visits as the already created bookmark.
-                            visits = c.getInt(c.getColumnIndexOrThrow(
-                                    Browser.BookmarkColumns.VISITS));
-                        }
-                        // Bookmark starts with 3 extra visits so that it will
-                        // bubble up in the most visited and goto search box
-                        map.put(Browser.BookmarkColumns.VISITS, visits + 3);
-                        cr.insert(Browser.BOOKMARKS_URI, map);
-                    }
-                }
-                WebIconDatabase.getInstance().retainIconForPageUrl(url);
-                c.deactivate();
+                Bookmarks.addBookmark(null, getContentResolver(), url, title);
                 setResult(RESULT_OK);
             }
         } catch (IllegalStateException e) {
diff --git a/src/com/android/browser/AddNewBookmark.java b/src/com/android/browser/AddNewBookmark.java
index a75d002..5308f6b 100644
--- a/src/com/android/browser/AddNewBookmark.java
+++ b/src/com/android/browser/AddNewBookmark.java
@@ -47,17 +47,7 @@
         mUrlText = (TextView) findViewById(R.id.url);
         mImageView = (ImageView) findViewById(R.id.favicon);
     }
-    
-    /**
-     *  Copy this BookmarkItem to item.
-     *  @param item BookmarkItem to receive the info from this BookmarkItem.
-     */
-    /* package */ void copyTo(AddNewBookmark item) {
-        item.mTextView.setText(mTextView.getText());
-        item.mUrlText.setText(mUrlText.getText());
-        item.mImageView.setImageDrawable(mImageView.getDrawable());
-    }
-    
+
     /**
      *  Set the new url for the bookmark item.
      *  @param url  The new url for the bookmark item.
diff --git a/src/com/android/browser/Bookmarks.java b/src/com/android/browser/Bookmarks.java
new file mode 100644
index 0000000..97e6b20
--- /dev/null
+++ b/src/com/android/browser/Bookmarks.java
@@ -0,0 +1,196 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.Browser;
+import android.util.Log;
+import android.webkit.WebIconDatabase;
+import android.widget.Toast;
+
+import java.util.Date;
+
+/**
+ *  This class is purely to have a common place for adding/deleting bookmarks.
+ */
+/* package */ class Bookmarks {
+    private static final String     WHERE_CLAUSE
+            = "url = ? OR url = ? OR url = ? OR url = ?";
+    private static final String     WHERE_CLAUSE_SECURE = "url = ? OR url = ?";
+
+    private static String[]         SELECTION_ARGS;
+
+    /**
+     *  Add a bookmark to the database.
+     *  @param context Context of the calling Activity.  This is used to make
+     *          Toast confirming that the bookmark has been added.  If the
+     *          caller provides null, the Toast will not be shown.
+     *  @param cr The ContentResolver being used to add the bookmark to the db.
+     *  @param url URL of the website to be bookmarked.
+     *  @param name Provided name for the bookmark.
+     */
+    /* package */ static void addBookmark(Context context,
+            ContentResolver cr, String url, String name) {
+        // Want to append to the beginning of the list
+        long creationTime = new Date().getTime();
+        // First we check to see if the user has already visited this
+        // site.  They may have bookmarked it in a different way from
+        // how it's stored in the database, so allow different combos
+        // to map to the same url.
+        boolean secure = false;
+        String compareString = url;
+        if (compareString.startsWith("http://")) {
+            compareString = compareString.substring(7);
+        } else if (compareString.startsWith("https://")) {
+            compareString = compareString.substring(8);
+            secure = true;
+        }
+        if (compareString.startsWith("www.")) {
+            compareString = compareString.substring(4);
+        }
+        if (secure) {
+            SELECTION_ARGS = new String[2];
+            SELECTION_ARGS[0] = "https://" + compareString;
+            SELECTION_ARGS[1] = "https://www." + compareString;
+        } else {
+            SELECTION_ARGS = new String[4];
+            SELECTION_ARGS[0] = compareString;
+            SELECTION_ARGS[1] = "www." + compareString;
+            SELECTION_ARGS[2] = "http://" + compareString;
+            SELECTION_ARGS[3] = "http://" + SELECTION_ARGS[1];
+        }
+        Cursor cursor = cr.query(Browser.BOOKMARKS_URI,
+                Browser.HISTORY_PROJECTION,
+                secure ? WHERE_CLAUSE_SECURE : WHERE_CLAUSE,
+                SELECTION_ARGS,
+                null);
+        ContentValues map = new ContentValues();
+        if (cursor.moveToFirst() && cursor.getInt(
+                Browser.HISTORY_PROJECTION_BOOKMARK_INDEX) == 0) {
+            // This means we have been to this site but not bookmarked
+            // it, so convert the history item to a bookmark
+            map.put(Browser.BookmarkColumns.CREATED, creationTime);
+            map.put(Browser.BookmarkColumns.TITLE, name);
+            map.put(Browser.BookmarkColumns.BOOKMARK, 1);
+            cr.update(Browser.BOOKMARKS_URI, map,
+                    "_id = " + cursor.getInt(0), null);
+        } else {
+            int count = cursor.getCount();
+            boolean matchedTitle = false;
+            for (int i = 0; i < count; i++) {
+                // One or more bookmarks already exist for this site.
+                // Check the names of each
+                cursor.moveToPosition(i);
+                if (cursor.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX)
+                        .equals(name)) {
+                    // The old bookmark has the same name.
+                    // Update its creation time.
+                    map.put(Browser.BookmarkColumns.CREATED,
+                            creationTime);
+                    cr.update(Browser.BOOKMARKS_URI, map,
+                            "_id = " + cursor.getInt(0), null);
+                    matchedTitle = true;
+                    break;
+                }
+            }
+            if (!matchedTitle) {
+                // Adding a bookmark for a site the user has visited,
+                // or a new bookmark (with a different name) for a site
+                // the user has visited
+                map.put(Browser.BookmarkColumns.TITLE, name);
+                map.put(Browser.BookmarkColumns.URL, url);
+                map.put(Browser.BookmarkColumns.CREATED, creationTime);
+                map.put(Browser.BookmarkColumns.BOOKMARK, 1);
+                map.put(Browser.BookmarkColumns.DATE, 0);
+                int visits = 0;
+                if (count > 0) {
+                    // The user has already bookmarked, and possibly
+                    // visited this site.  However, they are creating
+                    // a new bookmark with the same url but a different
+                    // name.  The new bookmark should have the same
+                    // number of visits as the already created bookmark.
+                    visits = cursor.getInt(
+                            Browser.HISTORY_PROJECTION_VISITS_INDEX);
+                }
+                // Bookmark starts with 3 extra visits so that it will
+                // bubble up in the most visited and goto search box
+                map.put(Browser.BookmarkColumns.VISITS, visits + 3);
+                cr.insert(Browser.BOOKMARKS_URI, map);
+            }
+        }
+        WebIconDatabase.getInstance().retainIconForPageUrl(url);
+        cursor.deactivate();
+        if (context != null) {
+            Toast.makeText(context, R.string.added_to_bookmarks,
+                    Toast.LENGTH_LONG).show();
+        }
+    }
+
+    /**
+     *  Remove a bookmark from the database.  If the url is a visited site, it
+     *  will remain in the database, but only as a history item, and not as a
+     *  bookmarked site.
+     *  @param context Context of the calling Activity.  This is used to make
+     *          Toast confirming that the bookmark has been removed.  If the
+     *          caller provides null, the Toast will not be shown.
+     *  @param cr The ContentResolver being used to remove the bookmark.
+     *  @param url URL of the website to be removed.
+     */
+    /* package */ static void removeFromBookmarks(Context context,
+            ContentResolver cr, String url) {
+        Cursor cursor = cr.query(
+                Browser.BOOKMARKS_URI,
+                Browser.HISTORY_PROJECTION,
+                "url = ?",
+                new String[] { url },
+                null);
+        boolean first = cursor.moveToFirst();
+        // Should be in the database no matter what
+        if (!first) {
+            throw new AssertionError("URL is not in the database!");
+        }
+        // Remove from bookmarks
+        WebIconDatabase.getInstance().releaseIconForPageUrl(url);
+        Uri uri = ContentUris.withAppendedId(Browser.BOOKMARKS_URI,
+                cursor.getInt(Browser.HISTORY_PROJECTION_ID_INDEX));
+        int numVisits = cursor.getInt(
+                Browser.HISTORY_PROJECTION_VISITS_INDEX);
+        if (0 == numVisits) {
+            cr.delete(uri, null, null);
+        } else {
+            // It is no longer a bookmark, but it is still a visited
+            // site.
+            ContentValues values = new ContentValues();
+            values.put(Browser.BookmarkColumns.BOOKMARK, 0);
+            try {
+                cr.update(uri, values, null, null);
+            } catch (IllegalStateException e) {
+                Log.e("removeFromBookmarks", "no database!");
+            }
+        }
+        if (context != null) {
+            Toast.makeText(context, R.string.removed_from_bookmarks,
+                    Toast.LENGTH_LONG).show();
+        }
+        cursor.deactivate();
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index d3c38e7..d148c0a 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -28,6 +28,7 @@
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.ContentResolver;
+import android.content.ContentUris;
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -35,6 +36,7 @@
 import android.content.IntentFilter;
 import android.content.ServiceConnection;
 import android.content.DialogInterface.OnCancelListener;
+import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.res.AssetManager;
@@ -107,11 +109,14 @@
 import android.webkit.CookieSyncManager;
 import android.webkit.DownloadListener;
 import android.webkit.HttpAuthHandler;
+import android.webkit.PluginManager;
 import android.webkit.SslErrorHandler;
 import android.webkit.URLUtil;
 import android.webkit.WebChromeClient;
+import android.webkit.WebChromeClient.CustomViewCallback;
 import android.webkit.WebHistoryItem;
 import android.webkit.WebIconDatabase;
+import android.webkit.WebStorage;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
 import android.widget.EditText;
@@ -121,6 +126,7 @@
 import android.widget.Toast;
 
 import java.io.BufferedOutputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -159,6 +165,8 @@
 
     private SensorManager mSensorManager = null;
 
+    private WebStorage.QuotaUpdater mWebStorageQuotaUpdater = null;
+
     // These are single-character shortcuts for searching popular sources.
     private static final int SHORTCUT_INVALID = 0;
     private static final int SHORTCUT_GOOGLE_SEARCH = 1;
@@ -583,11 +591,6 @@
                 }
 
                 copyBuildInfos();
-
-                // Refresh the plugin list.
-                if (mTabControl.getCurrentWebView() != null) {
-                    mTabControl.getCurrentWebView().refreshPlugins(false);
-                }
             } catch (IOException e) {
                 Log.e(TAG, "IO Exception: " + e);
             }
@@ -634,16 +637,22 @@
         }
     }
 
+    // Flag to enable the touchable browser bar with buttons
+    private final boolean CUSTOM_BROWSER_BAR = true;
+
     @Override public void onCreate(Bundle icicle) {
         if (LOGV_ENABLED) {
             Log.v(LOGTAG, this + " onStart");
         }
         super.onCreate(icicle);
-        this.requestWindowFeature(Window.FEATURE_LEFT_ICON);
-        this.requestWindowFeature(Window.FEATURE_RIGHT_ICON);
-        this.requestWindowFeature(Window.FEATURE_PROGRESS);
-        this.requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
-
+        if (CUSTOM_BROWSER_BAR) {
+            this.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        } else {
+            this.requestWindowFeature(Window.FEATURE_LEFT_ICON);
+            this.requestWindowFeature(Window.FEATURE_RIGHT_ICON);
+            this.requestWindowFeature(Window.FEATURE_PROGRESS);
+            this.requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
+        }
         // test the browser in OpenGL
         // requestWindowFeature(Window.FEATURE_OPENGL);
 
@@ -668,8 +677,37 @@
         mGenericFavicon = getResources().getDrawable(
                 R.drawable.app_web_browser_sm);
 
-        mContentView = (FrameLayout) getWindow().getDecorView().findViewById(
-                com.android.internal.R.id.content);
+        FrameLayout frameLayout = (FrameLayout) getWindow().getDecorView()
+                .findViewById(com.android.internal.R.id.content);
+        if (CUSTOM_BROWSER_BAR) {
+            // This FrameLayout will hold the custom FrameLayout and a LinearLayout
+            // that contains the title bar and a FrameLayout, which
+            // holds everything else.
+            FrameLayout browserFrameLayout = (FrameLayout) LayoutInflater.from(this)
+                    .inflate(R.layout.custom_screen, null);
+            mTitleBar = (TitleBar) browserFrameLayout.findViewById(R.id.title_bar);
+            mTitleBar.setBrowserActivity(this);
+            mContentView = (FrameLayout) browserFrameLayout.findViewById(
+                    R.id.main_content);
+            mErrorConsoleContainer = (LinearLayout) browserFrameLayout.findViewById(
+                    R.id.error_console);
+            mCustomViewContainer = (FrameLayout) browserFrameLayout
+                    .findViewById(R.id.fullscreen_custom_content);
+            frameLayout.addView(browserFrameLayout, COVER_SCREEN_PARAMS);
+        } else {
+            mCustomViewContainer = new FrameLayout(this);
+            mCustomViewContainer.setBackgroundColor(Color.BLACK);
+            mContentView = new FrameLayout(this);
+
+            LinearLayout linearLayout = new LinearLayout(this);
+            linearLayout.setOrientation(LinearLayout.VERTICAL);
+            mErrorConsoleContainer = new LinearLayout(this);
+            linearLayout.addView(mErrorConsoleContainer, new LinearLayout.LayoutParams(
+                    ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
+            linearLayout.addView(mContentView, COVER_SCREEN_PARAMS);
+            frameLayout.addView(mCustomViewContainer, COVER_SCREEN_PARAMS);
+            frameLayout.addView(linearLayout, COVER_SCREEN_PARAMS);
+        }
 
         // Create the tab control and our initial tab
         mTabControl = new TabControl(this);
@@ -748,6 +786,11 @@
             // are not animating from the tab picker.
             attachTabToContentView(mTabControl.getCurrentTab());
         }
+        // Read JavaScript flags if it exists.
+        String jsFlags = mSettings.getJsFlags();
+        if (jsFlags.trim().length() != 0) {
+            mTabControl.getCurrentWebView().setJsFlags(jsFlags);
+        }
 
         /* enables registration for changes in network status from
            http stack */
@@ -765,6 +808,52 @@
                     }
                 }
             };
+
+        IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
+        filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
+        filter.addDataScheme("package");
+        mPackageInstallationReceiver = new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                final String action = intent.getAction();
+                final String packageName = intent.getData()
+                        .getSchemeSpecificPart();
+                final boolean replacing = intent.getBooleanExtra(
+                        Intent.EXTRA_REPLACING, false);
+                if (Intent.ACTION_PACKAGE_REMOVED.equals(action) && replacing) {
+                    // if it is replacing, refreshPlugins() when adding
+                    return;
+                }
+                PackageManager pm = BrowserActivity.this.getPackageManager();
+                PackageInfo pkgInfo = null;
+                try {
+                    pkgInfo = pm.getPackageInfo(packageName,
+                            PackageManager.GET_PERMISSIONS);
+                } catch (PackageManager.NameNotFoundException e) {
+                    return;
+                }
+                if (pkgInfo != null) {
+                    String permissions[] = pkgInfo.requestedPermissions;
+                    if (permissions == null) {
+                        return;
+                    }
+                    boolean permissionOk = false;
+                    for (String permit : permissions) {
+                        if (PluginManager.PLUGIN_PERMISSION.equals(permit)) {
+                            permissionOk = true;
+                            break;
+                        }
+                    }
+                    if (permissionOk) {
+                        PluginManager.getInstance(BrowserActivity.this)
+                                .refreshPlugins(
+                                        Intent.ACTION_PACKAGE_ADDED
+                                                .equals(action));
+                    }
+                }
+            }
+        };
+        registerReceiver(mPackageInstallationReceiver, filter);
     }
 
     @Override
@@ -811,7 +900,7 @@
                     (flags & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
                 final String appId =
                         intent.getStringExtra(Browser.EXTRA_APPLICATION_ID);
-                final TabControl.Tab appTab = mTabControl.getTabFromId(appId);
+                TabControl.Tab appTab = mTabControl.getTabFromId(appId);
                 if (appTab != null) {
                     Log.i(LOGTAG, "Reusing tab for " + appId);
                     // Dismiss the subwindow if applicable.
@@ -824,14 +913,14 @@
                     // page, it can be reused.
                     boolean needsLoad =
                             mTabControl.recreateWebView(appTab, urlData.mUrl);
-                    
+
                     if (current != appTab) {
                         showTab(appTab, needsLoad ? urlData : EMPTY_URL_DATA);
                     } else {
                         if (mTabOverview != null && mAnimationCount == 0) {
                             sendAnimateFromOverview(appTab, false,
-                                    needsLoad ? urlData : EMPTY_URL_DATA, TAB_OVERVIEW_DELAY,
-                                    null);
+                                    needsLoad ? urlData : EMPTY_URL_DATA,
+                                    TAB_OVERVIEW_DELAY, null);
                         } else {
                             // If the tab was the current tab, we have to attach
                             // it to the view system again.
@@ -842,12 +931,32 @@
                         }
                     }
                     return;
+                } else {
+                    // No matching application tab, try to find a regular tab
+                    // with a matching url.
+                    appTab = mTabControl.findUnusedTabWithUrl(urlData.mUrl);
+                    if (appTab != null) {
+                        if (current != appTab) {
+                            // Use EMPTY_URL_DATA so we do not reload the page
+                            showTab(appTab, EMPTY_URL_DATA);
+                        } else {
+                            if (mTabOverview != null && mAnimationCount == 0) {
+                                sendAnimateFromOverview(appTab, false,
+                                        EMPTY_URL_DATA, TAB_OVERVIEW_DELAY,
+                                        null);
+                            }
+                            // Don't do anything here since we are on the
+                            // correct page.
+                        }
+                    } else {
+                        // if FLAG_ACTIVITY_BROUGHT_TO_FRONT flag is on, the url
+                        // will be opened in a new tab unless we have reached
+                        // MAX_TABS. Then the url will be opened in the current
+                        // tab. If a new tab is created, it will have "true" for
+                        // exit on close.
+                        openTabAndShow(urlData, null, true, appId);
+                    }
                 }
-                // if FLAG_ACTIVITY_BROUGHT_TO_FRONT flag is on, the url will be
-                // opened in a new tab unless we have reached MAX_TABS. Then the
-                // url will be opened in the current tab. If a new tab is
-                // created, it will have "true" for exit on close.
-                openTabAndShow(urlData, null, true, appId);
             } else {
                 if ("about:debug".equals(urlData.mUrl)) {
                     mSettings.toggleDebugSettings();
@@ -1105,8 +1214,9 @@
             return;
         }
 
+        mTabControl.resumeCurrentTab();
         mActivityInPause = false;
-        resumeWebView();
+        resumeWebViewTimers();
 
         if (mWakeLock.isHeld()) {
             mHandler.removeMessages(RELEASE_WAKELOCK);
@@ -1164,8 +1274,9 @@
             return;
         }
 
+        mTabControl.pauseCurrentTab();
         mActivityInPause = true;
-        if (mTabControl.getCurrentIndex() >= 0 && !pauseWebView()) {
+        if (mTabControl.getCurrentIndex() >= 0 && !pauseWebViewTimers()) {
             mWakeLock.acquire();
             mHandler.sendMessageDelayed(mHandler
                     .obtainMessage(RELEASE_WAKELOCK), WAKELOCK_TIMEOUT);
@@ -1195,8 +1306,10 @@
         super.onDestroy();
         // Remove the current tab and sub window
         TabControl.Tab t = mTabControl.getCurrentTab();
-        dismissSubWindow(t);
-        removeTabFromContentView(t);
+        if (t != null) {
+            dismissSubWindow(t);
+            removeTabFromContentView(t);
+        }
         // Destroy all the tabs
         mTabControl.destroy();
         WebIconDatabase.getInstance().close();
@@ -1214,6 +1327,8 @@
         //        "com.android.masfproxyservice",
         //        "com.android.masfproxyservice.MasfProxyService"));
         //stopService(proxyServiceIntent);
+
+        unregisterReceiver(mPackageInstallationReceiver);
     }
 
     @Override
@@ -1262,7 +1377,7 @@
         mTabControl.freeMemory();
     }
 
-    private boolean resumeWebView() {
+    private boolean resumeWebViewTimers() {
         if ((!mActivityInPause && !mPageStarted) ||
                 (mActivityInPause && mPageStarted)) {
             CookieSyncManager.getInstance().startSync();
@@ -1276,7 +1391,7 @@
         }
     }
 
-    private boolean pauseWebView() {
+    private boolean pauseWebViewTimers() {
         if (mActivityInPause && !mPageStarted) {
             CookieSyncManager.getInstance().stopSync();
             WebView w = mTabControl.getCurrentWebView();
@@ -1437,7 +1552,8 @@
      */
     @Override
     public boolean onSearchRequested() {
-        startSearch(null, false,
+        String url = getTopWindow().getUrl();
+        startSearch(mSettings.getHomePage().equals(url) ? null : url, true,
                 createGoogleSearchSourceBundle(GOOGLE_SEARCH_SOURCE_SEARCHKEY), false);
         return true;
     }
@@ -1461,6 +1577,13 @@
         if (null == mTabOverview && null == getTopWindow()) {
             return false;
         }
+        if (mMenuIsDown) {
+            // The shortcut action consumes the MENU. Even if it is still down,
+            // it won't trigger the next shortcut action. In the case of the
+            // shortcut action triggering a new activity, like Bookmarks, we
+            // won't get onKeyUp for MENU. So it is important to reset it here.
+            mMenuIsDown = false;
+        }
         switch (item.getItemId()) {
             // -- Main menu
             case R.id.goto_menu_id: {
@@ -1865,6 +1988,20 @@
         final WebView main = t.getWebView();
         // Attach the main WebView.
         mContentView.addView(main, COVER_SCREEN_PARAMS);
+
+        if (mShouldShowErrorConsole) {
+            ErrorConsoleView errorConsole = mTabControl.getCurrentErrorConsole(true);
+            if (errorConsole.numberOfErrors() == 0) {
+                errorConsole.showConsole(ErrorConsoleView.SHOW_NONE);
+            } else {
+                errorConsole.showConsole(ErrorConsoleView.SHOW_MINIMIZED);
+            }
+
+            mErrorConsoleContainer.addView(errorConsole,
+                    new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
+                                                  ViewGroup.LayoutParams.WRAP_CONTENT));
+        }
+
         // Attach the sub window if necessary
         attachSubWindow(t);
         // Request focus on the top window.
@@ -1886,6 +2023,11 @@
     private void removeTabFromContentView(TabControl.Tab t) {
         // Remove the main WebView.
         mContentView.removeView(t.getWebView());
+
+        if (mTabControl.getCurrentErrorConsole(false) != null) {
+            mErrorConsoleContainer.removeView(mTabControl.getCurrentErrorConsole(false));
+        }
+
         // Remove the sub window if it exists.
         if (t.getSubWebView() != null) {
             mContentView.removeView(t.getSubWebViewContainer());
@@ -1975,9 +2117,9 @@
 
     // A wrapper function of {@link #openTabAndShow(UrlData, Message, boolean, String)}
     // that accepts url as string.
-    private void openTabAndShow(String url, final Message msg,
+    private TabControl.Tab openTabAndShow(String url, final Message msg,
             boolean closeOnExit, String appId) {
-        openTabAndShow(new UrlData(url), msg, closeOnExit, appId);
+        return openTabAndShow(new UrlData(url), msg, closeOnExit, appId);
     }
 
     // This method does a ton of stuff. It will attempt to create a new tab
@@ -1988,7 +2130,7 @@
     // the given Message. If the tab overview is already showing (i.e. this
     // method is called from TabListener.onClick(), the method will animate
     // away from the tab overview.
-    private void openTabAndShow(UrlData urlData, final Message msg,
+    private TabControl.Tab openTabAndShow(UrlData urlData, final Message msg,
             boolean closeOnExit, String appId) {
         final boolean newTab = mTabControl.getTabCount() != TabControl.MAX_TABS;
         final TabControl.Tab currentTab = mTabControl.getCurrentTab();
@@ -2017,9 +2159,10 @@
                 }
                 // Animate from the Tab overview after any animations have
                 // finished.
-                sendAnimateFromOverview(
-                        mTabControl.createNewTab(closeOnExit, appId, urlData.mUrl), true,
-                        urlData, delay, msg);
+                final TabControl.Tab tab = mTabControl.createNewTab(
+                        closeOnExit, appId, urlData.mUrl);
+                sendAnimateFromOverview(tab, true, urlData, delay, msg);
+                return tab;
             }
         } else if (!urlData.isEmpty()) {
             // We should not have a msg here.
@@ -2034,6 +2177,7 @@
                 urlData.loadIn(currentTab.getWebView());
             }
         }
+        return currentTab;
     }
 
     private Animation createTabAnimation(final AnimatingView view,
@@ -2255,14 +2399,15 @@
         mTabListener = null;
     }
 
-    private void openTab(String url) {
+    private TabControl.Tab openTab(String url) {
         if (mSettings.openInBackground()) {
             TabControl.Tab t = mTabControl.createNewTab();
             if (t != null) {
                 t.getWebView().loadUrl(url);
             }
+            return t;
         } else {
-            openTabAndShow(url, null, false, null);
+            return openTabAndShow(url, null, false, null);
         }
     }
 
@@ -2362,7 +2507,11 @@
         // While the tab overview is animating or being shown, block changes
         // to the title.
         if (mAnimationCount == 0 && mTabOverview == null) {
-            setTitle(buildUrlTitle(url, title));
+            if (CUSTOM_BROWSER_BAR) {
+                mTitleBar.setTitleAndUrl(title, url);
+            } else {
+                setTitle(buildUrlTitle(url, title));
+            }
         }
     }
 
@@ -2403,7 +2552,7 @@
      * or an empty string if, for example, the URL in question is a
      * file:// URL with no hostname.
      */
-    private static String buildTitleUrl(String url) {
+    /* package */ static String buildTitleUrl(String url) {
         String titleUrl = null;
 
         if (url != null) {
@@ -2439,18 +2588,34 @@
         if (mAnimationCount > 0 || mTabOverview != null) {
             return;
         }
-        Drawable[] array = new Drawable[2];
-        PaintDrawable p = new PaintDrawable(Color.WHITE);
-        p.setCornerRadius(3f);
-        array[0] = p;
-        if (icon == null) {
-            array[1] = mGenericFavicon;
+        if (CUSTOM_BROWSER_BAR) {
+            Drawable[] array = new Drawable[3];
+            array[0] = new PaintDrawable(Color.BLACK);
+            PaintDrawable p = new PaintDrawable(Color.WHITE);
+            array[1] = p;
+            if (icon == null) {
+                array[2] = mGenericFavicon;
+            } else {
+                array[2] = new BitmapDrawable(icon);
+            }
+            LayerDrawable d = new LayerDrawable(array);
+            d.setLayerInset(1, 1, 1, 1, 1);
+            d.setLayerInset(2, 2, 2, 2, 2);
+            mTitleBar.setFavicon(d);
         } else {
-            array[1] = new BitmapDrawable(icon);
+            Drawable[] array = new Drawable[2];
+            PaintDrawable p = new PaintDrawable(Color.WHITE);
+            p.setCornerRadius(3f);
+            array[0] = p;
+            if (icon == null) {
+                array[1] = mGenericFavicon;
+            } else {
+                array[1] = new BitmapDrawable(icon);
+            }
+            LayerDrawable d = new LayerDrawable(array);
+            d.setLayerInset(1, 2, 2, 2, 2);
+            getWindow().setFeatureDrawable(Window.FEATURE_LEFT_ICON, d);
         }
-        LayerDrawable d = new LayerDrawable(array);
-        d.setLayerInset(1, 2, 2, 2, 2);
-        getWindow().setFeatureDrawable(Window.FEATURE_LEFT_ICON, d);
     }
 
     /**
@@ -2528,9 +2693,9 @@
                         finish();
                         return;
                     }
-                    // call pauseWebView() now, we won't be able to call it in
-                    // onPause() as the WebView won't be valid.
-                    pauseWebView();
+                    // call pauseWebViewTimers() now, we won't be able to call
+                    // it in onPause() as the WebView won't be valid.
+                    pauseWebViewTimers();
                     removeTabFromContentView(current);
                     mTabControl.removeTab(current);
                 }
@@ -2554,10 +2719,15 @@
         // because of accumulated key events,
         // we should ignore it as browser is not active any more.
         WebView topWindow = getTopWindow();
-        if (topWindow == null)
+        if (topWindow == null && mCustomView == null)
             return KeyTracker.State.NOT_TRACKING;
 
         if (keyCode == KeyEvent.KEYCODE_BACK) {
+            // Check if a custom view is currently showing and, if it is, hide it.
+            if (mCustomView != null) {
+                mWebChromeClient.onHideCustomView();
+                return KeyTracker.State.DONE_TRACKING;
+            }
             // During animations, block the back key so that other animations
             // are not triggered and so that we don't end up destroying all the
             // WebViews before finishing the animation.
@@ -2591,6 +2761,11 @@
     @Override public boolean onKeyDown(int keyCode, KeyEvent event) {
         if (keyCode == KeyEvent.KEYCODE_MENU) {
             mMenuIsDown = true;
+        } else if (mMenuIsDown) {
+            // The default key mode is DEFAULT_KEYS_SEARCH_LOCAL. As the MENU is
+            // still down, we don't want to trigger the search. Pretend to
+            // consume the key and do nothing.
+            return true;
         }
         boolean handled =  mKeyTracker.doKeyDown(keyCode, event);
         if (!handled) {
@@ -2696,7 +2871,12 @@
                             loadURL(getTopWindow(), url);
                             break;
                         case R.id.open_newtab_context_menu_id:
-                            openTab(url);
+                            final TabControl.Tab parent = mTabControl
+                                    .getCurrentTab();
+                            final TabControl.Tab newTab = openTab(url);
+                            if (newTab != parent) {
+                                parent.addChildTab(newTab);
+                            }
                             break;
                         case R.id.bookmark_context_menu_id:
                             Intent intent = new Intent(BrowserActivity.this,
@@ -2746,6 +2926,58 @@
         }
     };
 
+    private void updateScreenshot(WebView view) {
+        // If this is a bookmarked site, add a screenshot to the database.
+        // FIXME: When should we update?  Every time?
+        // FIXME: Would like to make sure there is actually something to
+        // draw, but the API for that (WebViewCore.pictureReady()) is not
+        // currently accessible here.
+        String original = view.getOriginalUrl();
+        if (original != null) {
+            // copied from BrowserBookmarksAdapter
+            int query = original.indexOf('?');
+            String noQuery = original;
+            if (query != -1) {
+                noQuery = original.substring(0, query);
+            }
+            String URL = noQuery + '?';
+            String[] selArgs = new String[] { noQuery, URL };
+            final String where
+                    = "(url == ? OR url GLOB ? || '*') AND bookmark == 1";
+            final String[] projection
+                    = new String[] { Browser.BookmarkColumns._ID };
+            ContentResolver cr = getContentResolver();
+            final Cursor c = cr.query(Browser.BOOKMARKS_URI, projection,
+                    where, selArgs, null);
+            boolean succeed = c.moveToFirst();
+            ContentValues values = null;
+            while (succeed) {
+                if (values == null) {
+                    final ByteArrayOutputStream os
+                            = new ByteArrayOutputStream();
+                    Picture thumbnail = view.capturePicture();
+                    // Keep width and height in sync with BrowserBookmarksPage
+                    // and bookmark_thumb
+                    Bitmap bm = Bitmap.createBitmap(100, 80,
+                            Bitmap.Config.ARGB_4444);
+                    Canvas canvas = new Canvas(bm);
+                    // May need to tweak these values to determine what is the
+                    // best scale factor
+                    canvas.scale(.5f, .5f);
+                    thumbnail.draw(canvas);
+                    bm.compress(Bitmap.CompressFormat.PNG, 100, os);
+                    values = new ContentValues();
+                    values.put(Browser.BookmarkColumns.THUMBNAIL,
+                            os.toByteArray());
+                }
+                cr.update(ContentUris.withAppendedId(Browser.BOOKMARKS_URI,
+                        c.getInt(0)), values, null, null);
+                succeed = c.moveToNext();
+            }
+            c.close();
+        }
+    }
+
     // -------------------------------------------------------------------------
     // WebViewClient implementation.
     //-------------------------------------------------------------------------
@@ -2773,6 +3005,15 @@
         public void onPageStarted(WebView view, String url, Bitmap favicon) {
             resetLockIcon(url);
             setUrlTitle(url, null);
+
+            ErrorConsoleView errorConsole = mTabControl.getCurrentErrorConsole(false);
+            if (errorConsole != null) {
+                errorConsole.clearErrorMessages();
+                if (mShouldShowErrorConsole) {
+                    errorConsole.showConsole(ErrorConsoleView.SHOW_NONE);
+                }
+            }
+
             // Call updateIcon instead of setFavicon so the bookmark
             // database can be updated.
             updateIcon(url, favicon);
@@ -2821,8 +3062,9 @@
 
             if (!mPageStarted) {
                 mPageStarted = true;
-                // if onResume() has been called, resumeWebView() does nothing.
-                resumeWebView();
+                // if onResume() has been called, resumeWebViewTimers() does
+                // nothing.
+                resumeWebViewTimers();
             }
 
             // reset sync timer to avoid sync starts during loading a page
@@ -2856,6 +3098,7 @@
 
             // Update the lock icon image only once we are done loading
             updateLockIconImage(mLockIconType);
+            updateScreenshot(view);
 
             // Performance probe
             if (false) {
@@ -2943,9 +3186,9 @@
 
             if (mPageStarted) {
                 mPageStarted = false;
-                // pauseWebView() will do nothing and return false if onPause()
-                // is not called yet.
-                if (pauseWebView()) {
+                // pauseWebViewTimers() will do nothing and return false if
+                // onPause() is not called yet.
+                if (pauseWebViewTimers()) {
                     if (mWakeLock.isHeld()) {
                         mHandler.removeMessages(RELEASE_WAKELOCK);
                         mWakeLock.release();
@@ -2991,9 +3234,9 @@
             if (url.startsWith("about:")) {
                 return false;
             }
-            
+
             Intent intent;
-            
+
             // perform generic parsing of the URI to turn it into an Intent.
             try {
                 intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
@@ -3381,8 +3624,11 @@
                 // openTabAndShow will dispatch the message after creating the
                 // new WebView. This will prevent another request from coming
                 // in during the animation.
-                openTabAndShow(EMPTY_URL_DATA, msg, false, null);
-                parent.addChildTab(mTabControl.getCurrentTab());
+                final TabControl.Tab newTab =
+                        openTabAndShow(EMPTY_URL_DATA, msg, false, null);
+                if (newTab != parent) {
+                    parent.addChildTab(newTab);
+                }
                 WebView.WebViewTransport transport =
                         (WebView.WebViewTransport) msg.obj;
                 transport.setWebView(mTabControl.getCurrentWebView());
@@ -3488,8 +3734,13 @@
             // Block progress updates to the title bar while the tab overview
             // is animating or being displayed.
             if (mAnimationCount == 0 && mTabOverview == null) {
-                getWindow().setFeatureInt(Window.FEATURE_PROGRESS,
-                        newProgress * 100);
+                if (CUSTOM_BROWSER_BAR) {
+                    mTitleBar.setProgress(newProgress);
+                } else {
+                    getWindow().setFeatureInt(Window.FEATURE_PROGRESS,
+                            newProgress * 100);
+
+                }
             }
 
             if (newProgress == 100) {
@@ -3523,6 +3774,8 @@
                 url.length() >= SQLiteDatabase.SQLITE_MAX_LIKE_PATTERN_LENGTH) {
                 return;
             }
+            // See if we can find the current url in our history database and
+            // add the new title to it.
             if (url.startsWith("http://www.")) {
                 url = url.substring(11);
             } else if (url.startsWith("http://")) {
@@ -3537,15 +3790,12 @@
                 Cursor c = mResolver.query(Browser.BOOKMARKS_URI,
                     Browser.HISTORY_PROJECTION, where, selArgs, null);
                 if (c.moveToFirst()) {
-                    if (LOGV_ENABLED) {
-                        Log.v(LOGTAG, "updating cursor");
-                    }
                     // Current implementation of database only has one entry per
                     // url.
-                    int titleIndex =
-                            c.getColumnIndex(Browser.BookmarkColumns.TITLE);
-                    c.updateString(titleIndex, title);
-                    c.commitUpdates();
+                    ContentValues map = new ContentValues();
+                    map.put(Browser.BookmarkColumns.TITLE, title);
+                    mResolver.update(Browser.BOOKMARKS_URI, map,
+                            "_id = " + c.getInt(0), null);
                 }
                 c.close();
             } catch (IllegalStateException e) {
@@ -3559,6 +3809,94 @@
         public void onReceivedIcon(WebView view, Bitmap icon) {
             updateIcon(view.getUrl(), icon);
         }
+
+        @Override
+        public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) {
+            if (mCustomView != null)
+                return;
+
+            // Add the custom view to its container.
+            mCustomViewContainer.addView(view, COVER_SCREEN_GRAVITY_CENTER);
+            mCustomView = view;
+            mCustomViewCallback = callback;
+            // Save the menu state and set it to empty while the custom
+            // view is showing.
+            mOldMenuState = mMenuState;
+            mMenuState = EMPTY_MENU;
+            // Hide the content view.
+            mContentView.setVisibility(View.GONE);
+            // Finally show the custom view container.
+            mCustomViewContainer.setVisibility(View.VISIBLE);
+            mCustomViewContainer.bringToFront();
+        }
+
+        @Override
+        public void onHideCustomView() {
+            if (mCustomView == null)
+                return;
+
+            // Hide the custom view.
+            mCustomView.setVisibility(View.GONE);
+            // Remove the custom view from its container.
+            mCustomViewContainer.removeView(mCustomView);
+            mCustomView = null;
+            // Reset the old menu state.
+            mMenuState = mOldMenuState;
+            mOldMenuState = EMPTY_MENU;
+            mCustomViewContainer.setVisibility(View.GONE);
+            mCustomViewCallback.onCustomViewHidden();
+            // Show the content view.
+            mContentView.setVisibility(View.VISIBLE);
+        }
+
+        /**
+         * The origin has exceeded it's database quota.
+         * @param url the URL that exceeded the quota
+         * @param databaseIdentifier the identifier of the database on
+         *     which the transaction that caused the quota overflow was run
+         * @param currentQuota the current quota for the origin.
+         * @param quotaUpdater The callback to run when a decision to allow or
+         *     deny quota has been made. Don't forget to call this!
+         */
+        @Override
+        public void onExceededDatabaseQuota(String url,
+            String databaseIdentifier, long currentQuota,
+            WebStorage.QuotaUpdater quotaUpdater) {
+            if(LOGV_ENABLED) {
+                Log.v(LOGTAG,
+                      "BrowserActivity received onExceededDatabaseQuota for "
+                      + url +
+                      ":"
+                      + databaseIdentifier +
+                      "(current quota: "
+                      + currentQuota +
+                      ")");
+            }
+            mWebStorageQuotaUpdater = quotaUpdater;
+            String DIALOG_PACKAGE = "com.android.browser";
+            String DIALOG_CLASS = DIALOG_PACKAGE + ".PermissionDialog";
+            Intent intent = new Intent();
+            intent.setClassName(DIALOG_PACKAGE, DIALOG_CLASS);
+            intent.putExtra(PermissionDialog.PARAM_ORIGIN, url);
+            intent.putExtra(PermissionDialog.PARAM_QUOTA, currentQuota);
+            startActivityForResult(intent, WEBSTORAGE_QUOTA_DIALOG);
+        }
+
+        /* Adds a JavaScript error message to the system log.
+         * @param message The error message to report.
+         * @param lineNumber The line number of the error.
+         * @param sourceID The name of the source file that caused the error.
+         */
+        @Override
+        public void addMessageToConsole(String message, int lineNumber, String sourceID) {
+            ErrorConsoleView errorConsole = mTabControl.getCurrentErrorConsole(true);
+            errorConsole.addErrorMessage(message, sourceID, lineNumber);
+                if (mShouldShowErrorConsole &&
+                        errorConsole.getShowState() != ErrorConsoleView.SHOW_MAXIMIZED) {
+                    errorConsole.showConsole(ErrorConsoleView.SHOW_MINIMIZED);
+                }
+            Log.w(LOGTAG, "Console: " + message + " " + sourceID + ":" + lineNumber);
+        }
     };
 
     /**
@@ -3752,7 +4090,11 @@
         // If the tab overview is animating or being shown, do not update the
         // lock icon.
         if (mAnimationCount == 0 && mTabOverview == null) {
-            getWindow().setFeatureDrawable(Window.FEATURE_RIGHT_ICON, d);
+            if (CUSTOM_BROWSER_BAR) {
+                mTitleBar.setLock(d);
+            } else {
+                getWindow().setFeatureDrawable(Window.FEATURE_RIGHT_ICON, d);
+            }
         }
     }
 
@@ -4245,7 +4587,17 @@
                     String data = intent.getAction();
                     Bundle extras = intent.getExtras();
                     if (extras != null && extras.getBoolean("new_window", false)) {
-                        openTab(data);
+                        final TabControl.Tab newTab = openTab(data);
+                        if (mSettings.openInBackground() &&
+                                newTab != null && mTabOverview != null) {
+                            mTabControl.populatePickerData(newTab);
+                            mTabControl.setCurrentTab(newTab);
+                            mTabOverview.add(newTab);
+                            mTabOverview.setCurrentIndex(
+                                    mTabControl.getCurrentIndex());
+                            sendAnimateFromOverview(newTab, false,
+                                    EMPTY_URL_DATA, TAB_OVERVIEW_DELAY, null);
+                        }
                     } else {
                         final TabControl.Tab currentTab =
                                 mTabControl.getCurrentTab();
@@ -4253,8 +4605,8 @@
                         // middle of an animation, animate away from it to the
                         // current tab.
                         if (mTabOverview != null && mAnimationCount == 0) {
-                            sendAnimateFromOverview(currentTab, false, new UrlData(data),
-                                    TAB_OVERVIEW_DELAY, null);
+                            sendAnimateFromOverview(currentTab, false,
+                                    new UrlData(data), TAB_OVERVIEW_DELAY, null);
                         } else {
                             dismissSubWindow(currentTab);
                             if (data != null && data.length() != 0) {
@@ -4264,6 +4616,14 @@
                     }
                 }
                 break;
+            case WEBSTORAGE_QUOTA_DIALOG:
+                long currentQuota = 0;
+                if (resultCode == RESULT_OK && intent != null) {
+                    currentQuota = intent.getLongExtra(
+                        PermissionDialog.PARAM_QUOTA, currentQuota);
+                }
+                mWebStorageQuotaUpdater.updateQuota(currentQuota);
+                break;
             default:
                 break;
         }
@@ -4304,8 +4664,8 @@
                 // was clicked on.
                 if (mTabControl.getTabCount() == 0) {
                     current = mTabControl.createNewTab();
-                    sendAnimateFromOverview(current, true,
-                            new UrlData(mSettings.getHomePage()), TAB_OVERVIEW_DELAY, null);
+                    sendAnimateFromOverview(current, true, new UrlData(
+                            mSettings.getHomePage()), TAB_OVERVIEW_DELAY, null);
                 } else {
                     final int index = position > 0 ? (position - 1) : 0;
                     current = mTabControl.getTab(index);
@@ -4341,8 +4701,8 @@
             if (index == ImageGrid.NEW_TAB) {
                 openTabAndShow(mSettings.getHomePage(), null, false, null);
             } else {
-                sendAnimateFromOverview(mTabControl.getTab(index),
-                        false, EMPTY_URL_DATA, 0, null);
+                sendAnimateFromOverview(mTabControl.getTab(index), false,
+                        EMPTY_URL_DATA, 0, null);
             }
         }
     }
@@ -4364,13 +4724,19 @@
         AnimatingView(Context ctxt, TabControl.Tab t) {
             super(ctxt);
             mTab = t;
-            // Use the top window in the animation since the tab overview will
-            // display the top window in each cell.
-            final WebView w = t.getTopWindow();
-            mPicture = w.capturePicture();
-            mScale = w.getScale() / w.getWidth();
-            mScrollX = w.getScrollX();
-            mScrollY = w.getScrollY();
+            if (t != null && t.getTopWindow() != null) {
+                // Use the top window in the animation since the tab overview
+                // will display the top window in each cell.
+                final WebView w = t.getTopWindow();
+                mPicture = w.capturePicture();
+                mScale = w.getScale() / w.getWidth();
+                mScrollX = w.getScrollX();
+                mScrollY = w.getScrollY();
+            } else {
+                mPicture = null;
+                mScale = 1.0f;
+                mScrollX = mScrollY = 0;
+            }
         }
 
         @Override
@@ -4444,16 +4810,20 @@
         mAnimationCount++;
         // Always change the title bar to the window overview title while
         // animating.
-        getWindow().setFeatureDrawable(Window.FEATURE_LEFT_ICON, null);
-        getWindow().setFeatureDrawable(Window.FEATURE_RIGHT_ICON, null);
-        getWindow().setFeatureInt(Window.FEATURE_PROGRESS,
-                Window.PROGRESS_VISIBILITY_OFF);
-        setTitle(R.string.tab_picker_title);
+        if (CUSTOM_BROWSER_BAR) {
+            mTitleBar.setToTabPicker();
+        } else {
+            getWindow().setFeatureDrawable(Window.FEATURE_LEFT_ICON, null);
+            getWindow().setFeatureDrawable(Window.FEATURE_RIGHT_ICON, null);
+            getWindow().setFeatureInt(Window.FEATURE_PROGRESS,
+                    Window.PROGRESS_VISIBILITY_OFF);
+            setTitle(R.string.tab_picker_title);
+        }
         // Make the menu empty until the animation completes.
         mMenuState = EMPTY_MENU;
     }
 
-    private void bookmarksOrHistoryPicker(boolean startWithHistory) {
+    /* package */ void bookmarksOrHistoryPicker(boolean startWithHistory) {
         WebView current = mTabControl.getCurrentWebView();
         if (current == null) {
             return;
@@ -4529,7 +4899,7 @@
       return 0;
     }
 
-    static final Pattern ACCEPTED_URI_SCHEMA = Pattern.compile(
+    protected static final Pattern ACCEPTED_URI_SCHEMA = Pattern.compile(
             "(?i)" + // switch on case insensitive matching
             "(" +    // begin group for schema
             "(?:http|https|file):\\/\\/" +
@@ -4594,6 +4964,34 @@
         return URLUtil.composeSearchUrl(inUrl, QuickSearch_G, QUERY_PLACE_HOLDER);
     }
 
+    /* package */ void setShouldShowErrorConsole(boolean flag) {
+        if (flag == mShouldShowErrorConsole) {
+            // Nothing to do.
+            return;
+        }
+
+        mShouldShowErrorConsole = flag;
+
+        ErrorConsoleView errorConsole = mTabControl.getCurrentErrorConsole(true);
+
+        if (flag) {
+            // Setting the show state of the console will cause it's the layout to be inflated.
+            if (errorConsole.numberOfErrors() > 0) {
+                errorConsole.showConsole(ErrorConsoleView.SHOW_MINIMIZED);
+            } else {
+                errorConsole.showConsole(ErrorConsoleView.SHOW_NONE);
+            }
+
+            // Now we can add it to the main view.
+            mErrorConsoleContainer.addView(errorConsole,
+                    new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
+                                                  ViewGroup.LayoutParams.WRAP_CONTENT));
+        } else {
+            mErrorConsoleContainer.removeView(errorConsole);
+        }
+
+    }
+
     private final static int LOCK_ICON_UNSECURE = 0;
     private final static int LOCK_ICON_SECURE   = 1;
     private final static int LOCK_ICON_MIXED    = 2;
@@ -4606,11 +5004,15 @@
     private ContentResolver mResolver;
     private FrameLayout     mContentView;
     private ImageGrid       mTabOverview;
+    private View            mCustomView;
+    private FrameLayout     mCustomViewContainer;
+    private WebChromeClient.CustomViewCallback mCustomViewCallback;
 
     // FIXME, temp address onPrepareMenu performance problem. When we move everything out of
     // view, we should rewrite this.
     private int mCurrentMenuState = 0;
     private int mMenuState = R.id.MAIN_MENU;
+    private int mOldMenuState = EMPTY_MENU;
     private static final int EMPTY_MENU = -1;
     private Menu mMenu;
 
@@ -4701,6 +5103,11 @@
                                             new FrameLayout.LayoutParams(
                                             ViewGroup.LayoutParams.FILL_PARENT,
                                             ViewGroup.LayoutParams.FILL_PARENT);
+    /*package*/ static final FrameLayout.LayoutParams COVER_SCREEN_GRAVITY_CENTER =
+                                            new FrameLayout.LayoutParams(
+                                            ViewGroup.LayoutParams.FILL_PARENT,
+                                            ViewGroup.LayoutParams.FILL_PARENT,
+                                            Gravity.CENTER);
     // Google search
     final static String QuickSearch_G = "http://www.google.com/m?q=%s";
     // Wikipedia search
@@ -4734,6 +5141,11 @@
 
     private Toast mStopToast;
 
+    private TitleBar mTitleBar;
+
+    private LinearLayout mErrorConsoleContainer = null;
+    private boolean mShouldShowErrorConsole = false;
+
     // Used during animations to prevent other animations from being triggered.
     // A count is used since the animation to and from the Window overview can
     // overlap. A count of 0 means no animation where a count of > 0 means
@@ -4751,10 +5163,13 @@
     private IntentFilter mNetworkStateChangedFilter;
     private BroadcastReceiver mNetworkStateIntentReceiver;
 
+    private BroadcastReceiver mPackageInstallationReceiver;
+
     // activity requestCode
-    final static int COMBO_PAGE             = 1;
-    final static int DOWNLOAD_PAGE          = 2;
-    final static int PREFERENCES_PAGE       = 3;
+    final static int COMBO_PAGE                 = 1;
+    final static int DOWNLOAD_PAGE              = 2;
+    final static int PREFERENCES_PAGE           = 3;
+    final static int WEBSTORAGE_QUOTA_DIALOG    = 4;
 
     // the frenquency of checking whether system memory is low
     final static int CHECK_MEMORY_INTERVAL = 30000;     // 30 seconds
@@ -4804,7 +5219,7 @@
         String mEncoding;
         @Override
         boolean isEmpty() {
-            return mInlined == null || mInlined.length() == 0 || super.isEmpty(); 
+            return mInlined == null || mInlined.length() == 0 || super.isEmpty();
         }
 
         @Override
diff --git a/src/com/android/browser/BrowserBackupAgent.java b/src/com/android/browser/BrowserBackupAgent.java
new file mode 100644
index 0000000..9e10370
--- /dev/null
+++ b/src/com/android/browser/BrowserBackupAgent.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import java.io.IOException;
+
+import android.app.BackupAgent;
+import android.backup.BackupDataInput;
+import android.backup.BackupDataOutput;
+import android.database.Cursor;
+import android.os.ParcelFileDescriptor;
+import android.provider.Browser;
+import android.provider.Browser.BookmarkColumns;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.EOFException;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+
+import java.util.zip.CRC32;
+
+/**
+ * Settings backup agent for the Android browser.  Currently the only thing
+ * stored is the set of bookmarks.  It's okay if I/O exceptions are thrown
+ * out of the agent; the calling code handles it and the backup operation
+ * simply fails.
+ */
+public class BrowserBackupAgent extends BackupAgent {
+    static final String BOOKMARK_KEY = "_bookmarks_";
+
+    /**
+     * In order to determine whether the bookmark set has changed since the
+     * last time we did a backup, we store the following bits of info in the
+     * state file after a backup:
+     *
+     * 1. the size of the flattened bookmark file
+     * 2. the CRC32 of that file
+     *
+     * After we flatten the bookmarks file here in onBackup, we compare its
+     * metrics with the values from the saved state.  If they match, it means
+     * the bookmarks didn't really change and we don't need to send the data.
+     * (If they don't match, of course, then they've changed and we do indeed
+     * send the new flattened file to be backed up.)
+     */
+    @Override
+    public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data,
+            ParcelFileDescriptor newState) throws IOException {
+        long savedFileSize = -1;
+        long savedCrc = -1;
+
+        // Extract the previous bookmark file size & CRC from the saved state
+        DataInputStream in = new DataInputStream(
+                new FileInputStream(oldState.getFileDescriptor()));
+        try {
+            savedFileSize = in.readLong();
+            savedCrc = in.readLong();
+        } catch (EOFException e) {
+            // It means we had no previous state; that's fine
+        }
+
+        // TODO: BUILD THE FLATTENED BOOKMARK FILE FROM THE DB (into tmpfile)
+        File tmpfile = getFilesDir().createTempFile("bkp", null);
+        CRC32 crc = new CRC32();
+        try {
+            Cursor cursor = getContentResolver().query(Browser.BOOKMARKS_URI,
+                    new String[] { BookmarkColumns.URL, BookmarkColumns.VISITS,
+                    BookmarkColumns.DATE, BookmarkColumns.CREATED,
+                    BookmarkColumns.TITLE },
+                    BookmarkColumns.BOOKMARK + " == 1 ", null, null);
+            int count = cursor.getCount();
+            FileOutputStream out = new FileOutputStream(tmpfile);
+            for (int i = 0; i < count; i++) {
+                StringBuilder sb = new StringBuilder();
+                // URL
+                sb.append("'");
+                sb.append(cursor.getString(0));
+                sb.append("','");
+                // VISITS
+                sb.append(cursor.getInt(1));
+                sb.append("','");
+                // DATE
+                sb.append(cursor.getLong(2));
+                sb.append("','");
+                // CREATED
+                sb.append(cursor.getLong(3));
+                sb.append("','");
+                // TITLE
+                sb.append(cursor.getString(4));
+                sb.append("'");
+                out.write(sb.toString().getBytes());
+
+                cursor.moveToNext();
+            }
+            out.close();
+            /*
+                    android.util.Log.d("s", "backing up data" +
+                            getContentResolver().openFileDescriptor(Browser.BOOKMARKS_URI, "r").toString());
+             */
+            // NOTE: feed the flattened data through the crc engine on the fly
+            // to save re-reading it later just to checksum it
+
+            // Once the file is built, compare its metrics with the saved ones
+            if ((crc.getValue() != savedCrc) || (tmpfile.length() != savedFileSize)) {
+                // Different checksum or different size, so we need to back it up
+                copyFileToBackup(BOOKMARK_KEY, tmpfile, data);
+            }
+
+            // Last, record the metrics of the bookmark file that we just stored
+            writeBackupState(tmpfile.length(), crc.getValue(), newState);
+        } finally {
+            // Make sure to tidy up when we're done
+            tmpfile.delete();
+        }
+    }
+
+    /**
+     * Restore from backup -- reads in the flattened bookmark file as supplied from
+     * the backup service, parses that out, and rebuilds the bookmarks table in the
+     * browser database from it.
+     */
+    @Override
+    public void onRestore(BackupDataInput data, int appVersionCode,
+            ParcelFileDescriptor newState) throws IOException {
+        long crc = -1;
+        File tmpfile = getFilesDir().createTempFile("rst", null);
+        try {
+            while (data.readNextHeader()) {
+                if (BOOKMARK_KEY.equals(data.getKey())) {
+                    // Read the flattened bookmark data into a temp file
+                    crc = copyBackupToFile(data, tmpfile, data.getDataSize());
+
+                    // TODO: READ THE FLAT BOOKMARKS FILE 'tmpfile' AND REBUILD THE DB TABLE
+                }
+
+                // Last, write the state we just restored from so we can discern
+                // changes whenever we get invoked for backup in the future
+                writeBackupState(tmpfile.length(), crc, newState);
+            }
+        } finally {
+            // Whatever happens, delete the temp file
+            tmpfile.delete();
+        }
+    }
+
+    /*
+     * Utility functions
+     */
+
+    // Write the file to backup as a single record under the given key
+    private void copyFileToBackup(String key, File file, BackupDataOutput data)
+            throws IOException {
+        final int CHUNK = 8192;
+        byte[] buf = new byte[CHUNK];
+
+        int toCopy = (int) file.length();
+        data.writeEntityHeader(key, toCopy);
+
+        FileInputStream in = new FileInputStream(file);
+        int nRead;
+        while (toCopy > 0) {
+            nRead = in.read(buf, 0, CHUNK);
+            data.writeEntityData(buf, nRead);
+            toCopy -= nRead;
+        }
+        in.close();
+    }
+
+    // Read the given file from backup to a file, calculating a CRC32 along the way
+    private long copyBackupToFile(BackupDataInput data, File file, int toRead)
+            throws IOException {
+        final int CHUNK = 8192;
+        byte[] buf = new byte[CHUNK];
+        CRC32 crc = new CRC32();
+
+        while (toRead > 0) {
+            int numRead = data.readEntityData(buf, 0, CHUNK);
+            crc.update(buf, 0, numRead);
+            toRead -= numRead;
+        }
+
+        return crc.getValue();
+    }
+
+    // Write the given metrics to the new state file
+    private void writeBackupState(long fileSize, long crc, ParcelFileDescriptor stateFile)
+            throws IOException {
+        DataOutputStream out = new DataOutputStream(
+                new FileOutputStream(stateFile.getFileDescriptor()));
+        out.writeLong(fileSize);
+        out.writeLong(crc);
+    }
+}
diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java
index 27782e0..75be45b 100644
--- a/src/com/android/browser/BrowserBookmarksAdapter.java
+++ b/src/com/android/browser/BrowserBookmarksAdapter.java
@@ -30,29 +30,27 @@
 import android.provider.Browser;
 import android.provider.Browser.BookmarkColumns;
 import android.view.KeyEvent;
+import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.webkit.WebIconDatabase;
 import android.webkit.WebIconDatabase.IconListener;
 import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
 
 import java.io.ByteArrayOutputStream;
 
 class BrowserBookmarksAdapter extends BaseAdapter {
 
-    private final String            LOGTAG = "Bookmarks";
-
     private String                  mCurrentPage;
+    private String                  mCurrentTitle;
     private Cursor                  mCursor;
     private int                     mCount;
-    private String                  mLastWhereClause;
-    private String[]                mLastSelectionArgs;
-    private String                  mLastOrderBy;
     private BrowserBookmarksPage    mBookmarksPage;
     private ContentResolver         mContentResolver;
-    private ChangeObserver          mChangeObserver;
-    private DataSetObserver         mDataSetObserver;
     private boolean                 mDataValid;
+    private boolean                 mGridMode;
 
     // When true, this adapter is used to pick a bookmark to create a shortcut
     private boolean mCreateShortcut;
@@ -70,36 +68,37 @@
 
     /**
      *  Create a new BrowserBookmarksAdapter.
-     *  @param b        BrowserBookmarksPage that instantiated this.  
-     *                  Necessary so it will adjust its focus
-     *                  appropriately after a search.
-     */
-    public BrowserBookmarksAdapter(BrowserBookmarksPage b, String curPage) {
-        this(b, curPage, false);
-    }
-
-    /**
-     *  Create a new BrowserBookmarksAdapter.
      *  @param b        BrowserBookmarksPage that instantiated this.
      *                  Necessary so it will adjust its focus
      *                  appropriately after a search.
      */
     public BrowserBookmarksAdapter(BrowserBookmarksPage b, String curPage,
-            boolean createShortcut) {
+            String curTitle, boolean createShortcut) {
         mDataValid = false;
         mCreateShortcut = createShortcut;
         mExtraOffset = createShortcut ? 0 : 1;
         mBookmarksPage = b;
-        mCurrentPage = b.getResources().getString(R.string.current_page) + 
-                curPage;
+        mCurrentPage = b.getResources().getString(R.string.current_page)
+                + curPage;
+        mCurrentTitle = curTitle;
         mContentResolver = b.getContentResolver();
-        mLastOrderBy = Browser.BookmarkColumns.CREATED + " DESC";
-        mChangeObserver = new ChangeObserver();
-        mDataSetObserver = new MyDataSetObserver();
+        mGridMode = false;
+
         // FIXME: Should have a default sort order that the user selects.
-        search(null);
+        String whereClause = Browser.BookmarkColumns.BOOKMARK + " != 0";
+        String orderBy = Browser.BookmarkColumns.VISITS + " DESC";
+        mCursor = b.managedQuery(Browser.BOOKMARKS_URI,
+                Browser.HISTORY_PROJECTION, whereClause, null, orderBy);
+        mCursor.registerContentObserver(new ChangeObserver());
+        mCursor.registerDataSetObserver(new MyDataSetObserver());
+
+        mDataValid = true;
+        notifyDataSetChanged();
+
+        mCount = mCursor.getCount() + mExtraOffset;
+
         // FIXME: This requires another query of the database after the
-        // initial search(null). Can we optimize this?
+        // managedQuery. Can we optimize this?
         Browser.requestAllIcons(mContentResolver,
                 Browser.BookmarkColumns.FAVICON + " is NULL AND " +
                 Browser.BookmarkColumns.BOOKMARK + " == 1", mIconReceiver);
@@ -181,18 +180,7 @@
         }
         mCursor.moveToPosition(position- mExtraOffset);
         String url = mCursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX);
-        WebIconDatabase.getInstance().releaseIconForPageUrl(url);
-        Uri uri = ContentUris.withAppendedId(Browser.BOOKMARKS_URI, mCursor
-                .getInt(Browser.HISTORY_PROJECTION_ID_INDEX));
-        int numVisits = mCursor.getInt(Browser.HISTORY_PROJECTION_VISITS_INDEX);
-        if (0 == numVisits) {
-            mContentResolver.delete(uri, null, null);
-        } else {
-            // It is no longer a bookmark, but it is still a visited site.
-            ContentValues values = new ContentValues();
-            values.put(Browser.BookmarkColumns.BOOKMARK, 0);
-            mContentResolver.update(uri, values, null, null);
-        }
+        Bookmarks.removeFromBookmarks(null, mContentResolver, url);
         refreshList();
     }
     
@@ -253,52 +241,9 @@
      *  Refresh list to recognize a change in the database.
      */
     public void refreshList() {
-        // FIXME: consider using requery().
-        // Need to do more work to get it to function though.
-        searchInternal(mLastWhereClause, mLastSelectionArgs, mLastOrderBy);
-    }
-
-    /**
-     *  Search the database for bookmarks that match the input string.
-     *  @param like String to use to search the database.  Strings with spaces 
-     *              are treated as having multiple search terms using the
-     *              OR operator.  Search both the title and url.
-     */
-    public void search(String like) {
-        String whereClause = Browser.BookmarkColumns.BOOKMARK + " == 1";
-        String[] selectionArgs = null;
-        if (like != null) {
-            String[] likes = like.split(" ");
-            int count = 0;
-            boolean firstTerm = true;
-            StringBuilder andClause = new StringBuilder(256);
-            for (int j = 0; j < likes.length; j++) {
-                if (likes[j].length() > 0) {
-                    if (firstTerm) {
-                        firstTerm = false;
-                    } else {
-                        andClause.append(" OR ");
-                    }
-                    andClause.append(Browser.BookmarkColumns.TITLE
-                            + " LIKE ? OR " + Browser.BookmarkColumns.URL
-                            + " LIKE ? ");
-                    count += 2;
-                }
-            }
-            if (count > 0) {
-                selectionArgs = new String[count];
-                count = 0;
-                for (int j = 0; j < likes.length; j++) {
-                    if (likes[j].length() > 0) {
-                        like = "%" + likes[j] + "%";
-                        selectionArgs[count++] = like;
-                        selectionArgs[count++] = like;
-                    }
-                }
-                whereClause += " AND (" + andClause + ")";
-            }
-        }
-        searchInternal(whereClause, selectionArgs, mLastOrderBy);
+        mCursor.requery();
+        mCount = mCursor.getCount() + mExtraOffset;
+        notifyDataSetChanged();
     }
 
     /**
@@ -348,46 +293,6 @@
     }
 
     /**
-     *  This sorts alphabetically, with non-capitalized titles before 
-     *  capitalized.
-     */
-    public void sortAlphabetical() {
-        searchInternal(mLastWhereClause, mLastSelectionArgs,
-                Browser.BookmarkColumns.TITLE + " COLLATE UNICODE ASC");
-    }
-
-    /**
-     *  Internal function used in search, sort, and refreshList.
-     */
-    private void searchInternal(String whereClause, String[] selectionArgs,
-            String orderBy) {
-        if (mCursor != null) {
-            mCursor.unregisterContentObserver(mChangeObserver);
-            mCursor.unregisterDataSetObserver(mDataSetObserver);
-            mBookmarksPage.stopManagingCursor(mCursor);
-            mCursor.deactivate();
-        }
-
-        mLastWhereClause = whereClause;
-        mLastSelectionArgs = selectionArgs;
-        mLastOrderBy = orderBy;
-        mCursor = mContentResolver.query(
-            Browser.BOOKMARKS_URI,
-            Browser.HISTORY_PROJECTION,
-            whereClause,
-            selectionArgs, 
-            orderBy);
-        mCursor.registerContentObserver(mChangeObserver);
-        mCursor.registerDataSetObserver(mDataSetObserver);
-        mBookmarksPage.startManagingCursor(mCursor);
-
-        mDataValid = true;
-        notifyDataSetChanged();
-
-        mCount = mCursor.getCount() + mExtraOffset;
-    }
-
-    /**
      * How many items should be displayed in the list.
      * @return Count of items.
      */
@@ -425,6 +330,20 @@
         return position;
     }
 
+    /* package */ void switchViewMode(boolean toGrid) {
+        mGridMode = toGrid;
+    }
+
+    /* package */ void populateBookmarkItem(BookmarkItem b, int position) {
+        mCursor.moveToPosition(position - mExtraOffset);
+        b.setUrl(mCursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX));
+        b.setName(mCursor.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX));
+        byte[] data = mCursor.getBlob(Browser.HISTORY_PROJECTION_FAVICON_INDEX);
+        Bitmap bitmap = (null == data) ? null :
+                BitmapFactory.decodeByteArray(data, 0, data.length);
+        b.setFavicon(bitmap);
+    }
+
     /**
      * Get a View that displays the data at the specified position
      * in the list.
@@ -440,6 +359,53 @@
             throw new AssertionError(
                     "BrowserBookmarksAdapter tried to get a view out of range");
         }
+        if (mGridMode) {
+            if (convertView == null || convertView instanceof AddNewBookmark
+                    || convertView instanceof BookmarkItem) {
+                LayoutInflater factory = LayoutInflater.from(mBookmarksPage);
+                convertView
+                        = factory.inflate(R.layout.bookmark_thumbnail, null);
+            }
+            View holder = convertView.findViewById(R.id.holder);
+            ImageView thumb = (ImageView) convertView.findViewById(R.id.thumb);
+            ImageView fav = (ImageView) convertView.findViewById(R.id.fav);
+            TextView tv = (TextView) convertView.findViewById(R.id.label);
+
+            if (0 == position && !mCreateShortcut) {
+                // This is to create a bookmark for the current page.
+                holder.setVisibility(View.VISIBLE);
+                fav.setVisibility(View.GONE);
+                tv.setText(mCurrentTitle);
+                // FIXME: Want to show the screenshot of the current page
+                thumb.setImageResource(R.drawable.blank);
+                return convertView;
+            }
+            holder.setVisibility(View.GONE);
+            mCursor.moveToPosition(position - mExtraOffset);
+            tv.setText(mCursor.getString(
+                    Browser.HISTORY_PROJECTION_TITLE_INDEX));
+            byte[] data = mCursor.getBlob(
+                    Browser.HISTORY_PROJECTION_THUMBNAIL_INDEX);
+            if (data == null) {
+                // Backup is to just show white
+                thumb.setImageResource(R.drawable.blank);
+            } else {
+                thumb.setImageBitmap(
+                        BitmapFactory.decodeByteArray(data, 0, data.length));
+            }
+            // Now show the favicon
+            data = mCursor.getBlob(Browser.HISTORY_PROJECTION_FAVICON_INDEX);
+            if (data == null) {
+                fav.setVisibility(View.GONE);
+            } else {
+                fav.setVisibility(View.VISIBLE);
+                fav.setImageBitmap(
+                        BitmapFactory.decodeByteArray(data, 0, data.length));
+            }
+
+            return convertView;
+
+        }
         if (position == 0 && !mCreateShortcut) {
             AddNewBookmark b;
             if (convertView instanceof AddNewBookmark) {
@@ -450,7 +416,7 @@
             b.setUrl(mCurrentPage);
             return b;
         }
-        if (convertView == null || convertView instanceof AddNewBookmark) {
+        if (convertView == null || !(convertView instanceof BookmarkItem)) {
             convertView = new BookmarkItem(mBookmarksPage);
         }
         bind((BookmarkItem)convertView, position);
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index dd34c14..428aa92 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -36,6 +36,7 @@
 import android.util.Log;
 import android.view.ContextMenu;
 import android.view.KeyEvent;
+import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
@@ -43,7 +44,9 @@
 import android.view.ViewGroup;
 import android.view.ContextMenu.ContextMenuInfo;
 import android.widget.AdapterView;
+import android.widget.GridView;
 import android.widget.ListView;
+import android.widget.Toast;
 
 /**
  *  View showing the user's bookmarks in the browser.
@@ -51,6 +54,9 @@
 public class BrowserBookmarksPage extends Activity implements 
         View.OnCreateContextMenuListener {
 
+    private boolean                 mGridMode;
+    private GridView                mGridPage;
+    private View                    mVerticalList;
     private BrowserBookmarksAdapter mBookmarksAdapter;
     private static final int        BOOKMARKS_SAVE = 1;
     private boolean                 mMaxTabsOpen;
@@ -107,7 +113,13 @@
             break;
         case R.id.copy_url_context_menu_id:
             copy(getUrl(i.position));
-            
+            break;
+        case R.id.homepage_context_menu_id:
+            BrowserSettings.getInstance().setHomePage(this,
+                    getUrl(i.position));
+            Toast.makeText(this, R.string.homepage_set,
+                    Toast.LENGTH_LONG).show();
+            break;
         default:
             return super.onContextItemSelected(item);
         }
@@ -131,25 +143,29 @@
                     ((ViewGroup) mAddHeader.getParent()).
                             removeView(mAddHeader);
                 }
-                ((AddNewBookmark) i.targetView).copyTo(mAddHeader);
+                mAddHeader.setUrl(getIntent().getStringExtra("url"));
                 menu.setHeaderView(mAddHeader);
                 return;
             }
             menu.setGroupVisible(R.id.ADD_MENU, false);
-            BookmarkItem b = (BookmarkItem) i.targetView;
+            if (mMaxTabsOpen) {
+                menu.findItem(R.id.new_window_context_menu_id).setVisible(
+                        false);
+            }
             if (mContextHeader == null) {
                 mContextHeader = new BookmarkItem(BrowserBookmarksPage.this);
             } else if (mContextHeader.getParent() != null) {
                 ((ViewGroup) mContextHeader.getParent()).
                         removeView(mContextHeader);
             }
-            b.copyTo(mContextHeader);
-            menu.setHeaderView(mContextHeader);
-
-            if (mMaxTabsOpen) {
-                menu.findItem(R.id.new_window_context_menu_id).setVisible(
-                        false);
+            if (mGridMode) {
+                mBookmarksAdapter.populateBookmarkItem(mContextHeader,
+                        i.position);
+            } else {
+                BookmarkItem b = (BookmarkItem) i.targetView;
+                b.copyTo(mContextHeader);
             }
+            menu.setHeaderView(mContextHeader);
         }
 
     /**
@@ -159,25 +175,61 @@
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
-        setContentView(R.layout.browser_bookmarks_page);
-        setTitle(R.string.browser_bookmarks_page_bookmarks_text);
-
         if (Intent.ACTION_CREATE_SHORTCUT.equals(getIntent().getAction())) {
             mCreateShortcut = true;
         }
-
-        mBookmarksAdapter = new BrowserBookmarksAdapter(this, 
-                getIntent().getStringExtra("url"), mCreateShortcut);
         mMaxTabsOpen = getIntent().getBooleanExtra("maxTabsOpen", false);
 
-        ListView listView = (ListView) findViewById(R.id.list);
-        listView.setAdapter(mBookmarksAdapter);
-        listView.setDrawSelectorOnTop(false);
-        listView.setVerticalScrollBarEnabled(true);
-        listView.setOnItemClickListener(mListener);
+        setTitle(R.string.browser_bookmarks_page_bookmarks_text);
+        mBookmarksAdapter = new BrowserBookmarksAdapter(this,
+                        getIntent().getStringExtra("url"),
+                        getIntent().getStringExtra("title"), mCreateShortcut);
+        switchViewMode(true);
+    }
 
-        if (!mCreateShortcut) {
-            listView.setOnCreateContextMenuListener(this);
+    /**
+     *  Set the ContentView to be either the grid of thumbnails or the vertical
+     *  list.  Pass true to set it to the grid.
+     */
+    private void switchViewMode(boolean gridMode) {
+        mGridMode = gridMode;
+        mBookmarksAdapter.switchViewMode(gridMode);
+        if (mGridMode) {
+            if (mGridPage == null) {
+                mGridPage = new GridView(this);
+                mGridPage.setAdapter(mBookmarksAdapter);
+                mGridPage.setOnItemClickListener(mListener);
+                mGridPage.setNumColumns(GridView.AUTO_FIT);
+                // Keep this in sync with bookmark_thumb and
+                // BrowserActivity.updateScreenshot
+                mGridPage.setColumnWidth(100);
+                mGridPage.setFocusable(true);
+                mGridPage.setFocusableInTouchMode(true);
+                mGridPage.setSelector(android.R.drawable.gallery_thumb);
+                mGridPage.setVerticalSpacing(10);
+                if (!mCreateShortcut) {
+                    mGridPage.setOnCreateContextMenuListener(this);
+                }
+            }
+            setContentView(mGridPage);
+        } else {
+            if (null == mVerticalList) {
+                LayoutInflater factory = LayoutInflater.from(this);
+                mVerticalList = factory.inflate(R.layout.browser_bookmarks_page,
+                        null);
+
+                ListView listView
+                        = (ListView) mVerticalList.findViewById(R.id.list);
+                listView.setAdapter(mBookmarksAdapter);
+                listView.setDrawSelectorOnTop(false);
+                listView.setVerticalScrollBarEnabled(true);
+                listView.setOnItemClickListener(mListener);
+
+                if (!mCreateShortcut) {
+                    listView.setOnCreateContextMenuListener(this);
+                }
+            }
+            setContentView(mVerticalList);
         }
     }
 
@@ -196,7 +248,7 @@
             // It is possible that the view has been canceled when we get to
             // this point as back has a higher priority 
             if (mCanceled) {
-                android.util.Log.e("browser", "item clicked when dismising");
+                android.util.Log.e(LOGTAG, "item clicked when dismissing");
                 return;
             }
             if (!mCreateShortcut) {
@@ -294,12 +346,16 @@
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
-            case R.id.new_context_menu_id:
-                saveCurrentPage();
-                break;
-                
-            default:
-                return super.onOptionsItemSelected(item);
+        case R.id.new_context_menu_id:
+            saveCurrentPage();
+            break;
+
+        case R.id.switch_mode_menu_id:
+            switchViewMode(!mGridMode);
+            break;
+
+        default:
+            return super.onOptionsItemSelected(item);
         }
         return true;
     }
@@ -370,7 +426,7 @@
     /**
      *  Refresh the shown list after the database has changed.
      */
-    public void refreshList() {
+    private void refreshList() {
         mBookmarksAdapter.refreshList();
     }
     
diff --git a/src/com/android/browser/BrowserDownloadPage.java b/src/com/android/browser/BrowserDownloadPage.java
index 9776834..22e0e65 100644
--- a/src/com/android/browser/BrowserDownloadPage.java
+++ b/src/com/android/browser/BrowserDownloadPage.java
@@ -66,11 +66,7 @@
         setTitle(getText(R.string.download_title));
 
         mListView = (ListView) findViewById(R.id.list);
-        LayoutInflater factory = LayoutInflater.from(this);
-        View v = factory.inflate(R.layout.no_downloads, null);
-        addContentView(v, new LayoutParams(LayoutParams.FILL_PARENT,
-                LayoutParams.FILL_PARENT));
-        mListView.setEmptyView(v);
+        mListView.setEmptyView(findViewById(R.id.empty));
         
         mDownloadCursor = managedQuery(Downloads.CONTENT_URI, 
                 new String [] {"_id", Downloads.COLUMN_TITLE, Downloads.COLUMN_STATUS,
@@ -93,7 +89,7 @@
             // Create a list "controller" for the data
             mDownloadAdapter = new BrowserDownloadAdapter(this, 
                     R.layout.browser_download_item, mDownloadCursor);
-            
+
             mListView.setAdapter(mDownloadAdapter);
             mListView.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);
             mListView.setOnCreateContextMenuListener(this);
diff --git a/src/com/android/browser/BrowserHistoryPage.java b/src/com/android/browser/BrowserHistoryPage.java
index 42ca848..d5e7049 100644
--- a/src/com/android/browser/BrowserHistoryPage.java
+++ b/src/com/android/browser/BrowserHistoryPage.java
@@ -41,6 +41,7 @@
 import android.view.ViewGroup;
 import android.view.ViewGroup.LayoutParams;
 import android.view.ContextMenu.ContextMenuInfo;
+import android.view.ViewStub;
 import android.webkit.DateSorter;
 import android.webkit.WebIconDatabase.IconListener;
 import android.widget.AdapterView;
@@ -48,6 +49,7 @@
 import android.widget.ExpandableListView;
 import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
 import android.widget.TextView;
+import android.widget.Toast;
 
 import java.util.List;
 import java.util.Vector;
@@ -110,8 +112,7 @@
         setListAdapter(mAdapter);
         final ExpandableListView list = getExpandableListView();
         list.setOnCreateContextMenuListener(this);
-        LayoutInflater factory = LayoutInflater.from(this);
-        View v = factory.inflate(R.layout.empty_history, null);
+        View v = new ViewStub(this, R.layout.empty_history);
         addContentView(v, new LayoutParams(LayoutParams.FILL_PARENT,
                 LayoutParams.FILL_PARENT));
         list.setEmptyView(v);
@@ -222,6 +223,11 @@
                 Browser.deleteFromHistory(getContentResolver(), url);
                 mAdapter.refreshData();
                 return true;
+            case R.id.homepage_context_menu_id:
+                BrowserSettings.getInstance().setHomePage(this, url);
+                Toast.makeText(this, R.string.homepage_set,
+                    Toast.LENGTH_LONG).show();
+                return true;
             default:
                 break;
         }
@@ -267,18 +273,25 @@
         
         // Array for each of our bins.  Each entry represents how many items are
         // in that bin.
-        int mItemMap[];
+        private int mItemMap[];
         // This is our GroupCount.  We will have at most DateSorter.DAY_COUNT
         // bins, less if the user has no items in one or more bins.
-        int mNumberOfBins;
-        Vector<DataSetObserver> mObservers;
-        Cursor mCursor;
+        private int mNumberOfBins;
+        private Vector<DataSetObserver> mObservers;
+        private Cursor mCursor;
         
         HistoryAdapter() {
             mObservers = new Vector<DataSetObserver>();
             
-            String whereClause = Browser.BookmarkColumns.VISITS + " > 0 ";
-            String orderBy = Browser.BookmarkColumns.DATE + " DESC";
+            final String whereClause = Browser.BookmarkColumns.VISITS + " > 0"
+                    // In AddBookmarkPage, where we save new bookmarks, we add
+                    // three visits to newly created bookmarks, so that
+                    // bookmarks that have not been visited will show up in the
+                    // most visited, and higher in the goto search box.
+                    // However, this puts the site in the history, unless we
+                    // ignore sites with a DATE of 0, which the next line does.
+                    + " AND " + Browser.BookmarkColumns.DATE + " > 0";
+            final String orderBy = Browser.BookmarkColumns.DATE + " DESC";
            
             mCursor = managedQuery(
                     Browser.BOOKMARKS_URI,
@@ -290,6 +303,9 @@
         }
         
         void refreshData() {
+            if (mCursor.isClosed()) {
+                return;
+            }
             mCursor.requery();
             buildMap();
             for (DataSetObserver o : mObservers) {
diff --git a/src/com/android/browser/BrowserHomepagePreference.java b/src/com/android/browser/BrowserHomepagePreference.java
index d4708c3..7324f24 100644
--- a/src/com/android/browser/BrowserHomepagePreference.java
+++ b/src/com/android/browser/BrowserHomepagePreference.java
@@ -50,8 +50,8 @@
         if (dialog != null) {
             String url = s.toString();
             dialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(
-                    url.length() == 0 || url.equals("about:blank") ||
-                    Regex.WEB_URL_PATTERN.matcher(url).matches());
+                url.length() == 0 || 
+                BrowserActivity.ACCEPTED_URI_SCHEMA.matcher(url).matches());
         }
     }
 
diff --git a/src/com/android/browser/BrowserPreferencesPage.java b/src/com/android/browser/BrowserPreferencesPage.java
index 3b747d1..4536b2c 100644
--- a/src/com/android/browser/BrowserPreferencesPage.java
+++ b/src/com/android/browser/BrowserPreferencesPage.java
@@ -17,12 +17,20 @@
 package com.android.browser;
 
 import java.util.List;
+import java.util.Vector;
+import java.util.Set;
 
+import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
 import android.preference.EditTextPreference;
+import android.preference.ListPreference;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
+import android.preference.PreferenceScreen;
+import android.util.Log;
+import android.webkit.Plugin;
+import android.webkit.WebStorage;
 import android.webkit.WebView;
 import android.webkit.Plugin;
 
@@ -30,6 +38,8 @@
         implements Preference.OnPreferenceChangeListener, 
         Preference.OnPreferenceClickListener {
 
+    String TAG = "BrowserPreferencesPage";
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -66,6 +76,28 @@
         
         e = findPreference(BrowserSettings.PREF_GEARS_SETTINGS);
         e.setOnPreferenceClickListener(this);
+
+        PreferenceScreen manageDatabases = (PreferenceScreen)
+            findPreference(BrowserSettings.PREF_WEBSITE_SETTINGS);
+        Intent intent = new Intent(this, WebsiteSettingsActivity.class);
+        manageDatabases.setIntent(intent);
+    }
+
+    /*
+     * We need to set the manageDatabases PreferenceScreen state
+     * in the onResume(), as the number of origins with databases
+     * could have changed after calling the WebsiteSettingsActivity.
+     */
+    @Override
+    protected void onResume() {
+        super.onResume();
+        PreferenceScreen manageDatabases = (PreferenceScreen)
+            findPreference(BrowserSettings.PREF_WEBSITE_SETTINGS);
+        manageDatabases.setEnabled(false);
+        Set origins = WebStorage.getInstance().getOrigins();
+        if ((origins != null) && (origins.size() > 0)) {
+            manageDatabases.setEnabled(true);
+        }
     }
 
     @Override
diff --git a/src/com/android/browser/BrowserProvider.java b/src/com/android/browser/BrowserProvider.java
index bc12bde..29c65e8 100644
--- a/src/com/android/browser/BrowserProvider.java
+++ b/src/com/android/browser/BrowserProvider.java
@@ -96,6 +96,8 @@
 
     private static final int MAX_SUGGESTION_SHORT_ENTRIES = 3;
     private static final int MAX_SUGGESTION_LONG_ENTRIES = 6;
+    private static final String MAX_SUGGESTION_LONG_ENTRIES_STRING =
+            Integer.valueOf(MAX_SUGGESTION_LONG_ENTRIES).toString();
 
     // make sure that these match the index of TABLE_NAMES
     private static final int URI_MATCH_BOOKMARKS = 0;
@@ -143,7 +145,8 @@
     // 15 -> 17 Set it up for the SearchManager
     // 17 -> 18 Added favicon in bookmarks table for Home shortcuts
     // 18 -> 19 Remove labels table
-    private static final int DATABASE_VERSION = 19;
+    // 19 -> 20 Added thumbnail
+    private static final int DATABASE_VERSION = 20;
 
     // Regular expression which matches http://, followed by some stuff, followed by
     // optionally a trailing slash, all matched as separate groups.
@@ -151,10 +154,10 @@
 
     private SearchManager mSearchManager;
 
-    // The hex color string to be applied to urls of website suggestions, as derived from
+    // The ID of the ColorStateList to be applied to urls of website suggestions, as derived from
     // the current theme. This is not set until/unless beautifyUrl is called, at which point
     // this variable caches the color value.
-    private static String mSearchUrlColorHex;
+    private static String mSearchUrlColorId;
 
     public BrowserProvider() {
     }
@@ -215,7 +218,8 @@
                     "created LONG," +
                     "description TEXT," +
                     "bookmark INTEGER," +
-                    "favicon BLOB DEFAULT NULL" +
+                    "favicon BLOB DEFAULT NULL," +
+                    "thumbnail BLOB DEFAULT NULL" +
                     ");");
 
             final CharSequence[] bookmarks = mContext.getResources()
@@ -242,9 +246,12 @@
         @Override
         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
             Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
-                    + newVersion + ", which will destroy all old data");
+                    + newVersion);
             if (oldVersion == 18) {
                 db.execSQL("DROP TABLE IF EXISTS labels");
+            }
+            if (oldVersion <= 19) {
+                db.execSQL("ALTER TABLE bookmarks ADD COLUMN thumbnail BLOB DEFAULT NULL;");
             } else {
                 db.execSQL("DROP TABLE IF EXISTS bookmarks");
                 db.execSQL("DROP TABLE IF EXISTS searches");
@@ -471,22 +478,22 @@
                     case SUGGEST_COLUMN_ICON_1_ID:
                         if (mHistoryCount > mPos) {
                             if (mHistoryCursor.getInt(3) == 1) {
-                                return new Integer(
+                                return Integer.valueOf(
                                         R.drawable.ic_search_category_bookmark)
                                         .toString();
                             } else {
-                                return new Integer(
+                                return Integer.valueOf(
                                         R.drawable.ic_search_category_history)
                                         .toString();
                             }
                         } else {
-                            return new Integer(
+                            return Integer.valueOf(
                                     R.drawable.ic_search_category_suggest)
                                     .toString();
                         }
 
                     case SUGGEST_COLUMN_ICON_2_ID:
-                        return new String("0");
+                        return "0";
 
                     case SUGGEST_COLUMN_QUERY_ID:
                         if (mHistoryCount > mPos) {
@@ -606,19 +613,15 @@
          * and adds html formatting to make it green.
          */
         private String beautifyUrl(String url) {
-            if (mSearchUrlColorHex == null) {
+            if (mSearchUrlColorId == null) {
                 // Get the color used for this purpose from the current theme.
                 TypedValue colorValue = new TypedValue();
                 getContext().getTheme().resolveAttribute(
                         com.android.internal.R.attr.textColorSearchUrl, colorValue, true);
-                int color = getContext().getResources().getColor(colorValue.resourceId);
-
-                // Convert the int color value into a hex string, and strip the first two
-                // characters which will be the alpha transparency (html doesn't want this).
-                mSearchUrlColorHex = Integer.toHexString(color).substring(2);
+                mSearchUrlColorId = Integer.toString(colorValue.resourceId);
             }
 
-            return "<font color=\"#" + mSearchUrlColorHex + "\">" + stripUrl(url) + "</font>";
+            return "<font color=\"@" + mSearchUrlColorId + "\">" + stripUrl(url) + "</font>";
         }
     }
 
@@ -641,7 +644,8 @@
                 myArgs = null;
             } else {
                 String like = selectionArgs[0] + "%";
-                if (selectionArgs[0].startsWith("http")) {
+                if (selectionArgs[0].startsWith("http")
+                        || selectionArgs[0].startsWith("file")) {
                     myArgs = new String[1];
                     myArgs[0] = like;
                     suggestSelection = selection;
@@ -659,8 +663,7 @@
 
             Cursor c = db.query(TABLE_NAMES[URI_MATCH_BOOKMARKS],
                     SUGGEST_PROJECTION, suggestSelection, myArgs, null, null,
-                    ORDER_BY,
-                    (new Integer(MAX_SUGGESTION_LONG_ENTRIES)).toString());
+                    ORDER_BY, MAX_SUGGESTION_LONG_ENTRIES_STRING);
 
             if (match == URI_MATCH_BOOKMARKS_SUGGEST
                     || Regex.WEB_URL_PATTERN.matcher(selectionArgs[0]).matches()) {
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index a5e23c9..d2371cd 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -20,13 +20,18 @@
 
 import android.content.ContentResolver;
 import android.content.Context;
+import android.content.pm.ActivityInfo;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceScreen;
+import android.os.StatFs;
 import android.webkit.CookieManager;
 import android.webkit.WebView;
 import android.webkit.WebViewDatabase;
 import android.webkit.WebIconDatabase;
 import android.webkit.WebSettings;
+import android.webkit.WebStorage;
 import android.preference.PreferenceManager;
 import android.provider.Browser;
 
@@ -48,7 +53,7 @@
  */
 class BrowserSettings extends Observable {
 
-    // Public variables for settings
+    // Private variables for settings
     // NOTE: these defaults need to be kept in sync with the XML
     // until the performance of PreferenceManager.setDefaultValues()
     // is improved.
@@ -65,7 +70,19 @@
     private String homeUrl = "";
     private boolean loginInitialized = false;
     private boolean autoFitPage = true;
+    private boolean landscapeOnly = false;
     private boolean showDebugSettings = false;
+    private String databasePath; // default value set in loadFromDb()
+    private boolean databaseEnabled = true;
+    private long webStorageDefaultQuota = 5 * 1024 * 1024;
+    // The Browser always enables Application Caches.
+    private boolean appCacheEnabled = true;
+    private String appCachePath;  // default value set in loadFromDb().
+    private long appCacheMaxSize = Long.MAX_VALUE;
+    private boolean domStorageEnabled = true;
+    private String jsFlags = "";
+
+    private final static String TAG = "BrowserSettings";
 
     // Development settings
     public WebSettings.LayoutAlgorithm layoutAlgorithm =
@@ -75,6 +92,11 @@
     private boolean tracing = false;
     private boolean lightTouch = false;
     private boolean navDump = false;
+
+    // By default the error console is shown once the user navigates to about:debug.
+    // The setting can be then toggled from the settings menu.
+    private boolean showConsole = true;
+
     // Browser only settings
     private boolean doFlick = false;
 
@@ -97,22 +119,25 @@
             "privacy_clear_form_data";
     public final static String PREF_CLEAR_PASSWORDS =
             "privacy_clear_passwords";
+    public final static String PREF_DEFAULT_QUOTA =
+            "webstorage_default_quota";
     public final static String PREF_EXTRAS_RESET_DEFAULTS =
             "reset_default_preferences";
     public final static String PREF_DEBUG_SETTINGS = "debug_menu";
     public final static String PREF_GEARS_SETTINGS = "gears_settings";
+    public final static String PREF_WEBSITE_SETTINGS = "website_settings";
     public final static String PREF_TEXT_SIZE = "text_size";
     public final static String PREF_DEFAULT_ZOOM = "default_zoom";
     public final static String PREF_DEFAULT_TEXT_ENCODING =
             "default_text_encoding";
 
     private static final String DESKTOP_USERAGENT = "Mozilla/5.0 (Macintosh; " +
-            "U; Intel Mac OS X 10_5_5; en-us) AppleWebKit/525.18 (KHTML, " +
-            "like Gecko) Version/3.1.2 Safari/525.20.1";
+            "U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.17 (KHTML, " +
+            "like Gecko) Version/4.0 Safari/530.17";
 
     private static final String IPHONE_USERAGENT = "Mozilla/5.0 (iPhone; U; " +
-            "CPU iPhone OS 2_2 like Mac OS X; en-us) AppleWebKit/525.18.1 " +
-            "(KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20";
+            "CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 " +
+            "(KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16";
 
     // Value to truncate strings when adding them to a TextView within
     // a ListView
@@ -157,7 +182,6 @@
             s.setLoadsImagesAutomatically(b.loadsImagesAutomatically);
             s.setJavaScriptEnabled(b.javaScriptEnabled);
             s.setPluginsEnabled(b.pluginsEnabled);
-            s.setPluginsPath(b.pluginsPath);
             s.setJavaScriptCanOpenWindowsAutomatically(
                     b.javaScriptCanOpenWindowsAutomatically);
             s.setDefaultTextEncodingName(b.defaultTextEncodingName);
@@ -178,6 +202,20 @@
             s.setSupportMultipleWindows(true);
             // Turn off file access
             s.setAllowFileAccess(false);
+
+            s.setDatabasePath(b.databasePath);
+            s.setDatabaseEnabled(b.databaseEnabled);
+            s.setDomStorageEnabled(b.domStorageEnabled);
+            s.setWebStorageDefaultQuota(b.webStorageDefaultQuota);
+
+            // Turn on Application Caches.
+            s.setAppCachePath(b.appCachePath);
+            s.setAppCacheEnabled(b.appCacheEnabled);
+            s.setAppCacheMaxSize(b.appCacheMaxSize);
+
+            // Enable/Disable the error console.
+            b.mTabControl.getBrowserActivity().setShouldShowErrorConsole(
+                    b.showDebugSettings && b.showConsole);
         }
     }
 
@@ -197,6 +235,12 @@
         // Set the default value for the plugins path to the application's
         // local directory.
         pluginsPath = ctx.getDir("plugins", 0).getPath();
+        // Set the default value for the Application Caches path.
+        appCachePath = ctx.getDir("appcache", 0).getPath();
+        // Determine the maximum size of the application cache.
+        appCacheMaxSize = getAppCacheMaxSize();
+        // Set the default value for the Database path.
+        databasePath = ctx.getDir("databases", 0).getPath();
 
         homeUrl = getFactoryResetHomeUrl(ctx);
 
@@ -219,6 +263,15 @@
         pluginsEnabled = p.getBoolean("enable_plugins",
                 pluginsEnabled);
         pluginsPath = p.getString("plugins_path", pluginsPath);
+        databasePath = p.getString("database_path", databasePath);
+        databaseEnabled = p.getBoolean("enable_database", databaseEnabled);
+        webStorageDefaultQuota = Long.parseLong(p.getString(PREF_DEFAULT_QUOTA,
+                String.valueOf(webStorageDefaultQuota)));
+        appCacheEnabled = p.getBoolean("enable_appcache",
+                appCacheEnabled);
+        domStorageEnabled = p.getBoolean("enable_domstorage",
+                domStorageEnabled);
+        appCachePath = p.getString("appcache_path", appCachePath);
         javaScriptCanOpenWindowsAutomatically = !p.getBoolean(
             "block_popup_windows",
             !javaScriptCanOpenWindowsAutomatically);
@@ -238,6 +291,14 @@
         zoomDensity = WebSettings.ZoomDensity.valueOf(
                 p.getString(PREF_DEFAULT_ZOOM, zoomDensity.name()));
         autoFitPage = p.getBoolean("autofit_pages", autoFitPage);
+        boolean landscapeOnlyTemp =
+                p.getBoolean("landscape_only", landscapeOnly);
+        if (landscapeOnlyTemp != landscapeOnly) {
+            landscapeOnly = landscapeOnlyTemp;
+            mTabControl.getBrowserActivity().setRequestedOrientation(
+                    landscapeOnly ? ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
+                    : ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+        }
         useWideViewPort = true; // use wide view port for either setting
         if (autoFitPage) {
             layoutAlgorithm = WebSettings.LayoutAlgorithm.NARROW_COLUMNS;
@@ -274,6 +335,19 @@
             doFlick = p.getBoolean("enable_flick", doFlick);
             userAgent = Integer.parseInt(p.getString("user_agent", "0"));
         }
+        // JS flags is loaded from DB even if showDebugSettings is false,
+        // so that it can be set once and be effective all the time.
+        jsFlags = p.getString("js_engine_flags", "");
+
+        // Read the setting for showing/hiding the JS Console always so that should the
+        // user enable debug settings, we already know if we should show the console.
+        // The user will never see the console unless they navigate to about:debug,
+        // regardless of the setting we read here. This setting is only used after debug
+        // is enabled.
+        showConsole = p.getBoolean("javascript_console", showConsole);
+        mTabControl.getBrowserActivity().setShouldShowErrorConsole(
+                showDebugSettings && showConsole);
+
         update();
     }
 
@@ -285,6 +359,10 @@
         return homeUrl;
     }
 
+    public String getJsFlags() {
+        return jsFlags;
+    }
+
     public void setHomePage(Context context, String url) {
         Editor ed = PreferenceManager.
                 getDefaultSharedPreferences(context).edit();
@@ -436,14 +514,24 @@
         db.clearHttpAuthUsernamePassword();
     }
 
-    /*package*/ void resetDefaultPreferences(Context context) {
+    /*package*/ void clearDatabases(Context context) {
+        WebStorage.getInstance().deleteAllData();
+        // Remove all listed databases from the preferences
+        PreferenceActivity activity = (PreferenceActivity) context;
+        PreferenceScreen screen = (PreferenceScreen)
+            activity.findPreference(BrowserSettings.PREF_WEBSITE_SETTINGS);
+        screen.removeAll();
+        screen.setEnabled(false);
+    }
+
+    /*package*/ void resetDefaultPreferences(Context ctx) {
         SharedPreferences p =
-            PreferenceManager.getDefaultSharedPreferences(context);
+            PreferenceManager.getDefaultSharedPreferences(ctx);
         p.edit().clear().commit();
-        PreferenceManager.setDefaultValues(context, R.xml.browser_preferences,
+        PreferenceManager.setDefaultValues(ctx, R.xml.browser_preferences,
                 true);
         // reset homeUrl
-        setHomePage(context, getFactoryResetHomeUrl(context));
+        setHomePage(ctx, getFactoryResetHomeUrl(ctx));
     }
 
     private String getFactoryResetHomeUrl(Context context) {
@@ -455,6 +543,35 @@
         return url;
     }
 
+    private long getAppCacheMaxSize() {
+        StatFs dataPartition = new StatFs(appCachePath);
+        long freeSpace = dataPartition.getAvailableBlocks()
+            * dataPartition.getBlockSize();
+        long fileSystemSize = dataPartition.getBlockCount()
+            * dataPartition.getBlockSize();
+        return calculateAppCacheMaxSize(fileSystemSize, freeSpace);
+    }
+
+    /*package*/ static long calculateAppCacheMaxSize(long fileSystemSizeBytes,
+            long freeSpaceBytes) {
+        if (fileSystemSizeBytes <= 0
+                || freeSpaceBytes <= 0
+                || freeSpaceBytes > fileSystemSizeBytes) {
+            return 0;
+        }
+
+        long fileSystemSizeRatio =
+            4 << ((int) Math.floor(Math.log10(fileSystemSizeBytes / (1024 * 1024))));
+        long maxSizeBytes = (long) Math.min(Math.floor(fileSystemSizeBytes / fileSystemSizeRatio),
+                Math.floor(freeSpaceBytes / 4));
+        // Round maxSizeBytes up to a multiple of 512KB (except when freeSpaceBytes < 1MB).
+        long maxSizeStepBytes = 512 * 1024;
+        if (freeSpaceBytes < maxSizeStepBytes * 2) {
+            return 0;
+        }
+        return (maxSizeStepBytes * ((maxSizeBytes / maxSizeStepBytes) + 1));
+    }
+
     // Private constructor that does nothing.
     private BrowserSettings() {
     }
diff --git a/src/com/android/browser/BrowserYesNoPreference.java b/src/com/android/browser/BrowserYesNoPreference.java
index 65cde71..ae93882 100644
--- a/src/com/android/browser/BrowserYesNoPreference.java
+++ b/src/com/android/browser/BrowserYesNoPreference.java
@@ -38,6 +38,7 @@
             Context context = getContext();
             if (BrowserSettings.PREF_CLEAR_CACHE.equals(getKey())) {
                 BrowserSettings.getInstance().clearCache(context);
+                BrowserSettings.getInstance().clearDatabases(context);
             } else if (BrowserSettings.PREF_CLEAR_COOKIES.equals(getKey())) {
                 BrowserSettings.getInstance().clearCookies(context);
             } else if (BrowserSettings.PREF_CLEAR_HISTORY.equals(getKey())) {
diff --git a/src/com/android/browser/ErrorConsoleView.java b/src/com/android/browser/ErrorConsoleView.java
new file mode 100644
index 0000000..56f663b
--- /dev/null
+++ b/src/com/android/browser/ErrorConsoleView.java
@@ -0,0 +1,339 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import android.content.Context;
+import android.database.DataSetObserver;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.View.OnClickListener;
+import android.webkit.WebView;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+import android.widget.TextView;
+import android.widget.TwoLineListItem;
+
+import java.util.Vector;
+
+/* package */ class ErrorConsoleView extends LinearLayout {
+
+    /**
+     * Define some constants to describe the visibility of the error console.
+     */
+    public static final int SHOW_MINIMIZED = 0;
+    public static final int SHOW_MAXIMIZED = 1;
+    public static final int SHOW_NONE      = 2;
+
+    private TextView mConsoleHeader;
+    private ErrorConsoleListView mErrorList;
+    private LinearLayout mEvalJsViewGroup;
+    private EditText mEvalEditText;
+    private Button mEvalButton;
+    private WebView mWebView;
+    private int mCurrentShowState = SHOW_NONE;
+
+    private boolean mSetupComplete = false;
+
+    // Before we've been asked to display the console, cache any messages that should
+    // be added to the console. Then when we do display the console, add them to the view
+    // then.
+    private Vector<ErrorConsoleMessage> mErrorMessageCache;
+
+    public ErrorConsoleView(Context context) {
+        super(context);
+    }
+
+    public ErrorConsoleView(Context context, AttributeSet attributes) {
+        super(context, attributes);
+    }
+
+    private void commonSetupIfNeeded() {
+        if (mSetupComplete) {
+            return;
+        }
+
+        LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(
+                Context.LAYOUT_INFLATER_SERVICE);
+        inflater.inflate(R.layout.error_console, this);
+
+        // Get references to each ui element.
+        mConsoleHeader = (TextView) findViewById(R.id.error_console_header_id);
+        mErrorList = (ErrorConsoleListView) findViewById(R.id.error_console_list_id);
+        mEvalJsViewGroup = (LinearLayout) findViewById(R.id.error_console_eval_view_group_id);
+        mEvalEditText = (EditText) findViewById(R.id.error_console_eval_text_id);
+        mEvalButton = (Button) findViewById(R.id.error_console_eval_button_id);
+
+        mEvalButton.setOnClickListener(new OnClickListener() {
+            public void onClick(View v) {
+                // Send the javascript to be evaluated to webkit as a javascript: url
+                // TODO: Can we expose access to webkit's JS interpreter here and evaluate it that
+                // way? Note that this is called on the UI thread so we will need to post a message
+                // to the WebCore thread to implement this.
+                if (mWebView != null) {
+                    mWebView.loadUrl("javascript:" + mEvalEditText.getText());
+                }
+
+                mEvalEditText.setText("");
+            }
+        });
+
+        // Make clicking on the console title bar min/maximse it.
+        mConsoleHeader.setOnClickListener(new OnClickListener() {
+            public void onClick(View v) {
+                if (mCurrentShowState == SHOW_MINIMIZED) {
+                    showConsole(SHOW_MAXIMIZED);
+                } else {
+                    showConsole(SHOW_MINIMIZED);
+                }
+            }
+        });
+
+        // Add any cached messages to the list now that we've assembled the view.
+        if (mErrorMessageCache != null) {
+            for (ErrorConsoleMessage msg : mErrorMessageCache) {
+                mErrorList.addErrorMessage(msg.getMessage(), msg.getSourceID(), msg.getLineNumber());
+            }
+            mErrorMessageCache.clear();
+        }
+
+        mSetupComplete = true;
+    }
+
+    /**
+     * Adds a message to the set of messages the console uses.
+     */
+    public void addErrorMessage(String msg, String sourceId, int lineNumber) {
+        if (mSetupComplete) {
+            mErrorList.addErrorMessage(msg, sourceId, lineNumber);
+        } else {
+            if (mErrorMessageCache == null) {
+                mErrorMessageCache = new Vector<ErrorConsoleMessage>();
+            }
+            mErrorMessageCache.add(new ErrorConsoleMessage(msg, sourceId, lineNumber));
+        }
+    }
+
+    /**
+     * Removes all error messages from the console.
+     */
+    public void clearErrorMessages() {
+        if (mSetupComplete) {
+            mErrorList.clearErrorMessages();
+        } else if (mErrorMessageCache != null) {
+            mErrorMessageCache.clear();
+        }
+    }
+
+    /**
+     * Returns the current number of errors displayed in the console.
+     */
+    public int numberOfErrors() {
+        if (mSetupComplete) {
+            return mErrorList.getCount();
+        } else {
+            return (mErrorMessageCache == null) ? 0 : mErrorMessageCache.size();
+        }
+    }
+
+    /**
+     * Sets the webview that this console is associated with. Currently this is used so
+     * we can call into webkit to evaluate JS expressions in the console.
+     */
+    public void setWebView(WebView webview) {
+        mWebView = webview;
+    }
+
+    /**
+     * Sets the visibility state of the console.
+     */
+    public void showConsole(int show_state) {
+        commonSetupIfNeeded();
+        switch (show_state) {
+            case SHOW_MINIMIZED:
+                mConsoleHeader.setVisibility(View.VISIBLE);
+                mConsoleHeader.setText(R.string.error_console_header_text_minimized);
+                mErrorList.setVisibility(View.GONE);
+                mEvalJsViewGroup.setVisibility(View.GONE);
+                break;
+
+            case SHOW_MAXIMIZED:
+                mConsoleHeader.setVisibility(View.VISIBLE);
+                mConsoleHeader.setText(R.string.error_console_header_text_maximized);
+                mErrorList.setVisibility(View.VISIBLE);
+                mEvalJsViewGroup.setVisibility(View.VISIBLE);
+                break;
+
+            case SHOW_NONE:
+                mConsoleHeader.setVisibility(View.GONE);
+                mErrorList.setVisibility(View.GONE);
+                mEvalJsViewGroup.setVisibility(View.GONE);
+                break;
+        }
+        mCurrentShowState = show_state;
+    }
+
+    /**
+     * Returns the current visibility state of the console.
+     */
+    public int getShowState() {
+        if (mSetupComplete) {
+            return mCurrentShowState;
+        } else {
+            return SHOW_NONE;
+        }
+    }
+
+    /**
+     * This class extends ListView to implement the View that will actually display the set of
+     * errors encountered on the current page.
+     */
+    private static class ErrorConsoleListView extends ListView {
+        // An adapter for this View that contains a list of error messages.
+        private ErrorConsoleMessageList mConsoleMessages;
+
+        public ErrorConsoleListView(Context context, AttributeSet attributes) {
+            super(context, attributes);
+            mConsoleMessages = new ErrorConsoleMessageList(context);
+            setAdapter(mConsoleMessages);
+        }
+
+        public void addErrorMessage(String msg, String sourceId, int lineNumber) {
+            mConsoleMessages.add(msg, sourceId, lineNumber);
+            setSelection(mConsoleMessages.getCount());
+        }
+
+        public void clearErrorMessages() {
+            mConsoleMessages.clear();
+        }
+
+        /**
+         * This class is an adapter for ErrorConsoleListView that contains the error console
+         * message data.
+         */
+        private class ErrorConsoleMessageList extends android.widget.BaseAdapter
+                implements android.widget.ListAdapter {
+
+            private Vector<ErrorConsoleMessage> mMessages;
+            private LayoutInflater mInflater;
+
+            public ErrorConsoleMessageList(Context context) {
+                mMessages = new Vector<ErrorConsoleMessage>();
+                mInflater = (LayoutInflater)context.getSystemService(
+                        Context.LAYOUT_INFLATER_SERVICE);
+            }
+
+            /**
+             * Add a new message to the list and update the View.
+             */
+            public void add(String msg, String sourceID, int lineNumber) {
+                mMessages.add(new ErrorConsoleMessage(msg, sourceID, lineNumber));
+                notifyDataSetChanged();
+            }
+
+            /**
+             * Remove all messages from the list and update the view.
+             */
+            public void clear() {
+                mMessages.clear();
+                notifyDataSetChanged();
+            }
+
+            @Override
+            public boolean areAllItemsEnabled() {
+                return false;
+            }
+
+            @Override
+            public boolean isEnabled(int position) {
+                return false;
+            }
+
+            public long getItemId(int position) {
+                return position;
+            }
+
+            public Object getItem(int position) {
+                return mMessages.get(position);
+            }
+
+            public int getCount() {
+                return mMessages.size();
+            }
+
+            @Override
+            public boolean hasStableIds() {
+                return true;
+            }
+
+            /**
+             * Constructs a TwoLineListItem for the error at position.
+             */
+            public View getView(int position, View convertView, ViewGroup parent) {
+                View view;
+                ErrorConsoleMessage error = mMessages.get(position);
+
+                if (error == null) {
+                    return null;
+                }
+
+                if (convertView == null) {
+                    view = mInflater.inflate(android.R.layout.two_line_list_item, parent, false);
+                } else {
+                    view = convertView;
+                }
+
+                TextView headline = (TextView) view.findViewById(android.R.id.text1);
+                TextView subText = (TextView) view.findViewById(android.R.id.text2);
+                headline.setText(error.getSourceID() + ":" + error.getLineNumber());
+                subText.setText(error.getMessage());
+                return view;
+            }
+
+        }
+    }
+
+    /**
+     * This class holds the data for a single error message in the console.
+     */
+    private static class ErrorConsoleMessage {
+        private String mMessage;
+        private String mSourceID;
+        private int mLineNumber;
+
+        public ErrorConsoleMessage(String msg, String sourceID, int lineNumber) {
+            mMessage = msg;
+            mSourceID = sourceID;
+            mLineNumber = lineNumber;
+        }
+
+        public String getMessage() {
+            return mMessage;
+        }
+
+        public String getSourceID() {
+            return mSourceID;
+        }
+
+        public int getLineNumber() {
+            return mLineNumber;
+        }
+    }
+}
diff --git a/src/com/android/browser/FindDialog.java b/src/com/android/browser/FindDialog.java
index 6e9574c..2049bd0 100644
--- a/src/com/android/browser/FindDialog.java
+++ b/src/com/android/browser/FindDialog.java
@@ -42,7 +42,6 @@
     private BrowserActivity mBrowserActivity;
     
     // Views with which the user can interact.
-    private View            mOk;
     private EditText        mEditText;
     private View            mNextButton;
     private View            mPrevButton;
@@ -129,7 +128,6 @@
         
         button = findViewById(R.id.done);
         button.setOnClickListener(mFindCancelListener);
-        mOk = button;
         
         mMatches = (TextView) findViewById(R.id.matches);
         mMatchesView = findViewById(R.id.matches_view);
@@ -143,23 +141,14 @@
         mBrowserActivity.closeFind();
         mWebView.clearMatches();
     }
-    
+
     @Override
     public boolean dispatchKeyEvent(KeyEvent event) {
-        int code = event.getKeyCode();
-        boolean up = event.getAction() == KeyEvent.ACTION_UP;
-        switch (code) {
-            case KeyEvent.KEYCODE_DPAD_CENTER:
-            case KeyEvent.KEYCODE_ENTER:
-                if (!mEditText.hasFocus()) {
-                    break;
-                }
-                if (up) {
-                    findNext();
-                }
-                return true;
-            default:
-                break;
+        if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER
+                && event.getAction() == KeyEvent.ACTION_UP
+                && mEditText.hasFocus()) {
+            findNext();
+            return true;
         }
         return super.dispatchKeyEvent(event);
     }
diff --git a/src/com/android/browser/HistoryItem.java b/src/com/android/browser/HistoryItem.java
index 55e43f0..b37a3bd 100644
--- a/src/com/android/browser/HistoryItem.java
+++ b/src/com/android/browser/HistoryItem.java
@@ -17,23 +17,13 @@
  
 package com.android.browser;
 
-import android.content.ContentResolver;
-import android.content.ContentUris;
-import android.content.ContentValues;
 import android.content.Context;
-import android.database.Cursor;
 import android.graphics.Bitmap;
-import android.net.Uri;
 import android.provider.Browser;
-import android.util.Log;
 import android.view.View;
-import android.webkit.WebIconDatabase;
 import android.widget.CompoundButton;
 import android.widget.ImageView;
 import android.widget.TextView;
-import android.widget.Toast;
-
-import java.util.Date;
 
 /**
  *  Layout representing a history item in the classic history viewer.
@@ -54,56 +44,13 @@
         mListener = new CompoundButton.OnCheckedChangeListener() {
             public void onCheckedChanged(CompoundButton buttonView,
                     boolean isChecked) {
-                ContentResolver cr = mContext.getContentResolver();
-                Cursor cursor = cr.query(
-                        Browser.BOOKMARKS_URI,
-                        Browser.HISTORY_PROJECTION,
-                        "url = ?",
-                        new String[] { mUrl },
-                        null);
-                boolean first = cursor.moveToFirst();
-                // Should be in the database no matter what
-                if (!first) {
-                    throw new AssertionError("URL is not in the database!");
-                }
                 if (isChecked) {
-                    // Add to bookmarks
-                    // FIXME: Share code with AddBookmarkPage.java
-                    ContentValues map = new ContentValues();
-                    map.put(Browser.BookmarkColumns.CREATED,
-                            new Date().getTime());
-                    map.put(Browser.BookmarkColumns.TITLE, getName());
-                    map.put(Browser.BookmarkColumns.BOOKMARK, 1);
-                    try {
-                        cr.update(Browser.BOOKMARKS_URI, map, 
-                                "_id = " + cursor.getInt(0), null);
-                    } catch (IllegalStateException e) {
-                        Log.e("HistoryItem", "no database!");
-                    }
-                    WebIconDatabase.getInstance().retainIconForPageUrl(mUrl);
-                    // catch IllegalStateException?
-                    Toast.makeText(mContext, R.string.added_to_bookmarks,
-                            Toast.LENGTH_LONG).show();
+                    Bookmarks.addBookmark(mContext,
+                            mContext.getContentResolver(), mUrl, getName());
                 } else {
-                    // Remove from bookmarks
-                    // FIXME: This code should be shared with
-                    // BrowserBookmarksAdapter.java
-                    WebIconDatabase.getInstance().releaseIconForPageUrl(mUrl);
-                    Uri uri = ContentUris.withAppendedId(Browser.BOOKMARKS_URI,
-                            cursor.getInt(Browser.HISTORY_PROJECTION_ID_INDEX));
-                    // It is no longer a bookmark, but it is still a visited
-                    // site.
-                    ContentValues values = new ContentValues();
-                    values.put(Browser.BookmarkColumns.BOOKMARK, 0);
-                    try {
-                        cr.update(uri, values, null, null);
-                    } catch (IllegalStateException e) {
-                        Log.e("HistoryItem", "no database!");
-                    }
-                    Toast.makeText(mContext, R.string.removed_from_bookmarks,
-                            Toast.LENGTH_LONG).show();
+                    Bookmarks.removeFromBookmarks(mContext,
+                            mContext.getContentResolver(), mUrl);
                 }
-                cursor.deactivate();
             }
         };
     }
diff --git a/src/com/android/browser/MostVisitedActivity.java b/src/com/android/browser/MostVisitedActivity.java
index 704ee27..90052d3 100644
--- a/src/com/android/browser/MostVisitedActivity.java
+++ b/src/com/android/browser/MostVisitedActivity.java
@@ -35,6 +35,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewGroup.LayoutParams;
+import android.view.ViewStub;
 
 import java.util.Vector;
 
@@ -50,8 +51,7 @@
                 .addListener(new IconReceiver());
         setListAdapter(mAdapter);
         ListView list = getListView();
-        LayoutInflater factory = LayoutInflater.from(this);
-        View v = factory.inflate(R.layout.empty_history, null);
+        View v = new ViewStub(this, R.layout.empty_history);
         addContentView(v, new LayoutParams(LayoutParams.FILL_PARENT,
                 LayoutParams.FILL_PARENT));
         list.setEmptyView(v);
@@ -84,9 +84,9 @@
         private Vector<DataSetObserver> mObservers;
         private Cursor mCursor;
         // These correspond with projection below.
-        private final int mUrlIndex = 0;
-        private final int mTitleIndex = 1;
-        private final int mBookmarkIndex = 2;
+        private static final int mUrlIndex = 0;
+        private static final int mTitleIndex = 1;
+        private static final int mBookmarkIndex = 2;
 
         MyAdapter() {
             mObservers = new Vector<DataSetObserver>();
diff --git a/src/com/android/browser/PermissionDialog.java b/src/com/android/browser/PermissionDialog.java
new file mode 100644
index 0000000..b71261a
--- /dev/null
+++ b/src/com/android/browser/PermissionDialog.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.Window;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+/**
+ * Permission dialog for HTML5
+ * @hide
+ */
+public class PermissionDialog extends Activity {
+
+    private static final String TAG = "PermissionDialog";
+    public static final String PARAM_ORIGIN = "origin";
+    public static final String PARAM_QUOTA = "quota";
+
+    private String mWebStorageOrigin;
+    private long mWebStorageQuota = 0;
+    private int mNotification = 0;
+
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        getParameters();
+        setupDialog();
+    }
+
+    private void getParameters() {
+        Intent intent = getIntent();
+        mWebStorageOrigin = intent.getStringExtra(PARAM_ORIGIN);
+        mWebStorageQuota = intent.getLongExtra(PARAM_QUOTA, 0);
+    }
+
+    private void setupDialog() {
+        requestWindowFeature(Window.FEATURE_NO_TITLE);
+        setContentView(R.layout.permission_dialog);
+
+        setIcon(R.id.icon, android.R.drawable.ic_popup_disk_full);
+        setText(R.id.dialog_title, R.string.query_storage_quota_prompt);
+        setText(R.id.dialog_message, R.string.query_storage_quota_message);
+        setCharSequence(R.id.origin, mWebStorageOrigin);
+
+        setupButton(R.id.button_allow, R.string.permission_button_allow,
+            new View.OnClickListener() {
+                public void onClick(View v) { allow(); }
+            });
+        setupButton(R.id.button_alwaysdeny, R.string.permission_button_alwaysdeny,
+            new View.OnClickListener() {
+                public void onClick(View v) { alwaysdeny(); }
+            });
+        setupButton(R.id.button_deny, R.string.permission_button_deny,
+            new View.OnClickListener() {
+                public void onClick(View v) { deny(); }
+            });
+    }
+
+    private void setText(int viewID, int stringID) {
+        setCharSequence(viewID, getString(stringID));
+    }
+
+    private void setCharSequence(int viewID, CharSequence string) {
+        View view = findViewById(viewID);
+        if (view == null) {
+            return;
+        }
+        view.setVisibility(View.VISIBLE);
+        TextView textView = (TextView) view;
+        textView.setText(string);
+    }
+
+    private void setIcon(int viewID, int imageID) {
+        View view = findViewById(viewID);
+        if (view == null) {
+            return;
+        }
+        view.setVisibility(View.VISIBLE);
+        ImageView icon = (ImageView) view;
+        icon.setImageResource(imageID);
+    }
+
+    private void setupButton(int viewID, int stringID,
+                             View.OnClickListener listener) {
+        View view = findViewById(viewID);
+        if (view == null) {
+            return;
+        }
+        setText(viewID, stringID);
+        view.setOnClickListener(listener);
+    }
+
+    private void useNextQuota() {
+        CharSequence[] values = getResources().getTextArray(
+            R.array.webstorage_quota_entries_values);
+        for (int i=0; i<values.length; i++) {
+            long value = Long.parseLong(values[i].toString());
+            value *= (1024 * 1024); // the string array is expressed in MB
+            if (value > mWebStorageQuota) {
+                mWebStorageQuota = value;
+                break;
+            }
+        }
+    }
+
+    private void allow() {
+        // If somehow there is no "next quota" in the ladder,
+        // we'll add 1MB anyway.
+        mWebStorageQuota += 1024*1024;
+        useNextQuota();
+        mNotification = R.string.webstorage_notification;
+        closeDialog();
+    }
+
+    private void alwaysdeny() {
+        // Setting the quota to 0 will prevent any new data to be
+        // added, but the existing data will not be deleted.
+        mWebStorageQuota = 0;
+        mNotification = R.string.webstorage_notification;
+        closeDialog();
+    }
+
+    private void deny() {
+        closeDialog();
+    }
+
+    private void closeDialog() {
+        Intent intent = new Intent();
+        intent.putExtra(PARAM_QUOTA, mWebStorageQuota);
+        setResult(RESULT_OK, intent);
+        showToast();
+        finish();
+    }
+
+    private void showToast() {
+        if (mNotification != 0) {
+            Toast toast = Toast.makeText(this, mNotification, Toast.LENGTH_LONG);
+            toast.setGravity(Gravity.BOTTOM, 0, 0);
+            toast.show();
+        }
+    }
+
+    public boolean dispatchKeyEvent(KeyEvent event) {
+        if ((event.getKeyCode() == KeyEvent.KEYCODE_BACK)
+              && (event.getAction() == KeyEvent.ACTION_DOWN)) {
+            closeDialog();
+            return true; // event consumed
+        }
+        return super.dispatchKeyEvent(event);
+    }
+
+}
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 575be8d..c7c3e3f 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -195,6 +195,8 @@
         // url has not changed.
         private String mOriginalUrl;
 
+        private ErrorConsoleView mErrorConsole;
+
         // Construct a new tab
         private Tab(WebView w, boolean closeOnExit, String appId, String url) {
             mMainView = w;
@@ -388,6 +390,28 @@
     }
 
     /**
+     * Return the current tab's error console. Creates the console if createIfNEcessary
+     * is true and we haven't already created the console.
+     * @param createIfNecessary Flag to indicate if the console should be created if it has
+     *                          not been already.
+     * @return The current tab's error console, or null if one has not been created and
+     *         createIfNecessary is false.
+     */
+    ErrorConsoleView getCurrentErrorConsole(boolean createIfNecessary) {
+        Tab t = getTab(mCurrentTab);
+        if (t == null) {
+            return null;
+        }
+
+        if (createIfNecessary && t.mErrorConsole == null) {
+            t.mErrorConsole = new ErrorConsoleView(mActivity);
+            t.mErrorConsole.setWebView(t.mMainView);
+        }
+
+        return t.mErrorConsole;
+    }
+
+    /**
      * Return the current tab's top-level WebView. This can return a subwindow
      * if one exists.
      * @return The top-level WebView of the current tab.
@@ -446,6 +470,9 @@
      * @return index of Tab or -1 if not found
      */
     int getTabIndex(Tab tab) {
+        if (tab == null) {
+            return -1;
+        }
         return mTabs.indexOf(tab);
     }
 
@@ -681,11 +708,11 @@
             return;
         }
 
-        // free the WebView cache
-        Log.w(LOGTAG, "Free WebView cache");
+        // free the WebView's unused memory (this includes the cache)
+        Log.w(LOGTAG, "Free WebView's unused memory and cache");
         WebView view = getCurrentWebView();
         if (view != null) {
-            view.clearCache(false);
+            view.freeMemory();
         }
         // force a gc
         System.gc();
@@ -801,6 +828,45 @@
         return null;
     }
 
+    // This method checks if a non-app tab (one created within the browser)
+    // matches the given url.
+    private boolean tabMatchesUrl(Tab t, String url) {
+        if (t.mAppId != null) {
+            return false;
+        } else if (t.mMainView == null) {
+            return false;
+        } else if (url.equals(t.mMainView.getUrl()) ||
+                url.equals(t.mMainView.getOriginalUrl())) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Return the tab that has no app id associated with it and the url of the
+     * tab matches the given url.
+     * @param url The url to search for.
+     */
+    Tab findUnusedTabWithUrl(String url) {
+        if (url == null) {
+            return null;
+        }
+        // Check the current tab first.
+        Tab t = getCurrentTab();
+        if (t != null && tabMatchesUrl(t, url)) {
+            return t;
+        }
+        // Now check all the rest.
+        final int size = getTabCount();
+        for (int i = 0; i < size; i++) {
+            t = getTab(i);
+            if (tabMatchesUrl(t, url)) {
+                return t;
+            }
+        }
+        return null;
+    }
+
     /**
      * Recreate the main WebView of the given tab. Returns true if the WebView
      * was deleted.
@@ -865,6 +931,48 @@
         return setCurrentTab(newTab, false);
     }
 
+    /*package*/ void pauseCurrentTab() {
+        Tab t = getCurrentTab();
+        if (t != null) {
+            t.mMainView.onPause();
+            if (t.mSubView != null) {
+                t.mSubView.onPause();
+            }
+        }
+    }
+
+    /*package*/ void resumeCurrentTab() {
+        Tab t = getCurrentTab();
+        if (t != null) {
+            t.mMainView.onResume();
+            if (t.mSubView != null) {
+                t.mSubView.onResume();
+            }
+        }
+    }
+
+    private void putViewInForeground(WebView v, WebViewClient vc,
+                                     WebChromeClient cc) {
+        v.setWebViewClient(vc);
+        v.setWebChromeClient(cc);
+        v.setOnCreateContextMenuListener(mActivity);
+        v.setDownloadListener(mActivity);
+        v.onResume();
+    }
+
+    private void putViewInBackground(WebView v) {
+        // Set an empty callback so that default actions are not triggered.
+        v.setWebViewClient(mEmptyClient);
+        v.setWebChromeClient(mBackgroundChromeClient);
+        v.setOnCreateContextMenuListener(null);
+        // Leave the DownloadManager attached so that downloads can start in
+        // a non-active window. This can happen when going to a site that does
+        // a redirect after a period of time. The user could have switched to
+        // another tab while waiting for the download to start.
+        v.setDownloadListener(mActivity);
+        v.onPause();
+    }
+
     /**
      * If force is true, this method skips the check for newTab == current.
      */
@@ -890,7 +998,6 @@
         mTabQueue.add(newTab);
 
         WebView mainView;
-        WebView subView;
 
         // Display the new current tab
         mCurrentTab = mTabs.indexOf(newTab);
@@ -900,17 +1007,12 @@
             // Same work as in createNewTab() except don't do new Tab()
             newTab.mMainView = mainView = createNewWebView();
         }
-        mainView.setWebViewClient(mActivity.getWebViewClient());
-        mainView.setWebChromeClient(mActivity.getWebChromeClient());
-        mainView.setOnCreateContextMenuListener(mActivity);
-        mainView.setDownloadListener(mActivity);
+        putViewInForeground(mainView, mActivity.getWebViewClient(),
+                            mActivity.getWebChromeClient());
         // Add the subwindow if it exists
         if (newTab.mSubViewContainer != null) {
-            subView = newTab.mSubView;
-            subView.setWebViewClient(newTab.mSubViewClient);
-            subView.setWebChromeClient(newTab.mSubViewChromeClient);
-            subView.setOnCreateContextMenuListener(mActivity);
-            subView.setDownloadListener(mActivity);
+            putViewInForeground(newTab.mSubView, newTab.mSubViewClient,
+                                newTab.mSubViewChromeClient);
         }
         if (needRestore) {
             // Have to finish setCurrentTab work before calling restoreState
@@ -925,23 +1027,9 @@
      * Put the tab in the background using all the empty/background clients.
      */
     private void putTabInBackground(Tab t) {
-        WebView mainView = t.mMainView;
-        // Set an empty callback so that default actions are not triggered.
-        mainView.setWebViewClient(mEmptyClient);
-        mainView.setWebChromeClient(mBackgroundChromeClient);
-        mainView.setOnCreateContextMenuListener(null);
-        // Leave the DownloadManager attached so that downloads can start in
-        // a non-active window. This can happen when going to a site that does
-        // a redirect after a period of time. The user could have switched to
-        // another tab while waiting for the download to start.
-        mainView.setDownloadListener(mActivity);
-        WebView subView = t.mSubView;
-        if (subView != null) {
-            // Set an empty callback so that default actions are not triggered.
-            subView.setWebViewClient(mEmptyClient);
-            subView.setWebChromeClient(mBackgroundChromeClient);
-            subView.setOnCreateContextMenuListener(null);
-            subView.setDownloadListener(mActivity);
+        putViewInBackground(t.mMainView);
+        if (t.mSubView != null) {
+            putViewInBackground(t.mSubView);
         }
     }
 
@@ -1041,6 +1129,11 @@
         data.mScale = w.getScale();
         data.mScrollX = w.getScrollX();
         data.mScrollY = w.getScrollY();
+
+        // Remember the old picture if possible.
+        if (t.mPickerData != null) {
+            data.mPicture = t.mPickerData.mPicture;
+        }
         t.mPickerData = data;
     }
     
diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java
new file mode 100644
index 0000000..f534a03
--- /dev/null
+++ b/src/com/android/browser/TitleBar.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.webkit.WebView;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+public class TitleBar extends LinearLayout {
+    private TextView        mTitle;
+    private TextView        mUrl;
+    private ImageView       mLftButton;
+    private Drawable        mBookmarkDrawable;
+    private View            mRtButton;
+    private View            mDivider;
+    private ProgressBar     mCircularProgress;
+    private ProgressBar     mHorizontalProgress;
+    private ImageView       mFavicon;
+    private ImageView       mLockIcon;
+    private boolean         mInLoad;
+    private boolean         mTitleSet;
+
+    public TitleBar(Context context) {
+        this(context, null);
+    }
+
+    public TitleBar(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        LayoutInflater factory = LayoutInflater.from(context);
+        factory.inflate(R.layout.title_bar, this);
+
+        mTitle = (TextView) findViewById(R.id.title);
+        mUrl = (TextView) findViewById(R.id.url);
+
+        mLftButton = (ImageView) findViewById(R.id.lft_button);
+        mRtButton = findViewById(R.id.rt_button);
+
+        mCircularProgress = (ProgressBar) findViewById(R.id.progress_circular);
+        mHorizontalProgress = (ProgressBar) findViewById(
+                R.id.progress_horizontal);
+        mFavicon = (ImageView) findViewById(R.id.favicon);
+        mLockIcon = (ImageView) findViewById(R.id.lock_icon);
+        mDivider = findViewById(R.id.divider);
+    }
+
+    /* package */ void setBrowserActivity(final BrowserActivity activity) {
+        mLftButton.setOnClickListener(new View.OnClickListener() {
+                    public void onClick(View v) {
+                        if (mInLoad) {
+                            WebView webView = activity.getTopWindow();
+                            if (webView != null) {
+                                webView.stopLoading();
+                            }
+                        } else {
+                            activity.bookmarksOrHistoryPicker(false);
+                        }
+                    }
+                });
+        mRtButton.setOnClickListener(new View.OnClickListener() {
+                    public void onClick(View v) {
+                        WebView webView = activity.getTopWindow();
+                        if (webView != null) {
+                            webView.zoomScrollOut();
+                        }
+                    }
+                });
+        setOnClickListener(new View.OnClickListener() {
+            public void onClick(View v) {
+                activity.onSearchRequested();
+            }
+        });
+    }
+
+    /* package */ void setFavicon(Drawable d) {
+        mFavicon.setImageDrawable(d);
+    }
+
+    /* package */ void setLock(Drawable d) {
+        if (d == null) {
+            mLockIcon.setVisibility(View.GONE);
+        } else {
+            mLockIcon.setImageDrawable(d);
+            mLockIcon.setVisibility(View.VISIBLE);
+        }
+    }
+
+    /* package */ void setProgress(int newProgress) {
+        if (newProgress == mCircularProgress.getMax()) {
+            mCircularProgress.setVisibility(View.GONE);
+            mHorizontalProgress.setVisibility(View.GONE);
+            mDivider.setVisibility(View.VISIBLE);
+            mRtButton.setVisibility(View.VISIBLE);
+            mLftButton.setImageDrawable(mBookmarkDrawable);
+            mInLoad = false;
+            if (!mTitleSet) {
+                mTitle.setText(mUrl.getText());
+                mUrl.setText(null);
+                mTitleSet = true;
+            }
+        } else {
+            mCircularProgress.setProgress(newProgress);
+            mHorizontalProgress.setProgress(newProgress);
+            mCircularProgress.setVisibility(View.VISIBLE);
+            mHorizontalProgress.setVisibility(View.VISIBLE);
+            mDivider.setVisibility(View.GONE);
+            mRtButton.setVisibility(View.GONE);
+            if (mBookmarkDrawable == null) {
+                // The drawable was assigned in the xml file, so it already
+                // exists.  Keep a pointer to it when we switch to the resource
+                // so we can easily switch back.
+                mBookmarkDrawable = mLftButton.getDrawable();
+            }
+            mLftButton.setImageResource(
+                    com.android.internal.R.drawable.ic_menu_stop);
+            mInLoad = true;
+        }
+    }
+
+    /* package */ void setTitleAndUrl(CharSequence title, CharSequence url) {
+        if (url != null) {
+            url = BrowserActivity.buildTitleUrl(url.toString());
+        }
+        if (null == title) {
+            if (mInLoad) {
+                mTitleSet = false;
+                mTitle.setText(R.string.title_bar_loading);
+            } else {
+                // If the page has no title, put the url in the title space
+                // and leave the url blank.
+                mTitle.setText(url);
+                mUrl.setText(null);
+                mTitleSet = true;
+                return;
+            }
+        } else {
+            mTitle.setText(title);
+            mTitleSet = true;
+        }
+        mUrl.setText(url);
+    }
+
+    /* package */ void setToTabPicker() {
+        mTitle.setText(R.string.tab_picker_title);
+        setFavicon(null);
+        setLock(null);
+        mCircularProgress.setVisibility(View.GONE);
+        mHorizontalProgress.setVisibility(View.GONE);
+    }
+}
diff --git a/src/com/android/browser/WebsiteSettingsActivity.java b/src/com/android/browser/WebsiteSettingsActivity.java
new file mode 100644
index 0000000..c9042cd
--- /dev/null
+++ b/src/com/android/browser/WebsiteSettingsActivity.java
@@ -0,0 +1,292 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import android.app.AlertDialog;
+import android.app.ListActivity;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.Browser;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.webkit.WebIconDatabase;
+import android.webkit.WebStorage;
+import android.widget.ArrayAdapter;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.Vector;
+
+/**
+ * Manage the settings for an origin.
+ * We use it to keep track of the HTML5 settings, i.e. database (webstorage).
+ */
+public class WebsiteSettingsActivity extends ListActivity {
+
+    private String LOGTAG = "WebsiteSettingsActivity";
+    private static String sMBStored = null;
+    private SiteAdapter mAdapter = null;
+
+    class Site {
+        private String mOrigin;
+        private String mTitle;
+        private Bitmap mIcon;
+
+        public Site(String origin, String title, Bitmap icon) {
+            mOrigin = origin;
+            mTitle = title;
+            mIcon = icon;
+        }
+
+        public String getOrigin() {
+            return mOrigin;
+        }
+
+        public void setTitle(String title) {
+            mTitle = title;
+        }
+
+        public String getTitle() {
+            return mTitle;
+        }
+
+        public void setIcon(Bitmap icon) {
+            mIcon = icon;
+        }
+
+        public Bitmap getIcon() {
+            return mIcon;
+        }
+    }
+
+    class SiteAdapter extends ArrayAdapter<Site>
+            implements AdapterView.OnItemClickListener {
+        private int mResource;
+        private LayoutInflater mInflater;
+        private Bitmap mDefaultIcon;
+        private Site mCurrentSite;
+        private final static int STORED_DATA = 0;
+
+        public SiteAdapter(Context context, int rsc) {
+            super(context, rsc);
+            mResource = rsc;
+            mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+            mDefaultIcon = BitmapFactory.decodeResource(getResources(),
+                    R.drawable.ic_launcher_shortcut_browser_bookmark);
+            populateOrigins();
+        }
+
+        public void populateOrigins() {
+            clear();
+
+            // Get the list of origins we want to display
+            HashMap<String, Site> uris = new HashMap<String, Site>();
+            Set origins = WebStorage.getInstance().getOrigins();
+            if (origins != null) {
+                Iterator<String> iter = origins.iterator();
+                while (iter.hasNext()) {
+                    String origin = iter.next();
+                    Site site = new Site(origin, origin, null);
+                    uris.put(Uri.parse(origin).getHost(), site);
+                }
+            }
+
+            // Check the bookmark db -- if one of our origin matches,
+            // we set its title and favicon
+            Cursor c = getContext().getContentResolver().query(Browser.BOOKMARKS_URI,
+                    new String[] { Browser.BookmarkColumns.URL, Browser.BookmarkColumns.TITLE,
+                    Browser.BookmarkColumns.FAVICON }, "bookmark = 1", null, null);
+
+            if ((c != null) && c.moveToFirst()) {
+                int urlIndex = c.getColumnIndex(Browser.BookmarkColumns.URL);
+                int titleIndex = c.getColumnIndex(Browser.BookmarkColumns.TITLE);
+                int faviconIndex = c.getColumnIndex(Browser.BookmarkColumns.FAVICON);
+                do {
+                    String url = c.getString(urlIndex);
+                    String host = Uri.parse(url).getHost();
+                    if (uris.containsKey(host)) {
+                        String title = c.getString(titleIndex);
+                        Site site = uris.get(host);
+                        site.setTitle(title);
+                        byte[] data = c.getBlob(faviconIndex);
+                        if (data != null) {
+                            Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
+                            if (bmp != null) {
+                                site.setIcon(bmp);
+                            }
+                        }
+                    }
+                } while (c.moveToNext());
+            }
+
+            // We can now simply populate our array with Site instances
+            Set keys = uris.keySet();
+            Iterator iter = keys.iterator();
+            while (iter.hasNext()) {
+                String origin = (String) iter.next();
+                Site site = uris.get(origin);
+                add(site);
+            }
+
+            if (getCount() == 0) {
+                finish(); // we close the screen
+            }
+        }
+
+        public int getCount() {
+            if (mCurrentSite == null) {
+                return super.getCount();
+            }
+            return 1; // db view
+        }
+
+        public String sizeValueToString(long value) {
+            float mb = (float) value / (1024.0F * 1024.0F);
+            int val = (int) (mb * 10);
+            float ret = (float) (val / 10.0F);
+            if (ret <= 0) {
+                return "0";
+            }
+            return String.valueOf(ret);
+        }
+
+        /*
+         * If we receive the back event and are displaying
+         * site's settings, we want to go back to the main
+         * list view. If not, we just do nothing (see
+         * dispatchKeyEvent() below).
+         */
+        public boolean backKeyPressed() {
+            if (mCurrentSite != null) {
+                mCurrentSite = null;
+                populateOrigins();
+                notifyDataSetChanged();
+                return true;
+            }
+            return false;
+        }
+
+        public View getView(int position, View convertView, ViewGroup parent) {
+            View view;
+            TextView title;
+            TextView subtitle;
+            ImageView icon;
+
+            if (convertView == null) {
+                view = mInflater.inflate(mResource, parent, false);
+            } else {
+                view = convertView;
+            }
+
+            title = (TextView) view.findViewById(R.id.title);
+            subtitle = (TextView) view.findViewById(R.id.subtitle);
+            icon = (ImageView) view.findViewById(R.id.icon);
+
+            if (mCurrentSite == null) {
+                Site site = getItem(position);
+                title.setText(site.getTitle());
+                subtitle.setText(site.getOrigin());
+                icon.setVisibility(View.VISIBLE);
+                Bitmap bmp = site.getIcon();
+                if (bmp == null) {
+                    bmp = mDefaultIcon;
+                }
+                icon.setImageBitmap(bmp);
+                // We set the site as the view's tag,
+                // so that we can get it in onItemClick()
+                view.setTag(site);
+            } else {
+                icon.setVisibility(View.GONE);
+                if (position == STORED_DATA) {
+                    String origin = mCurrentSite.getOrigin();
+                    long usageValue = WebStorage.getInstance().getUsageForOrigin(origin);
+                    String usage = sizeValueToString(usageValue) + " " + sMBStored;
+
+                    title.setText(R.string.webstorage_clear_data_title);
+                    subtitle.setText(usage);
+                }
+            }
+
+            return view;
+        }
+
+        public void onItemClick(AdapterView<?> parent,
+                                View view,
+                                int position,
+                                long id) {
+            if (mCurrentSite != null) {
+                if (position == STORED_DATA) {
+                    new AlertDialog.Builder(getContext())
+                        .setTitle(R.string.webstorage_clear_data_dialog_title)
+                        .setMessage(R.string.webstorage_clear_data_dialog_message)
+                        .setPositiveButton(R.string.webstorage_clear_data_dialog_ok_button,
+                                           new AlertDialog.OnClickListener() {
+                            public void onClick(DialogInterface dlg, int which) {
+                                WebStorage.getInstance().deleteOrigin(mCurrentSite.getOrigin());
+                                mCurrentSite = null;
+                                populateOrigins();
+                                notifyDataSetChanged();
+                            }})
+                        .setNegativeButton(R.string.webstorage_clear_data_dialog_cancel_button, null)
+                        .setIcon(android.R.drawable.ic_dialog_alert)
+                        .show();
+                }
+            } else {
+                mCurrentSite = (Site) view.getTag();
+                notifyDataSetChanged();
+            }
+        }
+    }
+
+    /**
+     * Intercepts the back key to immediately notify
+     * NativeDialog that we are done.
+     */
+    public boolean dispatchKeyEvent(KeyEvent event) {
+        if ((event.getKeyCode() == KeyEvent.KEYCODE_BACK)
+            && (event.getAction() == KeyEvent.ACTION_DOWN)) {
+            if ((mAdapter != null) && (mAdapter.backKeyPressed())){
+                return true; // event consumed
+            }
+        }
+        return super.dispatchKeyEvent(event);
+    }
+
+    @Override
+    protected void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        if (sMBStored == null) {
+            sMBStored = getString(R.string.webstorage_origin_summary_mb_stored);
+        }
+        mAdapter = new SiteAdapter(this, R.layout.application);
+        setListAdapter(mAdapter);
+        getListView().setOnItemClickListener(mAdapter);
+    }
+}
diff --git a/tests/Android.mk b/tests/Android.mk
new file mode 100644
index 0000000..f86942d
--- /dev/null
+++ b/tests/Android.mk
@@ -0,0 +1,37 @@
+# Copyright 2008, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+# We only want this apk build for tests.
+LOCAL_MODULE_TAGS := tests
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+# Include all test java files.
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+# Notice that we don't have to include the src files of Browser because, by
+# running the tests using an instrumentation targeting Browser, we
+# automatically get all of its classes loaded into our environment.
+
+LOCAL_PACKAGE_NAME := BrowserTests
+
+LOCAL_INSTRUMENTATION_FOR := Browser
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_PACKAGE)
+
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
new file mode 100644
index 0000000..51715a9
--- /dev/null
+++ b/tests/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<!-- package name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.browser.tests">
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    This declares that this app uses the instrumentation test runner targeting
+    the package of com.android.email.  To run the tests use the command:
+    "adb shell am instrument -w com.android.browser.tests/android.test.InstrumentationTestRunner"
+    -->
+    <instrumentation android:name="android.test.InstrumentationTestRunner"
+                     android:targetPackage="com.android.browser"
+                     android:label="Tests for Browser."/>
+
+</manifest>
diff --git a/tests/src/com/android/browser/BrowserSettingsUnitTests.java b/tests/src/com/android/browser/BrowserSettingsUnitTests.java
new file mode 100644
index 0000000..fdaa5c8
--- /dev/null
+++ b/tests/src/com/android/browser/BrowserSettingsUnitTests.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
+
+/**
+ * This is a series of unit tests for the BrowserSettings class.
+ *
+ */
+@MediumTest
+public class BrowserSettingsUnitTests extends AndroidTestCase {
+
+    /**
+     * Test the application caches max size calculator.
+     */
+    public void testCalculateAppCacheMaxSize() {
+        long fileSystemSize = 78643200;  // 75 MB
+        long freeSpaceSize = 25165824;  // 24 MB
+        long maxSize = BrowserSettings.calculateAppCacheMaxSize(fileSystemSize, freeSpaceSize);
+        assertEquals(6815744, maxSize);  // 6.5MB
+
+        fileSystemSize = 78643200;  // 75 MB
+        freeSpaceSize = 60 * 1024 * 1024;  // 60MB
+        maxSize = BrowserSettings.calculateAppCacheMaxSize(fileSystemSize, freeSpaceSize);
+        assertEquals(9961472, maxSize);  // 9.5MB
+
+        fileSystemSize = 8589934592L;  // 8 GB
+        freeSpaceSize = 4294967296L;  // 4 GB
+        maxSize = BrowserSettings.calculateAppCacheMaxSize(fileSystemSize, freeSpaceSize);
+        assertEquals(268959744L, maxSize);  // 256.5 MB
+
+        fileSystemSize = -14;
+        freeSpaceSize = 21;
+        maxSize = BrowserSettings.calculateAppCacheMaxSize(fileSystemSize, freeSpaceSize);
+        assertEquals(0, maxSize);
+
+        fileSystemSize = 100;
+        freeSpaceSize = 101;
+        maxSize = BrowserSettings.calculateAppCacheMaxSize(fileSystemSize, freeSpaceSize);
+        assertEquals(0, maxSize);
+
+        fileSystemSize = 3774873; // ~4.2 MB
+        freeSpaceSize = 2560000;  // ~2.4 MB
+        maxSize = BrowserSettings.calculateAppCacheMaxSize(fileSystemSize, freeSpaceSize);
+        assertEquals(1048576, maxSize);  // 1 MB
+
+        fileSystemSize = 4404019; // ~4.2 MB
+        freeSpaceSize = 3774873;  // ~3.6 MB
+        maxSize = BrowserSettings.calculateAppCacheMaxSize(fileSystemSize, freeSpaceSize);
+        assertEquals(1048576, maxSize);  // 1 MB
+
+        fileSystemSize = 4404019; // ~4.2 MB
+        freeSpaceSize = 4404019;  // ~4.2 MB
+        maxSize = BrowserSettings.calculateAppCacheMaxSize(fileSystemSize, freeSpaceSize);
+        assertEquals(1572864, maxSize);  // 1.5 MB
+
+        fileSystemSize = 1048576; // 1 MB
+        freeSpaceSize = 1048575;  // 1 MB - 1 byte
+        maxSize = BrowserSettings.calculateAppCacheMaxSize(fileSystemSize, freeSpaceSize);
+        assertEquals(0, maxSize);
+
+        fileSystemSize = 1048576; // 1 MB
+        freeSpaceSize = 1048576;  // 1 MB
+        maxSize = BrowserSettings.calculateAppCacheMaxSize(fileSystemSize, freeSpaceSize);
+        assertEquals(524288, maxSize);  // 512KB
+
+        fileSystemSize = 3774873; // ~3.6 MB
+        freeSpaceSize = 2097151;  // 2 MB - 1 byte
+        maxSize = BrowserSettings.calculateAppCacheMaxSize(fileSystemSize, freeSpaceSize);
+        assertEquals(524288, maxSize);  // 512KB
+    }
+}
