diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c0797e8..bf87446 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -157,21 +157,6 @@
                   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">
-        </activity>
-
         <activity android:name="BookmarkSearch"
                   android:label="@string/bookmarks_search"
                   android:stateNotNeeded="true"
@@ -185,14 +170,6 @@
                     android:resource="@xml/bookmarks_searchable" />
         </activity>
 
-        <service android:name="GearsDialogService"
-                 android:process=":dialog"
-                 android:exported="false">
-            <intent-filter>
-                <action android:name="com.android.browser.IGearsDialogService" />
-            </intent-filter>
-        </service>
-
         <activity android:name="AddBookmarkPage" android:label="Save bookmark" android:theme="@android:style/Theme.Dialog"
                   android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden">
             <intent-filter>
diff --git a/assets/plugins/gears-0.5.17.0/dummy b/assets/plugins/gears-0.5.17.0/dummy
deleted file mode 100644
index 50f9ab9..0000000
--- a/assets/plugins/gears-0.5.17.0/dummy
+++ /dev/null
@@ -1 +0,0 @@
-This file is used to ensure this subdirectory is created.
diff --git a/assets/plugins/gears.so b/assets/plugins/gears.so
deleted file mode 100644
index 56b3386..0000000
--- a/assets/plugins/gears.so
+++ /dev/null
Binary files differ
diff --git a/res/drawable/gears.png b/res/drawable/gears.png
deleted file mode 100644
index bd0fb08..0000000
--- a/res/drawable/gears.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/gears_button.xml b/res/drawable/gears_button.xml
deleted file mode 100755
index ec8cebb..0000000
--- a/res/drawable/gears_button.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * 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.
-*/
--->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-  <item android:state_focused="true" android:state_pressed="false"
-    android:state_enabled="true"
-    android:drawable="@drawable/gears_button_selected" />
-  <item android:state_enabled="true" android:state_pressed="true"
-    android:drawable="@drawable/gears_button_pressed" />
-  <item android:state_enabled="true" android:state_focused="false"
-    android:state_pressed="false"
-    android:drawable="@drawable/gears_button_default" />
-  <item android:drawable="@drawable/gears_button_default" />
-</selector>
diff --git a/res/drawable/gears_button_default.9.png b/res/drawable/gears_button_default.9.png
deleted file mode 100644
index 3b1d065..0000000
--- a/res/drawable/gears_button_default.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/gears_button_pressed.9.png b/res/drawable/gears_button_pressed.9.png
deleted file mode 100644
index 7b56794..0000000
--- a/res/drawable/gears_button_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/gears_button_selected.9.png b/res/drawable/gears_button_selected.9.png
deleted file mode 100644
index e1d5608..0000000
--- a/res/drawable/gears_button_selected.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/gears_icon_32x32.png b/res/drawable/gears_icon_32x32.png
deleted file mode 100644
index f703f7f..0000000
--- a/res/drawable/gears_icon_32x32.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/gears_icon_48x48.png b/res/drawable/gears_icon_48x48.png
deleted file mode 100644
index da5493b..0000000
--- a/res/drawable/gears_icon_48x48.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/gears_local_data.png b/res/drawable/gears_local_data.png
deleted file mode 100644
index 4c43456..0000000
--- a/res/drawable/gears_local_data.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/gears_location_data.png b/res/drawable/gears_location_data.png
deleted file mode 100644
index f69ad75..0000000
--- a/res/drawable/gears_location_data.png
+++ /dev/null
Binary files differ
diff --git a/res/layout/gears_dialog.xml b/res/layout/gears_dialog.xml
deleted file mode 100644
index 57d4f0b..0000000
--- a/res/layout/gears_dialog.xml
+++ /dev/null
@@ -1,175 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * 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.
- */
--->
-
-<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="vertical"
-    android:padding="10dip">
-
-    <LinearLayout
-      android:layout_width="fill_parent"
-      android:layout_height="wrap_content"
-      android:orientation="vertical">
-
-      <LinearLayout
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal">
-
-        <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"/>
-
-        <TextView
-          android:id="@+id/dialog_message"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:visibility="gone"
-          android:gravity="center_vertical"
-          android:textSize="20dip"
-          android:textColor="@color/white"/>
-
-      </LinearLayout>
-
-    </LinearLayout>
-
-  </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>
-
-  <LinearLayout
-    android:id="@+id/panel_content"
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-    android:padding="0dip"
-    android:layout_weight="1" />
-
-  <RelativeLayout
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-    android:paddingLeft="10dip"
-    android:paddingRight="10dip"
-    android:paddingTop="0dip">
-
-    <LinearLayout
-      android:orientation="vertical"
-      android:layout_width="fill_parent"
-      android:layout_height="wrap_content">
-
-      <TextView
-        android:id="@+id/selection"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:textSize="13dip"
-        android:gravity="right"
-        android:visibility="gone"
-        android:textColor="@color/white"/>
-
-    </LinearLayout>
-
-  </RelativeLayout>
-
-  <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="96px"
-      android:layout_height="48px"
-      android:layout_gravity="left"
-      android:layout_weight="1"
-      android:maxLines="2"
-      android:textSize="13dip"/>
-
-    <Button
-      android:id="@+id/button_alwaysdeny"
-      android:layout_width="96px"
-      android:layout_height="48px"
-      android:layout_gravity="left"
-      android:layout_weight="1"
-      android:maxLines="2"
-      android:textSize="13dip"/>
-
-    <Button
-      android:id="@+id/button_deny"
-      android:layout_width="96px"
-      android:layout_height="48px"
-      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/gears_dialog_permission.xml b/res/layout/gears_dialog_permission.xml
deleted file mode 100644
index 01914e2..0000000
--- a/res/layout/gears_dialog_permission.xml
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * 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.
- */
--->
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-  android:layout_width="fill_parent"
-  android:layout_height="wrap_content"
-  android:paddingBottom="10dip">
-
-  <LinearLayout
-    android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:paddingTop="10dip"
-    android:paddingLeft="10dip"
-    android:paddingRight="10dip"
-    android:layout_height="wrap_content">
-
-    <LinearLayout
-      android:layout_width="fill_parent"
-      android:layout_height="wrap_content"
-      android:orientation="horizontal">
-
-      <ImageView
-        android:id="@+id/origin_icon"
-        android:padding="10dip"
-        android:layout_centerHorizontal="true"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:visibility="gone"
-        android:adjustViewBounds="true"
-        android:src="@drawable/gears"/>
-
-      <LinearLayout
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:padding="4dip"
-        android:orientation="vertical">
-
-        <TextView
-          android:id="@+id/origin_title"
-          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/origin_subtitle"
-          android:layout_width="fill_parent"
-          android:layout_height="wrap_content"
-          android:visibility="gone"
-          android:gravity="left"
-          android:textSize="13dip"
-          android:textColor="@color/white"/>
-
-        <TextView
-          android:id="@+id/origin_message"
-          android:layout_width="fill_parent"
-          android:layout_height="wrap_content"
-          android:visibility="gone"
-          android:paddingTop="10dip"
-          android:gravity="left"
-          android:textSize="13dip"
-          android:textColor="@color/white"/>
-
-      </LinearLayout>
-
-    </LinearLayout>
-
-    <TextView
-      android:id="@+id/privacy_policy_label"
-      android:layout_width="fill_parent"
-      android:layout_height="wrap_content"
-      android:paddingTop="10dip"
-      android:gravity="center_horizontal"
-      android:textSize="13dip"
-      android:textStyle="italic"
-      android:textColor="@color/white"
-      android:visibility="gone"
-      android:text="@string/privacy_policy" />
-
-    <TextView
-      android:id="@+id/permission_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>
diff --git a/res/layout/gears_dialog_settings.xml b/res/layout/gears_dialog_settings.xml
deleted file mode 100644
index a9026db..0000000
--- a/res/layout/gears_dialog_settings.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * 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.
- */
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  android:orientation="vertical"
-  android:layout_width="wrap_content"
-  android:layout_height="wrap_content">
-
-  <LinearLayout
-    android:orientation="vertical"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:background="@color/gray"
-    android:padding="1px">
-
-    <LinearLayout
-      android:orientation="vertical"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:background="@color/white">
-
-      <ListView android:id="@+id/sites_list"
-        android:padding="4dip"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        style="@android:style/Widget.ListView.White" />
-
-    </LinearLayout>
-
-  </LinearLayout>
-
-  <TextView
-    android:id="@+id/gears_version"
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-    android:paddingTop="10dip"
-    android:gravity="center_horizontal"
-    android:textSize="13dip"
-    android:textStyle="italic"
-    android:textColor="@color/black" />
-
-</LinearLayout>
diff --git a/res/layout/gears_dialog_settings_row.xml b/res/layout/gears_dialog_settings_row.xml
deleted file mode 100644
index 11d757a..0000000
--- a/res/layout/gears_dialog_settings_row.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * 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.
- */
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  android:orientation="vertical"
-  android:layout_width="fill_parent"
-  android:layout_height="wrap_content"
-  android:textSize="13dip"
-  android:background="@color/white"
-  android:textColor="@color/black">
-
-  <LinearLayout
-    android:orientation="horizontal"
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-    android:padding="4dip">
-
-    <TextView
-      android:id="@+id/origin_name"
-      android:layout_width="0dip"
-      android:layout_height="wrap_content"
-      android:layout_weight="1"
-      android:textColor="@color/black"
-      android:textStyle="bold"/>
-
-    <Button
-      android:id="@+id/origin_remove"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      style="@style/gears_button"
-      android:text="@string/remove"/>
-
-  </LinearLayout>
-
-  <TableLayout
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-    android:stretchColumns="0"
-    android:shrinkColumns="0">
-
-    <TableRow
-      android:id="@+id/local_storage_choice"
-      android:visibility="gone">
-
-      <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="fill_parent"
-        android:textColor="@color/black"
-        android:gravity="center_vertical"
-        android:text="@string/local_storage"/>
-
-      <RadioGroup
-        android:orientation="horizontal"
-        android:layout_width="wrap_content"
-        android:layout_height="fill_parent">
-        <RadioButton
-          android:id="@+id/local_storage_allowed"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:textColor="@color/black"
-          android:textSize="13dip"
-          android:text="@string/allowed"/>
-
-        <RadioButton
-          android:id="@+id/local_storage_denied"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:textColor="@color/black"
-          android:textSize="13dip"
-          android:text="@string/denied"/>
-      </RadioGroup>
-
-    </TableRow>
-
-    <TableRow
-      android:id="@+id/location_data_choice"
-      android:visibility="gone">
-
-      <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="fill_parent"
-        android:textColor="@color/black"
-        android:layout_gravity="center_vertical"
-        android:text="@string/location"/>
-
-      <RadioGroup
-        android:orientation="horizontal"
-        android:layout_width="wrap_content"
-        android:layout_height="fill_parent">
-        <RadioButton
-          android:id="@+id/location_data_allowed"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:textColor="@color/black"
-          android:textSize="13dip"
-          android:text="@string/allowed"/>
-
-        <RadioButton
-          android:id="@+id/location_data_denied"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:textColor="@color/black"
-          android:textSize="13dip"
-          android:text="@string/denied"/>
-      </RadioGroup>
-
-    </TableRow>
-
-  </TableLayout>
-
-</LinearLayout>
diff --git a/res/layout/gears_settings.xml b/res/layout/gears_settings.xml
deleted file mode 100644
index e3a4cbe..0000000
--- a/res/layout/gears_settings.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * 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.
- */
--->
-
-<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">
-
-  <ListView android:id="@+id/sites_list"
-    android:padding="4dip"
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content" />
-
-  <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>
-
-</LinearLayout>
diff --git a/res/layout/gears_settings_row.xml b/res/layout/gears_settings_row.xml
deleted file mode 100644
index 6a1e851..0000000
--- a/res/layout/gears_settings_row.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * 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.
- */
--->
-
-<com.android.internal.view.menu.ListMenuItemView
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:layout_width="fill_parent"
-  android:layout_height="?android:attr/listPreferredItemHeight">
-
-  <RelativeLayout
-    android:layout_width="0dip"
-    android:layout_weight="1"
-    android:layout_height="wrap_content"
-    android:layout_gravity="center_vertical"
-    android:layout_marginLeft="6dip"
-    android:layout_marginRight="6dip"
-    android:duplicateParentState="true">
-
-    <TextView
-      android:id="@+id/title"
-      android:layout_width="fill_parent"
-      android:layout_height="wrap_content"
-      android:layout_alignParentTop="true"
-      android:layout_alignParentLeft="true"
-      android:textAppearance="?android:attr/textAppearanceMedium"
-      android:singleLine="true"
-      android:duplicateParentState="true"
-      android:ellipsize="start"
-      android:fadingEdge="none"/>
-
-    <TextView
-      android:id="@+id/subtitle"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_below="@id/title"
-      android:layout_alignParentLeft="true"
-      android:textAppearance="?android:attr/textAppearanceSmall"
-      android:singleLine="false"
-      android:duplicateParentState="true"/>
-
-    <TextView
-      android:id="@+id/info"
-      android:visibility="gone"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_below="@id/subtitle"
-      android:textAppearance="?android:attr/textAppearanceMedium"
-      android:singleLine="true"
-      android:layout_centerHorizontal="true"
-      android:duplicateParentState="true"
-      android:ellipsize="marquee"
-      android:fadingEdge="horizontal"/>
-
-  </RelativeLayout>
-
-  <LinearLayout
-    android:layout_width="wrap_content"
-    android:layout_height="fill_parent"
-    android:paddingLeft="10dip"
-    android:gravity="center_vertical"
-    android:orientation="horizontal">
-
-    <ImageView
-      android:id="@+id/icon"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:visibility="gone"
-      android:src="@drawable/ic_dialog_menu_generic" />
-
-    <CheckBox
-      android:id="@+id/checkbox"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_alignParentLeft="true"
-      android:drawablePadding="10dip"
-      android:focusable="false"
-      android:clickable="false"
-      android:duplicateParentState="true"
-      android:visibility="gone"
-      android:textSize="16dip"/>
-
-  </LinearLayout>
-
-</com.android.internal.view.menu.ListMenuItemView>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 0bea424..0871700 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -167,12 +167,6 @@
   </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>
-    <string name="pref_extras_gears_settings">"Nastavení služby Gears"</string>
-    <string name="pref_plugin_installed">"Seznam pluginů"</string>
-    <string name="pref_plugin_installed_empty_list">"Nejsou nainstalované žádné pluginy."</string>
-    <string name="pref_extras_gears_settings_summary">"Aplikace, které rozšiřují funkce prohlížeče"</string>
     <string name="pref_extras_reset_default">"Obnovit výchozí"</string>
     <string name="pref_extras_reset_default_summary">"Vymazat všechna data prohlížeče a obnovit všechna nastavení na výchozí hodnoty"</string>
     <string name="pref_extras_reset_default_dlg">"Všechna data prohlížeče budou vymazána a bude použito výchozí nastavení."</string>
@@ -248,51 +242,5 @@
     <string name="activity_instrumentation_test_runner">"Testovací verze 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>
