am bc424c48: am 0fba5d94: fix auto-login dialog bug
* commit 'bc424c48b1a5eea9da514d744abb282a57ae7a75':
fix auto-login dialog bug
diff --git a/res/drawable-hdpi/bg_bookmark_widget_holo.9.png b/res/drawable-hdpi/bg_bookmark_widget_holo.9.png
deleted file mode 100644
index adb57a4..0000000
--- a/res/drawable-hdpi/bg_bookmark_widget_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/bg_bookmarks_widget_holo.9.png b/res/drawable-hdpi/bg_bookmarks_widget_holo.9.png
new file mode 100644
index 0000000..4fd263f
--- /dev/null
+++ b/res/drawable-hdpi/bg_bookmarks_widget_holo.9.png
Binary files differ
diff --git a/res/drawable-hdpi/browser_widget_preview.png b/res/drawable-hdpi/browser_widget_preview.png
new file mode 100644
index 0000000..4ee806b
--- /dev/null
+++ b/res/drawable-hdpi/browser_widget_preview.png
Binary files differ
diff --git a/res/drawable-hdpi/browsertab_add_focused.png b/res/drawable-hdpi/browsertab_add_focused.png
new file mode 100644
index 0000000..1490a61
--- /dev/null
+++ b/res/drawable-hdpi/browsertab_add_focused.png
Binary files differ
diff --git a/res/drawable-hdpi/btn_ic_back_bookmark_widget_holo_dark.png b/res/drawable-hdpi/btn_ic_back_bookmark_widget_holo_dark.png
deleted file mode 100644
index 5f975e5..0000000
--- a/res/drawable-hdpi/btn_ic_back_bookmark_widget_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/btn_ic_bookmark_bookmark_widget_holo_dark.png b/res/drawable-hdpi/btn_ic_bookmark_bookmark_widget_holo_dark.png
deleted file mode 100644
index 722f3b8..0000000
--- a/res/drawable-hdpi/btn_ic_bookmark_bookmark_widget_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_browser_bookmark_widget_holo.png b/res/drawable-hdpi/ic_browser_bookmark_widget_holo.png
deleted file mode 100644
index e583acd..0000000
--- a/res/drawable-hdpi/ic_browser_bookmark_widget_holo.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_btn_copy.png b/res/drawable-hdpi/ic_btn_copy.png
deleted file mode 100644
index 847cf7e..0000000
--- a/res/drawable-hdpi/ic_btn_copy.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_btn_find.png b/res/drawable-hdpi/ic_btn_find.png
deleted file mode 100644
index 0da38a1..0000000
--- a/res/drawable-hdpi/ic_btn_find.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_btn_select_all.png b/res/drawable-hdpi/ic_btn_select_all.png
deleted file mode 100644
index 9545a53..0000000
--- a/res/drawable-hdpi/ic_btn_select_all.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_btn_stop_v2.png b/res/drawable-hdpi/ic_btn_stop_v2.png
deleted file mode 100644
index 2c97223..0000000
--- a/res/drawable-hdpi/ic_btn_stop_v2.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_clear_search.png b/res/drawable-hdpi/ic_clear_search.png
deleted file mode 100644
index e8e67b4..0000000
--- a/res/drawable-hdpi/ic_clear_search.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_history_holo_dark.png b/res/drawable-hdpi/ic_history_holo_dark.png
deleted file mode 100644
index 7972a81..0000000
--- a/res/drawable-hdpi/ic_history_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_most_visited_holo_dark.png b/res/drawable-hdpi/ic_most_visited_holo_dark.png
deleted file mode 100644
index bbb0bf6..0000000
--- a/res/drawable-hdpi/ic_most_visited_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_pie_back.png b/res/drawable-hdpi/ic_pie_back.png
deleted file mode 100644
index 32b3ea7..0000000
--- a/res/drawable-hdpi/ic_pie_back.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_pie_bookmarks.png b/res/drawable-hdpi/ic_pie_bookmarks.png
deleted file mode 100644
index 2536856..0000000
--- a/res/drawable-hdpi/ic_pie_bookmarks.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_pie_close_tab.png b/res/drawable-hdpi/ic_pie_close_tab.png
deleted file mode 100644
index 108f8da..0000000
--- a/res/drawable-hdpi/ic_pie_close_tab.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_pie_forward.png b/res/drawable-hdpi/ic_pie_forward.png
deleted file mode 100644
index 4e5f08e..0000000
--- a/res/drawable-hdpi/ic_pie_forward.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_pie_more.png b/res/drawable-hdpi/ic_pie_more.png
deleted file mode 100644
index 0833ee2..0000000
--- a/res/drawable-hdpi/ic_pie_more.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_pie_new_tab.png b/res/drawable-hdpi/ic_pie_new_tab.png
deleted file mode 100644
index 18f49ef..0000000
--- a/res/drawable-hdpi/ic_pie_new_tab.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_pie_refresh.png b/res/drawable-hdpi/ic_pie_refresh.png
deleted file mode 100644
index f0a5d7a..0000000
--- a/res/drawable-hdpi/ic_pie_refresh.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_pie_search.png b/res/drawable-hdpi/ic_pie_search.png
deleted file mode 100644
index f1c8825..0000000
--- a/res/drawable-hdpi/ic_pie_search.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_pie_tabs.png b/res/drawable-hdpi/ic_pie_tabs.png
deleted file mode 100644
index b941285..0000000
--- a/res/drawable-hdpi/ic_pie_tabs.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_thumbnail_view_holo_dark.png b/res/drawable-hdpi/ic_thumbnail_view_holo_dark.png
new file mode 100644
index 0000000..514b7dc
--- /dev/null
+++ b/res/drawable-hdpi/ic_thumbnail_view_holo_dark.png
Binary files differ
diff --git a/res/drawable-hdpi/list_divider_vert.9.png b/res/drawable-hdpi/list_divider_vert.9.png
deleted file mode 100644
index d99730a..0000000
--- a/res/drawable-hdpi/list_divider_vert.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/page_indicator.png b/res/drawable-hdpi/page_indicator.png
deleted file mode 100644
index d00b900..0000000
--- a/res/drawable-hdpi/page_indicator.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/page_indicator_unselected2.png b/res/drawable-hdpi/page_indicator_unselected2.png
deleted file mode 100644
index a34fd2e..0000000
--- a/res/drawable-hdpi/page_indicator_unselected2.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/qc_background_normal.png b/res/drawable-hdpi/qc_background_normal.png
new file mode 100644
index 0000000..fec04f2
--- /dev/null
+++ b/res/drawable-hdpi/qc_background_normal.png
Binary files differ
diff --git a/res/drawable-hdpi/search_plate_browser.9.png b/res/drawable-hdpi/search_plate_browser.9.png
deleted file mode 100644
index cf0567b..0000000
--- a/res/drawable-hdpi/search_plate_browser.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/tab_nr.png b/res/drawable-hdpi/tab_nr.png
new file mode 100644
index 0000000..d9e74d5
--- /dev/null
+++ b/res/drawable-hdpi/tab_nr.png
Binary files differ
diff --git a/res/drawable-hdpi/text_field_results.9.png b/res/drawable-hdpi/text_field_results.9.png
deleted file mode 100644
index bd4bcc5..0000000
--- a/res/drawable-hdpi/text_field_results.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png b/res/drawable-hdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png
new file mode 100644
index 0000000..9d55e98
--- /dev/null
+++ b/res/drawable-hdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png
Binary files differ
diff --git a/res/drawable-hdpi/url_bg_active.9.png b/res/drawable-hdpi/url_bg_active.9.png
new file mode 100644
index 0000000..479acb1
--- /dev/null
+++ b/res/drawable-hdpi/url_bg_active.9.png
Binary files differ
diff --git a/res/drawable-hdpi/url_bg_default.9.png b/res/drawable-hdpi/url_bg_default.9.png
new file mode 100644
index 0000000..7db9db4
--- /dev/null
+++ b/res/drawable-hdpi/url_bg_default.9.png
Binary files differ
diff --git a/res/drawable-hdpi/urlbar_bg.9.png b/res/drawable-hdpi/urlbar_bg.9.png
deleted file mode 100644
index c35383e..0000000
--- a/res/drawable-hdpi/urlbar_bg.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/bg_bookmark_widget_holo.9.png b/res/drawable-mdpi/bg_bookmark_widget_holo.9.png
deleted file mode 100644
index d95f8d3..0000000
--- a/res/drawable-mdpi/bg_bookmark_widget_holo.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/browser_widget_preview.png b/res/drawable-mdpi/browser_widget_preview.png
similarity index 100%
rename from res/drawable/browser_widget_preview.png
rename to res/drawable-mdpi/browser_widget_preview.png
Binary files differ
diff --git a/res/drawable-mdpi/btn_ic_back_bookmark_widget_holo_dark.png b/res/drawable-mdpi/btn_ic_back_bookmark_widget_holo_dark.png
deleted file mode 100644
index d8697b8..0000000
--- a/res/drawable-mdpi/btn_ic_back_bookmark_widget_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/btn_ic_bookmark_bookmark_widget_holo_dark.png b/res/drawable-mdpi/btn_ic_bookmark_bookmark_widget_holo_dark.png
deleted file mode 100644
index 21a2cc3..0000000
--- a/res/drawable-mdpi/btn_ic_bookmark_bookmark_widget_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_browser_bookmark_widget_holo.png b/res/drawable-mdpi/ic_browser_bookmark_widget_holo.png
deleted file mode 100644
index 0d9e49d..0000000
--- a/res/drawable-mdpi/ic_browser_bookmark_widget_holo.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_btn_copy.png b/res/drawable-mdpi/ic_btn_copy.png
deleted file mode 100644
index 2174368..0000000
--- a/res/drawable-mdpi/ic_btn_copy.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_btn_find.png b/res/drawable-mdpi/ic_btn_find.png
deleted file mode 100644
index 71bc61a..0000000
--- a/res/drawable-mdpi/ic_btn_find.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_btn_select_all.png b/res/drawable-mdpi/ic_btn_select_all.png
deleted file mode 100644
index 8ce8c8f..0000000
--- a/res/drawable-mdpi/ic_btn_select_all.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_btn_stop_v2.png b/res/drawable-mdpi/ic_btn_stop_v2.png
deleted file mode 100644
index 89f01e7..0000000
--- a/res/drawable-mdpi/ic_btn_stop_v2.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_clear_search.png b/res/drawable-mdpi/ic_clear_search.png
deleted file mode 100644
index e8e67b4..0000000
--- a/res/drawable-mdpi/ic_clear_search.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_history_holo_dark.png b/res/drawable-mdpi/ic_history_holo_dark.png
deleted file mode 100644
index 44f2245..0000000
--- a/res/drawable-mdpi/ic_history_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_most_visited_holo_dark.png b/res/drawable-mdpi/ic_most_visited_holo_dark.png
deleted file mode 100644
index 52082bd..0000000
--- a/res/drawable-mdpi/ic_most_visited_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_pie_back.png b/res/drawable-mdpi/ic_pie_back.png
deleted file mode 100644
index daddaea..0000000
--- a/res/drawable-mdpi/ic_pie_back.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_pie_bookmarks.png b/res/drawable-mdpi/ic_pie_bookmarks.png
deleted file mode 100644
index ffa430d..0000000
--- a/res/drawable-mdpi/ic_pie_bookmarks.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_pie_close_tab.png b/res/drawable-mdpi/ic_pie_close_tab.png
deleted file mode 100644
index 62396f4..0000000
--- a/res/drawable-mdpi/ic_pie_close_tab.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_pie_forward.png b/res/drawable-mdpi/ic_pie_forward.png
deleted file mode 100644
index bd8dcac..0000000
--- a/res/drawable-mdpi/ic_pie_forward.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_pie_more.png b/res/drawable-mdpi/ic_pie_more.png
deleted file mode 100644
index c96c6a4..0000000
--- a/res/drawable-mdpi/ic_pie_more.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_pie_new_tab.png b/res/drawable-mdpi/ic_pie_new_tab.png
deleted file mode 100644
index 206675a..0000000
--- a/res/drawable-mdpi/ic_pie_new_tab.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_pie_refresh.png b/res/drawable-mdpi/ic_pie_refresh.png
deleted file mode 100644
index 5980f8b..0000000
--- a/res/drawable-mdpi/ic_pie_refresh.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_pie_search.png b/res/drawable-mdpi/ic_pie_search.png
deleted file mode 100644
index 6981697..0000000
--- a/res/drawable-mdpi/ic_pie_search.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_pie_tabs.png b/res/drawable-mdpi/ic_pie_tabs.png
deleted file mode 100644
index fda262a..0000000
--- a/res/drawable-mdpi/ic_pie_tabs.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_pie_web.png b/res/drawable-mdpi/ic_pie_web.png
deleted file mode 100644
index 86e41ff..0000000
--- a/res/drawable-mdpi/ic_pie_web.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_thumbnail_view_holo_dark.png b/res/drawable-mdpi/ic_thumbnail_view_holo_dark.png
new file mode 100644
index 0000000..95c674d
--- /dev/null
+++ b/res/drawable-mdpi/ic_thumbnail_view_holo_dark.png
Binary files differ
diff --git a/res/drawable-mdpi/list_divider_vert.9.png b/res/drawable-mdpi/list_divider_vert.9.png
deleted file mode 100644
index d99730a..0000000
--- a/res/drawable-mdpi/list_divider_vert.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/page_indicator.png b/res/drawable-mdpi/page_indicator.png
deleted file mode 100644
index 73c030a..0000000
--- a/res/drawable-mdpi/page_indicator.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/page_indicator_unselected2.png b/res/drawable-mdpi/page_indicator_unselected2.png
deleted file mode 100644
index 70818ee..0000000
--- a/res/drawable-mdpi/page_indicator_unselected2.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/search_plate_browser.9.png b/res/drawable-mdpi/search_plate_browser.9.png
deleted file mode 100644
index 2370d9c..0000000
--- a/res/drawable-mdpi/search_plate_browser.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/text_field_results.9.png b/res/drawable-mdpi/text_field_results.9.png
deleted file mode 100644
index 167c42d..0000000
--- a/res/drawable-mdpi/text_field_results.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/urlbar_bg.9.png b/res/drawable-mdpi/urlbar_bg.9.png
deleted file mode 100644
index 18b49e7..0000000
--- a/res/drawable-mdpi/urlbar_bg.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/url_selector.xml b/res/drawable/url_selector.xml
new file mode 100644
index 0000000..d4febe6
--- /dev/null
+++ b/res/drawable/url_selector.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector
+ xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:state_focused="true"
+ android:drawable="@drawable/url_bg_active" />
+ <item
+ android:state_focused="false"
+ android:drawable="@drawable/url_bg_default" />
+</selector>
\ No newline at end of file
diff --git a/res/layout-xlarge/history.xml b/res/layout-xlarge/history.xml
new file mode 100644
index 0000000..2d949e1
--- /dev/null
+++ b/res/layout-xlarge/history.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+>
+
+ <ViewStub
+ android:id="@+id/pref_stub"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:inflatedId="@+id/history" />
+
+ <TextView android:id="@android:id/empty"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:textAppearance="?android:attr/textAppearanceLarge"
+ android:text="@string/empty_history"
+ android:visibility="gone"
+ />
+
+</FrameLayout>
diff --git a/res/layout/active_tabs.xml b/res/layout/active_tabs.xml
index 8b5fe9e..f9bd6b0 100644
--- a/res/layout/active_tabs.xml
+++ b/res/layout/active_tabs.xml
@@ -14,31 +14,41 @@
limitations under the License.
-->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical"
- android:background="@color/black"
- >
- <RelativeLayout
- style="?android:attr/windowTitleBackgroundStyle"
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content">
+
+ <Button
+ android:id="@+id/new_tab"
+ android:text="@string/new_tab"
+ android:layout_width="0dip"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:singleLine="true"
+ android:textAppearance="?android:attr/textAppearanceSmall" />
+
+ <Button
+ android:id="@+id/new_incognito_tab"
+ android:text="@string/new_incognito_tab"
+ android:layout_width="0dip"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:singleLine="true"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:paddingLeft="0dip"
+ android:paddingRight="0dip" />
+
+ </LinearLayout>
+
+ <ListView
+ android:id="@android:id/list"
android:layout_width="match_parent"
- android:layout_height="?android:attr/windowTitleSize"
- >
- <TextView android:id="@android:id/title"
- style="?android:attr/windowTitleStyle"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@null"
- android:fadingEdge="horizontal"
- android:gravity="center_vertical"
- android:text="@string/active_tabs"
- />
- </RelativeLayout>
- <ListView android:id="@+id/list"
- android:layout_width="match_parent"
- android:layout_height="0dip"
- android:layout_weight="1"
- android:cacheColorHint="@color/black"
- />
-</LinearLayout>
+ android:layout_height="match_parent"
+ android:listSelector="@drawable/bookmark_thumb_selector"
+ android:drawSelectorOnTop="true"
+ android:focusable="true"
+ android:focusableInTouchMode="true" />
+
+</merge>
diff --git a/res/layout/history.xml b/res/layout/history.xml
index f7d2c7c..f3adb51 100644
--- a/res/layout/history.xml
+++ b/res/layout/history.xml
@@ -19,11 +19,10 @@
android:layout_height="match_parent"
>
- <ViewStub
- android:id="@+id/pref_stub"
+ <ExpandableListView
+ android:id="@+id/history"
android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:inflatedId="@+id/history" />
+ android:layout_width="match_parent" />
<TextView android:id="@android:id/empty"
android:layout_width="wrap_content"
diff --git a/res/layout/preference_list_content.xml b/res/layout/preference_list_content.xml
new file mode 100644
index 0000000..ad3d64e
--- /dev/null
+++ b/res/layout/preference_list_content.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2011 The Android Open Source Project Licensed under the
+ Apache License, Version 2.0 (the "License"); you may not use this file
+ except in compliance with the License. You may obtain a copy of the
+ License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+ applicable law or agreed to in writing, software distributed under the
+ License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+ CONDITIONS OF ANY KIND, either express or implied. See the License for
+ the specific language governing permissions and limitations under the
+ License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent">
+
+ <LinearLayout
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="0px"
+ android:layout_weight="1">
+
+ <LinearLayout
+ android:id="@+id/headers"
+ android:orientation="vertical"
+ android:layout_width="0px"
+ android:layout_height="match_parent"
+ android:layout_marginRight="@dimen/preference_screen_side_margin_negative"
+ android:layout_marginLeft="@dimen/preference_screen_side_margin"
+ android:layout_marginTop="32dp"
+ android:layout_marginBottom="32dp"
+ android:layout_weight="10">
+
+ <ListView android:id="@android:id/list"
+ android:layout_width="match_parent"
+ android:layout_height="0px"
+ android:layout_weight="1"
+ android:drawSelectorOnTop="false"
+ android:cacheColorHint="@android:color/transparent"
+ android:listPreferredItemHeight="48dp"
+ android:scrollbarAlwaysDrawVerticalTrack="true" />
+
+ <FrameLayout android:id="@+id/list_footer"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="0" />
+
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/prefs_frame"
+ android:layout_width="0px"
+ android:layout_height="match_parent"
+ android:layout_weight="20"
+ android:layout_marginLeft="@dimen/preference_screen_side_margin"
+ android:layout_marginRight="@dimen/preference_screen_side_margin"
+ android:layout_marginTop="16dp"
+ android:layout_marginBottom="16dp"
+ android:background="?android:attr/detailsElementBackground"
+ android:orientation="vertical"
+ android:visibility="gone" >
+
+ <!-- Breadcrumb inserted here -->
+ <android.app.FragmentBreadCrumbs
+ android:id="@android:id/title"
+ android:layout_height="72dip"
+ android:layout_width="match_parent"
+ android:paddingTop="16dip"
+ android:paddingBottom="8dip"
+ android:gravity="center_vertical|left"
+ android:layout_marginLeft="48dip"
+ android:layout_marginRight="48dip"
+ />
+
+ <ImageView
+ android:layout_width="match_parent"
+ android:layout_height="1dip"
+ android:paddingLeft="32dip"
+ android:paddingRight="32dip"
+ android:src="#404040"
+ />
+ <android.preference.PreferenceFrameLayout android:id="@+id/prefs"
+ android:layout_width="match_parent"
+ android:layout_height="0dip"
+ android:layout_weight="1"
+ android:layout_marginTop="-1dip"
+ />
+ </LinearLayout>
+ </LinearLayout>
+</LinearLayout>
diff --git a/res/layout/tab_view.xml b/res/layout/tab_view.xml
index 885f4cf..8ffb73d 100644
--- a/res/layout/tab_view.xml
+++ b/res/layout/tab_view.xml
@@ -20,42 +20,54 @@
android:layout_width="match_parent"
android:orientation="horizontal"
android:gravity="center_vertical"
+ android:paddingLeft="8dip"
+ android:paddingTop="4dip"
+ android:paddingBottom="4dip"
>
- <!-- This ImageView has the same width as the ImageView in
- tab_view_add_tab.xml. -->
- <ImageView android:id="@+id/favicon"
- android:layout_width="20dip"
- android:layout_height="20dip"
- android:layout_marginLeft="18dip"
- android:layout_marginRight="18dip"
- android:background="@drawable/fav_icn_background"
- android:padding="2dip"/>
- <LinearLayout
+ <RelativeLayout
+ android:id="@+id/list_item"
android:layout_width="0dip"
- android:layout_height="wrap_content"
android:layout_weight="1"
- android:orientation="vertical"
- >
- <TextView android:id="@+id/title"
+ android:layout_height="wrap_content"
+ android:background="@drawable/bookmark_list_favicon_bg">
+ <ImageView
+ android:id="@+id/thumb"
+ android:src="@drawable/thumbnail_bookmarks_widget_no_bookmark_holo"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/tab_view_thumbnail_height"
+ android:scaleType="fitXY"
+ android:cropToPadding="true" />
+ <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:maxLines="1"
- android:singleLine="true"
- android:ellipsize="end"
- />
- <TextView android:id="@+id/url"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:maxLines="1"
- android:singleLine="true"
- android:ellipsize="end"
- />
- </LinearLayout>
+ android:layout_alignBottom="@id/thumb"
+ android:background="@color/tabViewTitleBackground">
+ <ImageView
+ android:id="@+id/favicon"
+ android:src="@drawable/app_web_browser_sm"
+ android:layout_width="@dimen/favicon_size"
+ android:layout_height="@dimen/favicon_size"
+ android:layout_gravity="center_vertical"
+ android:layout_marginLeft="4dip"
+ android:layout_marginRight="8dip"
+ android:layout_marginTop="4dip"
+ android:layout_marginBottom="4dip"
+ android:scaleType="fitXY" />
+ <TextView
+ android:id="@+id/label"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:singleLine="true"
+ android:ellipsize="end"
+ android:textSize="12sp"
+ android:typeface="sans"
+ android:textColor="@android:color/white" />
+ </LinearLayout>
+ </RelativeLayout>
<View android:id="@+id/divider"
- android:background="#ff313431"
- android:layout_width="1dip"
+ android:background="?android:attr/dividerVertical"
+ android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginLeft="8dip"
android:layout_marginTop="5dip"
@@ -64,10 +76,10 @@
<view class="com.android.browser.ActiveTabsPage$CloseHolder" android:id="@+id/close"
android:layout_width="wrap_content"
android:layout_height="match_parent"
- android:paddingLeft="18dip"
- android:paddingRight="18dip"
- android:background="@drawable/close_background"
- android:src="@drawable/btn_close_window"
+ android:paddingLeft="12dip"
+ android:paddingRight="12dip"
+ android:background="@drawable/bookmark_thumb_selector"
+ android:src="@drawable/ic_close_window_holo_dark"
android:scaleType="center"
/>
</LinearLayout>
diff --git a/res/layout/tab_view_add_incognito_tab.xml b/res/layout/tab_view_add_incognito_tab.xml
deleted file mode 100644
index 43fcb43..0000000
--- a/res/layout/tab_view_add_incognito_tab.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="wrap_content"
- android:minHeight="?android:attr/listPreferredItemHeight"
- android:layout_width="match_parent"
- android:orientation="horizontal"
- android:gravity="center_vertical"
- >
- <ImageView
- android:layout_width="40dip"
- android:layout_height="40dip"
- android:layout_marginLeft="8dip"
- android:layout_marginRight="8dip"
- android:src="@drawable/ic_new_window_holo_dark"/>
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:maxLines="1"
- android:singleLine="true"
- android:ellipsize="end"
- android:text="@string/new_incognito_tab"
- />
-</LinearLayout>
diff --git a/res/layout/tab_view_add_tab.xml b/res/layout/tab_view_add_tab.xml
deleted file mode 100644
index f4e0f02..0000000
--- a/res/layout/tab_view_add_tab.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="wrap_content"
- android:minHeight="?android:attr/listPreferredItemHeight"
- android:layout_width="match_parent"
- android:orientation="horizontal"
- android:gravity="center_vertical"
- >
- <ImageView
- android:layout_width="40dip"
- android:layout_height="40dip"
- android:layout_marginLeft="8dip"
- android:layout_marginRight="8dip"
- android:src="@drawable/ic_new_window_holo_dark"/>
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:maxLines="1"
- android:singleLine="true"
- android:ellipsize="end"
- android:text="@string/new_tab"
- />
-</LinearLayout>
diff --git a/res/layout/title_bar.xml b/res/layout/title_bar.xml
index 99ac04d..e443ee5 100644
--- a/res/layout/title_bar.xml
+++ b/res/layout/title_bar.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright 2009, The Android Open Source Project
+ Copyright 2011, The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -14,13 +14,13 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/titlebar"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical" >
-
+ android:layout_height="wrap_content">
<LinearLayout
+ android:id="@+id/taburlbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
@@ -28,71 +28,120 @@
android:paddingLeft="4dip"
android:paddingRight="4dip"
android:paddingTop="2dip"
- android:paddingBottom="1dip"
- >
-
- <LinearLayout android:id="@+id/title_bg"
+ android:paddingBottom="2dip">
+ <LinearLayout
+ android:id="@+id/title_bg"
android:layout_width="0dip"
android:layout_weight="1.0"
- android:layout_height="48dip"
- android:layout_marginBottom="4dip"
+ android:layout_height="40dip"
android:gravity="center_vertical"
- android:orientation="horizontal"
- android:background="@drawable/url_background"
- >
- <ImageView android:id="@+id/favicon"
- android:layout_width="20dip"
- android:layout_height="20dip"
- />
- <ImageView android:id="@+id/lock"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="3dip"
- android:visibility="gone"
- />
- <com.android.browser.UrlInputView
- android:id="@+id/url_input"
- android:focusable="true"
- android:layout_width="0dip"
- android:layout_weight="1.0"
- android:layout_height="match_parent"
- android:layout_marginLeft="3dip"
- android:paddingLeft="0dip"
- android:paddingRight="0dip"
- android:background="@null"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:hint="@string/search_hint"
- android:singleLine="true"
- android:ellipsize="end"
- android:lines="1"
- android:scrollHorizontally="true"
- android:inputType="textUri"
- android:imeOptions="actionGo"
- style="@style/Suggestions" />
+ android:orientation="horizontal">
+ <ImageView
+ android:id="@+id/favicon"
+ android:layout_width="20dip"
+ android:layout_height="20dip" />
+ <ImageView
+ android:id="@+id/lock"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="2dip"
+ android:visibility="gone" />
+ <com.android.browser.UrlInputView
+ android:id="@+id/url"
+ android:focusable="true"
+ android:layout_width="0dip"
+ android:layout_weight="1.0"
+ android:layout_height="match_parent"
+ android:layout_marginLeft="2dip"
+ android:paddingLeft="4dip"
+ android:paddingRight="4dip"
+ android:background="@drawable/url_selector"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:hint="@string/search_hint"
+ android:singleLine="true"
+ android:ellipsize="end"
+ android:lines="1"
+ android:scrollHorizontally="true"
+ android:inputType="textUri"
+ android:imeOptions="actionGo"
+ style="@style/Suggestions" />
</LinearLayout>
- <ImageButton
+ <ImageView
+ android:id="@+id/voice"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:src="@drawable/ic_voice_search_holo_dark"
+ android:visibility="gone" />
+ <ImageView
android:id="@+id/stop"
android:layout_width="wrap_content"
- android:layout_height="match_parent"
- style="@style/HoloButton"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
android:src="@drawable/ic_stop_holo_dark"
- android:visibility="gone"
- />
- <ImageButton
- android:id="@+id/bookmark"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- style="@style/HoloButton"
- android:src="@drawable/btn_imageview_star"
- />
+ android:visibility="gone" />
</LinearLayout>
-
+ <LinearLayout
+ android:id="@+id/autologin"
+ android:background="#FBF0A0"
+ android:gravity="center_vertical"
+ android:paddingTop="3dip"
+ android:visibility="gone"
+ android:layout_below="@+id/taburlbar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+ <TextView
+ android:text="@string/autologin_bar_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textColor="@android:color/primary_text_light"
+ android:paddingLeft="15dip"
+ android:paddingRight="15dip"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+ <Spinner
+ android:id="@+id/autologin_account"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ style="@android:style/Widget.Holo.Light.Spinner" />
+ <Button
+ android:id="@+id/autologin_login"
+ android:text="@string/autologin_bar_login_text"
+ style="@android:style/Widget.Holo.Light.Button"
+ android:layout_marginRight="15dip"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content" />
+ <ProgressBar
+ android:id="@+id/autologin_progress"
+ android:indeterminateOnly="true"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:visibility="gone" />
+ <TextView
+ android:id="@+id/autologin_error"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:textColor="#dd6826"
+ android:text="@string/autologin_bar_error"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:visibility="gone" />
+ <View
+ android:layout_width="2dip"
+ android:layout_height="match_parent"
+ android:layout_weight="1" />
+ <ImageButton
+ android:id="@+id/autologin_close"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingRight="15dip"
+ android:background="@null"
+ android:src="@*android:drawable/btn_close" />
+ </LinearLayout>
<com.android.browser.PageProgressView
- android:id="@+id/progress_horizontal"
+ android:id="@+id/progress"
android:layout_width="match_parent"
android:layout_height="22dip"
android:background="@null"
+ android:layout_below="@+id/taburlbar"
android:src="@drawable/progress"
android:layout_marginTop="-11dip"
android:visibility="gone" />
-</LinearLayout>
+</RelativeLayout>
\ No newline at end of file
diff --git a/res/layout/url_bar.xml b/res/layout/url_bar.xml
index 8743906..3864b7d 100644
--- a/res/layout/url_bar.xml
+++ b/res/layout/url_bar.xml
@@ -118,7 +118,7 @@
style="@style/HoloIcon"
android:visibility="gone" />
<com.android.browser.UrlInputView
- android:id="@+id/url_focused"
+ android:id="@+id/url"
android:layout_width="0dip"
android:layout_weight="1.0"
android:layout_height="match_parent"
diff --git a/res/menu/bookmark.xml b/res/menu/bookmark.xml
index b761779..5517ab9 100644
--- a/res/menu/bookmark.xml
+++ b/res/menu/bookmark.xml
@@ -26,12 +26,15 @@
android:showAsAction="always" />
<item
android:id="@+id/thumbnail_view"
- android:title="@string/bookmark_thumbnail_view"/>
+ android:title="@string/bookmark_thumbnail_view"
+ android:icon="@drawable/ic_thumbnail_view_holo_dark" />
<item
android:id="@+id/list_view"
- android:title="@string/bookmark_list_view"/>
+ android:title="@string/bookmark_list_view"
+ android:icon="@drawable/ic_list_view_holo_dark" />
<item
android:id="@+id/preferences_menu_id"
android:title="@string/menu_preferences"
+ android:icon="@drawable/ic_settings_holo_dark"
android:alphabeticShortcut="p" />
</menu>
diff --git a/res/menu/browser.xml b/res/menu/browser.xml
index abe3716..d9e884b 100644
--- a/res/menu/browser.xml
+++ b/res/menu/browser.xml
@@ -15,55 +15,73 @@
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <group android:id="@+id/MAIN_MENU">
- <item android:id="@+id/new_tab_menu_id"
- android:title="@string/new_tab"
- android:icon="@drawable/ic_menu_new_window"
- android:alphabeticShortcut="n" />
- <item android:id="@+id/bookmarks_menu_id"
- android:title="@string/bookmarks"
- android:alphabeticShortcut="b"
- android:icon="@drawable/ic_bookmarks_holo_dark" />
- <item android:id="@+id/active_tabs_menu_id"
- android:title="@string/active_tabs"
- android:icon="@drawable/ic_windows_holo_dark"
- android:alphabeticShortcut="t" />
- <item android:id="@+id/stop_reload_menu_id"
- android:alphabeticShortcut="r" />
- <item android:id="@+id/forward_menu_id"
- android:title="@string/forward"
- android:icon="@*android:drawable/ic_menu_forward" />
- <item android:id="@+id/add_bookmark_menu_id"
+ <group
+ android:id="@+id/MAIN_MENU">
+ <group
+ android:id="@+id/NAV_MENU">
+ <item
+ android:id="@+id/new_tab_menu_id"
+ android:title="@string/new_tab"
+ android:icon="@drawable/ic_menu_new_window"
+ android:alphabeticShortcut="n" />
+ <item
+ android:id="@+id/bookmarks_menu_id"
+ android:title="@string/bookmarks"
+ android:alphabeticShortcut="b"
+ android:icon="@drawable/ic_bookmarks_holo_dark" />
+ <item
+ android:id="@+id/active_tabs_menu_id"
+ android:title="@string/active_tabs"
+ android:icon="@drawable/ic_windows_holo_dark"
+ android:alphabeticShortcut="t" />
+ <item
+ android:id="@+id/stop_reload_menu_id"
+ android:alphabeticShortcut="r" />
+ <item
+ android:id="@+id/forward_menu_id"
+ android:title="@string/forward"
+ android:icon="@*android:drawable/ic_menu_forward" />
+ </group>
+ <item
+ android:id="@+id/add_bookmark_menu_id"
android:title="@string/save_to_bookmarks"
android:icon="@drawable/ic_bookmark_on_holo_dark"
android:alphabeticShortcut="d" />
- <item android:id="@+id/find_menu_id"
+ <item
+ android:id="@+id/find_menu_id"
android:title="@*android:string/find_on_page"
android:icon="@*android:drawable/ic_menu_find"
android:alphabeticShortcut="f" />
- <item android:id="@+id/share_page_menu_id"
+ <item
+ android:id="@+id/share_page_menu_id"
android:title="@string/share_page"
android:icon="@drawable/ic_share_holo_dark"
android:alphabeticShortcut="s" />
- <item android:id="@+id/save_webarchive_menu_id"
+ <item
+ android:id="@+id/save_webarchive_menu_id"
android:title="@string/menu_save_webarchive" />
- <item android:id="@+id/page_info_menu_id"
+ <item
+ android:id="@+id/page_info_menu_id"
android:title="@string/page_info"
android:icon="@drawable/ic_pageinfo_holo_dark"
android:alphabeticShortcut="g" />
- <item android:id="@+id/view_downloads_menu_id"
+ <item
+ android:id="@+id/view_downloads_menu_id"
android:title="@string/menu_view_download"
android:icon="@drawable/ic_downloads_holo_dark"
android:alphabeticShortcut="j" />
- <item android:id="@+id/preferences_menu_id"
+ <item
+ android:id="@+id/preferences_menu_id"
android:title="@string/menu_preferences"
android:icon="@drawable/ic_settings_holo_dark"
android:alphabeticShortcut="p" />
<!-- followings are debug only -->
- <item android:id="@+id/dump_nav_menu_id"
+ <item
+ android:id="@+id/dump_nav_menu_id"
android:title="@string/dump_nav"
android:visible="false" />
- <item android:id="@+id/dump_counters_menu_id"
+ <item
+ android:id="@+id/dump_counters_menu_id"
android:title="@string/dump_counters"
android:visible="false" />
</group>
diff --git a/res/raw/most_visited.ktpl b/res/raw/most_visited.ktpl
index 04b9eee..9a6e1b8 100644
--- a/res/raw/most_visited.ktpl
+++ b/res/raw/most_visited.ktpl
@@ -3,7 +3,7 @@
<html>
<head>
<title><%@ string/new_tab %></title>
-<meta name="viewport" content="width=device-width; initial-scale=1.0;" />
+<meta name="viewport" content="width=device-width; initial-scale=1.0; user-scalable=0" />
<style type="text/css">
@@ -14,20 +14,19 @@
body {
text-align: center;
- margin: 16px auto;
+ margin: 0px auto;
padding: 0 8px 0 8px;
max-width: <%@ dimen/mv_max_width %>px;
}
-#most_visited h3 {
+h3 {
text-align: center;
- padding: 0;
- margin: 5px 0 5px 0px;
+ margin: 5px 0 5px 0;
}
.thumbwrap li {
display: inline-block;
- margin: 0 7px 15px 7px;
+ margin: 0 7px 12px 7px;
padding: 0;
}
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 98d59bd..0652277 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"بيانات الملء التلقائي"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"إدخال وحفظ البيانات لملء حقول نموذج الويب تلقائيًا"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"تسجيل الدخول تلقائيًا إلى Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"تسجيل الدخول إلى مواقع Google باستخدام <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"تسجل الدخول التلقائي متاح."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"تسجيل الدخول"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"أخفق تسجيل الدخول."</string>
@@ -270,8 +271,8 @@
<string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"تشفير النص"</string>
<string name="pref_lab_title" msgid="5571091610359629423">"الميزات الاختبارية"</string>
<string name="pref_lab_quick_controls" msgid="3267606522082281367">"عناصر التحكم السريعة"</string>
- <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"مرر الإبهام من الحافة اليسرى أو اليمنى للدخول إلى عناصر التحكم السريعة وإخفاء أشرطة عناوين URL والتطبيق"</string>
- <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"الصفحة الرئيسية الأكثر زيارة"</string>
+ <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"مرر الإبهام من الحافة اليسرى أو اليمنى للدخول إلى عناصر التحكم السريعة وإخفاء وأشرطة عناوين URL والتطبيق"</string>
+ <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"الصفحة الرئيسية لـ \"الأكثر زيارة\""</string>
<string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"تعرض صفحتك الرئيسية مواقع الويب الأكثر زيارة."</string>
<string name="pref_use_instant_search" msgid="1119176077760723740">"بحث Google الفوري"</string>
<string name="pref_use_instant_search_summary" msgid="839320474961917522">"استخدم بحث Google الفوري عندما تستخدم بحث Google, لإظهار النتائج أثناء الكتابة (يمكن أن يزيد ذلك من استخدام البيانات)."</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index d4f727b..7f01739 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Данни за автоматичното попълване"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Въведете и запазете данни за автоматично попълване на полетата в уеб формуляри"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Автоматичен вход в Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Влизате в сайтове на Google посредством <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Автоматичният вход е налице."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Вход"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Влизането не бе успешно."</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 4071fed..10ec706 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Dades d\'emplenament automàtic"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Introdueix i desa les dades per emplenar automàticament els camps del formulari web"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Inici sessió automàtic a Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Inici de la sessió a Llocs web de Google amb <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Inici de sessió automàtic disponible."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Inici sessió"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Error en iniciar sessió."</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 34def37..a70165e 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Automatické vyplnění údajů"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Zadat a uložit údaje pro automatické vyplnění polí webových formulářů"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Automatické přihlášení do Googlu"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Přihlašování do webů Google pomocí uživatelského jména <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Automatické přihlašování je k dispozici."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Přihlášení"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Přihlášení selhalo."</string>
@@ -274,7 +275,7 @@
<string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Nejnavštěvovanější domovská stránka"</string>
<string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Na vaší domovské stránce se zobrazují nejnavštěvovanější webové stránky."</string>
<string name="pref_use_instant_search" msgid="1119176077760723740">"Dynamické vyhledávání Google"</string>
- <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Dynamické vyhledávání ve Vyhledávání Google zobrazuje výsledky již při zadávání dotazu. (Může se zvýšit množství přenesených dat.)"</string>
+ <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Dynamické vyhledávání ve Vyhledávání Google zobrazuje výsledky již při zadávání dotazu. (Může se zvýšit množství dat.)"</string>
<string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problémy s datovým připojením"</string>
<string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problém se souborem"</string>
<string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Potvrdit"</string>
@@ -367,7 +368,7 @@
<string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
<string name="account_chooser_dialog_title" msgid="3314204833188808194">"Vyberte účet"</string>
<string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synchronizovat s účtem Google"</string>
- <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Záložky v tomto zařízení zatím nejsou přidruženy k žádnému účtu Google. Pokud je chcete uložit, přidejte je do nějakého účtu. Pokud je s účtem synchronizovat nechcete, smažte je."</string>
+ <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Záložky v tomto zařízení zatím nejsou přidruženy k žádnému účtu Google. Pokud je chcete uložit, přidejte je do účtu. Pokud je s účtem synchronizovat nechcete, smažte je."</string>
<string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Přidat záložky aktuálně uložené v tomto zařízení a zahájit synchronizaci s účtem Google"</string>
<string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Smazat záložky aktuálně uložené v tomto zařízení a zahájit synchronizaci s účtem Google"</string>
<string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Smazat záložky aktuálně uložené v tomto zařízení a zahájit synchronizaci záložek s účtem <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index c0647c7..a21ecaa 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Data i AutoFyld"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Indtast og gem data til autoudfyldning af felter i webformularer"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Automatisk Google-login"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Logger ind på Google-websteder med <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Automatisk login er tilgængelig."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Log ind"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Login mislykkedes."</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 7ffc171..d491435 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Daten automatisch ausfüllen"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Eingabe und Speichern von Daten für automatisch auszufüllende Webformularfelder"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Automatische Google-Anmeldung"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Anmeldung in Google Sites mit <xliff:g id="ID_1">%s</xliff:g>..."</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Automatische Anmeldung ist verfügbar."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Anmelden"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Anmeldung fehlgeschlagen"</string>
@@ -194,7 +195,7 @@
<string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil gelöscht"</string>
<string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Profil löschen"</string>
<string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Browser können solche Webformulare automatisch vervollständigen. Möchten Sie Ihr Profil anlegen?"</string>
- <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"AutoFill kann jederzeit über die Browsereinstellungen konfiguriert werden."</string>
+ <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"AutoFill kann stets über die Browsereinstellungen konfiguriert werden."</string>
<string name="disable_autofill" msgid="8305901059849400354">"AutoFill deaktivieren"</string>
<string name="pref_privacy_security_title" msgid="3480313968942160914">"Datenschutz und Sicherheit"</string>
<string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Cache löschen"</string>
@@ -274,7 +275,7 @@
<string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"\"Am häufigsten besucht\" auf Startseite"</string>
<string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Auf Ihrer Startseite werden Ihre am häufigsten besuchten Webseiten angezeigt."</string>
<string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
- <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Nutzen Sie Google Instant bei der Google-Suche. Ergebnisse werden bei Eingabe angezeigt - ggf. mehr Speicher erforderlich."</string>
+ <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Nutzen Sie Google Instant bei der Google-Suche. Ergebnisse werden bei Eingabe angezeigt (ggf. mehr Speicher erforderl.)."</string>
<string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Datenverbindungsproblem"</string>
<string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem mit Datei"</string>
<string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bestätigen"</string>
@@ -367,11 +368,11 @@
<string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
<string name="account_chooser_dialog_title" msgid="3314204833188808194">"Konto auswählen"</string>
<string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Mit Google-Konto synchronisieren"</string>
- <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Die Lesezeichen auf diesem Gerät sind noch nicht mit einem Google-Konto verknüpft. Speichern Sie diese Lesezeichen, indem Sie sie zu einem Konto hinzufügen. Falls Sie sie nicht synchronisieren möchten, löschen Sie diese Lesezeichen."</string>
- <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Zurzeit auf diesem Gerät befindliche Lesezeichen hinzufügen und Synchronisierung mit Google-Konto starten"</string>
- <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Zurzeit auf diesem Gerät befindliche Lesezeichen löschen und Synchronisierung mit Google-Konto starten"</string>
- <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Zurzeit auf diesem Gerät befindliche Lesezeichen löschen und Synchronisierung der Lesezeichen mit <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> starten"</string>
- <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Zurzeit auf diesem Gerät befindliche Lesezeichen hinzufügen und Synchronisierung der Lesezeichen mit <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> starten"</string>
+ <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Die Lesezeichen auf diesem Gerät sind noch nicht mit einem Google-Konto verknüpft. Speichern Sie diese Lesezeichen, indem Sie sie einem Konto hinzufügen. Falls Sie sie nicht synchronisieren möchten, löschen Sie diese Lesezeichen."</string>
+ <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Derzeit auf diesem Gerät befindliche Lesezeichen hinzufügen und Synchronisierung mit Google-Konto starten"</string>
+ <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Derzeit auf diesem Gerät befindliche Lesezeichen löschen und Synchronisierung mit Google-Konto starten"</string>
+ <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Derzeit auf diesem Gerät befindliche Lesezeichen löschen und Synchronisierung der Lesezeichen mit <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> starten"</string>
+ <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Derzeit auf diesem Gerät befindliche Lesezeichen hinzufügen und Synchronisierung der Lesezeichen mit <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> starten"</string>
<string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Lesezeichen löschen"</string>
<string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Weiter"</string>
<string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Zurück"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 297eb46..21d37ae 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -137,7 +137,7 @@
<string name="pref_content_title" msgid="722227111894838633">"Ρυθμίσεις περιεχομένου σελίδας"</string>
<string name="pref_content_load_images" msgid="2125616852957377561">"Φόρτωση εικόνων"</string>
<string name="pref_content_load_images_summary" msgid="5055874125248398584">"Προβολή εικόνων στις ιστοσελίδες"</string>
- <string name="pref_content_block_popups" msgid="4158524847764470895">"Αποκλεισμός αναδ. παραθύρων"</string>
+ <string name="pref_content_block_popups" msgid="4158524847764470895">"Αποκλεισμός αναδυόμενων παραθύρων"</string>
<string name="pref_content_javascript" msgid="4570972030299516843">"Ενεργοποίηση JavaScript"</string>
<string name="pref_content_open_in_background" msgid="824123779725118663">"Άνοιγμα στο παρασκήνιο"</string>
<string name="pref_content_plugins" msgid="7231944644794301582">"Ενεργοποίηση πρόσθετων"</string>
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Αυτόματη συμπλήρωση δεδομένων"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Καταχώριση και αποθήκευση δεδομένων για πεδία φόρμας ιστού αυτόματης συμπλήρωσης"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Αυτόματη σύνδεση στο Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Συνδεθείτε σε Ιστότοπους Google χρησιμοποιώντας το <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Διαθέσιμη αυτόματη σύνδεση."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Σύνδεση"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Η σύνδεση απέτυχε."</string>
@@ -270,11 +271,11 @@
<string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Κωδικοποίηση κειμένου"</string>
<string name="pref_lab_title" msgid="5571091610359629423">"Εργαστήρια"</string>
<string name="pref_lab_quick_controls" msgid="3267606522082281367">"Στοιχεία γρήγορου ελέγχου"</string>
- <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Σύρετε τον αντίχειρα από αρ. ή δεξ. για τα στοιχ. γρήγ. ελέγχου και κρύψτε τις γραμμές Εφαρμογές και URL"</string>
+ <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Σύρετε τον αντίχειρα από αριστερά ή δεξιά για πρόσβαση στα στοιχεία γρήγορου ελέγχου και απόκρυψη των γραμμών εφαρμογής και διεύθυνσης URL"</string>
<string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Αρχική σελίδα με τις περισσότερες επισκέψεις"</string>
<string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Η αρχική σελίδα εμφανίζει τις ιστοσελίδες με τις περισσότερες επισκέψεις σας."</string>
<string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
- <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Χρησιμοποιήστε το Instant μαζί με την Αναζήτηση για να εμφανίζονται αποτελ. καθώς πληκτρολ. (πιθανή αύξηση δεδομένων)."</string>
+ <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Χρησιμοποιήστε το Google Instant μαζί με την Αναζήτηση Google για να εμφανίζονται τα αποτελέσματα καθώς πληκτρολογείτε (μπορεί να αυξηθεί η χρήση δεδομένων)."</string>
<string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Πρόβλημα σύνδεσης δεδομένων"</string>
<string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Υπάρχει πρόβλημα με το αρχείο"</string>
<string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Επιβεβαίωση"</string>
@@ -369,9 +370,9 @@
<string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Συγχρον. με Λογαριασμό Google"</string>
<string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Οι σελιδοδείκτες που υπάρχουν σε αυτή τη συσκευή δεν έχουν συσχετιστεί ακόμα με κάποιον λογαριασμό Google. Αποθηκεύστε αυτούς τους σελιδοδείκτες προσθέτοντάς τους σε κάποιον λογαριασμό. Διαγράψτε αυτούς τους σελιδοδείκτες αν δεν θέλετε να τους συγχρονίσετε."</string>
<string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Προσθέστε τους σελιδοδείκτες που υπάρχουν αυτή τη στιγμή στη συσκευή σας και αρχίστε να εκτελείτε συγχρονισμό με κάποιον Λογαριασμό Google"</string>
- <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Διαγράψτε τους σελιδοδείκτες που υπάρχουν αυτή τη στιγμή στη συσκευή σας και ξεκινήστε συγχρονισμό με κάποιον Λογαριασμό Google"</string>
- <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Διαγράψτε τους σελιδοδείκτες που υπάρχουν αυτή τη στιγμή στη συσκευή σας και ξεκινήστε συγχρονισμό των σελιδοδεικτών με τον λογαριασμό <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
- <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Προσθέστε τους σελιδοδείκτες που υπάρχουν αυτή τη στιγμή στη συσκευή σας και ξεκινήστε συγχρονισμό των σελιδοδεικτών με τον λογαριασμό <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+ <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Διαγράψτε τους σελιδοδείκτες που υπάρχουν αυτή τη στιγμή στη συσκευή σας και αρχίστε να εκτελείτε συγχρονισμό με κάποιον Λογαριασμό Google"</string>
+ <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Διαγράψτε τους σελιδοδείκτες που υπάρχουν αυτή τη στιγμή στη συσκευή σας και αρχίστε να εκτελείτε συγχρονισμό των σελιδοδεικτών με τον λογαριασμό <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+ <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Προσθέστε τους σελιδοδείκτες που υπάρχουν αυτή τη στιγμή στη συσκευή σας και αρχίστε να εκτελείτε συγχρονισμό των σελιδοδεικτών με τον λογαριασμό <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
<string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Διαγραφή σελιδοδεικτών"</string>
<string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Επόμενο"</string>
<string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Προηγούμενο"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index e8c0538..7a133ab 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Auto-fill data"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Enter and save data for auto-filling web form fields"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Automatic Google sign-in"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Signing in to Google sites using <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Automatic sign-in is available."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Login"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Login failed."</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 6b5c40a..b5ed5bf 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -166,12 +166,13 @@
<string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Sincronizar favoritos entre el navegador Android y Google Chrome"</string>
<string name="pref_personal_start_syncing" msgid="6046972042512655232">"Iniciar la sincr."</string>
<string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Selec cta Google p/comp"</string>
- <string name="pref_autofill_enabled" msgid="1015751713312396713">"Completado automático de formulario"</string>
+ <string name="pref_autofill_enabled" msgid="1015751713312396713">"Llenado automático de formulario"</string>
<string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Completa formularios web con un clic"</string>
- <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Datos de completado automático"</string>
- <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Ingresa y guarda datos para completar campos de formularios web automáticamente."</string>
+ <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Datos de llenado automático"</string>
+ <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Ingresa y guarda datos para llenar campos de formularios web automáticamente."</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Acceso automático a Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Accediendo a Google Sites utilizando <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Acceso automático disponible"</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Acceder"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Falló el acceso."</string>
@@ -194,7 +195,7 @@
<string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Perfil eliminado"</string>
<string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Eliminar perfil"</string>
<string name="autofill_setup_dialog_message" msgid="6605682320156223114">"El navegador puede completar formularios web como este de forma automática. ¿Deseas configurar tu perfil?"</string>
- <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"La función de autocompletar siempre se puede configurar mediante los Parámetros de configuración del navegador."</string>
+ <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Autocompletar siempre se puede configurar mediante los Parámetros de configuración del navegador."</string>
<string name="disable_autofill" msgid="8305901059849400354">"Inhabilitar Autocompletar"</string>
<string name="pref_privacy_security_title" msgid="3480313968942160914">"Privacidad & seguridad"</string>
<string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Borrar memoria caché"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index d270534..a80be49 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Datos de Autocompletar"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Introducir y guardar datos de campos de cumplimentación automática de formularios web"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Acceso automático a Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Accediendo a Google Sites mediante <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"El acceso automático está disponible."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Acceder"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Error al acceder"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 4a0204a..561cabf 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"تکمیل خودکار داده ها"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"جهت تکمیل خودکار قسمت های فرم وب، داده ها را وارد و ذخیره کنید"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"ورود به سیستم خودکار Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"ورود به سیستم سایت های Google با استفاده از <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"ورود به سیستم خودکار امکان پذیر است."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"ورود به سیستم"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"ورود به سیستم انجام نشد."</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index f14f718..bf414e7 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Tietojen automaattinen täyttö"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Tallenna tietoja verkkolomakkeiden automaattista täyttöä varten"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Automaattinen Google-sisäänkirjaus"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Kirjaudutaan Google-sivustoihin käyttäjänimellä <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Automaattinen kirjautuminen käytettävissä."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Kirjaudu"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Kirjautuminen epäonnistui."</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index f464f03..9047b60 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Données de la saisie automatique"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Saisir et enregistrer des données à des fins de saisie automatique dans les champs de formulaires Web"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Connexion automatique à Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Connexion à Google Sites avec le compte <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"La connexion automatique est disponible."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Connexion"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Échec de la connexion"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index e2636da..b5de759 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Automatsko popunjavanje podataka"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Unošenje i spremanje podataka za automatsko popunjavanje polja web-obrasca"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Automatska prijava na Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Prijava na Google web-lokacije putem <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Dostupna je automatska prijava."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Prijava"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Prijava nije uspjela."</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 5a5a97e..47c4585 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -171,9 +171,10 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Adatok automatikus kitöltése"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Adatok beírása és mentése az internetes űrlapok mezőinek automatikus kitöltéséhez"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Automatikus Google-bejelentkezés"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Bejelentkezés Google-webhelyekre a következők használatával: <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Az automatikus bejelentkezés elérhető."</string>
- <string name="autologin_bar_login_text" msgid="7052816600314556734">"Belépés"</string>
+ <string name="autologin_bar_login_text" msgid="7052816600314556734">"Bejelentk."</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Sikertelen bejelentkezés."</string>
<string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Adja meg azokat az adatokat, amelyekkel ki szeretné tölteni az internetes mezőket, amikor megérinti azokat."</string>
<string name="autofill_profile_editor_name" msgid="8566130291459685955">"Teljes név:"</string>
@@ -270,7 +271,7 @@
<string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Szöveg kódolása"</string>
<string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
<string name="pref_lab_quick_controls" msgid="3267606522082281367">"Gyorsbeállítások"</string>
- <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Seperjen az ujjával: gyorsvezérlők elérése, az Alkalmazás és URL-sáv elrejtése."</string>
+ <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Húzza hüvelyk. balról jobbra a gyorsvez. elér.-hez, és az Alk. és URL sáv elrejt.-hez."</string>
<string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Leggyakrabban felkeresett kezdőlap"</string>
<string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Kezdőlapján a leggyakrabban felkeresett webhelyek jelennek meg."</string>
<string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 9e0bd1e..ea27e30 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -171,11 +171,12 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Isi-otomatis data"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Masukkan dan simpan data untuk mengisi-otomatis bidang formulir web"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Masuk ke Google secara otomatis"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Masuk ke situs Google dengan <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Fitur masuk otomatis tersedia."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Masuk"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Upaya masuk gagal."</string>
- <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Masukkan data yang ingin Anda isi-otomatiskan ke bidang web saat disentuh."</string>
+ <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Masukkan data yang ingin Anda isi-otomatiskan ke bidang web saat Anda menyentuhnya."</string>
<string name="autofill_profile_editor_name" msgid="8566130291459685955">"Nama lengkap:"</string>
<string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Email:"</string>
<string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Nama perusahaan:"</string>
@@ -368,10 +369,10 @@
<string name="account_chooser_dialog_title" msgid="3314204833188808194">"Pilih akun"</string>
<string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sinkronkan dengan akun Google"</string>
<string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Bookmark pada perangkat ini belum terkait dengan Akun Google. Simpan bookmark ini dengan menambahkannya ke sebuah akun. Hapus bookmark jika Anda tidak ingin menyinkronkannya."</string>
- <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Menambahkan bookmark yang ada di perangkat ini dan mulai menyinkronkannya dengan Akun Google"</string>
+ <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Tambahkan bookmark saat ini pada perangkat ini dan mulai menyinkronkannya dengan Akun Google"</string>
<string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Menghapus bookmark yang ada di perangkat ini dan mulai menyinkronkannya dengan Akun Google"</string>
<string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Menghapus bookmark yang ada di perangkat ini dan mulai menyinkronkan bookmark dengan <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
- <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Menambahkan bookmark yang ada di perangkat ini dan mulai menyinkronkan bookmark dengan <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+ <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Tambahkan bookmark saat ini pada perangkat ini dan mulai menyinkronkan bookmark dengan <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
<string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Hapus bookmark"</string>
<string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Berikutnya"</string>
<string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Sebelumnya"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 8ac3436..3ed8b1f 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Dati per compilazione automatica"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Inserisci e salva dati per la compilazione automatica dei campi dei moduli web"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Accesso Google automatico"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Accesso ai siti Google utilizzando <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Accesso automatico disponibile."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Accedi"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Accesso non riuscito."</string>
@@ -270,11 +271,11 @@
<string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codifica testo"</string>
<string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
<string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controlli rapidi"</string>
- <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Fai scorrere il pollice dal lato sinistro/destro per accedere ai controlli e nascondere le barre delle applicazioni e dell\'URL"</string>
- <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Più visitati in pagina iniziale"</string>
+ <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Fai scorrere il pollice dal lato sinistro o destro per accedere ai controlli rapidi e nascondere le barre dell\'applicazione e dell\'URL"</string>
+ <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Home page più visitata"</string>
<string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"La tua pagina iniziale mostra le tue pagine web più visitate."</string>
<string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
- <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Usa Google Instant con Ricerca Google per visualizzare i risultati mentre digiti (può aumentare l\'uso dei dati)."</string>
+ <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Usa Google Instant con Ricerca Google per visualizzare i risultati durante la digitazione (può aumentare l\'uso dei dati)."</string>
<string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema di connettività dati"</string>
<string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problemi con il file"</string>
<string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Conferma"</string>
@@ -369,9 +370,9 @@
<string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronizza con l\'account Google"</string>
<string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"I segnalibri su questo dispositivo non sono ancora associati a un account Google. Salva questi segnalibri aggiungendoli a un account. Elimina questi segnalibri se non desideri sincronizzarli."</string>
<string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Aggiungi i segnalibri attualmente presenti su questo dispositivo e inizia a sincronizzarli con l\'account Google"</string>
- <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Elimina i segnalibri attualmente presenti su questo dispositivo e inizia la sincronizzazione con l\'account Google"</string>
+ <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Elimina i segnalibri attualmente presenti su questo dispositivo e inizia a sincronizzarli con l\'account Google"</string>
<string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Elimina i segnalibri attualmente presenti su questo dispositivo e inizia a sincronizzare i segnalibri con <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
- <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Aggiungi i segnalibri attualmente presenti su questo dispositivo e inizia a sincronizzarli con <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+ <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Aggiungi i segnalibri attualmente presenti su questo dispositivo e inizia a sincronizzare i segnalibri con <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
<string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Elimina segnalibri"</string>
<string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Avanti"</string>
<string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Indietro"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 0230fc1..b88d099 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"נתונים של \'מילוי אוטומטי\'"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"הזן נתונים ושמור אותם למילוי אוטומטי של שדות בטופס אינטרנט"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"כניסה אוטומטית ל-Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"כניסה אל Google Sites באמצעות <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"הכניסה האוטומטית זמינה."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"התחבר"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"ההתחברות נכשלה."</string>
@@ -270,7 +271,7 @@
<string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"קידוד טקסט"</string>
<string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
<string name="pref_lab_quick_controls" msgid="3267606522082281367">"פקדים מהירים"</string>
- <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"העבר את האגודל מאחד הצדדים כדי לגשת לפקדים המהירים ולהסתיר את סרגלי היישום וה-URL"</string>
+ <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"העבר את האגודל מהקצה השמאלי או הימני כדי לגשת לפקדים המהירים ולהסתיר את סרגלי היישום וכתובת האתר"</string>
<string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"דף הבית שבו ביקרת בתדירות הגבוהה ביותר"</string>
<string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"דף הבית שלך מציג את דפי האינטרנט שבהם ביקרת בתדירות הגבוהה ביותר."</string>
<string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 7266a9f..1322606 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"自動入力データ"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"ウェブフォームフィールドに自動入力するデータを入力、保存する"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Googleへの自動ログイン"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"<xliff:g id="ID_1">%s</xliff:g>を使用してGoogleサイトにログインしています"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"自動ログインを利用できます。"</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"ログイン"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"ログインに失敗しました。"</string>
@@ -271,8 +272,8 @@
<string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string>
<string name="pref_lab_quick_controls" msgid="3267606522082281367">"クイックコントロール"</string>
<string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"クイックコントロールへのアクセス(アプリ/URLバー非表示)には左/右端からスワイプ"</string>
- <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"アクセス数が最も多いホームページ"</string>
- <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"アクセス数が最も多いウェブページをホームページとして表示します。"</string>
+ <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"アクセス回数が最多のホームページ"</string>
+ <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"アクセス回数が最多のウェブページをホームページとして表示します。"</string>
<string name="pref_use_instant_search" msgid="1119176077760723740">"Googleインスタント検索"</string>
<string name="pref_use_instant_search_summary" msgid="839320474961917522">"Google検索時にGoogleインスタント検索を使用すると、入力中に結果が表示されます(データの使用量が増えることがあります)。"</string>
<string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"データアクセスエラー"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index d247e52..37a2aa2 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"데이터 자동 입력"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"자동 입력 웹 양식 필드에 대한 데이터 입력 및 저장"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"자동 Google 로그인"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"<xliff:g id="ID_1">%s</xliff:g>(으)로 Google 사이트에 로그인 중"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"자동 로그인을 사용할 수 있습니다."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"로그인"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"로그인하지 못했습니다."</string>
@@ -370,8 +371,8 @@
<string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"이 기기의 북마크가 Google 계정과 아직 연결되지 않았습니다. 이러한 북마크를 계정에 추가하여 저장하세요. 이러한 북마크를 동기화하지 않으려면 삭제하세요."</string>
<string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"현재 이 기기에서 북마크를 추가하고 Google 계정과 동기화를 시작하세요."</string>
<string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"현재 이 기기에서 북마크를 삭제하고 Google 계정과 동기화를 시작하세요."</string>
- <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"현재 이 기기에서 북마크를 삭제하고 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>와(과) 북마크 동기화를 시작하세요."</string>
- <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"현재 이 기기에서 북마크를 추가하고 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>와(과) 북마크 동기화를 시작하세요."</string>
+ <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"현재 이 기기에서 북마크를 삭제하고 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>과 북마크 동기화를 시작하세요."</string>
+ <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"현재 이 기기에서 북마크를 하고 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>과 북마크 동기화를 시작하세요."</string>
<string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"북마크 삭제"</string>
<string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"다음"</string>
<string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"이전"</string>
diff --git a/res/values-land/dimensions.xml b/res/values-land/dimensions.xml
new file mode 100644
index 0000000..f3b1235
--- /dev/null
+++ b/res/values-land/dimensions.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2011 The Android Open Source Project Licensed under the
+ Apache License, Version 2.0 (the "License"); you may not use this file
+ except in compliance with the License. You may obtain a copy of the
+ License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+ applicable law or agreed to in writing, software distributed under the
+ License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+ CONDITIONS OF ANY KIND, either express or implied. See the License for
+ the specific language governing permissions and limitations under the
+ License.
+-->
+
+<resources>
+ <dimen name="preference_screen_side_margin">96dp</dimen>
+ <dimen name="preference_screen_side_margin_negative">-100dp</dimen>
+ <dimen name="preference_widget_width">72dp</dimen>
+</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index f449b26..665cfa7 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Automatinis duomenų pildymas"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Įveskite duomenis ir išsaugokite juos automatinio pildymo formos žiniatinklyje laukuose"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Autom. prisijung. prie „Google“"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Prisijungiama prie „Google“ svetainių naudojant <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Galimas automatinis prisijungimas."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Prisijung."</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Nepavyko prisijungti."</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 7322e2e..f2d3011 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Datu automātiskā ievadīšana"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Ievadiet un saglabājiet datus tīmekļa veidlapu lauku automātiskai aizpildīšanai."</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Autom. pierakst. vietnē Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Pierakstīšanās pakalpojumā Google vietnes, izmantojot <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Ir pieejama automātiskā pierakstīšanās."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Pieteikties"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Neizdevās pieteikties."</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 18007c7..6478a8f 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -158,7 +158,7 @@
<string name="pref_content_autofit_summary" msgid="4587831659894879986">"Tilpass nettsteder til skjermen"</string>
<string name="pref_general_title" msgid="1946872771219249323">"Generelt"</string>
<string name="pref_general_sync_title" msgid="3138637035975860324">"Synkronisering"</string>
- <string name="pref_general_autofill_title" msgid="547881256865816858">"Automatisk utfylling"</string>
+ <string name="pref_general_autofill_title" msgid="547881256865816858">"Autofyll"</string>
<string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Synkroniser med Google Chrome"</string>
<string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Lagre bokmerker og andre data mellom Android-nettleseren og Google Chrome"</string>
<string name="pref_personal_google_account" msgid="952360133341490071">"Google-konto"</string>
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Fyll inn data automatisk"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Skriv inn og lagre data for automatisk utfylling av nettskjemafelter"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Automatisk Google-pålogging"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Pålogging til Google-nettsteder ved hjelp av <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Automatisk pålogging er tilgjengelig."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Logg på"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Pålogging mislyktes."</string>
@@ -195,7 +196,7 @@
<string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Slett profil"</string>
<string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Nettleseren kan automatisk fylle ut slike nettskjemaer. Vil du konfigurere profilen din?"</string>
<string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Autofyll kan alltid konfigureres via nettleserinnstillingene."</string>
- <string name="disable_autofill" msgid="8305901059849400354">"Deaktiver automatisk utfylling"</string>
+ <string name="disable_autofill" msgid="8305901059849400354">"Deaktiver autofyll"</string>
<string name="pref_privacy_security_title" msgid="3480313968942160914">"Personvern og sikkerhet"</string>
<string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Fjern hurtiglager"</string>
<string name="pref_privacy_clear_cache_summary" msgid="2216463577207991454">"Fjern lokalt bufret innhold og databaser"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 8c25469..93ef7f3 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Gegevens automatisch aanvullen"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Gegevens invoeren en opslaan voor automatisch invullen van velden in webformulieren"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Automatische Google-aanmelding"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Aanmelden bij Google-sites met <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Automatisch aanmelden is beschikbaar."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Aanmelden"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Aanmelden mislukt."</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index e686328..cf11557 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -155,12 +155,12 @@
<string name="pref_use_blank" msgid="8503238592551111169">"Pusta strona"</string>
<string name="pref_use_default" msgid="192587563274735878">"Domyślna strona"</string>
<string name="pref_content_autofit" msgid="8260474534053660809">"Autodopasowanie stron"</string>
- <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatuj strony internetowe, by dopasować je do ekranu"</string>
+ <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatuj strony internetowe w celu dopasowania do ekranu"</string>
<string name="pref_general_title" msgid="1946872771219249323">"Ogólne"</string>
<string name="pref_general_sync_title" msgid="3138637035975860324">"Synchronizacja"</string>
<string name="pref_general_autofill_title" msgid="547881256865816858">"Autouzupełnianie"</string>
<string name="pref_personal_sync_with_chrome" msgid="1695182180332194033">"Synchronizuj z przeglądarką Google Chrome"</string>
- <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Udostępniaj zakładki oraz dane między przeglądarką Androida i Google Chrome"</string>
+ <string name="pref_personal_sync_with_chrome_summary" msgid="7414133931827321055">"Udostępniaj zakładki i inne dane między przeglądarką w systemie Android i przeglądarką Google Chrome"</string>
<string name="pref_personal_google_account" msgid="952360133341490071">"Konto Google"</string>
<string name="pref_personal_sync_bookmarks" msgid="59237515966184432">"Synchronizuj zakładki"</string>
<string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Synchronizuj zakładki między przeglądarką w systemie Android i przeglądarką Google Chrome"</string>
@@ -169,13 +169,14 @@
<string name="pref_autofill_enabled" msgid="1015751713312396713">"Autouzupełnianie formularzy"</string>
<string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Wypełniaj formularze internetowe za pomocą jednego kliknięcia"</string>
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Dane autouzupełniania"</string>
- <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Wpisz i zachowaj dane, które chcesz automatycznie uzupełniać w formularzach internetowych"</string>
+ <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Wprowadzaj i zapisuj dane na potrzeby autouzupełniania pól formularzy internetowych"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Automatyczne logowanie do Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Logowanie w witrynach Google za pomocą identyfikatora <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Automatyczne logowanie jest dostępne."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Zaloguj"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Niepowodzenie logowania."</string>
- <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Wprowadź dane, które chcesz automatycznie umieszczać w formularzach internetowych."</string>
+ <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Wprowadź dane, które chcesz automatycznie umieszczać w dotykanych polach formularzy internetowych."</string>
<string name="autofill_profile_editor_name" msgid="8566130291459685955">"Imię i nazwisko:"</string>
<string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"E-mail:"</string>
<string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Nazwa firmy:"</string>
@@ -367,7 +368,7 @@
<string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
<string name="account_chooser_dialog_title" msgid="3314204833188808194">"Wybierz konto"</string>
<string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Synchronizuj z kontem Google"</string>
- <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Zakładki na tym urządzeniu nie są powiązane z kontem Google. Możesz je zapisać, dodając do konta, a jeśli nie chcesz ich synchronizować, po prostu je usuń."</string>
+ <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Zakładki na tym urządzeniu nie są jeszcze powiązane z kontem Google. Możesz je zapisać, dodając do konta. Jeśli nie chcesz ich synchronizować, usuń je."</string>
<string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Dodaj bieżące zakładki z tego urządzenia i rozpocznij synchronizację zakładek z kontem Google"</string>
<string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Usuń bieżące zakładki z tego urządzenia i rozpocznij synchronizację zakładek z kontem Google"</string>
<string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Usuń bieżące zakładki z tego urządzenia i rozpocznij synchronizację zakładek z kontem <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index a9017fb..1a651d2 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Preencher dados automaticamente"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Introduzir e guardar dados de campos de formulários Web de preenchimento automático"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Início sessão automático Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Iniciar sessão em Web sites do Google utilizando <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Início sessão automático disponível."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"In. sessão"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Falha ao iniciar sessão."</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index baa56ab..353099d 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Dados de preenchim. autom."</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Inserir e salvar dados para preencher automaticamente os campos dos formulários da web"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Login automático do Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Faça login nos sites do Google usando <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"O login automático está disponível."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Fazer login"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Falha de login."</string>
@@ -368,10 +369,10 @@
<string name="account_chooser_dialog_title" msgid="3314204833188808194">"Escolher conta"</string>
<string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronizar com Conta do Google"</string>
<string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Os favoritos localizados neste dispositivo ainda não estão associados a uma Conta do Google. Salve esses favoritos adicionando-os a uma conta. Exclua-os se não desejar sincronizá-los."</string>
- <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Adicione os favoritos localizados atualmente neste dispositivo e comece a sincronizá-los com a Conta do Google"</string>
+ <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Adicione os favoritos localizados atualmente neste dispositivo e comece a sincronizá-los com a Conta do Google."</string>
<string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Exclua os favoritos localizados atualmente neste dispositivo e comece a sincronizar com a Conta do Google"</string>
<string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Exclua os favoritos localizados atualmente neste dispositivo e comece a sincronizá-los com <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
- <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Adicione os favoritos localizados atualmente neste dispositivo e comece a sincronizá-los com <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
+ <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Adicione os favoritos localizados atualmente neste dispositivo e comece a sincronizá-los com <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string>
<string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Excluir favoritos"</string>
<string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Avançar"</string>
<string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Anterior"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 53c3e97..a2c2e2f 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -168,10 +168,11 @@
<string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Sel. cont pt. dist."</string>
<string name="pref_autofill_enabled" msgid="1015751713312396713">"Completare automată formular"</string>
<string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Completaţi formulare web cu un singur clic"</string>
- <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Date completare automată"</string>
+ <string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Date conectare automată"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Introduceţi şi salvaţi date pentru completarea automată a câmpurilor din formularele web"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Conectare automată la Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Se conectează la site-urile Google utilizând <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Este disponibilă conectarea automată."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Conectare"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Conectare eşuată."</string>
@@ -274,7 +275,7 @@
<string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Pagina de pornire cea mai accesată"</string>
<string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Pagina dvs. de pornire afişează paginile web cele mai accesate."</string>
<string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
- <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Utilizaţi Google Instant în Căutarea Google şi vedeţi rezultate în timp ce introd. text (creşte vol. de date utilizate)."</string>
+ <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Utilizaţi Google Instant la căutare pe Google şi vedeţi rezultate pe măsură ce tastaţi (creşte vol. de date utilizate)."</string>
<string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Există o problemă de conexiune la date"</string>
<string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problemă cu fişierul"</string>
<string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirmaţi"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 5c3ae46..1960517 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -169,12 +169,13 @@
<string name="pref_autofill_enabled" msgid="1015751713312396713">"Автозаполнение форм"</string>
<string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Заполнение веб-форм одним кликом"</string>
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Автозаполнение"</string>
- <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Ввод и сохранение данных для автозаполнения веб-форм"</string>
+ <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Указание и сохранение данных для автозаполнения полей"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Автоматический вход в Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Вход в Сайты Google с помощью аккаунта <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Доступен автоматический вход."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Войти"</string>
- <string name="autologin_bar_error" msgid="5132514366023044839">"Вход не выполнен."</string>
+ <string name="autologin_bar_error" msgid="5132514366023044839">"Войти не удалось."</string>
<string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Вводите данные в веб-формы одним нажатием с помощью автозаполнения."</string>
<string name="autofill_profile_editor_name" msgid="8566130291459685955">"Полное имя:"</string>
<string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Эл. почта:"</string>
@@ -194,7 +195,7 @@
<string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Профиль удален"</string>
<string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Удалить профиль"</string>
<string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Браузер может заполнять такие формы автоматически. Настроить профиль автозаполнения?"</string>
- <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Автозаполнение всегда можно настроить в меню \"Настройки браузера\"."</string>
+ <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Автозаполнение настраивается в диалоговом окне \"Настройки браузера\"."</string>
<string name="disable_autofill" msgid="8305901059849400354">"Отключить автозаполнение"</string>
<string name="pref_privacy_security_title" msgid="3480313968942160914">"Конфиденциальность и безопасность"</string>
<string name="pref_privacy_clear_cache" msgid="3380316479925886998">"Очистить кэш"</string>
@@ -271,10 +272,10 @@
<string name="pref_lab_title" msgid="5571091610359629423">"Лаборатория Google"</string>
<string name="pref_lab_quick_controls" msgid="3267606522082281367">"Панель инструментов"</string>
<string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Чтобы открыть панель инструментов, скрыв адресную строку и панель приложений, проведите пальцем в правом или левом углу экрана"</string>
- <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"\"Часто посещаемые\" на стартовой странице"</string>
+ <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Стартовая страница: самые посещаемые"</string>
<string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Отображение часто посещаемых веб-сайтов на стартовой странице."</string>
<string name="pref_use_instant_search" msgid="1119176077760723740">"Google Живой поиск"</string>
- <string name="pref_use_instant_search_summary" msgid="839320474961917522">"В Живом поиске результаты появляются прямо при вводе текста (возможно увеличение объема передаваемых данных)."</string>
+ <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Живой поиск Google отображает результаты поиска при наборе запроса (может привести к увеличению объема передачи данных)."</string>
<string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблема с подключением"</string>
<string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблема с файлом"</string>
<string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Подтвердить"</string>
@@ -352,7 +353,7 @@
<string name="geolocation_settings_page_title" msgid="1745477985097536528">"Закрыть геоданные"</string>
<string name="geolocation_settings_page_summary_allowed" msgid="9180251524290811398">"Этот сайт сейчас имеет доступ к вашему местоположению"</string>
<string name="geolocation_settings_page_summary_not_allowed" msgid="4589649082203102544">"Этот сайт в настоящее время не имеет доступа к вашему местоположению"</string>
- <string name="geolocation_settings_page_dialog_title" msgid="1549842043381347668">"Закрыть геоданные"</string>
+ <string name="geolocation_settings_page_dialog_title" msgid="1549842043381347668">"Удалить данные доступа к местоположению"</string>
<string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"Данные доступа к местоположению для этого сайта будут удалены"</string>
<string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Удалить данные о доступе"</string>
<string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Отмена"</string>
@@ -367,7 +368,7 @@
<string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
<string name="account_chooser_dialog_title" msgid="3314204833188808194">"Выберите аккаунт"</string>
<string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Синхронизация с аккаунтом Google"</string>
- <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Закладки на этом устройстве пока не связаны с аккаунтом Google. Чтобы сохранить и синхронизировать эти закладки, добавьте их в аккаунт. В противном случае просто удалите их."</string>
+ <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Закладки на этом устройстве пока не связаны с аккаунтом Google. Сохраните эти закладки, добавив их в аккаунт. Удалите эти закладки, если вы не хотите синхронизировать их."</string>
<string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Добавить закладки, имеющиеся на этом устройстве, и начать синхронизацию с аккаунтом Google"</string>
<string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Удалить закладки, имеющиеся на этом устройстве, и начать синхронизацию с аккаунтом Google"</string>
<string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Удалить закладки, имеющиеся на этом устройстве, и начать синхронизацию закладок с аккаунтом <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>?"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 12a0aed..11981ef 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Automatické dopĺňanie údajov"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Zadajte a uložte údaje pre automatické dopĺňanie polí webových formulárov"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Automatické prihlasovanie Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Prihlasovanie na stránky Google pomocou používateľského mena <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Automatické prihlásenie je k dispozícii."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Prihlásiť"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Prihlásenie zlyhalo."</string>
@@ -274,7 +275,7 @@
<string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Najviac navštevovaná domovská stránka"</string>
<string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Na vašej domovskej stránke sa zobrazujú najviac navštevované webové stránky."</string>
<string name="pref_use_instant_search" msgid="1119176077760723740">"Dynamické vyhľadávanie Google"</string>
- <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Ak chcete zobrazovať výsl. počas zadávania textu, použite Dynamické vyhľ. Google (môže sa zvýšiť spotr. údajov)."</string>
+ <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Ak chcete zobrazovať výsl. počas zadávania textu, použite vo vyhľ. Dynam. vyhľ. Google (môže sa zvýšiť spotr. údajov)."</string>
<string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problémy s dátovým pripojením"</string>
<string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problém so súborom"</string>
<string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Potvrdiť"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index b153da3..9c181dc 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Samodejno izpolnjevanje podatkov"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Vnesite in shranite podatke za samodejno izpolnjevanje polj v spletnih obrazcih"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Samodejna prijava v Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Prijavljanje v Google Spletna mesta z <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Na voljo je samodejna prijava."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Prijava"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Prijava ni uspela."</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 77a0145..bc82ce1 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Аутоматски попуни податке"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Унесите и сачувајте податке за аутоматско попуњавање поља у веб обрасцима"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Аутоматска пријава на Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Пријављивање на Google сајтове помоћу <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Аутоматско пријављивање је доступно."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Пријави ме"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Пријављивање није успело."</string>
@@ -367,7 +368,7 @@
<string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
<string name="account_chooser_dialog_title" msgid="3314204833188808194">"Избор налога"</string>
<string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Синхронизуј са Google налогом"</string>
- <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Обележивачи на овом уређају још увек нису повезани са Google налогом. Сачувајте oве обележиваче тако што ћете их додати на налог. Избришите их уколико не желите да их синхронизујете."</string>
+ <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Обележивачи на овом уређају још увек нису повезани са Google налогом. Ове обележиваче сачувајте тако што ћете их додати на налог. Избришите их уколико не желите да их синхронизујете."</string>
<string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Додајте обележиваче који се тренутно налазе на овом уређају и започните синхронизовање са Google налогом"</string>
<string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Избришите обележиваче који се тренутно налазе на овом уређају и започните синхронизовање са Google налогом"</string>
<string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Избришите обележиваче који се тренутно налазе на овом уређају и започните синхронизовање обележивача са налогом <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 35715ff..a111bec 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Fyll i data automatiskt"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Ange och spara data för automatisk ifyllning av webbformulärfält"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Automatiskt inloggning på Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Loggar in på Google Sites med <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Automatisk inloggning är tillgänglig."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Logga in"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Misslyckad inloggning."</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 97e9d23..f9e16c1 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"ป้อนข้อมูลอัตโนมัติ"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"ป้อนและบันทึกข้อมูลสำหรับการป้อนฟิลด์ของเว็บฟอร์มอัตโนมัติ"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"ลงชื่อเข้าใช้ Google อัตโนมัติ"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"ลงชื่อเข้าใช้ Google Sites โดยใช้ <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"การลงชื่อเข้าใช้อัตโนมัติพร้อมใช้งาน"</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"ลงชื่อเข้าใช้"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"ลงชื่อเข้าใช้ล้มเหลว"</string>
@@ -274,7 +275,7 @@
<string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"หน้าแรกที่เข้าชมบ่อยที่สุด"</string>
<string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"หน้าแรกของคุณจะแสดงหน้าเว็บที่เข้าชมบ่อยที่สุด"</string>
<string name="pref_use_instant_search" msgid="1119176077760723740">"Google ค้นหาทันใจ"</string>
- <string name="pref_use_instant_search_summary" msgid="839320474961917522">"ใช้ Google ค้นหาทันใจเมื่อคุณใช้ Google Search เพื่อแสดงผลการค้นหาในขณะที่คุณพิมพ์ (ซึ่งสามารถเพิ่มการใช้งานข้อมูล)"</string>
+ <string name="pref_use_instant_search_summary" msgid="839320474961917522">"ใช้ Google ค้นหาทันใจเมื่อคุณใช้ค้นหาโดย Google เพื่อแสดงผลการค้นหาในขณะที่คุณพิมพ์ (ซึ่งสามารถเพิ่มการใช้งานข้อมูล)"</string>
<string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"ปัญหาการเชื่อมต่อข้อมูล"</string>
<string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"ปัญหาเกี่ยวกับไฟล์"</string>
<string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"ยืนยัน"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index cf791c4..8fcb33e 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Data ng auto-fill"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Ilagay at i-save ang data para sa mga field ng form ng web sa pag-auto-fill"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Awtomatiko pag-sign in sa Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Pag-sign in sa mga site ng Google gamit ang <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Available ang awtomatikong pag-sign in."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Mag-login"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Nabigo ang pag-login."</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 9896e0c..76921f8 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Otomatik doldurma verileri"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Web formu alanlarının otomatik olarak doldurulması için verileri girin ve kaydedin"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Otomatik Google oturumu açma"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"<xliff:g id="ID_1">%s</xliff:g> kullanılarak Google sitelerinde oturum açılıyor"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Otomatik oturum açma kullanılabilir."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Giriş yap"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Giriş yapılamadı."</string>
@@ -373,7 +374,7 @@
<string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Bu cihazdaki mevcut yer işaretlerini silin ve <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> ile yer işaretlerini senkronize etmeye başlayın."</string>
<string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Bu cihazdaki mevcut yer işaretlerini ekleyin ve <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> ile yer işaretlerini senkronize etmeye başlayın."</string>
<string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Yer işaretlerini sil"</string>
- <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Sonraki"</string>
+ <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"İleri"</string>
<string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Önceki"</string>
<string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"İptal"</string>
<string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Bitti"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index eec1e19..913a071 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -171,11 +171,12 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Дані автозаповнення"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Введіть і збережіть дані для полів автоматичного заповнення веб-форм"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Автоматичний вхід у Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Вхід у Google Sites за допомогою <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Доступний автоматичний вхід."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Увійти"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Помилка входу."</string>
- <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Введіть дані, які автоматично підставлятимуться у веб-поля, коли ви торкатиметеся їх."</string>
+ <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Введіть дані, які автоматично заповнюватимуть веб-поля, коли ви торкнетеся їх."</string>
<string name="autofill_profile_editor_name" msgid="8566130291459685955">"Повне ім\'я:"</string>
<string name="autofill_profile_editor_email_address" msgid="7967585896612797173">"Електронна адреса:"</string>
<string name="autofill_profile_editor_company_name" msgid="2813443159949210417">"Назва компанії:"</string>
@@ -274,7 +275,7 @@
<string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Найчастіше відвідувана домашня сторінка"</string>
<string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"На вашій домашній сторінці відображаються найчастіше відвідувані веб-сторінки."</string>
<string name="pref_use_instant_search" msgid="1119176077760723740">"Миттєвий пошук Google"</string>
- <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Використовуйте Миттєвий пошук у пошуку Google для відображ. результ. під час введення (може збільшитись викорис. даних)."</string>
+ <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Викор. Миттєвий пошук у пошуку Google для відображ. рез. під час введення запиту (це призвод. до більшого викор. даних)."</string>
<string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблема з доступом до даних"</string>
<string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблема з файлом"</string>
<string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Підтверд."</string>
@@ -367,7 +368,7 @@
<string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string>
<string name="account_chooser_dialog_title" msgid="3314204833188808194">"Виберіть обліковий запис"</string>
<string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Синхроніз. з обл. записом Google"</string>
- <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Закладки на цьому пристрої ще не пов’язано з обліковим записом Google. Збережіть ці закладки, додавши їх до облікового запису. Якщо не хочете синхронізувати закладки, видаліть їх."</string>
+ <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Закладки на цьому пристрої ще не пов’язано з обліковим записом Google. Збережіть ці закладки, додавши їх до облікового запису. Видаліть їх, якщо не хочете синхронізувати закладки."</string>
<string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Додати поточні закладки на цьому пристрої та розпочати синхронізацію з обліковим записом Google"</string>
<string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Видалити поточні закладки на цьому пристрої та розпочати синхронізацію з обліковим записом Google"</string>
<string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Видалити поточні закладки на цьому пристрої та розпочати синхронізацію закладок із <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index d5010a4..3e49491 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"Tự động điền dữ liệu"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Nhập và lưu dữ liệu cho các trường tự động điền biểu mẫu web"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"Tự động đăng nhập Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"Đang đăng nhập vào trang web Google bằng <xliff:g id="ID_1">%s</xliff:g>"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"Tính năng đăng nhập tự động hiện khả dụng."</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"Đăng nhập"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"Đăng nhập không thành công."</string>
diff --git a/res/values-xlarge/dimensions.xml b/res/values-xlarge/dimensions.xml
index 2549818..eae9b0e 100644
--- a/res/values-xlarge/dimensions.xml
+++ b/res/values-xlarge/dimensions.xml
@@ -27,4 +27,12 @@
<dimen name="combo_paddingTop">50dip</dimen>
<dimen name="combo_paddingLeftRight">134dip</dimen>
<dimen name="combo_horizontalSpacing">20dip</dimen>
+ <dimen name="qc_radius_start">50dip</dimen>
+ <dimen name="qc_radius_increment">70dip</dimen>
+ <dimen name="qc_slop">15dip</dimen>
+ <dimen name="qc_touch_offset">15dip</dimen>
+ <dimen name="qc_tab_title_height">30dip</dimen>
+ <dimen name="qc_thumb_width">240dip</dimen>
+ <dimen name="qc_thumb_height">160dip</dimen>
+ <dimen name="qc_item_size">48dip</dimen>
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index ed5f8e1..b01a048 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -171,7 +171,8 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"自动填充数据"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"输入并保存网络表单自动填充字段的数据"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"自动登录 Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"正使用 <xliff:g id="ID_1">%s</xliff:g> 登录 Google 网站"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
<string name="autologin_bar_text" msgid="8013977161879448141">"自动登录已可使用。"</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"登录"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"登录失败。"</string>
@@ -194,7 +195,7 @@
<string name="autofill_profile_successful_delete" msgid="2421442112954362732">"个人资料已删除"</string>
<string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"删除个人资料"</string>
<string name="autofill_setup_dialog_message" msgid="6605682320156223114">"浏览器可自动填充网络表单(例如该表单)。您希望设置个人资料吗?"</string>
- <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"您可以随时通过“浏览器设置”配置自动填充功能。"</string>
+ <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"您可以随时通过“浏览器设置”对自动填充功能进行配置。"</string>
<string name="disable_autofill" msgid="8305901059849400354">"停用自动填充"</string>
<string name="pref_privacy_security_title" msgid="3480313968942160914">"隐私和安全"</string>
<string name="pref_privacy_clear_cache" msgid="3380316479925886998">"清除缓存"</string>
@@ -368,10 +369,10 @@
<string name="account_chooser_dialog_title" msgid="3314204833188808194">"选择帐户"</string>
<string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"与 Google 帐户同步"</string>
<string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"该设备上的书签尚未与 Google 帐户关联。可以通过将这些书签添加到帐户以进行保存。如果不希望同步书签,请将书签删除。"</string>
- <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"添加此设备上的当前书签,并开始与 Google 帐户同步"</string>
- <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"删除此设备上的当前书签,并开始与 Google 帐户同步"</string>
- <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"删除此设备上的当前书签,并开始与 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> 同步书签。"</string>
- <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"添加此设备上的当前书签,并开始与 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> 同步书签。"</string>
+ <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"添加当前设备上的书签,并开始与 Google 帐户同步"</string>
+ <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"删除当前设备上的书签,并开始与 Google 帐户同步"</string>
+ <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"删除当前设备上的书签,并开始与 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> 的书签同步。"</string>
+ <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"添加当前设备上的书签,并开始与 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> 的书签同步。"</string>
<string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"删除书签"</string>
<string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"下一页"</string>
<string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"上一页"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index a3dc094..014b1e4 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -171,8 +171,9 @@
<string name="pref_autofill_profile_editor" msgid="3864116896052437796">"自動填入資料"</string>
<string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"輸入並儲存資料,以供自動填入表單欄位時使用"</string>
<string name="pref_autologin_title" msgid="2362827272595366379">"自動登入 Google"</string>
- <string name="pref_autologin_progress" msgid="8333244467048833461">"正使用 <xliff:g id="ID_1">%s</xliff:g> 登入 Google 網站"</string>
- <string name="autologin_bar_text" msgid="8013977161879448141">"可自動登入。"</string>
+ <!-- no translation found for pref_autologin_progress (8333244467048833461) -->
+ <skip />
+ <string name="autologin_bar_text" msgid="8013977161879448141">"可讓您自動登入。"</string>
<string name="autologin_bar_login_text" msgid="7052816600314556734">"登入"</string>
<string name="autologin_bar_error" msgid="5132514366023044839">"登入失敗。"</string>
<string name="autofill_profile_editor_heading" msgid="8392952553626722083">"輸入您輕觸網頁欄位時要自動填入的資料。"</string>
@@ -269,12 +270,12 @@
</string-array>
<string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"文字編碼"</string>
<string name="pref_lab_title" msgid="5571091610359629423">"研究室"</string>
- <string name="pref_lab_quick_controls" msgid="3267606522082281367">"快速控制介面"</string>
- <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"於左右邊緣滑動拇指即可使用快速控制介面,以及隱藏應用程式列和網址列"</string>
+ <string name="pref_lab_quick_controls" msgid="3267606522082281367">"快速控制項"</string>
+ <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"於左右邊緣滑動拇指即可使用快速控制項,以及隱藏應用程式列和網址列"</string>
<string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"最常瀏覽首頁"</string>
<string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"首頁會顯示您最常瀏覽的網頁。"</string>
<string name="pref_use_instant_search" msgid="1119176077760723740">"Google 互動智慧搜尋"</string>
- <string name="pref_use_instant_search_summary" msgid="839320474961917522">"使用「Google 搜尋」時啟用「Google 互動智慧搜尋」功能,您輸入查詢時可以即時獲得顯示搜尋結果 (這會增加資料傳輸量)。"</string>
+ <string name="pref_use_instant_search_summary" msgid="839320474961917522">"使用「Google 搜尋」時啟用「Google 互動智慧搜尋」功能,即可在您輸入查詢時即時顯示搜尋結果 (這會增加資料傳輸量)。"</string>
<string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"資料連線問題"</string>
<string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"檔案有問題"</string>
<string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"確認"</string>
@@ -368,10 +369,10 @@
<string name="account_chooser_dialog_title" msgid="3314204833188808194">"選擇帳戶"</string>
<string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"與 Google 帳戶保持同步"</string>
<string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"這個裝置上的書籤尚未與 Google 帳戶建立關聯。您可將這些書籤新增至帳戶中加以儲存;如果您不想同步處理這些書籤,只需將其刪除即可。"</string>
- <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"新增這個裝置上現有的書籤,並開始與 Google 帳戶同步化"</string>
- <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"刪除這個裝置上現有的書籤,並開始與 Google 帳戶同步化"</string>
- <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"刪除這個裝置上現有的書籤,並開始與 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> 的書籤同步化。"</string>
- <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"新增這個裝置上現有的書籤,並開始與 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> 的書籤同步化。"</string>
+ <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"新增這個裝置上現有的書籤,並開始與 Google 帳戶保持同步"</string>
+ <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"刪除這個裝置上現有的書籤,並開始與 Google 帳戶保持同步"</string>
+ <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"刪除這個裝置上現有的書籤,並開始與 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> 的書籤保持同步。"</string>
+ <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"新增這個裝置上現有的書籤,並開始與 <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g> 的書籤保持同步。"</string>
<string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"刪除書籤"</string>
<string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"繼續"</string>
<string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"返回"</string>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 6a7c578..15a5c87 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -36,4 +36,5 @@
<color name="qcMenuBackground">#C0000000</color>
<color name="qc_normal">#C02447B2</color>
<color name="qc_selected">#D0102052</color>
+ <color name="tabViewTitleBackground">#D0000000</color>
</resources>
diff --git a/res/values/dimensions.xml b/res/values/dimensions.xml
index 99eb43e..38a7802 100644
--- a/res/values/dimensions.xml
+++ b/res/values/dimensions.xml
@@ -30,21 +30,21 @@
<dimen name="widgetItemMinHeight">48dip</dimen>
<dimen name="favicon_size">16dip</dimen>
<dimen name="favicon_padded_size">20dip</dimen>
- <dimen name="qc_radius_start">50dip</dimen>
- <dimen name="qc_radius_increment">70dip</dimen>
- <dimen name="qc_slop">15dip</dimen>
+ <dimen name="qc_radius_start">30dip</dimen>
+ <dimen name="qc_radius_increment">60dip</dimen>
+ <dimen name="qc_slop">10dip</dimen>
<dimen name="qc_touch_offset">15dip</dimen>
<dimen name="qc_tab_title_height">30dip</dimen>
- <dimen name="qc_thumb_width">240dip</dimen>
- <dimen name="qc_thumb_height">160dip</dimen>
- <dimen name="qc_item_size">48dip</dimen>
+ <dimen name="qc_thumb_width">160dip</dimen>
+ <dimen name="qc_thumb_height">120dip</dimen>
+ <dimen name="qc_item_size">40dip</dimen>
<dimen name="bookmark_widget_thumb_size">32dip</dimen>
<dimen name="bookmark_widget_favicon_size">26dip</dimen>
- <!-- For the most visited page -->
- <dimen name="mv_max_width">830dp</dimen>
- <dimen name="mv_item_width">96dp</dimen>
- <dimen name="mv_item_width_portrait">96dp</dimen>
- <dimen name="mv_border_width">3dp</dimen>
+ <!-- For the most visited page (we use px as these are adjusted by the browser) -->
+ <dimen name="mv_max_width">830px</dimen>
+ <dimen name="mv_item_width">94px</dimen>
+ <dimen name="mv_item_width_portrait">80px</dimen>
+ <dimen name="mv_border_width">2px</dimen>
<dimen name="tab_padding_top">12dp</dimen>
<dimen name="tab_first_padding_left">12dp</dimen>
<dimen name="list_favicon_padding">5dip</dimen>
@@ -55,6 +55,13 @@
<dimen name="widgetVerticalSpacing">12dip</dimen>
<!-- For the combined Bookmarks History view -->
<dimen name="combo_paddingTop">10dip</dimen>
- <dimen name="combo_paddingLeftRight">16dip</dimen>
- <dimen name="combo_horizontalSpacing">8dip</dimen>
+ <dimen name="combo_paddingLeftRight">8dip</dimen>
+ <dimen name="combo_horizontalSpacing">6dip</dimen>
+ <dimen name="tab_view_thumbnail_height">76dip</dimen>
+ <!-- Preference activity side margins -->
+ <dimen name="preference_screen_side_margin">0dp</dimen>
+ <!-- Preference activity side margins negative-->
+ <dimen name="preference_screen_side_margin_negative">0dp</dimen>
+ <!-- Preference widget area width (to the left of the text) -->
+ <dimen name="preference_widget_width">56dp</dimen>
</resources>
diff --git a/res/xml-xlarge/lab_preferences.xml b/res/xml-xlarge/lab_preferences.xml
new file mode 100644
index 0000000..87383b0
--- /dev/null
+++ b/res/xml-xlarge/lab_preferences.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <CheckBoxPreference
+ android:key="enable_quick_controls"
+ android:defaultValue="false"
+ android:title="@string/pref_lab_quick_controls"
+ android:summary="@string/pref_lab_quick_controls_summary" />
+
+ <CheckBoxPreference
+ android:key="use_most_visited_homepage"
+ android:defaultValue="false"
+ android:title="@string/pref_lab_most_visited_homepage"
+ android:summary="@string/pref_lab_most_visited_homepage_summary" />
+
+ <CheckBoxPreference
+ android:key="use_instant_search"
+ android:defaultValue="false"
+ android:title="@string/pref_use_instant_search"
+ android:summary="@string/pref_use_instant_search_summary" />
+</PreferenceScreen>
diff --git a/res/xml/lab_preferences.xml b/res/xml/lab_preferences.xml
index 87383b0..b33052f 100644
--- a/res/xml/lab_preferences.xml
+++ b/res/xml/lab_preferences.xml
@@ -16,22 +16,14 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android" >
-
<CheckBoxPreference
android:key="enable_quick_controls"
android:defaultValue="false"
android:title="@string/pref_lab_quick_controls"
android:summary="@string/pref_lab_quick_controls_summary" />
-
<CheckBoxPreference
android:key="use_most_visited_homepage"
android:defaultValue="false"
android:title="@string/pref_lab_most_visited_homepage"
android:summary="@string/pref_lab_most_visited_homepage_summary" />
-
- <CheckBoxPreference
- android:key="use_instant_search"
- android:defaultValue="false"
- android:title="@string/pref_use_instant_search"
- android:summary="@string/pref_use_instant_search_summary" />
</PreferenceScreen>
diff --git a/src/com/android/browser/ActiveTabsPage.java b/src/com/android/browser/ActiveTabsPage.java
index 664fd68..52d943f 100644
--- a/src/com/android/browser/ActiveTabsPage.java
+++ b/src/com/android/browser/ActiveTabsPage.java
@@ -18,62 +18,87 @@
import android.content.Context;
import android.graphics.Bitmap;
-import android.os.Handler;
+import android.text.TextUtils;
import android.util.AttributeSet;
-import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.View.OnClickListener;
import android.view.ViewGroup;
+import android.widget.AbsListView;
import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
+import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
-import android.widget.ListView;
import android.widget.TextView;
-public class ActiveTabsPage extends LinearLayout {
+interface OnCloseTab {
+ void onCloseTab(int position);
+}
- private static final String LOGTAG = "TabPicker";
+public class ActiveTabsPage extends LinearLayout implements OnClickListener,
+ OnItemClickListener, OnCloseTab {
- private final LayoutInflater mFactory;
- private final UiController mUiController;
- private final TabControl mControl;
- private final TabsListAdapter mAdapter;
- private final ListView mListView;
+ private Context mContext;
+ private UiController mController;
+ private TabControl mTabControl;
+ private View mNewTab, mNewIncognitoTab;
+ private TabAdapter mAdapter;
+ private AbsListView mTabsList;
- public ActiveTabsPage(Context context, UiController control) {
+ public ActiveTabsPage(Context context, UiController controller) {
super(context);
- mUiController = control;
- mControl = control.getTabControl();
- mFactory = LayoutInflater.from(context);
- mFactory.inflate(R.layout.active_tabs, this);
- mListView = (ListView) findViewById(R.id.list);
- mAdapter = new TabsListAdapter();
- mListView.setAdapter(mAdapter);
- mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id) {
- if (mControl.canCreateNewTab()) {
- position -= 2;
- }
- boolean needToAttach = false;
- if (position == -2) {
- // Create a new tab
- mUiController.openTabToHomePage();
- } else if (position == -1) {
- // Create a new incognito tab
- mUiController.openIncognitoTab();
- } else {
- // Open the corresponding tab
- // If the tab is the current one, switchToTab will
- // do nothing and return, so we need to make sure
- // it gets attached back to its mContentView in
- // removeActiveTabPage
- needToAttach = !mUiController.switchToTab(position);
- }
- mUiController.removeActiveTabsPage(needToAttach);
- }
- });
+ mContext = context;
+ mController = controller;
+ mTabControl = mController.getTabControl();
+ setOrientation(VERTICAL);
+ setBackgroundResource(R.drawable.bg_browser);
+ LayoutInflater inflate = LayoutInflater.from(mContext);
+ inflate.inflate(R.layout.active_tabs, this, true);
+ mNewTab = findViewById(R.id.new_tab);
+ mNewIncognitoTab = findViewById(R.id.new_incognito_tab);
+ mNewTab.setOnClickListener(this);
+ mNewIncognitoTab.setOnClickListener(this);
+ int visibility = mTabControl.canCreateNewTab() ? View.VISIBLE : View.GONE;
+ mNewTab.setVisibility(visibility);
+ mNewIncognitoTab.setVisibility(visibility);
+ mTabsList = (AbsListView) findViewById(android.R.id.list);
+ mAdapter = new TabAdapter(mContext, mTabControl);
+ mAdapter.setOnCloseListener(this);
+ mTabsList.setAdapter(mAdapter);
+ mTabsList.setOnItemClickListener(this);
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (v == mNewTab) {
+ mController.openTabToHomePage();
+ } else if (v == mNewIncognitoTab) {
+ mController.openIncognitoTab();
+ }
+ mController.removeActiveTabsPage(false);
+ }
+
+ @Override
+ public void onItemClick(
+ AdapterView<?> parent, View view, int position, long id) {
+ boolean needToAttach = !mController.switchToTab(position);
+ mController.removeActiveTabsPage(needToAttach);
+ }
+
+ @Override
+ public void onCloseTab(int position) {
+ Tab tab = mTabControl.getTab(position);
+ if (tab != null) {
+ mController.closeTab(tab);
+ if (mTabControl.getTabCount() == 0) {
+ mController.openTabToHomePage();
+ mController.removeActiveTabsPage(false);
+ } else {
+ mAdapter.notifyDataSetChanged();
+ }
+ }
}
/**
@@ -81,7 +106,7 @@
* the parent to be pressed without being pressed itself. This way the line
* of a tab can be pressed, but the close button itself is not.
*/
- private static class CloseHolder extends ImageView {
+ public static class CloseHolder extends ImageView {
public CloseHolder(Context context, AttributeSet attrs) {
super(context, attrs);
}
@@ -96,118 +121,79 @@
}
}
- private class TabsListAdapter extends BaseAdapter {
- private boolean mNotified = true;
- private int mReturnedCount;
- private Handler mHandler = new Handler();
+ static class TabAdapter extends BaseAdapter implements OnClickListener {
+ LayoutInflater mInflater;
+ OnCloseTab mCloseListener;
+ TabControl mTabControl;
+
+ TabAdapter(Context context, TabControl tabs) {
+ mInflater = LayoutInflater.from(context);
+ mTabControl = tabs;
+ }
+
+ void setOnCloseListener(OnCloseTab listener) {
+ mCloseListener = listener;
+ }
+
+ @Override
+ public View getView(int position, View view, ViewGroup parent) {
+ if (view == null) {
+ view = mInflater.inflate(R.layout.tab_view, parent, false);
+ }
+ ImageView favicon = (ImageView) view.findViewById(R.id.favicon);
+ ImageView thumbnail = (ImageView) view.findViewById(R.id.thumb);
+ TextView title = (TextView) view.findViewById(R.id.label);
+ Tab tab = getItem(position);
+
+ String label = tab.getTitle();
+ if (TextUtils.isEmpty(label)) {
+ label = tab.getUrl();
+ }
+ title.setText(label);
+ Bitmap thumbnailBitmap = tab.getScreenshot();
+ if (thumbnailBitmap == null) {
+ thumbnail.setImageResource(R.drawable.browser_thumbnail);
+ } else {
+ thumbnail.setImageBitmap(thumbnailBitmap);
+ }
+ Bitmap faviconBitmap = tab.getFavicon();
+ if (tab.isPrivateBrowsingEnabled()) {
+ favicon.setImageResource(R.drawable.ic_incognito_holo_dark);
+ } else {
+ if (faviconBitmap == null) {
+ favicon.setImageResource(R.drawable.app_web_browser_sm);
+ } else {
+ favicon.setImageBitmap(faviconBitmap);
+ }
+ }
+ View close = view.findViewById(R.id.close);
+ close.setTag(position);
+ close.setOnClickListener(this);
+ return view;
+ }
+
+ @Override
+ public void onClick(View v) {
+ int position = (Integer) v.getTag();
+ if (mCloseListener != null) {
+ mCloseListener.onCloseTab(position);
+ }
+ }
+
+ @Override
public int getCount() {
- int count = mControl.getTabCount();
- if (mControl.canCreateNewTab()) {
- count += 2;
- }
- // XXX: This is a workaround to be more like a real adapter. Most
- // adapters call notifyDataSetChanged() whenever the internal data
- // has changed. Since TabControl is our internal data, we don't
- // know when that changes.
- //
- // Keep track of the last count we returned and whether we called
- // notifyDataSetChanged(). If we did not initiate a data set
- // change, and the count is different, send the notify and return
- // the old count.
- if (!mNotified && count != mReturnedCount) {
- notifyChange();
- return mReturnedCount;
- }
- mReturnedCount = count;
- mNotified = false;
- return count;
+ return mTabControl.getTabCount();
}
- public Object getItem(int position) {
- return null;
+
+ @Override
+ public Tab getItem(int position) {
+ return mTabControl.getTab(position);
}
+
+ @Override
public long getItemId(int position) {
return position;
}
- public int getViewTypeCount() {
- return 2;
- }
- public int getItemViewType(int position) {
- if (mControl.canCreateNewTab()) {
- position -= 2;
- }
- // Do not recycle the "add new tab" item.
- return position < 0 ? IGNORE_ITEM_VIEW_TYPE : 1;
- }
- public View getView(int position, View convertView, ViewGroup parent) {
- final int tabCount = mControl.getTabCount();
- if (mControl.canCreateNewTab()) {
- position -= 2;
- }
-
- if (convertView == null) {
- if (position == -2) {
- convertView = mFactory.inflate(R.layout.tab_view_add_tab, null);
- } else if (position == -1) {
- convertView = mFactory.inflate(R.layout.tab_view_add_incognito_tab, null);
- } else {
- convertView = mFactory.inflate(R.layout.tab_view, null);
- }
- }
-
- if (position >= 0) {
- TextView title =
- (TextView) convertView.findViewById(R.id.title);
- TextView url = (TextView) convertView.findViewById(R.id.url);
- ImageView favicon =
- (ImageView) convertView.findViewById(R.id.favicon);
- View close = convertView.findViewById(R.id.close);
- Tab tab = mControl.getTab(position);
- if (tab.getWebView() == null) {
- // This means that populatePickerData will have to use the
- // saved state.
- Log.w(LOGTAG, "Tab " + position + " has a null WebView and "
- + (tab.getSavedState() == null ? "null" : "non-null")
- + " saved state ");
- }
- if (tab.getTitle() == null || tab.getTitle().length() == 0) {
- Log.w(LOGTAG, "Tab " + position + " has no title. "
- + "Check above in the Logs to see whether it has a "
- + "null WebView or null WebHistoryItem");
- }
- title.setText(tab.getTitle());
- url.setText(tab.getUrl());
- Bitmap icon = tab.getFavicon();
- if (icon != null) {
- favicon.setImageBitmap(icon);
- } else {
- favicon.setImageResource(R.drawable.app_web_browser_sm);
- }
- final int closePosition = position;
- close.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- mUiController.closeTab(
- mControl.getTab(closePosition));
- if (tabCount == 1) {
- mUiController.openTabToHomePage();
- mUiController.removeActiveTabsPage(false);
- } else {
- mNotified = true;
- notifyDataSetChanged();
- }
- }
- });
- }
- return convertView;
- }
-
- void notifyChange() {
- mHandler.post(new Runnable() {
- public void run() {
- mNotified = true;
- notifyDataSetChanged();
- }
- });
- }
}
}
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 71346ae..2a03893 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -17,12 +17,10 @@
package com.android.browser;
import com.android.browser.Tab.LockIcon;
-import com.android.browser.UI.DropdownChangeListener;
-import android.animation.Animator;
-import android.animation.Animator.AnimatorListener;
import android.animation.ObjectAnimator;
import android.app.Activity;
+import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Bitmap;
@@ -122,6 +120,20 @@
mTitleShowing = false;
}
+ @Override
+ public WebView createWebView(boolean privateBrowsing) {
+ // Create a new WebView
+ BrowserWebView w = new BrowserWebView(mActivity, null,
+ android.R.attr.webViewStyle, privateBrowsing);
+ initWebViewSettings(w);
+ return w;
+ }
+
+ @Override
+ public WebView createSubWebView(boolean privateBrowsing) {
+ return createWebView(privateBrowsing);
+ }
+
/**
* common webview initialization
* @param w the webview to initialize
@@ -132,6 +144,10 @@
w.setMapTrackballToArrowKeys(false); // use trackball directly
// Enable the built-in zoom
w.getSettings().setBuiltInZoomControls(true);
+ boolean supportsMultiTouch = mActivity.getPackageManager()
+ .hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH);
+ w.getSettings().setDisplayZoomControls(!supportsMultiTouch);
+ w.setExpandedTileBounds(true); // smoother scrolling
// Add this WebView to the settings observer list and update the
// settings
@@ -303,8 +319,6 @@
Log.w(LOGTAG, "mContainer is already attached to content in"
+ " attachTabToContentView!");
}
- mainView.setNextFocusUpId(R.id.url_focused);
- mainView.setNextFocusDownId(R.id.url_focused);
mUiController.attachSubWindow(tab);
}
@@ -398,6 +412,13 @@
mContentView.addView(container, COVER_SCREEN_PARAMS);
}
+ protected void refreshWebView() {
+ Tab tab = getActiveTab();
+ if ((tab != null) && (tab.getWebView() != null)) {
+ tab.getWebView().invalidate();
+ }
+ }
+
boolean canShowTitleBar() {
return !isTitleBarShowing()
&& !isActivityPaused()
@@ -429,19 +450,24 @@
}
@Override
- public void showVoiceTitleBar(String title) {
- getTitleBar().setInVoiceMode(true);
+ public void showVoiceTitleBar(String title, List<String> results) {
+ getTitleBar().setInVoiceMode(true, results);
getTitleBar().setDisplayTitle(title);
}
@Override
public void revertVoiceTitleBar(Tab tab) {
- getTitleBar().setInVoiceMode(false);
+ getTitleBar().setInVoiceMode(false, null);
String url = tab.getUrl();
getTitleBar().setDisplayTitle(url);
}
@Override
+ public void registerDropdownChangeListener(DropdownChangeListener d) {
+ getTitleBar().registerDropdownChangeListener(d);
+ }
+
+ @Override
public void showComboView(boolean startWithHistory, Bundle extras) {
if (mComboView != null) {
return;
@@ -455,8 +481,9 @@
FrameLayout wrapper =
(FrameLayout) mContentView.findViewById(R.id.webview_wrapper);
wrapper.setVisibility(View.GONE);
- hideTitleBar();
+ getTitleBar().stopEditingUrl();
dismissIME();
+ hideTitleBar();
if (mActiveTab != null) {
WebView web = mActiveTab.getWebView();
mActiveTab.putInBackground();
@@ -562,7 +589,9 @@
protected void updateNavigationState(Tab tab) {
}
- protected void updateAutoLogin(Tab tab, boolean animate) {}
+ protected void updateAutoLogin(Tab tab, boolean animate) {
+ getTitleBar().updateAutoLogin(tab, animate);
+ }
/**
* Update the lock icon to correspond to our latest state.
@@ -608,11 +637,6 @@
@Override
public void onActionModeFinished(boolean inLoad) {
- if (inLoad) {
- // the titlebar was removed when the CAB was shown
- // if the page is loading, show it again
- showTitleBar();
- }
}
// active tabs page
@@ -721,7 +745,23 @@
warning.show();
}
- @Override
- public void registerDropdownChangeListener(DropdownChangeListener d) {
+ protected void captureTab(final Tab tab) {
+ captureTab(tab,
+ (int) mActivity.getResources()
+ .getDimension(R.dimen.qc_thumb_width),
+ (int) mActivity.getResources()
+ .getDimension(R.dimen.qc_thumb_height));
}
+
+ protected void captureTab(final Tab tab, int width, int height) {
+ if ((tab == null) || (tab.getWebView() == null)) return;
+ Bitmap sshot = Controller.createScreenshot(tab, width, height);
+ tab.setScreenshot(sshot);
+ }
+
+ void showTitleBarAndEdit() {
+ showTitleBar();
+ getTitleBar().startEditingUrl(false);
+ }
+
}
diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java
index 9e71077..201079c 100644
--- a/src/com/android/browser/BrowserBookmarksAdapter.java
+++ b/src/com/android/browser/BrowserBookmarksAdapter.java
@@ -20,7 +20,6 @@
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
-import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -31,7 +30,6 @@
class BrowserBookmarksAdapter extends CursorAdapter {
LayoutInflater mInflater;
int mCurrentView;
- Drawable mFaviconBackground;
/**
* Create a new BrowserBookmarksAdapter.
@@ -42,8 +40,6 @@
super(context, null, 0);
mInflater = LayoutInflater.from(context);
selectView(defaultView);
- float density = context.getResources().getDisplayMetrics().density;
- mFaviconBackground = BookmarkUtils.createListFaviconBackground(context);
}
@Override
@@ -101,9 +97,7 @@
} else {
favicon.setImageBitmap(faviconBitmap);
}
- //favicon.setBackgroundResource(R.drawable.bookmark_list_favicon_bg);
- // TODO: Switch to above instead of below once b/3353813 is fixed
- favicon.setBackgroundDrawable(mFaviconBackground);
+ favicon.setBackgroundResource(R.drawable.bookmark_list_favicon_bg);
}
}
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index de28d0d..88b8979 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -331,10 +331,15 @@
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
- setHasOptionsMenu(true);
+ SharedPreferences prefs = PreferenceManager
+ .getDefaultSharedPreferences(getActivity());
+ prefs.registerOnSharedPreferenceChangeListener(this);
+ mCurrentView = prefs.getInt(PREF_SELECTED_VIEW, getDefaultView());
Bundle args = getArguments();
mDisableNewWindow = args == null ? false : args.getBoolean(EXTRA_DISABLE_WINDOW, false);
+
+ setHasOptionsMenu(true);
}
@Override
@@ -372,11 +377,6 @@
}
// Start the loaders
LoaderManager lm = getLoaderManager();
- SharedPreferences prefs = PreferenceManager
- .getDefaultSharedPreferences(getActivity());
- prefs.registerOnSharedPreferenceChangeListener(this);
- mCurrentView =
- prefs.getInt(PREF_SELECTED_VIEW, getDefaultView());
mAdapter = new BrowserBookmarksAdapter(getActivity(), mCurrentView);
lm.restartLoader(LOADER_BOOKMARKS, null, this);
diff --git a/src/com/android/browser/BrowserHistoryPage.java b/src/com/android/browser/BrowserHistoryPage.java
index 44f358d..50bed36 100644
--- a/src/com/android/browser/BrowserHistoryPage.java
+++ b/src/com/android/browser/BrowserHistoryPage.java
@@ -59,6 +59,9 @@
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
+import android.widget.ExpandableListView;
+import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
+import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
@@ -68,7 +71,7 @@
* days of viewing.
*/
public class BrowserHistoryPage extends Fragment
- implements LoaderCallbacks<Cursor> {
+ implements LoaderCallbacks<Cursor>, OnChildClickListener {
static final int LOADER_HISTORY = 1;
static final int LOADER_MOST_VISITED = 2;
@@ -82,6 +85,7 @@
ListView mGroupList, mChildList;
private ViewGroup mPrefsContainer;
private FragmentBreadCrumbs mFragmentBreadCrumbs;
+ private ExpandableListView mHistoryList;
// Implementation of WebIconDatabase.IconListener
class IconReceiver implements IconListener {
@@ -187,7 +191,7 @@
switch (loader.getId()) {
case LOADER_HISTORY: {
mAdapter.changeCursor(data);
- if (!mAdapter.isEmpty()
+ if (!mAdapter.isEmpty() && mGroupList != null
&& mGroupList.getCheckedItemPosition() == ListView.INVALID_POSITION) {
selectGroup(0);
}
@@ -229,26 +233,13 @@
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mRoot = inflater.inflate(R.layout.history, container, false);
- ViewStub stub = (ViewStub) mRoot.findViewById(R.id.pref_stub);
- stub.setLayoutResource(com.android.internal.R.layout.preference_list_content);
- stub.inflate();
- mGroupList = (ListView) mRoot.findViewById(android.R.id.list);
- mPrefsContainer = (ViewGroup) mRoot.findViewById(com.android.internal.R.id.prefs_frame);
- mFragmentBreadCrumbs = (FragmentBreadCrumbs) mRoot.findViewById(android.R.id.title);
- mFragmentBreadCrumbs.setMaxVisible(1);
- mFragmentBreadCrumbs.setActivity(getActivity());
- mPrefsContainer.setVisibility(View.VISIBLE);
mAdapter = new HistoryAdapter(getActivity());
- mGroupList.setAdapter(new HistoryGroupWrapper(mAdapter));
- mGroupList.setOnItemClickListener(mGroupItemClickListener);
- mGroupList.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
- mChildWrapper = new HistoryChildWrapper(mAdapter);
- mChildList = new ListView(getActivity());
- mChildList.setAdapter(mChildWrapper);
- mChildList.setOnItemClickListener(mChildItemClickListener);
- registerForContextMenu(mChildList);
- ViewGroup prefs = (ViewGroup) mRoot.findViewById(com.android.internal.R.id.prefs);
- prefs.addView(mChildList);
+ ViewStub stub = (ViewStub) mRoot.findViewById(R.id.pref_stub);
+ if (stub != null) {
+ inflateTwoPane(stub);
+ } else {
+ inflateSinglePane();
+ }
// Start the loaders
getLoaderManager().restartLoader(LOADER_HISTORY, null, this);
@@ -259,6 +250,34 @@
return mRoot;
}
+ private void inflateSinglePane() {
+ mHistoryList = (ExpandableListView) mRoot.findViewById(R.id.history);
+ mHistoryList.setAdapter(mAdapter);
+ mHistoryList.setOnChildClickListener(this);
+ registerForContextMenu(mHistoryList);
+ }
+
+ private void inflateTwoPane(ViewStub stub) {
+ stub.setLayoutResource(R.layout.preference_list_content);
+ stub.inflate();
+ mGroupList = (ListView) mRoot.findViewById(android.R.id.list);
+ mPrefsContainer = (ViewGroup) mRoot.findViewById(R.id.prefs_frame);
+ mFragmentBreadCrumbs = (FragmentBreadCrumbs) mRoot.findViewById(android.R.id.title);
+ mFragmentBreadCrumbs.setMaxVisible(1);
+ mFragmentBreadCrumbs.setActivity(getActivity());
+ mPrefsContainer.setVisibility(View.VISIBLE);
+ mGroupList.setAdapter(new HistoryGroupWrapper(mAdapter));
+ mGroupList.setOnItemClickListener(mGroupItemClickListener);
+ mGroupList.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
+ mChildWrapper = new HistoryChildWrapper(mAdapter);
+ mChildList = new ListView(getActivity());
+ mChildList.setAdapter(mChildWrapper);
+ mChildList.setOnItemClickListener(mChildItemClickListener);
+ registerForContextMenu(mChildList);
+ ViewGroup prefs = (ViewGroup) mRoot.findViewById(R.id.prefs);
+ prefs.addView(mChildList);
+ }
+
private OnItemClickListener mGroupItemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(
@@ -279,6 +298,13 @@
};
@Override
+ public boolean onChildClick(ExpandableListView parent, View view,
+ int groupPosition, int childPosition, long id) {
+ mCallbacks.onUrlSelected(((HistoryItem) view).getUrl(), false);
+ return true;
+ }
+
+ @Override
public void onDestroy() {
super.onDestroy();
CombinedBookmarkHistoryView.getIconListenerSet().removeListener(mIconReceiver);
@@ -341,17 +367,30 @@
}
}
+ View getTargetView(ContextMenuInfo menuInfo) {
+ if (menuInfo instanceof AdapterContextMenuInfo) {
+ return ((AdapterContextMenuInfo) menuInfo).targetView;
+ }
+ if (menuInfo instanceof ExpandableListContextMenuInfo) {
+ return ((ExpandableListContextMenuInfo) menuInfo).targetView;
+ }
+ return null;
+ }
+
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
- AdapterContextMenuInfo i = (AdapterContextMenuInfo) menuInfo;
+
+ View targetView = getTargetView(menuInfo);
+ if (!(targetView instanceof HistoryItem)) {
+ return;
+ }
+ HistoryItem historyItem = (HistoryItem) targetView;
// Inflate the menu
Activity parent = getActivity();
MenuInflater inflater = parent.getMenuInflater();
inflater.inflate(R.menu.historycontext, menu);
- HistoryItem historyItem = (HistoryItem) i.targetView;
-
// Setup the header
if (mContextHeader == null) {
mContextHeader = new HistoryItem(parent, false);
@@ -382,12 +421,11 @@
@Override
public boolean onContextItemSelected(MenuItem item) {
- AdapterContextMenuInfo i =
- (AdapterContextMenuInfo) item.getMenuInfo();
- if (i == null) {
+ ContextMenuInfo menuInfo = item.getMenuInfo();
+ if (menuInfo == null) {
return false;
}
- HistoryItem historyItem = (HistoryItem) i.targetView;
+ HistoryItem historyItem = (HistoryItem) getTargetView(menuInfo);
String url = historyItem.getUrl();
String title = historyItem.getName();
Activity activity = getActivity();
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 357d1e9..9dc3c5f 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -193,7 +193,7 @@
public static final Uri RLZ_PROVIDER_URI = Uri.parse("content://" + RLZ_PROVIDER + "/");
// Set to true to enable some of the about:debug options
- public static final boolean DEV_BUILD = false;
+ public static final boolean DEV_BUILD = true;
private Controller mController;
diff --git a/src/com/android/browser/ScrollWebView.java b/src/com/android/browser/BrowserWebView.java
similarity index 92%
rename from src/com/android/browser/ScrollWebView.java
rename to src/com/android/browser/BrowserWebView.java
index 8c89e51..6111aa6 100644
--- a/src/com/android/browser/ScrollWebView.java
+++ b/src/com/android/browser/BrowserWebView.java
@@ -17,7 +17,6 @@
package com.android.browser;
import android.content.Context;
-import android.graphics.Bitmap;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
@@ -28,14 +27,13 @@
/**
* Manage WebView scroll events
*/
-public class ScrollWebView extends WebView implements Runnable {
+public class BrowserWebView extends WebView implements Runnable {
private ScrollListener mScrollListener;
private boolean mIsCancelled;
private boolean mBackgroundRemoved = false;
private boolean mUserInitiated = false;
private TitleBarBase mTitleBar;
- private Bitmap mBitmap;
/**
* @param context
@@ -43,7 +41,7 @@
* @param defStyle
* @param javascriptInterfaces
*/
- public ScrollWebView(Context context, AttributeSet attrs, int defStyle,
+ public BrowserWebView(Context context, AttributeSet attrs, int defStyle,
Map<String, Object> javascriptInterfaces, boolean privateBrowsing) {
super(context, attrs, defStyle, javascriptInterfaces, privateBrowsing);
}
@@ -53,7 +51,7 @@
* @param attrs
* @param defStyle
*/
- public ScrollWebView(
+ public BrowserWebView(
Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) {
super(context, attrs, defStyle, privateBrowsing);
}
@@ -62,14 +60,14 @@
* @param context
* @param attrs
*/
- public ScrollWebView(Context context, AttributeSet attrs) {
+ public BrowserWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* @param context
*/
- public ScrollWebView(Context context) {
+ public BrowserWebView(Context context) {
super(context);
}
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index a028882..47b817c 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -1056,14 +1056,21 @@
mActivity.startActivity(intent);
}
- public void activateVoiceSearchMode(String title) {
- mUi.showVoiceTitleBar(title);
+ @Override
+ public void activateVoiceSearchMode(String title, List<String> results) {
+ mUi.showVoiceTitleBar(title, results);
}
public void revertVoiceSearchMode(Tab tab) {
mUi.revertVoiceTitleBar(tab);
}
+ public boolean supportsVoiceSearch() {
+ SearchEngine searchEngine = BrowserSettings.getInstance()
+ .getSearchEngine();
+ return (searchEngine != null && searchEngine.supportsVoiceSearch());
+ }
+
public void showCustomView(Tab tab, View view,
WebChromeClient.CustomViewCallback callback) {
if (tab.inForeground()) {
@@ -1774,7 +1781,6 @@
// title bar once again.
mExtendedMenuOpen = false;
mUi.onExtendedMenuClosed(mInLoad);
- mUi.onOptionsMenuOpened();
}
}
} else {
diff --git a/src/com/android/browser/InstantSearchEngine.java b/src/com/android/browser/InstantSearchEngine.java
index 85e494a..6ff7db7 100644
--- a/src/com/android/browser/InstantSearchEngine.java
+++ b/src/com/android/browser/InstantSearchEngine.java
@@ -174,7 +174,12 @@
* visible tab.
*/
private void switchSearchboxIfNeeded() {
- final SearchBox searchBox = getCurrentWebview().getSearchBox();
+ final WebView current = getCurrentWebview();
+ if (current == null) {
+ return;
+ }
+
+ final SearchBox searchBox = current.getSearchBox();
if (searchBox != mSearchBox) {
if (mSearchBox != null) {
mSearchBox.removeSearchBoxListener(mListener);
@@ -188,7 +193,12 @@
}
private boolean isInstantPage() {
- String currentUrl = getCurrentWebview().getUrl();
+ final WebView current = getCurrentWebview();
+ if (current == null) {
+ return false;
+ }
+
+ final String currentUrl = current.getUrl();
if (currentUrl != null) {
Uri uri = Uri.parse(currentUrl);
@@ -210,7 +220,10 @@
mController.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
- getCurrentWebview().loadUrl(getInstantBaseUrl());
+ final WebView current = getCurrentWebview();
+ if (current != null) {
+ current.loadUrl(getInstantBaseUrl());
+ }
}
});
}
@@ -292,7 +305,12 @@
}
private int rescaleHeight(int height) {
- final float scale = getCurrentWebview().getScale();
+ final WebView current = getCurrentWebview();
+ if (current == null) {
+ return 0;
+ }
+
+ final float scale = current.getScale();
if (scale != 0) {
return (int) (height / scale);
}
@@ -306,8 +324,10 @@
if (rescaledHeight != mHeight) {
mHeight = rescaledHeight;
- mSearchBox.setDimensions(0, 0, 0, rescaledHeight);
- mSearchBox.onresize();
+ if (mSearchBox != null) {
+ mSearchBox.setDimensions(0, 0, 0, rescaledHeight);
+ mSearchBox.onresize();
+ }
}
}
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index f1939e4..42e2aff 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -19,6 +19,7 @@
import android.app.Activity;
import android.content.Context;
import android.graphics.PixelFormat;
+import android.os.Handler;
import android.util.Log;
import android.view.ActionMode;
import android.view.Gravity;
@@ -28,6 +29,7 @@
import android.view.View;
import android.view.WindowManager;
import android.webkit.WebView;
+import android.widget.FrameLayout;
/**
* Ui for regular phone screen sizes
@@ -36,9 +38,11 @@
private static final String LOGTAG = "PhoneUi";
- private TitleBar mTitleBar;
+ private TitleBarPhone mTitleBar;
private ActiveTabsPage mActiveTabsPage;
private TouchProxy mTitleOverlay;
+ private boolean mUseQuickControls;
+ private PieControl mPieControl;
boolean mExtendedMenuOpen;
boolean mOptionsMenuOpen;
@@ -49,11 +53,12 @@
*/
public PhoneUi(Activity browser, UiController controller) {
super(browser, controller);
- mTitleBar = new TitleBar(mActivity, mUiController, this);
+ mTitleBar = new TitleBarPhone(mActivity, mUiController, this);
// mTitleBar will be always be shown in the fully loaded mode on
// phone
mTitleBar.setProgress(100);
mActivity.getActionBar().hide();
+ setUseQuickControls(BrowserSettings.getInstance().useQuickControls());
}
@Override
@@ -62,23 +67,6 @@
mActivity.getActionBar().hide();
}
- // webview factory
-
- @Override
- public WebView createWebView(boolean privateBrowsing) {
- // Create a new WebView
- WebView w = new WebView(mActivity, null,
- android.R.attr.webViewStyle, privateBrowsing);
- initWebViewSettings(w);
- return w;
- }
-
- @Override
- public WebView createSubWebView(boolean privateBrowsing) {
- WebView web = createWebView(privateBrowsing);
- return web;
- }
-
// lifecycle
@Override
@@ -122,9 +110,16 @@
if (progress == 100) {
if (!mOptionsMenuOpen || !mExtendedMenuOpen) {
hideTitleBar();
+ if (mUseQuickControls) {
+ mTitleBar.setShowProgressOnly(false);
+ }
}
} else {
if (!mOptionsMenuOpen || mExtendedMenuOpen) {
+ if (mUseQuickControls && !mTitleBar.isEditingUrl()) {
+ mTitleBar.setShowProgressOnly(true);
+ setTitleGravity(Gravity.TOP);
+ }
showTitleBar();
}
}
@@ -132,28 +127,48 @@
}
@Override
- public void setActiveTab(Tab tab) {
- super.setActiveTab(tab);
- WebView view = tab.getWebView();
+ public void setActiveTab(final Tab tab) {
+ captureTab(mActiveTab);
+ super.setActiveTab(tab, true);
+ setActiveTab(tab, true);
+ }
+
+ @Override
+ void setActiveTab(Tab tab, boolean needsAttaching) {
+ BrowserWebView view = (BrowserWebView) tab.getWebView();
// TabControl.setCurrentTab has been called before this,
// so the tab is guaranteed to have a webview
if (view == null) {
Log.e(LOGTAG, "active tab with no webview detected");
return;
}
- view.setEmbeddedTitleBar(getTitleBar());
+ // Request focus on the top window.
+ if (mUseQuickControls) {
+ mPieControl.forceToTop(mContentView);
+ view.setScrollListener(null);
+ } else {
+ // check if title bar is already attached by animation
+ if (mTitleBar.getParent() == null) {
+ view.setEmbeddedTitleBar(mTitleBar);
+ }
+ }
if (tab.isInVoiceSearchMode()) {
- showVoiceTitleBar(tab.getVoiceDisplayTitle());
+ showVoiceTitleBar(tab.getVoiceDisplayTitle(), tab.getVoiceSearchResults());
} else {
revertVoiceTitleBar(tab);
}
+ updateLockIconToLatest(tab);
tab.getTopWindow().requestFocus();
}
@Override
protected void showTitleBar() {
if (canShowTitleBar()) {
- setTitleGravity(Gravity.TOP);
+ if (mUseQuickControls) {
+ mContentView.addView(mTitleBar);
+ } else {
+ setTitleGravity(Gravity.TOP);
+ }
super.showTitleBar();
}
}
@@ -161,7 +176,11 @@
@Override
protected void hideTitleBar() {
if (isTitleBarShowing()) {
- setTitleGravity(Gravity.NO_GRAVITY);
+ if (mUseQuickControls) {
+ mContentView.removeView(mTitleBar);
+ } else {
+ setTitleGravity(Gravity.NO_GRAVITY);
+ }
super.hideTitleBar();
}
}
@@ -175,6 +194,7 @@
@Override
public void showActiveTabsPage() {
+ captureTab(mActiveTab);
mActiveTabsPage = new ActiveTabsPage(mActivity, mUiController);
mTitleBar.setVisibility(View.GONE);
hideTitleBar();
@@ -232,7 +252,9 @@
@Override
public void onExtendedMenuClosed(boolean inLoad) {
mExtendedMenuOpen = false;
- showTitleBar();
+ if (!mUseQuickControls) {
+ showTitleBar();
+ }
}
@Override
@@ -255,6 +277,17 @@
}
@Override
+ public void onActionModeFinished(boolean inLoad) {
+ if (inLoad) {
+ if (mUseQuickControls) {
+ mTitleBar.setShowProgressOnly(true);
+ }
+ showTitleBar();
+ }
+ mActivity.getActionBar().hide();
+ }
+
+ @Override
public boolean dispatchKey(int code, KeyEvent event) {
return false;
}
@@ -287,4 +320,69 @@
return params;
}
}
+
+ @Override
+ protected void setTitleGravity(int gravity) {
+ if (mUseQuickControls) {
+ FrameLayout.LayoutParams lp =
+ (FrameLayout.LayoutParams) getTitleBar().getLayoutParams();
+ lp.gravity = gravity;
+ getTitleBar().setLayoutParams(lp);
+ } else {
+ super.setTitleGravity(gravity);
+ }
+ }
+
+ private void setUseQuickControls(boolean useQuickControls) {
+ mUseQuickControls = useQuickControls;
+ getTitleBar().setUseQuickControls(mUseQuickControls);
+ if (useQuickControls) {
+ mPieControl = new PieControl(mActivity, mUiController, this);
+ mPieControl.attachToContainer(mContentView);
+ Tab tab = getActiveTab();
+ if ((tab != null) && (tab.getWebView() != null)) {
+ tab.getWebView().setEmbeddedTitleBar(null);
+ }
+ } else {
+ mActivity.getActionBar().show();
+ if (mPieControl != null) {
+ mPieControl.removeFromContainer(mContentView);
+ }
+ WebView web = mTabControl.getCurrentWebView();
+ if (web != null) {
+ web.setEmbeddedTitleBar(mTitleBar);
+ }
+ setTitleGravity(Gravity.NO_GRAVITY);
+ }
+ }
+
+ @Override
+ public boolean onPrepareOptionsMenu(Menu menu) {
+ if (mUseQuickControls) {
+ menu.setGroupVisible(R.id.NAV_MENU, false);
+ mPieControl.onMenuOpened(menu);
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+ @Override
+ protected void captureTab(final Tab tab) {
+ if (mUseQuickControls) {
+ super.captureTab(tab);
+ } else {
+ captureTab(tab,
+ mActivity.getWindowManager().getDefaultDisplay().getWidth(),
+ (int) mActivity.getResources()
+ .getDimension(R.dimen.tab_view_thumbnail_height));
+ }
+ }
+
+ @Override
+ void showTitleBarAndEdit() {
+ mTitleBar.setShowProgressOnly(false);
+ super.showTitleBarAndEdit();
+ }
+
}
diff --git a/src/com/android/browser/PieControl.java b/src/com/android/browser/PieControl.java
index 38ed1bb..846811d 100644
--- a/src/com/android/browser/PieControl.java
+++ b/src/com/android/browser/PieControl.java
@@ -50,7 +50,7 @@
private Activity mActivity;
private UiController mUiController;
- private XLargeUi mUi;
+ private BaseUi mUi;
private PieMenu mPie;
private PieItem mBack;
private PieItem mForward;
@@ -66,7 +66,7 @@
private TextView mTabsCount;
private int mItemSize;
- public PieControl(Activity activity, UiController controller, XLargeUi ui) {
+ public PieControl(Activity activity, UiController controller, BaseUi ui) {
mActivity = activity;
mUiController = controller;
mUi = ui;
@@ -128,10 +128,10 @@
// level 2
mPie.addItem(mForward);
mPie.addItem(mRefresh);
+ mPie.addItem(mOptions);
mPie.addItem(mShowTabs);
mPie.addItem(mNewTab);
mPie.addItem(mClose);
- mPie.addItem(mOptions);
mPie.setController(this);
}
container.addView(mPie);
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 863fc95..87aca57 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -313,7 +313,9 @@
mVoiceSearchData.mLastVoiceSearchTitle
= mVoiceSearchData.mVoiceSearchResults.get(index);
if (mInForeground) {
- mWebViewController.activateVoiceSearchMode(mVoiceSearchData.mLastVoiceSearchTitle);
+ mWebViewController.activateVoiceSearchMode(
+ mVoiceSearchData.mLastVoiceSearchTitle,
+ mVoiceSearchData.mVoiceSearchResults);
}
if (mVoiceSearchData.mVoiceSearchHtmls != null) {
// When index was found it was already ensured that it was valid
diff --git a/src/com/android/browser/TabBar.java b/src/com/android/browser/TabBar.java
index 1d17cb3..c97fc71 100644
--- a/src/com/android/browser/TabBar.java
+++ b/src/com/android/browser/TabBar.java
@@ -16,7 +16,7 @@
package com.android.browser;
-import com.android.browser.ScrollWebView.ScrollListener;
+import com.android.browser.BrowserWebView.ScrollListener;
import android.animation.Animator;
import android.animation.Animator.AnimatorListener;
diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java
deleted file mode 100644
index 686416c..0000000
--- a/src/com/android/browser/TitleBar.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.browser;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
-import android.speech.RecognizerIntent;
-import android.text.SpannableString;
-import android.text.Spanned;
-import android.text.TextUtils;
-import android.text.style.ImageSpan;
-import android.view.ContextMenu;
-import android.view.LayoutInflater;
-import android.view.MenuInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.View.OnFocusChangeListener;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-
-/**
- * This class represents a title bar for a particular "tab" or "window" in the
- * browser.
- */
-public class TitleBar extends TitleBarBase implements OnFocusChangeListener,
- OnClickListener {
-
- private Activity mActivity;
- private ImageButton mBookmarkButton;
- private PageProgressView mHorizontalProgress;
- private ImageButton mStopButton;
- private Drawable mBookmarkDrawable;
- private Drawable mVoiceDrawable;
- private boolean mInLoad;
- private Intent mVoiceSearchIntent;
- private ImageSpan mArcsSpan;
-
- public TitleBar(Activity activity, UiController controller, PhoneUi ui) {
- super(activity, controller, ui);
- LayoutInflater factory = LayoutInflater.from(activity);
- factory.inflate(R.layout.title_bar, this);
- mActivity = activity;
-
- mUrlInput = (UrlInputView) findViewById(R.id.url_input);
- mUrlInput.setCompoundDrawablePadding(5);
- mUrlInput.setContainer(this);
- mUrlInput.setSelectAllOnFocus(true);
- mUrlInput.setController(mUiController);
- mUrlInput.setUrlInputListener(this);
- mUrlInput.setOnFocusChangeListener(this);
-
- mLockIcon = (ImageView) findViewById(R.id.lock);
- mFavicon = (ImageView) findViewById(R.id.favicon);
- mStopButton = (ImageButton) findViewById(R.id.stop);
- mBookmarkButton = (ImageButton) findViewById(R.id.bookmark);
- mStopButton.setOnClickListener(this);
- mBookmarkButton.setOnClickListener(this);
-
- mHorizontalProgress = (PageProgressView) findViewById(
- R.id.progress_horizontal);
- mVoiceSearchIntent = new Intent(RecognizerIntent.ACTION_WEB_SEARCH);
- mVoiceSearchIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
- RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
- // This extra tells voice search not to send the application id in its
- // results intent - http://b/2546173
- //
- // TODO: Make a constant for this extra.
- mVoiceSearchIntent.putExtra("android.speech.extras.SEND_APPLICATION_ID_EXTRA",
- false);
- PackageManager pm = activity.getPackageManager();
- ResolveInfo ri = pm.resolveActivity(mVoiceSearchIntent,
- PackageManager.MATCH_DEFAULT_ONLY);
- Resources resources = getResources();
- if (ri == null) {
- mVoiceSearchIntent = null;
- } else {
- mVoiceDrawable = resources.getDrawable(
- android.R.drawable.ic_btn_speak_now);
- }
- mBookmarkDrawable = mBookmarkButton.getDrawable();
- mArcsSpan = new ImageSpan(activity, R.drawable.arcs,
- ImageSpan.ALIGN_BASELINE);
- }
-
- @Override
- public void createContextMenu(ContextMenu menu) {
- MenuInflater inflater = mActivity.getMenuInflater();
- inflater.inflate(R.menu.title_context, menu);
- mActivity.onCreateContextMenu(menu, this, null);
- }
-
- /**
- * Change the TitleBar to or from voice mode. If there is no package to
- * handle voice search, the TitleBar cannot be set to voice mode.
- */
- @Override
- void setInVoiceMode(boolean inVoiceMode) {
- if (mInVoiceMode == inVoiceMode) return;
- mInVoiceMode = inVoiceMode && mVoiceSearchIntent != null;
- Drawable titleDrawable;
- if (mInVoiceMode) {
- mBookmarkButton.setImageDrawable(mVoiceDrawable);
- mUrlInput.setEllipsize(null);
- mBookmarkButton.setVisibility(View.VISIBLE);
- mStopButton.setVisibility(View.GONE);
- } else {
- if (mInLoad) {
- mBookmarkButton.setVisibility(View.GONE);
- mStopButton.setVisibility(View.VISIBLE);
- } else {
- mBookmarkButton.setVisibility(View.VISIBLE);
- mStopButton.setVisibility(View.GONE);
- mBookmarkButton.setImageDrawable(mBookmarkDrawable);
- }
- mUrlInput.setEllipsize(TextUtils.TruncateAt.END);
- }
- mUrlInput.setSingleLine(!mInVoiceMode);
- }
-
- /**
- * Update the progress, from 0 to 100.
- */
- @Override
- void setProgress(int newProgress) {
- if (newProgress >= PROGRESS_MAX) {
- mHorizontalProgress.setVisibility(View.GONE);
- if (!mInVoiceMode) {
- mBookmarkButton.setImageDrawable(mBookmarkDrawable);
- mBookmarkButton.setVisibility(View.VISIBLE);
- mStopButton.setVisibility(View.GONE);
- }
- mInLoad = false;
- } else {
- mHorizontalProgress.setProgress(newProgress * PageProgressView.MAX_PROGRESS
- / PROGRESS_MAX);
- if (!mInLoad) {
- mHorizontalProgress.setVisibility(View.VISIBLE);
- if (!mInVoiceMode) {
- mBookmarkButton.setVisibility(View.GONE);
- mStopButton.setVisibility(View.VISIBLE);
- }
- mInLoad = true;
- }
- }
- }
-
- /**
- * Update the text displayed in the title bar.
- * @param title String to display. If null, the new tab string will be
- * shown.
- */
- @Override
- void setDisplayTitle(String title) {
- if (title == null) {
- mUrlInput.setText(R.string.new_tab);
- } else {
- if (mInVoiceMode) {
- // Add two spaces. The second one will be replaced with an
- // image, and the first one will put space between it and the
- // text
- SpannableString spannable = new SpannableString(title + " ");
- int end = spannable.length();
- spannable.setSpan(mArcsSpan, end - 1, end,
- Spanned.SPAN_MARK_POINT);
- mUrlInput.setText(spannable);
- } else {
- mUrlInput.setText(title);
- }
- }
- }
-
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- if (v == mUrlInput && hasFocus) {
- mActivity.closeOptionsMenu();
- }
- }
-
- @Override
- public void onClick(View v) {
- if (v == mStopButton) {
- mUiController.stopLoading();
- } else if (v == mBookmarkButton) {
- mUiController.bookmarkCurrentPage(AddBookmarkPage.DEFAULT_FOLDER_ID,
- true);
- }
- }
-
- @Override
- public void setCurrentUrlIsBookmark(boolean isBookmark) {
- mBookmarkButton.setActivated(isBookmark);
- }
-}
diff --git a/src/com/android/browser/TitleBarBase.java b/src/com/android/browser/TitleBarBase.java
index 46136db..d34d18d 100644
--- a/src/com/android/browser/TitleBarBase.java
+++ b/src/com/android/browser/TitleBarBase.java
@@ -16,7 +16,9 @@
package com.android.browser;
+import com.android.browser.UI.DropdownChangeListener;
import com.android.browser.UrlInputView.UrlInputListener;
+import com.android.browser.autocomplete.SuggestedTextController.TextChangeWatcher;
import android.app.SearchManager;
import android.content.Context;
@@ -29,16 +31,36 @@
import android.graphics.drawable.PaintDrawable;
import android.os.Bundle;
import android.speech.RecognizerResultsIntent;
+import android.text.TextUtils;
+import android.view.ContextThemeWrapper;
import android.view.Gravity;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.View.OnFocusChangeListener;
+import android.view.animation.Animation;
+import android.view.animation.Animation.AnimationListener;
+import android.view.animation.AnimationUtils;
+import android.webkit.WebView;
import android.widget.AbsoluteLayout;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.ImageButton;
import android.widget.ImageView;
-import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+import android.widget.RelativeLayout;
+import android.widget.Spinner;
+import android.widget.TextView;
+
+import java.util.List;
/**
* Base class for a title bar used by the browser.
*/
-public class TitleBarBase extends LinearLayout implements UrlInputListener {
+public class TitleBarBase extends RelativeLayout
+ implements OnClickListener, OnFocusChangeListener, UrlInputListener,
+ TextChangeWatcher, DeviceAccountLogin.AutoLoginCallback {
protected static final int PROGRESS_MAX = 100;
@@ -49,9 +71,21 @@
protected Drawable mGenericFavicon;
protected UiController mUiController;
protected BaseUi mBaseUi;
+
protected UrlInputView mUrlInput;
protected boolean mInVoiceMode;
+ // Auto-login UI
+ protected View mAutoLogin;
+ protected Spinner mAutoLoginAccount;
+ protected Button mAutoLoginLogin;
+ protected ProgressBar mAutoLoginProgress;
+ protected TextView mAutoLoginError;
+ protected ImageButton mAutoLoginCancel;
+ protected DeviceAccountLogin mAutoLoginHandler;
+ protected ArrayAdapter<String> mAccountsAdapter;
+ protected boolean mUseQuickControls;
+
public TitleBarBase(Context context, UiController controller, BaseUi ui) {
super(context, null);
mUiController = controller;
@@ -60,8 +94,35 @@
R.drawable.app_web_browser_sm);
}
+ protected void initLayout(Context context, int layoutId) {
+ LayoutInflater factory = LayoutInflater.from(context);
+ factory.inflate(layoutId, this);
+
+ mUrlInput = (UrlInputView) findViewById(R.id.url);
+ mLockIcon = (ImageView) findViewById(R.id.lock);
+ mUrlInput.setUrlInputListener(this);
+ mUrlInput.setController(mUiController);
+ mUrlInput.setOnFocusChangeListener(this);
+ mUrlInput.setSelectAllOnFocus(true);
+ mUrlInput.addQueryTextWatcher(this);
+ mAutoLogin = findViewById(R.id.autologin);
+ mAutoLoginAccount = (Spinner) findViewById(R.id.autologin_account);
+ mAutoLoginLogin = (Button) findViewById(R.id.autologin_login);
+ mAutoLoginLogin.setOnClickListener(this);
+ mAutoLoginProgress = (ProgressBar) findViewById(R.id.autologin_progress);
+ mAutoLoginError = (TextView) findViewById(R.id.autologin_error);
+ mAutoLoginCancel = (ImageButton) mAutoLogin.findViewById(R.id.autologin_close);
+ mAutoLoginCancel.setOnClickListener(this);
+ }
+
+ protected void setupUrlInput() {
+ }
+
+ protected void setUseQuickControls(boolean use) {
+ mUseQuickControls = use;
+ }
+
/* package */ void setProgress(int newProgress) {}
- /* package */ void setDisplayTitle(String title) {}
/* package */ void setLock(Drawable d) {
assert mLockIcon != null;
@@ -90,10 +151,6 @@
mFavicon.setImageDrawable(d);
}
- /* package */ void setInVoiceMode(boolean inVoiceMode) {}
-
- /* package */ void setIncognitoMode(boolean incognito) {}
-
void setTitleGravity(int gravity) {
int newTop = 0;
if (gravity != Gravity.NO_GRAVITY) {
@@ -117,6 +174,181 @@
return getHeight();
}
+ protected void updateAutoLogin(Tab tab, boolean animate) {
+ DeviceAccountLogin login = tab.getDeviceAccountLogin();
+ if (login != null) {
+ mAutoLoginHandler = login;
+ ContextThemeWrapper wrapper = new ContextThemeWrapper(mContext,
+ android.R.style.Theme_Holo_Light);
+ mAccountsAdapter = new ArrayAdapter<String>(wrapper,
+ android.R.layout.simple_spinner_item, login.getAccountNames());
+ mAccountsAdapter.setDropDownViewResource(
+ android.R.layout.simple_spinner_dropdown_item);
+ mAutoLoginAccount.setAdapter(mAccountsAdapter);
+ mAutoLoginAccount.setSelection(0);
+ mAutoLoginAccount.setEnabled(true);
+ mAutoLoginLogin.setEnabled(true);
+ mAutoLoginProgress.setVisibility(View.GONE);
+ mAutoLoginError.setVisibility(View.GONE);
+ switch (login.getState()) {
+ case DeviceAccountLogin.PROCESSING:
+ mAutoLoginAccount.setEnabled(false);
+ mAutoLoginLogin.setEnabled(false);
+ mAutoLoginProgress.setVisibility(View.VISIBLE);
+ break;
+ case DeviceAccountLogin.FAILED:
+ mAutoLoginProgress.setVisibility(View.GONE);
+ mAutoLoginError.setVisibility(View.VISIBLE);
+ break;
+ case DeviceAccountLogin.INITIAL:
+ break;
+ default:
+ throw new IllegalStateException();
+ }
+ showAutoLogin(animate);
+ } else {
+ hideAutoLogin(animate);
+ }
+ }
+
+ protected void showAutoLogin(boolean animate) {
+ mAutoLogin.setVisibility(View.VISIBLE);
+ if (animate) {
+ mAutoLogin.startAnimation(AnimationUtils.loadAnimation(
+ getContext(), R.anim.autologin_enter));
+ }
+ }
+
+ protected void hideAutoLogin(boolean animate) {
+ mAutoLoginHandler = null;
+ if (animate) {
+ Animation anim = AnimationUtils.loadAnimation(
+ getContext(), R.anim.autologin_exit);
+ anim.setAnimationListener(new AnimationListener() {
+ @Override public void onAnimationEnd(Animation a) {
+ mAutoLogin.setVisibility(View.GONE);
+ mBaseUi.refreshWebView();
+ }
+ @Override public void onAnimationStart(Animation a) {}
+ @Override public void onAnimationRepeat(Animation a) {}
+ });
+ mAutoLogin.startAnimation(anim);
+ } else if (mAutoLogin.getAnimation() == null) {
+ mAutoLogin.setVisibility(View.GONE);
+ mBaseUi.refreshWebView();
+ }
+ }
+
+ @Override
+ public void loginFailed() {
+ mAutoLoginAccount.setEnabled(true);
+ mAutoLoginLogin.setEnabled(true);
+ mAutoLoginProgress.setVisibility(View.GONE);
+ mAutoLoginError.setVisibility(View.VISIBLE);
+ }
+
+
+ protected boolean inAutoLogin() {
+ return mAutoLoginHandler != null;
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (mAutoLoginCancel == v) {
+ if (mAutoLoginHandler != null) {
+ mAutoLoginHandler.cancel();
+ mAutoLoginHandler = null;
+ }
+ hideAutoLogin(true);
+ } else if (mAutoLoginLogin == v) {
+ if (mAutoLoginHandler != null) {
+ mAutoLoginAccount.setEnabled(false);
+ mAutoLoginLogin.setEnabled(false);
+ mAutoLoginProgress.setVisibility(View.VISIBLE);
+ mAutoLoginError.setVisibility(View.GONE);
+ mAutoLoginHandler.login(
+ mAutoLoginAccount.getSelectedItemPosition(), this);
+ }
+ }
+ }
+
+ @Override
+ public void onFocusChange(View view, boolean hasFocus) {
+ // if losing focus and not in touch mode, leave as is
+ if (hasFocus || view.isInTouchMode() || mUrlInput.needsUpdate()) {
+ setFocusState(hasFocus);
+ }
+ if (hasFocus) {
+ mUrlInput.forceIme();
+ if (mInVoiceMode) {
+ mUrlInput.forceFilter();
+ }
+ } else if (!mUrlInput.needsUpdate()) {
+ mUrlInput.dismissDropDown();
+ mUrlInput.hideIME();
+ if (mUrlInput.getText().length() == 0) {
+ Tab currentTab = mUiController.getTabControl().getCurrentTab();
+ if (currentTab != null) {
+ mUrlInput.setText(currentTab.getUrl(), false);
+ }
+ }
+ }
+ mUrlInput.clearNeedsUpdate();
+ }
+
+ protected void setFocusState(boolean focus) {
+ if (focus) {
+ updateSearchMode(false);
+ }
+ }
+
+ protected void updateSearchMode(boolean userEdited) {
+ setSearchMode(!userEdited || TextUtils.isEmpty(mUrlInput.getUserText()));
+ }
+
+ protected void setSearchMode(boolean voiceSearchEnabled) {}
+
+ boolean isEditingUrl() {
+ return mUrlInput.hasFocus();
+ }
+
+ void stopEditingUrl() {
+ mUrlInput.clearFocus();
+ }
+
+ void setDisplayTitle(String title) {
+ if (!isEditingUrl()) {
+ mUrlInput.setText(title, false);
+ }
+ }
+
+ // UrlInput text watcher
+
+ @Override
+ public void onTextChanged(String newText) {
+ if (mUrlInput.hasFocus()) {
+ // check if input field is empty and adjust voice search state
+ updateSearchMode(true);
+ // clear voice mode when user types
+ setInVoiceMode(false, null);
+ }
+ }
+
+ // voicesearch
+
+ public void setInVoiceMode(boolean voicemode, List<String> voiceResults) {
+ mInVoiceMode = voicemode;
+ mUrlInput.setVoiceResults(voiceResults);
+ }
+
+ void setIncognitoMode(boolean incognito) {
+ mUrlInput.setIncognitoMode(incognito);
+ }
+
+ void clearCompletions() {
+ mUrlInput.setSuggestedText(null);
+ }
+
// UrlInputListener implementation
/**
@@ -178,4 +410,33 @@
public void setCurrentUrlIsBookmark(boolean isBookmark) {
}
+ @Override
+ public boolean dispatchKeyEventPreIme(KeyEvent evt) {
+ if (evt.getKeyCode() == KeyEvent.KEYCODE_BACK) {
+ // catch back key in order to do slightly more cleanup than usual
+ mUrlInput.clearFocus();
+ return true;
+ }
+ return super.dispatchKeyEventPreIme(evt);
+ }
+
+ protected WebView getCurrentWebView() {
+ Tab t = mBaseUi.getActiveTab();
+ if (t != null) {
+ return t.getWebView();
+ } else {
+ return null;
+ }
+ }
+
+ void registerDropdownChangeListener(DropdownChangeListener d) {
+ mUrlInput.registerDropdownChangeListener(d);
+ }
+
+ /**
+ * called from the Ui when the user wants to edit
+ * @param clearInput clear the input field
+ */
+ void startEditingUrl(boolean clearInput) {};
+
}
diff --git a/src/com/android/browser/TitleBarPhone.java b/src/com/android/browser/TitleBarPhone.java
new file mode 100644
index 0000000..3edd831
--- /dev/null
+++ b/src/com/android/browser/TitleBarPhone.java
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.browser;
+
+import com.android.browser.autocomplete.SuggestedTextController.TextChangeWatcher;
+import com.android.browser.view.StopProgressView;
+
+import android.app.Activity;
+import android.content.Context;
+import android.view.ContextMenu;
+import android.view.MenuInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.View.OnFocusChangeListener;
+import android.view.ViewGroup;
+import android.widget.AbsoluteLayout;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.RelativeLayout.LayoutParams;
+
+import java.util.List;
+
+/**
+ * This class represents a title bar for a particular "tab" or "window" in the
+ * browser.
+ */
+public class TitleBarPhone extends TitleBarBase implements OnFocusChangeListener,
+ OnClickListener, TextChangeWatcher {
+
+ private Activity mActivity;
+ private ImageView mStopButton;
+ private PageProgressView mProgress;
+ private ImageView mVoiceButton;
+ private boolean mInLoad;
+ private View mContainer;
+ private boolean mHasLockIcon;
+
+ public TitleBarPhone(Activity activity, UiController controller, PhoneUi ui) {
+ super(activity, controller, ui);
+ mActivity = activity;
+ initLayout(activity, R.layout.title_bar);
+ }
+
+ @Override
+ protected void initLayout(Context context, int layoutId) {
+ super.initLayout(context, layoutId);
+ mContainer = findViewById(R.id.taburlbar);
+ mLockIcon = (ImageView) findViewById(R.id.lock);
+ mFavicon = (ImageView) findViewById(R.id.favicon);
+ mStopButton = (ImageView) findViewById(R.id.stop);
+ mStopButton.setOnClickListener(this);
+ mProgress = (PageProgressView) findViewById(R.id.progress);
+ mVoiceButton = (ImageView) findViewById(R.id.voice);
+ mVoiceButton.setOnClickListener(this);
+ setFocusState(false);
+ }
+
+ @Override
+ public int getEmbeddedHeight() {
+ int height = mContainer.getHeight();
+ return height;
+ }
+
+ @Override
+ public void createContextMenu(ContextMenu menu) {
+ MenuInflater inflater = mActivity.getMenuInflater();
+ inflater.inflate(R.menu.title_context, menu);
+ mActivity.onCreateContextMenu(menu, this, null);
+ }
+
+ @Override
+ public void setInVoiceMode(boolean voicemode, List<String> voiceResults) {
+ super.setInVoiceMode(voicemode, voiceResults);
+ }
+
+ @Override
+ protected void setSearchMode(boolean voiceSearchEnabled) {
+ boolean showvoicebutton = voiceSearchEnabled &&
+ mUiController.supportsVoiceSearch();
+ mVoiceButton.setVisibility(showvoicebutton ? View.VISIBLE :
+ View.GONE);
+ }
+
+ @Override
+ protected void setFocusState(boolean focus) {
+ super.setFocusState(focus);
+ if (focus) {
+ mHasLockIcon = (mLockIcon.getVisibility() == View.VISIBLE);
+ mFavicon.setVisibility(View.GONE);
+ mLockIcon.setVisibility(View.GONE);
+ mStopButton.setVisibility(View.GONE);
+ mVoiceButton.setVisibility(View.VISIBLE);
+ } else {
+ mFavicon.setVisibility(View.VISIBLE);
+ mLockIcon.setVisibility(mHasLockIcon ? View.VISIBLE : View.GONE);
+ if (mInLoad) {
+ mStopButton.setVisibility(View.VISIBLE);
+ } else {
+ mStopButton.setVisibility(View.GONE);
+ }
+ mVoiceButton.setVisibility(View.GONE);
+ }
+ }
+
+ /**
+ * Update the progress, from 0 to 100.
+ */
+ @Override
+ void setProgress(int newProgress) {
+ boolean blockvisuals = mUseQuickControls && isEditingUrl();
+ if (newProgress >= PROGRESS_MAX) {
+ mInLoad = false;
+ if (!blockvisuals) {
+ mProgress.setProgress(PageProgressView.MAX_PROGRESS);
+ mProgress.setVisibility(View.GONE);
+ }
+ setFocusState(mUrlInput.hasFocus());
+ } else {
+ if (!mInLoad) {
+ mInLoad = true;
+ if (!blockvisuals) {
+ mProgress.setVisibility(View.VISIBLE);
+ }
+ setFocusState(mUrlInput.hasFocus());
+ }
+ mProgress.setProgress(newProgress * PageProgressView.MAX_PROGRESS
+ / PROGRESS_MAX);
+ }
+ }
+
+ /**
+ * Update the text displayed in the title bar.
+ * @param title String to display. If null, the new tab string will be
+ * shown.
+ */
+ @Override
+ void setDisplayTitle(String title) {
+ if (title == null) {
+ mUrlInput.setText(R.string.new_tab);
+ } else {
+ mUrlInput.setText(title);
+ }
+ }
+
+ @Override
+ public void onFocusChange(View v, boolean hasFocus) {
+ if (v == mUrlInput) {
+ if (hasFocus) {
+ mActivity.closeOptionsMenu();
+ }
+ }
+ super.onFocusChange(v, hasFocus);
+ if (mUseQuickControls && !hasFocus) {
+ mBaseUi.hideTitleBar();
+ }
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (v == mStopButton) {
+ mUiController.stopLoading();
+ } else if (v == mVoiceButton) {
+ mUiController.startVoiceSearch();
+ } else {
+ super.onClick(v);
+ }
+ }
+
+ @Override
+ void startEditingUrl(boolean clearInput) {
+ // editing takes preference of progress
+ mContainer.setVisibility(View.VISIBLE);
+ if (!mUrlInput.hasFocus()) {
+ mUrlInput.requestFocus();
+ }
+ if (clearInput) {
+ mUrlInput.setText("");
+ } else if (mInVoiceMode) {
+ mUrlInput.showDropDown();
+ }
+ }
+
+ @Override
+ void setTitleGravity(int gravity) {
+ if (mUseQuickControls) {
+ FrameLayout.LayoutParams lp =
+ (FrameLayout.LayoutParams) getLayoutParams();
+ lp.gravity = gravity;
+ setLayoutParams(lp);
+ } else {
+ super.setTitleGravity(gravity);
+ }
+ }
+
+ @Override
+ protected void setUseQuickControls(boolean useQuickControls) {
+ mUseQuickControls = useQuickControls;
+ setLayoutParams(makeLayoutParams());
+ }
+
+ void setShowProgressOnly(boolean progress) {
+ if (progress && !inAutoLogin()) {
+ mContainer.setVisibility(View.GONE);
+ } else {
+ mContainer.setVisibility(View.VISIBLE);
+ }
+ }
+
+ private ViewGroup.LayoutParams makeLayoutParams() {
+ if (mUseQuickControls) {
+ return new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,
+ LayoutParams.WRAP_CONTENT);
+ } else {
+ return new AbsoluteLayout.LayoutParams(
+ LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT,
+ 0, 0);
+ }
+ }
+
+}
diff --git a/src/com/android/browser/TitleBarXLarge.java b/src/com/android/browser/TitleBarXLarge.java
index 5f02002..4254046 100644
--- a/src/com/android/browser/TitleBarXLarge.java
+++ b/src/com/android/browser/TitleBarXLarge.java
@@ -16,37 +16,23 @@
package com.android.browser;
-import com.android.browser.UI.DropdownChangeListener;
import com.android.browser.autocomplete.SuggestedTextController.TextChangeWatcher;
-import com.android.browser.search.SearchEngine;
-import android.accounts.Account;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
-import android.view.ContextThemeWrapper;
-import android.view.KeyEvent;
-import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.view.ViewGroup;
-import android.view.animation.Animation;
-import android.view.animation.Animation.AnimationListener;
-import android.view.animation.AnimationUtils;
import android.webkit.WebView;
import android.widget.AbsoluteLayout;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
-import android.widget.ProgressBar;
-import android.widget.Spinner;
-import android.widget.TextView;
import java.util.List;
@@ -62,13 +48,13 @@
private Drawable mStopDrawable;
private Drawable mReloadDrawable;
- private View mContainer;
+ private View mUrlContainer;
private ImageButton mBackButton;
private ImageButton mForwardButton;
private ImageView mStar;
private ImageView mUrlIcon;
private ImageView mSearchButton;
- private View mUrlContainer;
+ private View mContainer;
private View mGoButton;
private ImageView mStopButton;
private View mAllButton;
@@ -77,18 +63,8 @@
private PageProgressView mProgressView;
private Drawable mFocusDrawable;
private Drawable mUnfocusDrawable;
- // Auto-login UI
- private View mAutoLogin;
- private Spinner mAutoLoginAccount;
- private Button mAutoLoginLogin;
- private ProgressBar mAutoLoginProgress;
- private TextView mAutoLoginError;
- private ImageButton mAutoLoginCancel;
- private DeviceAccountLogin mAutoLoginHandler;
- private ArrayAdapter<String> mAccountsAdapter;
private boolean mInLoad;
- private boolean mUseQuickControls;
public TitleBarXLarge(Activity activity, UiController controller,
XLargeUi ui) {
@@ -102,7 +78,7 @@
mUnfocusDrawable = resources.getDrawable(
R.drawable.textfield_default_holo_dark);
mInVoiceMode = false;
- initLayout(activity);
+ initLayout(activity, R.layout.url_bar);
}
@Override
@@ -117,12 +93,11 @@
}
}
- private void initLayout(Context context) {
- LayoutInflater factory = LayoutInflater.from(context);
- factory.inflate(R.layout.url_bar, this);
+ @Override
+ protected void initLayout(Context context, int layoutId) {
+ super.initLayout(context, layoutId);
mContainer = findViewById(R.id.taburlbar);
- mUrlInput = (UrlInputView) findViewById(R.id.url_focused);
mAllButton = findViewById(R.id.all_btn);
// TODO: Change enabled states based on whether you can go
// back/forward. Probably should be done inside onPageStarted.
@@ -147,23 +122,7 @@
mGoButton.setOnClickListener(this);
mClearButton.setOnClickListener(this);
mVoiceSearch.setOnClickListener(this);
- mUrlInput.setUrlInputListener(this);
mUrlInput.setContainer(mUrlContainer);
- mUrlInput.setController(mUiController);
- mUrlInput.setOnFocusChangeListener(this);
- mUrlInput.setSelectAllOnFocus(true);
- mUrlInput.addQueryTextWatcher(this);
- mAutoLogin = findViewById(R.id.autologin);
- mAutoLoginAccount = (Spinner) findViewById(R.id.autologin_account);
- mAutoLoginLogin = (Button) findViewById(R.id.autologin_login);
- mAutoLoginLogin.setOnClickListener(this);
- mAutoLoginProgress =
- (ProgressBar) findViewById(R.id.autologin_progress);
- mAutoLoginError = (TextView) findViewById(R.id.autologin_error);
- mAutoLoginCancel =
- (ImageButton) mAutoLogin.findViewById(R.id.autologin_close);
- mAutoLoginCancel.setOnClickListener(this);
-
setFocusState(false);
}
@@ -179,67 +138,6 @@
}
}
- void updateAutoLogin(Tab tab, boolean animate) {
- DeviceAccountLogin login = tab.getDeviceAccountLogin();
- if (login != null) {
- mAutoLoginHandler = login;
- mAutoLogin.setVisibility(View.VISIBLE);
- ContextThemeWrapper wrapper = new ContextThemeWrapper(mContext,
- android.R.style.Theme_Holo_Light);
- mAccountsAdapter = new ArrayAdapter<String>(wrapper,
- android.R.layout.simple_spinner_item, login.getAccountNames());
- mAccountsAdapter.setDropDownViewResource(
- android.R.layout.simple_spinner_dropdown_item);
- mAutoLoginAccount.setAdapter(mAccountsAdapter);
- mAutoLoginAccount.setSelection(0);
- mAutoLoginAccount.setEnabled(true);
- mAutoLoginLogin.setEnabled(true);
- mAutoLoginProgress.setVisibility(View.GONE);
- mAutoLoginError.setVisibility(View.GONE);
- switch (login.getState()) {
- case DeviceAccountLogin.PROCESSING:
- mAutoLoginAccount.setEnabled(false);
- mAutoLoginLogin.setEnabled(false);
- mAutoLoginProgress.setVisibility(View.VISIBLE);
- break;
- case DeviceAccountLogin.FAILED:
- mAutoLoginProgress.setVisibility(View.GONE);
- mAutoLoginError.setVisibility(View.VISIBLE);
- break;
- case DeviceAccountLogin.INITIAL:
- break;
- default:
- throw new IllegalStateException();
- }
- if (mUseQuickControls) {
- mUi.showTitleBar();
- } else {
- if (animate) {
- mAutoLogin.startAnimation(AnimationUtils.loadAnimation(
- getContext(), R.anim.autologin_enter));
- }
- }
- } else {
- mAutoLoginHandler = null;
- if (mUseQuickControls) {
- mUi.hideTitleBar();
- mAutoLogin.setVisibility(View.GONE);
- mUi.refreshWebView();
- } else {
- if (animate) {
- hideAutoLogin();
- } else if (mAutoLogin.getAnimation() == null) {
- mAutoLogin.setVisibility(View.GONE);
- mUi.refreshWebView();
- }
- }
- }
- }
-
- boolean inAutoLogin() {
- return mAutoLoginHandler != null;
- }
-
private ViewGroup.LayoutParams makeLayoutParams() {
if (mUseQuickControls) {
return new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,
@@ -260,7 +158,8 @@
return height;
}
- void setUseQuickControls(boolean useQuickControls) {
+ @Override
+ protected void setUseQuickControls(boolean useQuickControls) {
mUseQuickControls = useQuickControls;
setLayoutParams(makeLayoutParams());
}
@@ -312,6 +211,7 @@
* called from the Ui when the user wants to edit
* @param clearInput clear the input field
*/
+ @Override
void startEditingUrl(boolean clearInput) {
// editing takes preference of progress
mContainer.setVisibility(View.VISIBLE);
@@ -328,26 +228,24 @@
}
}
- boolean isEditingUrl() {
- return mUrlInput.hasFocus();
+ @Override
+ protected void showAutoLogin(boolean animate) {
+ if (mUseQuickControls) {
+ mUi.showTitleBar();
+ }
+ super.showAutoLogin(animate);
}
- void stopEditingUrl() {
- mUrlInput.clearFocus();
- }
-
- private void hideAutoLogin() {
- Animation anim = AnimationUtils.loadAnimation(
- getContext(), R.anim.autologin_exit);
- anim.setAnimationListener(new AnimationListener() {
- @Override public void onAnimationEnd(Animation a) {
- mAutoLogin.setVisibility(View.GONE);
- mUi.refreshWebView();
- }
- @Override public void onAnimationStart(Animation a) {}
- @Override public void onAnimationRepeat(Animation a) {}
- });
- mAutoLogin.startAnimation(anim);
+ @Override
+ protected void hideAutoLogin(boolean animate) {
+ mAutoLoginHandler = null;
+ if (mUseQuickControls) {
+ mUi.hideTitleBar();
+ mAutoLogin.setVisibility(View.GONE);
+ mUi.refreshWebView();
+ } else {
+ super.hideAutoLogin(animate);
+ }
}
@Override
@@ -374,33 +272,12 @@
clearOrClose();
} else if (mVoiceSearch == v) {
mUiController.startVoiceSearch();
- } else if (mAutoLoginCancel == v) {
- if (mAutoLoginHandler != null) {
- mAutoLoginHandler.cancel();
- mAutoLoginHandler = null;
- }
- hideAutoLogin();
- } else if (mAutoLoginLogin == v) {
- if (mAutoLoginHandler != null) {
- mAutoLoginAccount.setEnabled(false);
- mAutoLoginLogin.setEnabled(false);
- mAutoLoginProgress.setVisibility(View.VISIBLE);
- mAutoLoginError.setVisibility(View.GONE);
- mAutoLoginHandler.login(
- mAutoLoginAccount.getSelectedItemPosition(), this);
- }
+ } else {
+ super.onClick(v);
}
}
@Override
- public void loginFailed() {
- mAutoLoginAccount.setEnabled(true);
- mAutoLoginLogin.setEnabled(true);
- mAutoLoginProgress.setVisibility(View.GONE);
- mAutoLoginError.setVisibility(View.VISIBLE);
- }
-
- @Override
void setFavicon(Bitmap icon) { }
private void clearOrClose() {
@@ -413,10 +290,10 @@
}
}
- private void setFocusState(boolean focus) {
+ @Override
+ protected void setFocusState(boolean focus) {
+ super.setFocusState(focus);
if (focus) {
- mUrlInput.setDropDownWidth(mUrlContainer.getWidth());
- mUrlInput.setDropDownHorizontalOffset(-mUrlInput.getLeft());
mSearchButton.setVisibility(View.GONE);
mStar.setVisibility(View.GONE);
mClearButton.setVisibility(View.VISIBLE);
@@ -472,15 +349,15 @@
}
}
- private void updateSearchMode(boolean userEdited) {
+ @Override
+ protected void updateSearchMode(boolean userEdited) {
setSearchMode(!userEdited || TextUtils.isEmpty(mUrlInput.getUserText()));
}
- private void setSearchMode(boolean voiceSearchEnabled) {
- SearchEngine searchEngine = BrowserSettings.getInstance()
- .getSearchEngine();
+ @Override
+ protected void setSearchMode(boolean voiceSearchEnabled) {
boolean showvoicebutton = voiceSearchEnabled &&
- (searchEngine != null && searchEngine.supportsVoiceSearch());
+ mUiController.supportsVoiceSearch();
mVoiceSearch.setVisibility(showvoicebutton ? View.VISIBLE :
View.GONE);
mGoButton.setVisibility(voiceSearchEnabled ? View.GONE :
@@ -488,45 +365,14 @@
}
@Override
- /* package */ void setDisplayTitle(String title) {
- if (!isEditingUrl()) {
- mUrlInput.setText(title, false);
- }
- }
-
- // UrlInput text watcher
-
- @Override
- public void onTextChanged(String newText) {
- if (mUrlInput.hasFocus()) {
- // check if input field is empty and adjust voice search state
- updateSearchMode(true);
- // clear voice mode when user types
- setInVoiceMode(false, null);
- }
- }
-
- // voicesearch
-
- @Override
- public void setInVoiceMode(boolean voicemode) {
- setInVoiceMode(voicemode, null);
- }
-
public void setInVoiceMode(boolean voicemode, List<String> voiceResults) {
- mInVoiceMode = voicemode;
- mUrlInput.setVoiceResults(voiceResults);
+ super.setInVoiceMode(voicemode, voiceResults);
if (voicemode) {
mUrlIcon.setImageDrawable(mSearchButton.getDrawable());
}
}
@Override
- void setIncognitoMode(boolean incognito) {
- mUrlInput.setIncognitoMode(incognito);
- }
-
- @Override
public View focusSearch(View focused, int dir) {
if (FOCUS_DOWN == dir && hasFocus()) {
return getCurrentWebView();
@@ -534,30 +380,4 @@
return super.focusSearch(focused, dir);
}
- void clearCompletions() {
- mUrlInput.setSuggestedText(null);
- }
-
- @Override
- public boolean dispatchKeyEventPreIme(KeyEvent evt) {
- if (evt.getKeyCode() == KeyEvent.KEYCODE_BACK) {
- // catch back key in order to do slightly more cleanup than usual
- mUrlInput.clearFocus();
- return true;
- }
- return super.dispatchKeyEventPreIme(evt);
- }
-
- private WebView getCurrentWebView() {
- Tab t = mUi.getActiveTab();
- if (t != null) {
- return t.getWebView();
- } else {
- return null;
- }
- }
-
- void registerDropdownChangeListener(DropdownChangeListener d) {
- mUrlInput.registerDropdownChangeListener(d);
- }
}
diff --git a/src/com/android/browser/UI.java b/src/com/android/browser/UI.java
index 368c829..40fc14a 100644
--- a/src/com/android/browser/UI.java
+++ b/src/com/android/browser/UI.java
@@ -85,7 +85,7 @@
public boolean isCustomViewShowing();
- public void showVoiceTitleBar(String title);
+ public void showVoiceTitleBar(String title, List<String> results);
public void revertVoiceTitleBar(Tab tab);
diff --git a/src/com/android/browser/UiController.java b/src/com/android/browser/UiController.java
index 65fa5f8..c22494b 100644
--- a/src/com/android/browser/UiController.java
+++ b/src/com/android/browser/UiController.java
@@ -60,6 +60,8 @@
void startVoiceSearch();
+ boolean supportsVoiceSearch();
+
void showVoiceSearchResults(String title);
void editUrl();
diff --git a/src/com/android/browser/WebViewController.java b/src/com/android/browser/WebViewController.java
index 6b44207..93ca410 100644
--- a/src/com/android/browser/WebViewController.java
+++ b/src/com/android/browser/WebViewController.java
@@ -31,6 +31,8 @@
import android.webkit.WebChromeClient;
import android.webkit.WebView;
+import java.util.List;
+
/**
* WebView aspect of the controller
*/
@@ -85,7 +87,7 @@
void onUserCanceledSsl(Tab tab);
- void activateVoiceSearchMode(String title);
+ void activateVoiceSearchMode(String title, List<String> results);
void revertVoiceSearchMode(Tab tab);
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index 8c34fc9..e19515e 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -16,15 +16,13 @@
package com.android.browser;
-import com.android.browser.ScrollWebView.ScrollListener;
+import com.android.browser.BrowserWebView.ScrollListener;
import android.animation.Animator;
import android.animation.Animator.AnimatorListener;
import android.animation.ObjectAnimator;
import android.app.ActionBar;
import android.app.Activity;
-import android.content.pm.PackageManager;
-import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
@@ -149,23 +147,14 @@
@Override
public WebView createWebView(boolean privateBrowsing) {
// Create a new WebView
- ScrollWebView w = new ScrollWebView(mActivity, null,
- android.R.attr.webViewStyle, privateBrowsing);
- initWebViewSettings(w);
+ BrowserWebView w = (BrowserWebView) super.createWebView(privateBrowsing);
w.setScrollListener(this);
- boolean supportsMultiTouch = mActivity.getPackageManager()
- .hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH);
- w.getSettings().setDisplayZoomControls(!supportsMultiTouch);
- w.setExpandedTileBounds(true); // smoother scrolling
return w;
}
@Override
public WebView createSubWebView(boolean privateBrowsing) {
- ScrollWebView web = (ScrollWebView) createWebView(privateBrowsing);
- // no scroll listener for subview
- web.setScrollListener(null);
- return web;
+ return super.createWebView(privateBrowsing);
}
@Override
@@ -174,7 +163,7 @@
}
void stopWebViewScrolling() {
- ScrollWebView web = (ScrollWebView) mUiController.getCurrentWebView();
+ BrowserWebView web = (BrowserWebView) mUiController.getCurrentWebView();
if (web != null) {
web.stopScroll();
}
@@ -225,7 +214,6 @@
public void setActiveTab(final Tab tab) {
cancelTitleBarAnimation(true);
mSkipTitleBarAnimations = true;
- stopEditingUrl();
if (mUseQuickControls) {
if (mActiveTab != null) {
captureTab(mActiveTab);
@@ -238,7 +226,7 @@
@Override
void setActiveTab(Tab tab, boolean needsAttaching) {
- ScrollWebView view = (ScrollWebView) tab.getWebView();
+ BrowserWebView view = (BrowserWebView) tab.getWebView();
// TabControl.setCurrentTab has been called before this,
// so the tab is guaranteed to have a webview
if (view == null) {
@@ -259,7 +247,7 @@
}
mTabBar.onSetActiveTab(tab);
if (tab.isInVoiceSearchMode()) {
- showVoiceTitleBar(tab.getVoiceDisplayTitle());
+ showVoiceTitleBar(tab.getVoiceDisplayTitle(), tab.getVoiceSearchResults());
} else {
revertVoiceTitleBar(tab);
}
@@ -267,14 +255,6 @@
tab.getTopWindow().requestFocus();
}
- public void captureTab(final Tab tab) {
- Bitmap sshot = Controller.createScreenshot(tab,
- (int) mActivity.getResources()
- .getDimension(R.dimen.qc_thumb_width),
- (int) mActivity.getResources()
- .getDimension(R.dimen.qc_thumb_height));
- tab.setScreenshot(sshot);
- }
@Override
public void updateTabs(List<Tab> tabs) {
@@ -311,10 +291,10 @@
mTitleBar.startEditingUrl(clearInput);
}
+ @Override
void showTitleBarAndEdit() {
mTitleBar.setShowProgressOnly(false);
- showTitleBar();
- mTitleBar.startEditingUrl(false);
+ super.showTitleBarAndEdit();
}
void stopEditingUrl() {
@@ -460,18 +440,6 @@
}
@Override
- protected void updateAutoLogin(Tab tab, boolean animate) {
- mTitleBar.updateAutoLogin(tab, animate);
- }
-
- protected void refreshWebView() {
- Tab tab = getActiveTab();
- if ((tab != null) && (tab.getWebView() != null)) {
- tab.getWebView().invalidate();
- }
- }
-
- @Override
public void setUrlTitle(Tab tab) {
super.setUrlTitle(tab);
mTabBar.onUrlAndTitle(tab, tab.getUrl(), tab.getTitle());
@@ -485,11 +453,7 @@
}
@Override
- public void showVoiceTitleBar(String title) {
- List<String> vsresults = null;
- if (getActiveTab() != null) {
- vsresults = getActiveTab().getVoiceSearchResults();
- }
+ public void showVoiceTitleBar(String title, List<String> vsresults) {
mTitleBar.setInVoiceMode(true, vsresults);
mTitleBar.setDisplayTitle(title);
}
@@ -550,11 +514,6 @@
}
@Override
- public void registerDropdownChangeListener(DropdownChangeListener d) {
- mTitleBar.registerDropdownChangeListener(d);
- }
-
- @Override
public boolean onPrepareOptionsMenu(Menu menu) {
if (mUseQuickControls) {
mPieControl.onMenuOpened(menu);
diff --git a/src/com/android/browser/preferences/LabPreferencesFragment.java b/src/com/android/browser/preferences/LabPreferencesFragment.java
index a06dc3e..88a9690 100644
--- a/src/com/android/browser/preferences/LabPreferencesFragment.java
+++ b/src/com/android/browser/preferences/LabPreferencesFragment.java
@@ -42,21 +42,25 @@
addPreferencesFromResource(R.xml.lab_preferences);
Preference e = findPreference(BrowserSettings.PREF_QUICK_CONTROLS);
- e.setOnPreferenceChangeListener(this);
+ if (e != null) {
+ e.setOnPreferenceChangeListener(this);
+ }
useInstantPref = findPreference(BrowserSettings.PREF_USE_INSTANT);
}
@Override
public void onResume() {
super.onResume();
- useInstantPref.setEnabled(false);
+ if (useInstantPref != null) {
+ useInstantPref.setEnabled(false);
- // Enable the "use instant" preference only if the selected
- // search engine is google.
- if (mBrowserSettings.getSearchEngine() != null) {
- final String currentName = mBrowserSettings.getSearchEngine().getName();
- if (SearchEngine.GOOGLE.equals(currentName)) {
- useInstantPref.setEnabled(true);
+ // Enable the "use instant" preference only if the selected
+ // search engine is google.
+ if (mBrowserSettings.getSearchEngine() != null) {
+ final String currentName = mBrowserSettings.getSearchEngine().getName();
+ if (SearchEngine.GOOGLE.equals(currentName)) {
+ useInstantPref.setEnabled(true);
+ }
}
}
}
diff --git a/src/com/android/browser/view/StopProgressView.java b/src/com/android/browser/view/StopProgressView.java
new file mode 100644
index 0000000..64fa5d0
--- /dev/null
+++ b/src/com/android/browser/view/StopProgressView.java
@@ -0,0 +1,98 @@
+
+package com.android.browser.view;
+
+import com.android.browser.R;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.widget.ProgressBar;
+
+
+public class StopProgressView extends ProgressBar {
+
+ Drawable mOverlayDrawable;
+ Drawable mProgressDrawable;
+ int mWidth;
+ int mHeight;
+
+ /**
+ * @param context
+ * @param attrs
+ * @param defStyle
+ * @param styleRes
+ */
+ public StopProgressView(Context context, AttributeSet attrs, int defStyle, int styleRes) {
+ super(context, attrs, defStyle, styleRes);
+ init(attrs);
+ }
+
+ /**
+ * @param context
+ * @param attrs
+ * @param defStyle
+ */
+ public StopProgressView(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ init(attrs);
+ }
+
+ /**
+ * @param context
+ * @param attrs
+ */
+ public StopProgressView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init(attrs);
+ }
+
+ /**
+ * @param context
+ */
+ public StopProgressView(Context context) {
+ super(context);
+ init(null);
+ }
+
+ private void init(AttributeSet attrs) {
+ mProgressDrawable = getIndeterminateDrawable();
+ setImageDrawable(mContext.getResources()
+ .getDrawable(R.drawable.ic_stop_holo_dark));
+ }
+
+ public void hideProgress() {
+ setIndeterminateDrawable(null);
+ }
+
+ public void showProgress() {
+ setIndeterminateDrawable(mProgressDrawable);
+ }
+
+ @Override
+ protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+ super.onLayout(changed, left, top, right, bottom);
+ mWidth = (right - left) * 2 / 3;
+ mHeight = (bottom - top) * 2 / 3;
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+ if (mOverlayDrawable != null) {
+ int l = (getWidth() - mWidth) / 2;
+ int t = (getHeight() - mHeight) / 2;
+ mOverlayDrawable.setBounds(l, t, l + mWidth, t + mHeight);
+ mOverlayDrawable.draw(canvas);
+ }
+ }
+
+ public Drawable getDrawable() {
+ return mOverlayDrawable;
+ }
+
+ public void setImageDrawable(Drawable d) {
+ mOverlayDrawable = d;
+ }
+
+}