-    <string name="location_message">"Tyto stránky by chtěly přistupovat k vaší poloze."</string>
-    <string name="shortcut_prompt">"Vytvořit zástupce"</string>
-    <string name="shortcut_message">"Tento web chce vytvořit zástupce této stránky na domovské obrazovce."</string>
-    <string name="settings_message">"Níže uvedená tabulka zobrazuje oprávnění, která jste udělili jednotlivým webům, které se pokusily použít službu Gears."</string>
-    <string name="filepicker_message">"Výběr souboru"</string>
-    <string name="image_message">"Zvolený obrázek"</string>
-    <string name="settings_title">"Nastavení služby Gears"</string>
-    <string name="privacy_policy">"Chcete-li zjistit, jak bude vaše poloha využita, přečtěte si zásady ochrany osobních údajů těchto stránek."</string>
-    <string name="settings_storage_title">"Povolit místní úložiště"</string>
-    <string name="settings_storage_subtitle_on">"Tyto stránky mohou ukládat informace do vašeho telefonu"</string>
-    <string name="settings_storage_subtitle_off">"Tento web nemůže ukládat informace do vašeho telefonu"</string>
-    <string name="settings_location_title">"Povolit zjištění polohy"</string>
-    <string name="settings_location_subtitle_on">"Tyto stránky mohou zjistit vaši aktuální polohu"</string>
-    <string name="settings_location_subtitle_off">"Tyto stránky nemohou zjistit vaši aktuální polohu"</string>
-    <string name="settings_remove_site">"Odstranit tento web ze služby Gears"</string>
-    <string name="settings_empty">"Nejsou nastavena žádná oprávnění"</string>
-    <string name="settings_confirmation_remove_title">"Odebrat tyto stránky"</string>
-    <string name="settings_confirmation_remove">"Všechna oprávnění a všechna data uložená do telefonu těmito stránkami budou vymazána."</string>
-    <string name="storage_notification">"Tyto stránky budou ukládat informace do tohoto telefonu."\n" Toto nastavení můžete změnit zde:"\n" Nastavení -&gt; Nastavení služby Gears"</string>
-    <string name="storage_notification_alwaysdeny">"Tyto stránky nebudou nikdy ukládat informace do tohoto telefonu."\n" Toto nastavení můžete změnit zde:"\n" Nastavení -&gt; Nastavení služby Gears"</string>
-    <string name="location_notification">"Tyto stránky mohou přistupovat k vaší aktuální poloze."\n" Toto nastavení můžete změnit zde:"\n" Nastavení -&gt; Nastavení služby Gears"</string>
-    <string name="location_notification_alwaysdeny">"Tyto stránky nebudou přistupovat k vaší aktuální poloze."\n" Toto nastavení můžete změnit zde:"\n" Nastavení -&gt; Nastavení služby Gears"</string>
-    <string name="shortcut_notification">"Zástupce vytvořen"</string>
-    <string name="permission_button_alwaysdeny">"Nepovolit nikdy"</string>
-    <string name="permission_button_allow">"OK"</string>
-    <string name="permission_button_deny">"Zrušit"</string>
-    <string name="shortcut_button_alwaysdeny">"Nepovolit nikdy"</string>
-    <string name="shortcut_button_allow">"OK"</string>
-    <string name="shortcut_button_deny">"Zrušit"</string>
-    <string name="settings_button_allow">"Použít"</string>
-    <string name="settings_button_deny">"Zrušit"</string>
-    <string name="filepicker_button_allow">"OK"</string>
-    <string name="filepicker_button_deny">"Zrušit"</string>
-    <string name="filepicker_path">"cesta:"</string>
-    <string name="filepicker_no_files_selected">"Nebyly vybrány žádné soubory"</string>
-    <string name="filepicker_one_file_selected">"Byl vybrán jeden soubor"</string>
-    <string name="filepicker_some_files_selected">"souborů bylo vybráno"</string>
-    <string name="remove">"Odstranit"</string>
-    <string name="local_storage">"Místní úložiště"</string>
-    <string name="allowed">"Povoleno"</string>
-    <string name="denied">"Odepřeno"</string>
-    <string name="unrecognized_dialog_message">"Nerozpoznaný typ dialogu"</string>
-    <string name="default_button">"OK"</string>
     <string name="zoom_overview_button_text">"Přehled"</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index bbf91ec..291b7b7 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -168,12 +168,6 @@
     <!-- 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>
@@ -252,51 +246,5 @@
     <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 67f10e3..cf56d18 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -167,12 +167,6 @@
   </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>
-    <string name="pref_extras_gears_settings">"Gears-Einstellungen"</string>
-    <string name="pref_plugin_installed">"Liste der Plug-Ins"</string>
-    <string name="pref_plugin_installed_empty_list">"Keine Plug-Ins installiert."</string>
-    <string name="pref_extras_gears_settings_summary">"Vom Browser nicht unterstützte Anwendungen"</string>
     <string name="pref_extras_reset_default">"Auf Standard zurücksetzen"</string>
     <string name="pref_extras_reset_default_summary">"Alle Browserdaten löschen und Einstellungen auf Standard zurücksetzen"</string>
     <string name="pref_extras_reset_default_dlg">"Alle Browserdaten werden gelöscht. Alle Einstellungen werden auf die Standardeinstellung zurückgesetzt."</string>
@@ -248,51 +242,5 @@
     <string name="activity_instrumentation_test_runner">"Browser Test Runner"</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>
-    <string name="location_message">"Diese Website möchte auf Ihren Standort zugreifen."</string>
-    <string name="shortcut_prompt">"Verknüpfung erstellen"</string>
-    <string name="shortcut_message">"Diese Website möchte eine Verknüpfung zu diese Seite auf Ihrem Startbildschirm erstellen."</string>
-    <string name="settings_message">"Die folgende Tabelle zeigt die Berechtigungen, die Sie jeder Website erteilt haben, die versucht hat, Gears zu verwenden."</string>
-    <string name="filepicker_message">"File Picker"</string>
-    <string name="image_message">"Gewähltes Bild"</string>
-    <string name="settings_title">"Gears-Einstellungen"</string>
-    <string name="privacy_policy">"Lesen Sie die Datenschutzbestimmungen dieser Website, um herauszufinden, wie Ihr Ort verwendet wird."</string>
-    <string name="settings_storage_title">"Lokalen Speicher zulassen"</string>
-    <string name="settings_storage_subtitle_on">"Diese Website kann Informationen auf Ihrem Telefon speichern."</string>
-    <string name="settings_storage_subtitle_off">"Diese Website kann keine Informationen auf Ihrem Telefon speichern."</string>
-    <string name="settings_location_title">"Standorterkennung zulassen"</string>
-    <string name="settings_location_subtitle_on">"Diese Website kann Ihren aktuellen Standort erkennen."</string>
-    <string name="settings_location_subtitle_off">"Diese Website kann Ihren aktuellen Standort nicht erkennen."</string>
-    <string name="settings_remove_site">"Diese Website aus Gears entfernen"</string>
-    <string name="settings_empty">"Keine Berechtigungen festgelegt"</string>
-    <string name="settings_confirmation_remove_title">"Diese Website entfernen"</string>
-    <string name="settings_confirmation_remove">"Alle Berechtigungen sowie alle von der Website auf Ihrem Telefon gespeicherten Daten werden gelöscht."</string>
-    <string name="storage_notification">"Diese Website speichert Informationen auf diesem Telefon."\n" Ändern Sie diese Einstellung unter"\n" Einstellungen -&gt; Gears-Einstellungen."</string>
-    <string name="storage_notification_alwaysdeny">"Diese Website speichert nie Informationen auf diesem Telefon."\n" Ändern Sie diese Einstellung unter"\n" Einstellungen -&gt; Gears-Einstellungen."</string>
-    <string name="location_notification">"Diese Website hat Zugriff auf Ihren aktuellen Standort."\n" Ändern Sie diese Einstellung unter"\n" Einstellungen -&gt; Gears-Einstellungen."</string>
-    <string name="location_notification_alwaysdeny">"Diese Website hat keinen Zugriff auf Ihren aktuellen Standort."\n" Ändern Sie diese Einstellung unter"\n" Einstellungen -&gt; Gears-Einstellungen."</string>
-    <string name="shortcut_notification">"Verknüpfung erstellt"</string>
-    <string name="permission_button_alwaysdeny">"Nie zulassen"</string>
-    <string name="permission_button_allow">"OK"</string>
-    <string name="permission_button_deny">"Abbrechen"</string>
-    <string name="shortcut_button_alwaysdeny">"Nie zulassen"</string>
-    <string name="shortcut_button_allow">"OK"</string>
-    <string name="shortcut_button_deny">"Abbrechen"</string>
-    <string name="settings_button_allow">"Anwenden"</string>
-    <string name="settings_button_deny">"Abbrechen"</string>
-    <string name="filepicker_button_allow">"OK"</string>
-    <string name="filepicker_button_deny">"Abbrechen"</string>
-    <string name="filepicker_path">"Pfad:"</string>
-    <string name="filepicker_no_files_selected">"Keine Dateien ausgewählt"</string>
-    <string name="filepicker_one_file_selected">"Eine Datei ausgewählt"</string>
-    <string name="filepicker_some_files_selected">"Dateien ausgewählt"</string>
-    <string name="remove">"Entfernen"</string>
-    <string name="local_storage">"Lokaler Speicher"</string>
-    <string name="allowed">"Zugelassen"</string>
-    <string name="denied">"Abgelehnt"</string>
-    <string name="unrecognized_dialog_message">"Unbekannter Dialogtyp"</string>
-    <string name="default_button">"OK"</string>
     <string name="zoom_overview_button_text">"Übersicht"</string>
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 781d20c..7ca87c4 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -169,12 +169,6 @@
     <!-- 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>
@@ -253,51 +247,5 @@
     <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 fd47725..fa61f98 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -168,12 +168,6 @@
     <!-- 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>
-    <string name="pref_extras_gears_settings">"Configuración de Gears"</string>
-    <string name="pref_plugin_installed">"Lista de complementos"</string>
-    <string name="pref_plugin_installed_empty_list">"No hay complementos instalados."</string>
-    <string name="pref_extras_gears_settings_summary">"Aplicaciones que amplían la funcionalidad del navegador"</string>
     <string name="pref_extras_reset_default">"Restablecer a los valores predeterminados"</string>
     <string name="pref_extras_reset_default_summary">"Borrar todos los datos del navegador y restablecer la configuración a los valores predeterminados"</string>
     <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>
@@ -252,51 +246,5 @@
     <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>
-    <string name="location_message">"Este sitio web desea acceder a tu ubicación."</string>
-    <string name="shortcut_prompt">"Crear un acceso directo"</string>
-    <string name="shortcut_message">"Este sitio web desea crear un acceso directo a esta página en tu pantalla de inicio"</string>
-    <string name="settings_message">"En la siguiente tabla, se muestran los permisos que has otorgado a cada sitio que ha intentado utilizar Gears."</string>
-    <string name="filepicker_message">"File Picker"</string>
-    <string name="image_message">"Imagen seleccionada"</string>
-    <string name="settings_title">"Configuración de Gears"</string>
-    <string name="privacy_policy">"Lee la política de privacidad del sitio para ver cómo se utilizará tu ubicación."</string>
-    <string name="settings_storage_title">"Permitir almacenamiento local"</string>
-    <string name="settings_storage_subtitle_on">"Este sitio puede guardar información en tu teléfono"</string>
-    <string name="settings_storage_subtitle_off">"Este sitio no puede guardar información en tu teléfono"</string>
-    <string name="settings_location_title">"Permitir detección de ubicación"</string>
-    <string name="settings_location_subtitle_on">"Este sitio puede leer tu ubicación actual"</string>
-    <string name="settings_location_subtitle_off">"Este sitio no puede leer tu ubicación actual"</string>
-    <string name="settings_remove_site">"Suprimir este sitio de Gears"</string>
-    <string name="settings_empty">"No hay permisos definidos"</string>
-    <string name="settings_confirmation_remove_title">"Suprimir este sitio"</string>
-    <string name="settings_confirmation_remove">"Se borrarán todos los permisos y se eliminarán los datos del sitio almacenados en el teléfono."</string>
-    <string name="storage_notification">"Este sitio almacenará información en este teléfono. "\n" Cambia esta configuración en:"\n" Configuración -&gt; Configuración de Gears"</string>
-    <string name="storage_notification_alwaysdeny">"Este sitio nunca almacenará información en este teléfono. "\n" Cambia esta configuración en:"\n" Configuración -&gt; Configuración de Gears"</string>
-    <string name="location_notification">"Este sitio puede acceder a tu ubicación. "\n" Cambia esta configuración en:"\n" Configuración -&gt; Configuración de Gears"</string>
-    <string name="location_notification_alwaysdeny">"Este sitio no accederá a tu ubicación. "\n" Cambia esta configuración en:"\n" Configuración -&gt; Configuración de Gears"</string>
-    <string name="shortcut_notification">"Acceso directo creado"</string>
-    <string name="permission_button_alwaysdeny">"No permitir nunca"</string>
-    <string name="permission_button_allow">"Aceptar"</string>
-    <string name="permission_button_deny">"Cancelar"</string>
-    <string name="shortcut_button_alwaysdeny">"No permitir nunca"</string>
-    <string name="shortcut_button_allow">"Aceptar"</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">"Aceptar"</string>
-    <string name="filepicker_button_deny">"Cancelar"</string>
-    <string name="filepicker_path">"ruta:"</string>
-    <string name="filepicker_no_files_selected">"No hay archivos seleccionados"</string>
-    <string name="filepicker_one_file_selected">"Un archivo seleccionado"</string>
-    <string name="filepicker_some_files_selected">"archivo seleccionado"</string>
-    <string name="remove">"Eliminar"</string>
-    <string name="local_storage">"Almacenamiento local"</string>
-    <string name="allowed">"Permitido"</string>
-    <string name="denied">"Denegado"</string>
-    <string name="unrecognized_dialog_message">"Tipo de diálogo no reconocido"</string>
-    <string name="default_button">"Aceptar"</string>
     <string name="zoom_overview_button_text">"Descripción general"</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 924e2ea..8ceeb2c 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -167,12 +167,6 @@
   </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>
-    <string name="pref_extras_gears_settings">"Configuración de Gears"</string>
-    <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 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>
@@ -248,51 +242,5 @@
     <string name="activity_instrumentation_test_runner">"Realizador de pruebas 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>
-    <string name="location_message">"Este sitio web desea tener acceso a tu ubicación."</string>
-    <string name="shortcut_prompt">"Crear un acceso directo"</string>
-    <string name="shortcut_message">"Este sitio web desea crear un acceso directo a esta página en tu página principal."</string>
-    <string name="settings_message">"En la tabla que aparece a continuación se muestran los permisos que has concedido a los distintos sitios web que han intentado utilizar Gears."</string>
-    <string name="filepicker_message">"Selector de archivos"</string>
-    <string name="image_message">"Imagen seleccionada"</string>
-    <string name="settings_title">"Configuración de Gears"</string>
-    <string name="privacy_policy">"Lee la política de privacidad del sitio para saber cómo se utilizará tu ubicación."</string>
-    <string name="settings_storage_title">"Permitir almacenamiento local"</string>
-    <string name="settings_storage_subtitle_on">"Este sitio puede guardar información en el teléfono."</string>
-    <string name="settings_storage_subtitle_off">"Este sitio no puede guardar información en el teléfono."</string>
-    <string name="settings_location_title">"Permitir detección de ubicación"</string>
-    <string name="settings_location_subtitle_on">"Este sitio puede leer tu ubicación actual."</string>
-    <string name="settings_location_subtitle_off">"Este sitio no puede leer tu ubicación actual."</string>
-    <string name="settings_remove_site">"Eliminar este sitio de Gears"</string>
-    <string name="settings_empty">"No hay permisos establecidos."</string>
-    <string name="settings_confirmation_remove_title">"Eliminar este sitio"</string>
-    <string name="settings_confirmation_remove">"Se borrarán todos los permisos y se eliminarán todos los datos que el sitio haya almacenado en el teléfono."</string>
-    <string name="storage_notification">"Este sitio puede almacenar información en el teléfono."\n" Puedes modificar esta opción en:"\n" Configuración -&gt; Configuración de Gears."</string>
-    <string name="storage_notification_alwaysdeny">"Este sitio no puede almacenar nunca información en el teléfono."\n" Puedes modificar esta opción en:"\n" Configuración -&gt; Configuración de Gears."</string>
-    <string name="location_notification">"Este sitio puede acceder a tu ubicación actual."\n" Puedes modificar esta opción en:"\n" Configuración -&gt; Configuración de Gears."</string>
-    <string name="location_notification_alwaysdeny">"Este sitio no puede acceder a tu ubicación actual."\n" Puedes modificar esta opción en:"\n" Configuración -&gt; Configuración de Gears."</string>
-    <string name="shortcut_notification">"Acceso directo creado"</string>
-    <string name="permission_button_alwaysdeny">"No permitir nunca"</string>
-    <string name="permission_button_allow">"Aceptar"</string>
-    <string name="permission_button_deny">"Cancelar"</string>
-    <string name="shortcut_button_alwaysdeny">"No permitir nunca"</string>
-    <string name="shortcut_button_allow">"Aceptar"</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">"Aceptar"</string>
-    <string name="filepicker_button_deny">"Cancelar"</string>
-    <string name="filepicker_path">"ruta:"</string>
-    <string name="filepicker_no_files_selected">"Ningún archivo seleccionado"</string>
-    <string name="filepicker_one_file_selected">"Un archivo seleccionado"</string>
-    <string name="filepicker_some_files_selected">"archivos seleccionados"</string>
-    <string name="remove">"Eliminar"</string>
-    <string name="local_storage">"Almacenamiento local"</string>
-    <string name="allowed">"Permitido"</string>
-    <string name="denied">"Denegado"</string>
-    <string name="unrecognized_dialog_message">"Tipo de cuadro de diálogo no reconocido"</string>
-    <string name="default_button">"Aceptar"</string>
     <string name="zoom_overview_button_text">"Información general"</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 9709d07..74c0a9a 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -167,12 +167,6 @@
   </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>
-    <string name="pref_extras_gears_settings">"Paramètres Gears"</string>
-    <string name="pref_plugin_installed">"Liste des plug-ins"</string>
-    <string name="pref_plugin_installed_empty_list">"Aucun plug-in installé."</string>
-    <string name="pref_extras_gears_settings_summary">"Applications étendant les fonctionnalités du navigateur"</string>
     <string name="pref_extras_reset_default">"Rétablir valeurs par défaut"</string>
     <string name="pref_extras_reset_default_summary">"Effacer toutes les données du navigateur et rétablir les paramètres par défaut"</string>
     <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>
@@ -248,51 +242,5 @@
     <string name="activity_instrumentation_test_runner">"Testeur de 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 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 é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 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>
-    <string name="settings_location_title">"Autoriser la détection de ma position"</string>
-    <string name="settings_location_subtitle_on">"Ce site peut détecter votre position actuelle."</string>
-    <string name="settings_location_subtitle_off">"Ce site ne peut pas détecter votre position actuelle."</string>
-    <string name="settings_remove_site">"Supprimer ce site de Gears"</string>
-    <string name="settings_empty">"Aucune autorisation définie"</string>
-    <string name="settings_confirmation_remove_title">"Supprimer ce site"</string>
-    <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 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>
-    <string name="permission_button_allow">"OK"</string>
-    <string name="permission_button_deny">"Annuler"</string>
-    <string name="shortcut_button_alwaysdeny">"Ne jamais autoriser"</string>
-    <string name="shortcut_button_allow">"OK"</string>
-    <string name="shortcut_button_deny">"Annuler"</string>
-    <string name="settings_button_allow">"Appliquer"</string>
-    <string name="settings_button_deny">"Annuler"</string>
-    <string name="filepicker_button_allow">"OK"</string>
-    <string name="filepicker_button_deny">"Annuler"</string>
-    <string name="filepicker_path">"chemin :"</string>
-    <string name="filepicker_no_files_selected">"Aucun fichier sélectionné"</string>
-    <string name="filepicker_one_file_selected">"Un fichier sélectionné"</string>
-    <string name="filepicker_some_files_selected">"fichiers sélectionnés"</string>
-    <string name="remove">"Supprimer"</string>
-    <string name="local_storage">"Stockage local"</string>
-    <string name="allowed">"Autorisé"</string>
-    <string name="denied">"Refusé"</string>
-    <string name="unrecognized_dialog_message">"Type de boîte de dialogue inconnu"</string>
-    <string name="default_button">"OK"</string>
     <string name="zoom_overview_button_text">"Présentation"</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 7b8dbb2..ae6ca5e 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -167,12 +167,6 @@
   </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>
-    <string name="pref_extras_gears_settings">"Impostazioni Gears"</string>
-    <string name="pref_plugin_installed">"Elenco di plug-in"</string>
-    <string name="pref_plugin_installed_empty_list">"Nessun plug-in installato."</string>
-    <string name="pref_extras_gears_settings_summary">"Applicazioni che estendono le funzionalità del browser"</string>
     <string name="pref_extras_reset_default">"Ripristina valori predefiniti"</string>
     <string name="pref_extras_reset_default_summary">"Cancella tutti i dati del browser e ripristina tutte le impostazioni predefinite"</string>
     <string name="pref_extras_reset_default_dlg">"Verranno cancellati tutti i dati del browser e ripristinate le impostazioni predefinite."</string>
@@ -248,51 +242,5 @@
     <string name="activity_instrumentation_test_runner">"Browser Test Runner"</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>
-    <string name="location_message">"Questo sito web vorrebbe avere accesso alla tua posizione."</string>
-    <string name="shortcut_prompt">"Crea un collegamento"</string>
-    <string name="shortcut_message">"Questo sito web vorrebbe creare un collegamento a questa pagina nella tua home page."</string>
-    <string name="settings_message">"Nella tabella che segue vengono riportate le autorizzazioni concesse a ogni sito che ha provato a usare Gears."</string>
-    <string name="filepicker_message">"Selettore file"</string>
-    <string name="image_message">"Immagine selezionata"</string>
-    <string name="settings_title">"Impostazioni Gears"</string>
-    <string name="privacy_policy">"Per conoscere la modalità di utilizzo della tua posizione, leggi le norme sulla privacy del sito."</string>
-    <string name="settings_storage_title">"Consenti archiviazione locale"</string>
-    <string name="settings_storage_subtitle_on">"Questo sito può salvare informazioni sul cellulare"</string>
-    <string name="settings_storage_subtitle_off">"Questo sito non può salvare informazioni sul cellulare"</string>
-    <string name="settings_location_title">"Consenti rilevamento posizione"</string>
-    <string name="settings_location_subtitle_on">"Questo sito può leggere la tua posizione attuale"</string>
-    <string name="settings_location_subtitle_off">"Questo sito non può leggere la tua posizione attuale"</string>
-    <string name="settings_remove_site">"Rimuovi il sito da Google Gears"</string>
-    <string name="settings_empty">"Nessuna autorizzazione impostata"</string>
-    <string name="settings_confirmation_remove_title">"Rimuovi il sito"</string>
-    <string name="settings_confirmation_remove">"Tutte le autorizzazioni verranno annullate e tutti i dati memorizzati sul cellulare dal sito verranno eliminati."</string>
-    <string name="storage_notification">"Questo sito memorizzerà informazioni sul cellulare."\n" Modifica questa impostazione in:"\n" Impostazioni -&gt; Impostazioni Gears"</string>
-    <string name="storage_notification_alwaysdeny">"Questo sito non memorizzerà mai informazioni sul cellulare."\n" Modifica questa impostazione in:"\n" Impostazioni -&gt; Impostazioni Gears"</string>
-    <string name="location_notification">"Questo sito può accedere alla tua posizione attuale."\n" Modifica questa impostazione in:"\n" Impostazioni -&gt; Impostazioni Gears"</string>
-    <string name="location_notification_alwaysdeny">"Questo sito non accederà alla tua posizione attuale."\n" Modifica questa impostazione in:"\n" Impostazioni -&gt; Impostazioni Gears"</string>
-    <string name="shortcut_notification">"Collegamento creato"</string>
-    <string name="permission_button_alwaysdeny">"Non consentire mai"</string>
-    <string name="permission_button_allow">"OK"</string>
-    <string name="permission_button_deny">"Annulla"</string>
-    <string name="shortcut_button_alwaysdeny">"Non consentire mai"</string>
-    <string name="shortcut_button_allow">"OK"</string>
-    <string name="shortcut_button_deny">"Annulla"</string>
-    <string name="settings_button_allow">"Applica"</string>
-    <string name="settings_button_deny">"Annulla"</string>
-    <string name="filepicker_button_allow">"OK"</string>
-    <string name="filepicker_button_deny">"Annulla"</string>
-    <string name="filepicker_path">"percorso:"</string>
-    <string name="filepicker_no_files_selected">"Nessun file selezionato"</string>
-    <string name="filepicker_one_file_selected">"Un file selezionato"</string>
-    <string name="filepicker_some_files_selected">"file selezionati"</string>
-    <string name="remove">"Rimuovi"</string>
-    <string name="local_storage">"Archiviazione locale"</string>
-    <string name="allowed">"Consentito"</string>
-    <string name="denied">"Negato"</string>
-    <string name="unrecognized_dialog_message">"Tipo di finestra non riconosciuto"</string>
-    <string name="default_button">"OK"</string>
     <string name="zoom_overview_button_text">"Panoramica"</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 8509f83..7e98801 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -168,12 +168,6 @@
     <!-- 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>
@@ -252,51 +246,5 @@
     <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">"1ファイルが選択されています"</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-ko/strings.xml b/res/values-ko/strings.xml
index 5276664..3bc1f6a 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -168,12 +168,6 @@
     <!-- 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>
@@ -252,51 +246,5 @@
     <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">"확인"</string>
-    <string name="permission_button_deny">"취소"</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>
-    <string name="settings_button_deny">"취소"</string>
-    <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="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">"확인"</string>
     <string name="zoom_overview_button_text">"전체보기"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 92310b7..47b08f6 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -169,12 +169,6 @@
     <!-- 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>
-    <string name="pref_extras_gears_settings">"Gears-innstillinger"</string>
-    <string name="pref_plugin_installed">"Liste over utvidelser"</string>
-    <string name="pref_plugin_installed_empty_list">"Ingen installerte utvidelser."</string>
-    <string name="pref_extras_gears_settings_summary">"Applikasjoner som utvider nettleserfunksjonaliteten"</string>
     <string name="pref_extras_reset_default">"Nullstill"</string>
     <string name="pref_extras_reset_default_summary">"Fjern alle data fra nettleseren og nullstill alle innstillinger"</string>
     <string name="pref_extras_reset_default_dlg">"Alle data vil bli fjernet fra nettleseren, og alle innstillinger vil bli nullstilt."</string>
@@ -253,51 +247,5 @@
     <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>
-    <string name="location_message">"Nettsiden under ønsker å finne ut hvor du er ved hjelp av Gears."</string>
-    <string name="shortcut_prompt">"Lag snarvei"</string>
-    <string name="shortcut_message">"Denne nettsiden ønsker å lage en snarvei på datamaskinen. Ønsker du å tillate dette?"</string>
-    <string name="settings_message">"Tabellen under viser rettighetent du har gitt til hver side som har prøvd å bruke Gears."</string>
-    <string name="filepicker_message">"Gears filplukker"</string>
-    <string name="image_message">"Valgt bilde"</string>
-    <string name="settings_title">"Gears-innstillinger"</string>
-    <string name="privacy_policy">"Les sidens personvernspolicy for å se hvordan informasjonen vil bli brukt."</string>
-    <string name="settings_storage_title">"Tillat lokal lagring"</string>
-    <string name="settings_storage_subtitle_on">"Denne siden kan lagre informasjon i telefonen"</string>
-    <string name="settings_storage_subtitle_off">"Denne siden kan ikke lagre informasjon i telefonen"</string>
-    <string name="settings_location_title">"Tillat deteksjon av plassering"</string>
-    <string name="settings_location_subtitle_on">"Siden får vite hvor du befinner deg"</string>
-    <string name="settings_location_subtitle_off">"Siden får ikke vite hvor du befinner deg"</string>
-    <string name="settings_remove_site">"Fjern denne siden fra Gears"</string>
-    <string name="settings_empty">"Ingen rettigheter satt"</string>
-    <string name="settings_confirmation_remove_title">"Fjern denne siden"</string>
-    <string name="settings_confirmation_remove">"Alle rettigheter vil bli nullstilt, og alle data lagret av siden i telefonen vil bli slettet."</string>
-    <string name="storage_notification">"Siden vil lagre informasjon i telefonen."\n" Endre dette i:"\n" Innstillinger -&gt; Gears-innstillinger"</string>
-    <string name="storage_notification_alwaysdeny">"Siden vil aldri lagre informasjon i telefonen."\n" Endre dette i:"\n" Innstillinger -&gt; Gears-innstillinger"</string>
-    <string name="location_notification">"Siden får ikke vite hvor du befinner deg."\n" Endre dette i:"\n" Innstillinger -&gt; Gears-innstillinger"</string>
-    <string name="location_notification_alwaysdeny">"Siden vil ikke få vite hvor du befinner deg."\n" Endre dette i:"\n" Innstillinger -&gt; Gears-innstillinger"</string>
-    <string name="shortcut_notification">"Snarvei opprettet"</string>
-    <string name="permission_button_alwaysdeny">"Aldri tillat for denne siden"</string>
-    <string name="permission_button_allow">"Tillat"</string>
-    <string name="permission_button_deny">"Nekt"</string>
-    <string name="shortcut_button_alwaysdeny">"Aldri tillat denne snarveien"</string>
-    <string name="shortcut_button_allow">"OK"</string>
-    <string name="shortcut_button_deny">"Avbryt"</string>
-    <string name="settings_button_allow">"Bruk"</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">"sti:"</string>
-    <string name="filepicker_no_files_selected">"Ingen fil valgt"</string>
-    <string name="filepicker_one_file_selected">"En fil valgt"</string>
-    <string name="filepicker_some_files_selected">"filer valgt"</string>
-    <string name="remove">"Fjern"</string>
-    <string name="local_storage">"Lokal lagring"</string>
-    <string name="allowed">"Tillatt"</string>
-    <string name="denied">"Nektet"</string>
-    <string name="unrecognized_dialog_message">"Ukjent meldingstype"</string>
-    <string name="default_button">"OK"</string>
     <string name="zoom_overview_button_text">"Oversikt"</string>
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 37dae9d..c1b2ba4 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -167,12 +167,6 @@
   </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>
-    <string name="pref_extras_gears_settings">"Instellingen van Gears"</string>
-    <string name="pref_plugin_installed">"Lijst met invoegtoepassingen"</string>
-    <string name="pref_plugin_installed_empty_list">"Geen invoegtoepassingen geïnstalleerd."</string>
-    <string name="pref_extras_gears_settings_summary">"Toepassingen die de functionaliteit van de browser vergroten"</string>
     <string name="pref_extras_reset_default">"Standaardinstellingen herstellen"</string>
     <string name="pref_extras_reset_default_summary">"Alle browsergegevens wissen en alle standaardinstellingen herstellen"</string>
     <string name="pref_extras_reset_default_dlg">"Alle browsergegevens worden gewist en de standaardinstellingen worden hersteld."</string>
@@ -248,51 +242,5 @@
     <string name="activity_instrumentation_test_runner">"Browser Test Runner"</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>
-    <string name="location_message">"Deze website wil toegang hebben tot uw locatie."</string>
-    <string name="shortcut_prompt">"Een snelkoppeling maken"</string>
-    <string name="shortcut_message">"Deze website wil een snelkoppeling naar deze pagina maken op uw startscherm."</string>
-    <string name="settings_message">"De onderstaande tabel geeft de toestemming weer die u heeft verleend aan elke site die Gears heeft geprobeerd te gebruiken."</string>
-    <string name="filepicker_message">"Bestandenkiezer"</string>
-    <string name="image_message">"Gekozen afbeelding"</string>
-    <string name="settings_title">"Instellingen van Gears"</string>
-    <string name="privacy_policy">"U kunt het privacybeleid van de site raadplegen voor meer informatie over hoe uw locatie wordt gebruikt."</string>
-    <string name="settings_storage_title">"Lokale opslag toestaan"</string>
-    <string name="settings_storage_subtitle_on">"Deze site kan informatie opslaan op uw telefoon"</string>
-    <string name="settings_storage_subtitle_off">"Deze site kan geen informatie op uw telefoon opslaan"</string>
-    <string name="settings_location_title">"Locatiedetectie toestaan"</string>
-    <string name="settings_location_subtitle_on">"Deze site kan uw huidige locatie lezen"</string>
-    <string name="settings_location_subtitle_off">"Deze site kan uw huidige locatie niet lezen"</string>
-    <string name="settings_remove_site">"Deze site verwijderen uit Gears"</string>
-    <string name="settings_empty">"Geen machtigingen ingesteld"</string>
-    <string name="settings_confirmation_remove_title">"Deze site verwijderen"</string>
-    <string name="settings_confirmation_remove">"Alle machtigingen worden gewist en eventuele gegevens die op uw telefoon zijn opgeslagen door de site, worden verwijderd."</string>
-    <string name="storage_notification">"Deze site slaat informatie op deze telefoon op."\n" Wijzig deze instelling in:"\n" Instellingen -&gt; Instellingen van Gears"</string>
-    <string name="storage_notification_alwaysdeny">"Deze site slaat nooit informatie op deze telefoon op."\n" Wijzig deze instelling in:"\n" Instellingen -&gt; Instellingen van Gears"</string>
-    <string name="location_notification">"Deze site heeft toegang tot uw huidige locatie."\n" Wijzig deze instelling in:"\n" Instellingen -&gt; Instellingen van Gears"</string>
-    <string name="location_notification_alwaysdeny">"Deze site heeft geen toegang tot uw huidige locatie."\n" Wijzig deze instelling in:"\n" Instellingen -&gt; Instellingen van Gears"</string>
-    <string name="shortcut_notification">"Snelkoppeling gemaakt"</string>
-    <string name="permission_button_alwaysdeny">"Nooit toestaan"</string>
-    <string name="permission_button_allow">"OK"</string>
-    <string name="permission_button_deny">"Annuleren"</string>
-    <string name="shortcut_button_alwaysdeny">"Nooit toestaan"</string>
-    <string name="shortcut_button_allow">"OK"</string>
-    <string name="shortcut_button_deny">"Annuleren"</string>
-    <string name="settings_button_allow">"Toepassen"</string>
-    <string name="settings_button_deny">"Annuleren"</string>
-    <string name="filepicker_button_allow">"OK"</string>
-    <string name="filepicker_button_deny">"Annuleren"</string>
-    <string name="filepicker_path">"pad:"</string>
-    <string name="filepicker_no_files_selected">"Er zijn geen bestanden geselecteerd"</string>
-    <string name="filepicker_one_file_selected">"Eén bestand geselecteerd"</string>
-    <string name="filepicker_some_files_selected">"bestanden geselecteerd"</string>
-    <string name="remove">"Verwijderen"</string>
-    <string name="local_storage">"Lokale opslag"</string>
-    <string name="allowed">"Toegestaan"</string>
-    <string name="denied">"Geweigerd"</string>
-    <string name="unrecognized_dialog_message">"Dialoogtype wordt niet herkend"</string>
-    <string name="default_button">"OK"</string>
     <string name="zoom_overview_button_text">"Overzicht"</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 0295c72..6972973 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -167,12 +167,6 @@
   </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 dodatek Gears"</string>
-    <string name="pref_extras_gears_enable_summary">"Aplikacje rozszerzające zakres funkcji przeglądarki"</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>
     <string name="pref_extras_reset_default">"Przywróć wartości domyślne"</string>
     <string name="pref_extras_reset_default_summary">"Wyczyść wszystkie dane przeglądarki i przywróć wszystkie ustawienia domyślne"</string>
     <string name="pref_extras_reset_default_dlg">"Wszystkie dane przeglądarki zostaną wyczyszczone, a ustawienia powrócą do wartości domyślnych."</string>
@@ -248,51 +242,5 @@
     <string name="activity_instrumentation_test_runner">"Uruchamianie testów 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ć dodatku Gears."</string>
-    <string name="filepicker_message">"Wybór plików"</string>
-    <string name="image_message">"Wybrany obraz"</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>
-    <string name="settings_storage_subtitle_off">"Ta witryna nie może zapisać informacji w telefonie"</string>
-    <string name="settings_location_title">"Zezwól na wykrycie lokalizacji"</string>
-    <string name="settings_location_subtitle_on">"Ta witryna może odczytać informacje o Twojej bieżącej lokalizacji"</string>
-    <string name="settings_location_subtitle_off">"Ta witryna nie może odczytać informacji o Twojej bieżącej lokalizacji"</string>
-    <string name="settings_remove_site">"Usuń tę witrynę z dodatku Gears"</string>
-    <string name="settings_empty">"Brak ustawionych pozwoleń"</string>
-    <string name="settings_confirmation_remove_title">"Usuń tę witrynę"</string>
-    <string name="settings_confirmation_remove">"Wszystkie pozwolenia zostaną wyczyszczone, a wszelkie dane zapisane w telefonie przez tę witrynę zostaną usunięte."</string>
-    <string name="storage_notification">"Ta witryna zapisze informacje w tym telefonie."\n" Zmień to ustawienie w menu:"\n" Ustawienia -&gt; Ustawienia dodatku Gears"</string>
-    <string name="storage_notification_alwaysdeny">"Ta witryna nigdy nie zapisze informacji w tym telefonie."\n" Zmień to ustawienie w menu:"\n" Ustawienia -&gt; Ustawienia dodatku Gears"</string>
-    <string name="location_notification">"Ta witryna może uzyskać dostęp do informacji o Twojej bieżącej lokalizacji."\n" Zmień to ustawienie w menu:"\n" Ustawienia -&gt; Ustawienia dodatku Gears"</string>
-    <string name="location_notification_alwaysdeny">"Ta witryna nie uzyska dostępu do informacji o Twojej bieżącej lokalizacji."\n" Zmień to ustawienie w menu:"\n" Ustawienia -&gt; Ustawienia dodatku Gears"</string>
-    <string name="shortcut_notification">"Skrót został utworzony"</string>
-    <string name="permission_button_alwaysdeny">"Nigdy nie zezwalaj"</string>
-    <string name="permission_button_allow">"OK"</string>
-    <string name="permission_button_deny">"Anuluj"</string>
-    <string name="shortcut_button_alwaysdeny">"Nigdy nie zezwalaj"</string>
-    <string name="shortcut_button_allow">"OK"</string>
-    <string name="shortcut_button_deny">"Anuluj"</string>
-    <string name="settings_button_allow">"Zastosuj"</string>
-    <string name="settings_button_deny">"Anuluj"</string>
-    <string name="filepicker_button_allow">"OK"</string>
-    <string name="filepicker_button_deny">"Anuluj"</string>
-    <string name="filepicker_path">"ścieżka:"</string>
-    <string name="filepicker_no_files_selected">"Nie wybrano żadnych plików"</string>
-    <string name="filepicker_one_file_selected">"Wybrano jeden plik"</string>
-    <string name="filepicker_some_files_selected">"plików wybrano"</string>
-    <string name="remove">"Usuń"</string>
-    <string name="local_storage">"Pamięć lokalna"</string>
-    <string name="allowed">"Zezwolono"</string>
-    <string name="denied">"Odmówiono"</string>
-    <string name="unrecognized_dialog_message">"Nierozpoznany typ okna dialogowego"</string>
-    <string name="default_button">"OK"</string>
     <string name="zoom_overview_button_text">"Widok ogólny"</string>
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 7ac06f5..5b65d02 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -169,12 +169,6 @@
     <!-- 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>
@@ -253,51 +247,5 @@
     <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 e4988e9..a88f3d3 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -168,12 +168,6 @@
     <!-- 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 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 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>
@@ -252,51 +246,5 @@
     <skip />
     <!-- no translation found for search_the_web (6046130189241962337) -->
     <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>
-    <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 arquivo selecionado"</string>
-    <string name="filepicker_one_file_selected">"Um arquivo selecionado"</string>
-    <string name="filepicker_some_files_selected">"arquivos selecionados"</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 caixa de diálogo não reconhecido"</string>
-    <string name="default_button">"OK"</string>
     <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 bdfb566..143d1f3 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -168,12 +168,6 @@
     <!-- 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>
@@ -252,51 +246,5 @@
     <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">"ОК"</string>
-    <string name="permission_button_deny">"Отмена"</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>
-    <string name="settings_button_deny">"Отмена"</string>
-    <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="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">"ОК"</string>
     <string name="zoom_overview_button_text">"Обзор"</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index b38dc08..fcc0dff 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -169,12 +169,6 @@
     <!-- 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>
@@ -253,51 +247,5 @@
     <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
index b5dc05b..cb821f8 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -168,12 +168,6 @@
     <!-- 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>
@@ -252,51 +246,5 @@
     <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 8f005e1..a47d6b9 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -168,12 +168,6 @@
     <!-- 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>
@@ -252,51 +246,5 @@
     <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">"确定"</string>
-    <string name="permission_button_deny">"取消"</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>
-    <string name="settings_button_deny">"取消"</string>
-    <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="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">"确定"</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 fec7a13..886e2a1 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -167,12 +167,6 @@
   </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>
-    <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>
@@ -248,51 +242,5 @@
     <string name="activity_instrumentation_test_runner">"Browser Test Runner"</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>
-    <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">"確定"</string>
-    <string name="permission_button_deny">"取消"</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>
-    <string name="settings_button_deny">"取消"</string>
-    <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="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">"確定"</string>
     <string name="zoom_overview_button_text">"總覽"</string>
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index def8ac8..e8e134c 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -33,11 +33,6 @@
     <color name="black">#ff000000</color>
     <color name="gray">#ffbbbbbb</color>
     <color name="dark_gray">#ff777777</color>
-    
-    <!-- Gears Dialogs -->
-    <color name="permission_border">#f1cc1d</color>
-    <color name="permission_background">#faefb8</color>
-    <color name="dialog_link">#ff0000ff</color>
 
     <color name="geolocation_permissions_prompt_background">#CC888888</color>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index eeb9f11..e8ef5f9 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -408,21 +408,10 @@
     <!-- Settings screen, section title -->
     <string name="pref_extras_title">Advanced settings</string>
     <!-- Settings label -->
-    <string name="pref_extras_gears_enable">Enable Gears</string>
-    <!-- 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>
-    <!-- Settings summary -->
-    <string name="pref_plugin_installed_empty_list">No installed plugins.</string>
-    <string name="pref_extras_gears_settings_summary">Applications that extend browser functionality</string>
-    <!-- Settings label -->
     <string name="pref_extras_reset_default">Reset to default</string>
     <!-- Settings summary -->
     <string name="pref_extras_reset_default_summary">Clear all browser data and reset all settings to default</string>
@@ -713,68 +702,6 @@
         Browser\'s history or bookmarks stored on your phone. Malicious applications 
         can use this to erase or modify your Browser\'s data.</string>
 
-    <!-- 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>
-    <string name="shortcut_message">This web site would like to create a shortcut to this page on your home screen.</string>
-    <string name="settings_message">The table below shows the permissions you have granted to each site that has attempted to use Gears.</string>
-    <string name="filepicker_message">File Picker</string>
-    <string name="image_message">Choosen Image</string>
-
-    <string name="settings_title">Gears settings</string>
-    <string name="privacy_policy">Read the site\'s privacy policy to see how your location will be used.</string>
-    <string name="settings_storage_title">Allow Local Storage</string>
-    <string name="settings_storage_subtitle_on">This site can save information to your phone</string>
-    <string name="settings_storage_subtitle_off">This site cannot save information to your phone</string>
-
-    <string name="settings_location_title">Allow Location Detection</string>
-    <string name="settings_location_subtitle_on">This site can read your current location</string>
-    <string name="settings_location_subtitle_off">This site cannot read your current location</string>
-
-    <string name="settings_remove_site">Remove this site from Gears</string>
-    <string name="settings_empty">No permissions set</string>
-
-    <string name="settings_confirmation_remove_title">Remove this site</string>
-    <string name="settings_confirmation_remove">All permissions will be cleared, and any data stored on your phone by the site will be deleted.</string>
-
-    <string name="storage_notification">This site will store information on this phone.\n Change this setting in:\n Settings -> Gears Settings</string>
-    <string name="storage_notification_alwaysdeny">This site will never store information on this phone.\n Change this setting in:\n Settings -> Gears Settings</string>
-    <string name="location_notification">This site can access your current location.\n Change this setting in:\n Settings -> Gears Settings</string>
-    <string name="location_notification_alwaysdeny">This site will not access your current location.\n Change this setting in:\n Settings -> Gears Settings</string>
-    <string name="shortcut_notification">Shortcut created</string>
-
-    <string name="permission_button_alwaysdeny">Never Allow</string>
-    <string name="permission_button_allow">OK</string>
-    <string name="permission_button_deny">Cancel</string>
-
-    <string name="shortcut_button_alwaysdeny">Never Allow</string>
-    <string name="shortcut_button_allow">OK</string>
-    <string name="shortcut_button_deny">Cancel</string>
-
-    <string name="settings_button_allow">Apply</string>
-    <string name="settings_button_deny">Cancel</string>
-
-    <string name="filepicker_button_allow">OK</string>
-    <string name="filepicker_button_deny">Cancel</string>
-    <string name="filepicker_path">path:</string>
-    <string name="filepicker_no_files_selected">No files selected</string>
-    <string name="filepicker_one_file_selected">One file selected</string>
-    <string name="filepicker_some_files_selected">files selected</string>
-
-    <string name="remove">Remove</string>
-    <string name="local_storage">Local storage</string>
-    <string name="allowed">Allowed</string>
-    <string name="denied">Denied</string>
-
-    <string name="unrecognized_dialog_message">Unrecognized dialog type</string>
-    <string name="default_button">OK</string>
-
     <!-- HTML5 dialogs -->
     <!-- Used as a status bar notification when the browser is running out of space trying to allocate or increase the database quota for an HTML5 databae or application cache. -->
     <string name="webstorage_outofspace_notification_title">Browser storage full</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index f20220f..40fdd14 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -35,10 +35,6 @@
         <item name="android:popupBackground">@android:drawable/spinner_dropdown_background</item>
     </style>
 
-    <style name="gears_button">
-      <item name="android:background">@drawable/gears_button</item>
-    </style>
-
     <style name="FindDialog">
         <item name="android:windowEnterAnimation">@anim/find_dialog_enter</item>
         <item name="android:windowExitAnimation">@anim/find_dialog_exit</item>
diff --git a/res/xml/browser_preferences.xml b/res/xml/browser_preferences.xml
index 37b9f11..0df35c2 100644
--- a/res/xml/browser_preferences.xml
+++ b/res/xml/browser_preferences.xml
@@ -184,21 +184,6 @@
     </PreferenceCategory>
     <PreferenceCategory
             android:title="@string/pref_extras_title">
-                     
-            <!-- This setting is named "Enable Gears" but is actually
-                 tied to enabling all plugins. -->
-            <CheckBoxPreference
-                    android:key="enable_plugins"
-                    android:defaultValue="true"
-                    android:title="@string/pref_extras_gears_enable"
-                    android:summary="@string/pref_extras_gears_enable_summary" />
-
-            <Preference
-                    android:key="gears_settings"
-                    android:persistent="false"
-                    android:dependency="enable_plugins"
-                    android:title="@string/pref_extras_gears_settings"
-                    android:summary="@string/pref_extras_gears_settings_summary" />
 
             <PreferenceScreen
                   android:key="website_settings"
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index 5c2764b..244a903 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -274,371 +274,6 @@
                     mGlsConnection, Context.BIND_AUTO_CREATE);
     }
 
-    /**
-     * This class is in charge of installing pre-packaged plugins
-     * from the Browser assets directory to the user's data partition.
-     * Plugins are loaded from the "plugins" directory in the assets;
-     * Anything that is in this directory will be copied over to the
-     * user data partition in app_plugins.
-     */
-    private static class CopyPlugins implements Runnable {
-        final static String TAG = "PluginsInstaller";
-        final static String ZIP_FILTER = "assets/plugins/";
-        final static String APK_PATH = "/system/app/Browser.apk";
-        final static String PLUGIN_EXTENSION = ".so";
-        final static String TEMPORARY_EXTENSION = "_temp";
-        final static String BUILD_INFOS_FILE = "build.prop";
-        final static String SYSTEM_BUILD_INFOS_FILE = "/system/"
-                              + BUILD_INFOS_FILE;
-        final static int BUFSIZE = 4096;
-        boolean mDoOverwrite = false;
-        String pluginsPath;
-        Context mContext;
-
-        public CopyPlugins (boolean overwrite, Context context) {
-            mDoOverwrite = overwrite;
-            mContext = context;
-        }
-
-        /**
-         * Returned a filtered list of ZipEntry.
-         * We list all the files contained in the zip and
-         * only returns the ones starting with the ZIP_FILTER
-         * path.
-         *
-         * @param zip the zip file used.
-         */
-        public Vector<ZipEntry> pluginsFilesFromZip(ZipFile zip) {
-            Vector<ZipEntry> list = new Vector<ZipEntry>();
-            Enumeration entries = zip.entries();
-            while (entries.hasMoreElements()) {
-                ZipEntry entry = (ZipEntry) entries.nextElement();
-                if (entry.getName().startsWith(ZIP_FILTER)) {
-                  list.add(entry);
-                }
-            }
-            return list;
-        }
-
-        /**
-         * Utility method to copy the content from an inputstream
-         * to a file output stream.
-         */
-        public void copyStreams(InputStream is, FileOutputStream fos) {
-            BufferedOutputStream os = null;
-            try {
-                byte data[] = new byte[BUFSIZE];
-                int count;
-                os = new BufferedOutputStream(fos, BUFSIZE);
-                while ((count = is.read(data, 0, BUFSIZE)) != -1) {
-                    os.write(data, 0, count);
-                }
-                os.flush();
-            } catch (IOException e) {
-                Log.e(TAG, "Exception while copying: " + e);
-            } finally {
-              try {
-                if (os != null) {
-                    os.close();
-                }
-              } catch (IOException e2) {
-                Log.e(TAG, "Exception while closing the stream: " + e2);
-              }
-            }
-        }
-
-        /**
-         * Returns a string containing the contents of a file
-         *
-         * @param file the target file
-         */
-        private String contentsOfFile(File file) {
-          String ret = null;
-          FileInputStream is = null;
-          try {
-            byte[] buffer = new byte[BUFSIZE];
-            int count;
-            is = new FileInputStream(file);
-            StringBuffer out = new StringBuffer();
-
-            while ((count = is.read(buffer, 0, BUFSIZE)) != -1) {
-              out.append(new String(buffer, 0, count));
-            }
-            ret = out.toString();
-          } catch (IOException e) {
-            Log.e(TAG, "Exception getting contents of file " + e);
-          } finally {
-            if (is != null) {
-              try {
-                is.close();
-              } catch (IOException e2) {
-                Log.e(TAG, "Exception while closing the file: " + e2);
-              }
-            }
-          }
-          return ret;
-        }
-
-        /**
-         * Utility method to initialize the user data plugins path.
-         */
-        public void initPluginsPath() {
-            BrowserSettings s = BrowserSettings.getInstance();
-            pluginsPath = s.getPluginsPath();
-            if (pluginsPath == null) {
-                s.loadFromDb(mContext);
-                pluginsPath = s.getPluginsPath();
-            }
-            if (LOGV_ENABLED) {
-                Log.v(TAG, "Plugin path: " + pluginsPath);
-            }
-        }
-
-        /**
-         * Utility method to delete a file or a directory
-         *
-         * @param file the File to delete
-         */
-        public void deleteFile(File file) {
-            File[] files = file.listFiles();
-            if ((files != null) && files.length > 0) {
-              for (int i=0; i< files.length; i++) {
-                deleteFile(files[i]);
-              }
-            }
-            if (!file.delete()) {
-              Log.e(TAG, file.getPath() + " could not get deleted");
-            }
-        }
-
-        /**
-         * Clean the content of the plugins directory.
-         * We delete the directory, then recreate it.
-         */
-        public void cleanPluginsDirectory() {
-          if (LOGV_ENABLED) {
-            Log.v(TAG, "delete plugins directory: " + pluginsPath);
-          }
-          File pluginsDirectory = new File(pluginsPath);
-          deleteFile(pluginsDirectory);
-          pluginsDirectory.mkdir();
-        }
-
-
-        /**
-         * Copy the SYSTEM_BUILD_INFOS_FILE file containing the
-         * informations about the system build to the
-         * BUILD_INFOS_FILE in the plugins directory.
-         */
-        public void copyBuildInfos() {
-          FileInputStream iStream = null;
-          FileOutputStream oStream = null;
-          try {
-            if (LOGV_ENABLED) {
-              Log.v(TAG, "Copy build infos to the plugins directory");
-            }
-            File buildInfoFile = new File(SYSTEM_BUILD_INFOS_FILE);
-            File buildInfoPlugins = new File(pluginsPath, BUILD_INFOS_FILE);
-            iStream = new FileInputStream(buildInfoFile);
-            oStream = new FileOutputStream(buildInfoPlugins);
-            copyStreams(iStream, oStream);
-          } catch (IOException e) {
-            Log.e(TAG, "Exception while copying the build infos: " + e);
-          } finally {
-            try {
-              if (iStream != null) {
-                iStream.close();
-              }
-            } catch (IOException e2) {
-              Log.e(TAG, "Exception while closing the input stream: " + e2);
-            }
-            try {
-              if (oStream != null) {
-                oStream.close();
-              }
-            } catch (IOException e3) {
-              Log.e(TAG, "Exception while closing the output stream: " + e3);
-            }
-          }
-        }
-
-        /**
-         * Returns true if the current system is newer than the
-         * system that installed the plugins.
-         * We determinate this by checking the build number of the system.
-         *
-         * At the end of the plugins copy operation, we copy the
-         * SYSTEM_BUILD_INFOS_FILE to the BUILD_INFOS_FILE.
-         * We then just have to load both and compare them -- if they
-         * are different the current system is newer.
-         *
-         * Loading and comparing the strings should be faster than
-         * creating a hash, the files being rather small. Extracting the
-         * version number would require some parsing which may be more
-         * brittle.
-         */
-        public boolean newSystemImage() {
-          try {
-            File buildInfoFile = new File(SYSTEM_BUILD_INFOS_FILE);
-            File buildInfoPlugins = new File(pluginsPath, BUILD_INFOS_FILE);
-            if (!buildInfoPlugins.exists()) {
-              if (LOGV_ENABLED) {
-                Log.v(TAG, "build.prop in plugins directory " + pluginsPath
-                  + " does not exist, therefore it's a new system image");
-              }
-              return true;
-            } else {
-              String buildInfo = contentsOfFile(buildInfoFile);
-              String buildInfoPlugin = contentsOfFile(buildInfoPlugins);
-              if (buildInfo == null || buildInfoPlugin == null
-                  || buildInfo.compareTo(buildInfoPlugin) != 0) {
-                if (LOGV_ENABLED) {
-                  Log.v(TAG, "build.prop are different, "
-                    + " therefore it's a new system image");
-                }
-                return true;
-              }
-            }
-          } catch (Exception e) {
-            Log.e(TAG, "Exc in newSystemImage(): " + e);
-          }
-          return false;
-        }
-
-        /**
-         * Check if the version of the plugins contained in the
-         * Browser assets is the same as the version of the plugins
-         * in the plugins directory.
-         * We simply iterate on every file in the assets/plugins
-         * and return false if a file listed in the assets does
-         * not exist in the plugins directory.
-         */
-        private boolean checkIsDifferentVersions() {
-          try {
-            ZipFile zip = new ZipFile(APK_PATH);
-            Vector<ZipEntry> files = pluginsFilesFromZip(zip);
-            int zipFilterLength = ZIP_FILTER.length();
-
-            Enumeration entries = files.elements();
-            while (entries.hasMoreElements()) {
-              ZipEntry entry = (ZipEntry) entries.nextElement();
-              String path = entry.getName().substring(zipFilterLength);
-              File outputFile = new File(pluginsPath, path);
-              if (!outputFile.exists()) {
-                if (LOGV_ENABLED) {
-                  Log.v(TAG, "checkIsDifferentVersions(): extracted file "
-                    + path + " does not exist, we have a different version");
-                }
-                return true;
-              }
-            }
-          } catch (IOException e) {
-            Log.e(TAG, "Exception in checkDifferentVersions(): " + e);
-          }
-          return false;
-        }
-
-        /**
-         * Copy every files from the assets/plugins directory
-         * to the app_plugins directory in the data partition.
-         * Once copied, we copy over the SYSTEM_BUILD_INFOS file
-         * in the plugins directory.
-         *
-         * NOTE: we directly access the content from the Browser
-         * package (it's a zip file) and do not use AssetManager
-         * as there is a limit of 1Mb (see Asset.h)
-         */
-        public void run() {
-            // Lower the priority
-            Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
-            try {
-                if (pluginsPath == null) {
-                    Log.e(TAG, "No plugins path found!");
-                    return;
-                }
-
-                ZipFile zip = new ZipFile(APK_PATH);
-                Vector<ZipEntry> files = pluginsFilesFromZip(zip);
-                Vector<File> plugins = new Vector<File>();
-                int zipFilterLength = ZIP_FILTER.length();
-
-                Enumeration entries = files.elements();
-                while (entries.hasMoreElements()) {
-                    ZipEntry entry = (ZipEntry) entries.nextElement();
-                    String path = entry.getName().substring(zipFilterLength);
-                    File outputFile = new File(pluginsPath, path);
-                    outputFile.getParentFile().mkdirs();
-
-                    if (outputFile.exists() && !mDoOverwrite) {
-                        if (LOGV_ENABLED) {
-                            Log.v(TAG, path + " already extracted.");
-                        }
-                    } else {
-                        if (path.endsWith(PLUGIN_EXTENSION)) {
-                            // We rename plugins to be sure a half-copied
-                            // plugin is not loaded by the browser.
-                            plugins.add(outputFile);
-                            outputFile = new File(pluginsPath,
-                                path + TEMPORARY_EXTENSION);
-                        }
-                        FileOutputStream fos = new FileOutputStream(outputFile);
-                        if (LOGV_ENABLED) {
-                            Log.v(TAG, "copy " + entry + " to "
-                                + pluginsPath + "/" + path);
-                        }
-                        copyStreams(zip.getInputStream(entry), fos);
-                    }
-                }
-
-                // We now rename the .so we copied, once all their resources
-                // are safely copied over to the user data partition.
-                Enumeration elems = plugins.elements();
-                while (elems.hasMoreElements()) {
-                    File renamedFile = (File) elems.nextElement();
-                    File sourceFile = new File(renamedFile.getPath()
-                        + TEMPORARY_EXTENSION);
-                    if (LOGV_ENABLED) {
-                        Log.v(TAG, "rename " + sourceFile.getPath()
-                            + " to " + renamedFile.getPath());
-                    }
-                    sourceFile.renameTo(renamedFile);
-                }
-
-                copyBuildInfos();
-            } catch (IOException e) {
-                Log.e(TAG, "IO Exception: " + e);
-            }
-        }
-    };
-
-    /**
-     * Copy the content of assets/plugins/ to the app_plugins directory
-     * in the data partition.
-     *
-     * This function is called every time the browser is started.
-     * We first check if the system image is newer than the one that
-     * copied the plugins (if there's plugins in the data partition).
-     * If this is the case, we then check if the versions are different.
-     * If they are different, we clean the plugins directory in the
-     * data partition, then start a thread to copy the plugins while
-     * the browser continue to load.
-     *
-     * @param overwrite if true overwrite the files even if they are
-     * already present (to let the user "reset" the plugins if needed).
-     */
-    private void copyPlugins(boolean overwrite) {
-        CopyPlugins copyPluginsFromAssets = new CopyPlugins(overwrite, this);
-        copyPluginsFromAssets.initPluginsPath();
-        if (copyPluginsFromAssets.newSystemImage())  {
-          if (copyPluginsFromAssets.checkIsDifferentVersions()) {
-            copyPluginsFromAssets.cleanPluginsDirectory();
-            Thread copyplugins = new Thread(copyPluginsFromAssets);
-            copyplugins.setName("CopyPlugins");
-            copyplugins.start();
-          }
-        }
-    }
-
     private static class ClearThumbnails extends AsyncTask<File, Void, Void> {
         @Override
         public Void doInBackground(File... files) {
@@ -845,7 +480,6 @@
                     && !mSettings.isLoginInitialized()) {
                 setupHomePage();
             }
-            copyPlugins(true);
 
             if (urlData.isEmpty()) {
                 if (mSettings.isLoginInitialized()) {
diff --git a/src/com/android/browser/BrowserPluginList.java b/src/com/android/browser/BrowserPluginList.java
deleted file mode 100644
index 6689b0e..0000000
--- a/src/com/android/browser/BrowserPluginList.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.app.ListActivity;
-import android.os.Bundle;
-import android.view.View;
-import android.view.ViewGroup;
-import android.webkit.Plugin;
-import android.webkit.PluginList;
-import android.webkit.WebView;
-import android.widget.ArrayAdapter;
-import android.widget.LinearLayout;
-import android.widget.LinearLayout.LayoutParams;
-import android.widget.ListView;
-import android.widget.TextView;
-import java.util.ArrayList;
-import java.util.List;
-
-// Manages the list of installed (and loaded) plugins.
-public class BrowserPluginList extends ListActivity {
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-        // The list of plugins can change under us, as the plugins are
-        // loaded and unloaded in a different thread. We make a copy
-        // of the list here.
-        List loadedPlugins = WebView.getPluginList().getList();
-        ArrayList localLoadedPluginList = new ArrayList();
-        synchronized (loadedPlugins) {
-            localLoadedPluginList.addAll(loadedPlugins);
-        }
-        setListAdapter(new ArrayAdapter(this,
-                                        android.R.layout.simple_list_item_1,
-                                        localLoadedPluginList));
-        setTitle(R.string.pref_plugin_installed);
-        // Add a text view to this ListActivity. This text view
-        // will be displayed when the list of plugins is empty.
-        TextView textView = new TextView(this);
-        textView.setId(android.R.id.empty);
-        textView.setText(R.string.pref_plugin_installed_empty_list);
-        addContentView(textView, new LinearLayout.LayoutParams(
-                               ViewGroup.LayoutParams.FILL_PARENT,
-                               ViewGroup.LayoutParams.WRAP_CONTENT));
-
-    }
-
-    @Override
-    public void onListItemClick(ListView l, View v, int position, long id) {
-        WebView.getPluginList().pluginClicked(this, position);
-    }
-}
diff --git a/src/com/android/browser/BrowserPreferencesPage.java b/src/com/android/browser/BrowserPreferencesPage.java
index 2348af0..ec3561f 100644
--- a/src/com/android/browser/BrowserPreferencesPage.java
+++ b/src/com/android/browser/BrowserPreferencesPage.java
@@ -30,13 +30,11 @@
 import android.preference.PreferenceScreen;
 import android.util.Log;
 import android.webkit.GeolocationPermissions;
-import android.webkit.Plugin;
 import android.webkit.WebStorage;
 import android.webkit.WebView;
 
 public class BrowserPreferencesPage extends PreferenceActivity
-        implements Preference.OnPreferenceChangeListener, 
-        Preference.OnPreferenceClickListener {
+        implements Preference.OnPreferenceChangeListener {
 
     String TAG = "BrowserPreferencesPage";
 
@@ -74,9 +72,6 @@
             addPreferencesFromResource(R.xml.debug_preferences);
         }
 
-        e = findPreference(BrowserSettings.PREF_GEARS_SETTINGS);
-        e.setOnPreferenceClickListener(this);
-
         PreferenceScreen websiteSettings = (PreferenceScreen)
             findPreference(BrowserSettings.PREF_WEBSITE_SETTINGS);
         Intent intent = new Intent(this, WebsiteSettingsActivity.class);
@@ -154,20 +149,6 @@
         
         return false;
     }
-    
-    public boolean onPreferenceClick(Preference pref) {
-        if (pref.getKey().equals(BrowserSettings.PREF_GEARS_SETTINGS)) {
-            List<Plugin> loadedPlugins = WebView.getPluginList().getList();
-            for(Plugin p : loadedPlugins) {
-                if (p.getName().equals("gears")) {
-                    p.dispatchClickEvent(this);
-                    return true;
-                }
-            }
-            
-        }
-        return true;
-    }
 
     private CharSequence getVisualTextSizeName(String enumName) {
         CharSequence[] visualNames = getResources().getTextArray(
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 6f5caed..aa54ccd 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -128,7 +128,6 @@
     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";
diff --git a/src/com/android/browser/GearsBaseDialog.java b/src/com/android/browser/GearsBaseDialog.java
deleted file mode 100644
index 9a56cb8..0000000
--- a/src/com/android/browser/GearsBaseDialog.java
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- * 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.app.Activity;
-import android.app.Dialog;
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.os.Handler;
-import android.text.Spannable;
-import android.text.SpannableString;
-import android.text.style.UnderlineSpan;
-import android.util.Log;
-import android.view.InflateException;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import java.io.InputStream;
-import java.io.IOException;
-import java.lang.ClassCastException;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-/**
- * Base dialog class for gears
- */
-class GearsBaseDialog {
-
-  private static final String TAG = "GearsNativeDialog";
-  protected Handler mHandler;
-  protected Activity mActivity;
-  protected String mDialogArguments;
-
-  private Bitmap mIcon;
-  private static final int MAX_ICON_SIZE = 64;
-  protected int mChoosenIconSize;
-
-  // Dialog closing types
-  public static final int CANCEL = 0;
-  public static final int ALWAYS_DENY = 1;
-  public static final int ALLOW = 2;
-  public static final int DENY = 3;
-  public static final int NEW_ICON = 4;
-  public static final int UPDATE_ICON = 5;
-  public static final int REQUEST_ICON = 6;
-  public static final int PAUSE_REQUEST_ICON = 7;
-  public static final int CLEAR_REQUEST_ICON = 8;
-
-  protected final String LOCAL_DATA_STRING = "localData";
-  protected final String LOCAL_STORAGE_STRING = "localStorage";
-  protected final String LOCATION_DATA_STRING = "locationData";
-
-  protected String mGearsVersion = "UNDEFINED";
-  protected boolean mDebug = false;
-
-  public GearsBaseDialog(Activity activity, Handler handler, String arguments) {
-    mActivity = activity;
-    mHandler = handler;
-    mDialogArguments = arguments;
-  }
-
-  Resources getResources() {
-    return mActivity.getResources();
-  }
-
-  Object getSystemService(String name) {
-    return mActivity.getSystemService(name);
-  }
-
-  View findViewById(int id) {
-    return mActivity.findViewById(id);
-  }
-
-  private String getString(int id) {
-    return mActivity.getString(id);
-  }
-
-  public void setDebug(boolean debug) {
-    mDebug = debug;
-  }
-
-  public void setGearsVersion(String version) {
-    mGearsVersion = version;
-  }
-
-  public String closeDialog(int closingType) {
-    return null;
-  }
-
-  /*
-   * Utility methods for setting up the dialogs elements
-   */
-
-  /**
-   * Inflate a given layout in a view (which has to be
-   * a ViewGroup, e.g. LinearLayout).
-   * This is used to share the basic dialog outline among
-   * the different dialog types.
-   */
-  void inflate(int layout, int viewID) {
-    LayoutInflater inflater = (LayoutInflater) getSystemService(
-        Context.LAYOUT_INFLATER_SERVICE);
-    View view = findViewById(viewID);
-    if (view != null) {
-      try {
-        ViewGroup viewGroup = (ViewGroup) view;
-        inflater.inflate(layout, viewGroup);
-      } catch (ClassCastException e) {
-        String msg = "exception, the view (" + view + ")";
-        msg += " is not a ViewGroup";
-        Log.e(TAG, msg, e);
-      } catch (InflateException e) {
-        Log.e(TAG, "exception while inflating the layout", e);
-      }
-    } else {
-      String msg = "problem, trying to inflate a non-existent view";
-      msg += " (" + viewID + ")";
-      Log.e(TAG, msg);
-    }
-  }
-
-  /**
-   * Button setup.
-   * Set the button's text and its listener. If the text resource's id
-   * is 0, makes the button invisible.
-   */
-  void setupButton(int buttonRscID,
-                   int rscString,
-                   View.OnClickListener listener,
-                   boolean isLink,
-                   boolean requestFocus) {
-    View view = findViewById(buttonRscID);
-    if (view == null) {
-      return;
-    }
-
-    Button button = (Button) view;
-
-    if (rscString == 0) {
-      button.setVisibility(View.GONE);
-    } else {
-      CharSequence text = getString(rscString);
-      button.setText(text);
-      button.setOnClickListener(listener);
-      if (isLink) {
-        displayAsLink(button);
-      }
-      if (requestFocus) {
-        button.requestFocus();
-      }
-    }
-  }
-
-  /**
-   * Button setup: as the above method, except that 'isLink' and
-   * 'requestFocus' default to false.
-   */
-  void setupButton(int buttonRsc, int rsc,
-                   View.OnClickListener listener) {
-    setupButton(buttonRsc, rsc, listener, false, false);
-  }
-
-  /**
-   * Utility method to setup the three dialog buttons.
-   */
-  void setupButtons(int alwaysDenyRsc, int allowRsc, int denyRsc) {
-    setupButton(R.id.button_alwaysdeny, alwaysDenyRsc,
-                new Button.OnClickListener() {
-                  public void onClick(View v) {
-                    mHandler.sendEmptyMessage(ALWAYS_DENY);
-                  }
-                });
-
-    setupButton(R.id.button_allow, allowRsc,
-                new Button.OnClickListener() {
-                  public void onClick(View v) {
-                    mHandler.sendEmptyMessage(ALLOW);
-                  }
-                });
-
-    setupButton(R.id.button_deny, denyRsc,
-                new Button.OnClickListener() {
-                  public void onClick(View v) {
-                    mHandler.sendEmptyMessage(DENY);
-                  }
-                });
-  }
-
-  /**
-   * Display a button as an HTML link. Remove the background, set the
-   * text color to R.color.dialog_link and draw an underline
-   */
-  void displayAsLink(Button button) {
-    if (button == null) {
-      return;
-    }
-
-    CharSequence text = button.getText();
-    button.setBackgroundDrawable(null);
-    int color = getResources().getColor(R.color.dialog_link);
-    button.setTextColor(color);
-    SpannableString str = new SpannableString(text);
-    str.setSpan(new UnderlineSpan(), 0, str.length(),
-                Spannable.SPAN_INCLUSIVE_INCLUSIVE);
-    button.setText(str);
-    button.setFocusable(false);
-  }
-
-  /**
-   * Utility method to set elements' text indicated in
-   * the dialogs' arguments.
-   */
-  void setLabel(JSONObject json, String name, int rsc) {
-    try {
-      if (json.has(name)) {
-        String text = json.getString(name);
-        View view = findViewById(rsc);
-        if (view != null && text != null) {
-          TextView textView = (TextView) view;
-          textView.setText(text);
-          textView.setVisibility(View.VISIBLE);
-        }
-      }
-    } catch (JSONException e) {
-      Log.e(TAG, "json exception", e);
-    }
-  }
-
-  /**
-   * Utility method to hide a view.
-   */
-  void hideView(View v, int rsc) {
-    if (rsc == 0) {
-      return;
-    }
-    View view;
-    if (v == null) {
-      view = findViewById(rsc);
-    } else {
-      view = v.findViewById(rsc);
-    }
-    if (view != null) {
-      view.setVisibility(View.GONE);
-    }
-  }
-
-  /**
-   * Utility method to show a view.
-   */
-  void showView(View v, int rsc) {
-    if (rsc == 0) {
-      return;
-    }
-    View view;
-    if (v == null) {
-      view = findViewById(rsc);
-    } else {
-      view = v.findViewById(rsc);
-    }
-    if (view != null) {
-      view.setVisibility(View.VISIBLE);
-    }
-  }
-
-  /**
-   * Utility method to set a text.
-   */
-  void setText(View v, int rsc, CharSequence text) {
-    if (rsc == 0) {
-      return;
-    }
-    View view = v.findViewById(rsc);
-    if (view != null) {
-      TextView textView = (TextView) view;
-      textView.setText(text);
-      textView.setVisibility(View.VISIBLE);
-    }
-  }
-
-  /**
-   * Utility method to set a text.
-   */
-  void setText(View v, int rsc, int txtRsc) {
-    if (rsc == 0) {
-      return;
-    }
-    View view = v.findViewById(rsc);
-    if (view != null) {
-      TextView textView = (TextView) view;
-      if (txtRsc == 0) {
-        textView.setVisibility(View.GONE);
-      } else {
-        CharSequence text = getString(txtRsc);
-        textView.setText(text);
-        textView.setVisibility(View.VISIBLE);
-      }
-    }
-  }
-
-  /**
-   * Utility class to download an icon in the background.
-   * Once done ask the UI thread to update the icon.
-   */
-  class IconDownload implements Runnable {
-    private String mUrlString;
-
-    IconDownload(String url) {
-      mUrlString = url;
-    }
-
-    public void run() {
-      if (mUrlString == null) {
-        return;
-      }
-      try {
-        URL url = new URL(mUrlString);
-        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
-        connection.setDoInput(true);
-        connection.connect();
-        InputStream is = connection.getInputStream();
-        Bitmap customIcon = BitmapFactory.decodeStream(is);
-        if (customIcon != null) {
-          mIcon = customIcon;
-          mHandler.sendEmptyMessage(UPDATE_ICON);
-        }
-      } catch (ClassCastException e) {
-        Log.e(TAG, "Class cast exception (" + mUrlString + ")", e);
-      } catch (MalformedURLException e) {
-        Log.e(TAG, "Malformed url (" + mUrlString + ") ", e);
-      } catch (IOException e) {
-        Log.e(TAG, "Exception downloading icon (" + mUrlString + ") ", e);
-      }
-    }
-  }
-
-  /**
-   * Utility method to update the icon.
-   * Called on the UI thread.
-   */
-  public void updateIcon() {
-    if (mIcon == null) {
-      return;
-    }
-    View view = findViewById(R.id.origin_icon);
-    if (view != null) {
-      ImageView imageView = (ImageView) view;
-      imageView.setMaxHeight(MAX_ICON_SIZE);
-      imageView.setMaxWidth(MAX_ICON_SIZE);
-      imageView.setScaleType(ImageView.ScaleType.FIT_XY);
-      imageView.setImageBitmap(mIcon);
-      imageView.setVisibility(View.VISIBLE);
-    }
-  }
-
-  /**
-   * Utility method to download an icon from a url and set
-   * it to the GUI element R.id.origin_icon.
-   * It is used both in the shortcut dialog and the
-   * permission dialog.
-   * The actual download is done in the background via
-   * IconDownload; once the icon is downlowded the UI is updated
-   * via updateIcon().
-   * The icon size is included in the layout with the choosen
-   * size, although not displayed, to limit text reflow once
-   * the icon is received.
-   */
-  void downloadIcon(String url) {
-    if (url == null) {
-      return;
-    }
-    View view = findViewById(R.id.origin_icon);
-    if (view != null) {
-      view.setMinimumWidth(mChoosenIconSize);
-      view.setMinimumHeight(mChoosenIconSize);
-      view.setVisibility(View.INVISIBLE);
-    }
-    Thread thread = new Thread(new IconDownload(url));
-    thread.start();
-  }
-
-  /**
-   * Utility method that get the dialogMessage
-   * and icon and ask the setupDialog(message,icon)
-   * method to set the values.
-   */
-  public void setupDialog() {
-    TextView dialogMessage = null;
-    ImageView icon = null;
-
-    View view = findViewById(R.id.dialog_message);
-    if (view != null) {
-      dialogMessage = (TextView) view;
-    }
-
-    View iconView = findViewById(R.id.icon);
-    if (iconView != null) {
-      icon = (ImageView) iconView;
-    }
-
-    if ((dialogMessage != null) && (icon != null)) {
-      setupDialog(dialogMessage, icon);
-      dialogMessage.setVisibility(View.VISIBLE);
-    }
-  }
-
-  /*
-   * Set the message and icon of the dialog
-   */
-  public void setupDialog(TextView message, ImageView icon) {
-    message.setText(R.string.unrecognized_dialog_message);
-    icon.setImageResource(R.drawable.ic_dialog_menu_generic);
-    message.setVisibility(View.VISIBLE);
-  }
-
-  /**
-   * Setup the dialog
-   * By default, just display a simple message.
-   */
-  public void setup() {
-    setupButtons(0, 0, R.string.default_button);
-    setupDialog();
-  }
-
-  /**
-   * Method called when the back button is pressed,
-   * allowing the dialog to intercept the default behaviour.
-   */
-  public boolean handleBackButton() {
-    return false;
-  }
-
-  /**
-   * Returns the resource string of the notification displayed
-   * after the dialog. By default, does not return one.
-   */
-  public int notification() {
-    return 0;
-  }
-
-  /**
-   * If a secondary dialog (e.g. a confirmation dialog) is created,
-   * GearsNativeDialog will call this method.
-   */
-  public Dialog onCreateDialog(int id) {
-    // This should be redefined by subclasses as needed.
-    return null;
-  }
-
-}
diff --git a/src/com/android/browser/GearsNativeDialog.java b/src/com/android/browser/GearsNativeDialog.java
deleted file mode 100644
index 192108a..0000000
--- a/src/com/android/browser/GearsNativeDialog.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * 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.app.Activity;
-import android.app.Dialog;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.util.Log;
-import android.view.Gravity;
-import android.view.KeyEvent;
-import android.view.Window;
-import android.widget.BaseAdapter;
-import android.widget.Toast;
-
-import android.webkit.gears.NativeDialog;
-
-import com.android.browser.GearsBaseDialog;
-import com.android.browser.GearsPermissionsDialog;
-import com.android.browser.GearsSettingsDialog;
-
-/**
- * Native dialog Activity used by gears
- * TODO: rename in GearsNativeDialogActivity
- * @hide
- */
-public class GearsNativeDialog extends Activity {
-
-  private static final String TAG = "GearsNativeDialog";
-
-  private String mDialogArguments;
-
-  private String mGearsVersion = null;
-
-  private boolean mDebug = false;
-
-  private int mDialogType;
-  private static final int SETTINGS_DIALOG = 1;
-  private static final int PERMISSION_DIALOG = 2;
-  private static final int LOCATION_DIALOG = 3;
-
-  private static final String VERSION_STRING = "version";
-  private static final String SETTINGS_DIALOG_STRING = "settings_dialog";
-  private static final String PERMISSION_DIALOG_STRING = "permissions_dialog";
-  private static final String LOCATION_DIALOG_STRING = "locations_dialog";
-
-  private boolean mDialogDismissed = false;
-
-  GearsBaseDialog dialog;
-
-  // Handler for callbacks to the UI thread
-  final Handler mHandler = new Handler() {
-    public void handleMessage(Message msg) {
-      if (msg.what == GearsBaseDialog.NEW_ICON) {
-        BaseAdapter adapter = (BaseAdapter) msg.obj;
-        adapter.notifyDataSetChanged();
-      } else if (msg.what == GearsBaseDialog.UPDATE_ICON) {
-        dialog.updateIcon();
-      } else if (msg.what == GearsBaseDialog.ALWAYS_DENY) {
-        closeDialog(GearsBaseDialog.ALWAYS_DENY);
-      } else if (msg.what == GearsBaseDialog.ALLOW) {
-        closeDialog(GearsBaseDialog.ALLOW);
-      } else if (msg.what == GearsBaseDialog.DENY) {
-        closeDialog(GearsBaseDialog.DENY);
-      }
-      super.handleMessage(msg);
-    }
-  };
-
-  @Override
-  public void onCreate(Bundle icicle) {
-    getArguments();
-    if (mDialogType == SETTINGS_DIALOG) {
-      setTheme(android.R.style.Theme);
-    }
-    super.onCreate(icicle);
-    if (mDialogType != SETTINGS_DIALOG) {
-      requestWindowFeature(Window.FEATURE_NO_TITLE);
-      setContentView(R.layout.gears_dialog);
-    }
-
-    switch (mDialogType) {
-      case SETTINGS_DIALOG:
-        dialog = new GearsSettingsDialog(this, mHandler, mDialogArguments);
-        dialog.setGearsVersion(mGearsVersion);
-        break;
-      case PERMISSION_DIALOG:
-        dialog = new GearsPermissionsDialog(this, mHandler, mDialogArguments);
-        break;
-      case LOCATION_DIALOG:
-        dialog = new GearsPermissionsDialog(this, mHandler, mDialogArguments);
-        break;
-      default:
-        dialog = new GearsBaseDialog(this, mHandler, mDialogArguments);
-    }
-    dialog.setDebug(mDebug);
-    dialog.setup();
-  }
-
-  /**
-   * Get the arguments for the dialog
-   *
-   * The dialog needs a json string as an argument, as
-   * well as a dialogType. In debug mode the arguments
-   * are mocked.
-   */
-  private void getArguments() {
-    if (mDebug) {
-      mDialogType = LOCATION_DIALOG +1;
-      mockArguments();
-
-      return;
-    }
-
-    Intent intent = getIntent();
-    mDialogArguments = intent.getStringExtra("dialogArguments");
-    String dialogTypeString = intent.getStringExtra("dialogType");
-    if (dialogTypeString == null) {
-      return;
-    }
-
-    if (Browser.LOGV_ENABLED) {
-      Log.v(TAG, "dialogtype: " + dialogTypeString);
-    }
-
-    if (dialogTypeString.equalsIgnoreCase(SETTINGS_DIALOG_STRING)) {
-      mDialogType = SETTINGS_DIALOG;
-      mGearsVersion = intent.getStringExtra(VERSION_STRING);
-    } else if (dialogTypeString.equalsIgnoreCase(PERMISSION_DIALOG_STRING)) {
-      mDialogType = PERMISSION_DIALOG;
-    } else if (dialogTypeString.equalsIgnoreCase(LOCATION_DIALOG_STRING)) {
-      mDialogType = LOCATION_DIALOG;
-    }
-  }
-
-  /**
-   * Utility method for debugging the dialog.
-   *
-   * Set mock arguments.
-   */
-  private void mockArguments() {
-
-    String argumentsPermissions = "{ locale: \"en-US\", "
-        + "origin: \"http://www.google.com\", dialogType: \"localData\","
-        + "customIcon: \"http://google-gears.googlecode.com/"
-        + "svn/trunk/gears/test/manual/shortcuts/32.png\","
-        + "customName: \"My Application\","
-        + "customMessage: \"Press the button to enable my "
-        + "application to run offline!\" };";
-
-    String argumentsPermissions2 = "{ locale: \"en-US\", "
-        + "origin: \"http://www.google.com\", dialogType: \"localData\" };";
-
-    String argumentsLocation = "{ locale: \"en-US\", "
-        + "origin: \"http://www.google.com\", dialogType: \"locationData\","
-        + "customIcon: \"http://google-gears.googlecode.com/"
-        + "svn/trunk/gears/test/manual/shortcuts/32.png\","
-        + "customName: \"My Application\","
-        + "customMessage: \"Press the button to enable my "
-        + "application to run offline!\" };";
-
-    String argumentsSettings = "{ locale: \"en-US\", permissions: [ { "
-        + "name: \"http://www.google.com\", "
-        + "localStorage: { permissionState: 0 }, "
-        + "locationData: { permissionState: 1 } }, "
-        + "{ name: \"http://www.aaronboodman.com\", "
-        + "localStorage: { permissionState: 1 }, "
-        + "locationData: { permissionState: 2 } }, "
-        + "{ name: \"http://www.evil.org\", "
-        + "localStorage: { permissionState: 2 }, "
-        + "locationData: { permissionState: 2 } } ] }";
-
-    switch (mDialogType) {
-      case PERMISSION_DIALOG:
-        mDialogArguments = argumentsPermissions;
-        break;
-      case LOCATION_DIALOG:
-        mDialogArguments = argumentsLocation;
-        break;
-      case SETTINGS_DIALOG:
-        mDialogArguments = argumentsSettings;
-        break;
-    }
-  }
-
-  /**
-   * Close the dialog and set the return string value.
-   */
-  private void closeDialog(int closingType) {
-    String ret = dialog.closeDialog(closingType);
-
-    if (mDebug) {
-      Log.v(TAG, "closeDialog ret value: " + ret);
-    }
-
-    NativeDialog.closeDialog(ret);
-    notifyEndOfDialog();
-    finish();
-
-    // If the dialog sets a notification, we display it.
-    int notification = dialog.notification();
-    if (notification != 0) {
-      Toast toast = Toast.makeText(this, notification, Toast.LENGTH_LONG);
-      toast.setGravity(Gravity.BOTTOM, 0, 0);
-      toast.show();
-    }
-  }
-
-  @Override
-  public void onDestroy() {
-    super.onDestroy();
-    // In case we reach this point without
-    // notifying NativeDialog, we do it now.
-    if (!mDialogDismissed) {
-      notifyEndOfDialog();
-    }
-  }
-
-  @Override
-  public void onPause(){
-    super.onPause();
-    if (!mDialogDismissed) {
-      closeDialog(GearsBaseDialog.CANCEL);
-    }
-  }
-
-  /**
-   * Signal to NativeDialog that we are done.
-   */
-  private void notifyEndOfDialog() {
-    NativeDialog.signalFinishedDialog();
-    mDialogDismissed = true;
-  }
-
-  /**
-   * 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 (!dialog.handleBackButton()) {
-        // if the dialog doesn't do anything with the back button
-        closeDialog(GearsBaseDialog.CANCEL);
-      }
-      return true; // event consumed
-    }
-    return super.dispatchKeyEvent(event);
-  }
-
-  /**
-   * If the dialog call showDialog() on ourself, we let
-   * it handle the creation of this secondary dialog.
-   * It is used in GearsSettingsDialog, to create the confirmation
-   * dialog when the user click on "Remove this site from Gears"
-   */
-  @Override
-  protected Dialog onCreateDialog(int id) {
-    return dialog.onCreateDialog(id);
-  }
-
-}
diff --git a/src/com/android/browser/GearsPermissions.java b/src/com/android/browser/GearsPermissions.java
deleted file mode 100644
index e48e045..0000000
--- a/src/com/android/browser/GearsPermissions.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * 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.util.Log;
-
-import java.util.HashMap;
-import java.util.Iterator;
-
-/**
- * The permission mechanism works the following way:
- *
- * PermissionType allows to define a type of permission
- *   (e.g. localStorage/locationData), storing a name and a set of
- *   resource ids corresponding to the GUI resources.
- *
- * Permission defines an actual permission instance, with a type and a value.
- *
- * OriginPermissions holds an origin with a set of Permission objects
- */
-class GearsPermissions {
-
-  private static final String TAG = "GearsPermissions";
-
-  /**
-   * Defines a type of permission
-   *
-   * Store the permission's name (used in the json result)
-   * Graphically, each permission is a label followed by two radio buttons.
-   * We store the resources ids here.
-   */
-  public static class PermissionType {
-    public static final int PERMISSION_NOT_SET = 0;
-    public static final int PERMISSION_ALLOWED = 1;
-    public static final int PERMISSION_DENIED = 2;
-
-    String mName;
-    int mTitleRsc;
-    int mSubtitleOnRsc;
-    int mSubtitleOffRsc;
-
-    PermissionType(String name) {
-      mName = name;
-    }
-
-    public void setResources(int titleRsc,
-        int subtitleOnRsc, int subtitleOffRsc) {
-      mTitleRsc = titleRsc;
-      mSubtitleOnRsc = subtitleOnRsc;
-      mSubtitleOffRsc = subtitleOffRsc;
-    }
-
-    public String getName() {
-      return mName;
-    }
-
-    public int getTitleRsc() {
-      return mTitleRsc;
-    }
-
-    public int getSubtitleOnRsc() {
-      return mSubtitleOnRsc;
-    }
-
-    public int getSubtitleOffRsc() {
-      return mSubtitleOffRsc;
-    }
-
-  }
-
-  /**
-   * Simple class to store an instance of a permission
-   *
-   * i.e. a permission type and a value
-   * Value can be either PERMISSION_NOT_SET,
-   * PERMISSION_ALLOWED or PERMISSION_DENIED
-   * (defined in PermissionType).
-   */
-  public static class Permission {
-    PermissionType mType;
-    int mValue;
-
-    Permission(PermissionType type, int value) {
-      mType = type;
-      mValue = value;
-    }
-
-    Permission(PermissionType type) {
-      mType = type;
-      mValue = 0;
-    }
-
-    public PermissionType getType() {
-      return mType;
-    }
-
-    public void setValue(int value) {
-      mValue = value;
-    }
-
-    public int getValue() {
-      return mValue;
-    }
-  }
-
-  /**
-   * Interface used by the GearsNativeDialog implementation
-   * to listen to changes in the permissions.
-   */
-  public interface PermissionsChangesListener {
-    public boolean setPermission(PermissionType type, int perm);
-  }
-
-  /**
-   * Holds the model for an origin -- each origin has a set of
-   * permissions.
-   */
-  public static class OriginPermissions {
-    HashMap<PermissionType, Permission> mPermissions;
-    String mOrigin;
-    public static PermissionsChangesListener mListener;
-
-    public static void setListener(PermissionsChangesListener listener) {
-      mListener = listener;
-    }
-
-    OriginPermissions(String anOrigin) {
-      mOrigin = anOrigin;
-      mPermissions = new HashMap<PermissionType, Permission>();
-    }
-
-    OriginPermissions(OriginPermissions perms) {
-      mOrigin = perms.getOrigin();
-      mPermissions = new HashMap<PermissionType, Permission>();
-      HashMap<PermissionType, Permission> permissions = perms.getPermissions();
-      Iterator<PermissionType> iterator = permissions.keySet().iterator();
-      while (iterator.hasNext()) {
-        Permission permission = permissions.get(iterator.next());
-        int value = permission.getValue();
-        setPermission(permission.getType(), value);
-      }
-    }
-
-    public String getOrigin() {
-      return mOrigin;
-    }
-
-    public HashMap<PermissionType, Permission> getPermissions() {
-      return mPermissions;
-    }
-
-    public int getPermission(PermissionType type) {
-      return mPermissions.get(type).getValue();
-    }
-
-    public void setPermission(PermissionType type, int perm) {
-      if (mPermissions.get(type) == null) {
-        Permission permission = new Permission(type, perm);
-        mPermissions.put(type, permission);
-        return;
-      }
-
-      if (mListener != null) {
-        mListener.setPermission(type, perm);
-      }
-
-      mPermissions.get(type).setValue(perm);
-    }
-
-    public void print() {
-      Log.v(TAG, "Permissions for " + mOrigin);
-      Iterator<PermissionType> iterator = mPermissions.keySet().iterator();
-      while (iterator.hasNext()) {
-        Permission permission = mPermissions.get(iterator.next());
-        String name = permission.getType().getName();
-        int value = permission.getValue();
-        Log.v(TAG, "  " + name + ": " + value);
-      }
-    }
-  }
-
-}
diff --git a/src/com/android/browser/GearsPermissionsDialog.java b/src/com/android/browser/GearsPermissionsDialog.java
deleted file mode 100644
index dbec363..0000000
--- a/src/com/android/browser/GearsPermissionsDialog.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * 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.app.Activity;
-import android.os.Handler;
-import android.util.Log;
-import android.view.Gravity;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-/**
- * Gears permission dialog
- */
-class GearsPermissionsDialog extends GearsBaseDialog {
-
-  private static final String TAG = "GearsPermissionsDialog";
-
-  private String mDialogType;
-  private int mNotification = 0;
-
-  public GearsPermissionsDialog(Activity activity,
-                                Handler handler,
-                                String arguments) {
-    super (activity, handler, arguments);
-  }
-
-  public void setup() {
-    inflate(R.layout.gears_dialog_permission, R.id.panel_content);
-    setupButtons(R.string.permission_button_alwaysdeny,
-                 R.string.permission_button_allow,
-                 R.string.permission_button_deny);
-
-    try {
-      JSONObject json = new JSONObject(mDialogArguments);
-
-      if (json.has("dialogType")) {
-        mDialogType = json.getString("dialogType");
-        setupDialog();
-      }
-
-      if (!json.has("customName")) {
-        setLabel(json, "origin", R.id.origin_title);
-        View titleView = findViewById(R.id.origin_title);
-        if (titleView != null) {
-          TextView title = (TextView) titleView;
-          title.setGravity(Gravity.CENTER);
-        }
-      } else {
-        setLabel(json, "customName", R.id.origin_title);
-        setLabel(json, "origin", R.id.origin_subtitle);
-        setLabel(json, "customMessage", R.id.origin_message);
-      }
-
-      if (json.has("customIcon")) {
-        String iconUrl = json.getString("customIcon");
-        mChoosenIconSize = 32;
-        downloadIcon(iconUrl);
-      }
-
-      View msg = findViewById(R.id.permission_dialog_message);
-      if (msg != null) {
-        TextView dialogMessage = (TextView) msg;
-        if (mDialogType.equalsIgnoreCase(LOCAL_DATA_STRING)) {
-          dialogMessage.setText(R.string.query_data_message);
-        } else if (mDialogType.equalsIgnoreCase(LOCATION_DATA_STRING)) {
-          dialogMessage.setText(R.string.location_message);
-        }
-      }
-
-    } catch (JSONException e) {
-      Log.e(TAG, "JSON exception ", e);
-    }
-  }
-
-  public void setupDialog(TextView message, ImageView icon) {
-    if (mDialogType.equalsIgnoreCase(LOCAL_DATA_STRING)) {
-      message.setText(R.string.query_data_prompt);
-      icon.setImageResource(android.R.drawable.ic_popup_disk_full);
-    } else if (mDialogType.equalsIgnoreCase(LOCATION_DATA_STRING)) {
-      message.setText(R.string.location_prompt);
-      icon.setImageResource(R.drawable.ic_dialog_menu_generic);
-    }
-  }
-
-  public String closeDialog(int closingType) {
-    String ret = null;
-    switch (closingType) {
-      case ALWAYS_DENY:
-        ret = "{\"allow\": false, \"permanently\": true }";
-        if (mDialogType.equalsIgnoreCase(LOCAL_DATA_STRING)) {
-          mNotification = R.string.storage_notification_alwaysdeny;
-        } else if (mDialogType.equalsIgnoreCase(LOCATION_DATA_STRING)) {
-          mNotification = R.string.location_notification_alwaysdeny;
-        }
-        break;
-      case ALLOW:
-        ret = "{\"allow\": true, \"permanently\": true }";
-        if (mDialogType.equalsIgnoreCase(LOCAL_DATA_STRING)) {
-          mNotification = R.string.storage_notification;
-        } else if (mDialogType.equalsIgnoreCase(LOCATION_DATA_STRING)) {
-          mNotification = R.string.location_notification;
-        }
-        break;
-      case DENY:
-        ret = "{\"allow\": false, \"permanently\": false }";
-        break;
-    }
-    return ret;
-  }
-
-  public int notification() {
-    return mNotification;
-  }
-}
diff --git a/src/com/android/browser/GearsSettingsDialog.java b/src/com/android/browser/GearsSettingsDialog.java
deleted file mode 100644
index 5ea2342..0000000
--- a/src/com/android/browser/GearsSettingsDialog.java
+++ /dev/null
@@ -1,460 +0,0 @@
-/*
- * 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.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.os.Handler;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.BaseAdapter;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.ImageView;
-import android.widget.ListAdapter;
-import android.widget.ListView;
-import android.widget.RadioButton;
-import android.widget.TextView;
-
-import com.android.browser.GearsPermissions.OriginPermissions;
-import com.android.browser.GearsPermissions.Permission;
-import com.android.browser.GearsPermissions.PermissionsChangesListener;
-import com.android.browser.GearsPermissions.PermissionType;
-
-import java.util.Vector;
-import java.util.List;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-/**
- * Gears Settings dialog
- */
-class GearsSettingsDialog extends GearsBaseDialog
-    implements PermissionsChangesListener {
-
-  private static final String TAG = "GearsPermissionsDialog";
-  private Vector<OriginPermissions> mSitesPermissions = null;
-  private Vector<OriginPermissions> mOriginalPermissions = null;
-  private Vector<OriginPermissions> mCurrentPermissions = null;
-
-  private Vector<PermissionType> mPermissions;
-  private static final int CONFIRMATION_REMOVE_DIALOG = 1;
-
-  // We declare the permissions globally to simplify the code
-  private final PermissionType LOCAL_STORAGE =
-      new PermissionType(LOCAL_STORAGE_STRING);
-  private final PermissionType LOCATION_DATA =
-      new PermissionType(LOCATION_DATA_STRING);
-
-  private boolean mChanges = false;
-
-  SettingsAdapter mListAdapter;
-
-  public GearsSettingsDialog(Activity activity,
-                             Handler handler,
-                             String arguments) {
-    super (activity, handler, arguments);
-    activity.setContentView(R.layout.gears_settings);
-  }
-
-  public void setup() {
-    // First let's add the permissions' resources
-    LOCAL_STORAGE.setResources(R.string.settings_storage_title,
-                               R.string.settings_storage_subtitle_on,
-                               R.string.settings_storage_subtitle_off);
-    LOCATION_DATA.setResources(R.string.settings_location_title,
-                               R.string.settings_location_subtitle_on,
-                               R.string.settings_location_subtitle_off);
-    // add the permissions to the list of permissions.
-    mPermissions = new Vector<PermissionType>();
-    mPermissions.add(LOCAL_STORAGE);
-    mPermissions.add(LOCATION_DATA);
-    OriginPermissions.setListener(this);
-
-
-    setupDialog();
-
-    // We manage the permissions using three vectors, mSitesPermissions,
-    // mOriginalPermissions and mCurrentPermissions.
-    // The dialog's arguments are parsed and a list of permissions is
-    // generated and stored in those three vectors.
-    // mOriginalPermissions is a separate copy and will not be modified;
-    // mSitesPermissions contains the current permissions _only_ --
-    // if an origin is removed, it is also removed from mSitesPermissions.
-    // Finally, mCurrentPermissions contains the current permissions and
-    // is a clone of mSitesPermissions, but removed sites aren't removed,
-    // their permissions are simply set to PERMISSION_NOT_SET. This
-    // allows us to easily generate the final difference between the
-    // original permissions and the final permissions, while directly
-    // using mSitesPermissions for the listView adapter (SettingsAdapter).
-
-    mSitesPermissions = new Vector<OriginPermissions>();
-    mOriginalPermissions = new Vector<OriginPermissions>();
-
-    try {
-      JSONObject json = new JSONObject(mDialogArguments);
-      if (json.has("permissions")) {
-        JSONArray jsonArray = json.getJSONArray("permissions");
-        for (int i = 0; i < jsonArray.length(); i++) {
-          JSONObject infos = jsonArray.getJSONObject(i);
-          String name = null;
-          int localStorage = PermissionType.PERMISSION_NOT_SET;
-          int locationData = PermissionType.PERMISSION_NOT_SET;
-          if (infos.has("name")) {
-            name = infos.getString("name");
-          }
-          if (infos.has(LOCAL_STORAGE_STRING)) {
-            JSONObject perm = infos.getJSONObject(LOCAL_STORAGE_STRING);
-            if (perm.has("permissionState")) {
-              localStorage = perm.getInt("permissionState");
-            }
-          }
-          if (infos.has(LOCATION_DATA_STRING)) {
-            JSONObject perm = infos.getJSONObject(LOCATION_DATA_STRING);
-            if (perm.has("permissionState")) {
-              locationData = perm.getInt("permissionState");
-            }
-          }
-          OriginPermissions perms = new OriginPermissions(name);
-          perms.setPermission(LOCAL_STORAGE, localStorage);
-          perms.setPermission(LOCATION_DATA, locationData);
-
-          mSitesPermissions.add(perms);
-          mOriginalPermissions.add(new OriginPermissions(perms));
-        }
-      }
-    } catch (JSONException e) {
-      Log.e(TAG, "JSON exception ", e);
-    }
-    mCurrentPermissions = (Vector<OriginPermissions>)mSitesPermissions.clone();
-
-    View listView = findViewById(R.id.sites_list);
-    if (listView != null) {
-      ListView list = (ListView) listView;
-      mListAdapter = new SettingsAdapter(mActivity, mSitesPermissions);
-      list.setAdapter(mListAdapter);
-      list.setScrollBarStyle(android.view.View.SCROLLBARS_OUTSIDE_INSET);
-      list.setOnItemClickListener(mListAdapter);
-    }
-    if (mDebug) {
-      printPermissions();
-    }
-  }
-
-  private void setMainTitle() {
-    String windowTitle = mActivity.getString(R.string.pref_extras_gears_settings);
-    mActivity.setTitle(windowTitle);
-  }
-
-  public void setupDialog() {
-    setMainTitle();
-  }
-
-  /**
-   * GearsPermissions.PermissionsChangesListener delegate
-   */
-  public boolean setPermission(PermissionType type, int perm) {
-    if (mChanges == false) {
-      mChanges = true;
-    }
-    return mChanges;
-  }
-
-  public boolean handleBackButton() {
-    return mListAdapter.backButtonPressed();
-  }
-
-  /**
-   * We use this to create a confirmation dialog when the user
-   * clicks on "remove this site from gears"
-   */
-  public Dialog onCreateDialog(int id) {
-    return new AlertDialog.Builder(mActivity)
-        .setTitle(R.string.settings_confirmation_remove_title)
-        .setMessage(R.string.settings_confirmation_remove)
-        .setPositiveButton(android.R.string.ok,
-                           new AlertDialog.OnClickListener() {
-          public void onClick(DialogInterface dlg, int which) {
-            mListAdapter.removeCurrentSite();
-          }
-        })
-        .setNegativeButton(android.R.string.cancel, null)
-        .setIcon(android.R.drawable.ic_dialog_alert)
-        .create();
-  }
-
-  /**
-   * Adapter class for the list view in the settings dialog
-   *
-   * We first display a list of all the origins (sites), or
-   * a message saying that no permission is set if the list is empty.
-   * When the user click on one of the origin, we then display
-   * the list of the permissions existing for that origin.
-   * Each permission can be either allowed or denied by clicking
-   * on the checkbox.
-   * The last row is a special case, allowing to remove the entire origin.
-   */
-  class SettingsAdapter extends BaseAdapter
-      implements AdapterView.OnItemClickListener {
-    private Activity mContext;
-    private List mItems;
-    private OriginPermissions mCurrentSite;
-    private Vector mCurrentPermissions;
-    private int MAX_ROW_HEIGHT = 64;
-
-    SettingsAdapter(Activity context, List items) {
-      mContext = context;
-      mItems = items;
-      mCurrentSite = null;
-    }
-
-    public int getCount() {
-      if (mCurrentSite == null) {
-        int size = mItems.size();
-        if (size == 0) {
-          return 1;
-        } else {
-          return size;
-        }
-      }
-      return mCurrentPermissions.size() + 1;
-    }
-
-    public long getItemId(int position) {
-      return position;
-    }
-
-    private String shortName(String url) {
-        // We remove the http and https prefix
-        if (url.startsWith("http://")) {
-          return url.substring(7);
-        }
-        if (url.startsWith("https://")) {
-          return url.substring(8);
-        }
-        return url;
-    }
-
-    public Object getItem(int position) {
-      if (mCurrentSite == null) {
-        if (mItems.size() == 0) {
-          return null;
-        } else {
-          return mItems.get(position);
-        }
-      }
-      return mCurrentPermissions.get(position);
-    }
-
-    public View getView(int position, View convertView, ViewGroup parent) {
-      View row = convertView;
-      if (row == null) { // no cached view, we create one
-        LayoutInflater inflater = (LayoutInflater) getSystemService(
-            Context.LAYOUT_INFLATER_SERVICE);
-        row = inflater.inflate(R.layout.gears_settings_row, null);
-      }
-      row.setMinimumHeight(MAX_ROW_HEIGHT);
-
-      if (mCurrentSite == null) {
-        if (mItems.size() == 0) {
-          hideView(row, R.id.title);
-          hideView(row, R.id.subtitle);
-          hideView(row, R.id.checkbox);
-          hideView(row, R.id.icon);
-          setText(row, R.id.info, R.string.settings_empty);
-        } else {
-          hideView(row, R.id.subtitle);
-          hideView(row, R.id.info);
-          hideView(row, R.id.checkbox);
-          OriginPermissions perms = (OriginPermissions) mItems.get(position);
-          setText(row, R.id.title, shortName(perms.getOrigin()));
-          showView(row, R.id.icon);
-        }
-      } else {
-        if (position == getCount() - 1) {
-          // last position: "remove this site from gears"
-          hideView(row, R.id.subtitle);
-          hideView(row, R.id.info);
-          hideView(row, R.id.checkbox);
-          hideView(row, R.id.icon);
-          setText(row, R.id.title, R.string.settings_remove_site);
-        } else {
-          hideView(row, R.id.info);
-          hideView(row, R.id.icon);
-          showView(row, R.id.checkbox);
-
-          PermissionType type =
-              (PermissionType) mCurrentPermissions.get(position);
-          setText(row, R.id.title, type.getTitleRsc());
-
-          View checkboxView = row.findViewById(R.id.checkbox);
-          if (checkboxView != null) {
-            CheckBox checkbox = (CheckBox) checkboxView;
-            int perm = mCurrentSite.getPermission(type);
-            if (perm == PermissionType.PERMISSION_DENIED) {
-              setText(row, R.id.subtitle, type.getSubtitleOffRsc());
-              checkbox.setChecked(false);
-            } else {
-              setText(row, R.id.subtitle, type.getSubtitleOnRsc());
-              checkbox.setChecked(true);
-            }
-          }
-        }
-      }
-      return row;
-    }
-
-    public void removeCurrentSite() {
-      mCurrentSite.setPermission(LOCAL_STORAGE,
-                                 PermissionType.PERMISSION_NOT_SET);
-      mCurrentSite.setPermission(LOCATION_DATA,
-                                 PermissionType.PERMISSION_NOT_SET);
-      mSitesPermissions.remove(mCurrentSite);
-      mCurrentSite = null;
-      setMainTitle();
-      notifyDataSetChanged();
-    }
-
-    public void onItemClick(AdapterView<?> parent,
-                            View view,
-                            int position,
-                            long id) {
-      if (mItems.size() == 0) {
-        return;
-      }
-      if (mCurrentSite == null) {
-         mCurrentSite = (OriginPermissions) mItems.get(position);
-         mCurrentPermissions = new Vector();
-         for (int i = 0; i < mPermissions.size(); i++) {
-           PermissionType type = mPermissions.get(i);
-           int perm = mCurrentSite.getPermission(type);
-           if (perm != PermissionType.PERMISSION_NOT_SET) {
-             mCurrentPermissions.add(type);
-           }
-         }
-         mContext.setTitle(shortName(mCurrentSite.getOrigin()));
-      } else {
-        if (position == getCount() - 1) { // last item (remove site)
-          // Ask the user to confirm
-          // If yes, removeCurrentSite() will be called via the dialog callback.
-          mActivity.showDialog(CONFIRMATION_REMOVE_DIALOG);
-        } else {
-          PermissionType type =
-              (PermissionType) mCurrentPermissions.get(position);
-          if (mCurrentSite.getPermission(type) ==
-              PermissionType.PERMISSION_ALLOWED) {
-            mCurrentSite.setPermission(type, PermissionType.PERMISSION_DENIED);
-          } else {
-            mCurrentSite.setPermission(type, PermissionType.PERMISSION_ALLOWED);
-          }
-        }
-      }
-      notifyDataSetChanged();
-    }
-
-    public boolean backButtonPressed() {
-      if (mCurrentSite != null) { // we intercept the back button
-        mCurrentSite = null;
-        setMainTitle();
-        notifyDataSetChanged();
-        return true;
-      }
-      return false;
-    }
-
-  }
-
-  /**
-   * Utility method used in debug mode to print the list of
-   * permissions (original values and current values).
-   */
-  public void printPermissions() {
-    Log.v(TAG, "Original Permissions: ");
-    for (int i = 0; i < mOriginalPermissions.size(); i++) {
-      OriginPermissions p = mOriginalPermissions.get(i);
-      p.print();
-    }
-    Log.v(TAG, "Current Permissions: ");
-    for (int i = 0; i < mSitesPermissions.size(); i++) {
-      OriginPermissions p = mSitesPermissions.get(i);
-      p.print();
-    }
-  }
-
-  /**
-   * Computes the difference between the original permissions and the
-   * current ones. Returns a json-formatted string.
-   * It is used by the Settings dialog.
-   */
-  public String computeDiff(boolean modif) {
-    String ret = null;
-    try {
-      JSONObject results = new JSONObject();
-      JSONArray permissions = new JSONArray();
-
-      for (int i = 0; modif && i < mOriginalPermissions.size(); i++) {
-        OriginPermissions original = mOriginalPermissions.get(i);
-        OriginPermissions current = mCurrentPermissions.get(i);
-        JSONObject permission = new JSONObject();
-        boolean modifications = false;
-
-        for (int j = 0; j < mPermissions.size(); j++) {
-          PermissionType type = mPermissions.get(j);
-
-          if (current.getPermission(type) != original.getPermission(type)) {
-            JSONObject state = new JSONObject();
-            state.put("permissionState", current.getPermission(type));
-            permission.put(type.getName(), state);
-            modifications = true;
-          }
-        }
-
-        if (modifications) {
-          permission.put("name", current.getOrigin());
-          permissions.put(permission);
-        }
-      }
-      results.put("modifiedOrigins", permissions);
-      ret = results.toString();
-    } catch (JSONException e) {
-      Log.e(TAG, "JSON exception ", e);
-    }
-    return ret;
-  }
-
-  public String closeDialog(int closingType) {
-    String ret = computeDiff(mChanges);
-
-    if (mDebug) {
-      printPermissions();
-    }
-
-    return ret;
-  }
-
-}
