diff options
454 files changed, 10647 insertions, 5602 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index c76cb92..9a8a73b 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -20,6 +20,10 @@ <original-package android:name="com.android.browser" /> + <permission android:name="com.android.browser.permission.PRELOAD" + android:label="@string/permission_preload_label" + android:protectionLevel="signatureOrSystem" /> + <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> @@ -158,6 +162,10 @@ </activity> <activity android:name="BrowserPreferencesPage" android:label="@string/menu_preferences"> + <intent-filter> + <action android:name="android.intent.action.MANAGE_NETWORK_USAGE" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> </activity> <activity android:name="BookmarkSearch" @@ -184,6 +192,10 @@ </intent-filter> </activity> + <activity android:name="ComboViewActivity" + android:configChanges="orientation|keyboardHidden|keyboard|screenSize"> + </activity> + <!-- Bookmark thumbnail homescreen widget --> <receiver android:name=".widget.BookmarkThumbnailWidgetProvider" @@ -242,6 +254,18 @@ </intent-filter> </receiver> + <receiver android:name=".PreloadRequestReceiver" + android:permission="com.android.browser.permission.PRELOAD" > + <intent-filter> + <action android:name="android.intent.action.PRELOAD"/> + <data android:scheme="http" /> + </intent-filter> + </receiver> + + <provider android:name=".provider.SnapshotProvider" + android:authorities="com.android.browser.snapshots" + android:exported="false" /> + </application> </manifest> diff --git a/res/drawable-hdpi/app_web_browser_sm.png b/res/drawable-hdpi/app_web_browser_sm.png Binary files differindex ec9372c..f1de0de 100644 --- a/res/drawable-hdpi/app_web_browser_sm.png +++ b/res/drawable-hdpi/app_web_browser_sm.png diff --git a/res/drawable-hdpi/bg_bookmarks_widget_holo.9.png b/res/drawable-hdpi/bg_bookmarks_widget_holo.9.png Binary files differindex 4fd263f..7b8b0ff 100644 --- a/res/drawable-hdpi/bg_bookmarks_widget_holo.9.png +++ b/res/drawable-hdpi/bg_bookmarks_widget_holo.9.png diff --git a/res/drawable-hdpi/bookmarks_widget_thumb_selector_focused.9.png b/res/drawable-hdpi/bookmarks_widget_thumb_selector_focused.9.png Binary files differindex 9983890..54b63c9 100644 --- a/res/drawable-hdpi/bookmarks_widget_thumb_selector_focused.9.png +++ b/res/drawable-hdpi/bookmarks_widget_thumb_selector_focused.9.png diff --git a/res/drawable-hdpi/bookmarks_widget_thumb_selector_longpressed.9.png b/res/drawable-hdpi/bookmarks_widget_thumb_selector_longpressed.9.png Binary files differindex 34704ef..3dd71fa 100644 --- a/res/drawable-hdpi/bookmarks_widget_thumb_selector_longpressed.9.png +++ b/res/drawable-hdpi/bookmarks_widget_thumb_selector_longpressed.9.png diff --git a/res/drawable-hdpi/bookmarks_widget_thumb_selector_pressed.9.png b/res/drawable-hdpi/bookmarks_widget_thumb_selector_pressed.9.png Binary files differindex a329b19..2442511 100644 --- a/res/drawable-hdpi/bookmarks_widget_thumb_selector_pressed.9.png +++ b/res/drawable-hdpi/bookmarks_widget_thumb_selector_pressed.9.png diff --git a/res/drawable-hdpi/border_thumb_bookmarks_widget_holo.9.png b/res/drawable-hdpi/border_thumb_bookmarks_widget_holo.9.png Binary files differindex ab0ece8..7fda981 100644 --- a/res/drawable-hdpi/border_thumb_bookmarks_widget_holo.9.png +++ b/res/drawable-hdpi/border_thumb_bookmarks_widget_holo.9.png diff --git a/res/drawable-hdpi/browser_background_holo.9.png b/res/drawable-hdpi/browser_background_holo.9.png Binary files differnew file mode 100644 index 0000000..840ed27 --- /dev/null +++ b/res/drawable-hdpi/browser_background_holo.9.png diff --git a/res/drawable-hdpi/browser_thumbnail.png b/res/drawable-hdpi/browser_thumbnail.png Binary files differindex 590a005..cf04eb0 100644 --- a/res/drawable-hdpi/browser_thumbnail.png +++ b/res/drawable-hdpi/browser_thumbnail.png diff --git a/res/drawable-hdpi/browser_widget_preview.png b/res/drawable-hdpi/browser_widget_preview.png Binary files differindex 4ee806b..d25cf89 100644 --- a/res/drawable-hdpi/browser_widget_preview.png +++ b/res/drawable-hdpi/browser_widget_preview.png diff --git a/res/drawable-hdpi/browsertab_add_focused.png b/res/drawable-hdpi/browsertab_add_focused.png Binary files differindex 1490a61..2ebe44e 100644 --- a/res/drawable-hdpi/browsertab_add_focused.png +++ b/res/drawable-hdpi/browsertab_add_focused.png diff --git a/res/drawable-hdpi/browsertab_inactive.png b/res/drawable-hdpi/browsertab_inactive.png Binary files differindex 60ebb2b..eb2f4d9 100644 --- a/res/drawable-hdpi/browsertab_inactive.png +++ b/res/drawable-hdpi/browsertab_inactive.png diff --git a/res/drawable-hdpi/default_video_poster.png b/res/drawable-hdpi/default_video_poster.png Binary files differindex 9bbaf9c..8c1c94a 100644 --- a/res/drawable-hdpi/default_video_poster.png +++ b/res/drawable-hdpi/default_video_poster.png diff --git a/res/drawable-hdpi/geolocation_permissions_prompt_background.9.png b/res/drawable-hdpi/geolocation_permissions_prompt_background.9.png Binary files differnew file mode 100644 index 0000000..1604a3d --- /dev/null +++ b/res/drawable-hdpi/geolocation_permissions_prompt_background.9.png diff --git a/res/drawable-hdpi/ic_add_string.png b/res/drawable-hdpi/ic_add_string.png Binary files differindex 0775776..34d1324 100644 --- a/res/drawable-hdpi/ic_add_string.png +++ b/res/drawable-hdpi/ic_add_string.png diff --git a/res/drawable-hdpi/ic_bookmark_off_holo_dark.png b/res/drawable-hdpi/ic_bookmark_off_holo_dark.png Binary files differindex 9ec0a44..f827be5 100644 --- a/res/drawable-hdpi/ic_bookmark_off_holo_dark.png +++ b/res/drawable-hdpi/ic_bookmark_off_holo_dark.png diff --git a/res/drawable-hdpi/ic_bookmark_on_holo_dark.png b/res/drawable-hdpi/ic_bookmark_on_holo_dark.png Binary files differindex 1d67f1a..2aad5cc 100644 --- a/res/drawable-hdpi/ic_bookmark_on_holo_dark.png +++ b/res/drawable-hdpi/ic_bookmark_on_holo_dark.png diff --git a/res/drawable-hdpi/ic_bookmark_widget_bookmark_holo_dark.png b/res/drawable-hdpi/ic_bookmark_widget_bookmark_holo_dark.png Binary files differindex d7c9bd9..4e0d125 100644 --- a/res/drawable-hdpi/ic_bookmark_widget_bookmark_holo_dark.png +++ b/res/drawable-hdpi/ic_bookmark_widget_bookmark_holo_dark.png diff --git a/res/drawable-hdpi/ic_bookmarks_holo_dark.png b/res/drawable-hdpi/ic_bookmarks_holo_dark.png Binary files differindex d3070bf..c313cce 100644 --- a/res/drawable-hdpi/ic_bookmarks_holo_dark.png +++ b/res/drawable-hdpi/ic_bookmarks_holo_dark.png diff --git a/res/drawable-hdpi/ic_chevron.png b/res/drawable-hdpi/ic_chevron.png Binary files differdeleted file mode 100644 index 6dc842f..0000000 --- a/res/drawable-hdpi/ic_chevron.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_close_window_holo_dark.png b/res/drawable-hdpi/ic_close_window_holo_dark.png Binary files differindex d459352..60bcd4c 100644 --- a/res/drawable-hdpi/ic_close_window_holo_dark.png +++ b/res/drawable-hdpi/ic_close_window_holo_dark.png diff --git a/res/drawable-hdpi/ic_dialog_browser_certificate_partially_secure.png b/res/drawable-hdpi/ic_dialog_browser_certificate_partially_secure.png Binary files differindex 6a803d4..3aa358b 100644 --- a/res/drawable-hdpi/ic_dialog_browser_certificate_partially_secure.png +++ b/res/drawable-hdpi/ic_dialog_browser_certificate_partially_secure.png diff --git a/res/drawable-hdpi/ic_dialog_browser_certificate_secure.png b/res/drawable-hdpi/ic_dialog_browser_certificate_secure.png Binary files differindex 5648f64..f056395 100644 --- a/res/drawable-hdpi/ic_dialog_browser_certificate_secure.png +++ b/res/drawable-hdpi/ic_dialog_browser_certificate_secure.png diff --git a/res/drawable-hdpi/ic_dialog_browser_security_bad.png b/res/drawable-hdpi/ic_dialog_browser_security_bad.png Binary files differindex a0a8ff2..f5d8e52 100644 --- a/res/drawable-hdpi/ic_dialog_browser_security_bad.png +++ b/res/drawable-hdpi/ic_dialog_browser_security_bad.png diff --git a/res/drawable-hdpi/ic_dialog_browser_security_good.png b/res/drawable-hdpi/ic_dialog_browser_security_good.png Binary files differindex e9b4092..a990705 100644 --- a/res/drawable-hdpi/ic_dialog_browser_security_good.png +++ b/res/drawable-hdpi/ic_dialog_browser_security_good.png diff --git a/res/drawable-hdpi/ic_history_holo_dark.png b/res/drawable-hdpi/ic_history_holo_dark.png Binary files differnew file mode 100644 index 0000000..4f2ee7d --- /dev/null +++ b/res/drawable-hdpi/ic_history_holo_dark.png diff --git a/res/drawable-hdpi/ic_home_info_holo_dark.png b/res/drawable-hdpi/ic_home_info_holo_dark.png Binary files differindex 02df4e1..5a0d151 100644 --- a/res/drawable-hdpi/ic_home_info_holo_dark.png +++ b/res/drawable-hdpi/ic_home_info_holo_dark.png diff --git a/res/drawable-hdpi/ic_incognito_holo_dark.png b/res/drawable-hdpi/ic_incognito_holo_dark.png Binary files differindex f4997ae..3e44913 100644 --- a/res/drawable-hdpi/ic_incognito_holo_dark.png +++ b/res/drawable-hdpi/ic_incognito_holo_dark.png diff --git a/res/drawable-hdpi/ic_launcher_shortcut_browser_bookmark.png b/res/drawable-hdpi/ic_launcher_shortcut_browser_bookmark.png Binary files differindex 7b2c680..5747fcd 100644 --- a/res/drawable-hdpi/ic_launcher_shortcut_browser_bookmark.png +++ b/res/drawable-hdpi/ic_launcher_shortcut_browser_bookmark.png diff --git a/res/drawable-hdpi/ic_list_data_large.png b/res/drawable-hdpi/ic_list_data_large.png Binary files differindex aaa035d..105656d 100644 --- a/res/drawable-hdpi/ic_list_data_large.png +++ b/res/drawable-hdpi/ic_list_data_large.png diff --git a/res/drawable-hdpi/ic_list_data_off.png b/res/drawable-hdpi/ic_list_data_off.png Binary files differindex f7eb6af..d55b845 100644 --- a/res/drawable-hdpi/ic_list_data_off.png +++ b/res/drawable-hdpi/ic_list_data_off.png diff --git a/res/drawable-hdpi/ic_list_data_small.png b/res/drawable-hdpi/ic_list_data_small.png Binary files differindex eb90a6b..a8383f3 100644 --- a/res/drawable-hdpi/ic_list_data_small.png +++ b/res/drawable-hdpi/ic_list_data_small.png diff --git a/res/drawable-hdpi/ic_menu_findonpage_normal.png b/res/drawable-hdpi/ic_menu_findonpage_normal.png Binary files differindex f4f8f85..91da8d5 100644 --- a/res/drawable-hdpi/ic_menu_findonpage_normal.png +++ b/res/drawable-hdpi/ic_menu_findonpage_normal.png diff --git a/res/drawable-hdpi/ic_menu_new_window.png b/res/drawable-hdpi/ic_menu_new_window.png Binary files differindex fa498e7..ac9dbd6 100644 --- a/res/drawable-hdpi/ic_menu_new_window.png +++ b/res/drawable-hdpi/ic_menu_new_window.png diff --git a/res/drawable-hdpi/ic_menu_overflow.png b/res/drawable-hdpi/ic_menu_overflow.png Binary files differnew file mode 100644 index 0000000..6188968 --- /dev/null +++ b/res/drawable-hdpi/ic_menu_overflow.png diff --git a/res/drawable-hdpi/ic_new_incognito_holo_dark.png b/res/drawable-hdpi/ic_new_incognito_holo_dark.png Binary files differindex dbd2c3c..2d2f5bf 100644 --- a/res/drawable-hdpi/ic_new_incognito_holo_dark.png +++ b/res/drawable-hdpi/ic_new_incognito_holo_dark.png diff --git a/res/drawable-hdpi/ic_new_window_holo_dark.png b/res/drawable-hdpi/ic_new_window_holo_dark.png Binary files differindex bc4017a..0a2218b 100644 --- a/res/drawable-hdpi/ic_new_window_holo_dark.png +++ b/res/drawable-hdpi/ic_new_window_holo_dark.png diff --git a/res/drawable-hdpi/ic_partial_secure.png b/res/drawable-hdpi/ic_partial_secure.png Binary files differindex 76ba96a..e4b0068 100644 --- a/res/drawable-hdpi/ic_partial_secure.png +++ b/res/drawable-hdpi/ic_partial_secure.png diff --git a/res/drawable-hdpi/ic_querybuilder_disabled.png b/res/drawable-hdpi/ic_querybuilder_disabled.png Binary files differindex 0c3e19f..907a248 100644 --- a/res/drawable-hdpi/ic_querybuilder_disabled.png +++ b/res/drawable-hdpi/ic_querybuilder_disabled.png diff --git a/res/drawable-hdpi/ic_querybuilder_normal.png b/res/drawable-hdpi/ic_querybuilder_normal.png Binary files differindex e0f00d4..de63799 100644 --- a/res/drawable-hdpi/ic_querybuilder_normal.png +++ b/res/drawable-hdpi/ic_querybuilder_normal.png diff --git a/res/drawable-hdpi/ic_querybuilder_pressed.png b/res/drawable-hdpi/ic_querybuilder_pressed.png Binary files differindex dd99be5..fdfebd1 100644 --- a/res/drawable-hdpi/ic_querybuilder_pressed.png +++ b/res/drawable-hdpi/ic_querybuilder_pressed.png diff --git a/res/drawable-hdpi/ic_refresh_holo_dark.png b/res/drawable-hdpi/ic_refresh_holo_dark.png Binary files differindex 1da3ea8..b335c0f 100644 --- a/res/drawable-hdpi/ic_refresh_holo_dark.png +++ b/res/drawable-hdpi/ic_refresh_holo_dark.png diff --git a/res/drawable-hdpi/ic_search_category_bookmark.png b/res/drawable-hdpi/ic_search_category_bookmark.png Binary files differindex bb15e3b..bdecfd0 100644 --- a/res/drawable-hdpi/ic_search_category_bookmark.png +++ b/res/drawable-hdpi/ic_search_category_bookmark.png diff --git a/res/drawable-hdpi/ic_search_category_browser.png b/res/drawable-hdpi/ic_search_category_browser.png Binary files differindex 4406c8c..30b7a1e 100644 --- a/res/drawable-hdpi/ic_search_category_browser.png +++ b/res/drawable-hdpi/ic_search_category_browser.png diff --git a/res/drawable-hdpi/ic_search_category_history.png b/res/drawable-hdpi/ic_search_category_history.png Binary files differindex adec7f8..91fe1f3 100644 --- a/res/drawable-hdpi/ic_search_category_history.png +++ b/res/drawable-hdpi/ic_search_category_history.png diff --git a/res/drawable-hdpi/ic_search_category_suggest.png b/res/drawable-hdpi/ic_search_category_suggest.png Binary files differindex 54ef717..9a17a9d 100644 --- a/res/drawable-hdpi/ic_search_category_suggest.png +++ b/res/drawable-hdpi/ic_search_category_suggest.png diff --git a/res/drawable-hdpi/ic_search_holo_dark.png b/res/drawable-hdpi/ic_search_holo_dark.png Binary files differindex 688ef5d..b33d638 100644 --- a/res/drawable-hdpi/ic_search_holo_dark.png +++ b/res/drawable-hdpi/ic_search_holo_dark.png diff --git a/res/drawable-hdpi/ic_secure_generic_holo_dark.png b/res/drawable-hdpi/ic_secure_generic_holo_dark.png Binary files differnew file mode 100644 index 0000000..ad822d4 --- /dev/null +++ b/res/drawable-hdpi/ic_secure_generic_holo_dark.png diff --git a/res/drawable-hdpi/ic_secure_overlay_holo_dark.png b/res/drawable-hdpi/ic_secure_overlay_holo_dark.png Binary files differnew file mode 100644 index 0000000..c3bfe39 --- /dev/null +++ b/res/drawable-hdpi/ic_secure_overlay_holo_dark.png diff --git a/res/drawable-hdpi/ic_snapshot.png b/res/drawable-hdpi/ic_snapshot.png Binary files differdeleted file mode 100644 index a621cb4..0000000 --- a/res/drawable-hdpi/ic_snapshot.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_stop_holo_dark.png b/res/drawable-hdpi/ic_stop_holo_dark.png Binary files differindex e31dd22..60bcd4c 100644 --- a/res/drawable-hdpi/ic_stop_holo_dark.png +++ b/res/drawable-hdpi/ic_stop_holo_dark.png diff --git a/res/drawable-hdpi/ic_tab_close.png b/res/drawable-hdpi/ic_tab_close.png Binary files differindex e501486..d48e0e7 100644 --- a/res/drawable-hdpi/ic_tab_close.png +++ b/res/drawable-hdpi/ic_tab_close.png diff --git a/res/drawable-hdpi/ic_thumbnail_view_holo_dark.png b/res/drawable-hdpi/ic_thumbnail_view_holo_dark.png Binary files differindex 514b7dc..0a9529f 100644 --- a/res/drawable-hdpi/ic_thumbnail_view_holo_dark.png +++ b/res/drawable-hdpi/ic_thumbnail_view_holo_dark.png diff --git a/res/drawable-hdpi/ic_web_holo_dark.png b/res/drawable-hdpi/ic_web_holo_dark.png Binary files differindex d936c2c..fe881c2 100644 --- a/res/drawable-hdpi/ic_web_holo_dark.png +++ b/res/drawable-hdpi/ic_web_holo_dark.png diff --git a/res/drawable-hdpi/ic_windows_holo_dark.png b/res/drawable-hdpi/ic_windows_holo_dark.png Binary files differindex 98d5693..cfc3f70 100644 --- a/res/drawable-hdpi/ic_windows_holo_dark.png +++ b/res/drawable-hdpi/ic_windows_holo_dark.png diff --git a/res/drawable-hdpi/magnifying_glass.png b/res/drawable-hdpi/magnifying_glass.png Binary files differindex 27c4a04..a3898b0 100755..100644 --- a/res/drawable-hdpi/magnifying_glass.png +++ b/res/drawable-hdpi/magnifying_glass.png diff --git a/res/drawable-hdpi/nav_tab_bg.9.png b/res/drawable-hdpi/nav_tab_bg.9.png Binary files differnew file mode 100644 index 0000000..b110633 --- /dev/null +++ b/res/drawable-hdpi/nav_tab_bg.9.png diff --git a/res/drawable-hdpi/overlay_url_bookmark_widget_holo.9.png b/res/drawable-hdpi/overlay_url_bookmark_widget_holo.9.png Binary files differindex 570d238..f678d8e 100644 --- a/res/drawable-hdpi/overlay_url_bookmark_widget_holo.9.png +++ b/res/drawable-hdpi/overlay_url_bookmark_widget_holo.9.png diff --git a/res/drawable-hdpi/progress.9.png b/res/drawable-hdpi/progress.9.png Binary files differindex 2bfc699..a7e52d5 100644 --- a/res/drawable-hdpi/progress.9.png +++ b/res/drawable-hdpi/progress.9.png diff --git a/res/drawable-hdpi/qc_background_normal.png b/res/drawable-hdpi/qc_background_normal.png Binary files differindex fec04f2..8a8e2dc 100644 --- a/res/drawable-hdpi/qc_background_normal.png +++ b/res/drawable-hdpi/qc_background_normal.png diff --git a/res/drawable-hdpi/row_activated_bookmark_widget_holo.9.png b/res/drawable-hdpi/row_activated_bookmark_widget_holo.9.png Binary files differindex 5af3f6a..54e5825 100644 --- a/res/drawable-hdpi/row_activated_bookmark_widget_holo.9.png +++ b/res/drawable-hdpi/row_activated_bookmark_widget_holo.9.png diff --git a/res/drawable-hdpi/tab_nr.png b/res/drawable-hdpi/tab_nr.png Binary files differindex d9e74d5..3305362 100644 --- a/res/drawable-hdpi/tab_nr.png +++ b/res/drawable-hdpi/tab_nr.png diff --git a/res/drawable-hdpi/textfield_active_holo_dark.9.png b/res/drawable-hdpi/textfield_active_holo_dark.9.png Binary files differindex d023d75..d91c613 100644 --- a/res/drawable-hdpi/textfield_active_holo_dark.9.png +++ b/res/drawable-hdpi/textfield_active_holo_dark.9.png diff --git a/res/drawable-hdpi/textfield_default_holo_dark.9.png b/res/drawable-hdpi/textfield_default_holo_dark.9.png Binary files differindex 39a16cc..9a4e0d8 100644 --- a/res/drawable-hdpi/textfield_default_holo_dark.9.png +++ b/res/drawable-hdpi/textfield_default_holo_dark.9.png diff --git a/res/drawable-hdpi/thumb_bookmark_widget_folder_back_holo.png b/res/drawable-hdpi/thumb_bookmark_widget_folder_back_holo.png Binary files differindex ad262d5..4e43329 100644 --- a/res/drawable-hdpi/thumb_bookmark_widget_folder_back_holo.png +++ b/res/drawable-hdpi/thumb_bookmark_widget_folder_back_holo.png diff --git a/res/drawable-hdpi/thumb_bookmark_widget_folder_holo.png b/res/drawable-hdpi/thumb_bookmark_widget_folder_holo.png Binary files differindex c91ef9b..e491eab 100644 --- a/res/drawable-hdpi/thumb_bookmark_widget_folder_holo.png +++ b/res/drawable-hdpi/thumb_bookmark_widget_folder_holo.png diff --git a/res/drawable-hdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png b/res/drawable-hdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png Binary files differindex 9d55e98..cc405a2 100644 --- a/res/drawable-hdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png +++ b/res/drawable-hdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png diff --git a/res/drawable-hdpi/trashcan.png b/res/drawable-hdpi/trashcan.png Binary files differindex 89b23ee..c203fe4 100644 --- a/res/drawable-hdpi/trashcan.png +++ b/res/drawable-hdpi/trashcan.png diff --git a/res/drawable-mdpi/app_web_browser_sm.png b/res/drawable-mdpi/app_web_browser_sm.png Binary files differindex 21245c2..696fd2f 100644 --- a/res/drawable-mdpi/app_web_browser_sm.png +++ b/res/drawable-mdpi/app_web_browser_sm.png diff --git a/res/drawable-mdpi/bg_bookmarks_widget_holo.9.png b/res/drawable-mdpi/bg_bookmarks_widget_holo.9.png Binary files differindex 4fd263f..7b8b0ff 100644 --- a/res/drawable-mdpi/bg_bookmarks_widget_holo.9.png +++ b/res/drawable-mdpi/bg_bookmarks_widget_holo.9.png diff --git a/res/drawable-mdpi/bookmarks_widget_thumb_selector_focused.9.png b/res/drawable-mdpi/bookmarks_widget_thumb_selector_focused.9.png Binary files differindex 5bcc7c8..3245acf 100644 --- a/res/drawable-mdpi/bookmarks_widget_thumb_selector_focused.9.png +++ b/res/drawable-mdpi/bookmarks_widget_thumb_selector_focused.9.png diff --git a/res/drawable-mdpi/bookmarks_widget_thumb_selector_longpressed.9.png b/res/drawable-mdpi/bookmarks_widget_thumb_selector_longpressed.9.png Binary files differindex 2aee937..d3ab2c2 100644 --- a/res/drawable-mdpi/bookmarks_widget_thumb_selector_longpressed.9.png +++ b/res/drawable-mdpi/bookmarks_widget_thumb_selector_longpressed.9.png diff --git a/res/drawable-mdpi/bookmarks_widget_thumb_selector_pressed.9.png b/res/drawable-mdpi/bookmarks_widget_thumb_selector_pressed.9.png Binary files differindex 6ec1576..ec1f31a 100644 --- a/res/drawable-mdpi/bookmarks_widget_thumb_selector_pressed.9.png +++ b/res/drawable-mdpi/bookmarks_widget_thumb_selector_pressed.9.png diff --git a/res/drawable-mdpi/border_thumb_bookmarks_widget_holo.9.png b/res/drawable-mdpi/border_thumb_bookmarks_widget_holo.9.png Binary files differindex 486e5e8..dce4d2f 100644 --- a/res/drawable-mdpi/border_thumb_bookmarks_widget_holo.9.png +++ b/res/drawable-mdpi/border_thumb_bookmarks_widget_holo.9.png diff --git a/res/drawable-mdpi/browser_background_holo.9.png b/res/drawable-mdpi/browser_background_holo.9.png Binary files differnew file mode 100644 index 0000000..f84e6a3 --- /dev/null +++ b/res/drawable-mdpi/browser_background_holo.9.png diff --git a/res/drawable-mdpi/browser_thumbnail.png b/res/drawable-mdpi/browser_thumbnail.png Binary files differindex f59bec5..9c71940 100644 --- a/res/drawable-mdpi/browser_thumbnail.png +++ b/res/drawable-mdpi/browser_thumbnail.png diff --git a/res/drawable-mdpi/browser_widget_preview.png b/res/drawable-mdpi/browser_widget_preview.png Binary files differindex 7a2af05..74ef056 100644 --- a/res/drawable-mdpi/browser_widget_preview.png +++ b/res/drawable-mdpi/browser_widget_preview.png diff --git a/res/drawable-mdpi/browsertab_add_focused.png b/res/drawable-mdpi/browsertab_add_focused.png Binary files differindex 53fda75..cb595f3 100644 --- a/res/drawable-mdpi/browsertab_add_focused.png +++ b/res/drawable-mdpi/browsertab_add_focused.png diff --git a/res/drawable-mdpi/browsertab_inactive.png b/res/drawable-mdpi/browsertab_inactive.png Binary files differindex d441604..1db22a5 100644 --- a/res/drawable-mdpi/browsertab_inactive.png +++ b/res/drawable-mdpi/browsertab_inactive.png diff --git a/res/drawable-mdpi/default_video_poster.png b/res/drawable-mdpi/default_video_poster.png Binary files differindex f457f23..9e62fa9 100755..100644 --- a/res/drawable-mdpi/default_video_poster.png +++ b/res/drawable-mdpi/default_video_poster.png diff --git a/res/drawable-mdpi/geolocation_permissions_prompt_background.9.png b/res/drawable-mdpi/geolocation_permissions_prompt_background.9.png Binary files differnew file mode 100644 index 0000000..1604a3d --- /dev/null +++ b/res/drawable-mdpi/geolocation_permissions_prompt_background.9.png diff --git a/res/drawable-mdpi/ic_add_string.png b/res/drawable-mdpi/ic_add_string.png Binary files differindex e3b95cb..621dee0 100644 --- a/res/drawable-mdpi/ic_add_string.png +++ b/res/drawable-mdpi/ic_add_string.png diff --git a/res/drawable-mdpi/ic_bookmark_off_holo_dark.png b/res/drawable-mdpi/ic_bookmark_off_holo_dark.png Binary files differindex 7446bdf..825970c 100644 --- a/res/drawable-mdpi/ic_bookmark_off_holo_dark.png +++ b/res/drawable-mdpi/ic_bookmark_off_holo_dark.png diff --git a/res/drawable-mdpi/ic_bookmark_on_holo_dark.png b/res/drawable-mdpi/ic_bookmark_on_holo_dark.png Binary files differindex 79a183f..82da4ea 100644 --- a/res/drawable-mdpi/ic_bookmark_on_holo_dark.png +++ b/res/drawable-mdpi/ic_bookmark_on_holo_dark.png diff --git a/res/drawable-mdpi/ic_bookmark_widget_bookmark_holo_dark.png b/res/drawable-mdpi/ic_bookmark_widget_bookmark_holo_dark.png Binary files differindex 70477aa..0efb4c6 100644 --- a/res/drawable-mdpi/ic_bookmark_widget_bookmark_holo_dark.png +++ b/res/drawable-mdpi/ic_bookmark_widget_bookmark_holo_dark.png diff --git a/res/drawable-mdpi/ic_bookmarks_holo_dark.png b/res/drawable-mdpi/ic_bookmarks_holo_dark.png Binary files differindex ea45051..d9b305f 100644 --- a/res/drawable-mdpi/ic_bookmarks_holo_dark.png +++ b/res/drawable-mdpi/ic_bookmarks_holo_dark.png diff --git a/res/drawable-mdpi/ic_chevron.png b/res/drawable-mdpi/ic_chevron.png Binary files differdeleted file mode 100644 index 786899a..0000000 --- a/res/drawable-mdpi/ic_chevron.png +++ /dev/null diff --git a/res/drawable-mdpi/ic_close_window_holo_dark.png b/res/drawable-mdpi/ic_close_window_holo_dark.png Binary files differindex 9bb8e87..682c0a5 100644 --- a/res/drawable-mdpi/ic_close_window_holo_dark.png +++ b/res/drawable-mdpi/ic_close_window_holo_dark.png diff --git a/res/drawable-mdpi/ic_dialog_browser_certificate_partially_secure.png b/res/drawable-mdpi/ic_dialog_browser_certificate_partially_secure.png Binary files differindex 9edff39..b91fb83 100755..100644 --- a/res/drawable-mdpi/ic_dialog_browser_certificate_partially_secure.png +++ b/res/drawable-mdpi/ic_dialog_browser_certificate_partially_secure.png diff --git a/res/drawable-mdpi/ic_dialog_browser_certificate_secure.png b/res/drawable-mdpi/ic_dialog_browser_certificate_secure.png Binary files differindex 53e23c6..86c7004 100755..100644 --- a/res/drawable-mdpi/ic_dialog_browser_certificate_secure.png +++ b/res/drawable-mdpi/ic_dialog_browser_certificate_secure.png diff --git a/res/drawable-mdpi/ic_dialog_browser_security_bad.png b/res/drawable-mdpi/ic_dialog_browser_security_bad.png Binary files differindex a3f660c..7439b51 100755..100644 --- a/res/drawable-mdpi/ic_dialog_browser_security_bad.png +++ b/res/drawable-mdpi/ic_dialog_browser_security_bad.png diff --git a/res/drawable-mdpi/ic_dialog_browser_security_good.png b/res/drawable-mdpi/ic_dialog_browser_security_good.png Binary files differindex b0d6399..83f1896 100755..100644 --- a/res/drawable-mdpi/ic_dialog_browser_security_good.png +++ b/res/drawable-mdpi/ic_dialog_browser_security_good.png diff --git a/res/drawable-mdpi/ic_history_holo_dark.png b/res/drawable-mdpi/ic_history_holo_dark.png Binary files differnew file mode 100644 index 0000000..0e4e118 --- /dev/null +++ b/res/drawable-mdpi/ic_history_holo_dark.png diff --git a/res/drawable-mdpi/ic_home_info_holo_dark.png b/res/drawable-mdpi/ic_home_info_holo_dark.png Binary files differindex c34f443..964b8c8 100644 --- a/res/drawable-mdpi/ic_home_info_holo_dark.png +++ b/res/drawable-mdpi/ic_home_info_holo_dark.png diff --git a/res/drawable-mdpi/ic_incognito_holo_dark.png b/res/drawable-mdpi/ic_incognito_holo_dark.png Binary files differindex dfb380a..197599c 100644 --- a/res/drawable-mdpi/ic_incognito_holo_dark.png +++ b/res/drawable-mdpi/ic_incognito_holo_dark.png diff --git a/res/drawable-mdpi/ic_launcher_shortcut_browser_bookmark.png b/res/drawable-mdpi/ic_launcher_shortcut_browser_bookmark.png Binary files differindex aa05683..7ebeb15 100644 --- a/res/drawable-mdpi/ic_launcher_shortcut_browser_bookmark.png +++ b/res/drawable-mdpi/ic_launcher_shortcut_browser_bookmark.png diff --git a/res/drawable-mdpi/ic_list_data_large.png b/res/drawable-mdpi/ic_list_data_large.png Binary files differindex 58f7c2f..be17f3b 100644 --- a/res/drawable-mdpi/ic_list_data_large.png +++ b/res/drawable-mdpi/ic_list_data_large.png diff --git a/res/drawable-mdpi/ic_list_data_off.png b/res/drawable-mdpi/ic_list_data_off.png Binary files differindex 69d4eae..d87a7bf 100644 --- a/res/drawable-mdpi/ic_list_data_off.png +++ b/res/drawable-mdpi/ic_list_data_off.png diff --git a/res/drawable-mdpi/ic_list_data_small.png b/res/drawable-mdpi/ic_list_data_small.png Binary files differindex 3d40655..e2aa309 100644 --- a/res/drawable-mdpi/ic_list_data_small.png +++ b/res/drawable-mdpi/ic_list_data_small.png diff --git a/res/drawable-mdpi/ic_menu_findonpage_normal.png b/res/drawable-mdpi/ic_menu_findonpage_normal.png Binary files differindex bea6e44..030e3fa 100644 --- a/res/drawable-mdpi/ic_menu_findonpage_normal.png +++ b/res/drawable-mdpi/ic_menu_findonpage_normal.png diff --git a/res/drawable-mdpi/ic_menu_new_window.png b/res/drawable-mdpi/ic_menu_new_window.png Binary files differindex c495162..8b41251 100644 --- a/res/drawable-mdpi/ic_menu_new_window.png +++ b/res/drawable-mdpi/ic_menu_new_window.png diff --git a/res/drawable-mdpi/ic_menu_overflow.png b/res/drawable-mdpi/ic_menu_overflow.png Binary files differnew file mode 100644 index 0000000..d571532 --- /dev/null +++ b/res/drawable-mdpi/ic_menu_overflow.png diff --git a/res/drawable-mdpi/ic_new_incognito_holo_dark.png b/res/drawable-mdpi/ic_new_incognito_holo_dark.png Binary files differindex 315fe46..e8a7f49 100644 --- a/res/drawable-mdpi/ic_new_incognito_holo_dark.png +++ b/res/drawable-mdpi/ic_new_incognito_holo_dark.png diff --git a/res/drawable-mdpi/ic_new_window_holo_dark.png b/res/drawable-mdpi/ic_new_window_holo_dark.png Binary files differindex b16aacc..2f441d9 100644 --- a/res/drawable-mdpi/ic_new_window_holo_dark.png +++ b/res/drawable-mdpi/ic_new_window_holo_dark.png diff --git a/res/drawable-mdpi/ic_partial_secure.png b/res/drawable-mdpi/ic_partial_secure.png Binary files differindex b3ca0cc..3ef790b 100644 --- a/res/drawable-mdpi/ic_partial_secure.png +++ b/res/drawable-mdpi/ic_partial_secure.png diff --git a/res/drawable-mdpi/ic_querybuilder_disabled.png b/res/drawable-mdpi/ic_querybuilder_disabled.png Binary files differindex f1a1f88..58956b6 100644 --- a/res/drawable-mdpi/ic_querybuilder_disabled.png +++ b/res/drawable-mdpi/ic_querybuilder_disabled.png diff --git a/res/drawable-mdpi/ic_querybuilder_normal.png b/res/drawable-mdpi/ic_querybuilder_normal.png Binary files differindex 723ef56..66b538f 100644 --- a/res/drawable-mdpi/ic_querybuilder_normal.png +++ b/res/drawable-mdpi/ic_querybuilder_normal.png diff --git a/res/drawable-mdpi/ic_querybuilder_pressed.png b/res/drawable-mdpi/ic_querybuilder_pressed.png Binary files differindex 4327e77..0366d1e 100644 --- a/res/drawable-mdpi/ic_querybuilder_pressed.png +++ b/res/drawable-mdpi/ic_querybuilder_pressed.png diff --git a/res/drawable-mdpi/ic_refresh_holo_dark.png b/res/drawable-mdpi/ic_refresh_holo_dark.png Binary files differindex 0aec8a0..d015979 100644 --- a/res/drawable-mdpi/ic_refresh_holo_dark.png +++ b/res/drawable-mdpi/ic_refresh_holo_dark.png diff --git a/res/drawable-mdpi/ic_search_category_bookmark.png b/res/drawable-mdpi/ic_search_category_bookmark.png Binary files differindex dd90de8..cdf4be1 100644 --- a/res/drawable-mdpi/ic_search_category_bookmark.png +++ b/res/drawable-mdpi/ic_search_category_bookmark.png diff --git a/res/drawable-mdpi/ic_search_category_browser.png b/res/drawable-mdpi/ic_search_category_browser.png Binary files differindex 2a43b1b..455e640 100644 --- a/res/drawable-mdpi/ic_search_category_browser.png +++ b/res/drawable-mdpi/ic_search_category_browser.png diff --git a/res/drawable-mdpi/ic_search_category_history.png b/res/drawable-mdpi/ic_search_category_history.png Binary files differindex eca66cc..633e9c0 100644 --- a/res/drawable-mdpi/ic_search_category_history.png +++ b/res/drawable-mdpi/ic_search_category_history.png diff --git a/res/drawable-mdpi/ic_search_category_suggest.png b/res/drawable-mdpi/ic_search_category_suggest.png Binary files differindex 0216581..1001573 100644 --- a/res/drawable-mdpi/ic_search_category_suggest.png +++ b/res/drawable-mdpi/ic_search_category_suggest.png diff --git a/res/drawable-mdpi/ic_search_holo_dark.png b/res/drawable-mdpi/ic_search_holo_dark.png Binary files differindex a84edf3..3a991cb 100644 --- a/res/drawable-mdpi/ic_search_holo_dark.png +++ b/res/drawable-mdpi/ic_search_holo_dark.png diff --git a/res/drawable-mdpi/ic_secure_generic_holo_dark.png b/res/drawable-mdpi/ic_secure_generic_holo_dark.png Binary files differnew file mode 100644 index 0000000..c86047b --- /dev/null +++ b/res/drawable-mdpi/ic_secure_generic_holo_dark.png diff --git a/res/drawable-mdpi/ic_secure_overlay_holo_dark.png b/res/drawable-mdpi/ic_secure_overlay_holo_dark.png Binary files differnew file mode 100644 index 0000000..98de31a --- /dev/null +++ b/res/drawable-mdpi/ic_secure_overlay_holo_dark.png diff --git a/res/drawable-mdpi/ic_snapshot.png b/res/drawable-mdpi/ic_snapshot.png Binary files differdeleted file mode 100644 index 6054acb..0000000 --- a/res/drawable-mdpi/ic_snapshot.png +++ /dev/null diff --git a/res/drawable-mdpi/ic_stop_holo_dark.png b/res/drawable-mdpi/ic_stop_holo_dark.png Binary files differindex 61edb02..682c0a5 100644 --- a/res/drawable-mdpi/ic_stop_holo_dark.png +++ b/res/drawable-mdpi/ic_stop_holo_dark.png diff --git a/res/drawable-mdpi/ic_tab_close.png b/res/drawable-mdpi/ic_tab_close.png Binary files differindex b86c714..d6e01c0 100644 --- a/res/drawable-mdpi/ic_tab_close.png +++ b/res/drawable-mdpi/ic_tab_close.png diff --git a/res/drawable-mdpi/ic_thumbnail_view_holo_dark.png b/res/drawable-mdpi/ic_thumbnail_view_holo_dark.png Binary files differindex 95c674d..9584c18 100644 --- a/res/drawable-mdpi/ic_thumbnail_view_holo_dark.png +++ b/res/drawable-mdpi/ic_thumbnail_view_holo_dark.png diff --git a/res/drawable-mdpi/ic_web_holo_dark.png b/res/drawable-mdpi/ic_web_holo_dark.png Binary files differindex fcf6785..7cab120 100644 --- a/res/drawable-mdpi/ic_web_holo_dark.png +++ b/res/drawable-mdpi/ic_web_holo_dark.png diff --git a/res/drawable-mdpi/ic_windows_holo_dark.png b/res/drawable-mdpi/ic_windows_holo_dark.png Binary files differindex 7eabd08..4d1d3eb 100644 --- a/res/drawable-mdpi/ic_windows_holo_dark.png +++ b/res/drawable-mdpi/ic_windows_holo_dark.png diff --git a/res/drawable-mdpi/magnifying_glass.png b/res/drawable-mdpi/magnifying_glass.png Binary files differindex 20e1fbc..bdb48ee 100755..100644 --- a/res/drawable-mdpi/magnifying_glass.png +++ b/res/drawable-mdpi/magnifying_glass.png diff --git a/res/drawable-mdpi/nav_tab_bg.9.png b/res/drawable-mdpi/nav_tab_bg.9.png Binary files differnew file mode 100644 index 0000000..e8657be --- /dev/null +++ b/res/drawable-mdpi/nav_tab_bg.9.png diff --git a/res/drawable-mdpi/overlay_url_bookmark_widget_holo.9.png b/res/drawable-mdpi/overlay_url_bookmark_widget_holo.9.png Binary files differindex a72900d..59d8859 100644 --- a/res/drawable-mdpi/overlay_url_bookmark_widget_holo.9.png +++ b/res/drawable-mdpi/overlay_url_bookmark_widget_holo.9.png diff --git a/res/drawable-mdpi/progress.9.png b/res/drawable-mdpi/progress.9.png Binary files differindex 08de04c..9f1f543 100644 --- a/res/drawable-mdpi/progress.9.png +++ b/res/drawable-mdpi/progress.9.png diff --git a/res/drawable-mdpi/qc_background_normal.png b/res/drawable-mdpi/qc_background_normal.png Binary files differindex b9a16d1..9f5f6c9 100644 --- a/res/drawable-mdpi/qc_background_normal.png +++ b/res/drawable-mdpi/qc_background_normal.png diff --git a/res/drawable-mdpi/row_activated_bookmark_widget_holo.9.png b/res/drawable-mdpi/row_activated_bookmark_widget_holo.9.png Binary files differindex ed8760f..69b6d40 100644 --- a/res/drawable-mdpi/row_activated_bookmark_widget_holo.9.png +++ b/res/drawable-mdpi/row_activated_bookmark_widget_holo.9.png diff --git a/res/drawable-mdpi/tab_nr.png b/res/drawable-mdpi/tab_nr.png Binary files differindex 93e7598..890ec7c 100644 --- a/res/drawable-mdpi/tab_nr.png +++ b/res/drawable-mdpi/tab_nr.png diff --git a/res/drawable-mdpi/textfield_active_holo_dark.9.png b/res/drawable-mdpi/textfield_active_holo_dark.9.png Binary files differindex 7ca771f..06eed05 100644 --- a/res/drawable-mdpi/textfield_active_holo_dark.9.png +++ b/res/drawable-mdpi/textfield_active_holo_dark.9.png diff --git a/res/drawable-mdpi/textfield_default_holo_dark.9.png b/res/drawable-mdpi/textfield_default_holo_dark.9.png Binary files differindex 621d024..ce63553 100644 --- a/res/drawable-mdpi/textfield_default_holo_dark.9.png +++ b/res/drawable-mdpi/textfield_default_holo_dark.9.png diff --git a/res/drawable-mdpi/thumb_bookmark_widget_folder_back_holo.png b/res/drawable-mdpi/thumb_bookmark_widget_folder_back_holo.png Binary files differindex 681fb22..d72f631 100644 --- a/res/drawable-mdpi/thumb_bookmark_widget_folder_back_holo.png +++ b/res/drawable-mdpi/thumb_bookmark_widget_folder_back_holo.png diff --git a/res/drawable-mdpi/thumb_bookmark_widget_folder_holo.png b/res/drawable-mdpi/thumb_bookmark_widget_folder_holo.png Binary files differindex 495598d..22603fe 100644 --- a/res/drawable-mdpi/thumb_bookmark_widget_folder_holo.png +++ b/res/drawable-mdpi/thumb_bookmark_widget_folder_holo.png diff --git a/res/drawable-mdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png b/res/drawable-mdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png Binary files differindex 6ac18e7..f31ad01 100644 --- a/res/drawable-mdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png +++ b/res/drawable-mdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png diff --git a/res/drawable-mdpi/trashcan.png b/res/drawable-mdpi/trashcan.png Binary files differindex f32bf27..053ba67 100644 --- a/res/drawable-mdpi/trashcan.png +++ b/res/drawable-mdpi/trashcan.png diff --git a/res/drawable-nodpi/bg_browser.png b/res/drawable-nodpi/bg_browser.png Binary files differdeleted file mode 100644 index c7907d7..0000000 --- a/res/drawable-nodpi/bg_browser.png +++ /dev/null diff --git a/res/drawable-nodpi/bg_browsertabs.png b/res/drawable-nodpi/bg_browsertabs.png Binary files differindex 15d3365..8a517f7 100644 --- a/res/drawable-nodpi/bg_browsertabs.png +++ b/res/drawable-nodpi/bg_browsertabs.png diff --git a/res/drawable-nodpi/bg_urlbar.png b/res/drawable-nodpi/bg_urlbar.png Binary files differindex ff173c4..51e95e0 100644 --- a/res/drawable-nodpi/bg_urlbar.png +++ b/res/drawable-nodpi/bg_urlbar.png diff --git a/res/drawable-xhdpi/app_web_browser_sm.png b/res/drawable-xhdpi/app_web_browser_sm.png Binary files differnew file mode 100644 index 0000000..35d857b --- /dev/null +++ b/res/drawable-xhdpi/app_web_browser_sm.png diff --git a/res/drawable-xhdpi/bg_bookmarks_widget_holo.9.png b/res/drawable-xhdpi/bg_bookmarks_widget_holo.9.png Binary files differnew file mode 100644 index 0000000..62b411e --- /dev/null +++ b/res/drawable-xhdpi/bg_bookmarks_widget_holo.9.png diff --git a/res/drawable-xhdpi/bookmarks_widget_thumb_selector_focused.9.png b/res/drawable-xhdpi/bookmarks_widget_thumb_selector_focused.9.png Binary files differnew file mode 100644 index 0000000..e95564f --- /dev/null +++ b/res/drawable-xhdpi/bookmarks_widget_thumb_selector_focused.9.png diff --git a/res/drawable-xhdpi/bookmarks_widget_thumb_selector_longpressed.9.png b/res/drawable-xhdpi/bookmarks_widget_thumb_selector_longpressed.9.png Binary files differnew file mode 100644 index 0000000..f0233c4 --- /dev/null +++ b/res/drawable-xhdpi/bookmarks_widget_thumb_selector_longpressed.9.png diff --git a/res/drawable-xhdpi/bookmarks_widget_thumb_selector_pressed.9.png b/res/drawable-xhdpi/bookmarks_widget_thumb_selector_pressed.9.png Binary files differnew file mode 100644 index 0000000..7fb84e2 --- /dev/null +++ b/res/drawable-xhdpi/bookmarks_widget_thumb_selector_pressed.9.png diff --git a/res/drawable-xhdpi/border_thumb_bookmarks_widget_holo.9.png b/res/drawable-xhdpi/border_thumb_bookmarks_widget_holo.9.png Binary files differnew file mode 100644 index 0000000..40964eb --- /dev/null +++ b/res/drawable-xhdpi/border_thumb_bookmarks_widget_holo.9.png diff --git a/res/drawable-xhdpi/browser_background_holo.9.png b/res/drawable-xhdpi/browser_background_holo.9.png Binary files differnew file mode 100644 index 0000000..0853b34 --- /dev/null +++ b/res/drawable-xhdpi/browser_background_holo.9.png diff --git a/res/drawable-xhdpi/browser_thumbnail.png b/res/drawable-xhdpi/browser_thumbnail.png Binary files differnew file mode 100644 index 0000000..a2db941 --- /dev/null +++ b/res/drawable-xhdpi/browser_thumbnail.png diff --git a/res/drawable-xhdpi/browser_widget_preview.png b/res/drawable-xhdpi/browser_widget_preview.png Binary files differnew file mode 100644 index 0000000..2112b9e --- /dev/null +++ b/res/drawable-xhdpi/browser_widget_preview.png diff --git a/res/drawable-xhdpi/browsertab_add.png b/res/drawable-xhdpi/browsertab_add.png Binary files differnew file mode 100644 index 0000000..e44f72b --- /dev/null +++ b/res/drawable-xhdpi/browsertab_add.png diff --git a/res/drawable-xhdpi/browsertab_add_focused.png b/res/drawable-xhdpi/browsertab_add_focused.png Binary files differnew file mode 100644 index 0000000..7039974 --- /dev/null +++ b/res/drawable-xhdpi/browsertab_add_focused.png diff --git a/res/drawable-xhdpi/browsertab_inactive.png b/res/drawable-xhdpi/browsertab_inactive.png Binary files differnew file mode 100644 index 0000000..28eeed4 --- /dev/null +++ b/res/drawable-xhdpi/browsertab_inactive.png diff --git a/res/drawable-xhdpi/default_video_poster.png b/res/drawable-xhdpi/default_video_poster.png Binary files differnew file mode 100644 index 0000000..5eff15c --- /dev/null +++ b/res/drawable-xhdpi/default_video_poster.png diff --git a/res/drawable-xhdpi/geolocation_permissions_prompt_background.9.png b/res/drawable-xhdpi/geolocation_permissions_prompt_background.9.png Binary files differnew file mode 100644 index 0000000..19a35a3 --- /dev/null +++ b/res/drawable-xhdpi/geolocation_permissions_prompt_background.9.png diff --git a/res/drawable-xhdpi/ic_add_string.png b/res/drawable-xhdpi/ic_add_string.png Binary files differnew file mode 100644 index 0000000..7ea150d --- /dev/null +++ b/res/drawable-xhdpi/ic_add_string.png diff --git a/res/drawable-xhdpi/ic_back_disabled_holo_dark.png b/res/drawable-xhdpi/ic_back_disabled_holo_dark.png Binary files differnew file mode 100644 index 0000000..9f99c00 --- /dev/null +++ b/res/drawable-xhdpi/ic_back_disabled_holo_dark.png diff --git a/res/drawable-xhdpi/ic_back_hierarchy_holo_dark.png b/res/drawable-xhdpi/ic_back_hierarchy_holo_dark.png Binary files differnew file mode 100644 index 0000000..e459b98 --- /dev/null +++ b/res/drawable-xhdpi/ic_back_hierarchy_holo_dark.png diff --git a/res/drawable-xhdpi/ic_back_holo_dark.png b/res/drawable-xhdpi/ic_back_holo_dark.png Binary files differnew file mode 100644 index 0000000..f79f20a --- /dev/null +++ b/res/drawable-xhdpi/ic_back_holo_dark.png diff --git a/res/drawable-xhdpi/ic_bookmark_off_holo_dark.png b/res/drawable-xhdpi/ic_bookmark_off_holo_dark.png Binary files differnew file mode 100644 index 0000000..c60aad8 --- /dev/null +++ b/res/drawable-xhdpi/ic_bookmark_off_holo_dark.png diff --git a/res/drawable-xhdpi/ic_bookmark_on_holo_dark.png b/res/drawable-xhdpi/ic_bookmark_on_holo_dark.png Binary files differnew file mode 100644 index 0000000..5219525 --- /dev/null +++ b/res/drawable-xhdpi/ic_bookmark_on_holo_dark.png diff --git a/res/drawable-xhdpi/ic_bookmark_widget_bookmark_holo_dark.png b/res/drawable-xhdpi/ic_bookmark_widget_bookmark_holo_dark.png Binary files differnew file mode 100644 index 0000000..8025248 --- /dev/null +++ b/res/drawable-xhdpi/ic_bookmark_widget_bookmark_holo_dark.png diff --git a/res/drawable-xhdpi/ic_bookmarks_history_holo_dark.png b/res/drawable-xhdpi/ic_bookmarks_history_holo_dark.png Binary files differnew file mode 100644 index 0000000..702379b --- /dev/null +++ b/res/drawable-xhdpi/ic_bookmarks_history_holo_dark.png diff --git a/res/drawable-xhdpi/ic_bookmarks_holo_dark.png b/res/drawable-xhdpi/ic_bookmarks_holo_dark.png Binary files differnew file mode 100644 index 0000000..00ae343 --- /dev/null +++ b/res/drawable-xhdpi/ic_bookmarks_holo_dark.png diff --git a/res/drawable-xhdpi/ic_close_window_holo_dark.png b/res/drawable-xhdpi/ic_close_window_holo_dark.png Binary files differnew file mode 100644 index 0000000..da31f98 --- /dev/null +++ b/res/drawable-xhdpi/ic_close_window_holo_dark.png diff --git a/res/drawable-xhdpi/ic_dialog_browser_certificate_partially_secure.png b/res/drawable-xhdpi/ic_dialog_browser_certificate_partially_secure.png Binary files differnew file mode 100644 index 0000000..37c0b91 --- /dev/null +++ b/res/drawable-xhdpi/ic_dialog_browser_certificate_partially_secure.png diff --git a/res/drawable-xhdpi/ic_dialog_browser_certificate_secure.png b/res/drawable-xhdpi/ic_dialog_browser_certificate_secure.png Binary files differnew file mode 100644 index 0000000..036eba6 --- /dev/null +++ b/res/drawable-xhdpi/ic_dialog_browser_certificate_secure.png diff --git a/res/drawable-xhdpi/ic_dialog_browser_security_bad.png b/res/drawable-xhdpi/ic_dialog_browser_security_bad.png Binary files differnew file mode 100644 index 0000000..1e3068b --- /dev/null +++ b/res/drawable-xhdpi/ic_dialog_browser_security_bad.png diff --git a/res/drawable-xhdpi/ic_dialog_browser_security_good.png b/res/drawable-xhdpi/ic_dialog_browser_security_good.png Binary files differnew file mode 100644 index 0000000..e8badf6 --- /dev/null +++ b/res/drawable-xhdpi/ic_dialog_browser_security_good.png diff --git a/res/drawable-xhdpi/ic_downloads_holo_dark.png b/res/drawable-xhdpi/ic_downloads_holo_dark.png Binary files differnew file mode 100644 index 0000000..0681bd2 --- /dev/null +++ b/res/drawable-xhdpi/ic_downloads_holo_dark.png diff --git a/res/drawable-xhdpi/ic_folder_holo_dark.png b/res/drawable-xhdpi/ic_folder_holo_dark.png Binary files differnew file mode 100644 index 0000000..6bdb7d0 --- /dev/null +++ b/res/drawable-xhdpi/ic_folder_holo_dark.png diff --git a/res/drawable-xhdpi/ic_forward_disabled_holo_dark.png b/res/drawable-xhdpi/ic_forward_disabled_holo_dark.png Binary files differnew file mode 100644 index 0000000..bbe6571 --- /dev/null +++ b/res/drawable-xhdpi/ic_forward_disabled_holo_dark.png diff --git a/res/drawable-xhdpi/ic_forward_holo_dark.png b/res/drawable-xhdpi/ic_forward_holo_dark.png Binary files differnew file mode 100644 index 0000000..c0e8371 --- /dev/null +++ b/res/drawable-xhdpi/ic_forward_holo_dark.png diff --git a/res/drawable-xhdpi/ic_go_holo_dark.png b/res/drawable-xhdpi/ic_go_holo_dark.png Binary files differnew file mode 100644 index 0000000..e4b59b3 --- /dev/null +++ b/res/drawable-xhdpi/ic_go_holo_dark.png diff --git a/res/drawable-xhdpi/ic_gps_denied_holo_dark.png b/res/drawable-xhdpi/ic_gps_denied_holo_dark.png Binary files differnew file mode 100644 index 0000000..a695cda --- /dev/null +++ b/res/drawable-xhdpi/ic_gps_denied_holo_dark.png diff --git a/res/drawable-xhdpi/ic_gps_on_holo_dark.png b/res/drawable-xhdpi/ic_gps_on_holo_dark.png Binary files differnew file mode 100644 index 0000000..38c1892 --- /dev/null +++ b/res/drawable-xhdpi/ic_gps_on_holo_dark.png diff --git a/res/drawable-xhdpi/ic_history_holo_dark.png b/res/drawable-xhdpi/ic_history_holo_dark.png Binary files differnew file mode 100644 index 0000000..c916bde --- /dev/null +++ b/res/drawable-xhdpi/ic_history_holo_dark.png diff --git a/res/drawable-xhdpi/ic_home_holo_dark.png b/res/drawable-xhdpi/ic_home_holo_dark.png Binary files differnew file mode 100644 index 0000000..177abe9 --- /dev/null +++ b/res/drawable-xhdpi/ic_home_holo_dark.png diff --git a/res/drawable-xhdpi/ic_home_info_holo_dark.png b/res/drawable-xhdpi/ic_home_info_holo_dark.png Binary files differnew file mode 100644 index 0000000..6f43ba5 --- /dev/null +++ b/res/drawable-xhdpi/ic_home_info_holo_dark.png diff --git a/res/drawable-xhdpi/ic_incognito_holo_dark.png b/res/drawable-xhdpi/ic_incognito_holo_dark.png Binary files differnew file mode 100644 index 0000000..94bf80e --- /dev/null +++ b/res/drawable-xhdpi/ic_incognito_holo_dark.png diff --git a/res/drawable-xhdpi/ic_launcher_shortcut_browser_bookmark.png b/res/drawable-xhdpi/ic_launcher_shortcut_browser_bookmark.png Binary files differnew file mode 100644 index 0000000..0711f92 --- /dev/null +++ b/res/drawable-xhdpi/ic_launcher_shortcut_browser_bookmark.png diff --git a/res/drawable-xhdpi/ic_list_data_large.png b/res/drawable-xhdpi/ic_list_data_large.png Binary files differnew file mode 100644 index 0000000..4047c4d --- /dev/null +++ b/res/drawable-xhdpi/ic_list_data_large.png diff --git a/res/drawable-xhdpi/ic_list_data_off.png b/res/drawable-xhdpi/ic_list_data_off.png Binary files differnew file mode 100644 index 0000000..b508b6b --- /dev/null +++ b/res/drawable-xhdpi/ic_list_data_off.png diff --git a/res/drawable-xhdpi/ic_list_data_small.png b/res/drawable-xhdpi/ic_list_data_small.png Binary files differnew file mode 100644 index 0000000..680e69c --- /dev/null +++ b/res/drawable-xhdpi/ic_list_data_small.png diff --git a/res/drawable-xhdpi/ic_list_view_holo_dark.png b/res/drawable-xhdpi/ic_list_view_holo_dark.png Binary files differnew file mode 100644 index 0000000..30270da --- /dev/null +++ b/res/drawable-xhdpi/ic_list_view_holo_dark.png diff --git a/res/drawable-xhdpi/ic_menu_findonpage_normal.png b/res/drawable-xhdpi/ic_menu_findonpage_normal.png Binary files differnew file mode 100644 index 0000000..287b029 --- /dev/null +++ b/res/drawable-xhdpi/ic_menu_findonpage_normal.png diff --git a/res/drawable-xhdpi/ic_menu_new_window.png b/res/drawable-xhdpi/ic_menu_new_window.png Binary files differnew file mode 100644 index 0000000..6caa148 --- /dev/null +++ b/res/drawable-xhdpi/ic_menu_new_window.png diff --git a/res/drawable-xhdpi/ic_menu_overflow.png b/res/drawable-xhdpi/ic_menu_overflow.png Binary files differnew file mode 100644 index 0000000..29bbc3d --- /dev/null +++ b/res/drawable-xhdpi/ic_menu_overflow.png diff --git a/res/drawable-xhdpi/ic_new_incognito_holo_dark.png b/res/drawable-xhdpi/ic_new_incognito_holo_dark.png Binary files differnew file mode 100644 index 0000000..2f21240 --- /dev/null +++ b/res/drawable-xhdpi/ic_new_incognito_holo_dark.png diff --git a/res/drawable-xhdpi/ic_new_window_holo_dark.png b/res/drawable-xhdpi/ic_new_window_holo_dark.png Binary files differnew file mode 100644 index 0000000..c2da72f --- /dev/null +++ b/res/drawable-xhdpi/ic_new_window_holo_dark.png diff --git a/res/drawable-xhdpi/ic_pageinfo_holo_dark.png b/res/drawable-xhdpi/ic_pageinfo_holo_dark.png Binary files differnew file mode 100644 index 0000000..23e948a --- /dev/null +++ b/res/drawable-xhdpi/ic_pageinfo_holo_dark.png diff --git a/res/drawable-xhdpi/ic_partial_secure.png b/res/drawable-xhdpi/ic_partial_secure.png Binary files differnew file mode 100644 index 0000000..82ff296 --- /dev/null +++ b/res/drawable-xhdpi/ic_partial_secure.png diff --git a/res/drawable-xhdpi/ic_querybuilder_disabled.png b/res/drawable-xhdpi/ic_querybuilder_disabled.png Binary files differnew file mode 100644 index 0000000..79fb478 --- /dev/null +++ b/res/drawable-xhdpi/ic_querybuilder_disabled.png diff --git a/res/drawable-xhdpi/ic_querybuilder_normal.png b/res/drawable-xhdpi/ic_querybuilder_normal.png Binary files differnew file mode 100644 index 0000000..cc3ce59 --- /dev/null +++ b/res/drawable-xhdpi/ic_querybuilder_normal.png diff --git a/res/drawable-xhdpi/ic_querybuilder_pressed.png b/res/drawable-xhdpi/ic_querybuilder_pressed.png Binary files differnew file mode 100644 index 0000000..0693fa3 --- /dev/null +++ b/res/drawable-xhdpi/ic_querybuilder_pressed.png diff --git a/res/drawable-xhdpi/ic_refresh_holo_dark.png b/res/drawable-xhdpi/ic_refresh_holo_dark.png Binary files differnew file mode 100644 index 0000000..efdf884 --- /dev/null +++ b/res/drawable-xhdpi/ic_refresh_holo_dark.png diff --git a/res/drawable-xhdpi/ic_search_category_bookmark.png b/res/drawable-xhdpi/ic_search_category_bookmark.png Binary files differnew file mode 100644 index 0000000..8b5ffa1 --- /dev/null +++ b/res/drawable-xhdpi/ic_search_category_bookmark.png diff --git a/res/drawable-xhdpi/ic_search_category_browser.png b/res/drawable-xhdpi/ic_search_category_browser.png Binary files differnew file mode 100644 index 0000000..8b195c1 --- /dev/null +++ b/res/drawable-xhdpi/ic_search_category_browser.png diff --git a/res/drawable-xhdpi/ic_search_category_history.png b/res/drawable-xhdpi/ic_search_category_history.png Binary files differnew file mode 100644 index 0000000..8a0e828 --- /dev/null +++ b/res/drawable-xhdpi/ic_search_category_history.png diff --git a/res/drawable-xhdpi/ic_search_category_suggest.png b/res/drawable-xhdpi/ic_search_category_suggest.png Binary files differnew file mode 100644 index 0000000..985a201 --- /dev/null +++ b/res/drawable-xhdpi/ic_search_category_suggest.png diff --git a/res/drawable-xhdpi/ic_search_holo_dark.png b/res/drawable-xhdpi/ic_search_holo_dark.png Binary files differnew file mode 100644 index 0000000..4a06c2e --- /dev/null +++ b/res/drawable-xhdpi/ic_search_holo_dark.png diff --git a/res/drawable-xhdpi/ic_secure_generic_holo_dark.png b/res/drawable-xhdpi/ic_secure_generic_holo_dark.png Binary files differnew file mode 100644 index 0000000..03a3958 --- /dev/null +++ b/res/drawable-xhdpi/ic_secure_generic_holo_dark.png diff --git a/res/drawable-xhdpi/ic_secure_holo_dark.png b/res/drawable-xhdpi/ic_secure_holo_dark.png Binary files differnew file mode 100644 index 0000000..0842acc --- /dev/null +++ b/res/drawable-xhdpi/ic_secure_holo_dark.png diff --git a/res/drawable-xhdpi/ic_secure_overlay_holo_dark.png b/res/drawable-xhdpi/ic_secure_overlay_holo_dark.png Binary files differnew file mode 100644 index 0000000..3bd3d2c --- /dev/null +++ b/res/drawable-xhdpi/ic_secure_overlay_holo_dark.png diff --git a/res/drawable-xhdpi/ic_settings_holo_dark.png b/res/drawable-xhdpi/ic_settings_holo_dark.png Binary files differnew file mode 100644 index 0000000..0541407 --- /dev/null +++ b/res/drawable-xhdpi/ic_settings_holo_dark.png diff --git a/res/drawable-xhdpi/ic_share_holo_dark.png b/res/drawable-xhdpi/ic_share_holo_dark.png Binary files differnew file mode 100644 index 0000000..5c3047a --- /dev/null +++ b/res/drawable-xhdpi/ic_share_holo_dark.png diff --git a/res/drawable-xhdpi/ic_stop_holo_dark.png b/res/drawable-xhdpi/ic_stop_holo_dark.png Binary files differnew file mode 100644 index 0000000..da31f98 --- /dev/null +++ b/res/drawable-xhdpi/ic_stop_holo_dark.png diff --git a/res/drawable-xhdpi/ic_tab_close.png b/res/drawable-xhdpi/ic_tab_close.png Binary files differnew file mode 100644 index 0000000..fa63021 --- /dev/null +++ b/res/drawable-xhdpi/ic_tab_close.png diff --git a/res/drawable-xhdpi/ic_thumbnail_view_holo_dark.png b/res/drawable-xhdpi/ic_thumbnail_view_holo_dark.png Binary files differnew file mode 100644 index 0000000..d03787b --- /dev/null +++ b/res/drawable-xhdpi/ic_thumbnail_view_holo_dark.png diff --git a/res/drawable-xhdpi/ic_voice_search_holo_dark.png b/res/drawable-xhdpi/ic_voice_search_holo_dark.png Binary files differnew file mode 100644 index 0000000..bfeb7aa --- /dev/null +++ b/res/drawable-xhdpi/ic_voice_search_holo_dark.png diff --git a/res/drawable-xhdpi/ic_web_holo_dark.png b/res/drawable-xhdpi/ic_web_holo_dark.png Binary files differnew file mode 100644 index 0000000..4395e8e --- /dev/null +++ b/res/drawable-xhdpi/ic_web_holo_dark.png diff --git a/res/drawable-xhdpi/ic_windows_holo_dark.png b/res/drawable-xhdpi/ic_windows_holo_dark.png Binary files differnew file mode 100644 index 0000000..c7411b7 --- /dev/null +++ b/res/drawable-xhdpi/ic_windows_holo_dark.png diff --git a/res/drawable-xhdpi/magnifying_glass.png b/res/drawable-xhdpi/magnifying_glass.png Binary files differnew file mode 100644 index 0000000..62742b7 --- /dev/null +++ b/res/drawable-xhdpi/magnifying_glass.png diff --git a/res/drawable-xhdpi/nav_tab_bg.9.png b/res/drawable-xhdpi/nav_tab_bg.9.png Binary files differnew file mode 100644 index 0000000..336b17d --- /dev/null +++ b/res/drawable-xhdpi/nav_tab_bg.9.png diff --git a/res/drawable-xhdpi/overlay_url_bookmark_widget_holo.9.png b/res/drawable-xhdpi/overlay_url_bookmark_widget_holo.9.png Binary files differnew file mode 100644 index 0000000..d4e4e7f --- /dev/null +++ b/res/drawable-xhdpi/overlay_url_bookmark_widget_holo.9.png diff --git a/res/drawable-xhdpi/progress.9.png b/res/drawable-xhdpi/progress.9.png Binary files differnew file mode 100644 index 0000000..72a71cb --- /dev/null +++ b/res/drawable-xhdpi/progress.9.png diff --git a/res/drawable-xhdpi/qc_background_normal.png b/res/drawable-xhdpi/qc_background_normal.png Binary files differnew file mode 100644 index 0000000..bea09ca --- /dev/null +++ b/res/drawable-xhdpi/qc_background_normal.png diff --git a/res/drawable-xhdpi/row_activated_bookmark_widget_holo.9.png b/res/drawable-xhdpi/row_activated_bookmark_widget_holo.9.png Binary files differnew file mode 100644 index 0000000..8df6517 --- /dev/null +++ b/res/drawable-xhdpi/row_activated_bookmark_widget_holo.9.png diff --git a/res/drawable-xhdpi/tab_nr.png b/res/drawable-xhdpi/tab_nr.png Binary files differnew file mode 100644 index 0000000..abc2937 --- /dev/null +++ b/res/drawable-xhdpi/tab_nr.png diff --git a/res/drawable-xhdpi/textfield_active_holo_dark.9.png b/res/drawable-xhdpi/textfield_active_holo_dark.9.png Binary files differnew file mode 100644 index 0000000..5a4c062 --- /dev/null +++ b/res/drawable-xhdpi/textfield_active_holo_dark.9.png diff --git a/res/drawable-xhdpi/textfield_default_holo_dark.9.png b/res/drawable-xhdpi/textfield_default_holo_dark.9.png Binary files differnew file mode 100644 index 0000000..3d3bb21 --- /dev/null +++ b/res/drawable-xhdpi/textfield_default_holo_dark.9.png diff --git a/res/drawable-xhdpi/thumb_bookmark_widget_folder_back_holo.png b/res/drawable-xhdpi/thumb_bookmark_widget_folder_back_holo.png Binary files differnew file mode 100644 index 0000000..6216ef1 --- /dev/null +++ b/res/drawable-xhdpi/thumb_bookmark_widget_folder_back_holo.png diff --git a/res/drawable-xhdpi/thumb_bookmark_widget_folder_holo.png b/res/drawable-xhdpi/thumb_bookmark_widget_folder_holo.png Binary files differnew file mode 100644 index 0000000..7e56f0f --- /dev/null +++ b/res/drawable-xhdpi/thumb_bookmark_widget_folder_holo.png diff --git a/res/drawable-xhdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png b/res/drawable-xhdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png Binary files differnew file mode 100644 index 0000000..7d24d4a --- /dev/null +++ b/res/drawable-xhdpi/thumbnail_bookmarks_widget_no_bookmark_holo.png diff --git a/res/drawable-xhdpi/trashcan.png b/res/drawable-xhdpi/trashcan.png Binary files differnew file mode 100644 index 0000000..8b9982c --- /dev/null +++ b/res/drawable-xhdpi/trashcan.png diff --git a/res/drawable/nav_tab_bg.9.png b/res/drawable/nav_tab_bg.9.png Binary files differdeleted file mode 100644 index 9e0a23d..0000000 --- a/res/drawable/nav_tab_bg.9.png +++ /dev/null diff --git a/res/layout-land/nav_screen.xml b/res/layout-land/nav_screen.xml index d2424ea..885bfd1 100644 --- a/res/layout-land/nav_screen.xml +++ b/res/layout-land/nav_screen.xml @@ -19,7 +19,7 @@ android:id="@+id/nav_screen" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@drawable/nav_screen_bg" > + android:background="@drawable/browser_background_holo" > <LinearLayout android:id="@+id/tabbar" android:orientation="horizontal" @@ -32,37 +32,27 @@ android:id="@+id/newtab" android:layout_width="wrap_content" android:layout_height="match_parent" - android:paddingLeft="16dip" - android:paddingRight="16dip" style="@style/HoloButton" android:gravity="center_vertical" + android:contentDescription="@string/accessibility_button_newtab" android:src="@drawable/ic_new_window_holo_dark" /> <ImageButton - android:id="@+id/newincognito" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:paddingLeft="16dip" - android:paddingRight="16dip" - style="@style/HoloButton" - android:gravity="center_vertical" - android:src="@drawable/ic_new_incognito_holo_dark" /> - <ImageButton android:id="@+id/bookmarks" android:layout_width="wrap_content" android:layout_height="match_parent" - android:paddingLeft="16dip" - android:paddingRight="16dip" + android:contentDescription="@string/accessibility_button_bookmarks" android:src="@drawable/ic_bookmarks_history_holo_dark" style="@style/HoloButton" /> <ImageButton android:id="@+id/more" android:layout_width="wrap_content" android:layout_height="match_parent" - android:paddingLeft="16dip" - android:paddingRight="16dip" + android:paddingLeft="8dip" + android:paddingRight="8dip" style="@style/HoloButton" android:gravity="center_vertical" - android:src="@*android:drawable/ic_menu_moreoverflow_normal_holo_dark" /> + android:contentDescription="@string/accessibility_button_more" + android:src="@drawable/ic_menu_overflow" /> </LinearLayout> <com.android.browser.NavTabGallery android:id="@+id/scroller" diff --git a/res/layout-sw600dp/snapshot_item.xml b/res/layout-sw600dp/snapshot_item.xml new file mode 100644 index 0000000..2fc6ca8 --- /dev/null +++ b/res/layout-sw600dp/snapshot_item.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<RelativeLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="@dimen/combo_horizontalSpacing"> + <ImageView + android:id="@+id/thumb" + android:src="@drawable/thumbnail_bookmarks_widget_no_bookmark_holo" + android:layout_width="@dimen/bookmarkThumbnailWidth" + android:layout_height="@dimen/bookmarkThumbnailHeight" + android:scaleType="centerCrop" + android:cropToPadding="true" + android:background="@drawable/border_thumb_bookmarks_widget_holo" /> + <TextView + android:id="@+id/title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignBottom="@id/thumb" + android:layout_alignLeft="@id/thumb" + android:layout_alignRight="@id/thumb" + android:background="@drawable/overlay_url_bookmark_widget_holo" + android:singleLine="true" + android:ellipsize="end" + android:textSize="12sp" + android:typeface="sans" + android:textColor="@android:color/white" + android:paddingLeft="6dip" + android:paddingRight="2dip" + android:gravity="center_vertical" /> + <ImageView + android:id="@+id/divider" + android:src="?android:attr/dividerVertical" + android:layout_width="wrap_content" + android:layout_height="24dip" + android:layout_below="@+id/thumb" + android:layout_alignLeft="@+id/thumb" + android:scaleType="fitXY" + android:layout_marginTop="12dip" /> + <TextView android:id="@+id/date" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_toRightOf="@id/divider" + android:layout_alignTop="@id/divider" + android:layout_alignBottom="@id/divider" + android:paddingLeft="8dip" + android:gravity="center_vertical" + android:typeface="sans" + android:textSize="14sp" + android:textColor="#AAAAAA" /> + <TextView android:id="@+id/size" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignTop="@id/divider" + android:layout_alignBottom="@id/divider" + android:layout_alignRight="@+id/thumb" + android:paddingRight="2dip" + android:gravity="center_vertical" + android:typeface="sans" + android:textSize="14sp" + android:textColor="#AAAAAA" /> +</RelativeLayout> diff --git a/res/layout-sw600dp/title_bar_autologin.xml b/res/layout-sw600dp/title_bar_autologin.xml new file mode 100644 index 0000000..783b4c3 --- /dev/null +++ b/res/layout-sw600dp/title_bar_autologin.xml @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + 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. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<com.android.browser.AutologinBar + xmlns:android="http://schemas.android.com/apk/res/android" + android:background="#FBF0A0" + android:gravity="center_vertical" + android:visibility="gone"> + <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"/> +</com.android.browser.AutologinBar> diff --git a/res/layout-sw600dp/title_bar_nav.xml b/res/layout-sw600dp/title_bar_nav.xml new file mode 100644 index 0000000..37bea35 --- /dev/null +++ b/res/layout-sw600dp/title_bar_nav.xml @@ -0,0 +1,138 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + 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. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<com.android.browser.NavigationBarTablet + xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="horizontal" + android:background="@drawable/bg_urlbar"> + <LinearLayout + android:id="@+id/navbuttons" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:orientation="horizontal"> + <ImageButton + android:id="@+id/back" + android:src="@drawable/ic_back_holo_dark" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:paddingLeft="16dip" + android:contentDescription="@string/accessibility_button_back" + style="@style/HoloButton" /> + <ImageButton + android:id="@+id/forward" + android:src="@drawable/ic_forward_holo_dark" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:contentDescription="@string/accessibility_button_forward" + style="@style/HoloButton" /> + <ImageButton + android:id="@+id/stop" + android:layout_width="wrap_content" + android:layout_height="match_parent" + style="@style/HoloButton" + android:gravity="center_vertical" + android:contentDescription="@string/accessibility_button_stop" + android:src="@drawable/ic_stop_holo_dark" /> + </LinearLayout> + <LinearLayout + android:id="@+id/urlbar_focused" + android:layout_width="0dip" + android:layout_height="match_parent" + android:layout_weight="1.0" + android:layout_marginLeft="8dip" + android:layout_marginRight="8dip" + android:orientation="horizontal" + android:background="@drawable/url_background"> + <ImageView + android:id="@+id/url_icon" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:src="@drawable/ic_web_holo_dark" + android:contentDescription="@string/accessibility_button_uaswitch" + style="@style/HoloIcon" /> + <ImageView + android:id="@+id/lock" + android:layout_width="wrap_content" + android:layout_height="match_parent" + style="@style/HoloIcon" + android:visibility="gone" /> + <com.android.browser.UrlInputView + android:id="@+id/url" + android:layout_width="0dip" + android:layout_weight="1.0" + android:layout_height="match_parent" + android:layout_marginLeft="16dip" + 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" /> + <ImageButton + android:id="@+id/star" + android:src="@drawable/btn_imageview_star" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:contentDescription="@string/accessibility_button_addbookmark" + style="@style/HoloButton" /> + <ImageButton + android:id="@+id/clear" + android:src="@drawable/ic_stop_holo_dark" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:contentDescription="@string/accessibility_button_clear" + style="@style/HoloButton" /> + </LinearLayout> + <ImageButton + android:id="@+id/go" + android:src="@drawable/ic_go_holo_dark" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:visibility="gone" + android:gravity="center_vertical" + android:contentDescription="@string/accessibility_button_go" + style="@style/HoloButton" /> + <ImageButton + android:id="@+id/voicesearch" + android:src="@drawable/ic_voice_search_holo_dark" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:contentDescription="@string/accessibility_button_voice" + style="@style/HoloButton" /> + <ImageButton + android:id="@+id/search" + android:src="@drawable/ic_search_holo_dark" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:gravity="center_vertical" + android:contentDescription="@string/accessibility_button_search" + style="@style/HoloButton" /> + <ImageButton + android:id="@+id/all_btn" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:scaleType="center" + android:paddingRight="16dip" + style="@style/HoloButton" + android:contentDescription="@string/accessibility_button_bookmarks" + android:src="@drawable/ic_bookmarks_history_holo_dark" /> +</com.android.browser.NavigationBarTablet> diff --git a/res/layout-sw600dp/title_bar_snapshot.xml b/res/layout-sw600dp/title_bar_snapshot.xml new file mode 100644 index 0000000..e844c36 --- /dev/null +++ b/res/layout-sw600dp/title_bar_snapshot.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + 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. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<com.android.browser.SnapshotBar + xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="horizontal" + android:background="@drawable/bg_urlbar"> + <ImageButton + android:id="@+id/date_icon" + android:src="@drawable/ic_search_category_history" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:paddingLeft="16dip" + style="@style/HoloButton" /> + <TextView + android:id="@+id/date" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:paddingLeft="8dip" + android:singleLine="true" + android:gravity="center_vertical" + android:textAppearance="?android:attr/textAppearanceMedium" /> + <TextView + android:id="@+id/title" + android:layout_width="0dip" + android:layout_height="match_parent" + android:layout_weight="1" + android:paddingLeft="16dip" + android:singleLine="true" + android:gravity="center_vertical" + android:textAppearance="?android:attr/textAppearanceMedium" /> + <ImageButton + android:id="@+id/all_btn" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:scaleType="center" + android:paddingRight="16dip" + style="@style/HoloButton" + android:src="@drawable/ic_bookmarks_history_holo_dark" /> +</com.android.browser.SnapshotBar> diff --git a/res/layout/active_tabs.xml b/res/layout/active_tabs.xml deleted file mode 100644 index f9bd6b0..0000000 --- a/res/layout/active_tabs.xml +++ /dev/null @@ -1,54 +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. ---> - -<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="match_parent" - android:listSelector="@drawable/bookmark_thumb_selector" - android:drawSelectorOnTop="true" - android:focusable="true" - android:focusableInTouchMode="true" /> - -</merge> diff --git a/res/layout/bookmarks_history.xml b/res/layout/bookmarks_history.xml index 826fe49..5ec310c 100644 --- a/res/layout/bookmarks_history.xml +++ b/res/layout/bookmarks_history.xml @@ -17,6 +17,4 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fragment" android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="@drawable/bg_browser" - android:paddingTop="?android:attr/actionBarSize" /> + android:layout_height="match_parent" /> diff --git a/res/layout/custom_screen.xml b/res/layout/custom_screen.xml index 2105501..7a22530 100644 --- a/res/layout/custom_screen.xml +++ b/res/layout/custom_screen.xml @@ -14,7 +14,8 @@ limitations under the License. --> -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"> +<merge + xmlns:android="http://schemas.android.com/apk/res/android"> <FrameLayout android:id="@+id/fullscreen_custom_content" android:visibility="gone" android:background="@color/black" @@ -36,5 +37,5 @@ android:layout_height="match_parent" /> </LinearLayout> -</FrameLayout> +</merge> diff --git a/res/layout/geolocation_permissions_prompt.xml b/res/layout/geolocation_permissions_prompt.xml index babde3a..1920c05 100755 --- a/res/layout/geolocation_permissions_prompt.xml +++ b/res/layout/geolocation_permissions_prompt.xml @@ -18,74 +18,67 @@ <com.android.browser.GeolocationPermissionsPrompt xmlns:android="http://schemas.android.com/apk/res/android" - android:fitsSystemWindows="true" android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:background="@drawable/geolocation_permissions_prompt_background" + android:visibility="gone"> - <!-- Use an inner element as we can't show a hidden outermost element --> - <LinearLayout android:id="@+id/inner" - android:orientation="vertical" + <!-- 'google.com wants to know your location' --> + <TextView android:id="@+id/message" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@color/black" - android:paddingTop="1px" - android:visibility="gone"> + android:singleLine="true" + android:scrollHorizontally="true" + android:padding="6dip" + android:textAppearance="?android:attr/textAppearanceSmall" /> - <!-- White line --> - <View - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/white" /> + <CheckBox android:id="@+id/remember" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_below="@id/message" + android:layout_alignLeft="@id/message" /> + <TextView + android:paddingLeft="4dip" + android:text="@string/geolocation_permissions_prompt_remember" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textAppearance="?android:attr/textAppearanceSmall" + android:layout_alignBaseline="@id/remember" + android:layout_toRightOf="@id/remember" /> - <!-- Container for content --> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@id/remember" + android:orientation="vertical" + android:divider="?android:attr/dividerHorizontal" + android:showDividers="beginning" + android:dividerPadding="16dip" + android:background="@null"> <LinearLayout - android:orientation="vertical" + style="?android:attr/buttonBarStyle" android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="@color/geolocation_permissions_prompt_background" - android:padding="6dip"> - - <!-- 'google.com wants to know your location' --> - <TextView android:id="@+id/message" - android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:paddingLeft="2dip" + android:paddingRight="2dip" + android:measureWithLargestChild="true" + android:background="@null"> + <Button + android:id="@+id/dont_share_button" + style="?android:attr/buttonBarButtonStyle" + android:layout_weight="1" + android:layout_width="0dip" android:layout_height="wrap_content" - android:textSize="14dip" - android:textColor="@color/black" /> - - <!-- Checkbox --> - <LinearLayout - android:orientation="horizontal" - android:layout_width="match_parent" - android:layout_height="wrap_content"> - <CheckBox android:id="@+id/remember" - android:layout_width="wrap_content" - android:layout_height="wrap_content" /> - <TextView - android:paddingLeft="4dip" - android:text="@string/geolocation_permissions_prompt_remember" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textSize="14dip" - android:textColor="@color/black" /> - </LinearLayout> - - <!-- Buttons --> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> - <Button android:id="@+id/share_button" - android:text="@string/geolocation_permissions_prompt_share" - android:layout_weight="1" - android:layout_width="0dip" - android:layout_height="wrap_content" /> - <Button android:id="@+id/dont_share_button" - android:text="@string/geolocation_permissions_prompt_dont_share" - android:layout_weight="1" - android:layout_width="0dip" - android:layout_height="wrap_content" /> - </LinearLayout> - + android:text="@string/geolocation_permissions_prompt_dont_share" /> + <Button + android:id="@+id/share_button" + style="?android:attr/buttonBarButtonStyle" + android:layout_weight="1" + android:layout_width="0dip" + android:layout_height="wrap_content" + android:text="@string/geolocation_permissions_prompt_share" /> </LinearLayout> </LinearLayout> + </com.android.browser.GeolocationPermissionsPrompt> diff --git a/res/layout/nav_screen.xml b/res/layout/nav_screen.xml index b4e1f15..baabcc7 100644 --- a/res/layout/nav_screen.xml +++ b/res/layout/nav_screen.xml @@ -20,7 +20,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - android:background="@drawable/nav_screen_bg"> + android:background="@drawable/browser_background_holo"> <com.android.browser.NavTabGallery android:id="@+id/scroller" android:layout_width="match_parent" @@ -37,36 +37,26 @@ android:id="@+id/newtab" android:layout_width="wrap_content" android:layout_height="match_parent" - android:paddingLeft="16dip" - android:paddingRight="16dip" style="@style/HoloButton" android:gravity="center_vertical" + android:contentDescription="@string/accessibility_button_newtab" android:src="@drawable/ic_new_window_holo_dark" /> <ImageButton - android:id="@+id/newincognito" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:paddingLeft="16dip" - android:paddingRight="16dip" - style="@style/HoloButton" - android:gravity="center_vertical" - android:src="@drawable/ic_new_incognito_holo_dark" /> - <ImageButton android:id="@+id/bookmarks" android:layout_width="wrap_content" android:layout_height="match_parent" - android:paddingLeft="16dip" - android:paddingRight="16dip" + android:contentDescription="@string/accessibility_button_bookmarks" android:src="@drawable/ic_bookmarks_history_holo_dark" style="@style/HoloButton" /> <ImageButton android:id="@+id/more" android:layout_width="wrap_content" android:layout_height="match_parent" - android:paddingLeft="16dip" - android:paddingRight="16dip" + android:paddingLeft="8dip" + android:paddingRight="8dip" style="@style/HoloButton" android:gravity="center_vertical" - android:src="@*android:drawable/ic_menu_moreoverflow_normal_holo_dark" /> + android:contentDescription="@string/accessibility_button_more" + android:src="@drawable/ic_menu_overflow" /> </LinearLayout> </RelativeLayout> diff --git a/res/layout/nav_tab_view.xml b/res/layout/nav_tab_view.xml index 543c26e..763f9c0 100644 --- a/res/layout/nav_tab_view.xml +++ b/res/layout/nav_tab_view.xml @@ -28,8 +28,7 @@ android:layout_width="match_parent" android:layout_height="48dip" android:layout_gravity="center_horizontal" - android:paddingLeft="32dip" - android:paddingRight="24dip"> + android:paddingLeft="16dip" > <TextView android:id="@+id/title" android:layout_width="0dip" @@ -46,13 +45,17 @@ android:src="@drawable/ic_stop_holo_dark" android:layout_gravity="center_vertical" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="match_parent" + android:paddingRight="16dip" + android:contentDescription="@string/accessibility_button_closetab" + style="@style/HoloButton" /> </LinearLayout> - <FrameLayout + <ImageView android:id="@+id/tab_view" android:layout_width="@dimen/nav_tab_width" android:layout_height="@dimen/nav_tab_height" + android:paddingLeft="2dip" + android:paddingRight="2dip" android:layout_gravity="center_horizontal" - android:focusable="false"> - </FrameLayout> + android:focusable="false" /> </LinearLayout> diff --git a/res/layout/pref_homepage_buttons.xml b/res/layout/pref_homepage_buttons.xml deleted file mode 100644 index fe21beb..0000000 --- a/res/layout/pref_homepage_buttons.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2010 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - This layout provides the structure for a browser tab. A tab contains the - WebView and any number of other UI elements specific to that tab. - Currently, the only such element is the Geolocation permissions prompt. ---> - -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="horizontal" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal"> - - <Button android:id="@+id/use_current" - android:text="@string/pref_use_current" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginRight="16dp" /> - - <Button android:id="@+id/use_default" - android:text="@string/pref_use_default" - android:layout_width="wrap_content" - android:layout_height="wrap_content" /> - -</LinearLayout> diff --git a/res/layout/qc_menu_item.xml b/res/layout/qc_menu_item.xml index 9e4a2e8..6c84aa6 100644 --- a/res/layout/qc_menu_item.xml +++ b/res/layout/qc_menu_item.xml @@ -17,12 +17,12 @@ <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/title" - android:layout_width="wrap_content" - android:layout_height="wrap_content" + android:layout_width="@dimen/menu_width" + android:layout_height="@dimen/menu_height" android:minHeight="44dip" android:background="@drawable/qc_menu_selector" android:textAppearance="?android:attr/textAppearanceMedium" - android:gravity="center" + android:gravity="center_vertical" android:paddingLeft="8dip" android:paddingRight="8dip" android:paddingTop="4dip" diff --git a/res/layout/qc_tab.xml b/res/layout/qc_tab.xml index 5379680..6fcd0f4 100644 --- a/res/layout/qc_tab.xml +++ b/res/layout/qc_tab.xml @@ -37,8 +37,8 @@ /> <ImageView android:id="@+id/thumb" - android:layout_height="wrap_content" - android:layout_width="wrap_content" + android:layout_height="@dimen/qc_thumb_width" + android:layout_width="@dimen/qc_thumb_height" android:layout_marginTop= "1dip" android:layout_marginLeft= "1dip" android:layout_marginRight= "1dip" diff --git a/res/layout/setup_autofill_dialog.xml b/res/layout/setup_autofill_dialog.xml index 084ae7a..499c2a6 100644 --- a/res/layout/setup_autofill_dialog.xml +++ b/res/layout/setup_autofill_dialog.xml @@ -18,14 +18,17 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" - android:paddingTop="20dip" > + android:paddingTop="9dip" + android:paddingBottom="3dip" + android:paddingLeft="3dip" + android:paddingRight="1dip"> <TextView android:text="@string/autofill_setup_dialog_message" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:paddingBottom="5dip" /> + android:padding="5dip" /> <CheckBox android:id="@+id/setup_autofill_dialog_disable_autofill" android:text="@string/disable_autofill" diff --git a/res/layout/snapshot_item.xml b/res/layout/snapshot_item.xml new file mode 100644 index 0000000..7c7ba3b --- /dev/null +++ b/res/layout/snapshot_item.xml @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<RelativeLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:padding="@dimen/combo_horizontalSpacing"> + <ImageView + android:id="@+id/thumb" + android:src="@drawable/thumbnail_bookmarks_widget_no_bookmark_holo" + android:layout_width="@dimen/bookmarkThumbnailWidth" + android:layout_height="@dimen/bookmarkThumbnailHeight" + android:scaleType="centerCrop" + android:cropToPadding="true" + android:background="@drawable/border_thumb_bookmarks_widget_holo" /> + <TextView + android:id="@+id/date" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignBottom="@id/thumb" + android:layout_alignLeft="@id/thumb" + android:layout_alignRight="@id/thumb" + android:background="@drawable/overlay_url_bookmark_widget_holo" + android:singleLine="true" + android:ellipsize="end" + android:textSize="14sp" + android:typeface="sans" + android:textColor="#AAAAAA" + android:paddingLeft="6dip" + android:paddingRight="2dip" + android:gravity="center_vertical" /> + <TextView android:id="@+id/title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_below="@+id/thumb" + android:layout_alignLeft="@+id/thumb" + android:layout_alignRight="@+id/thumb" + android:layout_marginTop="6dip" + android:paddingLeft="8dip" + android:gravity="center_vertical" + android:typeface="sans" + android:textSize="12sp" + android:textColor="#AAAAAA" + android:lines="2" /> + <ImageView + android:id="@+id/divider" + android:src="?android:attr/dividerVertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignLeft="@+id/title" + android:layout_alignTop="@+id/title" + android:layout_alignBottom="@+id/title" + android:scaleType="fitXY" /> +</RelativeLayout> diff --git a/res/layout/snapshots.xml b/res/layout/snapshots.xml new file mode 100644 index 0000000..a02fbb9 --- /dev/null +++ b/res/layout/snapshots.xml @@ -0,0 +1,40 @@ +<?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" + android:paddingTop="@dimen/combo_paddingTop"> + + <com.android.browser.view.SnapshotGridView + android:id="@+id/grid" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="center_horizontal" + android:numColumns="auto_fit" + android:stretchMode="none" + android:gravity="center" /> + <TextView + android:id="@android:id/empty" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:textAppearance="?android:attr/textAppearanceMedium" + android:text="@string/empty_snapshots_folder" + android:visibility="gone" /> + +</FrameLayout> diff --git a/res/layout/suggestion_item.xml b/res/layout/suggestion_item.xml index 2bd5466..2def735 100644 --- a/res/layout/suggestion_item.xml +++ b/res/layout/suggestion_item.xml @@ -50,7 +50,7 @@ <TextView android:id="@android:id/text1" style="@style/SuggestionLineMedium" - android:singleLine="true" + android:maxLines="1" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView diff --git a/res/layout/tab_bar.xml b/res/layout/tab_bar.xml index 1710218..2790362 100644 --- a/res/layout/tab_bar.xml +++ b/res/layout/tab_bar.xml @@ -14,9 +14,8 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tabbarcontent" android:layout_width="match_parent" - android:layout_height="56dip" + android:layout_height="?android:attr/actionBarSize" android:orientation="horizontal" - style="@style/ActionBarStyle" > <com.android.browser.TabScrollView android:id="@+id/tabs" @@ -31,4 +30,4 @@ android:layout_height="44dip" style="@style/HoloButton" android:background="@drawable/add_tab_selector" /> -</merge>
\ No newline at end of file +</merge> diff --git a/res/layout/tab_title.xml b/res/layout/tab_title.xml index fcae2bc..8a5e308 100644 --- a/res/layout/tab_title.xml +++ b/res/layout/tab_title.xml @@ -17,25 +17,20 @@ android:gravity="center_vertical" android:orientation="horizontal"> <ImageView - android:id="@+id/chevron" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:gravity="center_vertical" - android:src="@drawable/ic_chevron" - android:visibility="gone" /> - <ImageView android:id="@+id/incognito" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_vertical" android:src="@drawable/ic_incognito_holo_dark" + android:contentDescription="@string/accessibility_state_incognito" android:visibility="gone" /> <ImageView android:id="@+id/snapshot" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_vertical" - android:src="@drawable/ic_snapshot" + android:src="@drawable/ic_search_category_history" + android:contentDescription="@string/accessibility_state_frozen" android:visibility="gone" /> <ImageView android:id="@+id/favicon" @@ -66,5 +61,6 @@ android:background="?android:attr/selectableItemBackground" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:contentDescription="@string/accessibility_button_closetab" android:src="@drawable/ic_tab_close" /> </merge> diff --git a/res/layout/tab_view.xml b/res/layout/tab_view.xml deleted file mode 100644 index 8ffb73d..0000000 --- a/res/layout/tab_view.xml +++ /dev/null @@ -1,85 +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" - android:paddingLeft="8dip" - android:paddingTop="4dip" - android:paddingBottom="4dip" - > - <RelativeLayout - android:id="@+id/list_item" - android:layout_width="0dip" - android:layout_weight="1" - 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: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="?android:attr/dividerVertical" - android:layout_width="1dp" - android:layout_height="match_parent" - android:layout_marginLeft="8dip" - android:layout_marginTop="5dip" - android:layout_marginBottom="5dip" - /> - <view class="com.android.browser.ActiveTabsPage$CloseHolder" android:id="@+id/close" - android:layout_width="wrap_content" - android:layout_height="match_parent" - 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/title_bar.xml b/res/layout/title_bar.xml index 649a4a0..cf500c8 100644 --- a/res/layout/title_bar.xml +++ b/res/layout/title_bar.xml @@ -19,143 +19,30 @@ android:id="@+id/titlebar" android:layout_width="match_parent" android:layout_height="wrap_content"> - <LinearLayout + <include + layout="@layout/title_bar_nav" android:id="@+id/taburlbar" android:layout_width="match_parent" - android:layout_height="@dimen/toolbar_height" - android:orientation="horizontal" - android:background="@drawable/bg_urlbar" - android:paddingLeft="4dip" - android:paddingRight="4dip" - android:paddingTop="2dip" - android:paddingBottom="2dip"> - <LinearLayout - android:id="@+id/title_bg" - android:layout_width="0dip" - android:layout_weight="1.0" - android:layout_height="match_parent" - android:gravity="center_vertical" - 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="@*android:drawable/edit_text_holo_dark" - android:textAppearance="?android:attr/textAppearanceMedium" - android:hint="@string/search_hint" - android:singleLine="true" - android:ellipsize="end" - android:lines="1" - android:scrollHorizontally="true" - android:inputType="textUri" - android:imeOptions="actionGo" - style="@style/Suggestions" /> - </LinearLayout> - <ImageView - android:id="@+id/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="wrap_content" - android:layout_gravity="center_vertical" - android:src="@drawable/ic_stop_holo_dark" /> - <ImageButton - android:id="@+id/forward" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:src="@drawable/ic_forward_holo_dark" - style="@style/HoloButton" /> - </LinearLayout> - <LinearLayout + android:layout_height="@dimen/toolbar_height" /> + <include + layout="@layout/title_bar_snapshot" + android:id="@+id/snapshotbar" + android:layout_width="match_parent" + android:layout_height="@dimen/toolbar_height" /> + <include + layout="@layout/title_bar_autologin" android:id="@+id/autologin" - android:background="#FBF0A0" - android:gravity="center_vertical" android:paddingTop="3dip" - android:visibility="gone" - android:layout_below="@+id/taburlbar" + android:layout_below="@id/taburlbar" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical"> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingLeft="8dip" - android:paddingRight="8dip"> - <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:textAppearance="?android:attr/textAppearanceMedium" /> - <Spinner - android:id="@+id/autologin_account" - android:layout_height="wrap_content" - android:layout_width="match_parent" - android:paddingLeft="8dp" - android:paddingRight="24dp" - style="@android:style/Widget.Holo.Light.Spinner" /> - </LinearLayout> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingLeft="8dip" - android:paddingRight="8dip"> - <Button - android:id="@+id/autologin_close" - android:layout_width="0dip" - android:layout_weight="1" - android:layout_height="wrap_content" - android:text="@string/autologin_bar_hide_text" - style="@android:style/Widget.Holo.Light.Button" /> - <ProgressBar - android:id="@+id/autologin_progress" - android:indeterminateOnly="true" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:visibility="invisible" /> - <Button - android:id="@+id/autologin_login" - android:text="@string/autologin_bar_login_text" - style="@android:style/Widget.Holo.Light.Button" - android:layout_height="wrap_content" - android:layout_width="0dip" - android:layout_weight="1" /> - </LinearLayout> - <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" /> - </LinearLayout> + android:layout_height="wrap_content" /> <com.android.browser.PageProgressView android:id="@+id/progress" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@null" - android:layout_below="@+id/taburlbar" + android:layout_below="@id/taburlbar" android:src="@drawable/progress" - android:layout_marginTop="-8dip" + android:layout_marginTop="@dimen/progress_bar_margin" android:visibility="gone" /> </RelativeLayout> diff --git a/res/layout/title_bar_autologin.xml b/res/layout/title_bar_autologin.xml new file mode 100644 index 0000000..839f875 --- /dev/null +++ b/res/layout/title_bar_autologin.xml @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + 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. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<com.android.browser.AutologinBar + xmlns:android="http://schemas.android.com/apk/res/android" + android:background="#FBF0A0" + android:gravity="center_vertical" + android:visibility="gone" + android:orientation="vertical"> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingLeft="8dip" + android:paddingRight="8dip"> + <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:textAppearance="?android:attr/textAppearanceMedium" /> + <Spinner + android:id="@+id/autologin_account" + android:layout_height="wrap_content" + android:layout_width="match_parent" + android:paddingLeft="8dp" + android:paddingRight="24dp" + style="@android:style/Widget.Holo.Light.Spinner" /> + </LinearLayout> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingLeft="8dip" + android:paddingRight="8dip"> + <Button + android:id="@+id/autologin_close" + android:layout_width="0dip" + android:layout_weight="1" + android:layout_height="wrap_content" + android:text="@string/autologin_bar_hide_text" + style="@android:style/Widget.Holo.Light.Button" /> + <ProgressBar + android:id="@+id/autologin_progress" + android:indeterminateOnly="true" + android:layout_height="wrap_content" + android:layout_width="wrap_content" + android:visibility="invisible" /> + <Button + android:id="@+id/autologin_login" + android:text="@string/autologin_bar_login_text" + style="@android:style/Widget.Holo.Light.Button" + android:layout_height="wrap_content" + android:layout_width="0dip" + android:layout_weight="1" /> + </LinearLayout> + <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" /> +</com.android.browser.AutologinBar> diff --git a/res/layout/title_bar_nav.xml b/res/layout/title_bar_nav.xml new file mode 100644 index 0000000..b22d1a2 --- /dev/null +++ b/res/layout/title_bar_nav.xml @@ -0,0 +1,98 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + 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. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<com.android.browser.NavigationBarPhone + xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="horizontal" + android:background="@drawable/bg_urlbar"> + <LinearLayout + android:id="@+id/title_bg" + android:layout_width="0dip" + android:layout_weight="1.0" + android:layout_height="match_parent" + android:gravity="center_vertical" + android:orientation="horizontal"> + <FrameLayout + android:id="@+id/iconcombo" + android:layout_width="52dip" + android:layout_height="match_parent" + style="@style/HoloButton"> + <ImageView + android:id="@+id/favicon" + android:layout_width="36dip" + android:layout_height="36dip" + android:paddingLeft="8dip" + android:paddingRight="8dip" + android:layout_gravity="center_vertical" /> + <ImageView + android:id="@+id/lock" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="bottom|right" + android:visibility="gone" /> + </FrameLayout> + <ImageView + android:id="@+id/stop" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:contentDescription="@string/accessibility_button_stop" + android:src="@drawable/ic_stop_holo_dark" + style="@style/HoloButton" /> + <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:paddingLeft="8dip" + android:fadingEdge="horizontal" + android:fadingEdgeLength="24dip" + android:textAppearance="?android:attr/textAppearanceMedium" + android:hint="@string/search_hint" + android:singleLine="true" + android:ellipsize="end" + android:lines="1" + android:scrollHorizontally="true" + android:inputType="text" + android:imeOptions="actionGo" + style="@style/Suggestions" + android:background="@null" /> + <ImageView + android:id="@+id/voice" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:contentDescription="@string/accessibility_button_voice" + android:src="@drawable/ic_voice_search_holo_dark" + style="@style/HoloButton" + android:visibility="gone" /> + </LinearLayout> + <ImageButton + android:id="@+id/tab_switcher" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:contentDescription="@string/accessibility_button_navscreen" + android:src="@drawable/ic_windows_holo_dark" + style="@style/HoloButton" /> + <ImageButton + android:id="@+id/more" + android:layout_width="wrap_content" + android:layout_height="match_parent" + style="@style/HoloButton" + android:gravity="center_vertical" + android:contentDescription="@string/accessibility_button_more" + android:src="@drawable/ic_menu_overflow" /> +</com.android.browser.NavigationBarPhone> diff --git a/res/layout/title_bar_snapshot.xml b/res/layout/title_bar_snapshot.xml new file mode 100644 index 0000000..a5569c1 --- /dev/null +++ b/res/layout/title_bar_snapshot.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + 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. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<com.android.browser.SnapshotBar + xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="horizontal" + android:background="@drawable/bg_urlbar"> + <ImageButton + android:id="@+id/favicon" + android:layout_width="42dip" + android:layout_height="match_parent" + android:paddingLeft="16dip" + android:scaleType="fitCenter" + style="@style/HoloButton" /> + <FrameLayout + android:id="@+id/toggle_container" + android:layout_width="0dip" + android:layout_height="match_parent" + android:layout_weight="1" + android:paddingLeft="8dip"> + <TextView + android:id="@+id/title" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:singleLine="true" + android:gravity="center_vertical" + android:textAppearance="?android:attr/textAppearanceMedium" /> + <LinearLayout + android:id="@+id/date_container" + android:layout_width="wrap_content" + android:layout_height="match_parent"> + <ImageView + android:src="@drawable/ic_search_category_history" + android:layout_width="wrap_content" + android:layout_height="match_parent" /> + <TextView + android:id="@+id/date" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:paddingLeft="8dip" + android:singleLine="true" + android:gravity="center_vertical" + android:textAppearance="?android:attr/textAppearanceMedium" /> + </LinearLayout> + </FrameLayout> + <ImageButton + android:id="@+id/tab_switcher" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:src="@drawable/ic_windows_holo_dark" + style="@style/HoloButton" /> + <ImageButton + android:id="@+id/more" + android:layout_width="wrap_content" + android:layout_height="match_parent" + style="@style/HoloButton" + android:gravity="center_vertical" + android:src="@*android:drawable/ic_menu_moreoverflow_normal_holo_dark" /> +</com.android.browser.SnapshotBar> diff --git a/res/layout/url_bar.xml b/res/layout/url_bar.xml deleted file mode 100644 index 3864b7d..0000000 --- a/res/layout/url_bar.xml +++ /dev/null @@ -1,190 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> - <!-- - Copyright 2010, The Android Open Source Project Licensed under the - Apache License, Version 2.0 (the "License"); you may not use this file - except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by - applicable law or agreed to in writing, software distributed under the - License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. See the License for - the specific language governing permissions and limitations under the - License. - --> -<RelativeLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - > - <LinearLayout - android:id="@+id/autologin" - android:background="#FBF0A0" - android:gravity="center_vertical" - android:paddingTop="3dip" - android:visibility="gone" - android:layout_below="@+id/taburlbar" - android:layout_width="match_parent" - android:layout_height="wrap_content"> - <TextView - android:text="@string/autologin_bar_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@android:color/primary_text_light" - android:paddingLeft="15dip" - android:paddingRight="15dip" - android:textAppearance="?android:attr/textAppearanceMedium"/> - <Spinner - android:id="@+id/autologin_account" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - style="@android:style/Widget.Holo.Light.Spinner" /> - <Button - android:id="@+id/autologin_login" - android:text="@string/autologin_bar_login_text" - style="@android:style/Widget.Holo.Light.Button" - android:layout_marginRight="15dip" - android:layout_height="wrap_content" - android:layout_width="wrap_content" /> - <ProgressBar - android:id="@+id/autologin_progress" - android:indeterminateOnly="true" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:visibility="gone" /> - <TextView - android:id="@+id/autologin_error" - android:layout_height="wrap_content" - android:layout_width="wrap_content" - android:textColor="#dd6826" - android:text="@string/autologin_bar_error" - android:textAppearance="?android:attr/textAppearanceMedium" - android:visibility="gone" /> - <View - android:layout_width="2dip" - android:layout_height="match_parent" - android:layout_weight="1"/> - <ImageButton - android:id="@+id/autologin_close" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:paddingRight="15dip" - android:background="@null" - android:src="@*android:drawable/btn_close"/> - </LinearLayout> - <LinearLayout - android:id="@+id/taburlbar" - android:layout_width="match_parent" - android:layout_height="48dip" - android:orientation="horizontal" - android:background="@drawable/bg_urlbar"> - <ImageButton - android:id="@+id/back" - android:src="@drawable/ic_back_holo_dark" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:paddingLeft="16dip" - style="@style/HoloButton" /> - <ImageButton - android:id="@+id/forward" - android:src="@drawable/ic_forward_holo_dark" - android:layout_width="wrap_content" - android:layout_height="match_parent" - style="@style/HoloButton" /> - <ImageButton - android:id="@+id/stop" - android:layout_width="wrap_content" - android:layout_height="match_parent" - style="@style/HoloButton" - android:gravity="center_vertical" - android:src="@drawable/ic_stop_holo_dark" /> - <LinearLayout - android:id="@+id/urlbar_focused" - android:layout_width="0dip" - android:layout_height="match_parent" - android:layout_weight="1.0" - android:layout_marginLeft="8dip" - android:layout_marginRight="8dip" - android:orientation="horizontal" - android:background="@drawable/url_background"> - <ImageView - android:id="@+id/url_icon" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:src="@drawable/ic_web_holo_dark" - style="@style/HoloIcon" /> - <ImageView - android:id="@+id/lock" - android:layout_width="wrap_content" - android:layout_height="match_parent" - style="@style/HoloIcon" - android:visibility="gone" /> - <com.android.browser.UrlInputView - android:id="@+id/url" - android:layout_width="0dip" - android:layout_weight="1.0" - android:layout_height="match_parent" - android:layout_marginLeft="16dip" - 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" /> - <ImageButton - android:id="@+id/star" - android:src="@drawable/btn_imageview_star" - android:layout_width="wrap_content" - android:layout_height="match_parent" - style="@style/HoloButton" /> - <ImageButton - android:id="@+id/clear" - android:src="@drawable/ic_stop_holo_dark" - android:layout_width="wrap_content" - android:layout_height="match_parent" - style="@style/HoloButton" /> - </LinearLayout> - <ImageButton - android:id="@+id/go" - android:src="@drawable/ic_go_holo_dark" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:visibility="gone" - android:gravity="center_vertical" - style="@style/HoloButton" /> - <ImageButton - android:id="@+id/voicesearch" - android:src="@drawable/ic_voice_search_holo_dark" - android:layout_width="wrap_content" - android:layout_height="match_parent" - style="@style/HoloButton" /> - <ImageButton - android:id="@+id/search" - android:src="@drawable/ic_search_holo_dark" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:gravity="center_vertical" - style="@style/HoloButton" /> - <ImageButton - android:id="@+id/all_btn" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:scaleType="center" - android:paddingRight="16dip" - style="@style/HoloButton" - android:src="@drawable/ic_bookmarks_history_holo_dark" /> - </LinearLayout> - <com.android.browser.PageProgressView - 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" /> -</RelativeLayout> diff --git a/res/menu-sw600dp/browser.xml b/res/menu-sw600dp/browser.xml index 23366e7..29b6117 100644 --- a/res/menu-sw600dp/browser.xml +++ b/res/menu-sw600dp/browser.xml @@ -32,11 +32,8 @@ android:title="@string/share_page" android:icon="@drawable/ic_share_holo_dark" android:alphabeticShortcut="s" /> - <item android:id="@+id/save_webarchive_menu_id" - android:title="@string/menu_save_webarchive" /> - <item - android:id="@+id/freeze_tab_menu_id" - android:title="@string/menu_freeze_tab" /> + <item android:id="@+id/save_snapshot_menu_id" + android:title="@string/menu_save_snapshot" /> <item android:id="@+id/page_info_menu_id" android:title="@string/page_info" android:icon="@drawable/ic_pageinfo_holo_dark" diff --git a/res/menu-w720dp/bookmark.xml b/res/menu-sw600dp/combined.xml index 0adadac..97abc8d 100644 --- a/res/menu-w720dp/bookmark.xml +++ b/res/menu-sw600dp/combined.xml @@ -16,22 +16,10 @@ <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item - android:id="@+id/add_bookmark" - android:icon="@drawable/ic_bookmark_off_holo_dark" - android:title="@string/add_new_bookmark" - android:showAsAction="always|withText" /> - <item - android:id="@+id/go_home" - android:icon="@drawable/ic_home_holo_dark" - android:showAsAction="always" /> - <item - android:id="@+id/thumbnail_view" - android:title="@string/bookmark_thumbnail_view"/> - <item - android:id="@+id/list_view" - android:title="@string/bookmark_list_view"/> - <item android:id="@+id/preferences_menu_id" android:title="@string/menu_preferences" - android:alphabeticShortcut="p" /> + android:icon="@drawable/ic_settings_holo_dark" + android:alphabeticShortcut="p" + android:showAsAction="ifRoom" + android:orderInCategory="1000" /> </menu> diff --git a/res/menu/title_context.xml b/res/menu-sw600dp/history.xml index a60f102..36ae6e4 100644 --- a/res/menu/title_context.xml +++ b/res/menu-sw600dp/history.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2009 The Android Open Source Project +<!-- 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. @@ -15,12 +15,9 @@ --> <menu xmlns:android="http://schemas.android.com/apk/res/android"> - <!-- These are for the context menu for the title bar. Note that we need a - different item from share_page_menu_id, which looks at the top - window (possibly a subwindow), because this should be the main - window.--> - <item android:id="@+id/title_bar_share_page_url" - android:title="@string/share_page"/> - <item android:id="@+id/title_bar_copy_page_url" - android:title="@string/copy_page_url"/> + <item android:id="@+id/clear_history_menu_id" + android:title="@string/clear_history" + android:icon="@android:drawable/ic_menu_close_clear_cancel" + android:showAsAction="ifRoom" + android:orderInCategory="1" /> </menu> diff --git a/res/menu-w500dp/bookmark.xml b/res/menu-w500dp/bookmark.xml deleted file mode 100644 index a951373..0000000 --- a/res/menu-w500dp/bookmark.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2011 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<menu xmlns:android="http://schemas.android.com/apk/res/android"> - <item - android:id="@+id/add_bookmark" - android:icon="@drawable/ic_bookmark_off_holo_dark" - android:title="@string/add_new_bookmark" - android:showAsAction="always" /> - <item - android:id="@+id/go_home" - android:icon="@drawable/ic_home_holo_dark" - android:showAsAction="always" /> - <item - android:id="@+id/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: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/bookmark.xml b/res/menu/bookmark.xml deleted file mode 100644 index eee1706..0000000 --- a/res/menu/bookmark.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2010 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<menu xmlns:android="http://schemas.android.com/apk/res/android"> - <item - android:id="@+id/add_bookmark" - android:icon="@drawable/ic_bookmark_off_holo_dark" - android:title="@string/add_new_bookmark" /> - <item - android:id="@+id/go_home" - android:title="@string/go_home" - android:icon="@drawable/ic_home_holo_dark" /> - <item - android:id="@+id/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: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 6eadcba..1de97f7 100644 --- a/res/menu/browser.xml +++ b/res/menu/browser.xml @@ -20,21 +20,6 @@ <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 @@ -43,10 +28,18 @@ android:icon="@*android:drawable/ic_menu_forward" /> </group> <item + android:id="@+id/new_tab_menu_id" + android:title="@string/menu_new_tab" + android:icon="@drawable/ic_new_window_holo_dark" /> + <item android:id="@+id/incognito_menu_id" android:title="@string/incognito_tab" android:icon="@drawable/ic_new_incognito_holo_dark" /> <item + android:id="@+id/bookmarks_menu_id" + android:title="@string/bookmarks" + android:icon="@drawable/ic_bookmarks_history_holo_dark" /> + <item android:id="@+id/add_bookmark_menu_id" android:title="@string/save_to_bookmarks" android:icon="@drawable/ic_bookmark_on_holo_dark" @@ -62,11 +55,8 @@ android:icon="@drawable/ic_share_holo_dark" android:alphabeticShortcut="s" /> <item - android:id="@+id/save_webarchive_menu_id" - android:title="@string/menu_save_webarchive" /> - <item - android:id="@+id/freeze_tab_menu_id" - android:title="@string/menu_freeze_tab" /> + android:id="@+id/save_snapshot_menu_id" + android:title="@string/menu_save_snapshot" /> <item android:id="@+id/page_info_menu_id" android:title="@string/page_info" diff --git a/res/layout-sw600dp/bookmarks_history.xml b/res/menu/combined.xml index ae5e19b..559bb74 100644 --- a/res/layout-sw600dp/bookmarks_history.xml +++ b/res/menu/combined.xml @@ -13,9 +13,6 @@ 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:id="@+id/fragment" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="@drawable/bg_browser" /> + +<menu xmlns:android="http://schemas.android.com/apk/res/android"> +</menu> diff --git a/res/menu/history.xml b/res/menu/history.xml index 5b029b5..a8c1b29 100644 --- a/res/menu/history.xml +++ b/res/menu/history.xml @@ -4,9 +4,9 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - + http://www.apache.org/licenses/LICENSE-2.0 - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -15,11 +15,4 @@ --> <menu xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:id="@+id/clear_history_menu_id" - android:title="@string/clear_history" - android:icon="@android:drawable/ic_menu_close_clear_cancel" /> - <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/drawable/nav_screen_bg.xml b/res/menu/snapshot_go_live.xml index 7ca4e78..aa6b38e 100644 --- a/res/drawable/nav_screen_bg.xml +++ b/res/menu/snapshot_go_live.xml @@ -14,13 +14,9 @@ limitations under the License. --> -<shape - xmlns:android="http://schemas.android.com/apk/res/android"> - <gradient - android:type="linear" - android:startColor="#ff000000" - android:centerColor="#ff808080" - android:endColor="#ff000000" - android:centerY="0.2" - android:angle="90" /> -</shape> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/snapshot_go_live" + android:title="@string/snapshot_go_live" /> +</menu> + diff --git a/res/menu/snapshots_context.xml b/res/menu/snapshots_context.xml new file mode 100644 index 0000000..af7a776 --- /dev/null +++ b/res/menu/snapshots_context.xml @@ -0,0 +1,23 @@ +<?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. +--> + +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <group android:id="@+id/CONTEXT_MENU"> + <item + android:id="@+id/delete_context_menu_id" + android:title="@string/remove_snapshot"/> + </group> +</menu> diff --git a/res/mipmap-hdpi/ic_launcher_browser.png b/res/mipmap-hdpi/ic_launcher_browser.png Binary files differindex 1f3e584..ef42d38 100644 --- a/res/mipmap-hdpi/ic_launcher_browser.png +++ b/res/mipmap-hdpi/ic_launcher_browser.png diff --git a/res/mipmap-mdpi/ic_launcher_browser.png b/res/mipmap-mdpi/ic_launcher_browser.png Binary files differindex 93c83d4..588d9af 100644 --- a/res/mipmap-mdpi/ic_launcher_browser.png +++ b/res/mipmap-mdpi/ic_launcher_browser.png diff --git a/res/mipmap-xhdpi/ic_launcher_browser.png b/res/mipmap-xhdpi/ic_launcher_browser.png Binary files differnew file mode 100644 index 0000000..19e045b --- /dev/null +++ b/res/mipmap-xhdpi/ic_launcher_browser.png diff --git a/res/mipmap-xhdpi/ic_launcher_shortcut_browser_bookmark.png b/res/mipmap-xhdpi/ic_launcher_shortcut_browser_bookmark.png Binary files differnew file mode 100644 index 0000000..3ef819f --- /dev/null +++ b/res/mipmap-xhdpi/ic_launcher_shortcut_browser_bookmark.png diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index d562fe7..57bffc4 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -24,14 +24,14 @@ <!-- no translation found for new_tab (4505722538297295141) --> <skip /> <string name="new_incognito_tab" msgid="5821404839654751753">"Nuwe incognito-venster"</string> - <!-- no translation found for active_tabs (3050623868203544623) --> - <skip /> <!-- no translation found for tab_bookmarks (2305793036003473653) --> <skip /> <!-- no translation found for tab_most_visited (1077402532455000703) --> <skip /> <!-- no translation found for tab_history (1979267558744613746) --> <skip /> + <!-- no translation found for tab_snapshots (4435852763803720588) --> + <skip /> <!-- no translation found for added_to_bookmarks (1020224130695956728) --> <skip /> <!-- no translation found for removed_from_bookmarks (6063705902028438800) --> @@ -75,25 +75,11 @@ <skip /> <!-- no translation found for ssl_not_yet_valid (2893167846212645846) --> <skip /> - <!-- no translation found for ssl_certificate (5226747157992111668) --> - <skip /> - <!-- no translation found for ssl_certificate_is_valid (7096160815933145579) --> - <skip /> - <!-- no translation found for issued_to (9032338008819841339) --> - <skip /> - <!-- no translation found for common_name (5745530093500062357) --> - <skip /> - <!-- no translation found for org_name (8868889052889991293) --> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> <skip /> - <!-- no translation found for org_unit (4489056376307768196) --> + <!-- no translation found for ssl_invalid (9041704741505449967) --> <skip /> - <!-- no translation found for issued_by (6959484326943152487) --> - <skip /> - <!-- no translation found for validity_period (57988851973181309) --> - <skip /> - <!-- no translation found for issued_on (2082890654801808368) --> - <skip /> - <!-- no translation found for expires_on (8061200430557020704) --> + <!-- no translation found for ssl_unknown (5679243486524754571) --> <skip /> <!-- no translation found for stopping (4839698519340302982) --> <skip /> @@ -185,11 +171,10 @@ <skip /> <!-- no translation found for share_page (593756995297268343) --> <skip /> - <!-- no translation found for menu_freeze_tab (189603565552297099) --> + <!-- no translation found for menu_save_snapshot (6935080344031126139) --> + <skip /> + <!-- no translation found for snapshot_failed (6176197364690207251) --> <skip /> - <!-- outdated translation 3934652434001459581 --> <string name="menu_save_webarchive" msgid="2474117375302625691">"Stoor as webargief"</string> - <!-- outdated translation 7045250341467345007 --> <string name="webarchive_saved" msgid="2212053339474523406">"Webargief gestoor."</string> - <!-- outdated translation 2880998204746620260 --> <string name="webarchive_failed" msgid="19950914584285713">"Kon nie webargief stoor nie."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> boekmerke"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Leë vouer"</string> <!-- no translation found for contextmenu_openlink (7237961252214188935) --> @@ -255,9 +240,11 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Stel soekenjin"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Kies \'n soekenjin"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Stel na…"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Huidige bladsy"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Leë bladsy"</string> - <string name="pref_use_default" msgid="192587563274735878">"Verstek bladsy"</string> + <!-- no translation found for pref_homepage_choices:0 (844041670142910837) --> + <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) --> + <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) --> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> + <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) --> <!-- no translation found for pref_content_autofit (8260474534053660809) --> <skip /> <!-- no translation found for pref_content_autofit_summary (4587831659894879986) --> @@ -305,6 +292,8 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profiel gestoor"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profiel uitgevee"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Vee profiel uit"</string> + <!-- no translation found for autofill_setup_dialog_title (1955613311837926540) --> + <skip /> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Blaaier kan webvorms soos hierdie outomaties voltooi. Wil jy jou profiel opstel?"</string> <!-- no translation found for autofill_setup_dialog_negative_toast (6990737008936188620) --> <skip /> @@ -423,8 +412,6 @@ <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string> <!-- outdated translation 2105979166017257647 --> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Vinnige kontroles"</string> <!-- outdated translation 8025196176636589803 --> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Sleep duim van linker- of regterkant om vinnige kontroles te gebruik"</string> - <!-- outdated translation 547134501893835512 --> <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Mees besoekte tuisblad"</string> - <!-- outdated translation 6857702350834122532 --> <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Stel jou tuisblad om die mees besoekte bladsye te wys."</string> <!-- no translation found for pref_use_instant_search (1119176077760723740) --> <skip /> <!-- no translation found for pref_use_instant_search_summary (839320474961917522) --> @@ -433,6 +420,16 @@ <skip /> <!-- no translation found for pref_lab_fullscreen_summary (6853711692160711419) --> <skip /> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <!-- no translation found for pref_data_title (750316606686075162) --> + <skip /> + <!-- no translation found for pref_data_preload_title (4479320472980292873) --> + <skip /> + <!-- no translation found for pref_data_preload_summary (7488335627364473744) --> + <skip /> <!-- no translation found for browserFrameNetworkErrorLabel (126892350904924893) --> <skip /> <!-- no translation found for browserFrameFileErrorLabel (8063691502792670367) --> @@ -628,14 +625,6 @@ <string name="max_tabs_warning" msgid="4122034303809457570">"Geen oortjies meer beskikbaar nie"</string> <!-- no translation found for instant_search_label (8769284297650716935) --> <skip /> - <!-- no translation found for recover_title (8095611702406163360) --> - <skip /> - <!-- no translation found for recover_prompt (6541354420842425606) --> - <skip /> - <!-- no translation found for recover_yes (4540538008955917099) --> - <skip /> - <!-- no translation found for recover_no (3121030267940592611) --> - <skip /> <!-- no translation found for preview (6450823514561689038) --> <skip /> <!-- no translation found for local_bookmarks (533816851415228520) --> @@ -644,4 +633,50 @@ <skip /> <!-- no translation found for ua_switcher_desktop (2535200543238676638) --> <skip /> + <!-- no translation found for permission_preload_label (4856971662337877316) --> + <skip /> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 8716fc5..d820827 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -22,10 +22,11 @@ <skip /> <string name="new_tab" msgid="4505722538297295141">"አዲሰ መስኮት"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"አዲስ incognito መስኮት"</string> - <string name="active_tabs" msgid="3050623868203544623">"ዊንዶውስ"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"ዕልባቶች"</string> <string name="tab_most_visited" msgid="1077402532455000703">"በብዛት የተጎበኘ"</string> <string name="tab_history" msgid="1979267558744613746">"ታሪክ"</string> + <!-- no translation found for tab_snapshots (4435852763803720588) --> + <skip /> <string name="added_to_bookmarks" msgid="1020224130695956728">"ወደ እልባቶች ታክሏል"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"ከዕልባት የተወገደ"</string> <string name="sign_in_to" msgid="5939425800148759165">"ወደ <xliff:g id="HOSTNAME">%s1</xliff:g>\"<xliff:g id="REALM">%s2</xliff:g>\" ግባ"</string> @@ -64,25 +65,11 @@ <skip /> <!-- no translation found for ssl_not_yet_valid (2893167846212645846) --> <skip /> - <!-- no translation found for ssl_certificate (5226747157992111668) --> - <skip /> - <!-- no translation found for ssl_certificate_is_valid (7096160815933145579) --> - <skip /> - <!-- no translation found for issued_to (9032338008819841339) --> - <skip /> - <!-- no translation found for common_name (5745530093500062357) --> - <skip /> - <!-- no translation found for org_name (8868889052889991293) --> - <skip /> - <!-- no translation found for org_unit (4489056376307768196) --> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> <skip /> - <!-- no translation found for issued_by (6959484326943152487) --> + <!-- no translation found for ssl_invalid (9041704741505449967) --> <skip /> - <!-- no translation found for validity_period (57988851973181309) --> - <skip /> - <!-- no translation found for issued_on (2082890654801808368) --> - <skip /> - <!-- no translation found for expires_on (8061200430557020704) --> + <!-- no translation found for ssl_unknown (5679243486524754571) --> <skip /> <!-- no translation found for stopping (4839698519340302982) --> <skip /> @@ -162,11 +149,10 @@ <string name="copy_page_url" msgid="7635062169011319208">"url ገፅ ቅዳ"</string> <!-- no translation found for share_page (593756995297268343) --> <skip /> - <!-- no translation found for menu_freeze_tab (189603565552297099) --> + <!-- no translation found for menu_save_snapshot (6935080344031126139) --> + <skip /> + <!-- no translation found for snapshot_failed (6176197364690207251) --> <skip /> - <!-- outdated translation 3934652434001459581 --> <string name="menu_save_webarchive" msgid="2474117375302625691">"እንደ ድረ መዝገብ አስቀምጥ"</string> - <!-- outdated translation 7045250341467345007 --> <string name="webarchive_saved" msgid="2212053339474523406">"የድረ መዝገብ ተቀምጧል።"</string> - <!-- outdated translation 2880998204746620260 --> <string name="webarchive_failed" msgid="19950914584285713">"የድረ መዝገብ ለማስቀመጥ ተሳነ"</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> ዕልባቶች"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"ባዶ አቃፊ"</string> <!-- no translation found for contextmenu_openlink (7237961252214188935) --> @@ -228,9 +214,11 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"የፍለጋ ፍርግም አዘጋጅ"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"የፍለጋ ፍርግም ምረጥ"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"ለ አዘጋጅ....."</string> - <string name="pref_use_current" msgid="1778622474040406672">"የአሁኑ ገፅ"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"ባዶ ገጽ"</string> - <string name="pref_use_default" msgid="192587563274735878">"ነባሪ ገፅ"</string> + <!-- no translation found for pref_homepage_choices:0 (844041670142910837) --> + <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) --> + <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) --> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> + <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) --> <!-- no translation found for pref_content_autofit (8260474534053660809) --> <skip /> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"ማያውን ለማስማማት ድረ ገፆችን ቅረፅ"</string> @@ -278,6 +266,8 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"መገለጫ አስቀምጧል"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"መገለጫ ሰርዟል"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"መገለጫ ሰርዝ"</string> + <!-- no translation found for autofill_setup_dialog_title (1955613311837926540) --> + <skip /> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"አሳሽ እንደዚህ ያሉ የድረ ቅጾችን በራስ ሰር መሙላት ይችላል።መገለጫዎን መጫን ይፈልጋሉ?"</string> <!-- no translation found for autofill_setup_dialog_negative_toast (6990737008936188620) --> <skip /> @@ -385,8 +375,6 @@ <string name="pref_lab_title" msgid="5571091610359629423">"ቤተ ሙከራዎች"</string> <!-- outdated translation 2105979166017257647 --> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"ፈጣን መቆጣጠሪያ"</string> <!-- outdated translation 8025196176636589803 --> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"ፈጣን መቆጣጠሪያዎችን ለመድረስ አውራ ጣትወደ ግራ ወይም ወደ ቀኝአንሸራት"</string> - <!-- outdated translation 547134501893835512 --> <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"ብዙ ጊዜ የተጎበኘ መነሻ ገፅ"</string> - <!-- outdated translation 6857702350834122532 --> <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"ብዙ የተጎበኘ ገፆችን ለማሳየት መነሻ ገፅዎን ያዘጋጃል።"</string> <!-- no translation found for pref_use_instant_search (1119176077760723740) --> <skip /> <!-- no translation found for pref_use_instant_search_summary (839320474961917522) --> @@ -395,6 +383,16 @@ <skip /> <!-- no translation found for pref_lab_fullscreen_summary (6853711692160711419) --> <skip /> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <!-- no translation found for pref_data_title (750316606686075162) --> + <skip /> + <!-- no translation found for pref_data_preload_title (4479320472980292873) --> + <skip /> + <!-- no translation found for pref_data_preload_summary (7488335627364473744) --> + <skip /> <!-- no translation found for browserFrameNetworkErrorLabel (126892350904924893) --> <skip /> <!-- no translation found for browserFrameFileErrorLabel (8063691502792670367) --> @@ -553,14 +551,6 @@ <string name="max_tabs_warning" msgid="4122034303809457570">"ምንም ተጨማሪ ትሮች የሉም"</string> <!-- no translation found for instant_search_label (8769284297650716935) --> <skip /> - <!-- no translation found for recover_title (8095611702406163360) --> - <skip /> - <!-- no translation found for recover_prompt (6541354420842425606) --> - <skip /> - <!-- no translation found for recover_yes (4540538008955917099) --> - <skip /> - <!-- no translation found for recover_no (3121030267940592611) --> - <skip /> <!-- no translation found for preview (6450823514561689038) --> <skip /> <!-- no translation found for local_bookmarks (533816851415228520) --> @@ -569,4 +559,50 @@ <skip /> <!-- no translation found for ua_switcher_desktop (2535200543238676638) --> <skip /> + <!-- no translation found for permission_preload_label (4856971662337877316) --> + <skip /> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-ar-sw600dp/strings.xml b/res/values-ar-sw600dp/strings.xml index 4b05275..da6ca8b 100644 --- a/res/values-ar-sw600dp/strings.xml +++ b/res/values-ar-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"فتح الكل في علامات تبويب جديدة"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"فتح علامات تبويب جديدة وراء علامة التبويب الحالية"</string> <string name="recover_title" msgid="1558775426269800998">"هل تريد استعادة علامات التبويب؟"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"يبدو أن المتصفح قد تعطل. هل تريد استعادة علامات التبويب من المرة السابقة؟"</string> + <string name="recover_prompt" msgid="377456662058488205">"هل تريد استعادة علامات تبويب المتصفح من المرة السابقة؟"</string> </resources> diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 73b25b9..3d89713 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"تحميلات الملفات معطلة."</string> <string name="new_tab" msgid="4505722538297295141">"نافذة جديدة"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"نافذة جديدة للتصفح المتخفي"</string> - <string name="active_tabs" msgid="3050623868203544623">"نظام التشغيل Windows"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"الإشارات"</string> <string name="tab_most_visited" msgid="1077402532455000703">"الأكثر زيارة"</string> <string name="tab_history" msgid="1979267558744613746">"سجلّ"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"الصفحات المحفوظة"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"تمت الإضافة إلى الإشارات"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"تمت إزالته من الإشارات"</string> <string name="sign_in_to" msgid="5939425800148759165">"تسجيل الدخول إلى <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"اسم الموقع لا يتطابق مع الاسم على الشهادة."</string> <string name="ssl_expired" msgid="5739349389499575559">"انتهت صلاحية هذه الشهادة."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"هذه الشهادة ليست صالحة بعد."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"جارٍ الإيقاف..."</string> <string name="stop" msgid="5687251076030630074">"إيقاف"</string> <string name="reload" msgid="8585220783228408062">"تحديث"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"التنزيلات"</string> <string name="copy_page_url" msgid="7635062169011319208">"نسخ عنوان URL للصفحة"</string> <string name="share_page" msgid="593756995297268343">"مشاركة الصفحة"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"تجميد علامة التبويب"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"حفظ الصفحة"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"تم حفظ الصفحة."</string> - <string name="webarchive_failed" msgid="19950914584285713">"أخفق حفظ الصفحة."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"حفظ للقراءة في وضع عدم الاتصال"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"أخفق الحفظ للقراءة في وضع عدم الاتصال."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> من الإشارات المرجعية"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"المجلد فارغ"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"فتح"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"تعين محرك بحث"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"تحديد محرك بحث"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"تعيين على..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"الصفحة الحالية"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"صفحة فارغة"</string> - <string name="pref_use_default" msgid="192587563274735878">"الصفحة الافتراضية"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"الصفحة الحالية"</item> + <item msgid="4430498748295169195">"صفحة فارغة"</item> + <item msgid="5747608191946904074">"الصفحة الافتراضية"</item> + <item msgid="6092441301001006473">"المواقع الأكثر زيارة"</item> + <item msgid="5021822752506507426">"أخرى…"</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"احتواء تلقائي للصفحات"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"تنسيق صفحات الويب لاحتوائها في الشاشة"</string> <string name="pref_general_title" msgid="1946872771219249323">"إعدادات عامة"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"تم حفظ الملف الشخصي"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"تم حذف الملف الشخصي"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"حذف الملف الشخصي"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"هل تريد إعداد الملء التلقائي؟"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"يستطيع المتصفح إكمال نماذج ويب مثل هذا النموذج. هل تريد إعداد ملفك الشخصي؟"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"يمكن تهيئة الملء التلقائي دائمًا من خلال إعدادات المتصفح."</string> <string name="disable_autofill" msgid="8305901059849400354">"تعطيل الملء التلقائي"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"ضخم"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"الحد الأدنى لحجم الخط"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> نقطة"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"تكبير/تصغير النص"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"فرض تمكين التكبير/التصغير"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"تجاوز طلب موقع الويب للتحكم في سلوك التكبير/التصغير"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"التكبير/التصغير الافتراضي"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"تشفير النص"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"إمكانية الدخول"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"حجم الخط"</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_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_lab_fullscreen" msgid="8173609016657987973">"ملء الشاشة"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"استخدم وضع ملء الشاشة لإخفاء شريط الحالة."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"عرض معكوس"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"يؤدي تحديد هذا الخيار إلى عكس الألوان بالمتصفح، ليصبح اللون الأسود أبيض والعكس."</string> + <string name="pref_data_title" msgid="750316606686075162">"إدارة النطاق الترددي"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"التحميل المسبق لنتيجة البحث"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"السماح للمتصفح بتحميل نتائج بحث عالية الثقة في الخلفية مسبقًا"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"مشكلة في اتصال البيانات"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"مشكلة في الملف"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"تأكيد"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"محو السجل"</string> <string name="browser_history" msgid="1038987118290272525">"الصفحات التي تمت زيارتها حديثًا"</string> <string name="empty_history" msgid="8738772352308207274">"سجل المتصفح فارغ."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"الرئيسية"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"إضافة إشارة..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"إضافة"</string> <string name="search_hint" msgid="4647356319916631820">"البحث عن أو كتابة عنوان URL"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"مشاركة"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"لا يتوفر المزيد من علامات التبويب"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google مع البحث الفوري (ميزات اختبارية)"</string> - <string name="recover_title" msgid="8095611702406163360">"استعادة النوافذ؟"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"يبدو أن المتصفح قد تعطل. هل تريد استعادة النوافذ من المرة السابقة؟"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"نعم"</string> - <string name="recover_no" msgid="3121030267940592611">"لا"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"المعاينة:"</string> + <string name="preview" msgid="6450823514561689038">"معاينة"</string> <string name="local_bookmarks" msgid="533816851415228520">"محلية"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"الجوال"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"سطح المكتب"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"تحميل النتائج مسبقًا"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"ليست هناك صفحات محفوظة."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"حذف الصفحة المحفوظة"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-bg-sw600dp/strings.xml b/res/values-bg-sw600dp/strings.xml index dade64a..9ed414a 100644 --- a/res/values-bg-sw600dp/strings.xml +++ b/res/values-bg-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Отваряне на всички в нови раздели"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Отваряне на нови раздели зад текущия"</string> <string name="recover_title" msgid="1558775426269800998">"Да се възстановят ли разделите?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Изглежда се получи срив в браузъра. Искате ли да възстановите разделите си от последния път?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Искате ли да възстановите разделите на браузъра си от последния път?"</string> </resources> diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 64f27e4..10fda40 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Качванията на файлове са деактивирани."</string> <string name="new_tab" msgid="4505722538297295141">"Нов прозорец"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Нов прозорец „инкогнито“"</string> - <string name="active_tabs" msgid="3050623868203544623">"Прозорци"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Отметки"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Най-посещавани"</string> <string name="tab_history" msgid="1979267558744613746">"История"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Запазени страници"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Добавено към отметките"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Премахната от отметки"</string> <string name="sign_in_to" msgid="5939425800148759165">"Влезте в <xliff:g id="HOSTNAME">%s1</xliff:g> „<xliff:g id="REALM">%s2</xliff:g>“"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Името на сайта не съответства на името в сертификата."</string> <string name="ssl_expired" msgid="5739349389499575559">"Сертификатът е изтекъл."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Сертификатът още не е валиден."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Спира се..."</string> <string name="stop" msgid="5687251076030630074">"Стоп"</string> <string name="reload" msgid="8585220783228408062">"Опресняване"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Изтеглени"</string> <string name="copy_page_url" msgid="7635062169011319208">"Копиране на URL адреса на страницата"</string> <string name="share_page" msgid="593756995297268343">"Споделяне на страницата"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Фиксиране на раздел"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Запазване на страницата"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Страницата е запазена."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Запазването на страницата не бе успешно."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Запазване за четене офлайн"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Запазването за четене офлайн не бе успешно."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> отметки"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Празна папка"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Отваряне"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Задаване на търсеща машина"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Избор на търсеща машина"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Задаване на..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Текущата страница"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Празна страница"</string> - <string name="pref_use_default" msgid="192587563274735878">"Страницата по подразбиране"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"Автоматично побиране на страници"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Уеб страниците се форматират до размера на екрана"</string> <string name="pref_general_title" msgid="1946872771219249323">"Общи"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Потребителският профил бе запазен"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Потребителският профил бе изтрит"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Изтриване на профила"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Да се настрои авт. попълване?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Браузърът може автоматично да попълва уеб формуляри като този. Искате ли да настроите потребителския си профил?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Автоматичното попълване винаги може да се конфигурира от „Настройки на браузъра“."</string> <string name="disable_autofill" msgid="8305901059849400354">"Деактивиране на автоматичното попълване"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"Огромен"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Минимален размер на шрифта"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> т"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Промяна на мащаба на текста"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Принудит. активиране на мащаба"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Дали заявката на сайт за контрол на мащаба да се отхвърли, или не"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Стандартна промяна на мащаба"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Текстово кодиране"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Достъпност"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Размер на шрифта"</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_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_lab_fullscreen" msgid="8173609016657987973">"Цял екран"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Използване на режима на цял екран за скриване на лентата на състоянието."</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"Управление на капацитета"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Предв. зареждане на резултати от търс."</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Разр. на браузъра предв. да зарежда на заден план резултати с голяма сигурност"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблем с обмен на данни"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблем с файла"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Потвърждаване"</string> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"Изчистване на историята"</string> <string name="browser_history" msgid="1038987118290272525">"Наскоро посетени страници"</string> <string name="empty_history" msgid="8738772352308207274">"Историята на сърфиране е празна."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Начало"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Отметката се добавя..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Добавяне"</string> <string name="search_hint" msgid="4647356319916631820">"Търсете или въведете URL адрес"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"Споделяне"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Не се предлагат повече раздели"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google с Динамично търсене (Лаборатория)"</string> - <string name="recover_title" msgid="8095611702406163360">"Да се възстановят ли прозорците?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Изглежда се получи срив в браузъра. Искате ли да възстановите прозорците си от последния път?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Да"</string> - <string name="recover_no" msgid="3121030267940592611">"Не"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Визуализация:"</string> + <string name="preview" msgid="6450823514561689038">"Визуализация"</string> <string name="local_bookmarks" msgid="533816851415228520">"Локални"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Мобилна"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Настолна"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Предварително зареждане на резултати"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-ca-sw600dp/strings.xml b/res/values-ca-sw600dp/strings.xml index 27ed753..8b12617 100644 --- a/res/values-ca-sw600dp/strings.xml +++ b/res/values-ca-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Obre-ho tot en pestanyes noves"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Obre les pestanyes noves darrere l\'actual"</string> <string name="recover_title" msgid="1558775426269800998">"Vols restaurar les pestanyes?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Sembla que s\'ha bloquejat el navegador. Vols restaurar les pestanyes des de la darrera vegada?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Vols restaurar les pestanyes del navegador que tenies obertes la darrera vegada?"</string> </resources> diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index d649439..c565105 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Les càrregues de fitxers estan desactivades."</string> <string name="new_tab" msgid="4505722538297295141">"Finestra nova"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Nova finestra d\'incògnit"</string> - <string name="active_tabs" msgid="3050623868203544623">"Windows"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Adreces d\'interès"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Més visitats"</string> <string name="tab_history" msgid="1979267558744613746">"Historial"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Pàgines desades"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"S\'ha afegit a les adreces d\'interès"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Eliminat de les adreces d\'interès"</string> <string name="sign_in_to" msgid="5939425800148759165">"Inici de sessió a <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"El nom del lloc no coincideix amb el nom que consta al certificat."</string> <string name="ssl_expired" msgid="5739349389499575559">"Aquest certificat ha caducat."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Aquest certificat encara no és vàlid."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"S\'està aturant..."</string> <string name="stop" msgid="5687251076030630074">"Atura"</string> <string name="reload" msgid="8585220783228408062">"Actualitza"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Baixades"</string> <string name="copy_page_url" msgid="7635062169011319208">"Copia l\'URL de la pàgina"</string> <string name="share_page" msgid="593756995297268343">"Comparteix la pàgina"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Congela la pestanya"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Desa la pàgina"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"S\'ha desat la pàgina."</string> - <string name="webarchive_failed" msgid="19950914584285713">"No s\'ha pogut desar la pàgina."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Desa per a lectura fora de línia"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Ha fallat el desament per a lectura fora de línia."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> marcadors"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Carpeta buida"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Obre"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Defineix el motor de cerca"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Selecciona un motor de cerca"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Defineix com a..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Pàgina actual"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Pàgina en blanc"</string> - <string name="pref_use_default" msgid="192587563274735878">"Pàgina predeterminada"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"Ajusta les pàgines automàticament"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formata les pàgines web perquè s\'ajustin a la pantalla"</string> <string name="pref_general_title" msgid="1946872771219249323">"General"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"S\'ha desat el perfil"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"S\'ha suprimit el perfil"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Suprimeix el perfil"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Configur. emplenament automàtic?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"El navegador pot emplenar formularis web com aquest automàticament. Vols configurar el teu perfil?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"L\'emplenament automàtic sempre es pot establir mitjançant la configuració del navegador."</string> <string name="disable_autofill" msgid="8305901059849400354">"Desactiva l\'emplenament automàtic"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"Enorme"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Cos de lletra mínim"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Zoom del text"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Força l\'activació del zoom"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Decideix si vols substituir o no la sol·licitud d\'un lloc web per controlar el comportament del zoom"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Zoom predeterminat"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codificació del text"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Accessibilitat"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Mida del tipus de lletra"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controls ràpids"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Fes lliscar el polze des de la vora esquerra o dreta per accedir als controls ràpids i ocultar les barres d\'aplicació i URL"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Pàgina d\'inici més visitada"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"La teva pàgina d\'inici mostra les pàgines web que més visites."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Utilitza Google Instant quan utilitzis la Cerca de Google per mostrar resultats mentre escrius (augmenta l\'ús de dades)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Pantalla completa"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Utilitza el mode de pantalla completa per amagar la barra d\'estat."</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"Gestió d\'amplada de banda"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Càrrega prèvia de resultats de la cerca"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Permet al naveg. carregar prèv. resultats cerca fiabilitat alta en process. fons"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema de connectivitat de dades"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problema amb el fitxer"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirma"</string> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"Esborra l\'historial"</string> <string name="browser_history" msgid="1038987118290272525">"Pàgines visitades recentment"</string> <string name="empty_history" msgid="8738772352308207274">"L\'historial del navegador és buit."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Pàgina d\'inici"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Afegeix una adreça d\'interès..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Afegeix"</string> <string name="search_hint" msgid="4647356319916631820">"Cerqueu o escriviu l\'URL"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"Comparteix"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"No hi ha cap més pestanya disponible"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google amb Instant (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Vols restaurar les finestres?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Sembla que s\'ha bloquejat el navegador. Vols restaurar les finestres que tenies obertes la darrera vegada?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Sí"</string> - <string name="recover_no" msgid="3121030267940592611">"No"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Visualització prèvia:"</string> + <string name="preview" msgid="6450823514561689038">"Visualització prèvia"</string> <string name="local_bookmarks" msgid="533816851415228520">"Local"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mòbil"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Escriptori"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Carrega prèviament els resultats"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-cs-sw600dp/strings.xml b/res/values-cs-sw600dp/strings.xml index c7a62a8..18d24fa 100644 --- a/res/values-cs-sw600dp/strings.xml +++ b/res/values-cs-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Otevřít vše na nových kartách"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Otevírat nové karty za aktuální kartou"</string> <string name="recover_title" msgid="1558775426269800998">"Obnovit karty?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Zřejmě došlo k selhání prohlížeče. Chcete obnovit naposledy otevřené karty?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Chcete obnovit naposledy otevřené karty prohlížeče?"</string> </resources> diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 5790da3..22347d5 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Nahrávání souborů je deaktivováno."</string> <string name="new_tab" msgid="4505722538297295141">"Nové okno"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Nové anonymní okno"</string> - <string name="active_tabs" msgid="3050623868203544623">"Okna"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Záložky"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Nejnavštěvovanější"</string> <string name="tab_history" msgid="1979267558744613746">"Historie"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Uložené stránky"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Přidáno k záložkám"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Odstraněno ze záložek"</string> <string name="sign_in_to" msgid="5939425800148759165">"Přihlásit se: <xliff:g id="HOSTNAME">%s1</xliff:g> <xliff:g id="REALM">%s2</xliff:g>"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Název webu se neshoduje s názvem uvedeným v certifikátu."</string> <string name="ssl_expired" msgid="5739349389499575559">"Platnost certifikátu vypršela."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Tento certifikát zatím není platný."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Zastavuji..."</string> <string name="stop" msgid="5687251076030630074">"Zastavit"</string> <string name="reload" msgid="8585220783228408062">"Aktualizovat"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Stažené"</string> <string name="copy_page_url" msgid="7635062169011319208">"Kopírovat adresu URL stránky"</string> <string name="share_page" msgid="593756995297268343">"Sdílet stránku"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Zmrazit kartu"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Uložit stránku"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Stránka byla uložena."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Uložení stránky se nezdařilo."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Uložit ke čtení offline"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Uložení ke čtení offline se nezdařilo."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Počet záložek: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Prázdná složka"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Otevřít"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Nastavit vyhledávač"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Výběr vyhledávače"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Nastavit na..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Aktuální stránka"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Prázdná stránka"</string> - <string name="pref_use_default" msgid="192587563274735878">"Výchozí stránka"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"Automaticky přizpůsobit"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Přizpůsobit velikost webových stránek obrazovce"</string> <string name="pref_general_title" msgid="1946872771219249323">"Obecné"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil uložen"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil byl smazán."</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Smazat profil"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Nastavit automatické vyplnění?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Podobné webové formuláře může prohlížeč vyplňovat automaticky. Chcete nastavit profil?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automatické vyplňování lze vždy nakonfigurovat prostřednictvím nastavení prohlížeče."</string> <string name="disable_autofill" msgid="8305901059849400354">"Vypnout automatické vyplňování"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"Velmi velký"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Minimální velikost písma"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> bodů"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Přiblížení/oddálení textu"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Vynutit aktivaci přiblížení"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Zda přepsat požadavek webu na řízení funkce přiblížení, či nikoliv"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Výchozí přiblížení"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Kódování textu"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Usnadnění"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Velikost písma"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Laboratoř Google"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Rychlé ovládací prvky"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Posunutím prstu od levého nebo pravého okraje zobrazíte rychlé ovládací prvky a skryjete panely aplikací a URL."</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Nejnavštěvovanější domovská stránka"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Na vaší domovské stránce se zobrazují nejnavštěvovanější webové stránky."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Dynamické vyhledávání Google"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Dynamické vyhledávání ve Vyhledávání Google zobrazuje výsledky již při zadávání dotazu. (Může se zvýšit množství přenesených dat.)"</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Celá obrazovka"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Chcete-li skrýt stavový řádek, použijte režim zobrazení na celou obrazovku."</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"Správa rychlosti připojení"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Předběžné načítání výsledků vyhledávání"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Umožní prohlížeči na pozadí předběžně načítat relevantní výsledky vyhledávání"</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> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"Vymazat historii"</string> <string name="browser_history" msgid="1038987118290272525">"Nedávno navštívené stránky"</string> <string name="empty_history" msgid="8738772352308207274">"Historie prohlížeče je prázdná."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Domovská stránka"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Přidat záložku..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Přidat"</string> <string name="search_hint" msgid="4647356319916631820">"Zrušit přístup k poloze"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"Sdílet"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Žádné další karty nejsou k dispozici"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google s dynamickým vyhledáváním (experimentální funkce)"</string> - <string name="recover_title" msgid="8095611702406163360">"Obnovit okna?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Zřejmě došlo k selhání prohlížeče. Chcete obnovit naposledy otevřená okna?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Ano"</string> - <string name="recover_no" msgid="3121030267940592611">"Ne"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Náhled:"</string> + <string name="preview" msgid="6450823514561689038">"Náhled"</string> <string name="local_bookmarks" msgid="533816851415228520">"Lokální"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Počítač"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Předběžné načítání výsledků"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-da-sw600dp/strings.xml b/res/values-da-sw600dp/strings.xml index 85205c7..91adb14 100644 --- a/res/values-da-sw600dp/strings.xml +++ b/res/values-da-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Åbn alle på nye faner"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Åbn nye faner bag den aktuelle"</string> <string name="recover_title" msgid="1558775426269800998">"Vil du gendanne faner?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Det lader til, at browseren er gået ned. Vil du gendanne dine faner fra sidste gang?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Vil du gendanne dine browserfaner fra sidste gang?"</string> </resources> diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index a0181cc..161ffb3 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Upload af filer er deaktiveret."</string> <string name="new_tab" msgid="4505722538297295141">"Nyt vindue"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Nyt inkognitovindue"</string> - <string name="active_tabs" msgid="3050623868203544623">"Vinduer"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Bogmærker"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Mest besøgte"</string> <string name="tab_history" msgid="1979267558744613746">"Oversigt"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Gemte sider"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Føjet til bogmærker"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Fjernet fra bogmærker"</string> <string name="sign_in_to" msgid="5939425800148759165">"Log ind på <xliff:g id="HOSTNAME">%s1</xliff:g>\"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Navnet på dette websted stemmer ikke overens med navnet på certifikatet."</string> <string name="ssl_expired" msgid="5739349389499575559">"Dette certifikat er udløbet."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Dette certifikat er ikke gyldigt endnu."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Stopper ..."</string> <string name="stop" msgid="5687251076030630074">"Stop"</string> <string name="reload" msgid="8585220783228408062">"Opdater"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Downloads"</string> <string name="copy_page_url" msgid="7635062169011319208">"Kopier sidens webadresse"</string> <string name="share_page" msgid="593756995297268343">"Del side"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Fanen Frys"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Gem side."</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Siden er gemt."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Siden kunne ikke gemmes."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Gem til læsning offline"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Siden kunne ikke gemmes til læsning offline."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> bogmærker"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Mappen er tom"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Åbn"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Angiv søgemaskine"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Vælg en søgemaskine"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Angiv som..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Aktuel side"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Tom side"</string> - <string name="pref_use_default" msgid="192587563274735878">"Standardside"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Aktuel side"</item> + <item msgid="4430498748295169195">"Tom side"</item> + <item msgid="5747608191946904074">"Standardside"</item> + <item msgid="6092441301001006473">"Mest besøgte websteder"</item> + <item msgid="5021822752506507426">"Andet..."</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Tilpas sider automatisk"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Tilpas websider, så de passer til skærmen"</string> <string name="pref_general_title" msgid="1946872771219249323">"Generelt"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profilen er gemt"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profilen er slettet"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Slet profil"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Vil du konfigurere AutoFyld?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Browseren kan automatisk udfylde webformularer som denne. Vil du konfigurere din profil?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"AutoFyld kan altid konfigureres via indstillingerne for Browser."</string> <string name="disable_autofill" msgid="8305901059849400354">"Deaktiver AutoFyld"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Kæmpestor"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Mindste skriftstørrelse"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Tekststørrelse"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Tving aktivering af zoom"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Tilsidesættelse af et websteds anmodning om kontrol af zoomadfærd"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Standardzoom"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Tekstkodning"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Tilgængelighed"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Skriftstørrelse"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Hurtig betjening"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Glid fra venstre til højre for hurtig betjening og for at skjule applikation og adresselinje"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Mest besøgte startside"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Din startside viser dine mest besøgte websider."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Direkte"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Brug Google Direkte, når du søger på Google for at få vist resultater ved indtastning (kan forøge dataforbruget)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Fuld skærm"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Brug fuldskærmstilstand til at skjule statuslinjen."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Omvendt gengivelse"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Browseren bytter om på farverne, hvis dette er markeret. Sort bliver hvidt og omvendt."</string> + <string name="pref_data_title" msgid="750316606686075162">"Admin. af båndvidde"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Forudindlæsning af søgeresultater"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Tillad, at browseren forudindlæser pålidelige søgeresultater i baggrunden"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Dataforbindelsesproblem"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Der er et problem med filen"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bekræft"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Ryd oversigt"</string> <string name="browser_history" msgid="1038987118290272525">"Seneste besøgte sider"</string> <string name="empty_history" msgid="8738772352308207274">"Browseroversigten er tom."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Startside"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Opret bogmærke ..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Tilføj"</string> <string name="search_hint" msgid="4647356319916631820">"Søg efter eller indtast en webadresse"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Del"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Der er ikke flere tilgængelige faner"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google med Direkte (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Vil du gendanne vinduer?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Det lader til, at browseren er gået ned. Vil du gendanne dine vinduer fra sidste gang?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Ja"</string> - <string name="recover_no" msgid="3121030267940592611">"Nej"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Vis eksempel:"</string> + <string name="preview" msgid="6450823514561689038">"Eksempelvisning"</string> <string name="local_bookmarks" msgid="533816851415228520">"Lokal"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Computerversion"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Forudindlæs resultater"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Der er ingen gemte sider."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Slet gemt side"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-de-sw600dp/strings.xml b/res/values-de-sw600dp/strings.xml index 290d331..8de1f6a 100644 --- a/res/values-de-sw600dp/strings.xml +++ b/res/values-de-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Alle in jeweils neuem Tab öffnen"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Neue Tabs hinter aktuellem Tab öffnen"</string> <string name="recover_title" msgid="1558775426269800998">"Tabs wiederherstellen?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Offenbar ist der Browser abgestürzt. Sollen Ihre zuletzt geöffneten Tabs wiederhergestellt werden?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Möchten Sie Ihre zuletzt geöffneten Browser-Tabs wiederherstellen?"</string> </resources> diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 30400e7..87cf048 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Dateiuploads sind deaktiviert."</string> <string name="new_tab" msgid="4505722538297295141">"Neues Fenster"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Neues Inkognito-Fenster"</string> - <string name="active_tabs" msgid="3050623868203544623">"Fenster"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Lesezeichen"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Meistbesucht"</string> <string name="tab_history" msgid="1979267558744613746">"Verlauf"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Gespeicherte Seiten"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Zu Lesezeichen hinzugefügt"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Aus Lesezeichen entfernt"</string> <string name="sign_in_to" msgid="5939425800148759165">"Bei <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\" anmelden"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Der Name der Website stimmt nicht mit dem Namen auf dem Zertifikat überein."</string> <string name="ssl_expired" msgid="5739349389499575559">"Dieses Zertifikat ist abgelaufen."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Dieses Zertifikat ist noch nicht gültig."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Wird angehalten..."</string> <string name="stop" msgid="5687251076030630074">"Anhalten"</string> <string name="reload" msgid="8585220783228408062">"Aktualisieren"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Downloads"</string> <string name="copy_page_url" msgid="7635062169011319208">"Seiten-URL kopieren"</string> <string name="share_page" msgid="593756995297268343">"Seitenlink weitergeben"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Tab fixieren"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Seite speichern"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Seite wurde gespeichert."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Seite konnte nicht gespeichert werden."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Für Offline-Lesen speichern"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Speichern für Offline-Lesen fehlgeschlagen"</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> Lesezeichen"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Leerer Ordner"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Öffnen"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Suchmaschine festlegen"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Suchmaschine auswählen"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Eingestellt auf..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Aktuelle Seite"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Leere Seite"</string> - <string name="pref_use_default" msgid="192587563274735878">"Standardseite"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"Autom. Anpassung"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Webseiten an den Bildschirm anpassen"</string> <string name="pref_general_title" msgid="1946872771219249323">"Allgemein"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil wurde gespeichert."</string> <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_title" msgid="1955613311837926540">"AutoFill einrichten?"</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="disable_autofill" msgid="8305901059849400354">"AutoFill deaktivieren"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"Sehr groß"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Mindestschriftgröße"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Textzoom"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Zoom zwingend aktivieren"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Anfrage einer Website zur Steuerung des Zoomverhaltens überschreiben?"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Standard-Zoom"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Textcodierung"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Eingabehilfen"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Schriftgröße"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Schnellsteuerung"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Für Schnellsteuerung/Ausblenden der App- und URL-Leisten Daumen von links nach rechts ziehen"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"\"Am häufigsten besucht\" auf Startseite"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Auf Ihrer Startseite werden Ihre am häufigsten besuchten Webseiten angezeigt."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Nutzen Sie Google Instant bei der Google-Suche. Ergebnisse werden bei Eingabe angezeigt - ggf. mehr Speicher erforderlich."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Vollbild"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Vollbildmodus zum Ausblenden der Statusleiste verwenden"</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"Bandbreitenverwaltung"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Vorabladen von Suchergebnissen"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Browser erlauben, vertrauenswürdige Suchergebnisse vorab im Hintergrund zu laden"</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> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"Verlauf löschen"</string> <string name="browser_history" msgid="1038987118290272525">"Kürzlich besuchte Seiten"</string> <string name="empty_history" msgid="8738772352308207274">"Browserverlauf ist leer."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Startseite"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Lesezeichen hinzufügen..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Hinzufügen"</string> <string name="search_hint" msgid="4647356319916631820">"Suchen oder URL eingeben"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"Weitergeben"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Es sind keine weiteren Tabs verfügbar."</string> <string name="instant_search_label" msgid="8769284297650716935">"Google mit dynamischer Suche (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Fenster wiederherstellen?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Offenbar ist der Browser abgestürzt. Sollen Ihre Fenster wiederhergestellt werden?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Ja"</string> - <string name="recover_no" msgid="3121030267940592611">"Nein"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Vorschau:"</string> + <string name="preview" msgid="6450823514561689038">"Vorschau"</string> <string name="local_bookmarks" msgid="533816851415228520">"Lokal"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Desktop"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Ergebnisse vorab laden"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-el-sw600dp/strings.xml b/res/values-el-sw600dp/strings.xml index 06a7c9a..574349e 100644 --- a/res/values-el-sw600dp/strings.xml +++ b/res/values-el-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Άνοιγμα όλων σε νέες καρτέλες"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Άνοιγμα νέων καρτελών πίσω από την τρέχουσα"</string> <string name="recover_title" msgid="1558775426269800998">"Επαναφορά καρτελών;"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Παρουσιάστηκε σφάλμα στη λειτουργία του προγράμματος περιήγησης. Θα θέλατε να επαναφέρετε τις καρτέλες από την προηγούμενη συνεδρία σας;"</string> + <string name="recover_prompt" msgid="377456662058488205">"Θα θέλατε να επαναφέρετε τις καρτέλες του προγράμματος περιήγησης από την προηγούμενη συνεδρία σας;"</string> </resources> diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 07c47f7..816247d 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Η μεταφόρτωση αρχείων είναι απενεργοποιημένη."</string> <string name="new_tab" msgid="4505722538297295141">"Νέο παράθυρο"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Νέο παράθυρο για ανώνυμη περιήγηση"</string> - <string name="active_tabs" msgid="3050623868203544623">"Παράθυρα"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Σελιδοδείκτες"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Οι πιο δημοφιλείς"</string> <string name="tab_history" msgid="1979267558744613746">"Ιστορικό"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Αποθηκευμένες σελίδες"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Έγινε προσθήκη στους σελιδοδείκτες"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Κατάργηση από τους σελιδοδείκτες"</string> <string name="sign_in_to" msgid="5939425800148759165">"Σύνδεση στο <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Το όνομα του ιστότοπου δεν αντιστοιχεί στο όνομα του πιστοποιητικού."</string> <string name="ssl_expired" msgid="5739349389499575559">"Αυτό το πιστοποιητικό έχει λήξει."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Αυτό το πιστοποιητικό δεν είναι έγκυρο ακόμα."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Διακοπή..."</string> <string name="stop" msgid="5687251076030630074">"Διακοπή"</string> <string name="reload" msgid="8585220783228408062">"Ανανέωση"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Λήψεις"</string> <string name="copy_page_url" msgid="7635062169011319208">"Αντιγραφή διεύθυνσης url της σελίδας"</string> <string name="share_page" msgid="593756995297268343">"Κοινή χρήση σελίδας"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Πάγωμα καρτέλας"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Αποθήκευση σελίδας"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Η σελίδα αποθηκεύτηκε."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Απέτυχε η αποθήκευση της σελίδας."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Αποθήκευση για ανάγνωση εκτός σύνδεσης"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Αποτυχία αποθήκευσης για ανάγνωση εκτός σύνδεσης."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> σελιδοδείκτες"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Κενός φάκελος"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Άνοιγμα"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Ορισμός μηχανής αναζήτησης"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Επιλέξτε μηχανή αναζήτησης"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Ορισμός σε..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Τρέχουσα σελίδα"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Κενή σελίδα"</string> - <string name="pref_use_default" msgid="192587563274735878">"Προεπιλεγμένη σελίδα"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Τρέχουσα σελίδα"</item> + <item msgid="4430498748295169195">"Κενή σελίδα"</item> + <item msgid="5747608191946904074">"Προεπιλεγμένη σελίδα"</item> + <item msgid="6092441301001006473">"Ιστότοποι που επισκέπτεστε συχνότερα"</item> + <item msgid="5021822752506507426">"Άλλη..."</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Αυτόματη προσαρμογή σελίδων"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Μορφοποίηση ιστοσελίδων για την προσαρμογή τους στο μέγεθος της οθόνης"</string> <string name="pref_general_title" msgid="1946872771219249323">"Γενικές"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Το προφίλ αποθηκεύτηκε"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Το προφίλ διαγράφηκε"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Διαγραφή προφίλ"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Ρύθμιση αυτόματης συμπλήρωσης;"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Το πρόγραμμα περιήγησης μπορεί να ολοκληρώσει αυτόματα φόρμες ιστού σαν αυτήν. Θα θέλατε να δημιουργήσετε το δικό σας προφίλ;"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Μπορείτε να διαμορφώσετε τη λειτουργία αυτόματης συμπλήρωσης μέσα από τις ρυθμίσεις του προγράμματος περιήγησης."</string> <string name="disable_autofill" msgid="8305901059849400354">"Απενεργοποιήστε τη λειτουργία αυτόματης συμπλήρωσης"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Πολύ μεγάλο"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Ελάχιστο μέγ. γραμματοσειράς"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Μεγέθυνση κειμένου"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Αναγκ. ενεργοπ. εστίασης"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Να αντικατ. ή όχι το αίτημα ιστότ. για έλεγχο συμπερ. εστίασης"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Προεπιλεγμένο ζουμ"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Κωδικοποίηση κειμένου"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Προσβασιμότητα"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Μέγεθος γραμματοσειράς"</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_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_lab_fullscreen" msgid="8173609016657987973">"Πλήρης οθόνη"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Χρησιμοποιήστε τη λειτουργία πλήρους οθόνης για την απόκρυψη της γραμμής κατάστασης."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Ανεστραμμένη απόδοση"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Με αυτήν την επιλογή το πρόγραμμα περιήγησης θα αντιστρέψει τα χρώματα. Το μαύρο θα γίνει άσπρο και τούμπαλιν."</string> + <string name="pref_data_title" msgid="750316606686075162">"Διαχείριση εύρους ζώνης"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Προφόρτωση αποτελεσμάτων αναζήτησης"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Να επιτρέπεται η προφόρτωση αποτελεσμάτων αναζήτησης υψηλής αξιοπιστίας σε φόντο"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Πρόβλημα σύνδεσης δεδομένων"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Υπάρχει πρόβλημα με το αρχείο"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Επιβεβαίωση"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Εκκαθάριση ιστορικού"</string> <string name="browser_history" msgid="1038987118290272525">"Σελίδες που επισκεφθήκατε πρόσφατα"</string> <string name="empty_history" msgid="8738772352308207274">"Το ιστορικό του προγράμματος περιήγησης είναι κενό."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Αρχική σελίδα"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Προσθήκη σελιδοδείκτη..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Προσθήκη"</string> <string name="search_hint" msgid="4647356319916631820">"Αναζήτηση ή πληκτρολόγηση διεύθυνσης URL"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Κοινή χρήση"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Δεν υπάρχουν άλλες διαθέσιμες καρτέλες"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google με Instant (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Επαναφορά παραθύρων;"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Η λειτουργία του προγράμματος περιήγησης διακόπηκε ξαφνικά. Θα θέλατε να κάνετε ανάκτηση των παραθύρων από την τελευταία συνεδρία σας;"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Ναι"</string> - <string name="recover_no" msgid="3121030267940592611">"Όχι"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Προεπισκόπηση:"</string> + <string name="preview" msgid="6450823514561689038">"Προεπισκόπηση"</string> <string name="local_bookmarks" msgid="533816851415228520">"Τοπικά"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Για κινητά"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Για υπολογιστή"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Προφόρτωση αποτελεσμάτων"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Δεν υπάρχουν αποθηκευμένες σελίδες."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Διαγραφή αποθηκευμένης σελίδας"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-en-rGB-sw600dp/strings.xml b/res/values-en-rGB-sw600dp/strings.xml index 8dc579e..9278221 100644 --- a/res/values-en-rGB-sw600dp/strings.xml +++ b/res/values-en-rGB-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Open all in new tabs"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Open new tabs behind the current one"</string> <string name="recover_title" msgid="1558775426269800998">"Restore tabs?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Browser appears to have crashed. Would you like to restore the tabs from your last session?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Would you like to restore your browser tabs from last time?"</string> </resources> diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index e9f9ee5..4790fc2 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"File uploads are disabled."</string> <string name="new_tab" msgid="4505722538297295141">"New window"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"New incognito window"</string> - <string name="active_tabs" msgid="3050623868203544623">"Windows"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Bookmarks"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Most visited"</string> <string name="tab_history" msgid="1979267558744613746">"History"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Saved Pages"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Added to bookmarks"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Removed from bookmarks"</string> <string name="sign_in_to" msgid="5939425800148759165">"Sign in to <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"The name of the site does not match the name on the certificate."</string> <string name="ssl_expired" msgid="5739349389499575559">"This certificate has expired."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"This certificate is not valid yet."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Stopping…"</string> <string name="stop" msgid="5687251076030630074">"Stop"</string> <string name="reload" msgid="8585220783228408062">"Refresh"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Downloads"</string> <string name="copy_page_url" msgid="7635062169011319208">"Copy page URL"</string> <string name="share_page" msgid="593756995297268343">"Share page"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Freeze tab"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Save page"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Page saved."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Failed to save page."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Save for offline reading"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Failed to save for offline reading."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> bookmarks"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Empty folder"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Open"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Set search engine"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Select a search engine"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Set to…"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Current page"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Blank page"</string> - <string name="pref_use_default" msgid="192587563274735878">"Default page"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Current page"</item> + <item msgid="4430498748295169195">"Blank page"</item> + <item msgid="5747608191946904074">"Default page"</item> + <item msgid="6092441301001006473">"Most-visited sites"</item> + <item msgid="5021822752506507426">"Other…"</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Auto-fit pages"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Format web pages to fit the screen"</string> <string name="pref_general_title" msgid="1946872771219249323">"General"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profile saved"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profile deleted"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Delete profile"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Set up auto-fill?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Browser can complete web forms like this one automatically. Would you like to set up your profile?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Auto-fill can always be configured through Browser Settings."</string> <string name="disable_autofill" msgid="8305901059849400354">"Disable auto-fill"</string> @@ -269,12 +278,15 @@ <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Quick controls"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Swipe thumb from left or right edge to access quick controls and hide Application and URL bars"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Most-visited homepage"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Your homepage displays your most-visited web pages."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Use Google Instant when you use Google Search, to show results as you type (this can increase data use)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Full screen"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Use full-screen mode to hide the status bar."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Inverted Rendering"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Ticking this causes the browser to invert colours. Black will become white and vice versa."</string> + <string name="pref_data_title" msgid="750316606686075162">"Bandwidth Management"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Search result preloading"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Allow the browser to preload high-confidence search results in the background"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Data connectivity problem"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem with file"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirm"</string> @@ -284,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Clear history"</string> <string name="browser_history" msgid="1038987118290272525">"Recently visited pages"</string> <string name="empty_history" msgid="8738772352308207274">"Browser history is empty."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Home"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Add bookmark…"</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Add"</string> <string name="search_hint" msgid="4647356319916631820">"Search or type URL"</string> @@ -384,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Share"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"No more tabs available"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google with Instant (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Restore windows?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Browser appears to have crashed. Would you like to restore your windows from last time?"</string> - <string name="recover_yes" msgid="4540538008955917099">"Restore"</string> - <string name="recover_no" msgid="3121030267940592611">"No"</string> <string name="preview" msgid="6450823514561689038">"Preview"</string> <string name="local_bookmarks" msgid="533816851415228520">"Local"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobile"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Desktop"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Preload results"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"There are no saved pages."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Delete saved page"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-es-rUS-sw600dp/strings.xml b/res/values-es-rUS-sw600dp/strings.xml index 9dc3382..eaadc56 100644 --- a/res/values-es-rUS-sw600dp/strings.xml +++ b/res/values-es-rUS-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Abrir todos en nuevas pestañas"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Abrir las nuevas pestañas detrás de la pestaña actual"</string> <string name="recover_title" msgid="1558775426269800998">"¿Deseas restaurar las pestañas?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Parece que el navegador se bloqueó. ¿Deseas restaurar las últimas pestañas que abriste?"</string> + <string name="recover_prompt" msgid="377456662058488205">"¿Deseas restaurar las últimas pestañas que abriste en tu navegador?"</string> </resources> diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index ae34625..29444be 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Las cargas de archivo se desactivaron."</string> <string name="new_tab" msgid="4505722538297295141">"Ventana nueva"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Nueva ventana de incógnito"</string> - <string name="active_tabs" msgid="3050623868203544623">"Ventanas"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Marcadores"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Más visitados"</string> <string name="tab_history" msgid="1979267558744613746">"Historial"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Páginas guardadas"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Agregado a marcadores"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Suprimido de los marcadores"</string> <string name="sign_in_to" msgid="5939425800148759165">"Iniciar sesión en <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"El nombre del sitio no coincide con el nombre del certificado."</string> <string name="ssl_expired" msgid="5739349389499575559">"Este certificado ha expirado."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Este certificado aún no es válido."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Deteniendo..."</string> <string name="stop" msgid="5687251076030630074">"Detener"</string> <string name="reload" msgid="8585220783228408062">"Actualizar"</string> @@ -74,7 +80,7 @@ <string name="open_bookmark" msgid="8473581305759935790">"Abrir"</string> <string name="remove_bookmark" msgid="8407495852801410891">"Eliminar marcador"</string> <string name="remove_from_bookmarks" msgid="4374080666576982775">"Eliminar de marcadores"</string> - <string name="remove_history_item" msgid="5021424935726728618">"Suprimir del historial"</string> + <string name="remove_history_item" msgid="5021424935726728618">"Eliminar del historial"</string> <string name="set_as_homepage" msgid="4752937379414905560">"Definir como página principal"</string> <string name="bookmark_saved" msgid="2766434679871317557">"Guardado en los marcadores."</string> <string name="bookmark_not_saved" msgid="700600955089376724">"No se pudo agregar a favoritos."</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Descargas"</string> <string name="copy_page_url" msgid="7635062169011319208">"Copiar URL de la página"</string> <string name="share_page" msgid="593756995297268343">"Compartir página"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Bloquear pestaña"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Guardar página"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Página guardada"</string> - <string name="webarchive_failed" msgid="19950914584285713">"Error al guardar la página"</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Guardar para leer sin conexión"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Se produjo un error al guardar para leer sin conexión."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> Marcadores"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Vaciar carpeta"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Abrir"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Establecer el motor de búsqueda"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Seleccionar un motor de búsqueda"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Configurado en"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Página actual"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Página en blanco"</string> - <string name="pref_use_default" msgid="192587563274735878">"Página predeterminada"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Página actual"</item> + <item msgid="4430498748295169195">"Página en blanco"</item> + <item msgid="5747608191946904074">"Página predeterminada"</item> + <item msgid="6092441301001006473">"Sitios más visitados"</item> + <item msgid="5021822752506507426">"Otro..."</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Ajuste automát. de pág."</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatea las páginas web para que se ajusten a la pantalla"</string> <string name="pref_general_title" msgid="1946872771219249323">"General"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Perfil guardado"</string> <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_title" msgid="1955613311837926540">"¿Configurar Autocompletar?"</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="disable_autofill" msgid="8305901059849400354">"Inhabilitar Autocompletar"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Enorme"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Tamaño de fuente mínimo"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> ptos."</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Tamaño del texto"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Obligar a habilitar el zoom"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Anular o no la solicitud de control del comportamiento del zoom de un sitio web"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Zoom predeterminado"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codificación de texto"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Accesibilidad"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Tamaño de fuente"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controles rápidos"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Desliza pulgar de borde izq. o der. para acceder a contr. ráp. y ocultar barras Aplicación y URL"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Página principal más visitada"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Tu página principal muestra tus páginas web más visitadas."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Usa Google Instant con Búsq. de Google para que los resultados aparezcan mientras tipeas (esto puede aumentar el uso de datos)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Pantalla completa"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Usa el modo de pantalla completa para ocultar la barra de estado."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Representación invertida"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Al marcar esta función, el navegador invierte los colores. Negro se convertirá en blanco y viceversa."</string> + <string name="pref_data_title" msgid="750316606686075162">"Gestión de ancho de banda"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Se están precargando los resultados de la búsqueda"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Permitir al navegador la precarga de resultados de búsqueda confiables en el fondo"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema de conectividad de datos"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problema con el archivo"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirmar"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Borrar historial"</string> <string name="browser_history" msgid="1038987118290272525">"Páginas visitadas recientemente"</string> <string name="empty_history" msgid="8738772352308207274">"El historial del navegador está vacío."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Página principal"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Agregar marcador…"</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Agregar"</string> <string name="search_hint" msgid="4647356319916631820">"Buscar o escribir URL"</string> @@ -372,9 +380,9 @@ <string name="rlz_access_point" msgid="7165847807377650632">"Y1"</string> <string name="account_chooser_dialog_title" msgid="3314204833188808194">"Seleccionar la cuenta"</string> <string name="import_bookmarks_dialog_title" msgid="3325557652271172128">"Sincronización con cta de Google"</string> - <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Los favoritos de este dispositivo aún no están asociados a una cuenta de Google. Guarda estos favoritos agregándolos a una cuenta. Si no deseas sincronizarlos, elimínalos."</string> - <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Agrega los favoritos que actualmente tienes en este dispositivo y comienza a sincronizarlos con una cuenta de Google."</string> - <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Elimina los favoritos que actualmente tienes en este dispositivo y comienza a sincronizarlos con una cuenta de Google."</string> + <string name="import_bookmarks_dialog_description" msgid="1942452375564381488">"Los favoritos de este dispositivo aún no están asociados a una Cuenta de Google. Guarda estos favoritos agregándolos a una cuenta. Si no deseas sincronizarlos, elimínalos."</string> + <string name="import_bookmarks_dialog_select_add_account" msgid="3102882579089291099">"Agrega los favoritos que actualmente tienes en este dispositivo y comienza a sincronizarlos con una Cuenta de Google."</string> + <string name="import_bookmarks_dialog_delete_select_account" msgid="5192284761080626386">"Elimina los favoritos que actualmente tienes en este dispositivo y comienza a sincronizarlos con una Cuenta de Google."</string> <string name="import_bookmarks_dialog_confirm_delete" msgid="8854001080444749211">"Elimina los favoritos que actualmente tienes en este dispositivo y comienza a sincronizar favoritos con <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string> <string name="import_bookmarks_dialog_confirm_add" msgid="5433677293195372675">"Agrega los favoritos que actualmente tienes en este dispositivo y comienza a sincronizar favoritos con <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>."</string> <string name="import_bookmarks_dialog_remove" msgid="5984607822851800902">"Eliminar favoritos"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Compartir"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"No hay más pestañas disponibles."</string> <string name="instant_search_label" msgid="8769284297650716935">"Google con Instant (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"¿Quieres restaurar las ventanas?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Parece que se ha producido un fallo en el navegador. ¿Quieres restaurar las ventanas de la última sesión?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Sí"</string> - <string name="recover_no" msgid="3121030267940592611">"No"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Vista previa:"</string> + <string name="preview" msgid="6450823514561689038">"Vista previa"</string> <string name="local_bookmarks" msgid="533816851415228520">"Locales"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Versión para teléfonos celulares"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Versión para equipos de escritorio"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Precargar resultados"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"No hay páginas guardadas."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Eliminar página guardada"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-es-sw600dp/strings.xml b/res/values-es-sw600dp/strings.xml index 3e4046e..61da6c0 100644 --- a/res/values-es-sw600dp/strings.xml +++ b/res/values-es-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Abrir todo en pestañas nuevas"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Abrir nuevas pestañas detrás de la actual"</string> <string name="recover_title" msgid="1558775426269800998">"¿Restaurar pestañas?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Parece que se ha producido un error en el navegador. ¿Quieres restaurar las pestañas de la última sesión?"</string> + <string name="recover_prompt" msgid="377456662058488205">"¿Quieres restaurar las pestañas del navegador abiertas durante la última sesión?"</string> </resources> diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 3b4e9a0..0f21120 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Las subidas de archivos están inhabilitadas."</string> <string name="new_tab" msgid="4505722538297295141">"Nueva ventana"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Nueva ventana de incógnito"</string> - <string name="active_tabs" msgid="3050623868203544623">"Ventanas"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Marcadores"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Más visitados"</string> <string name="tab_history" msgid="1979267558744613746">"Historial"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Páginas guardadas"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Añadido a marcadores"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Eliminado de marcadores"</string> <string name="sign_in_to" msgid="5939425800148759165">"Acceder a <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"El nombre del sitio no coincide con el del certificado."</string> <string name="ssl_expired" msgid="5739349389499575559">"Este certificado ha caducado."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Este certificado aún no es válido."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Deteniendo..."</string> <string name="stop" msgid="5687251076030630074">"Detener"</string> <string name="reload" msgid="8585220783228408062">"Actualizar"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Descargas"</string> <string name="copy_page_url" msgid="7635062169011319208">"Copiar URL de página"</string> <string name="share_page" msgid="593756995297268343">"Compartir página"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Bloquear pestaña"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Guardar página"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Página guardada"</string> - <string name="webarchive_failed" msgid="19950914584285713">"Error al guardar la página"</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Guardar para leer sin conexión"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Error al guardar para leer sin conexión"</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> marcadores"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Carpeta vacía"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Abrir"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Establecer motor de búsqueda"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Seleccionar un motor de búsqueda"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Establecer como…"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Página actual"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Página en blanco"</string> - <string name="pref_use_default" msgid="192587563274735878">"Página predeterminada"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"Ajustar páginas automát."</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Configurar las páginas web para ajustarlas a la pantalla"</string> <string name="pref_general_title" msgid="1946872771219249323">"General"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Perfil guardado"</string> <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_title" msgid="1955613311837926540">"¿Configurar autocompletar?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"El navegador puede completar de forma automática formularios web como este. ¿Te gustaría configurar tu perfil?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"La función Autocompletar se puede configurar a través de los ajustes del navegador."</string> <string name="disable_autofill" msgid="8305901059849400354">"Inhabilitar autocompletar"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"Enorme"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Tamaño mínimo de fuente"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> ptos"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Zoom"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Forzar habilitación de zoom"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"¿Anular control del zoom?"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Zoom predeterminado"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codificación de texto"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Accesibilidad"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Tamaño de fuente"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controles rápidos"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Desliza el pulgar para acceder a los controles rápidos y ocultar las barras."</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Página principal más visitada"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"En la página principal se muestran las páginas web más visitadas."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Con Google Instant, aparecerán resultados de búsqueda de Google a medida que escribas (puede aumentar el uso de datos)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Pantalla completa"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Utiliza el modo de pantalla completa para ocultar la barra de estado."</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"Gestión de ancho de banda"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Carga previa de resultados de búsqueda"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Permitir que el navegador cargue resultados en segundo plano"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema de conectividad de datos"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problema con archivo"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"OK"</string> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"Borrar historial"</string> <string name="browser_history" msgid="1038987118290272525">"Páginas visitadas recientemente"</string> <string name="empty_history" msgid="8738772352308207274">"El historial del navegador está vacío."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Inicio"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Añadir marcador…"</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Añadir"</string> <string name="search_hint" msgid="4647356319916631820">"Busca o escribe una URL."</string> @@ -381,18 +385,59 @@ <string name="import_bookmarks_wizard_next" msgid="7578143961884352676">"Siguiente"</string> <string name="import_bookmarks_wizard_previous" msgid="8551440353688257031">"Anterior"</string> <string name="import_bookmarks_wizard_cancel" msgid="4936061122806506634">"Cancelar"</string> - <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Listo"</string> + <string name="import_bookmarks_wizard_done" msgid="1446247092194489191">"Ok"</string> <string name="import_bookmarks_dialog_add" msgid="7552306756868669353">"Añadir marcadores a la cuenta de Google"</string> <string name="import_bookmarks_dialog_import" msgid="6933613853573899218">"Añadir tus marcadores de Android a marcadores de <xliff:g id="GOOGLE_ACCOUNT">%s</xliff:g>"</string> <string name="menu_share_url" msgid="5851814357333739700">"Compartir"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"No hay más pestañas disponibles."</string> <string name="instant_search_label" msgid="8769284297650716935">"Google con Instant (experimental)"</string> - <string name="recover_title" msgid="8095611702406163360">"¿Quieres restaurar las ventanas?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Parece que se ha producido un error en el navegador. ¿Quieres restaurar las ventanas de la última sesión?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Sí"</string> - <string name="recover_no" msgid="3121030267940592611">"No"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Vista previa:"</string> + <string name="preview" msgid="6450823514561689038">"Vista previa"</string> <string name="local_bookmarks" msgid="533816851415228520">"Locales"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Móvil"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Ordenador"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Precargar resultados"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-fa-sw600dp/strings.xml b/res/values-fa-sw600dp/strings.xml index 489ba2e..5e63f27 100644 --- a/res/values-fa-sw600dp/strings.xml +++ b/res/values-fa-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"باز کردن همه در برگه های جدید"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"باز کردن برگه های جدید پشت برگه فعلی"</string> <string name="recover_title" msgid="1558775426269800998">"برگه ها بازیابی شوند؟"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"به نظر می رسد مرورگر خراب شده است. آیا می خواهید برگه ها را از آخرین بازدید خود بازیابی کنید؟"</string> + <string name="recover_prompt" msgid="377456662058488205">"آیا می خواهید برگه های مرورگر شما از آخرین بار بازنشانی شود؟"</string> </resources> diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 0fdf327..003903f 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"آپلودهای فایل غیر فعال هستند."</string> <string name="new_tab" msgid="4505722538297295141">"پنجره جدید"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"پنجره ناشناخته جدید"</string> - <string name="active_tabs" msgid="3050623868203544623">"پنجره ها"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"نشانک ها"</string> <string name="tab_most_visited" msgid="1077402532455000703">"بیشتر بازدید شده"</string> <string name="tab_history" msgid="1979267558744613746">"سابقه"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"صفحات ذخیره شده"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"به نشانک ها اضافه شد"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"از نشانک ها حذف شد"</string> <string name="sign_in_to" msgid="5939425800148759165">"ورود به سیستم <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,11 +47,17 @@ <string name="ssl_mismatch" msgid="558688832420069896">"نام سایت با نام موجود در گواهی مطابقت ندارد."</string> <string name="ssl_expired" msgid="5739349389499575559">"این گواهی منقضی شده است."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"این گواهی هنوز معتبر نیست."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"در حال توقف..."</string> <string name="stop" msgid="5687251076030630074">"توقف"</string> <string name="reload" msgid="8585220783228408062">"تازه کردن"</string> <string name="back" msgid="8414603107175713668">"برگشت"</string> - <string name="forward" msgid="4288210890526641577">"هدایت"</string> + <string name="forward" msgid="4288210890526641577">"باز ارسال"</string> <string name="save" msgid="5922311934992468496">"تأیید"</string> <string name="do_not_save" msgid="6777633870113477714">"لغو"</string> <string name="location" msgid="3411848697912600125">"آدرس"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"دانلودها"</string> <string name="copy_page_url" msgid="7635062169011319208">"کپی url صفحه"</string> <string name="share_page" msgid="593756995297268343">"اشتراک گذاری صفحه"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"ثابت کردن برگه"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"ذخیره صفحه"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"صفحه ذخیره شد."</string> - <string name="webarchive_failed" msgid="19950914584285713">"صفحه ذخیره نشد."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"ذخیره برای مطالعه در حالت آفلاین"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"ذخیره برای مطالعه بصورت آفلاین انجام نشد."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> نشانک"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"پوشه خالی"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"باز کردن"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"تنظیم موتور جستجو"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"انتخاب یک موتور جستجو"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"تنظیم به..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"صفحه فعلی"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"صفحه خالی"</string> - <string name="pref_use_default" msgid="192587563274735878">"صفحه پیش فرض"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"تنظیم خودکار صفحات"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"قالب صفحات وب متناسب با صفحه"</string> <string name="pref_general_title" msgid="1946872771219249323">"عمومی"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"نمایه ذخیره شد"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"نمایه حذف شد"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"حذف نمایه"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"تکمیل خودکار تنظیم شود؟"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"مرورگر می تواند بصورت خودکار فرم های وب مانند این یکی را پر کند. دوست دارید نمایه خود را تنظیم کنید؟"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"تکمیل خودکار را همیشه می توانید از طریق تنظیمات مرورگر پیکربندی کنید."</string> <string name="disable_autofill" msgid="8305901059849400354">"غیرفعال کردن تکمیل خودکار"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"بسیار بزرگ"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"حداقل اندازه قلم"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>PT"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"بزرگنمایی متن"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"فعال کردن اجباری بزرگنمایی"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"لغو یا عدم لغو درخواست وب سایت برای کنترل رفتار بزرگنمایی"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"بزرگنمایی پیش فرض"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"رمزگذاری متن"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"قابلیت دسترسی"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"اندازه قلم"</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_most_visited_homepage" msgid="7597766876952506909">"صفحه اصلی بیشتر بازدید شده"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"صفحات وب بیشتر بازدید شده شما در صفحه اصلی نشان داده می شود."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"هنگام استفاده از جستجوی Google، برای نمایش نتایج در حین تایپ از Google Instant استفاده کنید (ممکن است مصرف داده بالا برود)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"تمام صفحه"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"استفاده از حالت تمام صفحه برای مخفی کردن نوار وضعیت."</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"مدیریت پهنای باند"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"پیش بارگیری نتیجه جستجو"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"به مرورگر اجازه می دهد نتایجی را که در آنها اطمینان بالایی وجود دارد از پیش در پس زمینه بارگیری کند"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"مشکل اتصال داده"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"مشکل در فایل"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"تأیید"</string> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"پاک کردن سابقه"</string> <string name="browser_history" msgid="1038987118290272525">"صفحات بازدید شده اخیر"</string> <string name="empty_history" msgid="8738772352308207274">"سابقه مرورگر خالی است."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"صفحه اصلی"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"افزودن نشانک..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"افزودن"</string> <string name="search_hint" msgid="4647356319916631820">"جستجو یا تایپ URL"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"اشتراک گذاری"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"برگه بیشتری در دسترس نیست"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google با Instant (ویژگی های آزمایشی)"</string> - <string name="recover_title" msgid="8095611702406163360">"پنجره ها بازیابی شوند؟"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"به نظر می رسد مرورگر خراب شده است. آیا می خواهید پنجره های آخرین بازدید خود را بازیابی کنید؟"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"بله"</string> - <string name="recover_no" msgid="3121030267940592611">"خیر"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"پیش نمایش:"</string> + <string name="preview" msgid="6450823514561689038">"پیش نمایش"</string> <string name="local_bookmarks" msgid="533816851415228520">"محلی"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"تلفن همراه"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"دسکتاپ"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"پیش بارگیری نتایج"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-fi-sw600dp/strings.xml b/res/values-fi-sw600dp/strings.xml index e4e509a..5b6a3d9 100644 --- a/res/values-fi-sw600dp/strings.xml +++ b/res/values-fi-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Avaa kaikki uusiin välilehtiin"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Avaa uudet välilehdet nykyisen taakse"</string> <string name="recover_title" msgid="1558775426269800998">"Palautetaanko välilehdet?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Selain vaikuttaa kaatuneen. Haluatko palauttaa viime kerralla auki olleet välilehdet?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Haluatko palauttaa viime kerralla auki olleet välilehdet?"</string> </resources> diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 9a2eeb9..386aec6 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Tiedostojen lähettäminen ei ole käytössä."</string> <string name="new_tab" msgid="4505722538297295141">"Uusi ikkuna"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Uusi incognito-ikkuna"</string> - <string name="active_tabs" msgid="3050623868203544623">"Windows"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Kirjanmerkit"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Useimmin avatut"</string> <string name="tab_history" msgid="1979267558744613746">"Historia"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Tallennetut sivut"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Lisätty kirjanmerkkeihin"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Poistettu kirjanmerkeistä"</string> <string name="sign_in_to" msgid="5939425800148759165">"Kirjaudu sisään osoitteeseen <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Sivuston nimi ei vastaa varmenteessa olevaa nimeä."</string> <string name="ssl_expired" msgid="5739349389499575559">"Varmenne ei ole enää voimassa."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Varmenne ei ole vielä voimassa."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Lopetetaan…"</string> <string name="stop" msgid="5687251076030630074">"Lopeta"</string> <string name="reload" msgid="8585220783228408062">"Päivitä"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Lataukset"</string> <string name="copy_page_url" msgid="7635062169011319208">"Kopioi sivun URL-osoite"</string> <string name="share_page" msgid="593756995297268343">"Jaa sivu"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Kuvakaappaus välilehdestä"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Tallenna sivu"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Sivu tallennettu."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Sivun tallennus epäonnistui."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Tallenna offline-tilassa luettavaksi"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Tallennus offline-tilassa luettavaksi epäonnistui"</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> kirjanmerkkiä"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Tyhjä kansio"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Avaa"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Aseta hakukone"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Valitse hakukone"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Aseta etusivuksi..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Nykyinen sivu"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Tyhjä sivu"</string> - <string name="pref_use_default" msgid="192587563274735878">"Oletussivu"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Nykyinen sivu"</item> + <item msgid="4430498748295169195">"Tyhjä sivu"</item> + <item msgid="5747608191946904074">"Oletussivu"</item> + <item msgid="6092441301001006473">"Käydyimmät sivustot"</item> + <item msgid="5021822752506507426">"Muu..."</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Automaattinen sovitus"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Sovita verkkosivut näytölle"</string> <string name="pref_general_title" msgid="1946872771219249323">"Yleinen"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profiili tallennettu"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profiili poistettu."</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Poista profiili"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Määritä autom. täytön asetukset?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Selain voi täydentää automaattisesti tämän kaltaisia verkkolomakkeita. Haluatko luoda profiilin?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automaattisen täytön asetuksia voi aina muuttaa selainasetuksista."</string> <string name="disable_autofill" msgid="8305901059849400354">"Poista automaattinen täyttö käytöstä"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Hyvin suuri"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Kirjasimen vähimmäiskoko"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Tekstin koko"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Ota skaalaus käyttöön"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Ohitetaanko sivuston pyyntö hallinnoida skaalausta"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Oletuszoomaus"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Tekstin koodaus"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Esteettömyys"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Kirjasimen koko"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Pikasäätimet"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Saat pikasäätimet käyttöösi ja voit piilottaa Sovellus- ja URL-palkit liu\'uttamalla vasemmalta tai oikealta reunalta"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Eniten käytetty etusivu"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Etusivulla näytetään eniten käyttämäsi verkkosivut."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Käyttämällä Google Instantia hakiessasi näet tuloksia jo hakua kirjoittaessasi (tämä voi kasvattaa tiedonsiirron määrää)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Koko ruutu"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Piilota tilapalkki käyttämällä koko ruudun tilaa."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Käänteinen hahmonnus"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Valitsemalla tämän asetuksen selain kääntää värit, jolloin mustasta tulee valkoista ja päinvastoin."</string> + <string name="pref_data_title" msgid="750316606686075162">"Kaistanleveyden hallinta"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Hakutulosta esiladataan"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Anna selaimen esiladata luotettavat hakutulokset taustalla"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Datayhteysongelma"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Tiedosto-ongelma"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Vahvista"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Tyhjennä historia"</string> <string name="browser_history" msgid="1038987118290272525">"Äskettäin avatut sivut"</string> <string name="empty_history" msgid="8738772352308207274">"Selainhistoria on tyhjä."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Etusivu"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Lisää kirjanmerkki…"</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Lisää"</string> <string name="search_hint" msgid="4647356319916631820">"Kirjoita hakusanoja tai URL-osoite"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Jaa"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Välilehtiä ei ole enempää saatavilla"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google ja Instant (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Palautetaanko ikkunat?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Selain vaikuttaa kaatuneen. Haluatko palauttaa viime kerralla auki olleet ikkunat?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Kyllä"</string> - <string name="recover_no" msgid="3121030267940592611">"En"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Esikatselu:"</string> + <string name="preview" msgid="6450823514561689038">"Esikatselu"</string> <string name="local_bookmarks" msgid="533816851415228520">"Paikalliset kirjanmerkit"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobiili"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Tietokone"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Esilatauksen tulokset"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Ei tallennettuja sivuja."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Poista tallennettu sivu"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-fr-sw600dp/strings.xml b/res/values-fr-sw600dp/strings.xml index baafe7b..7136098 100644 --- a/res/values-fr-sw600dp/strings.xml +++ b/res/values-fr-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Toujours ouvrir dans un nouvel onglet"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Ouvrir nouveaux onglets derrière onglet actuel"</string> <string name="recover_title" msgid="1558775426269800998">"Restaurer les onglets ?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Le navigateur semble bloqué. Voulez-vous restaurer les onglets ouverts lors de votre dernière connexion ?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Souhaitez-vous restaurer les onglets ouverts dans le navigateur lors de votre dernière connexion ?"</string> </resources> diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index d7665f7..eb00c6e 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Les transferts de fichiers sont désactivés."</string> <string name="new_tab" msgid="4505722538297295141">"Nouvelle fenêtre"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Fenêtre de navigation privée"</string> - <string name="active_tabs" msgid="3050623868203544623">"Fenêtres"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Favoris"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Les + visités"</string> <string name="tab_history" msgid="1979267558744613746">"Historique"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Pages enregistrées"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Ajouté aux favoris"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Supprimé des favoris"</string> <string name="sign_in_to" msgid="5939425800148759165">"Connectez-vous à <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Le nom du site ne correspond pas au nom indiqué dans le certificat."</string> <string name="ssl_expired" msgid="5739349389499575559">"Le certificat a expiré."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Ce certificat n\'est pas encore valide."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Arrêt..."</string> <string name="stop" msgid="5687251076030630074">"Interrompre"</string> <string name="reload" msgid="8585220783228408062">"Actualiser"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Téléchargements"</string> <string name="copy_page_url" msgid="7635062169011319208">"Copier l\'URL de la page"</string> <string name="share_page" msgid="593756995297268343">"Partager la page"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Figer l\'onglet"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Enregistrer la page"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"La page a été enregistrée."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Échec de l\'enregistrement de la page"</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Enregistrer pour lire hors connexion"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Échec enregistrement pour lecture hors connexion."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> favori(s)"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Dossier vide"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Ouvrir"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Définir le moteur de recherche"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Sélectionner un moteur de recherche"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Définir comme..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Page en cours"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Page vierge"</string> - <string name="pref_use_default" msgid="192587563274735878">"Page par défaut"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"Ajustement auto des pages"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Configurer les pages Web pour qu\'elles s\'ajustent à l\'écran"</string> <string name="pref_general_title" msgid="1946872771219249323">"Général"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil enregistré"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil supprimé"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Supprimer le profil"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Configurer saisie automatique ?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Le navigateur peut remplir automatiquement des formulaires Web tels que celui-ci. Voulez-vous configurer votre profil ?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Notez que vous pouvez configurer la saisie automatique dans les paramètres du navigateur."</string> <string name="disable_autofill" msgid="8305901059849400354">"Désactiver la saisie automatique"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"Très grande"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Taille de police minimale"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Zoom sur le texte"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Forcer l\'activation du zoom"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Ignorer ou non la demande de contrôle du zoom par un site Web"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Zoom par défaut"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codage du texte"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Accessibilité"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Taille de police"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Commandes rapides"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Accès commandes rapides/masquer barres applications et URL : faire glisser vers droite/gauche"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Page d\'accueil Les plus visitées"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Votre page d\'accueil affiche les pages Web les plus visitées."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Recherche instantanée Google"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Affichez plus de résultats lors de la saisie avec la recherche instantanée Google. Peut utiliser plus de données."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Plein écran"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Utiliser le mode plein écran pour masquer la barre d\'état"</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"Gestion bande passante"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Préchargement résultats de recherche…"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Autoriser le préchargement des résultats fiables de recherche en arrière-plan"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problème de connectivité des données"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problème de fichier"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirmer"</string> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"Effacer l\'historique"</string> <string name="browser_history" msgid="1038987118290272525">"Pages récemment consultées"</string> <string name="empty_history" msgid="8738772352308207274">"L\'historique du navigateur est vide."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Accueil"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Ajouter aux favoris..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Ajouter"</string> <string name="search_hint" msgid="4647356319916631820">"Rech. ou entrer l\'URL"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"Partager"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Plus aucun onglet n\'est disponible."</string> <string name="instant_search_label" msgid="8769284297650716935">"Google avec Recherche instantanée (Google Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Restaurer les fenêtres ?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Le navigateur semble bloqué. Souhaitez-vous restaurer les fenêtres ouvertes lors de votre dernière connexion ?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Oui"</string> - <string name="recover_no" msgid="3121030267940592611">"Non"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Aperçu :"</string> + <string name="preview" msgid="6450823514561689038">"Aperçu"</string> <string name="local_bookmarks" msgid="533816851415228520">"Favoris locaux"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobile"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Ordinateur"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Précharger les résultats"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-hr-sw600dp/strings.xml b/res/values-hr-sw600dp/strings.xml index 528750a..2857ac7 100644 --- a/res/values-hr-sw600dp/strings.xml +++ b/res/values-hr-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Otvori sve u novim karticama"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Otvori nove kartice iza trenutačne"</string> <string name="recover_title" msgid="1558775426269800998">"Vratiti kartice?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Izgleda da se preglednik srušio. Želite li vratiti kartice od prethodnog puta?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Želite li vratiti kartice preglednika od prethodnog puta?"</string> </resources> diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index bf270c0..e098a57 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Prijenosi datoteka onemogućeni su."</string> <string name="new_tab" msgid="4505722538297295141">"Novi prozor"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Novi prozor anonimno"</string> - <string name="active_tabs" msgid="3050623868203544623">"Windows"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Oznake"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Najposjećenije"</string> <string name="tab_history" msgid="1979267558744613746">"Povijest"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Spremljene stranice"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Dodano u oznake"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Uklonjeno iz oznaka"</string> <string name="sign_in_to" msgid="5939425800148759165">"Prijavite se na <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Naziv web-lokacije ne podudara se s nazivom na certifikatu."</string> <string name="ssl_expired" msgid="5739349389499575559">"Ovaj je certifikat istekao."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Ovaj certifikat još nije važeći."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Zaustavljanje..."</string> <string name="stop" msgid="5687251076030630074">"Zaustavi"</string> <string name="reload" msgid="8585220783228408062">"Osvježi"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Preuzimanja"</string> <string name="copy_page_url" msgid="7635062169011319208">"Kopiraj url stranice"</string> <string name="share_page" msgid="593756995297268343">"Dijeli stranicu"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Zamrzni karticu"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Spremi stranicu"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Stranica je spremljena."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Spremanje stranice nije uspjelo."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Spremi za izvanmrežno čitanje"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Neuspjelo spremanje za izvanmrežno čitanje."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Br. oznaka: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Prazna mapa"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Otvori"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Postavljanje tražilice"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Odabir tražilice"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Postavi na…"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Trenutačna stranica"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Prazna stranica"</string> - <string name="pref_use_default" msgid="192587563274735878">"Zadana stranica"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"Automatsko prilagođavanje stranicama"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatirajte web-stranice kako bi odgovarale zaslonu"</string> <string name="pref_general_title" msgid="1946872771219249323">"Općenito"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil spremljen"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil izbrisan"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Izbriši profil"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Postaviti automatsko ispunjavanje?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Preglednik može automatski popunjavati web-obrasce poput ovog. Želite li postaviti svoj profil?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automatsko popunjavanje može se bilo kada konfigurirati putem Postavki preglednika."</string> <string name="disable_autofill" msgid="8305901059849400354">"Onemogući automatsko popunjavanje"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"Ogroman"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Najmanja veličina fonta"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Zumiranje teksta"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Prisilno omogući zumiranje"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Poništiti zahtjev web-lokacije za kontrolu ponašanja zumiranja"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Zadano povećanje/smanjenje"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Kodiranje teksta"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Dostupnost"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Veličina fonta"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Brze kontrole"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Za pristup brzim kontrolama i skrivanje Aplikacija i URL-ova prijeđite palcem"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Najposjećenija početna stranica"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Vaša početna stranica prikazuje vaše najposjećenije web-stranice."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Kada u Google Pretraživanju upotrebljavate Google Instant, rezultati se prikazuju dok tipkate (promet podataka može porasti)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Puni zaslon"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Upotrijebite način punog zaslona da biste sakrili traku stanja."</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"Upravljanje širinom pojasa"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Prethodno učitavanje rezultata pretraživanja"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Dopustite preglednik da prethodno učita rezultate pretraživanja visoke pouzdanosti u pozadini"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problem s podatkovnom povezivošću"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem s datotekom"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Potvrdi"</string> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"Izbriši povijest"</string> <string name="browser_history" msgid="1038987118290272525">"Nedavno posjećene stranice"</string> <string name="empty_history" msgid="8738772352308207274">"Povijest preglednika prazna je."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Početna stranica"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Dodavanje oznake..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Dodaj"</string> <string name="search_hint" msgid="4647356319916631820">"Pretraži ili upiši URL"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"Dijeli"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Nema više rasp. kartica"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google sa značajkom Instant (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Vratiti prozore?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Izgleda da je preglednik pao. Želite li vratiti prozore od prethodnog puta?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Da"</string> - <string name="recover_no" msgid="3121030267940592611">"Ne"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Pregled:"</string> + <string name="preview" msgid="6450823514561689038">"Pregled"</string> <string name="local_bookmarks" msgid="533816851415228520">"Lokalno"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobilni uređaj"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Stolno računalo"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Prethodno učitavanje rezultata"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-hu-sw600dp/strings.xml b/res/values-hu-sw600dp/strings.xml index e1e76cf..f3b0321 100644 --- a/res/values-hu-sw600dp/strings.xml +++ b/res/values-hu-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Összes megnyitása új lapon"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Új lapok megnyitása a jelenlegi mögött"</string> <string name="recover_title" msgid="1558775426269800998">"Visszaállítja a lapokat?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Úgy tűnik, böngészője összeomlott. Szeretné visszaállítani a korábbi lapokat?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Szeretné visszaállítani a korábbi böngészlapokat?"</string> </resources> diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index d24d713..924f823 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"A fájlok feltöltése le van tiltva."</string> <string name="new_tab" msgid="4505722538297295141">"Új ablak"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Új inkognitóablak"</string> - <string name="active_tabs" msgid="3050623868203544623">"Ablakok"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Könyvjelzők"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Leggyakrabban felkeresett"</string> <string name="tab_history" msgid="1979267558744613746">"Előzmények"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Mentett oldalak"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Hozzáadva a könyvjelzőkhöz"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Eltávolítva a könyvjelzők közül"</string> <string name="sign_in_to" msgid="5939425800148759165">"Jelentkezzen be ide: <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"A webhely neve nem egyezik a tanúsítványon lévő névvel."</string> <string name="ssl_expired" msgid="5739349389499575559">"A tanúsítvány lejárt."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"A tanúsítvány még nem érvényes."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Leállítás..."</string> <string name="stop" msgid="5687251076030630074">"Leállítás"</string> <string name="reload" msgid="8585220783228408062">"Frissítés"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Letöltések"</string> <string name="copy_page_url" msgid="7635062169011319208">"Az oldal URL-jének másolása"</string> <string name="share_page" msgid="593756995297268343">"Oldal megosztása"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Lap rögzítése"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Oldal mentése"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Oldal mentve."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Nem sikerült menteni az oldalt."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Mentés offline olvasáshoz"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Nem sikerült menteni offline olvasáshoz."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> könyvjelző"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Üres mappa"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Megnyitás"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Keresőmotor beállítása"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Válasszon ki egy keresőmotort"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Beállítás a következőre:"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Jelenlegi oldal"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Üres oldal"</string> - <string name="pref_use_default" msgid="192587563274735878">"Alapértelmezett oldal"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Jelenlegi oldal"</item> + <item msgid="4430498748295169195">"Üres oldal"</item> + <item msgid="5747608191946904074">"Alapértelmezett oldal"</item> + <item msgid="6092441301001006473">"Legtöbbet látogatott webhelyek"</item> + <item msgid="5021822752506507426">"Egyéb..."</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Oldalak automatikus igazítása"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"A képernyőhöz igazítja a weboldalakat"</string> <string name="pref_general_title" msgid="1946872771219249323">"Általános"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"A profil elmentve"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"A profil törölve."</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Profil törlése"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Automatikus kitöltés beállítása?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"A böngésző automatikusan ki tudja tölteni az ilyen internetes űrlapokat. Beállítja a profilját?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Az Automatikus kitöltést bármikor konfigurálhatja a Böngésző beállításai között."</string> <string name="disable_autofill" msgid="8305901059849400354">"Automatikus kitöltés letiltása"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Óriási"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Minimális betűméret"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Szöveg nagyítása"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Nagyítás engedélyezése"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Webhely kezelheti-e a nagyítást"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Alapértelmezett nagyítás"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Szöveg kódolása"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Kisegítő lehetőségek"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Betűméret"</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_most_visited_homepage" msgid="7597766876952506909">"Leggyakrabban felkeresett kezdőlap"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Kezdőlapján a leggyakrabban felkeresett webhelyek jelennek meg."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"A Google-keresésnél használja a Google Instantot, és a találatok gépelés közben megjelennek (az adatforgalom nőhet)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Teljes képernyő"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Használja a teljes képernyős módot az állapotsor elrejtéséhez."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Inverz megjelenítés"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Ha bejelöli, a böngésző ellentétesen jeleníti meg a színeket. A fekete szín fehér lesz, és fordítva."</string> + <string name="pref_data_title" msgid="750316606686075162">"Sávszélesség kezelése"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Keresési találatok előtöltése"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"A biztonságos keresési találatokat előre betöltheti a böngésző a háttérben"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Adatkapcsolat-probléma"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Probléma van a fájllal"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Megerősítés"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Előzmények törlése"</string> <string name="browser_history" msgid="1038987118290272525">"A közelmúltban meglátogatott oldalak"</string> <string name="empty_history" msgid="8738772352308207274">"A böngészési előzmények listája üres."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Főoldal"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Könyvjelző hozzáadása..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Hozzáadás:"</string> <string name="search_hint" msgid="4647356319916631820">"Keressen vagy írjon be egy URL-t"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Megosztás"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Nem nyitható meg több lap"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google Instanttal (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Visszaállítja az ablakokat?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Úgy tűnik, hogy böngészője összeomlott. Szeretné visszaállítani a korábbi ablakokat?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Igen"</string> - <string name="recover_no" msgid="3121030267940592611">"Nem"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Előnézet:"</string> + <string name="preview" msgid="6450823514561689038">"Előnézet"</string> <string name="local_bookmarks" msgid="533816851415228520">"Helyi"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Asztali"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Találatok előtöltése"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Nincsenek mentett oldalak."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Mentett oldal törlése"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-in-sw600dp/strings.xml b/res/values-in-sw600dp/strings.xml index ef4982f..e7a7382 100644 --- a/res/values-in-sw600dp/strings.xml +++ b/res/values-in-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Buka semua di tab baru"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Buka tab baru di belakang tab ini"</string> <string name="recover_title" msgid="1558775426269800998">"Pulihkan tab?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Peramban tampaknya telah mogok. Inginkah Anda memulihkan tab-tab yang terakhir terbuka?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Pulihkan tab peramban yang terakhir kali terbuka?"</string> </resources> diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 68dc4e3..787a79c 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Pengunggahan berkas dinonaktifkan."</string> <string name="new_tab" msgid="4505722538297295141">"Jendela baru"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Jendela penyamaran baru"</string> - <string name="active_tabs" msgid="3050623868203544623">"Windows"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Bookmark"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Paling sering dikunjungi"</string> <string name="tab_history" msgid="1979267558744613746">"Riwayat"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Laman Tersimpan"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Ditambahkan ke bookmark"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Dihapus dari bookmark"</string> <string name="sign_in_to" msgid="5939425800148759165">"Masuk ke <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Nama situs tidak cocok dengan nama pada sertifikat."</string> <string name="ssl_expired" msgid="5739349389499575559">"Sertifikat ini telah kedaluwarsa."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Sertifikat ini belum valid."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Menghentikan"</string> <string name="stop" msgid="5687251076030630074">"Berhenti"</string> <string name="reload" msgid="8585220783228408062">"Segarkan"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Unduhan"</string> <string name="copy_page_url" msgid="7635062169011319208">"Salin URL laman"</string> <string name="share_page" msgid="593756995297268343">"Bagikan lama"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Bekukan tab"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Simpan laman"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Laman tersimpan."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Gagal menyimpan laman."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Simpan untuk dibaca secara luring"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Gagal menyimpan untuk dibaca secara luring."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> bookmark"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Map kosong"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Buka"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Setel mesin telusur"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Pilih mesin telusur"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Setel ke..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Laman ini"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Laman kosong"</string> - <string name="pref_use_default" msgid="192587563274735878">"Laman bawaan"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Laman ini"</item> + <item msgid="4430498748295169195">"Laman kosong"</item> + <item msgid="5747608191946904074">"Laman bawaan"</item> + <item msgid="6092441301001006473">"Situs yang paling sering dikunjungi"</item> + <item msgid="5021822752506507426">"Lainnya..."</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Sesuaikan dengan laman secara otomatis"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Format laman web agar sesuai dengan layar"</string> <string name="pref_general_title" msgid="1946872771219249323">"Umum"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil disimpan"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil dihapus"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Hapus profil"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Siapkan isi-otomatis?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Peramban dapat melengkapi formulir web seperti ini. Apakah Anda ingin menyiapkan profil?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Isi-otomatis selalu dapat dikonfigurasi melalui Setelan Peramban."</string> <string name="disable_autofill" msgid="8305901059849400354">"Nonaktifkan isi-otomatis"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Sangat besar"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Ukuran fon minimal"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> pn"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Pembesaran/pengecilan teks"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Paksa aktifkan zum"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Apakah mengesampingkan atau tidak permintaan situs web untuk mengontrol perilaku zum"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Zoom bawaan"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Penyandiaksaraan teks"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Aksesibilitas"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Ukuran fon"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Kontrol cepat"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Gesek ibu jari dari tepi kiri atau kanan untuk mengakses kontrol cepat dan menyembunyikan bilah aplikasi dan URL"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Beranda paling sering disinggahi"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Beranda Anda menampilkan situs web yang paling sering disinggahi."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Sekejap"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Gunakan Google Sekejap di Google Penelusuran agar hasilnya tampil selagi mengetik (ini dapat menambah pemakaian data)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Layar penuh"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Gunakan modus layar penuh untuk menyembunyikan bilah status."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Penguraian Terbalik"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Memeriksa ini dapat menyebabkan peramban membalik warna. Warna hitam akan menjadi putih dan sebaliknya."</string> + <string name="pref_data_title" msgid="750316606686075162">"Pengelolaan Lebar Pita"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Pramuat hasil penelusuran"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Mengizinkan peramban melakukan pramuat hasil penelusuran pasti di latar belakang"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Masalah konektivitas data"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Masalah dengan berkas"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Konfirmasi"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Hapus riwayat"</string> <string name="browser_history" msgid="1038987118290272525">"Laman yang baru dikunjungi"</string> <string name="empty_history" msgid="8738772352308207274">"Riwayat peramban kosong."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Beranda"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Tambahkan bookmark..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Tambahkan"</string> <string name="search_hint" msgid="4647356319916631820">"Telusuri atau ketik URL"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Bagikan"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Tidak ada lagi tab yang tersedia"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google dengan Sekejap (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Pulihkan jendela?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Peramban tampaknya telah mogok. Inginkah Anda memulihkan jendela-jendela yang terakhir kali terbuka?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Ya"</string> - <string name="recover_no" msgid="3121030267940592611">"Tidak"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Pratinjau:"</string> + <string name="preview" msgid="6450823514561689038">"Pratinjau"</string> <string name="local_bookmarks" msgid="533816851415228520">"Lokal"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Seluler"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Desktop"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Lakukan pramuat hasil"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Tidak ada laman tersimpan."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Hapus halaman yang tersimpan"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-it-sw600dp/strings.xml b/res/values-it-sw600dp/strings.xml index 23d30fc..c12ea5b 100644 --- a/res/values-it-sw600dp/strings.xml +++ b/res/values-it-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Apri tutto in nuove schede"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Apri le nuove schede dietro la scheda corrente"</string> <string name="recover_title" msgid="1558775426269800998">"Ripristinare le schede?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Sembra che si sia verificato un arresto anomalo del browser. Ripristinare le schede che erano aperte durante l\'ultima sessione?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Ripristinare le schede del browser che erano aperte durante l\'ultima sessione?"</string> </resources> diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 5a4d578..d3c00c1 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"I caricamenti di file sono disabilitati."</string> <string name="new_tab" msgid="4505722538297295141">"Nuova finestra"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Nuova finestra in incognito"</string> - <string name="active_tabs" msgid="3050623868203544623">"Finestre"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Segnalibri"</string> <string name="tab_most_visited" msgid="1077402532455000703">"I più visitati"</string> <string name="tab_history" msgid="1979267558744613746">"Cronologia"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Pagine salvate"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Aggiunto a segnalibri"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Rimosso da segnalibri"</string> <string name="sign_in_to" msgid="5939425800148759165">"Accedi a <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Il nome del sito non corrisponde al nome nel certificato."</string> <string name="ssl_expired" msgid="5739349389499575559">"Il certificato è scaduto."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Questo certificato non è ancora valido."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Interruzione..."</string> <string name="stop" msgid="5687251076030630074">"Interrompi"</string> <string name="reload" msgid="8585220783228408062">"Aggiorna"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Download"</string> <string name="copy_page_url" msgid="7635062169011319208">"Copia URL della pagina"</string> <string name="share_page" msgid="593756995297268343">"Condividi pagina"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Blocca scheda"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Salva pagina"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Pagina salvata."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Impossibile salvare la pagina."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Salva per lettura offline"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Impossibile salvare per la lettura offline."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> segnalibri"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Cartella vuota"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Apri"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Imposta motore di ricerca"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Seleziona un motore di ricerca"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Imposta su..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Pagina corrente"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Pagina vuota"</string> - <string name="pref_use_default" msgid="192587563274735878">"Pagina predefinita"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Pagina corrente"</item> + <item msgid="4430498748295169195">"Pagina vuota"</item> + <item msgid="5747608191946904074">"Pagina predefinita"</item> + <item msgid="6092441301001006473">"Siti più visitati"</item> + <item msgid="5021822752506507426">"Altro..."</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Adatta autom. pagine"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Adatta le pagine web allo schermo"</string> <string name="pref_general_title" msgid="1946872771219249323">"Generali"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profilo salvato"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profilo eliminato"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Elimina profilo"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Impostare compilazione automatica?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Il browser può compilare automaticamente i moduli web come questo. Vuoi impostare il tuo profilo?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"È sempre possibile configurare la compilazione automatica tramite le impostazioni del browser."</string> <string name="disable_autofill" msgid="8305901059849400354">"Disattiva compilazione automatica"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Molto grande"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Dimensioni minime caratteri"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Zoom testo"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Attivazione forzata zoom"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Ignorare o meno la richiesta di un sito di controllare lo zoom"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Zoom predefinito"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codifica testo"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Accessibilità"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Dimensione carattere"</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_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_lab_fullscreen" msgid="8173609016657987973">"Schermo intero"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Usa la modalità a schermo intero per nascondere la barra di stato."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Rendering invertito"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Se selezioni questa opzione verranno invertiti i colori nel browser. Il nero diventerà bianco e viceversa."</string> + <string name="pref_data_title" msgid="750316606686075162">"Gestione larghezza di banda"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Precaricamento risultati di ricerca"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Consenti al browser di precaricare i risultati di ricerca affidabili in background"</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> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Cancella cronologia"</string> <string name="browser_history" msgid="1038987118290272525">"Pagine visitate di recente"</string> <string name="empty_history" msgid="8738772352308207274">"La cronologia del browser è vuota."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Home page"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Aggiungi segnalibro…"</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Aggiungi"</string> <string name="search_hint" msgid="4647356319916631820">"Cerca o digita un URL"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Condividi"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Nessun\'altra scheda disponibile"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google con Instant (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Ripristinare le finestre?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Sembra che si sia verificato un arresto anomalo del browser. Ripristinare le finestre che erano aperte durante l\'ultima sessione?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Sì"</string> - <string name="recover_no" msgid="3121030267940592611">"No"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Anteprima:"</string> + <string name="preview" msgid="6450823514561689038">"Anteprima"</string> <string name="local_bookmarks" msgid="533816851415228520">"Locali"</string> - <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobile"</string> + <string name="ua_switcher_mobile" msgid="5103260404792449606">"Cellulare"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Desktop"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Precaricamento risultati"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Non esistono pagine salvate."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Elimina pagina salvata"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-iw-sw600dp/strings.xml b/res/values-iw-sw600dp/strings.xml index 71f2b76..92c1e0b 100644 --- a/res/values-iw-sw600dp/strings.xml +++ b/res/values-iw-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"פתח הכל בכרטיסיות חדשות"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"פתח כרטיסיות חדשות מאחורי הכרטיסייה הנוכחית"</string> <string name="recover_title" msgid="1558775426269800998">"לשחזר כרטיסיות?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"נראה שהדפדפן קרס. האם ברצונך לשחזר את הכרטיסיות שלך מההפעלה הקודמת?"</string> + <string name="recover_prompt" msgid="377456662058488205">"האם ברצונך לשחזר את כרטיסיות הדפדפן שלך מההפעלה האחרונה?"</string> </resources> diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 3ab5441..eb0b618 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"העלאות הקובץ הושבתו."</string> <string name="new_tab" msgid="4505722538297295141">"חלון חדש"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"חלון חדש של גלישה בסתר"</string> - <string name="active_tabs" msgid="3050623868203544623">"חלונות"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"סימניות"</string> <string name="tab_most_visited" msgid="1077402532455000703">"אתרים שבהם אתה מבקר בתדירות הגבוהה ביותר"</string> <string name="tab_history" msgid="1979267558744613746">"היסטוריה"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"דפים שמורים"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"נוסף לסימניות"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"הוסר מסימניות"</string> <string name="sign_in_to" msgid="5939425800148759165">"היכנס אל <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"שם האתר לא תואם לשם באישור."</string> <string name="ssl_expired" msgid="5739349389499575559">"פג תוקפו של אישור זה."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"אישור זה אינו חוקי עדיין."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"נעצרת."</string> <string name="stop" msgid="5687251076030630074">"עצור"</string> <string name="reload" msgid="8585220783228408062">"רענן"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"הורדות"</string> <string name="copy_page_url" msgid="7635062169011319208">"העתק כתובת אתר של דף"</string> <string name="share_page" msgid="593756995297268343">"שתף דף"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"הקפא כרטיסייה"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"שמור דף"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"הדף נשמר."</string> - <string name="webarchive_failed" msgid="19950914584285713">"שמירת הדף נכשלה."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"שמור לקריאה במצב לא מקוון"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"השמירה לקריאה במצב לא מקוון נכשלה."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> סימניות"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"תיקיה ריקה"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"פתח"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"הגדר מנוע חיפוש"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"בחר מנוע חיפוש"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"הוגדר ל..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"דף נוכחי"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"דף ריק"</string> - <string name="pref_use_default" msgid="192587563274735878">"דף ברירת מחדל"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"התאם דפים באופן אוטומטי"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"עצב דפי אינטרנט כך שיתאימו למסך"</string> <string name="pref_general_title" msgid="1946872771219249323">"כללי"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"הפרופיל נשמר"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"הפרופיל נמחק"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"מחק את הפרופיל"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"להגדיר מילוי אוטומטי?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"הדפדפן יכול למלא טופסי אינטרנט כמו זה באופן אוטומטי. האם תרצה להגדיר את הפרופיל שלך?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"תוכל תמיד להגדיר את \'מילוי אוטומטי\' דרך \'הגדרות דפדפן\'."</string> <string name="disable_autofill" msgid="8305901059849400354">"השבת את \'מילוי אוטומטי\'"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"ענק"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"גודל גופן מינימלי"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"מרחק מהטקסט"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"אלץ הפעלת מרחק מתצוגה"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"האם לעקוף או לא לעקוף בקשה של אתר כדי לשלוט באופן הפעולה של מרחק מתצוגה"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"ברירת מחדל של מרחק מתצוגה"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"קידוד טקסט"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"נגישות"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"גודל גופן"</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_most_visited_homepage" msgid="7597766876952506909">"דף הבית שבו ביקרת בתדירות הגבוהה ביותר"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"דף הבית שלך מציג את דפי האינטרנט שבהם ביקרת בתדירות הגבוהה ביותר."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"השתמש ב-Google Instant כאשר אתה משתמש בחיפוש Google, כדי להציג תוצאות בעת ההקלדה (פעולה זו יכולה להגדיל שימוש בנתונים)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"מסך מלא"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"השתמש במצב מסך מלא כדי להסתיר את שורת המצב."</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"ניהול רוחב פס"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"טעינה מוקדמת של תוצאות חיפוש"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"אפשר לדפדפן לטעון מראש תוצאות חיפוש בעלות אמינות גבוהה ברקע"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"בעיה בקישוריות נתונים"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"בעיה בקובץ"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"אשר"</string> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"נקה היסטוריה"</string> <string name="browser_history" msgid="1038987118290272525">"דפים שביקרת בהם לאחרונה"</string> <string name="empty_history" msgid="8738772352308207274">"היסטוריית הדפדפן ריקה."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"דף הבית"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"הוסף סימניה..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"הוסף"</string> <string name="search_hint" msgid="4647356319916631820">"חפש או הקלד כתובת אתר"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"שתף"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"אין עוד כרטיסיות זמינות"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google עם Instant (Google Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"לשחזר חלונות?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"נראה שהדפדפן קרס. האם ברצונך לשחזר את החלונות שלך מההפעלה הקודמת?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"כן"</string> - <string name="recover_no" msgid="3121030267940592611">"לא"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"תצוגה מקדימה:"</string> + <string name="preview" msgid="6450823514561689038">"תצוגה מקדימה"</string> <string name="local_bookmarks" msgid="533816851415228520">"מקומי"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"נייד"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"שולחן עבודה"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"טעינה מוקדמת של תוצאות"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-ja-sw600dp/strings.xml b/res/values-ja-sw600dp/strings.xml index 36fc8a1..c5630cc 100644 --- a/res/values-ja-sw600dp/strings.xml +++ b/res/values-ja-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"すべて新しいタブで開く"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"現在のタブの後ろに新しいタブを開く"</string> <string name="recover_title" msgid="1558775426269800998">"タブを復元しますか?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"ブラウザはクラッシュしたようです。前回のタブを復元しますか?"</string> + <string name="recover_prompt" msgid="377456662058488205">"前回のブラウザのタブを復元しますか?"</string> </resources> diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 699257a..f68d609 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"ファイルのアップロードが無効になっています。"</string> <string name="new_tab" msgid="4505722538297295141">"新しいウィンドウ"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"新しいシークレットウインドウ"</string> - <string name="active_tabs" msgid="3050623868203544623">"ウィンドウ"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"ブックマーク"</string> <string name="tab_most_visited" msgid="1077402532455000703">"よく使用"</string> <string name="tab_history" msgid="1979267558744613746">"履歴"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"保存したページ"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"ブックマークに追加しました"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"ブックマークから削除しました"</string> <string name="sign_in_to" msgid="5939425800148759165">"<xliff:g id="HOSTNAME">%s1</xliff:g>に「<xliff:g id="REALM">%s2</xliff:g>」でログイン"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"サイト名と証明書上の名前が一致しません。"</string> <string name="ssl_expired" msgid="5739349389499575559">"この証明書は有効期限切れです。"</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"この証明書はまだ有効ではありません。"</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"停止中..."</string> <string name="stop" msgid="5687251076030630074">"停止"</string> <string name="reload" msgid="8585220783228408062">"再読み込み"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"ダウンロード履歴"</string> <string name="copy_page_url" msgid="7635062169011319208">"ページのURLをコピー"</string> <string name="share_page" msgid="593756995297268343">"ページを共有"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"タブをフリーズ"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"ページを保存"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"ページを保存しました。"</string> - <string name="webarchive_failed" msgid="19950914584285713">"ページを保存できませんでした。"</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"オフラインで読めるよう保存"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"オフラインで読むための保存に失敗しました"</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g>件のブックマーク"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"空のフォルダ"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"開く"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"検索エンジンの設定"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"検索エンジンを選択する"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"設定先..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"現在のページ"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"空白ページ"</string> - <string name="pref_use_default" msgid="192587563274735878">"デフォルトページ"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"現在のページ"</item> + <item msgid="4430498748295169195">"空白ページ"</item> + <item msgid="5747608191946904074">"デフォルトページ"</item> + <item msgid="6092441301001006473">"よくアクセスするサイト"</item> + <item msgid="5021822752506507426">"その他..."</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"ページの自動調整"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"画面に合わせてウェブページをフォーマットする"</string> <string name="pref_general_title" msgid="1946872771219249323">"全般"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"プロフィールが保存されました"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"プロフィールを削除しました"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"プロフィールを削除"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"自動入力のセットアップ"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"このようなウェブフォームにブラウザで自動入力できます。プロフィールを設定しますか?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"自動入力はいつでもブラウザの[設定]から設定できます。"</string> <string name="disable_autofill" msgid="8305901059849400354">"自動入力を無効にする"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"最大"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"最小フォントサイズ"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"テキストの倍率"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"拡大縮小設定の上書き"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"サイトの拡大縮小設定を上書き"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"デフォルトの倍率"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"テキストエンコード"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"ユーザー補助"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"フォントサイズ"</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_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_lab_fullscreen" msgid="8173609016657987973">"全画面"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"全画面モードを使用してステータスバーを非表示にする。"</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"反転レンダリング"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"これをオンにすると、ブラウザのカラーが反転します。黒は白に、白は黒になります。"</string> + <string name="pref_data_title" msgid="750316606686075162">"帯域幅の管理"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"検索結果のプリロード"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"ブラウザが信頼度の高い検索結果をバックグラウンドでプリロードできるようにします"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"データアクセスエラー"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"ファイルに問題があります"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"確認"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"履歴消去"</string> <string name="browser_history" msgid="1038987118290272525">"最近閲覧したページ"</string> <string name="empty_history" msgid="8738772352308207274">"ブラウザ履歴はありません。"</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"ホーム"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"現在のページをブックマーク"</string> <string name="add_bookmark_short" msgid="3783984330998103735">"追加"</string> <string name="search_hint" msgid="4647356319916631820">"検索またはURLを入力"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"共有"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"タブ数が上限に達しました"</string> <string name="instant_search_label" msgid="8769284297650716935">"Googleインスタント検索(Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"ウィンドウを復元しますか?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"ブラウザはクラッシュしたようです。前回のウィンドウを復元しますか?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"はい"</string> - <string name="recover_no" msgid="3121030267940592611">"いいえ"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"プレビュー:"</string> + <string name="preview" msgid="6450823514561689038">"プレビュー"</string> <string name="local_bookmarks" msgid="533816851415228520">"ローカル"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"モバイル"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"デスクトップ"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"結果のプリロード"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"保存されたページはありません。"</string> + <string name="remove_snapshot" msgid="1624447424544976849">"保存したページを削除"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-ko-sw600dp/strings.xml b/res/values-ko-sw600dp/strings.xml index 992782f..a8aa733 100644 --- a/res/values-ko-sw600dp/strings.xml +++ b/res/values-ko-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"새 탭에서 모두 열기"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"현재 탭 뒤에 새 탭 열기"</string> <string name="recover_title" msgid="1558775426269800998">"탭을 복원하시겠습니까?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"브라우저가 멈춘 것 같습니다. 마지막에 열려있던 탭을 복원하시겠습니까?"</string> + <string name="recover_prompt" msgid="377456662058488205">"이전 브라우저 탭을 복구하시겠습니까?"</string> </resources> diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 4824898..270ccb8 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"파일 업로드가 사용 중지되었습니다."</string> <string name="new_tab" msgid="4505722538297295141">"새 창"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"새 시크릿 창"</string> - <string name="active_tabs" msgid="3050623868203544623">"창"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"북마크"</string> <string name="tab_most_visited" msgid="1077402532455000703">"자주 방문한 페이지"</string> <string name="tab_history" msgid="1979267558744613746">"기록"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"저장된 페이지"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"북마크에 추가되었습니다."</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"북마크에서 삭제됨"</string> <string name="sign_in_to" msgid="5939425800148759165">"<xliff:g id="HOSTNAME">%s1</xliff:g> \'<xliff:g id="REALM">%s2</xliff:g>\'에 로그인"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"사이트 이름이 인증서에 있는 것과 일치하지 않습니다."</string> <string name="ssl_expired" msgid="5739349389499575559">"인증서가 만료되었습니다."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"인증서가 아직 유효하지 않습니다."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"중지하는 중..."</string> <string name="stop" msgid="5687251076030630074">"중지"</string> <string name="reload" msgid="8585220783228408062">"새로고침"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"다운로드"</string> <string name="copy_page_url" msgid="7635062169011319208">"페이지 URL 복사"</string> <string name="share_page" msgid="593756995297268343">"페이지 공유"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"새 탭에 캡처화면 만들기"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"페이지 저장"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"페이지가 저장되었습니다."</string> - <string name="webarchive_failed" msgid="19950914584285713">"페이지를 저장하지 못했습니다."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"오프라인 읽기용으로 저장"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"오프라인 읽기용으로 저장하지 못했습니다."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"북마크 <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>개"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"빈 폴더"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"열기"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"검색 엔진 설정"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"검색 엔진 선택"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"다음으로 설정:"</string> - <string name="pref_use_current" msgid="1778622474040406672">"현재 페이지"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"빈 페이지"</string> - <string name="pref_use_default" msgid="192587563274735878">"기본 페이지"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"현재 페이지"</item> + <item msgid="4430498748295169195">"빈 페이지"</item> + <item msgid="5747608191946904074">"기본 페이지"</item> + <item msgid="6092441301001006473">"자주 방문한 사이트"</item> + <item msgid="5021822752506507426">"기타..."</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"페이지 자동 맞춤"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"화면에 맞게 웹페이지 형식 지정"</string> <string name="pref_general_title" msgid="1946872771219249323">"기본설정"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"프로필 저장됨"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"프로필이 삭제되었습니다."</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"프로필 삭제"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"자동 입력을 설정하시겠습니까?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"브라우저에서 이 양식과 같은 웹 양식을 자동으로 완성할 수 있습니다. 프로필을 설정하시겠습니까?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"브라우저 설정에서 언제든지 자동완성을 구성할 수 있습니다."</string> <string name="disable_autofill" msgid="8305901059849400354">"자동 입력 사용중지"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"아주 크게"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"최소 글꼴 크기"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"글꼴 크기"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"확대/축소 강제 사용"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"확대/축소 요청 무시 여부"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"기본 확대/축소"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"텍스트 인코딩"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"접근성"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"글꼴 크기"</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_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_lab_fullscreen" msgid="8173609016657987973">"전체화면"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"전체화면 모드를 사용하여 상태 표시줄을 숨깁니다."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"역렌더링"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"이 기능을 선택하면 브라우저 색이 반전됩니다. 검은색이 흰색으로 바뀌고 그 반대도 마찬가지입니다."</string> + <string name="pref_data_title" msgid="750316606686075162">"대역폭 관리"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"검색결과 미리 로드"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"브라우저가 신뢰도 높은 검색결과를 백그라운드에 미리 로드하도록 허용"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"데이터 연결에 문제 발생"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"파일 문제 발생"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"확인"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"기록 지우기"</string> <string name="browser_history" msgid="1038987118290272525">"최근 방문한 페이지"</string> <string name="empty_history" msgid="8738772352308207274">"브라우저 기록이 비어 있습니다."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"홈"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"북마크에 추가…"</string> <string name="add_bookmark_short" msgid="3783984330998103735">"추가"</string> <string name="search_hint" msgid="4647356319916631820">"검색어 또는 URL 입력"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"공유"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"탭이 더 이상 없습니다."</string> <string name="instant_search_label" msgid="8769284297650716935">"Google 순간 검색(실험실)"</string> - <string name="recover_title" msgid="8095611702406163360">"창을 복원하시겠습니까?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"브라우저가 멈추었습니다. 마지막에 열려있던 창을 복원하시겠습니까?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"예"</string> - <string name="recover_no" msgid="3121030267940592611">"아니요"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"미리보기:"</string> + <string name="preview" msgid="6450823514561689038">"미리보기"</string> <string name="local_bookmarks" msgid="533816851415228520">"로컬"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"모바일"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"데스크톱"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"결과 미리 로드"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"저장된 페이지가 없습니다."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"저장된 페이지 삭제"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-lt-sw600dp/strings.xml b/res/values-lt-sw600dp/strings.xml index 8f040c3..3d4e865 100644 --- a/res/values-lt-sw600dp/strings.xml +++ b/res/values-lt-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Atidaryti visas naujuose skirtukuose"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Atidaryti naujus skirtukus už dabartinio"</string> <string name="recover_title" msgid="1558775426269800998">"Atkurti skirtukus?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Atrodo, kad naršyklė užstrigo. Ar norėtumėte atkurti paskutinį kartą naudotus skirtukus?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Ar norėtumėte atkurti paskutinį kartą naudotus naršyklės skirtukus?"</string> </resources> diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 1d0e852..b389a75 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Neleidžiama įkelti failų."</string> <string name="new_tab" msgid="4505722538297295141">"Naujas langas"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Naujas inkognito langas"</string> - <string name="active_tabs" msgid="3050623868203544623">"Windows"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Žymės"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Dažniausiai lankomos"</string> <string name="tab_history" msgid="1979267558744613746">"Istorija"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Išsaugoti puslapiai"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Pridėta prie žymių"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Pašalinta iš žymių"</string> <string name="sign_in_to" msgid="5939425800148759165">"Prisijungti prie <xliff:g id="HOSTNAME">%s1</xliff:g> „<xliff:g id="REALM">%s2</xliff:g>“"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Svetainės pavadinimas neatitinka sertifikate nurodyto pavadinimo."</string> <string name="ssl_expired" msgid="5739349389499575559">"Šio sertifikato galiojimo laikas baigėsi."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Šis sertifikatas dar negalioja."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Sustabdoma..."</string> <string name="stop" msgid="5687251076030630074">"Sustabdyti"</string> <string name="reload" msgid="8585220783228408062">"Atnaujinti"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Atsisiuntimai"</string> <string name="copy_page_url" msgid="7635062169011319208">"Kopijuoti puslapio URL"</string> <string name="share_page" msgid="593756995297268343">"Bendrinti puslapį"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Fiksuoti skirtuką"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Išsaugoti puslapį"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Puslapis išsaugotas."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Nepavyko išsaugoti puslapio."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Išsaugoti, kad būtų galima skaityti neprisijungus"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Nepavyko išsaugoti, kad būtų gal. skait. neprisij."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Žymių: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Tuščias aplankas"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Atidaryti"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Nustatyti paieškos variklį"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Pasirinkti paieškos variklį"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Nustatyti…"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Dabartinis puslapis"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Tuščias puslapis"</string> - <string name="pref_use_default" msgid="192587563274735878">"Numatytasis puslapis"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"Automatiškai talpinti puslapius"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatuoti tinklalapius, kad tilptų ekrane"</string> <string name="pref_general_title" msgid="1946872771219249323">"Bendra"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profilis išsaugotas"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profilis ištrintas"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Ištrinti profilį"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Nustatyti automatinį pildymą?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Naršyklė gali automatiškai užpildyti į šią panašias žiniatinklio formas. Ar norite nustatyti profilį?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automatinį pildymą visada galima konfigūruoti skiltyje „Naršyklės nustatymai“."</string> <string name="disable_autofill" msgid="8305901059849400354">"Neleisti automatinio pildymo"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"Didžiulis"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Mažiausias šrifto dydis"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> tašk."</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Teksto mastelio keitimas"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Priverstinai įgal. mast. keit."</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Ar įr. svet. užkl. vald. mast. keit. elgs."</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Numatytasis mastelio keitimas"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Teksto koduotė"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Pasiekiamumas"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Šrifto dydis"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Laboratorijos"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Spartieji valdikliai"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Sl. nykščiu iš kair. ar deš. kr., kad pasiekt. sparč. vald. ir pasl. pr. ir URL juost."</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Dažn. lankomas pagrindinis puslapis"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Pagrindiniame puslapyje pateikiami dažniausiai lankyti tinklalapiai."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Intuityvioji „Google“ paieška"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Kai naud. „Google“ paiešką, naud. Int. „Google“ paiešką, kad renk. tekst. b. rodomi rezult. (tai g. padid. duom. naud.)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Visas ekranas"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Jei norite paslėpti būsenos juostą, naudokite viso ekrano režimą."</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"Pralaidumo valdymas"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Iš anksto įkeliamas paieškos rezultatas"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Leisti naršyklei fone iš anksto įkelti itin patikimus paieškos rezultatus"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Duomenų jungiamumo problema"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Failo problema"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Patvirtinti"</string> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"Išvalyti istoriją"</string> <string name="browser_history" msgid="1038987118290272525">"Paskutiniai lankyti puslapiai"</string> <string name="empty_history" msgid="8738772352308207274">"Naršyklės istorija tuščia."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Pagrindinis puslapis"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Pridėti žymę..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Pridėti"</string> <string name="search_hint" msgid="4647356319916631820">"Ieškokite ar įveskite URL"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"Bendrinti"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Daugiau galimų skirtukų nėra"</string> <string name="instant_search_label" msgid="8769284297650716935">"„Google“ su Intuityviąja paieška (Laboratorijos)"</string> - <string name="recover_title" msgid="8095611702406163360">"Atkurti langus?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Atrodo, naršyklė užstrigo. Ar norėtumėte atkurti paskutinį kartą naudotus langus?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Taip"</string> - <string name="recover_no" msgid="3121030267940592611">"Ne"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Peržiūra:"</string> + <string name="preview" msgid="6450823514561689038">"Peržiūra"</string> <string name="local_bookmarks" msgid="533816851415228520">"Vietinės"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobilusis įrenginys"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Stalinis kompiuteris"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Iš anksto įkelti rezultatus"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-lv-sw600dp/strings.xml b/res/values-lv-sw600dp/strings.xml index 29ff90c..42620ef 100644 --- a/res/values-lv-sw600dp/strings.xml +++ b/res/values-lv-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Atvērt visas grāmatzīmes jaunās cilnēs"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Atvērt jaunas cilnes aiz pašreiz atvērtās"</string> <string name="recover_title" msgid="1558775426269800998">"Vai atjaunot cilnes?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Notika pārlūkprogrammas avārija. Vai vēlaties atjaunot pēdējās atvērtās cilnes?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Vai vēlaties atjaunot pēdējās pārlūkprogrammā atvērtās cilnes?"</string> </resources> diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index dca1c57..e49c1be 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Failu augšupielādes ir atspējotas."</string> <string name="new_tab" msgid="4505722538297295141">"Jauns logs"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Jauns inkognito logs"</string> - <string name="active_tabs" msgid="3050623868203544623">"Logi"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Grāmatzīmes"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Visvairāk apmeklētās"</string> <string name="tab_history" msgid="1979267558744613746">"Vēsture"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Saglabātās lapas"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Pievienots grāmatzīmēm"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Noņemts no grāmatzīmēm"</string> <string name="sign_in_to" msgid="5939425800148759165">"Pierakstīšanās domēnā <xliff:g id="HOSTNAME">%s1</xliff:g> “<xliff:g id="REALM">%s2</xliff:g>”"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Vietnes nosaukums neatbilst nosaukumam sertifikātā."</string> <string name="ssl_expired" msgid="5739349389499575559">"Šī sertifikāta derīguma termiņš ir beidzies."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Šis sertifikāts vēl nav derīgs."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Notiek apturēšana..."</string> <string name="stop" msgid="5687251076030630074">"Apturēt"</string> <string name="reload" msgid="8585220783228408062">"Atsvaidzināt"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Lejupielādes"</string> <string name="copy_page_url" msgid="7635062169011319208">"Kopēt lapas URL"</string> <string name="share_page" msgid="593756995297268343">"Kopīgot lapu"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Iesaldēt cilni"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Saglabāt lapu"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Lapa ir saglabāta."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Neizdevās saglabāt lapu."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Saglabāt, lai lasītu bezsaistē"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Neizdevās saglabāt, lai lasītu bezsaistē."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> grāmatzīmes"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Tukša mape"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Atvērt"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Iestatīt meklētājprogrammu"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Atlasīt meklētājprogrammu"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Iestatīt uz…"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Pašreizējā lapa"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Tukša lapa"</string> - <string name="pref_use_default" msgid="192587563274735878">"Noklusējuma lapa"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Pašreizējā lapa"</item> + <item msgid="4430498748295169195">"Tukša lapa"</item> + <item msgid="5747608191946904074">"Noklusējuma lapa"</item> + <item msgid="6092441301001006473">"Biežāk apmeklētās vietnes"</item> + <item msgid="5021822752506507426">"Cita"</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Automātiski pielāgot lapas"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatēt tīmekļa lapas, lai tās ietilptu ekrānā"</string> <string name="pref_general_title" msgid="1946872771219249323">"Vispārīgi"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profils ir saglabāts"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profils ir dzēsts"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Dzēst profilu"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Vai iestatīt autom. aizpildi?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Pārlūkprogramma var automātiski aizpildīt šāda veida tīmekļa veidlapas. Vai vēlaties iestatīt savu profilu?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automātisko aizpildi jebkurā brīdī var konfigurēt, izmantojot pārlūkprogrammas iestatījumus."</string> <string name="disable_autofill" msgid="8305901059849400354">"Atspējot automātisko aizpildi"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Milzīgs"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Minimālais fonta lielums"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Teksta tālummaiņa"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Pieprasīt tālummaiņas iespēj."</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Ignorēt vietnes piepr. par tālummaiņas kontrolēšanu vai ne."</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Noklusējuma tālummaiņa"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Teksta kodējums"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Pieejamība"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Fonta lielums"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Laboratorijas"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Ātrās piekļuves vadīklas"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Lai piekļ. ātr. piekļ. vadīklām un slēptu lietojumpr. un URL joslas, ekr. lab. vai kr. malā pavelciet ar īkšķi."</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Biežāk apmeklēto lapu sākumlapa"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Sākumlapā tiek rādītas biežāk apmeklētās tīmekļa lapas."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google dinamiskā meklēšana"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Izmantojiet Google dinamisko meklēšanu, kad lietojat Google meklēšanu, lai redzētu rezultātus rakstīšanas laikā (var tikt izmantots vairāk datu)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Pilnekrāna režīms"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Lai paslēptu statusa joslu, izmantojiet pilnekrāna režīmu."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Apgrieztā atveidošana"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Atzīmējot šo izvēles rūtiņu, pārlūkprogrammā tiek atveidotas pretējas krāsas. Balta krāsa tiek attēlota melna un otrādi."</string> + <string name="pref_data_title" msgid="750316606686075162">"Joslas platuma pārvaldība"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Meklēšanas rezultātu pirmsielāde"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Ļaut pārlūkprogrammai fonā veikt atbilstošu meklēšanas rezultātu pirmsielādi"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Datu savienojamības problēma"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Faila problēma"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Apstiprināt"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Notīrīt vēsturi"</string> <string name="browser_history" msgid="1038987118290272525">"Nesen apmeklētās lapas"</string> <string name="empty_history" msgid="8738772352308207274">"Pārlūkprogrammas vēsture ir tukša."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Sākums"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Pievienot grāmatzīmi..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Pievienot"</string> <string name="search_hint" msgid="4647356319916631820">"Meklējiet vai ievadiet URL"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Kopīgot"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Vairs nav pieejamu ciļņu"</string> <string name="instant_search_label" msgid="8769284297650716935">"Pakalpojums Google ar dinamisko meklēšanu (Laboratorijas)"</string> - <string name="recover_title" msgid="8095611702406163360">"Vai atjaunot logus?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Notika pārlūkprogrammas avārija. Vai vēlaties atjaunot pēdējos atvērtos logus?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Jā"</string> - <string name="recover_no" msgid="3121030267940592611">"Nē"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Priekšskatījums:"</string> + <string name="preview" msgid="6450823514561689038">"Priekšskatīt"</string> <string name="local_bookmarks" msgid="533816851415228520">"Vietējās"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Versija mobilajām ierīcēm"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Versija datoriem"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Veikt rezultātu pirmsielādi"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Nav nevienas saglabātas lapas."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Dzēst saglabāto lapu"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-ms-sw600dp/strings.xml b/res/values-ms-sw600dp/strings.xml new file mode 100644 index 0000000..3a45dd6 --- /dev/null +++ b/res/values-ms-sw600dp/strings.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Copyright (C) 2010 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> + +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="new_tab" msgid="2448577107218085816">"Tab baru"</string> + <string name="new_incognito_tab" msgid="7101126413435433601">"Tab incognito baru"</string> + <string name="active_tabs" msgid="2049888145890815012">"Tab"</string> + <string name="contextmenu_openlink_newwindow" msgid="4034130612746354398">"Buka dalam tab baru"</string> + <string name="contextmenu_openlink_newwindow_background" msgid="7104473293755016241">"Buka dalam tab latar belakang baru"</string> + <string name="open_all_in_new_window" msgid="4294281492905397499">"Buka semua dalam tab baru"</string> + <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Buka tab baru di belakang tab semasa"</string> + <string name="recover_title" msgid="1558775426269800998">"Pulihkan tab?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Adakah anda mahu memulihkan tab penyemak imbas anda kepada keadaan terakhirnya?"</string> +</resources> diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index adcc60b..cac3991 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Muat naik fail dilumpuhkan."</string> <string name="new_tab" msgid="4505722538297295141">"Tetingkap baru"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Tetingkap penyamaran baru"</string> - <string name="active_tabs" msgid="3050623868203544623">"Tetingkap"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Penanda halaman"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Yang paling kerap dilawati"</string> <string name="tab_history" msgid="1979267558744613746">"Sejarah"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Halaman Disimpan"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Ditambah ke penanda halaman"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Dialih keluar daripada penanda halaman"</string> <string name="sign_in_to" msgid="5939425800148759165">"Log masuk ke \"<xliff:g id="REALM">%s2</xliff:g>\" <xliff:g id="HOSTNAME">%s1</xliff:g>"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Nama tapak tidak sepadan dengan nama pada sijil."</string> <string name="ssl_expired" msgid="5739349389499575559">"Sijil ini telah tamat tempoh."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Sijil ini belum lagi sah."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Menghentikan…"</string> <string name="stop" msgid="5687251076030630074">"Henti"</string> <string name="reload" msgid="8585220783228408062">"Muat semula"</string> @@ -55,8 +61,7 @@ <string name="save" msgid="5922311934992468496">"OK"</string> <string name="do_not_save" msgid="6777633870113477714">"Batal"</string> <string name="location" msgid="3411848697912600125">"Alamat"</string> - <!-- no translation found for account (5179824606448077042) --> - <skip /> + <string name="account" msgid="5179824606448077042">"Akaun"</string> <string name="containing_folder" msgid="6771180232953030479">"Tambah ke"</string> <string name="new_folder" msgid="7743540149088867917">"Folder baru"</string> <string name="edit_folder" msgid="621817453133656156">"Edit folder"</string> @@ -102,11 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Muat turun"</string> <string name="copy_page_url" msgid="7635062169011319208">"Salin url halaman"</string> <string name="share_page" msgid="593756995297268343">"Kongsi halaman"</string> - <!-- no translation found for menu_freeze_tab (189603565552297099) --> - <skip /> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Simpan halaman"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Halaman disimpan."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Gagal menyimpan halaman."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Simpan untuk pembacaan di luar talian"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Gagal menyimpan untuk pembacaan di luar talian."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> penanda halaman"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Folder kosong"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Buka"</string> @@ -144,10 +146,14 @@ <string name="pref_content_homepage" msgid="3324574611613105696">"Tetapkan halaman utama"</string> <string name="pref_content_search_engine" msgid="1620101310821644144">"Tetapkan enjin carian"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Pilih enjin carian"</string> - <string name="pref_set_homepage_to" msgid="7196350233061395098">"Tetapkan pada…"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Halaman semasa"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Halaman kosong"</string> - <string name="pref_use_default" msgid="192587563274735878">"Halaman lalai"</string> + <string name="pref_set_homepage_to" msgid="7196350233061395098">"Tetapkan pada..."</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Halaman semasa"</item> + <item msgid="4430498748295169195">"Halaman kosong"</item> + <item msgid="5747608191946904074">"Halaman lalai"</item> + <item msgid="6092441301001006473">"Tapak yang paling kerap dilawati"</item> + <item msgid="5021822752506507426">"Lain-lain..."</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Muat auto halaman"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Format halaman web agar padan dengan saiz skrin"</string> <string name="pref_general_title" msgid="1946872771219249323">"Umum"</string> @@ -158,7 +164,7 @@ <string name="pref_personal_google_account" msgid="952360133341490071">"Akaun Google"</string> <string name="pref_personal_sync_bookmarks" msgid="59237515966184432">"Segerakkan penanda halaman"</string> <string name="pref_personal_sync_bookmarks_summary" msgid="4791767605662205482">"Segerakkan penanda halaman antara Penyemak Imbas Android dan Google Chrome"</string> - <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Mula menyegerak"</string> + <string name="pref_personal_start_syncing" msgid="6046972042512655232">"Mula menyegerakkan"</string> <string name="pref_personal_account_dialog_title" msgid="1390867119887955530">"Plih akaun utk kngsi"</string> <string name="pref_autofill_enabled" msgid="1015751713312396713">"Auto isi borang"</string> <string name="pref_autofill_enabled_summary" msgid="422640696197018914">"Isikan borang web dengan satu klik"</string> @@ -166,10 +172,9 @@ <string name="pref_autofill_profile_editor_summary" msgid="3653552312512743181">"Masukkan dan simpan data untuk medan auto isi borang web"</string> <string name="pref_autologin_title" msgid="2362827272595366379">"Log masuk Google automatik"</string> <string name="pref_autologin_progress" msgid="8333244467048833461">"Melog masuk ke dalam tapak Google menggunakan <xliff:g id="ID_1">%s</xliff:g>"</string> - <!-- outdated translation 8013977161879448141 --> <string name="autologin_bar_text" msgid="3684581827167173371">"Log masuk automatik tersedia."</string> + <string name="autologin_bar_text" msgid="3684581827167173371">"Log masuk sebagai"</string> <string name="autologin_bar_login_text" msgid="7052816600314556734">"Log masuk"</string> - <!-- no translation found for autologin_bar_hide_text (3629355974385859580) --> - <skip /> + <string name="autologin_bar_hide_text" msgid="3629355974385859580">"Sembunyikn"</string> <string name="autologin_bar_error" msgid="5132514366023044839">"Log masuk gagal."</string> <string name="autofill_profile_editor_heading" msgid="8392952553626722083">"Masukkan data yang anda mahu auto isi dalam medan web apabila anda menyentuhnya."</string> <string name="autofill_profile_editor_name" msgid="8566130291459685955">"Nama penuh:"</string> @@ -189,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil disimpan"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil telah dipadamkan"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Padam profil"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Sediakan auto-isi?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Penyemak imbas boleh melengkapkan borang web seperti ini secara automatik. Adakah anda mahu menyediakan profil anda?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Auto isi sentiasa boleh dikonfigurasikan melalui Tetapan Penyemak Imbas."</string> <string name="disable_autofill" msgid="8305901059849400354">"Lumpuhkan auto isi"</string> @@ -233,14 +239,10 @@ <item msgid="7201512237890458902">"Sangat Besar"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Saiz fon minimum"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> - <!-- no translation found for pref_force_userscalable (5641500562399892621) --> - <skip /> - <!-- no translation found for pref_force_userscalable_summary (4431962409438162448) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Zum teks"</string> + <string name="pref_force_userscalable" msgid="5641500562399892621">"Paksa dayakan zum"</string> + <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Sama ada mahu atasi prmintaan tpk web utk kwl klakuan zum"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Zum lalai"</string> <string-array name="pref_default_zoom_choices"> <item msgid="549583171195154919">"Jauh"</item> @@ -272,19 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Pengekodan teks"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Kebolehaksesan"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Saiz fon"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Makmal"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Kawalan pantas"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Leret jari dr kiri/kanan utk akses kawalan pantas dan sembunyikan bar Apl & URL"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Halaman utama paling banyak dilawati"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Halaman utama anda memaparkan halaman web yang paling banyak anda lawati."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Guna Google Instant bila anda guna Carian Google, utk tunjuk hasil bila anda menaip (boleh menambah penggunaan data)."</string> - <!-- no translation found for pref_lab_fullscreen (8173609016657987973) --> - <skip /> - <!-- no translation found for pref_lab_fullscreen_summary (6853711692160711419) --> - <skip /> + <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Skrin penuh"</string> + <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Gunakan mod skrin penuh untuk menyembunyikan bar status."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Pemaparan songsang"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Menanda semak yg ini akan menyebabakan penyemak imbs menyongsangkan warna. Hitam menjadi putih & begitu juga sebaliknya."</string> + <string name="pref_data_title" msgid="750316606686075162">"Pengurusan Lebar Jalur"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Hasil carian sedang dipramuat"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Benarkan penyemak imbas mempramuat hasil carian berkeyakinan tinggi di ltr blkg"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Masalah kesambungan data"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Masalah dengan fail"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Sahkan"</string> @@ -294,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Padam bersih sejarah"</string> <string name="browser_history" msgid="1038987118290272525">"Halaman terbaru dilawati"</string> <string name="empty_history" msgid="8738772352308207274">"Sejarah penyemak imbas kosong."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Laman utama"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Tambah penanda halaman..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Tambah"</string> <string name="search_hint" msgid="4647356319916631820">"Buat carian atau taipkan URL"</string> @@ -394,15 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Kongsi"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Tiada lagi tab yang sedia"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google dengan Instant (Makmal)"</string> - <string name="recover_title" msgid="8095611702406163360">"Pulihkan tetingkap?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Penyemak imbas kelihatan seperti telah ranap. Adakah anda mahu memulihkan tetingkap anda kepada keadaan terakhirnya?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Ya"</string> - <string name="recover_no" msgid="3121030267940592611">"Tidak"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Pratonton:"</string> - <!-- no translation found for local_bookmarks (533816851415228520) --> + <string name="preview" msgid="6450823514561689038">"Pratonton"</string> + <string name="local_bookmarks" msgid="533816851415228520">"Tempatan"</string> + <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mudah alih"</string> + <string name="ua_switcher_desktop" msgid="2535200543238676638">"Desktop"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Pramuat hasil"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Tidak terdapat halaman disimpan."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Padamkan halaman disimpan"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> <skip /> - <!-- no translation found for ua_switcher_mobile (5103260404792449606) --> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> <skip /> - <!-- no translation found for ua_switcher_desktop (2535200543238676638) --> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> <skip /> </resources> diff --git a/res/values-nb-sw600dp/strings.xml b/res/values-nb-sw600dp/strings.xml index 9461db6..503c8de 100644 --- a/res/values-nb-sw600dp/strings.xml +++ b/res/values-nb-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Åpne alle i nye faner"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Åpne nye faner bak den gjeldende"</string> <string name="recover_title" msgid="1558775426269800998">"Vil du gjenopprette fanene?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Nettleseren ser ut til å ha fått et programstopp. Vil du gjenopprette fanene fra forrige økt?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Ønsker du å gjenopprette nettleserfanene fra forrige gang?"</string> </resources> diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 9ed0233..71f1ac2 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Filopplasting er deaktivert"</string> <string name="new_tab" msgid="4505722538297295141">"Ny fane"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Nytt inkognitovindu"</string> - <string name="active_tabs" msgid="3050623868203544623">"Vinduer"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Bokmerker"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Mest besøkt"</string> <string name="tab_history" msgid="1979267558744613746">"Logg"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Lagrede sider"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Lagt til bokmerker"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Fjernet fra bokmerker"</string> <string name="sign_in_to" msgid="5939425800148759165">"Logg på <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Navnet på siden stemmer ikke med navnet på sertifikatet."</string> <string name="ssl_expired" msgid="5739349389499575559">"Sertifikatet er utløpt."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Sertifikatet er ikke gyldig ennå."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Avbryter…"</string> <string name="stop" msgid="5687251076030630074">"Avbryt"</string> <string name="reload" msgid="8585220783228408062">"Oppdater"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Nedlastinger"</string> <string name="copy_page_url" msgid="7635062169011319208">"Kopier nettstedsadresse"</string> <string name="share_page" msgid="593756995297268343">"Del side"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Frys fane"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Lagre siden"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Siden ble lagret."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Fikk ikke lagret siden."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Lagre for frakoblet lesing"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Lagring for frakoblet lesing mislyktes."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> bokmerker"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Tøm mappe"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Åpne"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Angi søkemotor"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Velg en søkemotor"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Satt til"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Gjeldende side"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Tom side"</string> - <string name="pref_use_default" msgid="192587563274735878">"Standardside"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Nåværende side"</item> + <item msgid="4430498748295169195">"Tom side"</item> + <item msgid="5747608191946904074">"Standardside"</item> + <item msgid="6092441301001006473">"Oftest besøkte nettsteder"</item> + <item msgid="5021822752506507426">"Andre"</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Tilpass sider automatisk"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Tilpass nettsteder til skjermen"</string> <string name="pref_general_title" msgid="1946872771219249323">"Generelt"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profilen er lagret"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profilen ble slettet"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Slett profil"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Vil du konfigurere autofyll?"</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> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Kjempestor"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Minste skriftstørrelse"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> p"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Tekstzooming"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Tving aktivering av zoom"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Hvorvidt et nettsteds forespørs. om å kontr. zoom-adferd skal overstyres"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Standardzoom"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Tekstkoding"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Tilgjengelighet"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Skriftstørrelse"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Prøvefunksjoner"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Hurtigkontroller"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Sveip fra venstre mot høyre kant for å bruke hurtigkontr. og skjule app- og nettadresserader"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Mest besøkte startside"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Startsiden viser dine mest besøkte nettsider."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Bruk Google Instant når du bruker Google Søk for å vise resultater mens du skriver (dette kan gi økt databruk)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Fullskjerm"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Bruk fullskjermmodus for å skjule statusfeltet."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Omvendt visning"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Hvis du merker av for dette alternativet, vil nettleseren vise omvendte farger. Svart blir hvitt, og omvendt."</string> + <string name="pref_data_title" msgid="750316606686075162">"Admin. av båndbredde"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Forhåndslaster søkeresultat"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"La nettleseren forhåndslaste søkeresultater med høy visshet i bakgrunnen"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Datatilkoblingsproblem"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem med fil"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bekreft"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Tøm logg"</string> <string name="browser_history" msgid="1038987118290272525">"Nylig besøkte sider"</string> <string name="empty_history" msgid="8738772352308207274">"Nettleserloggen er tom."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Startside"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Legg til bokmerke"</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Legg til"</string> <string name="search_hint" msgid="4647356319916631820">"Søk etter eller skriv inn URL"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Del"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Ingen flere faner tilgjengelig"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google med Instant (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Vil du gjenopprette vinduene?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Nettleseren ser ut til å ha fått et programstopp. Vil du gjenopprette vinduene fra forrige økt?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Ja"</string> - <string name="recover_no" msgid="3121030267940592611">"Nei"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Forhåndsvisning:"</string> + <string name="preview" msgid="6450823514561689038">"Forhåndsvisning"</string> <string name="local_bookmarks" msgid="533816851415228520">"Lokal"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Skrivebord"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Forhåndslaster resultater"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Du har ingen lagrede sider."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Slett lagret side"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-nl-sw600dp/strings.xml b/res/values-nl-sw600dp/strings.xml index 86292d0..74c328a 100644 --- a/res/values-nl-sw600dp/strings.xml +++ b/res/values-nl-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Alle bladwijzers openen op nieuwe tabbladen"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Nieuwe tabbladen openen achter het huidige tabblad"</string> <string name="recover_title" msgid="1558775426269800998">"Tabbladen herstellen?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"De browser lijkt te zijn gecrasht. Wilt u de tabbladen uit uw vorige sessie herstellen?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Wilt u de browsertabbladen uit uw vorige sessie herstellen?"</string> </resources> diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 5997e3c..3631d55 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Bestandsuploads zijn uitgeschakeld."</string> <string name="new_tab" msgid="4505722538297295141">"Nieuw venster"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Nieuw incognitovenster"</string> - <string name="active_tabs" msgid="3050623868203544623">"Vensters"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Bladwijzers"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Meest bezocht"</string> <string name="tab_history" msgid="1979267558744613746">"Geschiedenis"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Opgeslagen pagina\'s"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Toegevoegd aan bladwijzers"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Verwijderd uit bladwijzers"</string> <string name="sign_in_to" msgid="5939425800148759165">"Aanmelden bij <xliff:g id="HOSTNAME">%s1</xliff:g> \'<xliff:g id="REALM">%s2</xliff:g>\'"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"De naam van deze site komt niet overeen met de naam op het certificaat."</string> <string name="ssl_expired" msgid="5739349389499575559">"Dit certificaat is verlopen."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Dit certificaat is nog niet geldig."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Stoppen..."</string> <string name="stop" msgid="5687251076030630074">"Stoppen"</string> <string name="reload" msgid="8585220783228408062">"Vernieuwen"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Downloads"</string> <string name="copy_page_url" msgid="7635062169011319208">"Pagina-URL kopiëren"</string> <string name="share_page" msgid="593756995297268343">"Pagina delen"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Statische tabbladkopie maken"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Pagina opslaan"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Pagina opgeslagen."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Opslaan van pagina mislukt."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Opslaan voor offline lezen"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Het opslaan voor offline lezen is mislukt."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> bladwijzers"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Lege map"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Openen"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Zoekmachine instellen"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Selecteer een zoekmachine"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Ingesteld op..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Huidige pagina"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Lege pagina"</string> - <string name="pref_use_default" msgid="192587563274735878">"Standaardpagina"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Huidige pagina"</item> + <item msgid="4430498748295169195">"Lege pagina"</item> + <item msgid="5747608191946904074">"Standaardpagina"</item> + <item msgid="6092441301001006473">"Meest bezochte sites"</item> + <item msgid="5021822752506507426">"Anders..."</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Pagina\'s passend maken"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Webpagina\'s zo indelen dat deze op het scherm passen"</string> <string name="pref_general_title" msgid="1946872771219249323">"Algemeen"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profiel opgeslagen"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profiel verwijderd"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Profiel verwijderen"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Automatisch aanvullen instellen?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"De browser kan webformulieren zoals dit formulier automatisch invullen. Wilt u uw profiel instellen?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"U kunt Automatisch aanvullen altijd configureren via de browserinstellingen."</string> <string name="disable_autofill" msgid="8305901059849400354">"Automatisch aanvullen uitschakelen"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Enorm"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Minimum lettergrootte"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Tekstzoom"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Zoom inschakelen forceren"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Of websiteverzoek tot bepalen van zoomgedrag wordt genegeerd"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Standaardzoom"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Tekstcodering"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Toegankelijkheid"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Lettergrootte"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Snelle bedieningselementen"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Schuif vanaf links of rechts voor Quick Controls en om app- en URL-balken te verbergen"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Meest bezochte startpagina"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Op uw startpagina staan uw meest bezochte webpagina\'s."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Gebruik Google Instant bij Google Zoeken voor resultaten tijdens het typen (kan resulteren in meer gegevensverbruik)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Volledig scherm"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Gebruik de modus voor volledig scherm om de statusbalk te verbergen."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Omgekeerde opbouw"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Als u dit aanvinkt, keert de browser de kleuren om. Zwart wordt wit en andersom."</string> + <string name="pref_data_title" msgid="750316606686075162">"Bandbreedtebeheer"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Zoekresultaten vooraf laden"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Browser toestaan resultaten met hoog betrouwbaarheidsniveau vooraf te laden"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Probleem met gegevensverbinding"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Probleem met bestand"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bevestigen"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Geschiedenis wissen"</string> <string name="browser_history" msgid="1038987118290272525">"Onlangs bezochte pagina\'s"</string> <string name="empty_history" msgid="8738772352308207274">"Browsergeschiedenis is leeg."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Startpagina"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Bladwijzer toevoegen…"</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Toevoegen"</string> <string name="search_hint" msgid="4647356319916631820">"Zoek of typ de URL"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Delen"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Er zijn niet meer tabbladen beschikbaar"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google met Instant (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Vensters herstellen?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"De browser lijkt te zijn gecrasht. Wilt u de vensters uit uw vorige sessie herstellen?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Ja"</string> - <string name="recover_no" msgid="3121030267940592611">"Nee"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Voorbeeld:"</string> + <string name="preview" msgid="6450823514561689038">"Voorbeeld"</string> <string name="local_bookmarks" msgid="533816851415228520">"Lokaal"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobiel"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Desktop"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Resultaten vooraf laden"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Er zijn geen opgeslagen pagina\'s."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Opgeslagen pagina verwijderen"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-pl-sw600dp/strings.xml b/res/values-pl-sw600dp/strings.xml index 25f1866..3f92a79 100644 --- a/res/values-pl-sw600dp/strings.xml +++ b/res/values-pl-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Otwórz wszystkie w nowych kartach"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Otwieraj nowe karty za bieżącą"</string> <string name="recover_title" msgid="1558775426269800998">"Przywrócić karty?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Przeglądarka prawdopodobnie uległa awarii. Czy chcesz przywrócić karty z poprzedniej sesji?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Czy chcesz przywrócić w przeglądarce karty z poprzedniej sesji?"</string> </resources> diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 7257963..117e59b 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Przesyłanie plików jest wyłączone."</string> <string name="new_tab" msgid="4505722538297295141">"Nowe okno"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Nowe okno incognito"</string> - <string name="active_tabs" msgid="3050623868203544623">"Okna"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Zakładki"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Popularne"</string> <string name="tab_history" msgid="1979267558744613746">"Historia"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Zapisane strony"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Dodano do zakładek"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Usunięto z zakładek"</string> <string name="sign_in_to" msgid="5939425800148759165">"Zaloguj się w witrynie <xliff:g id="HOSTNAME">%s1</xliff:g> „<xliff:g id="REALM">%s2</xliff:g>”"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Nazwa witryny nie odpowiada nazwie podanej w certyfikacie."</string> <string name="ssl_expired" msgid="5739349389499575559">"Ten certyfikat wygasł."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Ten certyfikat nie jest jeszcze prawidłowy."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Trwa zatrzymywanie…"</string> <string name="stop" msgid="5687251076030630074">"Zatrzymaj"</string> <string name="reload" msgid="8585220783228408062">"Odśwież"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Pobrane"</string> <string name="copy_page_url" msgid="7635062169011319208">"Kopiuj adres URL strony"</string> <string name="share_page" msgid="593756995297268343">"Udostępnij stronę"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Zablokuj kartę"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Zapisz stronę"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Strona została zapisana."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Nie można zapisać strony."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Zapisz do czytania offline"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Nie można zapisać do czytania w trybie offline."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Zakładki: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Pusty folder"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Otwórz"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Ustaw wyszukiwarkę"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Wybierz wyszukiwarkę"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Ustaw"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Bieżąca strona"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Pusta strona"</string> - <string name="pref_use_default" msgid="192587563274735878">"Domyślna strona"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Bieżąca strona"</item> + <item msgid="4430498748295169195">"Pusta strona"</item> + <item msgid="5747608191946904074">"Strona domyślna"</item> + <item msgid="6092441301001006473">"Najczęściej odwiedzane witryny"</item> + <item msgid="5021822752506507426">"Inna..."</item> + </string-array> <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_general_title" msgid="1946872771219249323">"Ogólne"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil został zapisany"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil usunięto"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Usuń profil"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Skonfigurować autouzupełnianie?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Takie formularze internetowe mogą być automatycznie wypełniane w przeglądarce. Czy chcesz skonfigurować swój profil?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Autouzupełnianie można zawsze skonfigurować w ustawieniach przeglądarki."</string> <string name="disable_autofill" msgid="8305901059849400354">"Wyłącz autouzupełnianie"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Bardzo duży"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Minimalny rozmiar czcionki"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> pkt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Powiększenie tekstu"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Wymuś włączenie powiększenia"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Określa, czy zezwolić stronie na sterowanie powiększeniem"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Powiększenie domyślne"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Kodowanie tekstu"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Ułatwienia dostępu"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Rozmiar czcionki"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Laboratorium"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Szybkie sterowanie"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Przesuń kciukiem od lewej lub prawej, aby użyć szybkiego sterowania oraz ukryć paski aplikacji i URL"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Najczęściej odwiedzane na stronie głównej"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Na stronie głównej wyświetlane są najczęściej odwiedzane strony internetowe."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Wyszukiwanie dynamiczne Google"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Użyj wyszukiwania dynamicznego Google, aby uzyskiwać wyniki podczas pisania (może być pobierana większa ilość danych)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Pełny ekran"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Użyj trybu pełnoekranowego, aby ukryć pasek stanu."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Negatyw"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Po zaznaczeniu tej opcji kolory w przeglądarce zostaną odwrócone. Czarny zmieni się w biały i odwrotnie."</string> + <string name="pref_data_title" msgid="750316606686075162">"Zarządzanie przepustowością"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Wstępne wczytywanie wyników wyszukiwania"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Zezwalaj przeglądarce na wstępne wczytywanie sprawdzonych wyników wyszukiwania w tle"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problem z łącznością danych"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem z plikiem"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Potwierdzenie"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Wyczyść historię"</string> <string name="browser_history" msgid="1038987118290272525">"Ostatnio odwiedzone strony"</string> <string name="empty_history" msgid="8738772352308207274">"Historia przeglądarki jest pusta."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Strona główna"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Dodaj do zakładek..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Dodaj"</string> <string name="search_hint" msgid="4647356319916631820">"Wyszukaj lub wpisz URL"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Udostępnij"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Brak dostępnych kart"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google z wyszukiwaniem dynamicznym (Laboratorium)"</string> - <string name="recover_title" msgid="8095611702406163360">"Przywrócić okna?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Przeglądarka uległa awarii. Czy chcesz przywrócić okna z poprzedniej sesji?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Tak"</string> - <string name="recover_no" msgid="3121030267940592611">"Nie"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Podgląd:"</string> + <string name="preview" msgid="6450823514561689038">"Podgląd"</string> <string name="local_bookmarks" msgid="533816851415228520">"Lokalne"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Dla komórek"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Dla komputerów"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Wstępnie wczytaj wyniki"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Brak zapisanych stron."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Usuń zapisaną stronę"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-pt-rPT-sw600dp/strings.xml b/res/values-pt-rPT-sw600dp/strings.xml index 630bdaf..273ba76 100644 --- a/res/values-pt-rPT-sw600dp/strings.xml +++ b/res/values-pt-rPT-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Abrir tudo em separadores novos"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Abrir novos separadores atrás do atual"</string> <string name="recover_title" msgid="1558775426269800998">"Restaurar separadores?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"O navegador bloqueou. Pretende restaurar os separadores abertos na última sessão?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Pretende restaurar os separadores do navegador abertos na última sessão?"</string> </resources> diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 0ae4868..c5d3392 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Os carregamentos de ficheiros estão desativados."</string> <string name="new_tab" msgid="4505722538297295141">"Nova janela"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Nova janela de naveg. anónima"</string> - <string name="active_tabs" msgid="3050623868203544623">"Janelas"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Marcadores"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Os mais visitados"</string> <string name="tab_history" msgid="1979267558744613746">"Histórico"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Páginas Guardadas"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Adicionado aos marcadores"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Removido dos marcadores"</string> <string name="sign_in_to" msgid="5939425800148759165">"Iniciar sessão em <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"O nome do site não corresponde ao nome constante no certificado."</string> <string name="ssl_expired" msgid="5739349389499575559">"Este certificado expirou."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Este certificado ainda não é válido."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"A interromper..."</string> <string name="stop" msgid="5687251076030630074">"Parar"</string> <string name="reload" msgid="8585220783228408062">"Actualizar"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Transferências"</string> <string name="copy_page_url" msgid="7635062169011319208">"Copiar URL da página"</string> <string name="share_page" msgid="593756995297268343">"Partilhar página"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Fixar separador"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Guardar página"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Página guardada."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Ocorreu uma falha ao guardar a página."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Guardar para leitura off-line"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Erro ao guardar para leitura off-line."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> marcadores"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Pasta vazia"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Abrir"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Definir motor de pesquisa"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Seleccionar um motor de pesquisa"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Definido para..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Página actual"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Página em branco"</string> - <string name="pref_use_default" msgid="192587563274735878">"Página predefinida"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"Ajuste auto de páginas"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatar páginas Web para se ajustarem ao ecrã"</string> <string name="pref_general_title" msgid="1946872771219249323">"Gerais"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Perfil guardado"</string> <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_title" msgid="1955613311837926540">"Conf. preenchimento automático?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"O navegador pode preencher automaticamente os formulários Web deste tipo. Pretende configurar o seu perfil?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"O Preenchimento automático pode sempre ser configurado através das Definições do navegador."</string> <string name="disable_autofill" msgid="8305901059849400354">"Desativar preenchimento automático"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"Muito grande"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Tamanho mín. do tipo de letra"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Zoom do texto"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Forçar ativação do zoom"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Eliminar ou não pedido do site para controlar zoom"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Zoom predefinido"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codificação do texto"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Acessibilidade"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Tamanho do tipo de letra"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controlos rápidos"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Deslize polegar margem esq. ou dir. p/ aceder contr. rápidos e ocultar barras Aplicação e URL"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Página inicial mais visitada"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"A sua página inicial apresenta as páginas Web mais visitadas."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instantâneo"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Utilize Google Instantâneo na Pesquisa do Google para mostrar resultados quando escreve (pode aumentar utiliz. dados)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Ecrã inteiro"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Utilizar o modo de ecrã inteiro para ocultar a barra de estado."</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"Gestão da Larg. de banda"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Pré-carreg. dos resultados da pesquisa"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Permitir ao navegador pré-carreg. em 2º plano result. de pesq. de alta confiança"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema de conectividade de dados"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problemas com o ficheiro"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirmar"</string> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"Limpar histórico"</string> <string name="browser_history" msgid="1038987118290272525">"Páginas visitadas recentemente"</string> <string name="empty_history" msgid="8738772352308207274">"O histórico do browser está vazio."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Página Inicial"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Adicionar marcador..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Adicionar"</string> <string name="search_hint" msgid="4647356319916631820">"Pesquisar ou escrever URL"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"Partilhar"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Atingiu o limite de separadores"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google com Instantâneo (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Restaurar as janelas?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"O navegador bloqueou. Pretende restaurar as janelas utilizadas na última sessão?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Sim"</string> - <string name="recover_no" msgid="3121030267940592611">"Não"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Pré-visualizar:"</string> + <string name="preview" msgid="6450823514561689038">"Pré-visualizar"</string> <string name="local_bookmarks" msgid="533816851415228520">"Local"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Telemóvel"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Computador"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Pré-carregar resultados"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-pt-sw600dp/strings.xml b/res/values-pt-sw600dp/strings.xml index 831c0b9..d09d6b6 100644 --- a/res/values-pt-sw600dp/strings.xml +++ b/res/values-pt-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Abrir tudo em novas guias"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Abrir novas guias atrás da guia atual"</string> <string name="recover_title" msgid="1558775426269800998">"Restaurar guias?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Parece que o navegador travou. Restaurar as guias da última sessão?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Gostaria de restaurar as abas do navegador que estavam abertas da última vez?"</string> </resources> diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 01dc807..fc43851 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"O upload de arquivos está desativado."</string> <string name="new_tab" msgid="4505722538297295141">"Nova janela"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Nova janela anônima"</string> - <string name="active_tabs" msgid="3050623868203544623">"Janelas"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Favoritos"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Mais visitados"</string> <string name="tab_history" msgid="1979267558744613746">"Histórico"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Páginas salvas"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Adicionado aos favoritos"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Removido dos favoritos"</string> <string name="sign_in_to" msgid="5939425800148759165">"Fazer login no <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"O nome do site não corresponde ao nome no certificado."</string> <string name="ssl_expired" msgid="5739349389499575559">"Este certificado expirou."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Este certificado ainda não é válido."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Parando…"</string> <string name="stop" msgid="5687251076030630074">"Parar"</string> <string name="reload" msgid="8585220783228408062">"Atualizar"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Downloads"</string> <string name="copy_page_url" msgid="7635062169011319208">"Copiar URL da página"</string> <string name="share_page" msgid="593756995297268343">"Compartilhar página"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Congelar guia"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Salvar a página"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Página salva."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Falha ao salvar página."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Salvar para leitura off-line"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Falha ao salvar para leitura off-line."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> favoritos"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Pasta vazia"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Abrir"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Definir mecanismo de pesquisa"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Selecionar um mecanismo de pesquisa"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Definir para..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Página atual"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Página em branco"</string> - <string name="pref_use_default" msgid="192587563274735878">"Página padrão"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Página atual"</item> + <item msgid="4430498748295169195">"Página em branco"</item> + <item msgid="5747608191946904074">"Página padrão"</item> + <item msgid="6092441301001006473">"Sites mais visitados"</item> + <item msgid="5021822752506507426">"Outros..."</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Ajustar automaticamente"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formatar páginas da web para se ajustarem à tela"</string> <string name="pref_general_title" msgid="1946872771219249323">"Geral"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Perfil salvo"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Perfil excluído"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Excluir perfil"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Configurar preenchimento autom.?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"O navegador pode preencher automaticamente formulários da web como este. Gostaria de configurar seu perfil?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"O preenchimento automático sempre pode ser configurado através das configurações do navegador."</string> <string name="disable_autofill" msgid="8305901059849400354">"Desativar o preenchimento automático"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Enorme"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Tamanho mínimo da fonte"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Zoom do texto"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Forçar ativação de zoom"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Subst. ou não solic. do site para contr. zoom"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Zoom padrão"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codificação de texto"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Acessibilidade"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Tamanho da fonte"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Google Labs"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Controles rápidos"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Deslize o polegar da esqu. ou dir. para acessar controles rápidos e ocultar barras de apps e URL"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Páginas mais visitadas"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Sua página inicial exibe as páginas da web mais visitadas."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Use o Google Instant ao usar a Pesquisa Google para exibir resultados enquanto digita (o uso de dados pode aumentar)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Tela cheia"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Use o modo de tela cheia para ocultar a barra de status."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Renderização invertida"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Marcar essa opção resultará na alteração de cores pelo navegador. O preto se tornará branco e vice-versa."</string> + <string name="pref_data_title" msgid="750316606686075162">"Gerenc. de larg. de banda"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Pré-carreg. dos resultados da pesquisa"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Permitir ao naveg. pré-carr. result. de busca de alta confiança em segundo plano"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema de conectividade de dados"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problema com o arquivo"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confirmar"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Limpar histórico"</string> <string name="browser_history" msgid="1038987118290272525">"Páginas visitadas recentemente"</string> <string name="empty_history" msgid="8738772352308207274">"O histórico do navegador está vazio."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Página inicial"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Adicionar favorito…"</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Adicionar"</string> <string name="search_hint" msgid="4647356319916631820">"Pesquisar ou digitar URL"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Compartilhar"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Não há mais guias disponíveis"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google com Instant (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Restaurar janelas?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"O navegador parece ter travado. Gostaria de restaurar as janelas da última vez?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Sim"</string> - <string name="recover_no" msgid="3121030267940592611">"Não"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Visualizar:"</string> + <string name="preview" msgid="6450823514561689038">"Visualizar"</string> <string name="local_bookmarks" msgid="533816851415228520">"Locais"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Celular"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Computador"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Pré-carregar resultados"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Nenhuma página salva."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Excluir página salva"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml index 870558e..99ef39e 100644 --- a/res/values-rm/strings.xml +++ b/res/values-rm/strings.xml @@ -22,10 +22,11 @@ <skip /> <string name="new_tab" msgid="4505722538297295141">"Nova fanestra"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Nova fanestra incognito"</string> - <string name="active_tabs" msgid="3050623868203544623">"Fanestra"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Segnapaginas"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Visità il pli savens"</string> <string name="tab_history" msgid="1979267558744613746">"Cronologia"</string> + <!-- no translation found for tab_snapshots (4435852763803720588) --> + <skip /> <string name="added_to_bookmarks" msgid="1020224130695956728">"Agiuntà als segnapaginas"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Allontanà dals segnapaginas"</string> <string name="sign_in_to" msgid="5939425800148759165">"S\'annunziar tar <xliff:g id="HOSTNAME">%s1</xliff:g> «<xliff:g id="REALM">%s2</xliff:g>»"</string> @@ -49,6 +50,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Il num da la website na correspunda betg al num sin il certificat."</string> <string name="ssl_expired" msgid="5739349389499575559">"Quest certificat è scrudà."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Quest certificat n\'è anc betg valid."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Fermar…"</string> <string name="stop" msgid="5687251076030630074">"Fermar"</string> <string name="reload" msgid="8585220783228408062">"Actualisar"</string> @@ -116,11 +123,10 @@ <string name="menu_view_download" msgid="2124570321712995120">"Telechargiadas"</string> <string name="copy_page_url" msgid="7635062169011319208">"Copiar la URL da la pagina"</string> <string name="share_page" msgid="593756995297268343">"Barattar la pagina"</string> - <!-- no translation found for menu_freeze_tab (189603565552297099) --> + <!-- no translation found for menu_save_snapshot (6935080344031126139) --> + <skip /> + <!-- no translation found for snapshot_failed (6176197364690207251) --> <skip /> - <!-- outdated translation 3934652434001459581 --> <string name="menu_save_webarchive" msgid="2474117375302625691">"Memorisar sco archiv web"</string> - <!-- outdated translation 7045250341467345007 --> <string name="webarchive_saved" msgid="2212053339474523406">"Memorisà archiv da web"</string> - <!-- outdated translation 2880998204746620260 --> <string name="webarchive_failed" msgid="19950914584285713">"Betg reussì da memorisar l\'archiv da web."</string> <!-- no translation found for contextheader_folder_bookmarkcount (353987136645619089) --> <skip /> <!-- no translation found for contextheader_folder_empty (974171637803391651) --> @@ -165,11 +171,11 @@ <skip /> <!-- no translation found for pref_set_homepage_to (7196350233061395098) --> <skip /> - <!-- outdated translation 1493179933653044553 --> <string name="pref_use_current" msgid="1778622474040406672">"Utilisar la pagina actuala"</string> - <!-- no translation found for pref_use_blank (8503238592551111169) --> - <skip /> - <!-- no translation found for pref_use_default (192587563274735878) --> - <skip /> + <!-- no translation found for pref_homepage_choices:0 (844041670142910837) --> + <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) --> + <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) --> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> + <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) --> <string name="pref_content_autofit" msgid="8260474534053660809">"Adattar las paginas auto."</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Adattar las paginas web al visur"</string> <!-- no translation found for pref_general_title (1946872771219249323) --> @@ -248,6 +254,8 @@ <skip /> <!-- no translation found for autofill_profile_editor_delete_profile (2754563301088418752) --> <skip /> + <!-- no translation found for autofill_setup_dialog_title (1955613311837926540) --> + <skip /> <!-- no translation found for autofill_setup_dialog_message (6605682320156223114) --> <skip /> <!-- no translation found for autofill_setup_dialog_negative_toast (6990737008936188620) --> @@ -350,10 +358,6 @@ <skip /> <!-- no translation found for pref_lab_quick_controls_summary (1564546156544675707) --> <skip /> - <!-- no translation found for pref_lab_most_visited_homepage (7597766876952506909) --> - <skip /> - <!-- no translation found for pref_lab_most_visited_homepage_summary (4132511544800457513) --> - <skip /> <!-- no translation found for pref_use_instant_search (1119176077760723740) --> <skip /> <!-- no translation found for pref_use_instant_search_summary (839320474961917522) --> @@ -362,6 +366,16 @@ <skip /> <!-- no translation found for pref_lab_fullscreen_summary (6853711692160711419) --> <skip /> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <!-- no translation found for pref_data_title (750316606686075162) --> + <skip /> + <!-- no translation found for pref_data_preload_title (4479320472980292873) --> + <skip /> + <!-- no translation found for pref_data_preload_summary (7488335627364473744) --> + <skip /> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problem da connectivitad da datas"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem da datoteca"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Confermar"</string> @@ -492,14 +506,6 @@ <skip /> <!-- no translation found for instant_search_label (8769284297650716935) --> <skip /> - <!-- no translation found for recover_title (8095611702406163360) --> - <skip /> - <!-- no translation found for recover_prompt (6541354420842425606) --> - <skip /> - <!-- no translation found for recover_yes (4540538008955917099) --> - <skip /> - <!-- no translation found for recover_no (3121030267940592611) --> - <skip /> <!-- no translation found for preview (6450823514561689038) --> <skip /> <!-- no translation found for local_bookmarks (533816851415228520) --> @@ -508,4 +514,50 @@ <skip /> <!-- no translation found for ua_switcher_desktop (2535200543238676638) --> <skip /> + <!-- no translation found for permission_preload_label (4856971662337877316) --> + <skip /> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-ro-sw600dp/strings.xml b/res/values-ro-sw600dp/strings.xml index a9bfc33..05028fb 100644 --- a/res/values-ro-sw600dp/strings.xml +++ b/res/values-ro-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Deschideţi-le pe toate în file noi"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Deschideţi filele noi în spatele celei curente"</string> <string name="recover_title" msgid="1558775426269800998">"Restabiliţi filele?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Browserul pare să se fi blocat. Doriţi să restabiliţi filele din ultima sesiune?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Doriţi să restabiliţi filele dvs. de browser din ultima sesiune?"</string> </resources> diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index b73936c..02eaaba 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Încărcarea fişierelor este dezactivată."</string> <string name="new_tab" msgid="4505722538297295141">"Fereastră nouă"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Fereastră incognito nouă"</string> - <string name="active_tabs" msgid="3050623868203544623">"Windows"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Marcaje"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Cele mai vizitate"</string> <string name="tab_history" msgid="1979267558744613746">"Istoric"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Pagini salvate"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Adăugat la marcaje"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Eliminat din marcaje"</string> <string name="sign_in_to" msgid="5939425800148759165">"Conectaţi-vă la <xliff:g id="HOSTNAME">%s1</xliff:g> „<xliff:g id="REALM">%s2</xliff:g>”"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Numele acestui site nu se potriveşte cu numele de pe certificat."</string> <string name="ssl_expired" msgid="5739349389499575559">"Acest certificat a expirat."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Acest certificat nu este încă valid."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Se opreşte..."</string> <string name="stop" msgid="5687251076030630074">"Opriţi"</string> <string name="reload" msgid="8585220783228408062">"Actualizaţi"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Descărcări"</string> <string name="copy_page_url" msgid="7635062169011319208">"Copiaţi adresa URL a paginii"</string> <string name="share_page" msgid="593756995297268343">"Distribuiţi pagina"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Îngheţaţi fila"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Salvaţi pagina"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Pagina a fost salvată."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Pagina nu a fost salvată."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Salvaţi pentru lectură offline"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Salvarea pentru lectura offline a eşuat."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> (de) marcaje"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Dosar gol"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Deschideţi"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Setaţi motorul de căutare"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Selectaţi un motor de căutare"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Setaţi la..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Pagina curentă"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Pagină goală"</string> - <string name="pref_use_default" msgid="192587563274735878">"Pagina prestabilită"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"Potriviţi paginile automat"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Formataţi paginile web pentru a se potrivi cu ecranul"</string> <string name="pref_general_title" msgid="1946872771219249323">"General"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profilul a fost salvat"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profilul a fost şters"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Ştergeţi profilul"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Config. completarea automată?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Browserul poate completa în mod automat formulare web ca acesta. Doriţi să vă configuraţi profilul?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Completarea automată poate fi configurată oricând din Setările browserului."</string> <string name="disable_autofill" msgid="8305901059849400354">"Dezactivaţi completarea automată"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"Foarte mare"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Dimensiunea minimă a fontului"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Zoom text"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Forţaţi activarea zoomului"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Suprascriere solicitare site web pentru control comportament zoom"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Zoom prestabilit"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Codificare text"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Accesibilitate"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Dimensiunea fontului"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Laborator"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Comenzi rapide"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Glis. deg. mare din marg. st. sau dr. şi acc. com. rapide/asc. bar. Apl. şi URL"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Pagina de pornire cea mai accesată"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Pagina dvs. de pornire afişează paginile web cele mai accesate."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Utilizaţi Google Instant în Căutarea Google şi vedeţi rezultate în timp ce introd. text (creşte vol. de date utilizate)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Ecran complet"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Utilizaţi modul ecran complet pentru a ascunde bara de stare."</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"Gestion. lăţimii de bandă"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Se preîncarcă rezultatele căutării"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Permiteţi browserului să preîncarce în fundal rezultatele cu încredere ridicată"</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> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"Ştergeţi istoricul"</string> <string name="browser_history" msgid="1038987118290272525">"Pagini recent vizitate"</string> <string name="empty_history" msgid="8738772352308207274">"Istoricul de navigare este gol."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Pagina de pornire"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Adăugaţi marcajul..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Adăugaţi"</string> <string name="search_hint" msgid="4647356319916631820">"Căutaţi sau introduceţi adresa URL"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"Distribuiţi"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Nu mai există file disponibile"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google cu Instant (Google Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Restabiliţi ferestrele?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Browserul pare să se fi blocat. Doriţi să restabiliţi ferestrele din ultima sesiune?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Da"</string> - <string name="recover_no" msgid="3121030267940592611">"Nu"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Previzualizaţi:"</string> + <string name="preview" msgid="6450823514561689038">"Previzualizaţi"</string> <string name="local_bookmarks" msgid="533816851415228520">"Locale"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Desktop"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Se preîncarcă rezultatele"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-ru-sw600dp/strings.xml b/res/values-ru-sw600dp/strings.xml index febeeed..1a8d1a4 100644 --- a/res/values-ru-sw600dp/strings.xml +++ b/res/values-ru-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Открыть все в новых вкладках"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Открывать новые вкладки позади текущей"</string> <string name="recover_title" msgid="1558775426269800998">"Восстановить вкладки?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Произошел сбой в работе браузера. Восстановить вкладки последнего сеанса?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Восстановить вкладки браузера, открытые в прошлый раз?"</string> </resources> diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index f887b46..d0243f5 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Добавление файлов отключено."</string> <string name="new_tab" msgid="4505722538297295141">"Новое окно"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Новое окно в режиме инкогнито"</string> - <string name="active_tabs" msgid="3050623868203544623">"Окна"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Закладки"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Часто посещаемые"</string> <string name="tab_history" msgid="1979267558744613746">"История"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Сохраненные страницы"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Добавлено в закладки"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Удалено из закладок"</string> <string name="sign_in_to" msgid="5939425800148759165">"Войти в <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Название сайта не соответствует названию в сертификате."</string> <string name="ssl_expired" msgid="5739349389499575559">"Срок действия сертификата истек."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Данный сертификат еще недействителен."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Остановка..."</string> <string name="stop" msgid="5687251076030630074">"Стоп"</string> <string name="reload" msgid="8585220783228408062">"Обновить"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Загрузки"</string> <string name="copy_page_url" msgid="7635062169011319208">"Копировать URL страницы"</string> <string name="share_page" msgid="593756995297268343">"Отправить страницу"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Зафиксировать вкладку"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Сохранить страницу"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Страница сохранена."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Не удалось сохранить страницу."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Сохранить для чтения офлайн"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Ошибка при сохранении для чтения офлайн."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Закладок: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Папка пуста"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Открыть"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Поисковая система"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Выберите поисковую систему"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"При запуске браузера"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Показывать текущую страницу"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Показывать пустую страницу"</string> - <string name="pref_use_default" msgid="192587563274735878">"Показывать страницу по умолчанию"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"Мобильный вид"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Адаптировать контент к размеру экрана мобильного устройства"</string> <string name="pref_general_title" msgid="1946872771219249323">"Общие"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Профиль сохранен"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Профиль удален"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Удалить профиль"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Настроить автозаполнение?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Браузер может заполнять такие формы автоматически. Настроить профиль автозаполнения?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Автозаполнение всегда можно настроить в меню \"Настройки браузера\"."</string> <string name="disable_autofill" msgid="8305901059849400354">"Отключить автозаполнение"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"Огромный"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Минимальный размер шрифта"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Масштаб текста"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Менять масштаб принудительно"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Учитывать ли запросы сайтов при управлении масштабом"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Масштаб по умолчанию"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Кодировка текста"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Специальные возможности"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Размер шрифта"</string> <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_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_lab_fullscreen" msgid="8173609016657987973">"Во весь экран"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Чтобы скрыть строку состояния, используйте полноэкранный режим."</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"Пропускная способность"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Загрузка результатов поиска"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Разрешить браузеру загружать достоверные результаты поиска в фоновом режиме"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблема с подключением"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблема с файлом"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Подтвердить"</string> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"Очистить историю"</string> <string name="browser_history" msgid="1038987118290272525">"Недавно посещенные"</string> <string name="empty_history" msgid="8738772352308207274">"История браузера пуста."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Главная страница"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Добавить закладку…"</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Добавить"</string> <string name="search_hint" msgid="4647356319916631820">"Введите условия поиска или URL-адрес"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"Отправить"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Достигнут предел количества вкладок"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google с Живым поиском (Лаборатория Google)"</string> - <string name="recover_title" msgid="8095611702406163360">"Восстановить окна?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Произошел сбой в работе браузера. Восстановить окна последнего сеанса?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Да"</string> - <string name="recover_no" msgid="3121030267940592611">"Нет"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Просмотр"</string> + <string name="preview" msgid="6450823514561689038">"Предварительный просмотр"</string> <string name="local_bookmarks" msgid="533816851415228520">"Локальные"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Мобильная"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Обычная"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Загрузить результаты"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-sk-sw600dp/strings.xml b/res/values-sk-sw600dp/strings.xml index ef551dd..8125cd2 100644 --- a/res/values-sk-sw600dp/strings.xml +++ b/res/values-sk-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Otvoriť všetky na nových kartách"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Otvárať nové karty za aktuálnou kartou"</string> <string name="recover_title" msgid="1558775426269800998">"Obnoviť karty?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Zrejme došlo k zlyhaniu prehliadača. Chcete obnoviť naposledy otvorené karty?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Chcete obnoviť naposledy otvorené karty prehliadača?"</string> </resources> diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 4c33a5f..bb948eb 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Odovzdávanie súborov je zakázané."</string> <string name="new_tab" msgid="4505722538297295141">"Nové okno"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Nové okno inkognito"</string> - <string name="active_tabs" msgid="3050623868203544623">"Windows"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Záložky"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Najviac navštevované"</string> <string name="tab_history" msgid="1979267558744613746">"História"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Uložené stránky"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Pridané medzi záložky"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Odstránené zo záložiek"</string> <string name="sign_in_to" msgid="5939425800148759165">"Prihláste sa do služby <xliff:g id="HOSTNAME">%s1</xliff:g> „<xliff:g id="REALM">%s2</xliff:g>“"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Názov webu sa nezhoduje s názvom uvedeným v certifikáte."</string> <string name="ssl_expired" msgid="5739349389499575559">"Platnosť certifikátu skončila."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Tento certifikát zatiaľ nie je platný."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Prebieha zastavenie..."</string> <string name="stop" msgid="5687251076030630074">"Zastaviť"</string> <string name="reload" msgid="8585220783228408062">"Obnoviť"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Prevzatia"</string> <string name="copy_page_url" msgid="7635062169011319208">"Kopírovať adresu URL stránky"</string> <string name="share_page" msgid="593756995297268343">"Zdieľať stránku"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Zmraziť kartu"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Uložiť stránku"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Stránka bola uložená."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Ukladanie stránky zlyhalo."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Uložiť na čítanie offline"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Uloženie na čítanie offline zlyhalo."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Počet záložiek: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Prázdny priečinok"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Otvoriť"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Nastaviť vyhľadávací nástroj"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Výber vyhľadávacieho nástroja"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Nastaviť na..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Aktuálna stránka"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Prázdna stránka"</string> - <string name="pref_use_default" msgid="192587563274735878">"Predvolená stránka"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"Automaticky prispôsobiť"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Prispôsobiť veľkosť webových stránok obrazovke"</string> <string name="pref_general_title" msgid="1946872771219249323">"Všeobecné"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil uložený"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil bol odstránený."</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Odstrániť profil"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Nastaviť automatické dopĺňanie?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Prehliadač dokáže automaticky vyplniť webové formuláre, ako je tento. Chcete nastaviť svoj profil?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Automatické dopĺňanie môžete kedykoľvek nakonfigurovať v Nastaveniach prehliadača."</string> <string name="disable_autofill" msgid="8305901059849400354">"Zakázať automatické dopĺňanie"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"Veľmi veľký"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Minimálna veľkosť písma"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> bodov"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Priblíženie textu"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Vynút. povolenie priblíženia"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Prekonanie žiadosti lokality o ovládanie priblíženia"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Predvolené priblíženie"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Kódovanie textu"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Zjednodušenie"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Veľkosť písma"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Rýchle ovládacie prvky"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Posuňte prstom v smere od ľavého alebo pravého okraja, čím rýchlo pristúpite k ovládacím prvkom a skryjete panely aplikácií a adresy URL"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Najviac navštevovaná domovská stránka"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Na vašej domovskej stránke sa zobrazujú najviac navštevované webové stránky."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Dynamické vyhľadávanie Google"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Ak chcete zobrazovať výsl. počas zadávania textu, použite Dynamické vyhľ. Google (môže sa zvýšiť spotr. údajov)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Celá obrazovka"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Ak chcete skryť stavový riadok, použite režim celej obrazovky."</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"Správa šírky pásma"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Predbežné načít. výsledkov vyhľadávania"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Umožniť prehliadaču na pozadí predbežne načítať relevantné výsledky vyhľadávania"</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> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"Vymazať históriu"</string> <string name="browser_history" msgid="1038987118290272525">"Nedávno navštívené stránky"</string> <string name="empty_history" msgid="8738772352308207274">"História prehliadača je prázdna."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Domov"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Pridať záložku..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Pridať"</string> <string name="search_hint" msgid="4647356319916631820">"Vyhľadajte alebo zadajte adresu URL"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"Zdieľať"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"K dispozícii nie sú žiadne ďalšie záložky"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google s Dynamickým vyhľadávaním (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Obnoviť okná?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Zrejme došlo k zlyhaniu prehliadača. Chcete obnoviť naposledy otvorené okná?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Áno"</string> - <string name="recover_no" msgid="3121030267940592611">"Nie"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Ukážka:"</string> + <string name="preview" msgid="6450823514561689038">"Zobraziť ukážku"</string> <string name="local_bookmarks" msgid="533816851415228520">"Miestne"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Stolný počítač"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Predbežné načítanie výsledkov"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-sl-sw600dp/strings.xml b/res/values-sl-sw600dp/strings.xml index 046d623..a99f4b7 100644 --- a/res/values-sl-sw600dp/strings.xml +++ b/res/values-sl-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Odpri vse na novih zavihkih"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Odpri nove zavihke za trenutnim"</string> <string name="recover_title" msgid="1558775426269800998">"Želite obnoviti zavihke?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Videti je, da se je brskalnik zrušil. Želite obnoviti prejšnje zavihke?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Ali želite obnoviti zavihke od zadnjega obiska?"</string> </resources> diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index a330a1f..60006b2 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Prenosi datotek so onemogočeni."</string> <string name="new_tab" msgid="4505722538297295141">"Novo okno"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Novo okno brez belež. zgod."</string> - <string name="active_tabs" msgid="3050623868203544623">"Okna"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Zaznamki"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Najpogosteje obiskovano"</string> <string name="tab_history" msgid="1979267558744613746">"Zgodovina"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Shranjene strani"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Dodano med zaznamke"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Odstranjeno iz zaznamkov"</string> <string name="sign_in_to" msgid="5939425800148759165">"Prijavi se v <xliff:g id="HOSTNAME">%s1</xliff:g> »<xliff:g id="REALM">%s2</xliff:g>«"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Ime mesta se ne ujema z imenom potrdila."</string> <string name="ssl_expired" msgid="5739349389499575559">"Potrdilo je poteklo."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Potrdilo še ni veljavno."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Ustavljanje ..."</string> <string name="stop" msgid="5687251076030630074">"Ustavi"</string> <string name="reload" msgid="8585220783228408062">"Osveži"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Prenosi"</string> <string name="copy_page_url" msgid="7635062169011319208">"Kopiraj URL strani"</string> <string name="share_page" msgid="593756995297268343">"Stran deli z drugimi"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Zamrzni zavihek"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Shrani stran"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Stran je shranjena."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Shranjevanje strani ni uspelo."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Shrani za branje brez povezave"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Shranjevanje za branje brez povezave ni uspelo."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Število zaznamkov: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Prazna mapa"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Odpri"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Nastavi iskalnik"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Izberi iskalnik"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Nastavi na ..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Trenutna stran"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Prazna stran"</string> - <string name="pref_use_default" msgid="192587563274735878">"Privzeta stran"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Trenutna stran"</item> + <item msgid="4430498748295169195">"Prazna stran"</item> + <item msgid="5747608191946904074">"Privzeta stran"</item> + <item msgid="6092441301001006473">"Najbolj obiskana spletna mesta"</item> + <item msgid="5021822752506507426">"Drugo ..."</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Samodejno prilagodi velikost strani"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Oblikuj spletne strani, da se prilegajo zaslonu"</string> <string name="pref_general_title" msgid="1946872771219249323">"Splošno"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil je shranjen"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil je izbrisan"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Izbriši profil"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Nastavitev samozapolnjevanja"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Brskalnik lahko samodejno izpolni spletne obrazce, kot je ta. Ali želite prilagoditi svoj profil?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Samodejno izpolnjevanje lahko nastavite v nastavitvah brskalnika."</string> <string name="disable_autofill" msgid="8305901059849400354">"Onemogoči samodejno izpolnjevanje"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Velikanska"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Najmanjša velikost pisave"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Povečava pisave"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Vsili povečavo"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Preglas. zaht. mesta za nadz. povečave?"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Privzeta povečava/pomanjšava"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Kodiranje besedila"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Nastavitve za osebe s posebnimi potrebami"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Velikost pisave"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Laboratoriji"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Hitri kontrolniki"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Povlecite palec z l./d. roba za hitre kontr. in skrivanje vrstic Program in URL"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Stran »Najpogosteje obiskana mesta«"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Na domači strani so prikazane najpogosteje obiskane spletne strani."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Dinamično iskanje"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Če uporabljate Google Dinamično iskanje, se rezultati prikazujejo že med tipkanjem, kar lahko poveča porabo podatkov."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Celozaslonsko"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Če želite skriti vrstico stanja, uporabite celozaslonski način."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Obrnjeno upodabljanje"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Če izberete to možnost, bo brskalnik obrnil barve. Črna postane bela in obratno."</string> + <string name="pref_data_title" msgid="750316606686075162">"Upravljanje pasov. širine"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Vnaprejšnje nalaganje rezultatov iskanja"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Dovoli brskalniku vnapr. nalag. rezult. z visoko stopnjo zanesljivosti v ozadju."</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Težava s povezljivostjo podatkov"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Težava z datoteko"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Potrdi"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Počisti zgodovino"</string> <string name="browser_history" msgid="1038987118290272525">"Nedavno obiskane strani"</string> <string name="empty_history" msgid="8738772352308207274">"Zgodovina brskanja je prazna."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Domača stran"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Dodaj zaznamek ..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Dodaj"</string> <string name="search_hint" msgid="4647356319916631820">"Poiščite ali vnesite URL"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Skupna raba"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Ni več razpoložljivih zavihkov"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google z Dinamičnim iskanjem (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Želite obnoviti okna?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Videti je, da se je brskalnik zrušil. Želite obnoviti prejšnja okna?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Da"</string> - <string name="recover_no" msgid="3121030267940592611">"Ne"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Predogled:"</string> + <string name="preview" msgid="6450823514561689038">"Predogled"</string> <string name="local_bookmarks" msgid="533816851415228520">"Lokalno"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobilna različica"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Namizje"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Vnaprej naloži rezultate"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Ni shranjenih strani."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Brisanje shranjene strani"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-sr-sw600dp/strings.xml b/res/values-sr-sw600dp/strings.xml index 5cf039b..a90f027 100644 --- a/res/values-sr-sw600dp/strings.xml +++ b/res/values-sr-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Отвори све у новим картицама"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Отварање нових картица иза тренутне"</string> <string name="recover_title" msgid="1558775426269800998">"Желите ли да вратите картице?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Изгледа да је прегледач отказао. Желите ли да вратите картице које сте последње користили?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Желите ли да вратите картице прегледача које сте последње користили?"</string> </resources> diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 01c2a9e..2e0d60b 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Отпремање датотека је онемогућено."</string> <string name="new_tab" msgid="4505722538297295141">"Нови прозор"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Нов прозор без архивирања"</string> - <string name="active_tabs" msgid="3050623868203544623">"Прозори"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Обележивачи"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Најпосећенији"</string> <string name="tab_history" msgid="1979267558744613746">"Историја"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Сачуване странице"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Додато у обележиваче"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Уклоњено из обележивача"</string> <string name="sign_in_to" msgid="5939425800148759165">"Пријављивање на <xliff:g id="HOSTNAME">%s1</xliff:g> „<xliff:g id="REALM">%s2</xliff:g>“"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Назив сајта се не подудара са називом на сертификату."</string> <string name="ssl_expired" msgid="5739349389499575559">"Овај сертификат је истекао."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Овај сертификат још увек није важећи."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Заустављање…"</string> <string name="stop" msgid="5687251076030630074">"Заустави"</string> <string name="reload" msgid="8585220783228408062">"Освежи"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Преузимања"</string> <string name="copy_page_url" msgid="7635062169011319208">"Копирај URL адресу странице"</string> <string name="share_page" msgid="593756995297268343">"Дели страницу"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Замрзни картицу"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Сачувај страницу"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Страница је сачувана."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Чување странице није успело."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Сачувај за читање ван мреже"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Чување за читање ван мреже није успело."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> обележивача"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Празан директоријум"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Отвори"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Подешавање претраживача"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Изаберите претраживач"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Подеси на…"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Тренутна страница"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Празна страница"</string> - <string name="pref_use_default" msgid="192587563274735878">"Подразумевана страница"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"Аутоматски уклопи странице"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Подешавање формата веб страница тако да се уклопе на екран"</string> <string name="pref_general_title" msgid="1946872771219249323">"Општa"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Профил је сачуван"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Профил је избрисан"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Избриши профил"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Да подесите аутом. попуњавање?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Прегледач може аутоматски да попуњава веб обрасце попут овог. Желите ли да подесите профил?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Аутоматско попуњавање увек можете да конфигуришете у Подешавањима прегледача."</string> <string name="disable_autofill" msgid="8305901059849400354">"Онемогући аутоматско попуњавање"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"Огромно"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Минимална величина фонта"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Зумирање текста"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Принудно омогући зум"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Да ли треба одбити захтев веб сајта за контролу понашања зума"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Подразумевано зумирај"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Кодирање текста"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Приступачност"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Величина фонта"</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_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_lab_fullscreen" msgid="8173609016657987973">"Цео екран"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Сакријте статусну траку помоћу режима целог екрана."</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"Управљање проп. опсегом"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Учитавање резултата претраге унапред"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Дозволи да прегледач у позадини унапред учита резултате претраге високог степена поузданости"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблем при повезивању са подацима"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблем са датотеком"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Потврда"</string> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"Обриши историју"</string> <string name="browser_history" msgid="1038987118290272525">"Недавно посећене странице"</string> <string name="empty_history" msgid="8738772352308207274">"Историја прегледача је празна."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Почетна"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Додај обележивач..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Додај"</string> <string name="search_hint" msgid="4647356319916631820">"Претражите или унесите URL адресу"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"Дели"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Нема више доступних картица"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google са Инстантом (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Желите ли да вратите прозоре?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Изгледа да је прегледач отказао. Желите ли да вратите прозоре које сте последње користили?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Да"</string> - <string name="recover_no" msgid="3121030267940592611">"Не"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Преглед:"</string> + <string name="preview" msgid="6450823514561689038">"Преглед"</string> <string name="local_bookmarks" msgid="533816851415228520">"Локални"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Мобилни"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Рачунар"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Учитавање резултата унапред"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-sv-sw600dp/strings.xml b/res/values-sv-sw600dp/strings.xml index 978731c..a3bf478 100644 --- a/res/values-sv-sw600dp/strings.xml +++ b/res/values-sv-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Öppna alla i nya flikar"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Öppna nya flikar bakom den aktiva"</string> <string name="recover_title" msgid="1558775426269800998">"Vill du återställa flikarna?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Webbläsaren verkar ha kraschat. Vill du återställa flikarna från förra gången?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Vill du återställa webbläsarflikarna från förra gången?"</string> </resources> diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index e6bb183..8976787 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Filöverföringen har inaktiverats."</string> <string name="new_tab" msgid="4505722538297295141">"Nytt fönster"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Nytt inkognitofönster"</string> - <string name="active_tabs" msgid="3050623868203544623">"Fönster"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Bokmärken"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Mest besökta"</string> <string name="tab_history" msgid="1979267558744613746">"Historik"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Sparade sidor"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Har lagts till i Bokmärken"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Har tagits bort från Bokmärken"</string> <string name="sign_in_to" msgid="5939425800148759165">"Logga in på <xliff:g id="HOSTNAME">%s1</xliff:g> <xliff:g id="REALM">%s2</xliff:g>"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Webbplatsens namn stämmer inte med namnet på certifikatet."</string> <string name="ssl_expired" msgid="5739349389499575559">"Certifikatet har upphört att gälla."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Certifikatet är inte giltigt än."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Avbryter…"</string> <string name="stop" msgid="5687251076030630074">"Stoppa"</string> <string name="reload" msgid="8585220783228408062">"Uppdatera"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Hämtningar"</string> <string name="copy_page_url" msgid="7635062169011319208">"Kopiera sidans webbadress"</string> <string name="share_page" msgid="593756995297268343">"Dela sida"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Frys fliken"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Spara sida"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Sidan har sparats."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Sidan kunde inte sparas."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Spara för läsning offline"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Det gick inte att spara för läsning offline."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> bokmärken"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Tom mapp"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Öppna"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Ange sökmotor"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Välj en sökmotor"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Ställ in på..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Aktuell sida"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Tom sida"</string> - <string name="pref_use_default" msgid="192587563274735878">"Standardsida"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"Autoanpassa sidor"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Anpassa webbsidor efter skärmen"</string> <string name="pref_general_title" msgid="1946872771219249323">"Allmänt"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profilen har sparats"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profilen har tagits bort"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Ta bort profil"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Vill du konfigurera autofyll?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Webbläsaren kan fylla i den här typen av formulär automatiskt. Vill du skapa en profil?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Du kan när som helst ändra inställningarna för Autofyll bland inställningarna för webbläsaren."</string> <string name="disable_autofill" msgid="8305901059849400354">"Inaktivera Autofyll"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"Mycket stor"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Minsta teckenstorlek"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Zooma in text"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Tvinga aktivering av zoom"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Om en webbplats begäran om att styra zoomfunktionen ska åsidosättas"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Standardinställning för zoom"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Textkodning"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Tillgänglighet"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Teckenstorlek"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Snabbkontroller"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Svep från vänster eller höger så visas snabbkontrollerna och program- och adressfälten döljs"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Mest besökt startsida"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"På startsidan visas de webbplatser du besöker oftast."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Använd Google Instant när du söker på Google så får du resultat medan du skriver (detta kan öka dataanvändningen)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Helskärm"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Använd helskärmsläge om du vill dölja statusfältet."</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"Bandbreddshantering"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Förinläsning av sökresultat"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Låt webbläsaren läsa in säkra sökresultat i förväg i bakgrunden"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problem med dataanslutning"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problem med filen"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Bekräfta"</string> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"Rensa historik"</string> <string name="browser_history" msgid="1038987118290272525">"Senast besökta sidor"</string> <string name="empty_history" msgid="8738772352308207274">"Det finns ingen webbläsarhistorik."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Startsida"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Lägg till bokmärke…"</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Lägg till"</string> <string name="search_hint" msgid="4647356319916631820">"Ange eller sök efter webbplats"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"Dela"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Det finnns inga fler flikar"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google med Instant (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Vill du återställa fönster?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Webbläsaren verkar ha kraschat. Vill du återställa dina fönster från förra gången?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Ja"</string> - <string name="recover_no" msgid="3121030267940592611">"Nej"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Förhandsgranska:"</string> + <string name="preview" msgid="6450823514561689038">"Förhandsgranska"</string> <string name="local_bookmarks" msgid="533816851415228520">"Lokala"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Skrivbord"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Läs in resultat i förväg"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 900dbb2..c599860 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -22,10 +22,11 @@ <skip /> <string name="new_tab" msgid="4505722538297295141">"Dirisha jipya"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Dirisha fiche jipya"</string> - <string name="active_tabs" msgid="3050623868203544623">"Windows"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Alamisho"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Zilizotembelewa sana"</string> <string name="tab_history" msgid="1979267558744613746">"Historia"</string> + <!-- no translation found for tab_snapshots (4435852763803720588) --> + <skip /> <string name="added_to_bookmarks" msgid="1020224130695956728">"Imeongezwa kwa alamisho"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Imeondolewa kutoka kwa alamisho"</string> <string name="sign_in_to" msgid="5939425800148759165">"Ingia kwa <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -64,25 +65,11 @@ <skip /> <!-- no translation found for ssl_not_yet_valid (2893167846212645846) --> <skip /> - <!-- no translation found for ssl_certificate (5226747157992111668) --> - <skip /> - <!-- no translation found for ssl_certificate_is_valid (7096160815933145579) --> - <skip /> - <!-- no translation found for issued_to (9032338008819841339) --> - <skip /> - <!-- no translation found for common_name (5745530093500062357) --> - <skip /> - <!-- no translation found for org_name (8868889052889991293) --> - <skip /> - <!-- no translation found for org_unit (4489056376307768196) --> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> <skip /> - <!-- no translation found for issued_by (6959484326943152487) --> + <!-- no translation found for ssl_invalid (9041704741505449967) --> <skip /> - <!-- no translation found for validity_period (57988851973181309) --> - <skip /> - <!-- no translation found for issued_on (2082890654801808368) --> - <skip /> - <!-- no translation found for expires_on (8061200430557020704) --> + <!-- no translation found for ssl_unknown (5679243486524754571) --> <skip /> <!-- no translation found for stopping (4839698519340302982) --> <skip /> @@ -162,11 +149,10 @@ <string name="copy_page_url" msgid="7635062169011319208">"Nakili url ya ukurasa"</string> <!-- no translation found for share_page (593756995297268343) --> <skip /> - <!-- no translation found for menu_freeze_tab (189603565552297099) --> + <!-- no translation found for menu_save_snapshot (6935080344031126139) --> + <skip /> + <!-- no translation found for snapshot_failed (6176197364690207251) --> <skip /> - <!-- outdated translation 3934652434001459581 --> <string name="menu_save_webarchive" msgid="2474117375302625691">"Hifadhi kama Jalada la Wavuti"</string> - <!-- outdated translation 7045250341467345007 --> <string name="webarchive_saved" msgid="2212053339474523406">"Jalada la wavuti limehifadhiwa."</string> - <!-- outdated translation 2880998204746620260 --> <string name="webarchive_failed" msgid="19950914584285713">"Imeshindwa kuhifadhi jalada la wavuti"</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Alamisho <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Folda iko tupu"</string> <!-- no translation found for contextmenu_openlink (7237961252214188935) --> @@ -228,9 +214,11 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Weka injini tafuti"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Teua injini tafuti"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Weka kwa..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Ukurasa wa sasa"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Ukurasa mtupu"</string> - <string name="pref_use_default" msgid="192587563274735878">"Ukurasa chaguo-msingi"</string> + <!-- no translation found for pref_homepage_choices:0 (844041670142910837) --> + <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) --> + <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) --> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> + <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) --> <!-- no translation found for pref_content_autofit (8260474534053660809) --> <skip /> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Fomati kurasa za wavuti ili zitoshee skrini"</string> @@ -277,6 +265,8 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Maelezo Mafupi yamehifadhiwa"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Maelezo mafupi yamefutwa"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Futa maelezo mafupi"</string> + <!-- no translation found for autofill_setup_dialog_title (1955613311837926540) --> + <skip /> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Kivinjari kinaweza kukamilisha fomu za wavuti kama hii kiotomatiki. Je, ungependa kuweka maelezo yako mafupi?"</string> <!-- no translation found for autofill_setup_dialog_negative_toast (6990737008936188620) --> <skip /> @@ -384,8 +374,6 @@ <string name="pref_lab_title" msgid="5571091610359629423">"Maabara"</string> <!-- outdated translation 2105979166017257647 --> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Vidhibiti vya Haraka"</string> <!-- outdated translation 8025196176636589803 --> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Pitisha kidole cha gumba kutoka kona ya kushoto au kulia ili kufikia vidhibiti vya haraka"</string> - <!-- outdated translation 547134501893835512 --> <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Ukurasa wa nyumbani unaotembelewa zaidi"</string> - <!-- outdated translation 6857702350834122532 --> <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Huweka ukurasa wako wa nyumbani kuonyesha kurasa zilizotembelewa zaidi."</string> <!-- no translation found for pref_use_instant_search (1119176077760723740) --> <skip /> <!-- no translation found for pref_use_instant_search_summary (839320474961917522) --> @@ -394,6 +382,16 @@ <skip /> <!-- no translation found for pref_lab_fullscreen_summary (6853711692160711419) --> <skip /> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <!-- no translation found for pref_data_title (750316606686075162) --> + <skip /> + <!-- no translation found for pref_data_preload_title (4479320472980292873) --> + <skip /> + <!-- no translation found for pref_data_preload_summary (7488335627364473744) --> + <skip /> <!-- no translation found for browserFrameNetworkErrorLabel (126892350904924893) --> <skip /> <!-- no translation found for browserFrameFileErrorLabel (8063691502792670367) --> @@ -552,14 +550,6 @@ <string name="max_tabs_warning" msgid="4122034303809457570">"Hakuna vichupo zaidi vinavyopatikana"</string> <!-- no translation found for instant_search_label (8769284297650716935) --> <skip /> - <!-- no translation found for recover_title (8095611702406163360) --> - <skip /> - <!-- no translation found for recover_prompt (6541354420842425606) --> - <skip /> - <!-- no translation found for recover_yes (4540538008955917099) --> - <skip /> - <!-- no translation found for recover_no (3121030267940592611) --> - <skip /> <!-- no translation found for preview (6450823514561689038) --> <skip /> <!-- no translation found for local_bookmarks (533816851415228520) --> @@ -568,4 +558,50 @@ <skip /> <!-- no translation found for ua_switcher_desktop (2535200543238676638) --> <skip /> + <!-- no translation found for permission_preload_label (4856971662337877316) --> + <skip /> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-sw600dp/dimensions.xml b/res/values-sw600dp/dimensions.xml index e1ed19e..bc87333 100644 --- a/res/values-sw600dp/dimensions.xml +++ b/res/values-sw600dp/dimensions.xml @@ -35,4 +35,8 @@ <dimen name="qc_thumb_height">160dip</dimen> <dimen name="qc_item_size">48dip</dimen> <dimen name="suggest_item_padding">16dp</dimen> + <dimen name="toolbar_height">48dip</dimen> + <dimen name="progress_bar_margin">-11dip</dimen> + <dimen name="tab_thumbnail_width">@dimen/qc_thumb_width</dimen> + <dimen name="tab_thumbnail_height">@dimen/qc_thumb_height</dimen> </resources> diff --git a/res/values-sw600dp/styles.xml b/res/values-sw600dp/styles.xml index 1bd6172..41e09ae 100644 --- a/res/values-sw600dp/styles.xml +++ b/res/values-sw600dp/styles.xml @@ -20,7 +20,7 @@ <item name="android:windowActionBar">true</item> <item name="android:windowNoTitle">false</item> <item name="android:actionBarStyle">@style/ActionBarStyle</item> - <item name="android:actionButtonStyle">@style/ActionButton</item> + <item name="android:actionBarSize">56dip</item> </style> <style name="Suggestions" parent="@android:style/Widget.Holo.AutoCompleteTextView"> </style> diff --git a/res/values-th-sw600dp/strings.xml b/res/values-th-sw600dp/strings.xml index e530d33..f615cce 100644 --- a/res/values-th-sw600dp/strings.xml +++ b/res/values-th-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"เปิดทั้งหมดในแท็บใหม่"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"เปิดแท็บใหม่หลังแท็บปัจจุบัน"</string> <string name="recover_title" msgid="1558775426269800998">"คืนค่าแท็บหรือไม่"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"ดูเหมือนว่าจะเกิดข้อขัดข้องกับเบราว์เซอร์ คุณต้องการคืนค่าแท็บจากครั้งที่แล้วหรือไม่"</string> + <string name="recover_prompt" msgid="377456662058488205">"คุณต้องการคืนค่าแท็บของเบราว์เซอร์จากครั้งที่แล้วหรือไม่"</string> </resources> diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 89eea40..7565394 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"การอัปโหลดไฟล์ถูกปิดใช้งาน"</string> <string name="new_tab" msgid="4505722538297295141">"หน้าต่างใหม่"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"หน้าต่างใหม่ที่ไม่ระบุตัวตน"</string> - <string name="active_tabs" msgid="3050623868203544623">"Windows"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"บุ๊กมาร์ก"</string> <string name="tab_most_visited" msgid="1077402532455000703">"เข้าชมมากที่สุด"</string> <string name="tab_history" msgid="1979267558744613746">"ประวัติ"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"หน้าที่บันทึกไว้"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"เพิ่มลงในบุ๊กมาร์กแล้ว"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"นำออกจากบุ๊กมาร์ก"</string> <string name="sign_in_to" msgid="5939425800148759165">"ลงชื่อเข้าใช้ที่ <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"ชื่อไซต์ไม่ตรงกับในใบรับรอง"</string> <string name="ssl_expired" msgid="5739349389499575559">"ใบรับรองนี้หมดอายุแล้ว"</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"ใบรับรองนี้ยังใช้งานไม่ได้"</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"กำลังหยุด..."</string> <string name="stop" msgid="5687251076030630074">"หยุด"</string> <string name="reload" msgid="8585220783228408062">"รีเฟรช"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"สิ่งที่ดาวน์โหลด"</string> <string name="copy_page_url" msgid="7635062169011319208">"คัดลอก URL หน้าเว็บ"</string> <string name="share_page" msgid="593756995297268343">"แบ่งปันหน้าเว็บ"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"ตรึงแท็บ"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"บันทึกหน้าเว็บ"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"บันทึกหน้าเว็บแล้ว"</string> - <string name="webarchive_failed" msgid="19950914584285713">"ไม่สามารถบันทึกหน้าเว็บ"</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"บันทึกเพื่ออ่านแบบออฟไลน์"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"ไม่สามารถบันทึกเพื่ออ่านแบบออฟไลน์ได้"</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"บุ๊กมาร์ก <xliff:g id="BOOKMARK_COUNT">%d</xliff:g> รายการ"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"โฟลเดอร์ว่าง"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"เปิด"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"ตั้งค่าเครื่องมือค้นหา"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"เลือกเครื่องมือค้นหา"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"ตั้งค่าเป็น ..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"หน้าเว็บปัจจุบัน"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"หน้าว่าง"</string> - <string name="pref_use_default" msgid="192587563274735878">"หน้าเว็บเริ่มต้น"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"หน้าเว็บปัจจุบัน"</item> + <item msgid="4430498748295169195">"หน้าว่าง"</item> + <item msgid="5747608191946904074">"หน้าเว็บเริ่มต้น"</item> + <item msgid="6092441301001006473">"ไซต์ที่เข้าชมบ่อยที่สุด"</item> + <item msgid="5021822752506507426">"อื่นๆ..."</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"ปรับหน้าให้พอดีอัตโนมัติ"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"ปรับรูปแบบหน้าเว็บให้พอดีกับหน้าจอ"</string> <string name="pref_general_title" msgid="1946872771219249323">"ทั่วไป"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"บันทึกโปรไฟล์แล้ว"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"ลบโปรไฟล์แล้ว"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"ลบโปรไฟล์"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"ตั้งค่าการป้อนอัตโนมัติหรือไม่"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"เบราว์เซอร์จะกรอกเว็บฟอร์มให้โดยอัตโนมัติเช่นฟอร์มนี้ คุณต้องการตั้งค่าโปรไฟล์ของคุณหรือไม่"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"การป้อนอัตโนมัติสามารถกำหนดค่าผ่านการตั้งค่าเบราว์เซอร์"</string> <string name="disable_autofill" msgid="8305901059849400354">"ปิดใช้งานการป้อนอัตโนมัติ"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"ใหญ่มาก"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"ขนาดแบบอักษรขั้นต่ำ"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"ขยายข้อความ"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"บังคับเปิดใช้งานการขยาย"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"แทนที่คำขอควบคุมการขยายของเว็บไซต์หรือไม่"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"การซูมเริ่มต้น"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"การเข้ารหัสข้อความ"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"การเข้าถึง"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"ขนาดแบบอักษร"</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_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_lab_fullscreen" msgid="8173609016657987973">"เต็มหน้าจอ"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"ใช้โหมดเต็มหน้าจอเพื่อซ่อนแถบสถานะ"</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"การแสดงผลกลับกัน"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"หากเลือกตัวเลือกนี้จะทำให้เบราว์เซอร์สลับสี โดยสีดำจะสลับเป็นสีขาวและในทางกลับกันด้วย"</string> + <string name="pref_data_title" msgid="750316606686075162">"การจัดการแบนด์วิดท์"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"การโหลดผลการค้นหาล่วงหน้า"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"อนุญาตให้เบราว์เซอร์โหลดผลการค้นหาที่เชื่อถือได้สูงก่อนล่วงหน้าในเบื้องหลัง"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"ปัญหาการเชื่อมต่อข้อมูล"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"ปัญหาเกี่ยวกับไฟล์"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"ยืนยัน"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"ล้างประวัติ"</string> <string name="browser_history" msgid="1038987118290272525">"หน้าที่เพิ่งเข้าชมเมื่อเร็วๆ นี้"</string> <string name="empty_history" msgid="8738772352308207274">"ประวัติเบราว์เซอร์ว่างเปล่า"</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"หน้าแรก"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"เพิ่มบุ๊กมาร์ก..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"เพิ่ม"</string> <string name="search_hint" msgid="4647356319916631820">"ค้นหาหรือพิมพ์ URL"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"แบ่งปัน"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"ไม่สามารถใช้แท็บเพิ่มได้"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google พร้อมการค้นหาทันใจ (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"กู้หน้าต่างคืนหรือไม่"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"ดูเหมือนว่าจะเกิดข้อขัดข้องกับเบราว์เซอร์ คุณต้องการคืนค่าหน้าต่างจากครั้งที่แล้วหรือไม่"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"ใช่"</string> - <string name="recover_no" msgid="3121030267940592611">"ไม่"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"ดูตัวอย่าง:"</string> + <string name="preview" msgid="6450823514561689038">"แสดงตัวอย่าง"</string> <string name="local_bookmarks" msgid="533816851415228520">"ในตัวเครื่อง"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"มือถือ"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"เดสก์ท็อป"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"โหลดผลลัพธ์ล่วงหน้า"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"ไม่มีหน้าเว็บที่บันทึกไว้"</string> + <string name="remove_snapshot" msgid="1624447424544976849">"ลบหน้าเว็บที่บันทึกไว้"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-tl-sw600dp/strings.xml b/res/values-tl-sw600dp/strings.xml index bd77a31..ffc66ce 100644 --- a/res/values-tl-sw600dp/strings.xml +++ b/res/values-tl-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Buksan ang lahat sa mga bagong tab"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Buksan ang bagong tab sa likod ng kasalukuyang tab"</string> <string name="recover_title" msgid="1558775426269800998">"Ibalik ang mga tab?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Lumilitaw na nag-crash ang browser. Gusto mo bang ibalik ang iyong mga tab sa dati?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Gusto mo bang ipanumbalik ang iyong mga tab mula sa dati?"</string> </resources> diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 9389ac2..762ebaa 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Hindi pinagana ang mga pag-upload ng file."</string> <string name="new_tab" msgid="4505722538297295141">"Bagong window"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Bagong incognito window"</string> - <string name="active_tabs" msgid="3050623868203544623">"Windows"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Mga Bookmark"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Pinaka-binibisita"</string> <string name="tab_history" msgid="1979267558744613746">"Kasaysayan"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Na-save na Pahina"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Idinagdag sa mga bookmark"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Inalis mula sa mga bookmark"</string> <string name="sign_in_to" msgid="5939425800148759165">"Mag-sign in sa <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Hindi tumutugma ang pangalan ng site sa pangalan sa certificate."</string> <string name="ssl_expired" msgid="5739349389499575559">"Nag-expire na ang certificate na ito."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Hindi pa wasto ang certificate na ito."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Tumitigil..."</string> <string name="stop" msgid="5687251076030630074">"Huminto"</string> <string name="reload" msgid="8585220783228408062">"I-refresh"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Mga Pag-download"</string> <string name="copy_page_url" msgid="7635062169011319208">"Kopyahin ang url ng pahina"</string> <string name="share_page" msgid="593756995297268343">"Ibahagi ang pahina"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"I-freeze ang Tab"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"I-save ang pahina"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Na-save na ang pahina."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Nabigong ma-save ang pahina."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"I-save para sa offline na pagbabasa"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Nabigong i-save para sa offline na pagbabasa."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> (na) bookmark"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Walang lamang folder"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Buksan"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Itakda ang search engine"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Pumili ng search engine"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Itakda sa…"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Kasalukuyang pahina"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Blangkong pahina"</string> - <string name="pref_use_default" msgid="192587563274735878">"Default na pahina"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Kasalukuyang pahina"</item> + <item msgid="4430498748295169195">"Blangkong pahina"</item> + <item msgid="5747608191946904074">"Default na pahina"</item> + <item msgid="6092441301001006473">"Mga pinakamadalas na bisitahing site"</item> + <item msgid="5021822752506507426">"Iba pa..."</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Mga auto-fit na pahina"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"I-format ang mga web page upang iakma sa screen"</string> <string name="pref_general_title" msgid="1946872771219249323">"Pangkalahatan"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Na-save na ang profile"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Natanggal na ang profile"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Tanggalin ang profile"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"I-setup ang auto-fill?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Maaaring awtomatikong kumpletuhin ng browser ang mga form ng web katulad nito. Gusto mo bang i-set up ang iyong profile?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Mako-configure anumang oras ang auto-fill sa pamamagitan ng Mga Setting ng Browser."</string> <string name="disable_autofill" msgid="8305901059849400354">"Huwag paganahin ang auto-fill"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Malaki"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Minimum na laki ng font"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Pag-zoom ng teksto"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Pwersahing paganahin ang zoom"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Override o hindi hiling site na ikontrol galaw ng zoom"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Default zoom"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Pag-encode ng teksto"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Pagiging Naa-access"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Laki ng font"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Mga Lab"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Mga mabilis na pagkontrol"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"I-swipe thumb sa kaliwa o kanan gilid para access bilis kontrol at itago Application at URL bar"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Pinaka-nabibisitang homepage"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Ipinapakita ng iyong homepage ang iyong pinaka-nabibisitang mga webpage."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Gamit Google Instant pag gumamit ka Google Search, para magpakita resulta habang type ka (mapataas nito paggamit data)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Fullscreen"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Gamitin ang mode na fullscreen upang itago ang status bar."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Baligtad na Pagre-render"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Magsasanhi ang pagsusuri ng browser na ito na mabaligtad ang mga kulay. Magiging puti ang itim at kabaligtaran."</string> + <string name="pref_data_title" msgid="750316606686075162">"Pamamahala ng Bandwidth"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Pauna pag-load ng resulta sa paghahanap"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Payagan ang browser na una load ng taas na kumpyansa resulta paghanap sa background"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Problema sa pagkakakonekta ng data"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Problema sa file"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Kumpirmahin"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"I-clear ang kasaysayan"</string> <string name="browser_history" msgid="1038987118290272525">"Mga pahinang binisita kamakailan"</string> <string name="empty_history" msgid="8738772352308207274">"Walang laman ang kasaysayan ng browser."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Home"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Magdagdag ng bookmark..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Idagdag"</string> <string name="search_hint" msgid="4647356319916631820">"Hanapin o i-type ang URL"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Ibahagi"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Wala nang available na mga tab"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google na mayroong Instant (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Ibalik ang windows?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Mukhang nag-crash ang browser. Gusto mo bang ibalik ang iyong windows mula sa nakaraan?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Oo"</string> - <string name="recover_no" msgid="3121030267940592611">"Hindi"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Preview:"</string> + <string name="preview" msgid="6450823514561689038">"I-preview"</string> <string name="local_bookmarks" msgid="533816851415228520">"Lokal"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobile"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Desktop"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Paunang i-load ang mga resulta"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Walang naka-save na mga pahina."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Tanggalin ang na-save na pahina"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-tr-sw600dp/strings.xml b/res/values-tr-sw600dp/strings.xml index 07f83ed..18b6f2f 100644 --- a/res/values-tr-sw600dp/strings.xml +++ b/res/values-tr-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Tümünü yeni sekmelerde aç"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Yeni sekmeleri mevcut sekmenin arkasında aç"</string> <string name="recover_title" msgid="1558775426269800998">"Sekmeler geri yüklensin mi?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Tarayıcı kilitlenmiş görünüyor. Son kullandığınız sekmelerin geri yüklenmesini ister misiniz?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Son kullandığınız tarayıcı sekmelerinin geri yüklenmesini ister misiniz?"</string> </resources> diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 4e0bea8..d4929df 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Dosya Yüklemeleri devre dışı bırakıldı."</string> <string name="new_tab" msgid="4505722538297295141">"Yeni pencere"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Yeni gizli pencere"</string> - <string name="active_tabs" msgid="3050623868203544623">"Pencereler"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Favoriler"</string> <string name="tab_most_visited" msgid="1077402532455000703">"En çok ziyaret edilenler"</string> <string name="tab_history" msgid="1979267558744613746">"Geçmiş"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Kayıtlı Sayfalar"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Favorilere eklendi"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Favorilerden kaldırıldı"</string> <string name="sign_in_to" msgid="5939425800148759165">"<xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\" oturumu aç"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Sitenin adı sertifika üzerindeki adla eşleşmiyor."</string> <string name="ssl_expired" msgid="5739349389499575559">"Bu sertifikanın süresi dolmuş."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Bu sertifika henüz geçerli değil."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Durduruluyor..."</string> <string name="stop" msgid="5687251076030630074">"Durdur"</string> <string name="reload" msgid="8585220783228408062">"Yenile"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"İndirme işlemleri"</string> <string name="copy_page_url" msgid="7635062169011319208">"Sayfa url\'sini kopyala"</string> <string name="share_page" msgid="593756995297268343">"Sayfayı paylaş"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Sekmeyi dondur"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Sayfayı kaydet"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Sayfa kaydedildi."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Sayfa kaydedilemedi."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Çevrimdışı okuma için kaydet"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Çevrimdışı okuma için kaydedilemedi."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> yer işareti"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Boş klasör"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Aç"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Arama motoru ayarlayın"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Arama moturu seçin"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Ana sayfayı ayarla..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"Mevcut sayfa"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Boş sayfa"</string> - <string name="pref_use_default" msgid="192587563274735878">"Varsayılan sayfa"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Mevcut sayfa"</item> + <item msgid="4430498748295169195">"Boş sayfa"</item> + <item msgid="5747608191946904074">"Varsayılan sayfa"</item> + <item msgid="6092441301001006473">"En çok ziyaret edilen siteler"</item> + <item msgid="5021822752506507426">"Diğer…"</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Sayfaları otomatik sığdır"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Web sayfalarını ekrana sığacak şekilde biçimlendir"</string> <string name="pref_general_title" msgid="1946872771219249323">"Genel"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Profil kaydedildi"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Profil silindi"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Profili sil"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Otomatik doldurma ayarlansın mı?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Tarayıcı bunun gibi web formlarını otomatik olarak tamamlayabilir. Profilinizi ayarlamak ister misiniz?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Otomatik doldurmayı istediğiniz zaman Tarayıcı Ayarları\'ndan yapılandırabilirsiniz."</string> <string name="disable_autofill" msgid="8305901059849400354">"Otomatik doldurmayı devre dışı bırak"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Çok büyük"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Minimum yazı tipi boyutu"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Metni yaklaştır"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Yakınlştrmyı etknlştrmye zorla"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Sitenin yakınlaştırmayı kontrol isteğinin geçersiz kılınıp kılınmayacağı"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Varsayılan zum"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Metin kodlama"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Erişilebilirlik"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Yazı tipi boyutu"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Labs"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Hızlı denetimler"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Hızlı dentmlr erşmk, Uyg ve URL çubklr gizlmk için başprmğnzı sol veya sağ kenrdn hızlc kaydrn"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"En çok ziyaret edilen ana sayfa"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Ana sayfanızda en sık ziyaret edilen web sayfaları görüntülenir."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Anında Arama"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Yazarken sonuçların görüntülenmesi için, Google Arama\'yı kullanırken Google Anında Arama\'dan yararlanın (veri kullanımını artırabilir)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Tam ekran"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Durum çubuğunu gizlemek için tam ekran modunu kullanın"</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Ters Renklerle Oluşturma"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Bunu işaretlemeniz, tarayıcının renkleri ters çevirmesine neden olur. Siyahlar beyaz, beyazlar siyah olacaktır."</string> + <string name="pref_data_title" msgid="750316606686075162">"Bant Genişliği Yönetimi"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Arama sonucunu önyükleme"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Tarayıcının yüksek güvenli arama sonuçlarını arka planda önyüklemesine izin ver"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Veri bağlantısı sorunu"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Sorunlu dosya"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Doğrula"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Geçmişi temizle"</string> <string name="browser_history" msgid="1038987118290272525">"Son ziyaret edilen sayfalar"</string> <string name="empty_history" msgid="8738772352308207274">"Tarayıcı geçmişi boş."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Ana Sayfa"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Favori ekle..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Ekle"</string> <string name="search_hint" msgid="4647356319916631820">"Arayın veya URL\'yi yazın"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Paylaş"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Kullanılabilir başka sekme yok"</string> <string name="instant_search_label" msgid="8769284297650716935">"Anında Arama ile Google (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Pencereler geri yüklensin mi?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Tarayıcı kilitlenmiş görünüyor. Son kullandığınız pencerelerin geri yüklenmesini ister misiniz?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Evet"</string> - <string name="recover_no" msgid="3121030267940592611">"Hayır"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Önizleme:"</string> + <string name="preview" msgid="6450823514561689038">"Önizleme"</string> <string name="local_bookmarks" msgid="533816851415228520">"Yerel"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Mobil"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Masaüstü"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Sonuçları önyükle"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Kaydedilmiş sayfa yok."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Kayıtlı sayfayı sil"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-uk-sw600dp/strings.xml b/res/values-uk-sw600dp/strings.xml index 42ed88e..4214652 100644 --- a/res/values-uk-sw600dp/strings.xml +++ b/res/values-uk-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Відкрити все в нових вкладках"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Відкривати нові вкладки за поточною"</string> <string name="recover_title" msgid="1558775426269800998">"Відновити вкладки?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Відбулося аварійне завершення роботи веб-переглядача. Відновити останні відкриті вкладки?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Відновити останні відкриті вкладки веб-переглядача?"</string> </resources> diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index c0f2fd2..a0b0ced 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Завантаження файлів вимкнено."</string> <string name="new_tab" msgid="4505722538297295141">"Нове вікно"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Нове анонімне вікно"</string> - <string name="active_tabs" msgid="3050623868203544623">"Вікна"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Закладки"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Часто відвідувані"</string> <string name="tab_history" msgid="1979267558744613746">"Історія"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Збережені сторінки"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Додано до закладок"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Видалено із закладок"</string> <string name="sign_in_to" msgid="5939425800148759165">"Увійти в <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Назва сайту не відповідає назві в сертифікаті."</string> <string name="ssl_expired" msgid="5739349389499575559">"Термін дії сертиф. завершився."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Цей сертифікат ще недійсний."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Зупинка..."</string> <string name="stop" msgid="5687251076030630074">"Зупин."</string> <string name="reload" msgid="8585220783228408062">"Оновити"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Завантаження"</string> <string name="copy_page_url" msgid="7635062169011319208">"Копіюв. URL стор."</string> <string name="share_page" msgid="593756995297268343">"Надісл. стор."</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Зафіксувати вкладку"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Зберегти сторінку"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Сторінку збережено."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Не вдалося зберегти сторінку."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Зберегти для читання в режимі офлайн"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Не вдалося зберегти для читання в режимі офлайн."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"Закладок: <xliff:g id="BOOKMARK_COUNT">%d</xliff:g>"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Порожня папка"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Відкр."</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Налашт. пошук. сист."</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Виберіть пошукову систему"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Установити…"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Поточну сторінку"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Порожню сторінку"</string> - <string name="pref_use_default" msgid="192587563274735878">"Сторінку за умовчанням"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Поточну сторінку"</item> + <item msgid="4430498748295169195">"Порожню сторінку"</item> + <item msgid="5747608191946904074">"Сторінку за умовчанням"</item> + <item msgid="6092441301001006473">"Найчастіше відвідувані сайти"</item> + <item msgid="5021822752506507426">"Інше..."</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Автомат. припасув."</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Форматув. сторінки до розмірів екрана"</string> <string name="pref_general_title" msgid="1946872771219249323">"Загальні"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Профіль збережено"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Профіль видалено"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Видалити профіль"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Налаштувати автозаповнення?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Веб-переглядач може автоматично заповнювати подібні веб-форми. Налаштувати ваш профіль?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Автозаповнення завжди можна налаштувати в налаштуваннях веб-переглядача."</string> <string name="disable_autofill" msgid="8305901059849400354">"Вимкнути автозаповнення"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Дуже вел."</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Мінімальний розмір шрифту"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>пт"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Масштаб тексту"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Примусово ввімк. масштабування"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Чи потрібно змінюв. запит веб-сайту на контроль поведінки масштабування"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Масштаб за умовч."</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Кодування тексту"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Доступність"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Розмір шрифту"</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_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_lab_fullscreen" msgid="8173609016657987973">"Повноекранний режим"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Використовуйте повноекранний режим, щоб ховати рядок стану."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Інвертоване відображення"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Якщо поставити тут прапорець, веб-переглядач інвертуватиме кольори. Чорний стане білим і навпаки."</string> + <string name="pref_data_title" msgid="750316606686075162">"Керув.пропускн.спроможн."</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Попереднє завантаж. результатів пошуку"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Дозволити переглядачу завантажувати достовірні рез-ти пошуку у фоновому режимі"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Проблема з доступом до даних"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Проблема з файлом"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Підтверд."</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Очистити історію"</string> <string name="browser_history" msgid="1038987118290272525">"Нещодавно відвідані стор."</string> <string name="empty_history" msgid="8738772352308207274">"Історія переглядача порожня."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Головна"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Додати закладку…"</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Додати"</string> <string name="search_hint" msgid="4647356319916631820">"Знайд. або введіть URL"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Надіслати"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Більше немає вкладок"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google із Миттєвим пошуком (Лабораторії)"</string> - <string name="recover_title" msgid="8095611702406163360">"Відновити вікна?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Відбулося аварійне завершення роботи веб-переглядача. Відновити останні відкриті вікна?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Так"</string> - <string name="recover_no" msgid="3121030267940592611">"Ні"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Перегляд:"</string> + <string name="preview" msgid="6450823514561689038">"Попередній перегляд"</string> <string name="local_bookmarks" msgid="533816851415228520">"Локальні"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Версія для мобільного пристрою"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Версія для комп’ютера"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Попередньо завантажувати результати"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Немає збережених сторінок."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Видалити збережену сторінку"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-vi-sw600dp/strings.xml b/res/values-vi-sw600dp/strings.xml index d328570..31003dc 100644 --- a/res/values-vi-sw600dp/strings.xml +++ b/res/values-vi-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"Mở tất cả trong tab mới"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"Mở tab mới phía sau tab hiện tại"</string> <string name="recover_title" msgid="1558775426269800998">"Khôi phục các tab?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"Trình duyệt dường như đã gặp sự cố. Bạn có muốn khôi phục lại các tab từ lần trước không?"</string> + <string name="recover_prompt" msgid="377456662058488205">"Bạn có muốn khôi phục lại các tab trình duyệt của lần trước không?"</string> </resources> diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 76aff04..85886b1 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"Nội dung tải lên của tệp bị vô hiệu hóa."</string> <string name="new_tab" msgid="4505722538297295141">"Cửa sổ mới"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Cửa sổ ẩn danh mới"</string> - <string name="active_tabs" msgid="3050623868203544623">"Windows"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Dấu trang"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Truy cập nhiều nhất"</string> <string name="tab_history" msgid="1979267558744613746">"Lịch sử"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"Trang đã lưu"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"Đã thêm vào dấu trang"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Đã xoá khỏi dấu trang"</string> <string name="sign_in_to" msgid="5939425800148759165">"Đăng nhập vào <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -32,7 +32,7 @@ <string name="password" msgid="1177138552305184404">"Mật khẩu"</string> <string name="action" msgid="183105774472071343">"Đăng nhập"</string> <string name="bookmarks_search" msgid="5229596268214362873">"Trình duyệt"</string> - <string name="cancel" msgid="3017274947407233702">"Huỷ"</string> + <string name="cancel" msgid="3017274947407233702">"Hủy"</string> <string name="ok" msgid="1509280796718850364">"OK"</string> <string name="title_bar_loading" msgid="7438217780834640678">"Đang tải…"</string> <string name="page_info" msgid="4048529256302257195">"Thông tin trang"</string> @@ -47,13 +47,19 @@ <string name="ssl_mismatch" msgid="558688832420069896">"Tên của trang web không khớp với tên trên chứng chỉ."</string> <string name="ssl_expired" msgid="5739349389499575559">"Chứng chỉ này đã hết hạn."</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"Chứng chỉ này chưa hợp lệ."</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"Đang dừng…"</string> <string name="stop" msgid="5687251076030630074">"Dừng"</string> <string name="reload" msgid="8585220783228408062">"Làm mới"</string> <string name="back" msgid="8414603107175713668">"Quay lại"</string> <string name="forward" msgid="4288210890526641577">"Chuyển tiếp"</string> <string name="save" msgid="5922311934992468496">"OK"</string> - <string name="do_not_save" msgid="6777633870113477714">"Huỷ"</string> + <string name="do_not_save" msgid="6777633870113477714">"Hủy"</string> <string name="location" msgid="3411848697912600125">"Địa chỉ"</string> <string name="account" msgid="5179824606448077042">"Tài khoản"</string> <string name="containing_folder" msgid="6771180232953030479">"Thêm vào"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"Nội dung tải xuống"</string> <string name="copy_page_url" msgid="7635062169011319208">"Sao chép url của trang"</string> <string name="share_page" msgid="593756995297268343">"Chia sẻ trang"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"Cố định tab"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"Lưu trang"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"Đã lưu trang."</string> - <string name="webarchive_failed" msgid="19950914584285713">"Không thể lưu trang."</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"Lưu để đọc ngoại tuyến"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"Không thể lưu để đọc ngoại tuyến."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> dấu trang"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Thư mục trống"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"Mở"</string> @@ -143,9 +147,13 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Đặt công cụ tìm kiếm"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Chọn công cụ tìm kiếm"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Đặt thành…"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Trang hiện tại"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Trang trống"</string> - <string name="pref_use_default" msgid="192587563274735878">"Trang mặc định"</string> + <string-array name="pref_homepage_choices"> + <item msgid="844041670142910837">"Trang hiện tại"</item> + <item msgid="4430498748295169195">"Trang trống"</item> + <item msgid="5747608191946904074">"Trang mặc định"</item> + <item msgid="6092441301001006473">"Các trang web được truy cập nhiều nhất"</item> + <item msgid="5021822752506507426">"Khác…"</item> + </string-array> <string name="pref_content_autofit" msgid="8260474534053660809">"Tự động điều chỉnh kích thước các trang"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Định dạng trang web để vừa với màn hình"</string> <string name="pref_general_title" msgid="1946872771219249323">"Chung"</string> @@ -186,6 +194,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Đã lưu tiểu sử"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Đã xóa tiểu sử"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Xóa tiểu sử"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"Thiết lập tự động điền?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Trình duyệt có thể tự động hoàn thành biểu mẫu web như biểu mẫu này. Bạn có muốn thiết lập cấu hình của mình không?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"Luôn có thể định cấu hình tính năng Tự động điền thông qua Cài đặt trình duyệt."</string> <string name="disable_autofill" msgid="8305901059849400354">"Tắt tính năng tự động điền"</string> @@ -230,10 +239,8 @@ <item msgid="7201512237890458902">"Rất lớn"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"Kích thước phông chữ tối thiểu"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"Thu phóng văn bản"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"Bắt buộc bật thu phóng"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"Gh.đè y/c tr.web để k.s t.phóng"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"Thu phóng mặc định"</string> @@ -267,17 +274,19 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"Mã hoá văn bản"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"Khả năng truy cập"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"Kích thước phông chữ"</string> <string name="pref_lab_title" msgid="5571091610359629423">"Lab"</string> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Các điều khiển nhanh"</string> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Trượt ngón tay từ cạnh trái hoặc phải để truy cập điều khiển nhanh và ẩn các thanh Ứng dụng và URL"</string> - <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Trang chủ được truy cập nhiều nhất"</string> - <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Trang chủ hiển thị các trang web được truy cập nhiều nhất của bạn."</string> <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string> <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Sử dụng Google Instant khi bạn sử dụng Tìm kiếm của Google để hiển thị kết quả khi nhập (điều này có thể tăng việc sử dụng dữ liệu)."</string> <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Toàn màn hình"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Sử dụng chế độ toàn màn hình để ẩn thanh trạng thái."</string> + <string name="pref_lab_inverted" msgid="1650585016924791747">"Hiển thị đã đảo ngược"</string> + <string name="pref_lab_inverted_summary" msgid="2224690234778313947">"Chọn tính năng này sẽ khiến trình duyệt đảo ngược màu sắc. Màu đen sẽ thành màu trắng và ngược lại."</string> + <string name="pref_data_title" msgid="750316606686075162">"Quản lý băng thông"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"Tải trước kết quả tìm kiếm"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"Cho phép trình duyệt tải trước các kết quả tìm kiếm có độ tin cậy cao trong nền"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"Sự cố kết nối dữ liệu"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"Sự cố với tệp"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"Xác nhận"</string> @@ -287,8 +296,7 @@ <string name="clear_history" msgid="5998307092715979619">"Xoá lịch sử"</string> <string name="browser_history" msgid="1038987118290272525">"Các trang đã truy cập gần đây"</string> <string name="empty_history" msgid="8738772352308207274">"Lịch sử trình duyệt trống."</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"Trang chủ"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"Thêm dấu trang..."</string> <string name="add_bookmark_short" msgid="3783984330998103735">"Thêm"</string> <string name="search_hint" msgid="4647356319916631820">"Tìm kiếm hoặc nhập URL"</string> @@ -307,10 +315,10 @@ <string name="download_menu_open" msgid="4888327480367757513">"Mở"</string> <string name="download_menu_clear" msgid="6264454531553418124">"Xoá khỏi danh sách"</string> <string name="download_menu_delete" msgid="8815502136393894148">"Xoá"</string> - <string name="download_menu_cancel" msgid="2545333007601851574">"Huỷ tải xuống"</string> - <string name="download_menu_cancel_all" msgid="2136550823151999166">"Huỷ tất cả nội dung tải xuống"</string> - <string name="download_cancel_dlg_title" msgid="8909108500262799748">"Huỷ nội dung tải xuống"</string> - <string name="download_cancel_dlg_msg" msgid="6285389170052357797">"Tất cả <xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> nội dung tải xuống sẽ bị huỷ và xoá khỏi lịch sử tải xuống."</string> + <string name="download_menu_cancel" msgid="2545333007601851574">"Hủy tải xuống"</string> + <string name="download_menu_cancel_all" msgid="2136550823151999166">"Hủy tất cả nội dung tải xuống"</string> + <string name="download_cancel_dlg_title" msgid="8909108500262799748">"Hủy nội dung tải xuống"</string> + <string name="download_cancel_dlg_msg" msgid="6285389170052357797">"Tất cả <xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> nội dung tải xuống sẽ bị hủy và xoá khỏi lịch sử tải xuống."</string> <string name="download_delete_file" msgid="5330036497843073249">"Tệp sẽ bị xoá"</string> <string name="download_file_error_dlg_title" msgid="2693630283595384874">"Hết dung lượng"</string> <string name="download_file_error_dlg_msg" msgid="5156405410324072471">"Không thể tải xuống <xliff:g id="FILENAME">%s</xliff:g>."\n"Tạo thêm dung lượng trên điện thoại của bạn và thử lại."</string> @@ -333,7 +341,7 @@ <string name="download_pending" msgid="2599683668575349559">"Đang bắt đầu tải xuống..."</string> <string name="download_pending_network" msgid="6548714525679461053">"Đang đợi kết nối dữ liệu…"</string> <string name="download_running_paused" msgid="6418029352085656495">"Đang đợi kết nối dữ liệu…"</string> - <string name="download_canceled" msgid="6057083743144492515">"Đã huỷ tải xuống."</string> + <string name="download_canceled" msgid="6057083743144492515">"Đã hủy tải xuống."</string> <string name="download_not_acceptable" msgid="313769696131563652">"Không thể tải xuống. Nội dung không được hỗ trợ trên điện thoại này."</string> <string name="download_file_error" msgid="1206648050615176113">"Không thể hoàn tất tải xuống. Không đủ dung lượng."</string> <string name="download_length_required" msgid="9038605488460437406">"Không thể tải xuống. Không thể xác định kích cỡ của mục."</string> @@ -345,13 +353,13 @@ <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Xoá dữ liệu đã lưu trữ"</string> <string name="webstorage_clear_data_dialog_message" msgid="6678281256970470125">"Tất cả dữ liệu được lưu trữ bởi trang web này sẽ bị xoá"</string> <string name="webstorage_clear_data_dialog_ok_button" msgid="2516563534211898636">"Xoá tất cả"</string> - <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Huỷ"</string> + <string name="webstorage_clear_data_dialog_cancel_button" msgid="2028867751958942762">"Hủy"</string> <string name="webstorage_origin_summary_mb_stored" msgid="1985885826292236210">"MB được lưu trữ trên điện thoại"</string> <string name="loading_video" msgid="4887871585216091096">"Đang tải video"</string> <string name="geolocation_permissions_prompt_message" msgid="356796102004052471">"<xliff:g id="WEBSITE_ORIGIN">%s</xliff:g> muốn biết vị trí của bạn"</string> <string name="geolocation_permissions_prompt_share" msgid="9084486342048347976">"Chia sẻ vị trí"</string> <string name="geolocation_permissions_prompt_dont_share" msgid="6303025160237860300">"Từ chối"</string> - <string name="geolocation_permissions_prompt_remember" msgid="3118526300707348308">"Nhớ tuỳ chọn"</string> + <string name="geolocation_permissions_prompt_remember" msgid="3118526300707348308">"Nhớ tùy chọn"</string> <string name="geolocation_permissions_prompt_toast_allowed" msgid="987286072035125498">"Trang web này có thể truy cập vị trí của bạn. Thay đổi điều này trong Cài đặt -> Cài đặt trang web"</string> <string name="geolocation_permissions_prompt_toast_disallowed" msgid="7695100950212692515">"Trang web này không thể truy cập vị trí của bạn. Thay đổi điều này trong Cài đặt -> Cài đặt trang web"</string> <string name="geolocation_settings_page_title" msgid="1745477985097536528">"Xóa truy cập vị trí"</string> @@ -360,12 +368,12 @@ <string name="geolocation_settings_page_dialog_title" msgid="1549842043381347668">"Xóa truy cập vị trí"</string> <string name="geolocation_settings_page_dialog_message" msgid="7586671987576403993">"Truy cập vị trí cho trang web này sẽ bị xoá"</string> <string name="geolocation_settings_page_dialog_ok_button" msgid="4789434178048077287">"Xoá truy cập"</string> - <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Huỷ"</string> + <string name="geolocation_settings_page_dialog_cancel_button" msgid="7941036504673409747">"Hủy"</string> <string name="website_settings_clear_all" msgid="8739804325997655980">"Xoá tất cả"</string> <string name="website_settings_clear_all_dialog_title" msgid="7791826325122461718">"Xoá tất cả cài đặt trang web?"</string> <string name="website_settings_clear_all_dialog_message" msgid="6150502090601476333">"Tất cả các quyền về vị trí và dữ liệu trên trang web sẽ bị xoá."</string> <string name="website_settings_clear_all_dialog_ok_button" msgid="6401582240627669431">"Xoá tất cả dữ liệu"</string> - <string name="website_settings_clear_all_dialog_cancel_button" msgid="1896757051856611674">"Huỷ"</string> + <string name="website_settings_clear_all_dialog_cancel_button" msgid="1896757051856611674">"Hủy"</string> <string name="progress_dialog_setting_wallpaper" msgid="4871900779338536674">"Đang đặt hình nền..."</string> <string name="defaultBookmarksUpButton" msgid="2303951020715704735">"Dấu trang"</string> <string name="empty_bookmarks_folder" msgid="7843361614634930942">"Không có dấu trang"</string> @@ -387,12 +395,51 @@ <string name="menu_share_url" msgid="5851814357333739700">"Chia sẻ"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"Không có thêm tab nào"</string> <string name="instant_search_label" msgid="8769284297650716935">"Google với tính năng Instant (Labs)"</string> - <string name="recover_title" msgid="8095611702406163360">"Khôi phục các cửa sổ?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"Trình duyệt có vẻ như đã gặp sự cố. Bạn có muốn khôi phục lại các cửa sổ từ lần trước không?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"Có"</string> - <string name="recover_no" msgid="3121030267940592611">"Không"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"Xem trước:"</string> + <string name="preview" msgid="6450823514561689038">"Xem trước"</string> <string name="local_bookmarks" msgid="533816851415228520">"Địa phương"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"Điện thoại di động"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"Máy tính"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"Tải trước kết quả"</string> + <string name="empty_snapshots_folder" msgid="5788256228290785444">"Không có trang nào được lưu."</string> + <string name="remove_snapshot" msgid="1624447424544976849">"Xóa trang đã lưu"</string> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-w720dp/bools.xml b/res/values-w720dp/bools.xml new file mode 100644 index 0000000..0d05b7f --- /dev/null +++ b/res/values-w720dp/bools.xml @@ -0,0 +1,16 @@ +<?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 + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <bool name="hide_nav_buttons">false</bool> +</resources> diff --git a/res/values-zh-rCN-sw600dp/strings.xml b/res/values-zh-rCN-sw600dp/strings.xml index 97769a7..3e5118c 100644 --- a/res/values-zh-rCN-sw600dp/strings.xml +++ b/res/values-zh-rCN-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"在新标签页中打开全部书签"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"在当前标签页后方打开新标签页"</string> <string name="recover_title" msgid="1558775426269800998">"要恢复标签页吗?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"浏览器似乎已崩溃。要恢复最后一次打开的标签页吗?"</string> + <string name="recover_prompt" msgid="377456662058488205">"要恢复最后一次打开的浏览器标签页吗?"</string> </resources> diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 4ed87dc..b2ce00e 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"文件上传功能已停用。"</string> <string name="new_tab" msgid="4505722538297295141">"新窗口"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"新隐身窗口"</string> - <string name="active_tabs" msgid="3050623868203544623">"窗口"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"书签"</string> <string name="tab_most_visited" msgid="1077402532455000703">"访问最多"</string> <string name="tab_history" msgid="1979267558744613746">"历史记录"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"保存的页面"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"已添加到书签"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"从书签中删除"</string> <string name="sign_in_to" msgid="5939425800148759165">"登录 <xliff:g id="HOSTNAME">%s1</xliff:g>“<xliff:g id="REALM">%s2</xliff:g>”"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"网站的名称与证书上的名称不一致。"</string> <string name="ssl_expired" msgid="5739349389499575559">"该证书已过期。"</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"该证书尚未生效。"</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"正在停止..."</string> <string name="stop" msgid="5687251076030630074">"停止"</string> <string name="reload" msgid="8585220783228408062">"刷新"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"下载内容"</string> <string name="copy_page_url" msgid="7635062169011319208">"复制网页网址"</string> <string name="share_page" msgid="593756995297268343">"分享网页"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"冻结标签"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"保存网页"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"网页已保存。"</string> - <string name="webarchive_failed" msgid="19950914584285713">"保存网页时失败。"</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"保存以供离线阅读"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"无法保存以供离线阅读。"</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> 个书签"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"空文件夹"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"打开"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"设置搜索引擎"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"选择搜索引擎"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"设置为..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"当前页"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"空白页"</string> - <string name="pref_use_default" msgid="192587563274735878">"默认页"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"自动调整页面"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"调整网页版面以适合屏幕大小"</string> <string name="pref_general_title" msgid="1946872771219249323">"常规"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"个人资料已保存"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"个人资料已删除"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"删除个人资料"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"要设置自动填充功能吗?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"浏览器可自动填充网络表单(例如该表单)。您希望设置个人资料吗?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"您可以随时通过“浏览器设置”配置自动填充功能。"</string> <string name="disable_autofill" msgid="8305901059849400354">"停用自动填充"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"超大"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"字体大小下限"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g> PT"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"文字缩放"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"强制启用缩放"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"是否通过替换网站的请求来控制缩放行为"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"默认缩放设置"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"文字编码"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"辅助功能"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"字体大小"</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_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_lab_fullscreen" msgid="8173609016657987973">"全屏"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"使用全屏模式可隐藏状态栏。"</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"带宽管理"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"搜索结果预加载"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"允许浏览器在后台预加载相关度高的搜索结果"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"数据连接性问题"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"文件有问题"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"确认"</string> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"清除历史记录"</string> <string name="browser_history" msgid="1038987118290272525">"最近访问过的网页"</string> <string name="empty_history" msgid="8738772352308207274">"浏览器历史记录为空。"</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"主屏幕"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"添加书签…"</string> <string name="add_bookmark_short" msgid="3783984330998103735">"添加"</string> <string name="search_hint" msgid="4647356319916631820">"搜索或键入网址"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"分享"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"没有更多标签可用"</string> <string name="instant_search_label" msgid="8769284297650716935">"具有即搜即得功能的 Google(实验室)"</string> - <string name="recover_title" msgid="8095611702406163360">"恢复窗口?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"浏览器似乎已崩溃。要恢复最后一次打开的窗口吗?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"是"</string> - <string name="recover_no" msgid="3121030267940592611">"否"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"预览:"</string> + <string name="preview" msgid="6450823514561689038">"预览"</string> <string name="local_bookmarks" msgid="533816851415228520">"本地"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"移动版"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"桌面版"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"预加载结果"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-zh-rTW-sw600dp/strings.xml b/res/values-zh-rTW-sw600dp/strings.xml index 5d30dc7..e5bcf8d 100644 --- a/res/values-zh-rTW-sw600dp/strings.xml +++ b/res/values-zh-rTW-sw600dp/strings.xml @@ -24,5 +24,5 @@ <string name="open_all_in_new_window" msgid="4294281492905397499">"在新分頁中開啟所有書籤"</string> <string name="pref_content_open_in_background_summary" msgid="4799440480107121813">"在目前分頁的後面開啟新分頁"</string> <string name="recover_title" msgid="1558775426269800998">"還原分頁?"</string> - <!-- outdated translation 3793203259958951755 --> <string name="recover_prompt" msgid="377456662058488205">"瀏覽器已當機,您要還原當機前開啟的分頁嗎?"</string> + <string name="recover_prompt" msgid="377456662058488205">"您想要還原最後開啟的瀏覽器分頁嗎?"</string> </resources> diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 44652b1..0a69579 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -21,10 +21,10 @@ <string name="uploads_disabled" msgid="463761197575372994">"檔案上傳功能已停用。"</string> <string name="new_tab" msgid="4505722538297295141">"新視窗"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"新的無痕式視窗"</string> - <string name="active_tabs" msgid="3050623868203544623">"視窗"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"書籤"</string> - <string name="tab_most_visited" msgid="1077402532455000703">"常用網頁"</string> + <string name="tab_most_visited" msgid="1077402532455000703">"最常造訪"</string> <string name="tab_history" msgid="1979267558744613746">"記錄"</string> + <string name="tab_snapshots" msgid="4435852763803720588">"儲存的網頁"</string> <string name="added_to_bookmarks" msgid="1020224130695956728">"已加入書籤"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"已自書籤中移除"</string> <string name="sign_in_to" msgid="5939425800148759165">"登入到 <xliff:g id="HOSTNAME">%s1</xliff:g>「<xliff:g id="REALM">%s2</xliff:g>」"</string> @@ -47,6 +47,12 @@ <string name="ssl_mismatch" msgid="558688832420069896">"網站名稱與憑證不符。"</string> <string name="ssl_expired" msgid="5739349389499575559">"此憑證已過期"</string> <string name="ssl_not_yet_valid" msgid="2893167846212645846">"此憑證無效。"</string> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> + <skip /> + <!-- no translation found for ssl_invalid (9041704741505449967) --> + <skip /> + <!-- no translation found for ssl_unknown (5679243486524754571) --> + <skip /> <string name="stopping" msgid="4839698519340302982">"停止中…"</string> <string name="stop" msgid="5687251076030630074">"停止"</string> <string name="reload" msgid="8585220783228408062">"重新整理"</string> @@ -101,10 +107,8 @@ <string name="menu_view_download" msgid="2124570321712995120">"下載"</string> <string name="copy_page_url" msgid="7635062169011319208">"複製網頁網址"</string> <string name="share_page" msgid="593756995297268343">"分享網頁"</string> - <string name="menu_freeze_tab" msgid="189603565552297099">"凍結分頁"</string> - <string name="menu_save_webarchive" msgid="2474117375302625691">"儲存網頁"</string> - <string name="webarchive_saved" msgid="2212053339474523406">"網頁已儲存。"</string> - <string name="webarchive_failed" msgid="19950914584285713">"無法儲存網頁。"</string> + <string name="menu_save_snapshot" msgid="6935080344031126139">"儲存以供離線閱讀"</string> + <string name="snapshot_failed" msgid="6176197364690207251">"無法儲存頁面以供離線閱讀。"</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> 個書籤"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"空資料夾"</string> <string name="contextmenu_openlink" msgid="7237961252214188935">"開啟"</string> @@ -143,9 +147,7 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"設定搜尋引擎"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"選取搜尋引擎"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"設為..."</string> - <string name="pref_use_current" msgid="1778622474040406672">"目前網頁"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"空白網頁"</string> - <string name="pref_use_default" msgid="192587563274735878">"預設網頁"</string> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> <string name="pref_content_autofit" msgid="8260474534053660809">"自動調整頁面"</string> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"配合螢幕大小調整網頁版面"</string> <string name="pref_general_title" msgid="1946872771219249323">"一般設定"</string> @@ -186,6 +188,7 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"設定檔已儲存"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"個人資料已刪除"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"刪除設定檔"</string> + <string name="autofill_setup_dialog_title" msgid="1955613311837926540">"設定自動填入功能?"</string> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"瀏覽器可以自動填寫這類網路表單,您要建立個人資料嗎?"</string> <string name="autofill_setup_dialog_negative_toast" msgid="6990737008936188620">"您可隨時透過 [瀏覽器設定] 設定自動填入功能。"</string> <string name="disable_autofill" msgid="8305901059849400354">"停用自動填入功能"</string> @@ -230,10 +233,8 @@ <item msgid="7201512237890458902">"最大"</item> </string-array> <string name="pref_min_font_size" msgid="8811125835817449131">"最小字型大小"</string> - <!-- no translation found for pref_min_font_size_value (2924708480509060209) --> - <skip /> - <!-- no translation found for pref_text_zoom (8387229123479610157) --> - <skip /> + <string name="pref_min_font_size_value" msgid="2924708480509060209">"<xliff:g id="FONT_SIZE">%d</xliff:g>pt"</string> + <string name="pref_text_zoom" msgid="8387229123479610157">"文字縮放"</string> <string name="pref_force_userscalable" msgid="5641500562399892621">"強制啟用縮放功能"</string> <string name="pref_force_userscalable_summary" msgid="4431962409438162448">"是否覆寫網站的控制縮放行為要求"</string> <string name="pref_default_zoom" msgid="8076142259097187395">"預設縮放"</string> @@ -267,17 +268,21 @@ </string-array> <string name="pref_default_text_encoding_dialogtitle" msgid="5508255018084978547">"文字編碼"</string> <string name="pref_accessibility_title" msgid="5127836981587423215">"協助工具"</string> - <!-- no translation found for pref_font_size_category (6288925476811083551) --> - <skip /> + <string name="pref_font_size_category" msgid="6288925476811083551">"字型大小"</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_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_lab_fullscreen" msgid="8173609016657987973">"全螢幕"</string> <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"使用全螢幕模式以隱藏狀態列。"</string> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <string name="pref_data_title" msgid="750316606686075162">"頻寬管理"</string> + <string name="pref_data_preload_title" msgid="4479320472980292873">"正在預先載入搜尋結果"</string> + <string name="pref_data_preload_summary" msgid="7488335627364473744">"允許瀏覽器在背景預先載入可信度高的搜尋結果"</string> <string name="browserFrameNetworkErrorLabel" msgid="126892350904924893">"資料連線問題"</string> <string name="browserFrameFileErrorLabel" msgid="8063691502792670367">"檔案有問題"</string> <string name="browserFrameFormResubmitLabel" msgid="2685923472682180360">"確認"</string> @@ -287,8 +292,7 @@ <string name="clear_history" msgid="5998307092715979619">"清除記錄"</string> <string name="browser_history" msgid="1038987118290272525">"最近瀏覽的網頁"</string> <string name="empty_history" msgid="8738772352308207274">"瀏覽記錄是空的。"</string> - <!-- no translation found for go_home (3140773562046381164) --> - <skip /> + <string name="go_home" msgid="3140773562046381164">"首頁"</string> <string name="add_new_bookmark" msgid="8086367791400349049">"加入書籤…"</string> <string name="add_bookmark_short" msgid="3783984330998103735">"新增"</string> <string name="search_hint" msgid="4647356319916631820">"搜尋或輸入網址"</string> @@ -387,12 +391,53 @@ <string name="menu_share_url" msgid="5851814357333739700">"分享"</string> <string name="max_tabs_warning" msgid="4122034303809457570">"已無分頁可供使用"</string> <string name="instant_search_label" msgid="8769284297650716935">"使用 Google 互動智慧搜尋 (研究室)"</string> - <string name="recover_title" msgid="8095611702406163360">"還原視窗?"</string> - <!-- outdated translation 5526783279696786755 --> <string name="recover_prompt" msgid="6541354420842425606">"瀏覽器似乎當機了。您想要還原最後一次的視窗嗎?"</string> - <!-- outdated translation 5837971910598069183 --> <string name="recover_yes" msgid="4540538008955917099">"好"</string> - <string name="recover_no" msgid="3121030267940592611">"不用了"</string> - <!-- outdated translation 1470306351083271066 --> <string name="preview" msgid="6450823514561689038">"預覽:"</string> + <string name="preview" msgid="6450823514561689038">"預覽"</string> <string name="local_bookmarks" msgid="533816851415228520">"本機"</string> <string name="ua_switcher_mobile" msgid="5103260404792449606">"行動版"</string> <string name="ua_switcher_desktop" msgid="2535200543238676638">"電腦版"</string> + <string name="permission_preload_label" msgid="4856971662337877316">"預先載入結果"</string> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 49ed703..f8f10bc 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -22,10 +22,11 @@ <skip /> <string name="new_tab" msgid="4505722538297295141">"Iwindi elisha"</string> <string name="new_incognito_tab" msgid="5821404839654751753">"Iwindi elisha le-incognito"</string> - <string name="active_tabs" msgid="3050623868203544623">"I-Windows"</string> <string name="tab_bookmarks" msgid="2305793036003473653">"Amabhukimakhi"</string> <string name="tab_most_visited" msgid="1077402532455000703">"Okuvakashelwa njalo"</string> <string name="tab_history" msgid="1979267558744613746">"Umlando"</string> + <!-- no translation found for tab_snapshots (4435852763803720588) --> + <skip /> <string name="added_to_bookmarks" msgid="1020224130695956728">"Amabhukimakhi afakiwe"</string> <string name="removed_from_bookmarks" msgid="6063705902028438800">"Ikhishwe kumabhukimakhi"</string> <string name="sign_in_to" msgid="5939425800148759165">"Ngena ngemvume ku-\"<xliff:g id="HOSTNAME">%s1</xliff:g>\" \"<xliff:g id="REALM">%s2</xliff:g>\""</string> @@ -64,25 +65,11 @@ <skip /> <!-- no translation found for ssl_not_yet_valid (2893167846212645846) --> <skip /> - <!-- no translation found for ssl_certificate (5226747157992111668) --> - <skip /> - <!-- no translation found for ssl_certificate_is_valid (7096160815933145579) --> - <skip /> - <!-- no translation found for issued_to (9032338008819841339) --> - <skip /> - <!-- no translation found for common_name (5745530093500062357) --> - <skip /> - <!-- no translation found for org_name (8868889052889991293) --> - <skip /> - <!-- no translation found for org_unit (4489056376307768196) --> + <!-- no translation found for ssl_date_invalid (3705563379257285534) --> <skip /> - <!-- no translation found for issued_by (6959484326943152487) --> + <!-- no translation found for ssl_invalid (9041704741505449967) --> <skip /> - <!-- no translation found for validity_period (57988851973181309) --> - <skip /> - <!-- no translation found for issued_on (2082890654801808368) --> - <skip /> - <!-- no translation found for expires_on (8061200430557020704) --> + <!-- no translation found for ssl_unknown (5679243486524754571) --> <skip /> <!-- no translation found for stopping (4839698519340302982) --> <skip /> @@ -162,11 +149,10 @@ <string name="copy_page_url" msgid="7635062169011319208">"Kopisha i-url yekhasi"</string> <!-- no translation found for share_page (593756995297268343) --> <skip /> - <!-- no translation found for menu_freeze_tab (189603565552297099) --> + <!-- no translation found for menu_save_snapshot (6935080344031126139) --> + <skip /> + <!-- no translation found for snapshot_failed (6176197364690207251) --> <skip /> - <!-- outdated translation 3934652434001459581 --> <string name="menu_save_webarchive" msgid="2474117375302625691">"Londoloza njengeSigcinamlando seWebhu."</string> - <!-- outdated translation 7045250341467345007 --> <string name="webarchive_saved" msgid="2212053339474523406">"Isigcinamlando sewebhu silondoloziwe."</string> - <!-- outdated translation 2880998204746620260 --> <string name="webarchive_failed" msgid="19950914584285713">"Yehlulekile ukulondoloza isigcinamlando sewebhu."</string> <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> amabhukimakhi"</string> <string name="contextheader_folder_empty" msgid="974171637803391651">"Ifolda engenalutho"</string> <!-- no translation found for contextmenu_openlink (7237961252214188935) --> @@ -228,9 +214,11 @@ <string name="pref_content_search_engine" msgid="1620101310821644144">"Hlela injini yokusesha"</string> <string name="pref_content_search_engine_summary" msgid="5162667665858487316">"Khetha injini yokusesha"</string> <string name="pref_set_homepage_to" msgid="7196350233061395098">"Hlelela ku-"</string> - <string name="pref_use_current" msgid="1778622474040406672">"Ikhasi lamanje"</string> - <string name="pref_use_blank" msgid="8503238592551111169">"Ikhasi elingenalutho"</string> - <string name="pref_use_default" msgid="192587563274735878">"Ikhasi elimisiwe"</string> + <!-- no translation found for pref_homepage_choices:0 (844041670142910837) --> + <!-- no translation found for pref_homepage_choices:1 (4430498748295169195) --> + <!-- no translation found for pref_homepage_choices:2 (5747608191946904074) --> + <!-- no translation found for pref_homepage_choices:3 (6092441301001006473) --> + <!-- no translation found for pref_homepage_choices:4 (5021822752506507426) --> <!-- no translation found for pref_content_autofit (8260474534053660809) --> <skip /> <string name="pref_content_autofit_summary" msgid="4587831659894879986">"Lungisa amakhasi ewebhu ukulingana kwisikrini"</string> @@ -278,6 +266,8 @@ <string name="autofill_profile_successful_save" msgid="6834102203944938409">"Iphrofayli igciniwe"</string> <string name="autofill_profile_successful_delete" msgid="2421442112954362732">"Iphrofayli isusiwe"</string> <string name="autofill_profile_editor_delete_profile" msgid="2754563301088418752">"Susa iphrofayli"</string> + <!-- no translation found for autofill_setup_dialog_title (1955613311837926540) --> + <skip /> <string name="autofill_setup_dialog_message" msgid="6605682320156223114">"Isiphequluli ngokuzenzakalelayo singagcwalisa amafomu ewebhu anjengalawa. Ungathanda ukumisa iphrofayli yakho?"</string> <!-- no translation found for autofill_setup_dialog_negative_toast (6990737008936188620) --> <skip /> @@ -385,8 +375,6 @@ <string name="pref_lab_title" msgid="5571091610359629423">"Amalebhu"</string> <!-- outdated translation 2105979166017257647 --> <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Izilawuli Ezisheshayo"</string> <!-- outdated translation 8025196176636589803 --> <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Shintshela isithonjana kusuka kunqenqema langokwesokunxele noma langokwesokudla ukufinyelela izilawuli ezisheshayo"</string> - <!-- outdated translation 547134501893835512 --> <string name="pref_lab_most_visited_homepage" msgid="7597766876952506909">"Ikhasi Eliyisiqalo Elivakashelwa Njalo"</string> - <!-- outdated translation 6857702350834122532 --> <string name="pref_lab_most_visited_homepage_summary" msgid="4132511544800457513">"Isetha ikhasi lakho eliyisiqalo ukubonisa amakhasi avakashelwa njalo."</string> <!-- no translation found for pref_use_instant_search (1119176077760723740) --> <skip /> <!-- no translation found for pref_use_instant_search_summary (839320474961917522) --> @@ -395,6 +383,16 @@ <skip /> <!-- no translation found for pref_lab_fullscreen_summary (6853711692160711419) --> <skip /> + <!-- no translation found for pref_lab_inverted (1650585016924791747) --> + <skip /> + <!-- no translation found for pref_lab_inverted_summary (2224690234778313947) --> + <skip /> + <!-- no translation found for pref_data_title (750316606686075162) --> + <skip /> + <!-- no translation found for pref_data_preload_title (4479320472980292873) --> + <skip /> + <!-- no translation found for pref_data_preload_summary (7488335627364473744) --> + <skip /> <!-- no translation found for browserFrameNetworkErrorLabel (126892350904924893) --> <skip /> <!-- no translation found for browserFrameFileErrorLabel (8063691502792670367) --> @@ -455,15 +453,15 @@ <string name="download_file_error_dlg_msg" msgid="5156405410324072471">"<xliff:g id="FILENAME">%s</xliff:g> ayikwazanga ukulandwa."\n"Khulula isikhala efonini yakho bese uzama futhi."</string> <!-- no translation found for download_failed_generic_dlg_title (6106781095337833391) --> <skip /> - <string name="download_no_sdcard_dlg_title" product="nosdcard" msgid="56777245081568508">"Ukugcina nge-USB akutholakali"</string> - <!-- outdated translation 56777245081568508 --> <string name="download_no_sdcard_dlg_title" product="default" msgid="605904452159416792">"Ukugcina nge-USB akutholakali"</string> - <string name="download_no_sdcard_dlg_msg" product="nosdcard" msgid="3144652102051031721">"Ukugcina nge-USB kuyadingeka ukuze ulande i-<xliff:g id="FILENAME">%s</xliff:g>."</string> + <string name="download_no_sdcard_dlg_title" product="nosdcard" msgid="56777245081568508">"Isitoreji se-USB asitholakali"</string> + <!-- outdated translation 56777245081568508 --> <string name="download_no_sdcard_dlg_title" product="default" msgid="605904452159416792">"Isitoreji se-USB asitholakali"</string> + <string name="download_no_sdcard_dlg_msg" product="nosdcard" msgid="3144652102051031721">"Isitoreji se-USB siyadingeka ukuze ulande i-<xliff:g id="FILENAME">%s</xliff:g>."</string> <!-- no translation found for download_no_sdcard_dlg_msg (2616399456116301518) --> <skip /> - <string name="download_sdcard_busy_dlg_title" product="nosdcard" msgid="8081445664689818973">"Ukugcina nge-USB akutholakali"</string> + <string name="download_sdcard_busy_dlg_title" product="nosdcard" msgid="8081445664689818973">"Isitoreji se-USB asitholakali"</string> <string name="download_sdcard_busy_dlg_title" product="default" msgid="6877712666046917741">"Ikhadi le-SD alitholakali"</string> - <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Ukugcina nge-USB kumatasa. Ukuvumela ukulanda, khetha \"Vala ukugcina nge-USB\' kwisaziso."</string> - <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"Ikhadi le-SD limatasa. Ukuvumela ukulanda, khetha \"Vala ukulondoloza nge-USB\" kwisaziso."</string> + <string name="download_sdcard_busy_dlg_msg" product="nosdcard" msgid="3979329954835690147">"Isitoreji se-USB simatasa. Ukuvumela ukulanda, khetha \"Vala isitoreji se-USB\' kwisaziso."</string> + <string name="download_sdcard_busy_dlg_msg" product="default" msgid="3473883538192835204">"Ikhadi le-SD limatasa. Ukuvumela ukulanda, khetha \"Vala isitoreji nge-USB\" kwisaziso."</string> <!-- no translation found for cannot_download (8150552478556798780) --> <skip /> <string name="download_no_application_title" msgid="1286056729168874295">"Ayikwazi ukuvula ifayela"</string> @@ -493,7 +491,7 @@ <!-- no translation found for download_precondition_failed (8327584102874295580) --> <skip /> <string name="search_the_web" msgid="6046130189241962337">"Sesha iwebhu"</string> - <string name="webstorage_outofspace_notification_title" msgid="1160474608059771788">"Ukulondoloza isiphequluli kugcwele"</string> + <string name="webstorage_outofspace_notification_title" msgid="1160474608059771788">"Isitoreji sesiphequluli sigcwele"</string> <string name="webstorage_outofspace_notification_text" msgid="7341075135051829692">"Qhafaza ukukhulula isikhala."</string> <string name="webstorage_clear_data_title" msgid="689484577124333977">"Sula idatha elondoloziwe"</string> <string name="webstorage_clear_data_dialog_title" msgid="345457466368974706">"Sula idatha elondoloziwe"</string> @@ -553,14 +551,6 @@ <string name="max_tabs_warning" msgid="4122034303809457570">"Awasekho amathebhu atholakalayo"</string> <!-- no translation found for instant_search_label (8769284297650716935) --> <skip /> - <!-- no translation found for recover_title (8095611702406163360) --> - <skip /> - <!-- no translation found for recover_prompt (6541354420842425606) --> - <skip /> - <!-- no translation found for recover_yes (4540538008955917099) --> - <skip /> - <!-- no translation found for recover_no (3121030267940592611) --> - <skip /> <!-- no translation found for preview (6450823514561689038) --> <skip /> <!-- no translation found for local_bookmarks (533816851415228520) --> @@ -569,4 +559,50 @@ <skip /> <!-- no translation found for ua_switcher_desktop (2535200543238676638) --> <skip /> + <!-- no translation found for permission_preload_label (4856971662337877316) --> + <skip /> + <!-- no translation found for empty_snapshots_folder (5788256228290785444) --> + <skip /> + <!-- no translation found for remove_snapshot (1624447424544976849) --> + <skip /> + <!-- no translation found for snapshot_go_live (1209542802541168497) --> + <skip /> + <!-- no translation found for accessibility_button_back (6194680634245279407) --> + <skip /> + <!-- no translation found for accessibility_button_forward (1236827218480658168) --> + <skip /> + <!-- no translation found for accessibility_button_refresh (1023441396241841313) --> + <skip /> + <!-- no translation found for accessibility_button_stop (6793644120043222148) --> + <skip /> + <!-- no translation found for accessibility_button_addbookmark (4787844912630006181) --> + <skip /> + <!-- no translation found for accessibility_button_search (5357014102136055376) --> + <skip /> + <!-- no translation found for accessibility_button_voice (152016375096083337) --> + <skip /> + <!-- no translation found for accessibility_button_bookmarks (7435055677299151649) --> + <skip /> + <!-- no translation found for accessibility_button_closetab (6954807842756927737) --> + <skip /> + <!-- no translation found for accessibility_button_newtab (4116986240706315748) --> + <skip /> + <!-- no translation found for accessibility_button_newincognitotab (5254901889040012964) --> + <skip /> + <!-- no translation found for accessibility_button_clear (6943152307986161598) --> + <skip /> + <!-- no translation found for accessibility_button_uaswitch (6286804719724282339) --> + <skip /> + <!-- no translation found for accessibility_button_go (1182818872083055958) --> + <skip /> + <!-- no translation found for accessibility_button_navscreen (9142904748728713075) --> + <skip /> + <!-- no translation found for accessibility_button_more (3054251446394224216) --> + <skip /> + <!-- no translation found for accessibility_state_incognito (5786038488425202355) --> + <skip /> + <!-- no translation found for accessibility_state_frozen (8041539250447035570) --> + <skip /> + <!-- no translation found for accessibility_transition_navscreen (2734915619351519547) --> + <skip /> </resources> diff --git a/res/values/bools.xml b/res/values/bools.xml index 6217de1..55f8242 100644 --- a/res/values/bools.xml +++ b/res/values/bools.xml @@ -13,4 +13,5 @@ <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <bool name="isTablet">false</bool> + <bool name="hide_nav_buttons">true</bool> </resources> diff --git a/res/values/colors.xml b/res/values/colors.xml index 322a80a..4ab971f 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -23,8 +23,6 @@ <color name="white">#ffffffff</color> <color name="black">#ff000000</color> - <color name="geolocation_permissions_prompt_background">#ffdddddd</color> - <color name="bookmarkWidgetHeader">#383847</color> <color name="bookmarkWidgetDivider">#383847</color> <color name="bookmarkWidgetItemBackground">#2b2b3c</color> diff --git a/res/values/dimensions.xml b/res/values/dimensions.xml index c4ce151..8fca68a 100644 --- a/res/values/dimensions.xml +++ b/res/values/dimensions.xml @@ -30,13 +30,13 @@ <dimen name="widgetItemMinHeight">48dip</dimen> <dimen name="favicon_size">16dip</dimen> <dimen name="favicon_padded_size">20dip</dimen> - <dimen name="qc_radius_start">30dip</dimen> - <dimen name="qc_radius_increment">60dip</dimen> + <dimen name="qc_radius_start">45dip</dimen> + <dimen name="qc_radius_increment">70dip</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">160dip</dimen> - <dimen name="qc_thumb_height">120dip</dimen> + <dimen name="qc_tab_title_height">24dip</dimen> + <dimen name="qc_thumb_width">150dip</dimen> + <dimen name="qc_thumb_height">100dip</dimen> <dimen name="qc_item_size">40dip</dimen> <dimen name="bookmark_widget_thumb_size">32dip</dimen> <dimen name="bookmark_widget_favicon_size">26dip</dimen> @@ -65,11 +65,14 @@ <dimen name="preference_widget_width">56dp</dimen> <dimen name="nav_tab_spacing">8dp</dimen> <dimen name="menu_width">240dip</dimen> + <dimen name="menu_height">32dip</dimen> <dimen name="toolbar_height">52dip</dimen> - <dimen name="tab_capture_size">160dp</dimen> + <dimen name="tab_thumbnail_width">@dimen/nav_tab_width</dimen> + <dimen name="tab_thumbnail_height">@dimen/nav_tab_height</dimen> <dimen name="nav_tab_width">240dip</dimen> <dimen name="nav_tab_height">160dip</dimen> <dimen name="nav_tab_text_normal">18sp</dimen> <dimen name="nav_tab_text_small">14sp</dimen> <dimen name="suggest_item_padding">8dp</dimen> + <dimen name="progress_bar_margin">-8dip</dimen> </resources> diff --git a/res/values/strings.xml b/res/values/strings.xml index e1fe0c5..87e77fc 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -26,14 +26,14 @@ <!-- Name of menu item of a new incognito tab. Also used in the title bar when displaying a new tab [CHAR LIMIT=30] --> <string name="new_incognito_tab">New incognito window</string> - <!-- Name of menu item which brings up a list of the currently active tabs --> - <string name="active_tabs">Windows</string> <!-- Name of tab containing bookmarks --> <string name="tab_bookmarks">Bookmarks</string> <!-- Name of tab containing the user's most visited websites, organized by number of visits --> <string name="tab_most_visited">Most visited</string> <!-- Name of tab containing the user's complete history, organized by time of last visit --> <string name="tab_history">History</string> + <!-- Name of tab containing the user's saved pages, organized by time created [CHAR LIMIT=20] --> + <string name="tab_snapshots">Saved Pages</string> <!-- Toast shown when a history item's star is clicked, converting it to a bookmark --> <string name="added_to_bookmarks">Added to bookmarks</string> <!-- Toast shown when a history item's star is clicked off, removing its bookmark --> @@ -90,7 +90,13 @@ <string name="ssl_expired">This certificate has expired.</string> <!-- Message in an SSL Error dialog --> <string name="ssl_not_yet_valid">This certificate is not valid yet.</string> - + <!-- Message in an SSL Error dialog --> + <string name="ssl_date_invalid">This certificate has an invalid date.</string> + <!-- Message in an SSL Error dialog --> + <string name="ssl_invalid">This certificate is invalid.</string> + <!-- Message in an SSL Error dialog --> + <string name="ssl_unknown">Unknown certificate error.</string> + <!-- Toast informing the user that loading has stopped for the current page. --> <string name="stopping">Stopping\u2026</string> <!-- Menu item to stop the current page from loading. --> @@ -191,6 +197,8 @@ <string name="open_all_in_new_window">Open all in new windows</string> <!-- Menu item to open a dialog which allows the user to enter a url or do search--> <string name="goto_dot">Go</string> + <!-- Menu item that opens up a new tab. [CHAR LIMIT=30] --> + <string name="menu_new_tab">Open new tab</string> <!-- Menu item that opens up a new incognito tab. [CHAR LIMIT=30] --> <string name="incognito_tab">Open new incognito tab</string> <!-- Menu item to switch to text selection mode for copy and paste. --> @@ -213,15 +221,10 @@ <string name="copy_page_url">Copy page url</string> <!-- Menu item --> <string name="share_page">Share page</string> - <!-- Menu item to freeze a tab. This will make a view-only - snapshot of the page in a new tab. [CHAR LIMIT=50] --> - <string name="menu_freeze_tab">Freeze tab</string> - <!-- Menu item for saving a page. [CHAR LIMIT=30] --> - <string name="menu_save_webarchive">Save page</string> - <!-- Toast informing the user that the page has been saved. [CHAR LIMIT=50] --> - <string name="webarchive_saved">Page saved.</string> - <!-- Toast informing the user that saving the page has failed. [CHAR LIMIT=50] --> - <string name="webarchive_failed">Failed to save page.</string> + <!-- Menu item for saving a page for offline reading. This is a view-only snapshot of the page. [CHAR LIMIT=50] --> + <string name="menu_save_snapshot">Save for offline reading</string> + <!-- Toast informing the user that saving the page for offline reading has failed. [CHAR LIMIT=50] --> + <string name="snapshot_failed">Failed to save for offline reading.</string> <!-- The number of bookmarks in a folder [CHAR LIMT=50] --> <string name="contextheader_folder_bookmarkcount"><xliff:g id="bookmark_count">%d</xliff:g> bookmarks</string> <!-- No bookmarks in the folder [CHAR LIMIT=50] --> @@ -327,8 +330,8 @@ <item>Blank page</item> <!-- Setting choice to set the homepage to the default page [CHAR LIMIT=40] --> <item>Default page</item> - <!-- Setting choice to set the homepage to the "Most Visited" homepage feature [CHAR LIMIT=40] --> - <item>Most-visited homepage</item> + <!-- Setting choice to set the homepage to the "Most Visited" homepage feature, which is a list of most visited sites [CHAR LIMIT=40] --> + <item>Most visited sites</item> <!-- Setting choice to set the homepage to a user entered URL [CHAR LIMIT=40] --> <item>Other\u2026</item> </string-array> @@ -426,6 +429,8 @@ <!-- Button text to delete all the AutoFill profile data [CHAR-LIMIT=20] --> <string name="autofill_profile_editor_delete_profile">Delete profile</string> + <!-- Title on a dialog shown to the user when they are prompted to set up the autofill feature [CHAR-LIMIT=32] --> + <string name="autofill_setup_dialog_title">Setup auto-fill?</string> <!-- Text on a dialog shown to the user when they are prompted to set up the autofill feature [CHAR-LIMIT=NONE] --> <string name="autofill_setup_dialog_message">Browser can automatically complete web forms like this one. Would you like to set up your profile?</string> <!-- Toast message displayed when the user decides to not set up autofill at this time. We want to remind them that they can configure @@ -519,6 +524,14 @@ <string name="pref_force_userscalable">Force enable zoom</string> <!-- Summary for whether or not to force-enable user scalablity (aka, zoom) [CHAR LIMIT=30] --> <string name="pref_force_userscalable_summary">Whether or not to override a website\'s request to control zoom behavior</string> + <!-- Inverted screen category under accessibility settings [CHAR LIMIT=50] --> + <string name="pref_inverted_category">Inverted Screen Rendering</string> + <!-- Title for the inverted screen feature. This causes the screen to render with inverted colors (black becomes white and vice versa) [CHAR LIMIT=40] --> + <string name="pref_inverted">Inverted Rendering</string> + <!-- Summary for the inverted screen feature. [CHAR LIMIT=120] --> + <string name="pref_inverted_summary">Enable inverted rendering. Black will become white and vice versa.</string> + <!-- Title for the inverted screen contrast. Change the contrast value from 1.0 to 3.0. [CHAR LIMIT=30] --> + <string name="pref_inverted_contrast">Contrast</string> <!-- Settings label --> <string name="pref_default_zoom">Default zoom</string> <!-- Settings default zoom options; appear in default zoom dialog box --> @@ -570,6 +583,8 @@ <!-- Do not tranlsate. Development option --> <string name="pref_development_hardware_accel" translatable="false">Enable OpenGL Rendering</string> <!-- Do not tranlsate. Development option --> + <string name="pref_development_hardware_accel_skia" translatable="false">Enable HW Accelerated Skia</string> + <!-- Do not tranlsate. Development option --> <string name="pref_development_visual_indicator" translatable="false">Enable Visual Indicator</string> <!-- Do not tranlsate. Development option --> <string name="js_engine_flags" translatable="false">Set JS flags</string> @@ -594,6 +609,8 @@ <item>5</item> </string-array> <string name="pref_development_error_console" translatable="false">Show JavaScript Console</string> + <!-- Do not translate. Development option to reset the prologin time [CHAR LIMIT=20] --> + <string name="pref_development_reset_prelogin" translatable="false">Reset prelogin</string> <!-- Settings screen, setting option name --> <string name="pref_default_text_encoding">Text encoding</string> <!-- Options in the Default encoding dialog box --> @@ -645,6 +662,12 @@ <!-- Summary for the fullscreen lab feature [CHAR LIMIT=120] --> <string name="pref_lab_fullscreen_summary"> Use fullscreen mode to hide the status bar.</string> + <!-- Title for bandwidth management preference [CHAR LIMIT=25] --> + <string name="pref_data_title">Bandwidth Management</string> + <!-- Title for search preloading [CHAR LIMIT=40] --> + <string name="pref_data_preload_title">Search result preloading</string> + <!-- Summary for search preloading [CHAR LIMIT=80] --> + <string name="pref_data_preload_summary">Allow the browser to preload high confidence search results in the background</string> <!-- Title for a dialog displayed when the browser has a data connectivity problem --> <string name="browserFrameNetworkErrorLabel">Data connectivity problem</string> @@ -822,7 +845,7 @@ http://www.google.com/webhp?client={CID}&source=android-home</string> <!-- The default url for the instant_base_page. --> <string name="instant_base" translatable="false"> - http://www.google.com/webhp?client={CID}&source=android-omnibox-instant&ion=1</string> + http://www.google.com/webhp?client={CID}&source=android-instant&ion=1</string> <!-- Bookmarks --> <string-array name="bookmarks" translatable="false"> @@ -979,14 +1002,6 @@ the search engines list (Preferences->Advanced->Set search engine [CHAR LIMIT=80] --> <string name="instant_search_label">Google with Instant (Labs)</string> - <!-- Recover tabs after a crash dialog title [CHAR LIMIT=32] --> - <string name="recover_title">Restore windows?</string> - <!-- Recover tabs after a crash dialog prompt [CHAR LIMIT=none] --> - <string name="recover_prompt">Would you like to restore your browser windows from last time?</string> - <!-- Yes, recover windows from last time [CHAR LIMIT=10] --> - <string name="recover_yes">Restore</string> - <!-- No, don't recover windows from last time [CHAR LIMIT=10] --> - <string name="recover_no">No</string> <!-- Font size preview label in settings [CHAR LIMIT=30] --> <string name="preview">Preview</string> <!-- Name for the user's unsynced, local bookmarks [CHAR LIMIT=50] --> @@ -995,4 +1010,57 @@ <string name="ua_switcher_mobile">Mobile</string> <!-- Popup menu option that allows the user to select the desktop version of a webpage [CHAR LIMIT=50] --> <string name="ua_switcher_desktop">Desktop</string> + <!-- Preload permission label [CHAR LIMIT=40] --> + <string name="permission_preload_label">Preload results</string> + <!-- Empty text for the "saved pages" tab that is shown when no saved pages exist. [CHAR LIMIT=None] --> + <string name="empty_snapshots_folder">There are no saved pages.</string> + <!-- Menu option to delete the currently selected saved page [CHAR LIMIT=50] --> + <string name="remove_snapshot">Delete saved page</string> + <!-- Popup menu option to load the live version of a saved page [CHAR LIMIT=20] --> + <string name="snapshot_go_live">Go live</string> + + <!-- Accessibility content descriptions --> + + <!-- Content description for back button [CHAR LIMIT=NONE] --> + <string name="accessibility_button_back">Go back</string> + <!-- Content description for forward button [CHAR LIMIT=NONE] --> + <string name="accessibility_button_forward">Go forward</string> + <!-- Content description for refresh button [CHAR LIMIT=NONE] --> + <string name="accessibility_button_refresh">Refresh page</string> + <!-- Content description for stop button [CHAR LIMIT=NONE] --> + <string name="accessibility_button_stop">Stop page load</string> + <!-- Content description for add bookmark button [CHAR LIMIT=NONE] --> + <string name="accessibility_button_addbookmark">Bookmark page</string> + <!-- Content description for search button [CHAR LIMIT=NONE] --> + <string name="accessibility_button_search">Search</string> + <!-- Content description for voice search button [CHAR LIMIT=NONE] --> + <string name="accessibility_button_voice">Start voice search</string> + <!-- Content description for bookmarks button [CHAR LIMIT=NONE] --> + <string name="accessibility_button_bookmarks">Bookmarks</string> + <!-- Content description for close tab button [CHAR LIMIT=NONE] --> + <string name="accessibility_button_closetab">Close tab</string> + <!-- Content description for new tab button [CHAR LIMIT=NONE] --> + <string name="accessibility_button_newtab">Open new tab</string> + <!-- Content description for new incognito tab button [CHAR LIMIT=NONE] --> + <string name="accessibility_button_newincognitotab">Open new incognito tab</string> + <!-- Content description for clear button [CHAR LIMIT=NONE] --> + <string name="accessibility_button_clear">Clear input</string> + <!-- Content description for user agent switcher [CHAR LIMIT=NONE] --> + <string name="accessibility_button_uaswitch">Switch user agent</string> + <!-- Content description for go button [CHAR LIMIT=NONE] --> + <string name="accessibility_button_go">Go</string> + + <!-- Content description for tab switcher button [CHAR LIMIT=NONE] --> + <string name="accessibility_button_navscreen">Page manager</string> + <!-- Content description for overflow menu button [CHAR LIMIT=NONE] --> + <string name="accessibility_button_more">More options</string> + + <!-- Content description for incognito state [CHAR LIMIT=NONE] --> + <string name="accessibility_state_incognito">Incognito page</string> + <!-- Content description for frozen state [CHAR LIMIT=NONE] --> + <string name="accessibility_state_frozen">Saved page</string> + + <!-- Content description for tab switcher transition [CHAR LIMIT=NONE] --> + <string name="accessibility_transition_navscreen">Tab management</string> + </resources> diff --git a/res/values/styles.xml b/res/values/styles.xml index 061d600..76a698e 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -23,9 +23,8 @@ <item name="android:colorBackground">#FFFFFFFF</item> <item name="android:windowActionBar">true</item> <item name="android:windowNoTitle">false</item> - <item name="android:windowActionBarOverlay">true</item> + <item name="android:windowActionBarOverlay">false</item> <item name="android:actionBarStyle">@style/ActionBarStyle</item> - <item name="android:actionButtonStyle">@style/ActionButton</item> </style> <style name="DialogWhenLarge" parent="@android:style/Theme.Holo.DialogWhenLarge" > <item name="android:windowActionBar">false</item> @@ -40,14 +39,10 @@ <item name="android:backgroundDimEnabled">false</item> <item name="android:windowIsTranslucent">true</item> </style> - <style name="ActionBarStyle"> - <item name="android:height">56dip</item> + <style name="ActionBarStyle" parent="@android:style/Widget.Holo.ActionBar"> <item name="android:background">@drawable/bg_browsertabs</item> <item name="android:displayOptions"></item> </style> - <style name="ActionButton"> - <item name="android:background">?android:attr/selectableItemBackground</item> - </style> <style name="Suggestions" parent="@android:style/Widget.Holo.AutoCompleteTextView"> <item name="android:popupBackground">#D0000000</item> <item name="android:dropDownVerticalOffset">0dip</item> diff --git a/res/xml-sw600dp/lab_preferences.xml b/res/xml-sw600dp/lab_preferences.xml index 1dbec88..0edc919 100644 --- a/res/xml-sw600dp/lab_preferences.xml +++ b/res/xml-sw600dp/lab_preferences.xml @@ -16,17 +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_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/accessibility_preferences.xml b/res/xml/accessibility_preferences.xml index a7124f4..db5a539 100644 --- a/res/xml/accessibility_preferences.xml +++ b/res/xml/accessibility_preferences.xml @@ -40,4 +40,20 @@ </PreferenceCategory> + <PreferenceCategory android:title="@string/pref_inverted_category"> + + <CheckBoxPreference + android:key="inverted" + android:defaultValue="false" + android:title="@string/pref_inverted" + android:summary="@string/pref_inverted_summary" /> + + <com.android.browser.preferences.FontSizePreference + android:key="inverted_contrast" + android:title="@string/pref_inverted_contrast" + android:defaultValue="0" + android:max="20" /> + + </PreferenceCategory> + </PreferenceScreen> diff --git a/res/xml/advanced_preferences.xml b/res/xml/advanced_preferences.xml index 4a2823e..6e58164 100644 --- a/res/xml/advanced_preferences.xml +++ b/res/xml/advanced_preferences.xml @@ -76,12 +76,6 @@ android:defaultValue="true" android:title="@string/pref_content_block_popups" /> - <CheckBoxPreference - android:key="load_images" - android:defaultValue="true" - android:title="@string/pref_content_load_images" - android:summary="@string/pref_content_load_images_summary" /> - <ListPreference android:key="default_text_encoding" android:title="@string/pref_default_text_encoding" diff --git a/res/xml/bandwidth_preferences.xml b/res/xml/bandwidth_preferences.xml new file mode 100644 index 0000000..0767ac5 --- /dev/null +++ b/res/xml/bandwidth_preferences.xml @@ -0,0 +1,31 @@ +<?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. +--> + +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> + + <CheckBoxPreference + android:key="preload_enabled" + android:title="@string/pref_data_preload_title" + android:summary="@string/pref_data_preload_summary" + android:defaultValue="false" /> + + <CheckBoxPreference + android:key="load_images" + android:defaultValue="true" + android:title="@string/pref_content_load_images" + android:summary="@string/pref_content_load_images_summary" /> + +</PreferenceScreen> diff --git a/res/xml/debug_preferences.xml b/res/xml/debug_preferences.xml index 5126b0d..2d15ab2 100644 --- a/res/xml/debug_preferences.xml +++ b/res/xml/debug_preferences.xml @@ -22,6 +22,11 @@ android:defaultValue="true" android:title="@string/pref_development_hardware_accel" /> + <CheckBoxPreference + android:key="enable_hardware_accel_skia" + android:defaultValue="false" + android:title="@string/pref_development_hardware_accel_skia" /> + <ListPreference android:key="user_agent" android:title="@string/pref_development_uastring" @@ -29,13 +34,13 @@ android:entryValues="@array/pref_development_ua_values" android:defaultValue="0"/> - <!-- The javascript console is enabled by default when the user has - also enabled debug mode by navigating to about:debug. --> <CheckBoxPreference android:key="enable_visual_indicator" android:defaultValue="false" android:title="@string/pref_development_visual_indicator" /> + <!-- The javascript console is enabled by default when the user has + also enabled debug mode by navigating to about:debug. --> <CheckBoxPreference android:key="javascript_console" android:defaultValue="true" @@ -76,4 +81,8 @@ android:title="@string/js_engine_flags" android:singleLine="true" /> + <Preference + android:key="reset_prelogin" + android:title="@string/pref_development_reset_prelogin" /> + </PreferenceScreen> diff --git a/res/xml/preference_headers.xml b/res/xml/preference_headers.xml index e58b90a..2c80835 100644 --- a/res/xml/preference_headers.xml +++ b/res/xml/preference_headers.xml @@ -32,6 +32,10 @@ android:title="@string/pref_extras_title" /> + <header android:fragment="com.android.browser.preferences.BandwidthPreferencesFragment" + android:title="@string/pref_data_title" + /> + <header android:fragment="com.android.browser.preferences.LabPreferencesFragment" android:title="@string/pref_lab_title" /> diff --git a/src/com/android/browser/AccountsChangedReceiver.java b/src/com/android/browser/AccountsChangedReceiver.java index e5397a2..ba1b3cc 100644 --- a/src/com/android/browser/AccountsChangedReceiver.java +++ b/src/com/android/browser/AccountsChangedReceiver.java @@ -46,7 +46,7 @@ public class AccountsChangedReceiver extends BroadcastReceiver { static class DeleteRemovedAccounts extends Thread { Context mContext; public DeleteRemovedAccounts(Context context) { - mContext = context; + mContext = context.getApplicationContext(); } @Override @@ -63,6 +63,7 @@ public class AccountsChangedReceiver extends BroadcastReceiver { } } cr.update(Accounts.CONTENT_URI, null, null, null); + c.close(); } void delete(ContentResolver cr, String name, String type) { diff --git a/src/com/android/browser/ActiveTabsPage.java b/src/com/android/browser/ActiveTabsPage.java deleted file mode 100644 index 0feba9a..0000000 --- a/src/com/android/browser/ActiveTabsPage.java +++ /dev/null @@ -1,200 +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.content.Context; -import android.graphics.Bitmap; -import android.text.TextUtils; -import android.util.AttributeSet; -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.TextView; - -interface OnCloseTab { - void onCloseTab(int position); -} - -public class ActiveTabsPage extends LinearLayout implements OnClickListener, - OnItemClickListener, OnCloseTab { - - private Context mContext; - private UiController mController; - private TabControl mTabControl; - private View mNewTab, mNewIncognitoTab; - private TabAdapter mAdapter; - private AbsListView mTabsList; - - public ActiveTabsPage(Context context, UiController controller) { - super(context); - 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) { - final Tab tab = mTabControl.getTab(position); - boolean needToAttach = !mController.switchToTab(tab); - 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(); - } - } - } - - /** - * Special class to hold the close drawable. Its sole purpose is to allow - * 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. - */ - public static class CloseHolder extends ImageView { - public CloseHolder(Context context, AttributeSet attrs) { - super(context, attrs); - } - - @Override - public void setPressed(boolean pressed) { - // If the parent is pressed, do not set to pressed. - if (pressed && ((View) getParent()).isPressed()) { - return; - } - super.setPressed(pressed); - } - } - - 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() { - return mTabControl.getTabCount(); - } - - @Override - public Tab getItem(int position) { - return mTabControl.getTab(position); - } - - @Override - public long getItemId(int position) { - return position; - } - } -} diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java index f330cd5..2ac6fe6 100644 --- a/src/com/android/browser/AddBookmarkPage.java +++ b/src/com/android/browser/AddBookmarkPage.java @@ -742,7 +742,7 @@ public class AddBookmarkPage extends Activity private Message mMessage; private Context mContext; public SaveBookmarkRunnable(Context ctx, Message msg) { - mContext = ctx; + mContext = ctx.getApplicationContext(); mMessage = msg; } public void run() { @@ -759,7 +759,7 @@ public class AddBookmarkPage extends Activity try { final ContentResolver cr = getContentResolver(); Bookmarks.addBookmark(AddBookmarkPage.this, false, url, - title, thumbnail, true, mCurrentFolder); + title, thumbnail, mCurrentFolder); if (touchIconUrl != null) { new DownloadTouchIcon(mContext, cr, url).execute(mTouchIconUrl); } @@ -776,7 +776,7 @@ public class AddBookmarkPage extends Activity Long mId; public UpdateBookmarkTask(Context context, long id) { - mContext = context; + mContext = context.getApplicationContext(); mId = id; } @@ -959,6 +959,7 @@ public class AddBookmarkPage extends Activity long root = mAccountAdapter.getItem(position).rootFolderId; if (root != mRootFolder) { onRootFolderFound(root); + mFolderAdapter.clearRecentFolder(); } } } @@ -1061,7 +1062,7 @@ public class AddBookmarkPage extends Activity public EditBookmarkInfoLoader(Context context, Bundle bundle) { super(context); - mContext = context; + mContext = context.getApplicationContext(); mMap = bundle; } diff --git a/src/com/android/browser/AutofillHandler.java b/src/com/android/browser/AutofillHandler.java index b6b237d..c4b14d7 100644 --- a/src/com/android/browser/AutofillHandler.java +++ b/src/com/android/browser/AutofillHandler.java @@ -42,7 +42,7 @@ public class AutofillHandler { private Context mContext; public AutofillHandler(Context context) { - mContext = context; + mContext = context.getApplicationContext(); } /** diff --git a/src/com/android/browser/AutologinBar.java b/src/com/android/browser/AutologinBar.java new file mode 100644 index 0000000..e57d614 --- /dev/null +++ b/src/com/android/browser/AutologinBar.java @@ -0,0 +1,145 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.browser; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.ContextThemeWrapper; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.LinearLayout; +import android.widget.ProgressBar; +import android.widget.Spinner; +import android.widget.TextView; + +import com.android.browser.DeviceAccountLogin.AutoLoginCallback; + +public class AutologinBar extends LinearLayout implements OnClickListener, + AutoLoginCallback { + + protected Spinner mAutoLoginAccount; + protected Button mAutoLoginLogin; + protected ProgressBar mAutoLoginProgress; + protected TextView mAutoLoginError; + protected View mAutoLoginCancel; + protected DeviceAccountLogin mAutoLoginHandler; + protected ArrayAdapter<String> mAccountsAdapter; + protected TitleBar mTitleBar; + + public AutologinBar(Context context) { + super(context); + } + + public AutologinBar(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public AutologinBar(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + 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 = findViewById(R.id.autologin_close); + mAutoLoginCancel.setOnClickListener(this); + } + + public void setTitleBar(TitleBar titleBar) { + mTitleBar = titleBar; + } + + @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); + } + } + } + + public 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.INVISIBLE); + 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.INVISIBLE); + mAutoLoginError.setVisibility(View.VISIBLE); + break; + case DeviceAccountLogin.INITIAL: + break; + default: + throw new IllegalStateException(); + } + showAutoLogin(animate); + } else { + hideAutoLogin(animate); + } + } + + void showAutoLogin(boolean animate) { + mTitleBar.showAutoLogin(animate); + } + + void hideAutoLogin(boolean animate) { + mTitleBar.hideAutoLogin(animate); + } + + @Override + public void loginFailed() { + mAutoLoginAccount.setEnabled(true); + mAutoLoginLogin.setEnabled(true); + mAutoLoginProgress.setVisibility(View.INVISIBLE); + mAutoLoginError.setVisibility(View.VISIBLE); + } + +} diff --git a/src/com/android/browser/BackgroundHandler.java b/src/com/android/browser/BackgroundHandler.java new file mode 100644 index 0000000..a0d9243 --- /dev/null +++ b/src/com/android/browser/BackgroundHandler.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.browser; + +import android.os.HandlerThread; +import android.os.Looper; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class BackgroundHandler { + + static HandlerThread sLooperThread; + static ExecutorService mThreadPool; + + static { + sLooperThread = new HandlerThread("BackgroundHandler", HandlerThread.MIN_PRIORITY); + sLooperThread.start(); + mThreadPool = Executors.newCachedThreadPool(); + } + + public static void execute(Runnable runnable) { + mThreadPool.execute(runnable); + } + + public static Looper getLooper() { + return sLooperThread.getLooper(); + } + + private BackgroundHandler() {} +} diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java index bcb18f1..372f2a9 100644 --- a/src/com/android/browser/BaseUi.java +++ b/src/com/android/browser/BaseUi.java @@ -16,13 +16,8 @@ package com.android.browser; -import com.android.browser.BrowserWebView.ScrollListener; -import com.android.browser.Tab.LockIcon; -import com.android.internal.view.menu.MenuBuilder; - -import android.animation.ObjectAnimator; import android.app.Activity; -import android.content.pm.PackageManager; +import android.content.Intent; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Bitmap; @@ -40,9 +35,12 @@ import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.Menu; +import android.view.MenuItem; +import android.view.MotionEvent; import android.view.View; -import android.view.ViewConfiguration; import android.view.View.OnClickListener; +import android.view.View.OnTouchListener; +import android.view.ViewConfiguration; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.WindowManager; @@ -54,12 +52,15 @@ import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.Toast; +import com.android.browser.Tab.LockIcon; +import com.android.internal.view.menu.MenuBuilder; + import java.util.List; /** * UI interface definitions */ -public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { +public abstract class BaseUi implements UI, OnTouchListener { private static final String LOGTAG = "BaseUi"; @@ -75,7 +76,7 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { Gravity.CENTER); private static final int MSG_HIDE_TITLEBAR = 1; - private static final int HIDE_TITLEBAR_DELAY = 1500; // in ms + public static final int HIDE_TITLEBAR_DELAY = 1500; // in ms Activity mActivity; UiController mUiController; @@ -87,7 +88,6 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { private Drawable mMixLockIcon; protected Drawable mGenericFavicon; - private FrameLayout mBrowserFrameLayout; protected FrameLayout mContentView; protected FrameLayout mCustomViewContainer; @@ -95,13 +95,11 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { private WebChromeClient.CustomViewCallback mCustomViewCallback; private int mOriginalOrientation; - private CombinedBookmarkHistoryView mComboView; - private LinearLayout mErrorConsoleContainer = null; private Toast mStopToast; - private int mLastScrollY; + private float mInitialY; private int mTitlebarScrollTriggerSlop; // the default <video> poster @@ -110,6 +108,9 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { private View mVideoProgressView; private boolean mActivityPaused; + protected boolean mUseQuickControls; + protected TitleBar mTitleBar; + private NavigationBarBase mNavigationBar; public BaseUi(Activity browser, UiController controller) { mActivity = browser; @@ -123,15 +124,14 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { FrameLayout frameLayout = (FrameLayout) mActivity.getWindow() .getDecorView().findViewById(android.R.id.content); - mBrowserFrameLayout = (FrameLayout) LayoutInflater.from(mActivity) - .inflate(R.layout.custom_screen, null); - mContentView = (FrameLayout) mBrowserFrameLayout.findViewById( + LayoutInflater.from(mActivity) + .inflate(R.layout.custom_screen, frameLayout); + mContentView = (FrameLayout) frameLayout.findViewById( R.id.main_content); - mErrorConsoleContainer = (LinearLayout) mBrowserFrameLayout + mErrorConsoleContainer = (LinearLayout) frameLayout .findViewById(R.id.error_console); - mCustomViewContainer = (FrameLayout) mBrowserFrameLayout + mCustomViewContainer = (FrameLayout) frameLayout .findViewById(R.id.fullscreen_custom_content); - frameLayout.addView(mBrowserFrameLayout, COVER_SCREEN_PARAMS); setFullscreen(BrowserSettings.getInstance().useFullscreen()); mGenericFavicon = res.getDrawable( R.drawable.app_web_browser_sm); @@ -141,41 +141,10 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { config.getScaledOverscrollDistance()); mTitlebarScrollTriggerSlop = Math.max(mTitlebarScrollTriggerSlop, config.getScaledTouchSlop()); - } - - @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 - */ - protected void initWebViewSettings(WebView w) { - w.setScrollbarFadingEnabled(true); - w.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); - 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 - final BrowserSettings s = BrowserSettings.getInstance(); - s.startManagingSettings(w.getSettings()); + mTitleBar = new TitleBar(mActivity, mUiController, this, + mContentView); + mTitleBar.setProgress(100); + mNavigationBar = mTitleBar.getNavigationBar(); } private void cancelStopToast() { @@ -206,16 +175,14 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { public void onConfigurationChanged(Configuration config) { } + public Activity getActivity() { + return mActivity; + } + // key handling @Override public boolean onBackKey() { - if (mComboView != null) { - if (!mComboView.onBackPressed()) { - mUiController.removeComboView(); - } - return true; - } if (mCustomView != null) { mUiController.hideCustomView(); return true; @@ -235,13 +202,14 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { setFavicon(tab); updateLockIconToLatest(tab); updateNavigationState(tab); + mTitleBar.onTabDataChanged(tab); } @Override public void bookmarkedStatusHasChanged(Tab tab) { if (tab.inForeground()) { boolean isBookmark = tab.isBookmarkedSite(); - getTitleBar().setCurrentUrlIsBookmark(isBookmark); + mNavigationBar.setCurrentUrlIsBookmark(isBookmark); } } @@ -269,15 +237,28 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { mHandler.removeMessages(MSG_HIDE_TITLEBAR); if ((tab != mActiveTab) && (mActiveTab != null)) { removeTabFromContentView(mActiveTab); + WebView web = mActiveTab.getWebView(); + if (web != null) { + web.setOnTouchListener(null); + } } mActiveTab = tab; + WebView web = mActiveTab.getWebView(); + if (web != null && !mUseQuickControls) { + web.setOnTouchListener(this); + } attachTabToContentView(tab); setShouldShowErrorConsole(tab, mUiController.shouldShowErrorConsole()); onTabDataChanged(tab); onProgressChanged(tab); boolean incognito = mActiveTab.getWebView().isPrivateBrowsingEnabled(); - getTitleBar().setIncognitoMode(incognito); + mNavigationBar.setIncognitoMode(incognito); updateAutoLogin(tab, false); + if (web != null && web.getVisibleTitleHeight() + != mTitleBar.getEmbeddedHeight() + && !mUseQuickControls) { + showTitleBarForDuration(); + } } Tab getActiveTab() { @@ -374,7 +355,7 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { // The tab consists of a container view, which contains the main // WebView, as well as any other UI elements associated with the tab. container = mActivity.getLayoutInflater().inflate(R.layout.tab, - null); + mContentView, false); tab.setViewContainer(container); } if (tab.getWebView() != webView) { @@ -445,7 +426,9 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { mUiController.endActionMode(); } showTitleBar(); - getTitleBar().startEditingUrl(clearInput); + if (!getActiveTab().isSnapshot()) { + mNavigationBar.startEditingUrl(clearInput); + } } boolean canShowTitleBar() { @@ -456,27 +439,30 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { && !mUiController.isInCustomActionMode(); } - void showTitleBar() { + protected void showTitleBar() { + mHandler.removeMessages(MSG_HIDE_TITLEBAR); if (canShowTitleBar()) { - getTitleBar().show(); + mTitleBar.show(); } } protected void hideTitleBar() { - if (getTitleBar().isShowing()) { - getTitleBar().hide(); + if (mTitleBar.isShowing()) { + mTitleBar.hide(); } } protected boolean isTitleBarShowing() { - return getTitleBar().isShowing(); + return mTitleBar.isShowing(); } public boolean isEditingUrl() { - return getTitleBar().isEditingUrl(); + return mTitleBar.isEditingUrl(); } - protected abstract TitleBarBase getTitleBar(); + public TitleBar getTitleBar() { + return mTitleBar; + } protected void setTitleGravity(int gravity) { WebView web = getWebView(); @@ -487,70 +473,34 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { @Override public void showVoiceTitleBar(String title, List<String> results) { - getTitleBar().setInVoiceMode(true, results); - getTitleBar().setDisplayTitle(title); + mNavigationBar.setInVoiceMode(true, results); + mNavigationBar.setDisplayTitle(title); } @Override public void revertVoiceTitleBar(Tab tab) { - getTitleBar().setInVoiceMode(false, null); + mNavigationBar.setInVoiceMode(false, null); String url = tab.getUrl(); - getTitleBar().setDisplayTitle(url); + mNavigationBar.setDisplayTitle(url); } @Override public void registerDropdownChangeListener(DropdownChangeListener d) { - getTitleBar().registerDropdownChangeListener(d); + mNavigationBar.registerDropdownChangeListener(d); } @Override - public void showComboView(boolean startWithHistory, Bundle extras) { - if (mComboView != null) { - return; + public void showComboView(ComboViews startingView, Bundle extras) { + Intent intent = new Intent(mActivity, ComboViewActivity.class); + intent.putExtra(ComboViewActivity.EXTRA_INITIAL_VIEW, startingView.name()); + intent.putExtra(ComboViewActivity.EXTRA_COMBO_ARGS, extras); + Tab t = getActiveTab(); + if (t != null) { + intent.putExtra(ComboViewActivity.EXTRA_CURRENT_URL, t.getUrl()); } - mComboView = new CombinedBookmarkHistoryView(mActivity, - mUiController, - startWithHistory ? - CombinedBookmarkHistoryView.FRAGMENT_ID_HISTORY - : CombinedBookmarkHistoryView.FRAGMENT_ID_BOOKMARKS, - extras); - FrameLayout wrapper = - (FrameLayout) mContentView.findViewById(R.id.webview_wrapper); - wrapper.setVisibility(View.GONE); - getTitleBar().stopEditingUrl(); - dismissIME(); - hideTitleBar(); - if (mActiveTab != null) { - mActiveTab.putInBackground(); - } - mComboView.setAlpha(0f); - ObjectAnimator anim = ObjectAnimator.ofFloat(mComboView, "alpha", 0f, 1f); - Resources res = mActivity.getResources(); - anim.setDuration(res.getInteger(R.integer.comboViewFadeInDuration)); - anim.start(); - mContentView.addView(mComboView, COVER_SCREEN_PARAMS); - } - - public boolean isComboViewShowing() { - return (mComboView != null); - } - - /** - * dismiss the ComboPage - */ - @Override - public void hideComboView() { - if (mComboView != null) { - mContentView.removeView(mComboView); - FrameLayout wrapper = - (FrameLayout) mContentView.findViewById(R.id.webview_wrapper); - wrapper.setVisibility(View.VISIBLE); - mComboView = null; - } - if (mActiveTab != null) { - mActiveTab.putInForeground(); - } - mActivity.invalidateOptionsMenu(); + intent.putExtra(ComboViewActivity.EXTRA_BOOKMARK_PAGE, + mUiController.createBookmarkCurrentPageIntent(false)); + mActivity.startActivityForResult(intent, Controller.COMBO_VIEW); } @Override @@ -609,8 +559,7 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { @Override public boolean showsWeb() { - return mCustomView == null - && mComboView == null; + return mCustomView == null; } @Override @@ -629,7 +578,7 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { } protected void updateAutoLogin(Tab tab, boolean animate) { - getTitleBar().updateAutoLogin(tab, animate); + mTitleBar.updateAutoLogin(tab, animate); } /** @@ -651,7 +600,7 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { } else if (lockIconType == LockIcon.LOCK_ICON_MIXED) { d = mMixLockIcon; } - getTitleBar().setLock(d); + mNavigationBar.setLock(d); } protected void setUrlTitle(Tab tab) { @@ -662,7 +611,7 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { } if (tab.isInVoiceSearchMode()) return; if (tab.inForeground()) { - getTitleBar().setDisplayTitle(url); + mNavigationBar.setDisplayTitle(url); } } @@ -670,7 +619,7 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { protected void setFavicon(Tab tab) { if (tab.inForeground()) { Bitmap icon = tab.getFavicon(); - getTitleBar().setFavicon(icon); + mNavigationBar.setFavicon(icon); } } @@ -697,6 +646,10 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { } @Override + public void updateMenuState(Tab tab, Menu menu) { + } + + @Override public void onOptionsMenuOpened() { } @@ -705,6 +658,11 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { } @Override + public boolean onOptionsItemSelected(MenuItem item) { + return false; + } + + @Override public void onOptionsMenuClosed(boolean inLoad) { } @@ -784,20 +742,6 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { warning.show(); } - 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); - } - protected WebView getWebView() { if (mActiveTab != null) { return mActiveTab.getWebView(); @@ -823,7 +767,7 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { } } - protected Drawable getFaviconDrawable(Bitmap icon) { + public Drawable getFaviconDrawable(Bitmap icon) { Drawable[] array = new Drawable[3]; array[0] = new PaintDrawable(Color.BLACK); PaintDrawable p = new PaintDrawable(Color.WHITE); @@ -849,34 +793,43 @@ public abstract class BaseUi implements UI, WebViewFactory, ScrollListener { * as if the user is editing the URL bar or if the page is loading */ public void suggestHideTitleBar() { - if (!isLoading() && !isEditingUrl()) { + if (!isLoading() && !isEditingUrl() && !mTitleBar.wantsToBeVisible()) { hideTitleBar(); } } - @Override - public void onScroll(int visibleTitleHeight, boolean userInitiated) { - WebView view = mActiveTab != null ? mActiveTab.getWebView() : null; - if (view == null) { - return; - } - int scrollY = view.getScrollY(); - if (isTitleBarShowing() - || scrollY < (mLastScrollY - mTitlebarScrollTriggerSlop)) { - mLastScrollY = scrollY; - if (visibleTitleHeight == 0 && userInitiated) { - mHandler.removeMessages(MSG_HIDE_TITLEBAR); + protected void showTitleBarForDuration() { + showTitleBar(); + Message msg = Message.obtain(mHandler, MSG_HIDE_TITLEBAR); + mHandler.sendMessageDelayed(msg, HIDE_TITLEBAR_DELAY); + } + + @Override + public boolean onTouch(View v, MotionEvent event) { + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + mInitialY = event.getY(); + break; + case MotionEvent.ACTION_MOVE: + WebView web = (WebView) v; + if (event.getPointerCount() == 1 + && !isTitleBarShowing() + && web.getVisibleTitleHeight() == 0 + && event.getY() > (mInitialY + mTitlebarScrollTriggerSlop)) { showTitleBar(); + } else if (event.getY() < mInitialY) { + mInitialY = event.getY(); + } + break; + case MotionEvent.ACTION_CANCEL: + case MotionEvent.ACTION_UP: + if (isTitleBarShowing()) { Message msg = Message.obtain(mHandler, MSG_HIDE_TITLEBAR); mHandler.sendMessageDelayed(msg, HIDE_TITLEBAR_DELAY); - } else if (visibleTitleHeight == getTitleBar().getEmbeddedHeight() - && mHandler.hasMessages(MSG_HIDE_TITLEBAR)) { - mHandler.removeMessages(MSG_HIDE_TITLEBAR); - suggestHideTitleBar(); } - } else if (scrollY > mLastScrollY) { - mLastScrollY = scrollY; + break; } + return false; } private Handler mHandler = new Handler() { diff --git a/src/com/android/browser/BookmarkUtils.java b/src/com/android/browser/BookmarkUtils.java index 491c16c..ca0cfbc 100644 --- a/src/com/android/browser/BookmarkUtils.java +++ b/src/com/android/browser/BookmarkUtils.java @@ -22,7 +22,6 @@ import android.content.ContentUris; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; -import android.content.SharedPreferences; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; @@ -38,7 +37,6 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.PaintDrawable; import android.net.Uri; import android.os.Message; -import android.preference.PreferenceManager; import android.provider.Browser; import android.provider.BrowserContract; @@ -106,6 +104,7 @@ public class BookmarkUtils { drawFaviconToCanvas(context, favicon, canvas, iconBounds, type); } } + canvas.setBitmap(null); return bm; } @@ -115,10 +114,7 @@ public class BookmarkUtils { static Intent createAddToHomeIntent(Context context, String url, String title, Bitmap touchIcon, Bitmap favicon) { Intent i = new Intent(INSTALL_SHORTCUT); - Intent shortcutIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); - long urlHash = url.hashCode(); - long uniqueId = (urlHash << 32) | shortcutIntent.hashCode(); - shortcutIntent.putExtra(Browser.EXTRA_APPLICATION_ID, Long.toString(uniqueId)); + Intent shortcutIntent = createShortcutIntent(url); i.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); i.putExtra(Intent.EXTRA_SHORTCUT_NAME, title); i.putExtra(Intent.EXTRA_SHORTCUT_ICON, createIcon(context, touchIcon, favicon, @@ -129,6 +125,14 @@ public class BookmarkUtils { return i; } + static Intent createShortcutIntent(String url) { + Intent shortcutIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); + long urlHash = url.hashCode(); + long uniqueId = (urlHash << 32) | shortcutIntent.hashCode(); + shortcutIntent.putExtra(Browser.EXTRA_APPLICATION_ID, Long.toString(uniqueId)); + return shortcutIntent; + } + private static Bitmap getIconBackground(Context context, BookmarkIconType type, int density) { if (type == BookmarkIconType.ICON_HOME_SHORTCUT) { // Want to create a shortcut icon on the homescreen, so the icon diff --git a/src/com/android/browser/Bookmarks.java b/src/com/android/browser/Bookmarks.java index bd3b872..190ff9d 100644 --- a/src/com/android/browser/Bookmarks.java +++ b/src/com/android/browser/Bookmarks.java @@ -67,7 +67,7 @@ public class Bookmarks { * @param parent ID of the parent folder. */ /* package */ static void addBookmark(Context context, boolean showToast, String url, - String name, Bitmap thumbnail, boolean retainIcon, long parent) { + String name, Bitmap thumbnail, long parent) { // Want to append to the beginning of the list ContentValues values = new ContentValues(); try { @@ -82,9 +82,6 @@ public class Bookmarks { } catch (IllegalStateException e) { Log.e(LOGTAG, "addBookmark", e); } - if (retainIcon) { - WebIconDatabase.getInstance().retainIconForPageUrl(url); - } if (showToast) { Toast.makeText(context, R.string.added_to_bookmarks, Toast.LENGTH_LONG).show(); diff --git a/src/com/android/browser/Browser.java b/src/com/android/browser/Browser.java index 65eb0ce..76aaa0b 100644 --- a/src/com/android/browser/Browser.java +++ b/src/com/android/browser/Browser.java @@ -17,12 +17,9 @@ package com.android.browser; import android.app.Application; -import android.content.Intent; import android.util.Log; import android.webkit.CookieSyncManager; -import dalvik.system.VMRuntime; - public class Browser extends Application { private final static String LOGTAG = "browser"; @@ -36,15 +33,6 @@ public class Browser extends Application { // Set to true to enable extra debug logging. final static boolean LOGD_ENABLED = true; - /** - * Specifies a heap utilization ratio that works better - * for the browser than the default ratio does. - */ - private final static float TARGET_HEAP_UTILIZATION = 0.75f; - - public Browser() { - } - @Override public void onCreate() { super.onCreate(); @@ -52,17 +40,11 @@ public class Browser extends Application { if (LOGV_ENABLED) Log.v(LOGTAG, "Browser.onCreate: this=" + this); - // Fix heap utilization for better heap size characteristics. - VMRuntime.getRuntime().setTargetHeapUtilization( - TARGET_HEAP_UTILIZATION); // create CookieSyncManager with current Context CookieSyncManager.createInstance(this); BrowserSettings.initialize(getApplicationContext()); + Preloader.initialize(getApplicationContext()); } - static Intent createBrowserViewIntent() { - Intent intent = new Intent(Intent.ACTION_WEB_SEARCH); - return intent; - } } diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java index dbcae2e..6ec6071 100644 --- a/src/com/android/browser/BrowserActivity.java +++ b/src/com/android/browser/BrowserActivity.java @@ -16,15 +16,10 @@ package com.android.browser; -import com.google.common.annotations.VisibleForTesting; - import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.PixelFormat; import android.os.Bundle; import android.util.Log; import android.view.ActionMode; @@ -38,6 +33,8 @@ import android.view.Window; import android.view.WindowManager; import android.view.accessibility.AccessibilityManager; +import com.google.common.annotations.VisibleForTesting; + public class BrowserActivity extends Activity { public static final String ACTION_SHOW_BOOKMARKS = "show_bookmarks"; @@ -60,6 +57,13 @@ public class BrowserActivity extends Activity { } super.onCreate(icicle); + // If this was a web search request, pass it on to the default web + // search provider and finish this activity. + if (IntentHandler.handleWebSearchIntent(this, null, getIntent())) { + finish(); + return; + } + BrowserSettings settings = BrowserSettings.getInstance(); // render the browser in OpenGL @@ -72,19 +76,13 @@ public class BrowserActivity extends Activity { this.getWindow().setFlags(0, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); } - // If this was a web search request, pass it on to the default web - // search provider and finish this activity. - if (IntentHandler.handleWebSearchIntent(this, null, getIntent())) { - finish(); - return; - } - - if (((AccessibilityManager) getSystemService(ACCESSIBILITY_SERVICE)) - .isEnabled()) { + AccessibilityManager accessibilityManager = (AccessibilityManager) + getSystemService(ACCESSIBILITY_SERVICE); + if (accessibilityManager != null && accessibilityManager.isEnabled()) { setDefaultKeyMode(DEFAULT_KEYS_DISABLE); } - mController = new Controller(this); + mController = new Controller(this, icicle == null); boolean xlarge = isTablet(this); if (xlarge) { mUi = new XLargeUi(this, mController); @@ -92,7 +90,6 @@ public class BrowserActivity extends Activity { mUi = new PhoneUi(this, mController); } mController.setUi(mUi); - mController.setWebViewFactory((BaseUi) mUi); Bundle state = getIntent().getBundleExtra(EXTRA_STATE); if (state != null && icicle == null) { @@ -115,7 +112,7 @@ public class BrowserActivity extends Activity { protected void onNewIntent(Intent intent) { if (ACTION_RESTART.equals(intent.getAction())) { Bundle outState = new Bundle(); - mController.onSaveInstanceState(outState, true); + mController.onSaveInstanceState(outState); finish(); getApplicationContext().startActivity( new Intent(getApplicationContext(), BrowserActivity.class) @@ -166,7 +163,7 @@ public class BrowserActivity extends Activity { if (LOGV_ENABLED) { Log.v(LOGTAG, "BrowserActivity.onSaveInstanceState: this=" + this); } - mController.onSaveInstanceState(outState, true); + mController.onSaveInstanceState(outState); } @Override @@ -269,4 +266,9 @@ public class BrowserActivity extends Activity { mController.onActivityResult(requestCode, resultCode, intent); } + @Override + public boolean onSearchRequested() { + return mController.onSearchRequested(); + } + } diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java index b6a50da..0c76a70 100644 --- a/src/com/android/browser/BrowserBookmarksPage.java +++ b/src/com/android/browser/BrowserBookmarksPage.java @@ -26,8 +26,6 @@ import android.content.Context; import android.content.CursorLoader; import android.content.Intent; import android.content.Loader; -import android.content.SharedPreferences; -import android.content.SharedPreferences.Editor; import android.content.res.Configuration; import android.content.res.Resources; import android.database.Cursor; @@ -36,7 +34,6 @@ import android.graphics.BitmapFactory; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; -import android.preference.PreferenceManager; import android.provider.BrowserContract; import android.provider.BrowserContract.Accounts; import android.provider.BrowserContract.ChromeSyncColumns; @@ -53,7 +50,6 @@ import android.widget.ExpandableListView; import android.widget.ExpandableListView.OnChildClickListener; import android.widget.ImageView; import android.widget.LinearLayout; -import android.widget.PopupMenu.OnMenuItemClickListener; import android.widget.Toast; import com.android.browser.BookmarkDragHandler.BookmarkDragController; @@ -67,7 +63,7 @@ interface BookmarksPageCallbacks { // Return true if handled boolean onBookmarkSelected(Cursor c, boolean isFolder); // Return true if handled - boolean onOpenInNewWindow(Cursor c); + boolean onOpenInNewWindow(String... urls); } /** @@ -75,7 +71,7 @@ interface BookmarksPageCallbacks { */ public class BrowserBookmarksPage extends Fragment implements View.OnCreateContextMenuListener, LoaderManager.LoaderCallbacks<Cursor>, BreadCrumbView.Controller, - OnMenuItemClickListener, OnChildClickListener { + OnChildClickListener { public static class ExtraDragState { public int childPosition; @@ -94,7 +90,6 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte public static final int VIEW_THUMBNAILS = 1; public static final int VIEW_LIST = 2; - static final String PREF_SELECTED_VIEW = "bookmarks_view"; BookmarksPageCallbacks mCallbacks; View mRoot; @@ -102,7 +97,6 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte boolean mDisableNewWindow; boolean mEnableContextMenu = true; View mEmptyView; - int mCurrentView; View mHeader; HashMap<Integer, BrowserBookmarksAdapter> mBookmarkAdapters = new HashMap<Integer, BrowserBookmarksAdapter>(); BookmarkDragHandler mDragHandler; @@ -142,7 +136,7 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte args.putString(ACCOUNT_NAME, accountName); args.putString(ACCOUNT_TYPE, accountType); BrowserBookmarksAdapter adapter = new BrowserBookmarksAdapter( - getActivity(), mCurrentView); + getActivity(), VIEW_THUMBNAILS); mBookmarkAdapters.put(id, adapter); mGrid.addAccount(accountName, adapter); lm.restartLoader(id, args, this); @@ -252,11 +246,6 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte }; @Override - public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - inflater.inflate(R.menu.bookmark, menu); - } - - @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { BookmarkContextMenuInfo info = (BookmarkContextMenuInfo) menuInfo; BrowserBookmarksAdapter adapter = getChildAdapter(info.groupPosition); @@ -319,13 +308,8 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); - SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(getActivity()); - mCurrentView = prefs.getInt(PREF_SELECTED_VIEW, getDefaultView()); - Bundle args = getArguments(); mDisableNewWindow = args == null ? false : args.getBoolean(EXTRA_DISABLE_WINDOW, false); - setHasOptionsMenu(true); } @@ -350,13 +334,6 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte return mRoot; } - private int getDefaultView() { - if (BrowserActivity.isTablet(getActivity())) { - return VIEW_THUMBNAILS; - } - return VIEW_LIST; - } - @Override public void onDestroyView() { super.onDestroyView(); @@ -425,7 +402,7 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte long id = c.getLong(BookmarksLoader.COLUMN_INDEX_ID); new OpenAllInTabsTask(id).execute(); } else { - mCallbacks.onOpenInNewWindow(c); + mCallbacks.onOpenInNewWindow(BrowserBookmarksPage.getUrl(c)); } } } @@ -447,10 +424,13 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte @Override protected void onPostExecute(Cursor result) { - if (mCallbacks != null) { + if (mCallbacks != null && result.getCount() > 0) { + String[] urls = new String[result.getCount()]; + int i = 0; while (result.moveToNext()) { - mCallbacks.onOpenInNewWindow(result); + urls[i++] = BrowserBookmarksPage.getUrl(result); } + mCallbacks.onOpenInNewWindow(urls); } } @@ -505,19 +485,6 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte } @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.thumbnail_view: - selectView(VIEW_THUMBNAILS); - return true; - case R.id.list_view: - selectView(VIEW_LIST); - return true; - } - return super.onOptionsItemSelected(item); - } - - @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); Resources res = getActivity().getResources(); @@ -527,28 +494,6 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte getActivity().invalidateOptionsMenu(); } - @Override - public void onPrepareOptionsMenu(Menu menu) { - super.onPrepareOptionsMenu(menu); - menu.findItem(R.id.list_view).setVisible(mCurrentView != VIEW_LIST); - menu.findItem(R.id.thumbnail_view).setVisible(mCurrentView != VIEW_THUMBNAILS); - } - - void selectView(int view) { - if (view == mCurrentView) { - return; - } - mCurrentView = view; - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); - Editor edit = prefs.edit(); - edit.putInt(PREF_SELECTED_VIEW, mCurrentView); - edit.apply(); - if (mEmptyView.getVisibility() == View.VISIBLE) { - return; - } - mGrid.selectView(mCurrentView); - } - /** * BreadCrumb controller callback */ @@ -575,19 +520,6 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte loader.forceLoad(); } - @Override - public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.id.list_view: - selectView(BrowserBookmarksPage.VIEW_LIST); - return true; - case R.id.thumbnail_view: - selectView(BrowserBookmarksPage.VIEW_THUMBNAILS); - return true; - } - return false; - } - public boolean onBackPressed() { return false; } @@ -652,7 +584,7 @@ public class BrowserBookmarksPage extends Fragment implements View.OnCreateConte BookmarkItem mHeader; public LookupBookmarkCount(Context context, BookmarkItem header) { - mContext = context; + mContext = context.getApplicationContext(); mHeader = header; } diff --git a/src/com/android/browser/BrowserHistoryPage.java b/src/com/android/browser/BrowserHistoryPage.java index bcc33e2..942a8fd 100644 --- a/src/com/android/browser/BrowserHistoryPage.java +++ b/src/com/android/browser/BrowserHistoryPage.java @@ -29,18 +29,14 @@ import android.content.CursorLoader; import android.content.DialogInterface; import android.content.Intent; import android.content.Loader; -import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.database.Cursor; import android.database.DataSetObserver; -import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.Drawable; import android.net.Uri; -import android.os.AsyncTask; import android.os.Bundle; -import android.preference.PreferenceManager; import android.provider.Browser; import android.provider.BrowserContract; import android.provider.BrowserContract.Combined; @@ -53,7 +49,6 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.ViewStub; -import android.webkit.WebIconDatabase.IconListener; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; @@ -66,6 +61,8 @@ import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; +import com.android.browser.CombinedBookmarkHistoryView.CombinedBookmarksCallbacks; + /** * Activity for displaying the browser's history, divided into * days of viewing. @@ -76,7 +73,7 @@ public class BrowserHistoryPage extends Fragment static final int LOADER_HISTORY = 1; static final int LOADER_MOST_VISITED = 2; - BookmarksHistoryCallbacks mCallbacks; + CombinedBookmarksCallbacks mCallback; HistoryAdapter mAdapter; HistoryChildWrapper mChildWrapper; boolean mDisableNewWindow; @@ -87,16 +84,6 @@ public class BrowserHistoryPage extends Fragment private FragmentBreadCrumbs mFragmentBreadCrumbs; private ExpandableListView mHistoryList; - // Implementation of WebIconDatabase.IconListener - class IconReceiver implements IconListener { - @Override - public void onReceivedIcon(String url, Bitmap icon) { - mAdapter.notifyDataSetChanged(); - } - } - - // Instance of IconReceiver - final IconReceiver mIconReceiver = new IconReceiver(); private View mRoot; static interface HistoryQuery { @@ -125,17 +112,15 @@ public class BrowserHistoryPage extends Fragment cm.setText(text); } - static BrowserHistoryPage newInstance(BookmarksHistoryCallbacks cb, Bundle args) { + static BrowserHistoryPage newInstance(CombinedBookmarksCallbacks cb, Bundle args) { BrowserHistoryPage bhp = new BrowserHistoryPage(); - bhp.mCallbacks = cb; + bhp.mCallback = cb; bhp.setArguments(args); return bhp; } @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences( - getActivity()); Uri.Builder combinedBuilder = Combined.CONTENT_URI.buildUpon(); switch (id) { @@ -241,8 +226,6 @@ public class BrowserHistoryPage extends Fragment getLoaderManager().restartLoader(LOADER_HISTORY, null, this); getLoaderManager().restartLoader(LOADER_MOST_VISITED, null, this); - // Register to receive icons in case they haven't all been loaded. - CombinedBookmarkHistoryView.getIconListenerSet().addListener(mIconReceiver); return mRoot; } @@ -289,77 +272,69 @@ public class BrowserHistoryPage extends Fragment @Override public void onItemClick( AdapterView<?> parent, View view, int position, long id) { - mCallbacks.onUrlSelected(((HistoryItem) view).getUrl(), false); + mCallback.openUrl(((HistoryItem) view).getUrl()); } }; @Override public boolean onChildClick(ExpandableListView parent, View view, int groupPosition, int childPosition, long id) { - mCallbacks.onUrlSelected(((HistoryItem) view).getUrl(), false); + mCallback.openUrl(((HistoryItem) view).getUrl()); return true; } @Override public void onDestroy() { super.onDestroy(); - CombinedBookmarkHistoryView.getIconListenerSet().removeListener(mIconReceiver); getLoaderManager().destroyLoader(LOADER_HISTORY); getLoaderManager().destroyLoader(LOADER_MOST_VISITED); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.history, menu); } + void promptToClearHistory() { + final ContentResolver resolver = getActivity().getContentResolver(); + final ClearHistoryTask clear = new ClearHistoryTask(resolver); + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()) + .setTitle(R.string.clear) + .setMessage(R.string.pref_privacy_clear_history_dlg) + .setIcon(android.R.drawable.ic_dialog_alert) + .setNegativeButton(R.string.cancel, null) + .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + if (which == DialogInterface.BUTTON_POSITIVE) { + clear.start(); + } + } + }); + final Dialog dialog = builder.create(); + dialog.show(); + } + @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.clear_history_menu_id: - final ContentResolver resolver = getActivity().getContentResolver(); - final ClearHistoryTask clear = new ClearHistoryTask(resolver, mCallbacks); - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()) - .setTitle(R.string.clear) - .setMessage(R.string.pref_privacy_clear_history_dlg) - .setIcon(android.R.drawable.ic_dialog_alert) - .setNegativeButton(R.string.cancel, null) - .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - if (which == DialogInterface.BUTTON_POSITIVE) { - clear.execute(); - } - } - }); - final Dialog dialog = builder.create(); - dialog.show(); - return true; - - default: - break; + if (item.getItemId() == R.id.clear_history_menu_id) { + promptToClearHistory(); + return true; } return super.onOptionsItemSelected(item); } - static class ClearHistoryTask extends AsyncTask<Void, Void, Void> { + static class ClearHistoryTask extends Thread { ContentResolver mResolver; - BookmarksHistoryCallbacks mCallbacks; - public ClearHistoryTask(ContentResolver resolver, - BookmarksHistoryCallbacks callbacks) { + public ClearHistoryTask(ContentResolver resolver) { mResolver = resolver; - mCallbacks = callbacks; - } - @Override - protected Void doInBackground(Void... params) { - Browser.clearHistory(mResolver); - return null; } @Override - protected void onPostExecute(Void result) { - mCallbacks.onRemoveParentChildRelationships(); + public void run() { + Browser.clearHistory(mResolver); } } @@ -427,10 +402,10 @@ public class BrowserHistoryPage extends Fragment Activity activity = getActivity(); switch (item.getItemId()) { case R.id.open_context_menu_id: - mCallbacks.onUrlSelected(url, false); + mCallback.openUrl(url); return true; case R.id.new_window_context_menu_id: - mCallbacks.onUrlSelected(url, true); + mCallback.openInNewTab(url); return true; case R.id.save_to_bookmarks_menu_id: if (historyItem.isBookmark()) { diff --git a/src/com/android/browser/BrowserPreferencesPage.java b/src/com/android/browser/BrowserPreferencesPage.java index 8302011..930e1db 100644 --- a/src/com/android/browser/BrowserPreferencesPage.java +++ b/src/com/android/browser/BrowserPreferencesPage.java @@ -16,18 +16,21 @@ package com.android.browser; -import com.android.browser.preferences.DebugPreferencesFragment; - import android.app.ActionBar; +import android.content.Intent; import android.os.Bundle; import android.preference.PreferenceActivity; import android.view.MenuItem; +import com.android.browser.preferences.BandwidthPreferencesFragment; +import com.android.browser.preferences.DebugPreferencesFragment; + import java.util.List; public class BrowserPreferencesPage extends PreferenceActivity { public static final String CURRENT_PAGE = "currentPage"; + private List<Header> mHeaders; @Override public void onCreate(Bundle icicle) { @@ -53,6 +56,21 @@ public class BrowserPreferencesPage extends PreferenceActivity { debug.fragment = DebugPreferencesFragment.class.getName(); target.add(debug); } + mHeaders = target; + } + + @Override + public Header onGetInitialHeader() { + String action = getIntent().getAction(); + if (Intent.ACTION_MANAGE_NETWORK_USAGE.equals(action)) { + String fragName = BandwidthPreferencesFragment.class.getName(); + for (Header h : mHeaders) { + if (fragName.equals(h.fragment)) { + return h; + } + } + } + return super.onGetInitialHeader(); } @Override diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java index 4928e61..b3f7689 100644 --- a/src/com/android/browser/BrowserSettings.java +++ b/src/com/android/browser/BrowserSettings.java @@ -102,10 +102,17 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, private WebStorageSizeManager mWebStorageSizeManager; private AutofillHandler mAutofillHandler; private WeakHashMap<WebSettings, String> mCustomUserAgents; + private static boolean sInitialized = false; + + // Cached values + private int mPageCacheCapacity = 1; + private String mAppCachePath; // Cached settings private SearchEngine mSearchEngine; + private static String sFactoryResetUrl; + public static void initialize(final Context context) { sInstance = new BrowserSettings(context); } @@ -115,45 +122,14 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, } private BrowserSettings(Context context) { - mContext = context; + mContext = context.getApplicationContext(); mPrefs = PreferenceManager.getDefaultSharedPreferences(mContext); - if (Build.VERSION.CODENAME.equals("REL")) { - // This is a release build, always startup with debug disabled - setDebugEnabled(false); - } - if (mPrefs.contains(PREF_TEXT_SIZE)) { - /* - * Update from TextSize enum to zoom percent - * SMALLEST is 50% - * SMALLER is 75% - * NORMAL is 100% - * LARGER is 150% - * LARGEST is 200% - */ - switch (getTextSize()) { - case SMALLEST: - setTextZoom(50); - break; - case SMALLER: - setTextZoom(75); - break; - case LARGER: - setTextZoom(150); - break; - case LARGEST: - setTextZoom(200); - break; - } - mPrefs.edit().remove(PREF_TEXT_SIZE).apply(); - } mAutofillHandler = new AutofillHandler(mContext); mManagedSettings = new LinkedList<WeakReference<WebSettings>>(); mCustomUserAgents = new WeakHashMap<WebSettings, String>(); - mWebStorageSizeManager = new WebStorageSizeManager(mContext, - new WebStorageSizeManager.StatFsDiskInfo(getAppCachePath()), - new WebStorageSizeManager.WebKitAppCacheInfo(getAppCachePath())); mPrefs.registerOnSharedPreferenceChangeListener(this); mAutofillHandler.asyncLoadFromDb(); + BackgroundHandler.execute(mSetup); } public void setController(Controller controller) { @@ -173,6 +149,73 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, } } + private Runnable mSetup = new Runnable() { + + @Override + public void run() { + // the cost of one cached page is ~3M (measured using nytimes.com). For + // low end devices, we only cache one page. For high end devices, we try + // to cache more pages, currently choose 5. + if (ActivityManager.staticGetMemoryClass() > 16) { + mPageCacheCapacity = 5; + } + mWebStorageSizeManager = new WebStorageSizeManager(mContext, + new WebStorageSizeManager.StatFsDiskInfo(getAppCachePath()), + new WebStorageSizeManager.WebKitAppCacheInfo(getAppCachePath())); + if (Build.VERSION.CODENAME.equals("REL")) { + // This is a release build, always startup with debug disabled + setDebugEnabled(false); + } + if (mPrefs.contains(PREF_TEXT_SIZE)) { + /* + * Update from TextSize enum to zoom percent + * SMALLEST is 50% + * SMALLER is 75% + * NORMAL is 100% + * LARGER is 150% + * LARGEST is 200% + */ + switch (getTextSize()) { + case SMALLEST: + setTextZoom(50); + break; + case SMALLER: + setTextZoom(75); + break; + case LARGER: + setTextZoom(150); + break; + case LARGEST: + setTextZoom(200); + break; + } + mPrefs.edit().remove(PREF_TEXT_SIZE).apply(); + } + + sFactoryResetUrl = mContext.getResources().getString(R.string.homepage_base); + if (sFactoryResetUrl.indexOf("{CID}") != -1) { + sFactoryResetUrl = sFactoryResetUrl.replace("{CID}", + BrowserProvider.getClientId(mContext.getContentResolver())); + } + + synchronized (BrowserSettings.class) { + sInitialized = true; + BrowserSettings.class.notifyAll(); + } + } + }; + + private static void requireInitialization() { + synchronized (BrowserSettings.class) { + while (!sInitialized) { + try { + BrowserSettings.class.wait(); + } catch (InterruptedException e) { + } + } + } + } + /** * Syncs all the settings that have a Preference UI */ @@ -181,6 +224,7 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, settings.setJavaScriptEnabled(enableJavascript()); settings.setLightTouchEnabled(enableLightTouch()); settings.setNavDump(enableNavDump()); + settings.setHardwareAccelSkiaEnabled(isSkiaHardwareAccelerated()); settings.setShowVisualIndicator(enableVisualIndicator()); settings.setDefaultTextEncodingName(getDefaultTextEncoding()); settings.setDefaultZoom(getDefaultZoom()); @@ -191,7 +235,7 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, settings.setTextZoom(getTextZoom()); settings.setAutoFillEnabled(isAutofillEnabled()); settings.setLayoutAlgorithm(getLayoutAlgorithm()); - settings.setJavaScriptCanOpenWindowsAutomatically(blockPopupWindows()); + settings.setJavaScriptCanOpenWindowsAutomatically(!blockPopupWindows()); settings.setLoadsImagesAutomatically(loadImages()); settings.setLoadWithOverviewMode(loadPageInOverviewMode()); settings.setSavePassword(rememberPasswords()); @@ -205,6 +249,12 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, } else { settings.setUserAgentString(USER_AGENTS[getUserAgent()]); } + + settings.setProperty(PREF_INVERTED, + useInvertedRendering() ? "true" : "false"); + + settings.setProperty(PREF_INVERTED_CONTRAST, + Float.toString(getInvertedContrast())); } /** @@ -233,7 +283,7 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, settings.setWorkersEnabled(true); // This only affects V8. // HTML5 configuration parametersettings. - settings.setAppCacheMaxSize(mWebStorageSizeManager.getAppCacheMaxSize()); + settings.setAppCacheMaxSize(getWebStorageSizeManager().getAppCacheMaxSize()); settings.setAppCachePath(getAppCachePath()); settings.setDatabasePath(mContext.getDir("databases", 0).getPath()); settings.setGeolocationDatabasePath(mContext.getDir("geolocation", 0).getPath()); @@ -276,16 +326,16 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, if (mController.getUi() != null) { mController.getUi().setFullscreen(useFullscreen()); } + } else if (PREF_ENABLE_QUICK_CONTROLS.equals(key)) { + if (mController.getUi() != null) { + mController.getUi().setUseQuickControls(sharedPreferences.getBoolean(key, false)); + } } } public static String getFactoryResetHomeUrl(Context context) { - String url = context.getResources().getString(R.string.homepage_base); - if (url.indexOf("{CID}") != -1) { - url = url.replace("{CID}", - BrowserProvider.getClientId(context.getContentResolver())); - } - return url; + requireInitialization(); + return sFactoryResetUrl; } public LayoutAlgorithm getLayoutAlgorithm() { @@ -307,25 +357,21 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, return layoutAlgorithm; } - // TODO: Cache public int getPageCacheCapacity() { - // the cost of one cached page is ~3M (measured using nytimes.com). For - // low end devices, we only cache one page. For high end devices, we try - // to cache more pages, currently choose 5. - if (ActivityManager.staticGetMemoryClass() > 16) { - return 5; - } else { - return 1; - } + requireInitialization(); + return mPageCacheCapacity; } public WebStorageSizeManager getWebStorageSizeManager() { + requireInitialization(); return mWebStorageSizeManager; } - // TODO: Cache private String getAppCachePath() { - return mContext.getDir("appcache", 0).getPath(); + if (mAppCachePath == null) { + mAppCachePath = mContext.getDir("appcache", 0).getPath(); + } + return mAppCachePath; } private void updateSearchEngine(boolean force) { @@ -359,6 +405,7 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, } public boolean isDebugEnabled() { + requireInitialization(); return mPrefs.getBoolean(PREF_DEBUG_MENU, false); } @@ -411,7 +458,12 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, } public void resetDefaultPreferences() { - mPrefs.edit().clear().apply(); + // Preserve autologin setting + long gal = mPrefs.getLong(GoogleAccountLogin.PREF_AUTOLOGIN_TIME, -1); + mPrefs.edit() + .clear() + .putLong(GoogleAccountLogin.PREF_AUTOLOGIN_TIME, gal) + .apply(); syncManagedSettings(); } @@ -423,6 +475,11 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, public void setAutoFillProfile(AutoFillProfile profile, Message msg) { mAutofillHandler.waitForLoad(); mAutofillHandler.setAutoFillProfile(profile, msg); + // Auto-fill will reuse the same profile ID when making edits to the profile, + // so we need to force a settings sync (otherwise the SharedPreferences + // manager will optimise out the call to onSharedPreferenceChanged(), as + // it thinks nothing has changed). + syncManagedSettings(); } public void toggleDebugSettings() { @@ -464,6 +521,10 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, return (percent - 100) / TEXT_ZOOM_STEP + TEXT_ZOOM_START_VAL; } + public SharedPreferences getPreferences() { + return mPrefs; + } + // ----------------------------- // getter/setters for accessibility_preferences.xml // ----------------------------- @@ -484,6 +545,7 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, } public int getTextZoom() { + requireInitialization(); int textZoom = mPrefs.getInt(PREF_TEXT_ZOOM, 10); return getAdjustedTextZoom(textZoom); } @@ -571,6 +633,13 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, return mPrefs.getBoolean(PREF_ENABLE_HARDWARE_ACCEL, true); } + public boolean isSkiaHardwareAccelerated() { + if (!isDebugEnabled()) { + return false; + } + return mPrefs.getBoolean(PREF_ENABLE_HARDWARE_ACCEL_SKIA, false); + } + public int getUserAgent() { if (!isDebugEnabled()) { return 0; @@ -665,6 +734,18 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, return mPrefs.getBoolean(PREF_FULLSCREEN, false); } + public boolean useInvertedRendering() { + return mPrefs.getBoolean(PREF_INVERTED, false); + } + + public float getInvertedContrast() { + return 1 + (mPrefs.getInt(PREF_INVERTED_CONTRAST, 0) / 10f); + } + + public void setInvertedContrast(int contrast) { + mPrefs.edit().putInt(PREF_INVERTED_CONTRAST, contrast).apply(); + } + // ----------------------------- // getter/setters for privacy_security_preferences.xml // ----------------------------- @@ -689,4 +770,11 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener, return mPrefs.getBoolean(PREF_REMEMBER_PASSWORDS, true); } + // ----------------------------- + // getter/setters for bandwidth_preferences.xml + // ----------------------------- + + public boolean isPreloadEnabled() { + return mPrefs.getBoolean(PREF_DATA_PRELOAD, false); + } } diff --git a/src/com/android/browser/BrowserSnapshotPage.java b/src/com/android/browser/BrowserSnapshotPage.java new file mode 100644 index 0000000..0953879 --- /dev/null +++ b/src/com/android/browser/BrowserSnapshotPage.java @@ -0,0 +1,237 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.browser; + +import android.app.Fragment; +import android.app.LoaderManager.LoaderCallbacks; +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.Context; +import android.content.CursorLoader; +import android.content.Loader; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.net.Uri; +import android.os.Bundle; +import android.view.ContextMenu; +import android.view.ContextMenu.ContextMenuInfo; +import android.view.LayoutInflater; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.View.MeasureSpec; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.AdapterView.AdapterContextMenuInfo; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.GridView; +import android.widget.ImageView; +import android.widget.ResourceCursorAdapter; +import android.widget.TextView; + +import com.android.browser.CombinedBookmarkHistoryView.CombinedBookmarksCallbacks; +import com.android.browser.provider.SnapshotProvider.Snapshots; + +import java.text.DateFormat; +import java.util.Date; + +public class BrowserSnapshotPage extends Fragment implements + LoaderCallbacks<Cursor>, OnItemClickListener { + + public static final String EXTRA_ANIMATE_ID = "animate_id"; + + private static final int LOADER_SNAPSHOTS = 1; + private static final String[] PROJECTION = new String[] { + Snapshots._ID, + Snapshots.TITLE, + "length(" + Snapshots.VIEWSTATE + ")", + Snapshots.THUMBNAIL, + Snapshots.FAVICON, + Snapshots.URL, + Snapshots.DATE_CREATED, + }; + private static final int SNAPSHOT_TITLE = 1; + private static final int SNAPSHOT_VIEWSTATE_LENGTH = 2; + private static final int SNAPSHOT_THUMBNAIL = 3; + private static final int SNAPSHOT_FAVICON = 4; + private static final int SNAPSHOT_URL = 5; + private static final int SNAPSHOT_DATE_CREATED = 6; + + GridView mGrid; + View mEmpty; + SnapshotAdapter mAdapter; + CombinedBookmarksCallbacks mCallback; + + public static BrowserSnapshotPage newInstance(CombinedBookmarksCallbacks cb, + Bundle extras) { + BrowserSnapshotPage instance = new BrowserSnapshotPage(); + instance.mCallback = cb; + instance.setArguments(extras); + return instance; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.snapshots, container, false); + mEmpty = view.findViewById(android.R.id.empty); + mGrid = (GridView) view.findViewById(R.id.grid); + setupGrid(inflater); + getLoaderManager().initLoader(LOADER_SNAPSHOTS, null, this); + return view; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + getLoaderManager().destroyLoader(LOADER_SNAPSHOTS); + if (mAdapter != null) { + mAdapter.changeCursor(null); + mAdapter = null; + } + } + + void setupGrid(LayoutInflater inflater) { + View item = inflater.inflate(R.layout.snapshot_item, mGrid, false); + int mspec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); + item.measure(mspec, mspec); + int width = item.getMeasuredWidth(); + mGrid.setColumnWidth(width); + mGrid.setOnItemClickListener(this); + mGrid.setOnCreateContextMenuListener(this); + } + + @Override + public Loader<Cursor> onCreateLoader(int id, Bundle args) { + if (id == LOADER_SNAPSHOTS) { + return new CursorLoader(getActivity(), + Snapshots.CONTENT_URI, PROJECTION, + null, null, Snapshots.DATE_CREATED + " DESC"); + } + return null; + } + + @Override + public void onLoadFinished(Loader<Cursor> loader, Cursor data) { + if (loader.getId() == LOADER_SNAPSHOTS) { + if (mAdapter == null) { + mAdapter = new SnapshotAdapter(getActivity(), data); + mGrid.setAdapter(mAdapter); + } else { + mAdapter.changeCursor(data); + } + boolean empty = mAdapter.isEmpty(); + mGrid.setVisibility(empty ? View.GONE : View.VISIBLE); + mEmpty.setVisibility(empty ? View.VISIBLE : View.GONE); + } + } + + @Override + public void onLoaderReset(Loader<Cursor> loader) { + } + + @Override + public void onCreateContextMenu(ContextMenu menu, View v, + ContextMenuInfo menuInfo) { + MenuInflater inflater = getActivity().getMenuInflater(); + inflater.inflate(R.menu.snapshots_context, menu); + // Create the header, re-use BookmarkItem (has the layout we want) + BookmarkItem header = new BookmarkItem(getActivity()); + AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; + populateBookmarkItem(mAdapter.getItem(info.position), header); + menu.setHeaderView(header); + } + + private void populateBookmarkItem(Cursor cursor, BookmarkItem item) { + item.setName(cursor.getString(SNAPSHOT_TITLE)); + item.setUrl(cursor.getString(SNAPSHOT_URL)); + item.setFavicon(getBitmap(cursor, SNAPSHOT_FAVICON)); + } + + static Bitmap getBitmap(Cursor cursor, int columnIndex) { + byte[] data = cursor.getBlob(columnIndex); + if (data == null) { + return null; + } + return BitmapFactory.decodeByteArray(data, 0, data.length); + } + + @Override + public boolean onContextItemSelected(MenuItem item) { + if (item.getItemId() == R.id.delete_context_menu_id) { + AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); + deleteSnapshot(info.id); + return true; + } + return super.onContextItemSelected(item); + } + + void deleteSnapshot(long id) { + final Uri uri = ContentUris.withAppendedId(Snapshots.CONTENT_URI, id); + final ContentResolver cr = getActivity().getContentResolver(); + new Thread() { + @Override + public void run() { + cr.delete(uri, null, null); + } + }.start(); + + } + + @Override + public void onItemClick(AdapterView<?> parent, View view, int position, + long id) { + mCallback.openSnapshot(id); + } + + private static class SnapshotAdapter extends ResourceCursorAdapter { + + public SnapshotAdapter(Context context, Cursor c) { + super(context, R.layout.snapshot_item, c, 0); + } + + @Override + public void bindView(View view, Context context, Cursor cursor) { + ImageView thumbnail = (ImageView) view.findViewById(R.id.thumb); + byte[] thumbBlob = cursor.getBlob(SNAPSHOT_THUMBNAIL); + if (thumbBlob == null) { + thumbnail.setImageResource(R.drawable.browser_thumbnail); + } else { + Bitmap thumbBitmap = BitmapFactory.decodeByteArray( + thumbBlob, 0, thumbBlob.length); + thumbnail.setImageBitmap(thumbBitmap); + } + TextView title = (TextView) view.findViewById(R.id.title); + title.setText(cursor.getString(SNAPSHOT_TITLE)); + TextView size = (TextView) view.findViewById(R.id.size); + if (size != null) { + int stateLen = cursor.getInt(SNAPSHOT_VIEWSTATE_LENGTH); + size.setText(String.format("%.2fMB", stateLen / 1024f / 1024f)); + } + long timestamp = cursor.getLong(SNAPSHOT_DATE_CREATED); + TextView date = (TextView) view.findViewById(R.id.date); + DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT); + date.setText(dateFormat.format(new Date(timestamp))); + } + + @Override + public Cursor getItem(int position) { + return (Cursor) super.getItem(position); + } + } + +} diff --git a/src/com/android/browser/BrowserWebView.java b/src/com/android/browser/BrowserWebView.java index 55dd24a..38bbf90 100644 --- a/src/com/android/browser/BrowserWebView.java +++ b/src/com/android/browser/BrowserWebView.java @@ -17,30 +17,19 @@ package com.android.browser; import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Canvas; import android.util.AttributeSet; -import android.view.MotionEvent; import android.view.View; import android.webkit.WebView; -import com.android.browser.NavTabView.WebProxyView; - import java.util.Map; /** * Manage WebView scroll events */ -public class BrowserWebView extends WebView implements Runnable { +public class BrowserWebView extends WebView { - private ScrollListener mScrollListener; - private boolean mIsCancelled; private boolean mBackgroundRemoved = false; - private boolean mUserInitiated = false; - private TitleBarBase mTitleBar; - private int mCaptureSize; - private Bitmap mCapture; - private WebProxyView mProxyView; + private TitleBar mTitleBar; /** * @param context @@ -61,7 +50,6 @@ public class BrowserWebView extends WebView implements Runnable { public BrowserWebView( Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) { super(context, attrs, defStyle, privateBrowsing); - init(); } /** @@ -70,7 +58,6 @@ public class BrowserWebView extends WebView implements Runnable { */ public BrowserWebView(Context context, AttributeSet attrs) { super(context, attrs); - init(); } /** @@ -78,25 +65,6 @@ public class BrowserWebView extends WebView implements Runnable { */ public BrowserWebView(Context context) { super(context); - init(); - } - - private void init() { - mCaptureSize = mContext.getResources().getDimensionPixelSize(R.dimen.tab_capture_size); - mCapture = Bitmap.createBitmap(mCaptureSize, mCaptureSize, - Bitmap.Config.RGB_565); - } - - protected void setProxyView(WebProxyView p) { - mProxyView = p; - } - - @Override - public void invalidate() { - super.invalidate(); - if (mProxyView != null) { - mProxyView.invalidate(); - } } @Override @@ -104,13 +72,6 @@ public class BrowserWebView extends WebView implements Runnable { return (mTitleBar != null) ? mTitleBar.getEmbeddedHeight() : 0; } - // scroll runnable implementation - public void run() { - if (!mIsCancelled && (mScrollListener != null)) { - mScrollListener.onScroll(getVisibleTitleHeight(), mUserInitiated); - } - } - void hideEmbeddedTitleBar() { scrollBy(0, getVisibleTitleHeight()); } @@ -118,11 +79,7 @@ public class BrowserWebView extends WebView implements Runnable { @Override public void setEmbeddedTitleBar(final View title) { super.setEmbeddedTitleBar(title); - mTitleBar = (TitleBarBase) title; - if (title != null && mScrollListener != null) { - // allow the scroll listener to initialize its state - post(this); - } + mTitleBar = (TitleBar) title; } public boolean hasTitleBar() { @@ -130,55 +87,6 @@ public class BrowserWebView extends WebView implements Runnable { } @Override - public boolean onTouchEvent(MotionEvent evt) { - if (MotionEvent.ACTION_DOWN == evt.getActionMasked()) { - mUserInitiated = true; - } else if (MotionEvent.ACTION_UP == evt.getActionMasked() - || (MotionEvent.ACTION_CANCEL == evt.getActionMasked())) { - mUserInitiated = false; - } - return super.onTouchEvent(evt); - } - - @Override - public void stopScroll() { - mIsCancelled = true; - super.stopScroll(); - } - - @Override - protected void onScrollChanged(int l, final int t, int ol, int ot) { - super.onScrollChanged(l, t, ol, ot); - if (!mIsCancelled) { - post(this); - } else { - mIsCancelled = false; - } - } - - void setScrollListener(ScrollListener l) { - mScrollListener = l; - } - - // callback for scroll events - - interface ScrollListener { - public void onScroll(int visibleTitleHeight, boolean userInitiated); - } - - protected Bitmap capture() { - if (mCapture == null) return null; - Canvas c = new Canvas(mCapture); - final int left = getScrollX(); - final int top = getScrollY() + getVisibleTitleHeight(); - c.translate(-left, -top); - float scale = mCaptureSize / (float) Math.max(getWidth(), getHeight()); - c.scale(scale, scale, left, top); - onDraw(c); - return mCapture; - } - - @Override protected void onDraw(android.graphics.Canvas c) { super.onDraw(c); if (!mBackgroundRemoved && getRootView().getBackground() != null) { @@ -191,13 +99,4 @@ public class BrowserWebView extends WebView implements Runnable { } } - @Override - protected void updateCachedTextfield(String updatedText) { - super.updateCachedTextfield(updatedText); - CrashRecoveryHandler handler = CrashRecoveryHandler.getInstance(); - if (handler != null) { - handler.backupState(); - } - } - } diff --git a/src/com/android/browser/BrowserWebViewFactory.java b/src/com/android/browser/BrowserWebViewFactory.java new file mode 100644 index 0000000..fbd26a9 --- /dev/null +++ b/src/com/android/browser/BrowserWebViewFactory.java @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.browser; + +import android.content.Context; +import android.content.pm.PackageManager; +import android.util.AttributeSet; +import android.view.View; +import android.webkit.WebView; + +/** + * Web view factory class for creating {@link BrowserWebView}'s. + */ +public class BrowserWebViewFactory implements WebViewFactory { + + private final Context mContext; + + public BrowserWebViewFactory(Context context) { + mContext = context; + } + + protected WebView instantiateWebView(AttributeSet attrs, int defStyle, + boolean privateBrowsing) { + return new BrowserWebView(mContext, attrs, defStyle, privateBrowsing); + } + + @Override + public WebView createSubWebView(boolean privateBrowsing) { + return createWebView(privateBrowsing); + } + + @Override + public WebView createWebView(boolean privateBrowsing) { + WebView w = instantiateWebView(null, android.R.attr.webViewStyle, privateBrowsing); + initWebViewSettings(w); + return w; + } + + protected void initWebViewSettings(WebView w) { + w.setScrollbarFadingEnabled(true); + w.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); + w.setMapTrackballToArrowKeys(false); // use trackball directly + // Enable the built-in zoom + w.getSettings().setBuiltInZoomControls(true); + boolean supportsMultiTouch = mContext.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 + final BrowserSettings s = BrowserSettings.getInstance(); + s.startManagingSettings(w.getSettings()); + } + +} diff --git a/src/com/android/browser/CombinedBookmarkHistoryView.java b/src/com/android/browser/CombinedBookmarkHistoryView.java index 785b2cd..86afe1e 100644 --- a/src/com/android/browser/CombinedBookmarkHistoryView.java +++ b/src/com/android/browser/CombinedBookmarkHistoryView.java @@ -23,48 +23,37 @@ import android.app.ActionBar.TabListener; import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; -import android.content.Intent; import android.content.res.Configuration; -import android.content.res.Resources; import android.database.Cursor; import android.graphics.Bitmap; -import android.net.Uri; -import android.os.AsyncTask; import android.os.Bundle; -import android.provider.Browser; import android.view.Gravity; import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.view.ViewGroup; -import android.webkit.WebIconDatabase; import android.webkit.WebIconDatabase.IconListener; import android.widget.FrameLayout; import android.widget.LinearLayout; +import com.android.browser.UI.ComboViews; + import java.util.HashMap; import java.util.Vector; -interface BookmarksHistoryCallbacks { - public void onUrlSelected(String url, boolean newWindow); - public void onRemoveParentChildRelationships(); -} - public class CombinedBookmarkHistoryView extends LinearLayout - implements OnTouchListener, TabListener, OptionsMenuHandler { + implements OnTouchListener, TabListener { final static String STARTING_FRAGMENT = "fragment"; final static int INVALID_ID = 0; final static int FRAGMENT_ID_BOOKMARKS = 1; final static int FRAGMENT_ID_HISTORY = 2; + final static int FRAGMENT_ID_SNAPSHOTS = 3; - private UiController mUiController; - private Activity mActivity; private ActionBar mActionBar; + private FragmentManager mFragmentManager; private Bundle mExtras; @@ -72,10 +61,20 @@ public class CombinedBookmarkHistoryView extends LinearLayout ActionBar.Tab mTabBookmarks; ActionBar.Tab mTabHistory; + ActionBar.Tab mTabSnapshots; ViewGroup mBookmarksHeader; BrowserBookmarksPage mBookmarks; BrowserHistoryPage mHistory; + BrowserSnapshotPage mSnapshots; + CombinedBookmarksCallbacks mCallback; + + public static interface CombinedBookmarksCallbacks { + void openUrl(String url); + void openInNewTab(String... urls); + void openSnapshot(long id); + void close(); + } static class IconListenerSet implements IconListener { // Used to store favicons as we get them from the database @@ -114,21 +113,19 @@ public class CombinedBookmarkHistoryView extends LinearLayout return sIconListenerSet; } - public CombinedBookmarkHistoryView(Activity activity, UiController controller, - int startingFragment, Bundle extras) { + public CombinedBookmarkHistoryView(Activity activity, + CombinedBookmarksCallbacks cb, ComboViews startingView, + Bundle extras) { super(activity); - mUiController = controller; - mActivity = activity; mExtras = extras; - mActionBar = mActivity.getActionBar(); + mActionBar = activity.getActionBar(); + mCallback = cb; + mFragmentManager = activity.getFragmentManager(); View v = LayoutInflater.from(activity).inflate(R.layout.bookmarks_history, this); v.setOnTouchListener(this); - Resources res = activity.getResources(); -// setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL); - - mBookmarksHeader = new FrameLayout(mActivity); + mBookmarksHeader = new FrameLayout(activity); mBookmarksHeader.setLayoutParams(new FrameLayout.LayoutParams( FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.MATCH_PARENT, @@ -137,26 +134,10 @@ public class CombinedBookmarkHistoryView extends LinearLayout // Start up the default fragment initFragments(mExtras); - // XXX: Must do this before launching the AsyncTask to avoid a - // potential crash if the icon database has not been created. - WebIconDatabase.getInstance(); - - // Do this every time the view is created in case a new favicon was - // added to the webkit db. - (new AsyncTask<Void, Void, Void>() { - @Override - public Void doInBackground(Void... v) { - Browser.requestAllIcons(mActivity.getContentResolver(), - Browser.BookmarkColumns.FAVICON + " is NULL", getIconListenerSet()); - return null; - } - }).execute(); - - setupActionBar(startingFragment); - mUiController.registerOptionsMenuHandler(this); + setupActionBar(startingView); } - void setupActionBar(int startingFragment) { + void setupActionBar(ComboViews startingView) { if (BrowserActivity.isTablet(mContext)) { mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_USE_LOGO); @@ -168,31 +149,47 @@ public class CombinedBookmarkHistoryView extends LinearLayout mTabBookmarks = mActionBar.newTab(); mTabBookmarks.setText(R.string.tab_bookmarks); mTabBookmarks.setTabListener(this); - mActionBar.addTab(mTabBookmarks, FRAGMENT_ID_BOOKMARKS == startingFragment); + mActionBar.addTab(mTabBookmarks, ComboViews.Bookmarks == startingView); mTabHistory = mActionBar.newTab(); mTabHistory.setText(R.string.tab_history); mTabHistory.setTabListener(this); - mActionBar.addTab(mTabHistory, FRAGMENT_ID_HISTORY == startingFragment); + mActionBar.addTab(mTabHistory, ComboViews.History == startingView); + mTabSnapshots = mActionBar.newTab(); + mTabSnapshots.setText(R.string.tab_snapshots); + mTabSnapshots.setTabListener(this); + mActionBar.addTab(mTabSnapshots, ComboViews.Snapshots == startingView); mActionBar.setCustomView(mBookmarksHeader); mActionBar.show(); } + void tearDownActionBar() { + if (mActionBar != null) { + mActionBar.removeAllTabs(); + mTabBookmarks.setTabListener(null); + mTabHistory.setTabListener(null); + mTabSnapshots.setTabListener(null); + mTabBookmarks = null; + mTabHistory = null; + mTabSnapshots = null; + mActionBar = null; + } + } + @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (mCurrentFragment == FRAGMENT_ID_HISTORY) { // Warning, ugly hack below // This is done because history uses orientation-specific padding - FragmentManager fm = mActivity.getFragmentManager(); - mHistory = BrowserHistoryPage.newInstance(mUiController, mHistory.getArguments()); - fm.beginTransaction().replace(R.id.fragment, mHistory).commit(); + mHistory = BrowserHistoryPage.newInstance(mCallback, mHistory.getArguments()); + mFragmentManager.beginTransaction().replace(R.id.fragment, mHistory).commit(); } } private BookmarksPageCallbacks mBookmarkCallbackWrapper = new BookmarksPageCallbacks() { @Override - public boolean onOpenInNewWindow(Cursor c) { - mUiController.onUrlSelected(BrowserBookmarksPage.getUrl(c), true); + public boolean onOpenInNewWindow(String... urls) { + mCallback.openInNewTab(urls); return true; } @@ -201,7 +198,7 @@ public class CombinedBookmarkHistoryView extends LinearLayout if (isFolder) { return false; } - mUiController.onUrlSelected(BrowserBookmarksPage.getUrl(c), false); + mCallback.openUrl(BrowserBookmarksPage.getUrl(c)); return true; } }; @@ -209,7 +206,8 @@ public class CombinedBookmarkHistoryView extends LinearLayout private void initFragments(Bundle extras) { mBookmarks = BrowserBookmarksPage.newInstance(mBookmarkCallbackWrapper, extras, mBookmarksHeader); - mHistory = BrowserHistoryPage.newInstance(mUiController, extras); + mHistory = BrowserHistoryPage.newInstance(mCallback, extras); + mSnapshots = BrowserSnapshotPage.newInstance(mCallback, extras); } private void loadFragment(int id, FragmentTransaction ft) { @@ -222,6 +220,9 @@ public class CombinedBookmarkHistoryView extends LinearLayout case FRAGMENT_ID_HISTORY: ft.replace(R.id.fragment, mHistory); break; + case FRAGMENT_ID_SNAPSHOTS: + ft.replace(R.id.fragment, mSnapshots); + break; default: throw new IllegalArgumentException(); } @@ -231,14 +232,16 @@ public class CombinedBookmarkHistoryView extends LinearLayout @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); + tearDownActionBar(); if (mCurrentFragment != INVALID_ID) { try { - FragmentManager fm = mActivity.getFragmentManager(); - FragmentTransaction transaction = fm.beginTransaction(); + FragmentTransaction transaction = mFragmentManager.beginTransaction(); if (mCurrentFragment == FRAGMENT_ID_BOOKMARKS) { transaction.remove(mBookmarks); } else if (mCurrentFragment == FRAGMENT_ID_HISTORY) { transaction.remove(mHistory); + } else if (mCurrentFragment == FRAGMENT_ID_SNAPSHOTS) { + transaction.remove(mSnapshots); } transaction.commit(); } catch (IllegalStateException ex) { @@ -249,7 +252,6 @@ public class CombinedBookmarkHistoryView extends LinearLayout } mCurrentFragment = INVALID_ID; } - mUiController.unregisterOptionsMenuHandler(this); } /** @@ -282,6 +284,8 @@ public class CombinedBookmarkHistoryView extends LinearLayout loadFragment(FRAGMENT_ID_BOOKMARKS, ft); } else if (tab == mTabHistory) { loadFragment(FRAGMENT_ID_HISTORY, ft); + } else if (tab == mTabSnapshots) { + loadFragment(FRAGMENT_ID_SNAPSHOTS, ft); } } @@ -290,44 +294,4 @@ public class CombinedBookmarkHistoryView extends LinearLayout // Ignore } - @Override - public boolean onCreateOptionsMenu(Menu menu) { - // Handled by fragment - return false; - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - // Handled by fragment - return false; - } - - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - mUiController.getUi().onBackKey(); - return true; - case R.id.go_home: - BrowserSettings settings = BrowserSettings.getInstance(); - mUiController.onUrlSelected(settings.getHomePage(), false); - return true; - case R.id.add_bookmark: - mUiController.bookmarkCurrentPage(false); - return true; - case R.id.preferences_menu_id: - Intent intent = new Intent(mActivity, BrowserPreferencesPage.class); - intent.putExtra(BrowserPreferencesPage.CURRENT_PAGE, - mUiController.getCurrentTopWebView().getUrl()); - mActivity.startActivityForResult(intent, Controller.PREFERENCES_PAGE); - return true; - } - - switch (mCurrentFragment) { - case FRAGMENT_ID_BOOKMARKS: - return mBookmarks.onOptionsItemSelected(item); - case FRAGMENT_ID_HISTORY: - return mHistory.onOptionsItemSelected(item); - } - return false; - } } diff --git a/src/com/android/browser/ComboViewActivity.java b/src/com/android/browser/ComboViewActivity.java new file mode 100644 index 0000000..cea1884 --- /dev/null +++ b/src/com/android/browser/ComboViewActivity.java @@ -0,0 +1,110 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.browser; + +import android.app.Activity; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.view.Menu; +import android.view.MenuItem; + +import com.android.browser.CombinedBookmarkHistoryView.CombinedBookmarksCallbacks; +import com.android.browser.UI.ComboViews; + +public class ComboViewActivity extends Activity implements CombinedBookmarksCallbacks { + + public static final String EXTRA_COMBO_ARGS = "combo_args"; + public static final String EXTRA_INITIAL_VIEW = "initial_view"; + + public static final String EXTRA_OPEN_SNAPSHOT = "snapshot_id"; + public static final String EXTRA_OPEN_ALL = "open_all"; + public static final String EXTRA_CURRENT_URL = "url"; + public static final String EXTRA_BOOKMARK_PAGE = "create_bookmark"; + + private CombinedBookmarkHistoryView mComboView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setResult(RESULT_CANCELED); + Bundle extras = getIntent().getExtras(); + Bundle args = extras.getBundle(EXTRA_COMBO_ARGS); + String svStr = extras.getString(EXTRA_INITIAL_VIEW, null); + ComboViews startingView = svStr != null + ? ComboViews.valueOf(svStr) + : ComboViews.Bookmarks; + mComboView = new CombinedBookmarkHistoryView(this, this, + startingView, args); + setContentView(mComboView); + } + + @Override + public void openUrl(String url) { + Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); + setResult(RESULT_OK, i); + finish(); + } + + @Override + public void openInNewTab(String... urls) { + Intent i = new Intent(); + i.putExtra(EXTRA_OPEN_ALL, urls); + setResult(RESULT_OK, i); + finish(); + } + + @Override + public void close() { + finish(); + } + + @Override + public void openSnapshot(long id) { + Intent i = new Intent(); + i.putExtra(EXTRA_OPEN_SNAPSHOT, id); + setResult(RESULT_OK, i); + finish(); + } + + @Override + public void onBackPressed() { + if (!mComboView.onBackPressed()) { + super.onBackPressed(); + } + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.combined, menu); + return super.onCreateOptionsMenu(menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getItemId() == android.R.id.home) { + finish(); + return true; + } else if (item.getItemId() == R.id.preferences_menu_id) { + String url = getIntent().getStringExtra(EXTRA_CURRENT_URL); + Intent intent = new Intent(this, BrowserPreferencesPage.class); + intent.putExtra(BrowserPreferencesPage.CURRENT_PAGE, url); + startActivityForResult(intent, Controller.PREFERENCES_PAGE); + return true; + } + return super.onOptionsItemSelected(item); + } +} diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java index 9a015b2..89b700b 100644 --- a/src/com/android/browser/Controller.java +++ b/src/com/android/browser/Controller.java @@ -30,6 +30,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Configuration; +import android.content.res.TypedArray; import android.database.ContentObserver; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; @@ -40,7 +41,6 @@ import android.net.Uri; import android.net.http.SslError; import android.os.AsyncTask; import android.os.Bundle; -import android.os.Environment; import android.os.Handler; import android.os.Message; import android.os.PowerManager; @@ -77,15 +77,18 @@ import android.webkit.WebView; import android.widget.Toast; import com.android.browser.IntentHandler.UrlData; +import com.android.browser.UI.ComboViews; import com.android.browser.UI.DropdownChangeListener; import com.android.browser.provider.BrowserProvider; -import com.android.browser.provider.BrowserProvider2.Snapshots; +import com.android.browser.provider.BrowserProvider2.Thumbnails; +import com.android.browser.provider.SnapshotProvider.Snapshots; import com.android.browser.search.SearchEngine; import com.android.common.Search; import java.io.ByteArrayOutputStream; import java.io.File; import java.net.URLEncoder; +import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.List; @@ -118,6 +121,7 @@ public class Controller private static final int EMPTY_MENU = -1; // activity requestCode + final static int COMBO_VIEW = 1; final static int PREFERENCES_PAGE = 3; final static int FILE_SELECTED = 4; final static int AUTOFILL_SETUP = 5; @@ -145,7 +149,6 @@ public class Controller private TabControl mTabControl; private BrowserSettings mSettings; private WebViewFactory mFactory; - private OptionsMenuHandler mOptionsMenuHandler = null; private WakeLock mWakeLock; @@ -205,9 +208,10 @@ public class Controller // Checks to see when the bookmarks database has changed, and updates the // Tabs' notion of whether they represent bookmarked sites. private ContentObserver mBookmarksObserver; - private DataController mDataController; private CrashRecoveryHandler mCrashRecoveryHandler; + private boolean mSimulateActionBarOverlayMode; + private static class ClearThumbnails extends AsyncTask<File, Void, Void> { @Override public Void doInBackground(File... files) { @@ -222,23 +226,22 @@ public class Controller } } - public Controller(Activity browser) { + public Controller(Activity browser, boolean preloadCrashState) { mActivity = browser; mSettings = BrowserSettings.getInstance(); - mDataController = DataController.getInstance(mActivity); mTabControl = new TabControl(this); mSettings.setController(this); mCrashRecoveryHandler = CrashRecoveryHandler.initialize(this); + if (preloadCrashState) { + mCrashRecoveryHandler.preloadCrashState(); + } + mFactory = new BrowserWebViewFactory(browser); mUrlHandler = new UrlHandler(this); mIntentHandler = new IntentHandler(mActivity, this); mPageDialogsHandler = new PageDialogsHandler(mActivity, this); mNfcHandler = new NfcHandler(mActivity, this); - PowerManager pm = (PowerManager) mActivity - .getSystemService(Context.POWER_SERVICE); - mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Browser"); - startHandler(); mBookmarksObserver = new ContentObserver(mHandler) { @Override @@ -259,7 +262,8 @@ public class Controller new SystemAllowGeolocationOrigins(mActivity.getApplicationContext()); mSystemAllowGeolocationOrigins.start(); - retainIconsOnStartup(); + openIconDatabase(); + mSimulateActionBarOverlayMode = !BrowserActivity.isTablet(mActivity); } void start(final Bundle icicle, final Intent intent) { @@ -307,12 +311,13 @@ public class Controller private void onPreloginFinished(Bundle icicle, Intent intent, long currentTabId, boolean restoreIncognitoTabs) { if (currentTabId == -1) { + BackgroundHandler.execute(new PruneThumbnails(mActivity, null)); final Bundle extra = intent.getExtras(); // Create an initial tab. // If the intent is ACTION_VIEW and data is not null, the Browser is // invoked to view the content by another application. In this case, // the tab will be close when exit. - UrlData urlData = mIntentHandler.getUrlDataFromIntent(intent); + UrlData urlData = IntentHandler.getUrlDataFromIntent(intent); Tab t = null; if (urlData.isEmpty()) { t = openTabToHomePage(); @@ -329,15 +334,22 @@ public class Controller webView.setInitialScale(scale); } } - mTabControl.loadSnapshotTabs(); mUi.updateTabs(mTabControl.getTabs()); } else { mTabControl.restoreState(icicle, currentTabId, restoreIncognitoTabs, mUi.needsRestoreAllTabs()); - mUi.updateTabs(mTabControl.getTabs()); + List<Tab> tabs = mTabControl.getTabs(); + ArrayList<Long> restoredTabs = new ArrayList<Long>(tabs.size()); + for (Tab t : tabs) { + restoredTabs.add(t.getId()); + } + BackgroundHandler.execute(new PruneThumbnails(mActivity, restoredTabs)); + mUi.updateTabs(tabs); // TabControl.restoreState() will create a new tab even if // restoring the state fails. setActiveTab(mTabControl.getCurrentTab()); + // Handle the intent + mIntentHandler.onNewIntent(intent); } // clear up the thumbnail directory, which is no longer used; // ideally this should only be run once after an upgrade from @@ -354,8 +366,36 @@ public class Controller } } - void setWebViewFactory(WebViewFactory factory) { - mFactory = factory; + private static class PruneThumbnails implements Runnable { + private Context mContext; + private List<Long> mIds; + + PruneThumbnails(Context context, List<Long> preserveIds) { + mContext = context.getApplicationContext(); + mIds = preserveIds; + } + + @Override + public void run() { + ContentResolver cr = mContext.getContentResolver(); + if (mIds == null || mIds.size() == 0) { + cr.delete(Thumbnails.CONTENT_URI, null, null); + } else { + int length = mIds.size(); + StringBuilder where = new StringBuilder(); + where.append(Thumbnails._ID); + where.append(" not in ("); + for (int i = 0; i < length; i++) { + where.append(mIds.get(i)); + if (i < (length - 1)) { + where.append(","); + } + } + where.append(")"); + cr.delete(Thumbnails.CONTENT_URI, where.toString(), null); + } + } + } @Override @@ -379,6 +419,11 @@ public class Controller } @Override + public Context getContext() { + return mActivity; + } + + @Override public Activity getActivity() { return mActivity; } @@ -414,43 +459,17 @@ public class Controller return mTabControl.getTabs(); } - // Open the icon database and retain all the icons for visited sites. - // This is done on a background thread so as not to stall startup. - private void retainIconsOnStartup() { - // WebIconDatabase needs to be retrieved on the UI thread so that if - // it has not been created successfully yet the Handler is started on the - // UI thread. - new RetainIconsOnStartupTask(WebIconDatabase.getInstance()).execute(); - } + // Open the icon database. + private void openIconDatabase() { + // We have to call getInstance on the UI thread + final WebIconDatabase instance = WebIconDatabase.getInstance(); + BackgroundHandler.execute(new Runnable() { - private class RetainIconsOnStartupTask extends AsyncTask<Void, Void, Void> { - private WebIconDatabase mDb; - - public RetainIconsOnStartupTask(WebIconDatabase db) { - mDb = db; - } - - @Override - protected Void doInBackground(Void... unused) { - mDb.open(mActivity.getDir("icons", 0).getPath()); - Cursor c = null; - try { - c = Browser.getAllBookmarks(mActivity.getContentResolver()); - if (c.moveToFirst()) { - int urlIndex = c.getColumnIndex(Browser.BookmarkColumns.URL); - do { - String url = c.getString(urlIndex); - mDb.retainIconForPageUrl(url); - } while (c.moveToNext()); - } - } catch (IllegalStateException e) { - Log.e(LOGTAG, "retainIconsOnStartup", e); - } finally { - if (c != null) c.close(); + @Override + public void run() { + instance.open(mActivity.getDir("icons", 0).getPath()); } - - return null; - } + }); } private void startHandler() { @@ -511,7 +530,7 @@ public class Controller break; case RELEASE_WAKELOCK: - if (mWakeLock.isHeld()) { + if (mWakeLock != null && mWakeLock.isHeld()) { mWakeLock.release(); // if we reach here, Browser should be still in the // background loading after WAKELOCK_TIMEOUT (5-min). @@ -532,7 +551,7 @@ public class Controller } - + @Override public Tab getCurrentTab() { return mTabControl.getCurrentTab(); } @@ -615,6 +634,11 @@ public class Controller if (tab != null) { tab.pause(); if (!pauseWebViewTimers(tab)) { + if (mWakeLock == null) { + PowerManager pm = (PowerManager) mActivity + .getSystemService(Context.POWER_SERVICE); + mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Browser"); + } mWakeLock.acquire(); mHandler.sendMessageDelayed(mHandler .obtainMessage(RELEASE_WAKELOCK), WAKELOCK_TIMEOUT); @@ -629,7 +653,7 @@ public class Controller } - void onSaveInstanceState(Bundle outState, boolean saveImages) { + void onSaveInstanceState(Bundle outState) { // the default implementation requires each view to have an id. As the // browser handles the state itself and it doesn't use id for the views, // don't call the default implementation. Otherwise it will trigger the @@ -637,7 +661,7 @@ public class Controller // focused view XXX has no id". // Save all the tabs - mTabControl.saveState(outState, saveImages); + mTabControl.saveState(outState); if (!outState.isEmpty()) { // Save time so that we know how old incognito tabs (if any) are. outState.putSerializable("lastActiveDate", Calendar.getInstance()); @@ -655,10 +679,7 @@ public class Controller current.resume(); resumeWebViewTimers(current); } - if (mWakeLock.isHeld()) { - mHandler.removeMessages(RELEASE_WAKELOCK); - mWakeLock.release(); - } + releaseWakeLock(); mUi.onResume(); mNetworkHandler.onResume(); @@ -666,6 +687,13 @@ public class Controller WebView.enablePlatformNotifications(); } + private void releaseWakeLock() { + if (mWakeLock != null && mWakeLock.isHeld()) { + mHandler.removeMessages(RELEASE_WAKELOCK); + mWakeLock.release(); + } + } + /** * resume all WebView timers using the WebView instance of the given tab * @param tab guaranteed non-null @@ -675,9 +703,7 @@ public class Controller if ((!mActivityPaused && !inLoad) || (mActivityPaused && inLoad)) { CookieSyncManager.getInstance().startSync(); WebView w = tab.getWebView(); - if (w != null) { - w.resumeTimers(); - } + WebViewTimersControl.getInstance().onBrowserActivityResume(w); } } @@ -691,10 +717,7 @@ public class Controller return true; } else if (!tab.inPageLoad()) { CookieSyncManager.getInstance().stopSync(); - WebView w = getCurrentWebView(); - if (w != null) { - w.pauseTimers(); - } + WebViewTimersControl.getInstance().onBrowserActivityPause(getCurrentWebView()); return true; } return false; @@ -815,22 +838,22 @@ public class Controller if (!tab.isPrivateBrowsingEnabled() && !TextUtils.isEmpty(tab.getUrl()) && !tab.isSnapshot()) { + // Only update the bookmark screenshot if the user did not + // cancel the load early and there is not already + // a pending update for the tab. if (tab.inForeground() && !didUserStopLoading() || !tab.inForeground()) { - // Only update the bookmark screenshot if the user did not - // cancel the load early. - mHandler.sendMessageDelayed(mHandler.obtainMessage( - UPDATE_BOOKMARK_THUMBNAIL, 0, 0, tab), - 500); + if (!mHandler.hasMessages(UPDATE_BOOKMARK_THUMBNAIL, tab)) { + mHandler.sendMessageDelayed(mHandler.obtainMessage( + UPDATE_BOOKMARK_THUMBNAIL, 0, 0, tab), + 500); + } } } // pause the WebView timer and release the wake lock if it is finished // while BrowserActivity is in pause state. if (mActivityPaused && pauseWebViewTimers(tab)) { - if (mWakeLock.isHeld()) { - mHandler.removeMessages(RELEASE_WAKELOCK); - mWakeLock.release(); - } + releaseWakeLock(); } // Performance probe @@ -885,7 +908,7 @@ public class Controller } // Update the title in the history database if not in private browsing mode if (!tab.isPrivateBrowsingEnabled()) { - mDataController.updateHistoryTitle(pageUrl, title); + DataController.getInstance(mActivity).updateHistoryTitle(pageUrl, title); } } @@ -932,8 +955,7 @@ public class Controller || url.regionMatches(true, 0, "about:", 0, 6)) { return; } - mDataController.updateVisitedHistory(url); - WebIconDatabase.getInstance().retainIconForPageUrl(url); + DataController.getInstance(mActivity).updateVisitedHistory(url); if (!mActivityPaused) { // Since we clear the state in onPause, don't backup the current // state if we are already paused @@ -1151,6 +1173,30 @@ public class Controller mAutoFillSetupMessage = null; } break; + case COMBO_VIEW: + if (intent == null || resultCode != Activity.RESULT_OK) { + break; + } + if (Intent.ACTION_VIEW.equals(intent.getAction())) { + Tab t = getCurrentTab(); + Uri uri = intent.getData(); + loadUrl(t, uri.toString()); + } else if (intent.hasExtra(ComboViewActivity.EXTRA_OPEN_ALL)) { + String[] urls = intent.getStringArrayExtra( + ComboViewActivity.EXTRA_OPEN_ALL); + Tab parent = getCurrentTab(); + for (String url : urls) { + parent = openTab(url, parent, + !mSettings.openInBackground(), true); + } + } else if (intent.hasExtra(ComboViewActivity.EXTRA_OPEN_SNAPSHOT)) { + long id = intent.getLongExtra( + ComboViewActivity.EXTRA_OPEN_SNAPSHOT, -1); + if (id >= 0) { + createNewSnapshotTab(id, true); + } + } + break; default: break; } @@ -1175,7 +1221,8 @@ public class Controller // Disable opening in a new window if we have maxed out the windows extras.putBoolean(BrowserBookmarksPage.EXTRA_DISABLE_WINDOW, !mTabControl.canCreateNewTab()); - mUi.showComboView(startWithHistory, extras); + mUi.showComboView(startWithHistory + ? ComboViews.History : ComboViews.Bookmarks, extras); } // combo view callbacks @@ -1187,56 +1234,6 @@ public class Controller mTabControl.removeParentChildRelationShips(); } - /** - * callback from ComboPage when bookmark/history selection - */ - @Override - public void onUrlSelected(String url, boolean newTab) { - removeComboView(); - if (!TextUtils.isEmpty(url)) { - if (newTab) { - final Tab parent = mTabControl.getCurrentTab(); - openTab(url, - (parent != null) && parent.isPrivateBrowsingEnabled(), - !mSettings.openInBackground(), - true); - } else { - final Tab currentTab = mTabControl.getCurrentTab(); - loadUrl(currentTab, url); - } - } - } - - /** - * dismiss the ComboPage - */ - @Override - public void removeComboView() { - mUi.hideComboView(); - } - - // active tabs page handling - - protected void showActiveTabsPage() { - mMenuState = EMPTY_MENU; - mUi.showActiveTabsPage(); - } - - /** - * Remove the active tabs page. - * @param needToAttach If true, the active tabs page did not attach a tab - * to the content view, so we need to do that here. - */ - @Override - public void removeActiveTabsPage(boolean needToAttach) { - mMenuState = R.id.MAIN_MENU; - mUi.removeActiveTabsPage(); - if (needToAttach) { - setActiveTab(mTabControl.getCurrentTab()); - } - getCurrentTopWebView().requestFocus(); - } - // key handling protected void onBackKey() { if (!mUi.onBackKey()) { @@ -1261,10 +1258,6 @@ public class Controller // TODO: maybe put into separate handler protected boolean onCreateOptionsMenu(Menu menu) { - if (mOptionsMenuHandler != null) { - return mOptionsMenuHandler.onCreateOptionsMenu(menu); - } - if (mMenuState == EMPTY_MENU) { return false; } @@ -1279,7 +1272,7 @@ public class Controller protected void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { - if (v instanceof TitleBarBase) { + if (v instanceof TitleBar) { return; } if (!(v instanceof WebView)) { @@ -1457,9 +1450,6 @@ public class Controller } boolean onPrepareOptionsMenu(Menu menu) { - if (mOptionsMenuHandler != null) { - return mOptionsMenuHandler.onPrepareOptionsMenu(menu); - } // Note: setVisible will decide whether an item is visible; while // setEnabled() will decide whether an item is enabled, which also means // whether the matching shortcut key will function. @@ -1477,67 +1467,63 @@ public class Controller menu.setGroupEnabled(R.id.MAIN_MENU, true); menu.setGroupEnabled(R.id.MAIN_SHORTCUT_MENU, true); } - final WebView w = getCurrentTopWebView(); - boolean canGoBack = false; - boolean canGoForward = false; - boolean isHome = false; - if (w != null) { - canGoBack = w.canGoBack(); - canGoForward = w.canGoForward(); - isHome = mSettings.getHomePage().equals(w.getUrl()); - } - final MenuItem back = menu.findItem(R.id.back_menu_id); - back.setEnabled(canGoBack); - - final MenuItem home = menu.findItem(R.id.homepage_menu_id); - home.setEnabled(!isHome); - - final MenuItem forward = menu.findItem(R.id.forward_menu_id); - forward.setEnabled(canGoForward); - - // decide whether to show the share link option - PackageManager pm = mActivity.getPackageManager(); - Intent send = new Intent(Intent.ACTION_SEND); - send.setType("text/plain"); - ResolveInfo ri = pm.resolveActivity(send, - PackageManager.MATCH_DEFAULT_ONLY); - menu.findItem(R.id.share_page_menu_id).setVisible(ri != null); - - boolean isNavDump = mSettings.enableNavDump(); - final MenuItem nav = menu.findItem(R.id.dump_nav_menu_id); - nav.setVisible(isNavDump); - nav.setEnabled(isNavDump); - - boolean showDebugSettings = mSettings.isDebugEnabled(); - final MenuItem counter = menu.findItem(R.id.dump_counters_menu_id); - counter.setVisible(showDebugSettings); - counter.setEnabled(showDebugSettings); - - final MenuItem newtab = menu.findItem(R.id.new_tab_menu_id); - newtab.setEnabled(getTabControl().canCreateNewTab()); - - MenuItem archive = menu.findItem(R.id.save_webarchive_menu_id); - Tab tab = getTabControl().getCurrentTab(); - String url = tab != null ? tab.getUrl() : null; - archive.setVisible(!TextUtils.isEmpty(url) - && !url.endsWith(".webarchivexml")); + updateMenuState(getCurrentTab(), menu); break; } mCurrentMenuState = mMenuState; return mUi.onPrepareOptionsMenu(menu); } - public boolean onOptionsItemSelected(MenuItem item) { - if (mOptionsMenuHandler != null && - mOptionsMenuHandler.onOptionsItemSelected(item)) { - return true; + @Override + public void updateMenuState(Tab tab, Menu menu) { + boolean canGoBack = false; + boolean canGoForward = false; + boolean isHome = false; + if (tab != null) { + canGoBack = tab.canGoBack(); + canGoForward = tab.canGoForward(); + isHome = mSettings.getHomePage().equals(tab.getUrl()); } + final MenuItem back = menu.findItem(R.id.back_menu_id); + back.setEnabled(canGoBack); + + final MenuItem home = menu.findItem(R.id.homepage_menu_id); + home.setEnabled(!isHome); - if (item.getGroupId() != R.id.CONTEXT_MENU) { - // menu remains active, so ensure comboview is dismissed - // if main menu option is selected - removeComboView(); + final MenuItem forward = menu.findItem(R.id.forward_menu_id); + forward.setEnabled(canGoForward); + + final MenuItem source = menu.findItem(mInLoad ? R.id.stop_menu_id : R.id.reload_menu_id); + final MenuItem dest = menu.findItem(R.id.stop_reload_menu_id); + if (source != null && dest != null) { + dest.setTitle(source.getTitle()); + dest.setIcon(source.getIcon()); } + + // decide whether to show the share link option + PackageManager pm = mActivity.getPackageManager(); + Intent send = new Intent(Intent.ACTION_SEND); + send.setType("text/plain"); + ResolveInfo ri = pm.resolveActivity(send, + PackageManager.MATCH_DEFAULT_ONLY); + menu.findItem(R.id.share_page_menu_id).setVisible(ri != null); + + boolean isNavDump = mSettings.enableNavDump(); + final MenuItem nav = menu.findItem(R.id.dump_nav_menu_id); + nav.setVisible(isNavDump); + nav.setEnabled(isNavDump); + + boolean showDebugSettings = mSettings.isDebugEnabled(); + final MenuItem counter = menu.findItem(R.id.dump_counters_menu_id); + counter.setVisible(showDebugSettings); + counter.setEnabled(showDebugSettings); + + MenuItem saveSnapshot = menu.findItem(R.id.save_snapshot_menu_id); + saveSnapshot.setVisible(tab != null && !tab.isSnapshot()); + mUi.updateMenuState(tab, menu); + } + + public boolean onOptionsItemSelected(MenuItem item) { if (null == getCurrentTopWebView()) { return false; } @@ -1548,6 +1534,10 @@ public class Controller // won't get onKeyUp for MENU. So it is important to reset it here. mMenuIsDown = false; } + if (mUi.onOptionsItemSelected(item)) { + // ui callback handled it + return true; + } switch (item.getItemId()) { // -- Main menu case R.id.new_tab_menu_id: @@ -1566,12 +1556,8 @@ public class Controller bookmarksOrHistoryPicker(false); break; - case R.id.active_tabs_menu_id: - showActiveTabsPage(); - break; - case R.id.add_bookmark_menu_id: - bookmarkCurrentPage(false); + mActivity.startActivity(createBookmarkCurrentPageIntent(false)); break; case R.id.stop_reload_menu_id: @@ -1583,11 +1569,11 @@ public class Controller break; case R.id.back_menu_id: - getCurrentTopWebView().goBack(); + getCurrentTab().goBack(); break; case R.id.forward_menu_id: - getCurrentTopWebView().goForward(); + getCurrentTab().goForward(); break; case R.id.close_menu_id: @@ -1615,94 +1601,42 @@ public class Controller getCurrentTopWebView().showFindDialog(null, true); break; - case R.id.freeze_tab_menu_id: - // TODO: Show error messages - Tab source = getTabControl().getCurrentTab(); + case R.id.save_snapshot_menu_id: + final Tab source = getTabControl().getCurrentTab(); if (source == null) break; final ContentResolver cr = mActivity.getContentResolver(); final ContentValues values = source.createSnapshotValues(); - new AsyncTask<Tab, Void, Long>() { - @Override - protected Long doInBackground(Tab... params) { - Tab t = params[0]; - if (values == null) { - return t.isSnapshot() - ? ((SnapshotTab)t).getSnapshotId() - : -1; - } - Uri result = cr.insert(Snapshots.CONTENT_URI, values); - long id = ContentUris.parseId(result); - return id; - } - - protected void onPostExecute(Long id) { - if (id > 0) { - createNewSnapshotTab(id, true); + if (values != null) { + new AsyncTask<Tab, Void, Long>() { + + @Override + protected Long doInBackground(Tab... params) { + Uri result = cr.insert(Snapshots.CONTENT_URI, values); + long id = ContentUris.parseId(result); + return id; } - }; - }.execute(source); - break; - case R.id.save_webarchive_menu_id: - String state = Environment.getExternalStorageState(); - if (!Environment.MEDIA_MOUNTED.equals(state)) { - Log.e(LOGTAG, "External storage not mounted"); - Toast.makeText(mActivity, R.string.webarchive_failed, - Toast.LENGTH_SHORT).show(); - break; - } - final String directory = Environment.getExternalStoragePublicDirectory( - Environment.DIRECTORY_DOWNLOADS) + File.separator; - File dir = new File(directory); - if (!dir.exists() && !dir.mkdirs()) { - Log.e(LOGTAG, "Save as Web Archive: mkdirs for " + directory + " failed!"); - Toast.makeText(mActivity, R.string.webarchive_failed, + @Override + protected void onPostExecute(Long id) { + Bundle b = new Bundle(); + b.putLong(BrowserSnapshotPage.EXTRA_ANIMATE_ID, id); + mUi.showComboView(ComboViews.Snapshots, b); + }; + }.execute(source); + } else { + Toast.makeText(mActivity, R.string.snapshot_failed, Toast.LENGTH_SHORT).show(); - break; } - final WebView topWebView = getCurrentTopWebView(); - final String title = topWebView.getTitle(); - final String url = topWebView.getUrl(); - topWebView.saveWebArchive(directory, true, - new ValueCallback<String>() { - @Override - public void onReceiveValue(final String value) { - if (value != null) { - File file = new File(value); - final long length = file.length(); - if (file.exists() && length > 0) { - Toast.makeText(mActivity, R.string.webarchive_saved, - Toast.LENGTH_SHORT).show(); - final DownloadManager manager = (DownloadManager) mActivity - .getSystemService(Context.DOWNLOAD_SERVICE); - new Thread("Add WebArchive to download manager") { - @Override - public void run() { - manager.addCompletedDownload( - null == title ? value : title, - value, true, "application/x-webarchive-xml", - value, length, true); - } - }.start(); - return; - } - } - DownloadHandler.onDownloadStartNoStream(mActivity, - url, null, null, null, topWebView.isPrivateBrowsingEnabled()); - } - }); break; case R.id.page_info_menu_id: - mPageDialogsHandler.showPageInfo(mTabControl.getCurrentTab(), - false); + mPageDialogsHandler.showPageInfo(mTabControl.getCurrentTab(), false, null); break; case R.id.classic_history_menu_id: bookmarksOrHistoryPicker(true); break; - case R.id.title_bar_share_page_url: case R.id.share_page_menu_id: Tab currentTab = mTabControl.getCurrentTab(); if (null == currentTab) { @@ -1769,20 +1703,6 @@ public class Controller int id = item.getItemId(); boolean result = true; switch (id) { - // For the context menu from the title bar - case R.id.title_bar_copy_page_url: - Tab currentTab = mTabControl.getCurrentTab(); - if (null == currentTab) { - result = false; - break; - } - WebView mainView = currentTab.getWebView(); - if (null == mainView) { - result = false; - break; - } - copy(mainView.getUrl()); - break; // -- Browser context menu case R.id.open_context_menu_id: case R.id.save_link_context_menu_id: @@ -1879,11 +1799,28 @@ public class Controller mActivity.startActivity(intent); } + int getActionModeHeight() { + TypedArray actionBarSizeTypedArray = mActivity.obtainStyledAttributes( + new int[] { android.R.attr.actionBarSize }); + int size = (int) actionBarSizeTypedArray.getDimension(0, 0f); + actionBarSizeTypedArray.recycle(); + return size; + } + // action mode void onActionModeStarted(ActionMode mode) { mUi.onActionModeStarted(mode); mActionMode = mode; + if (mSimulateActionBarOverlayMode && !mUi.isEditingUrl()) { + WebView web = getCurrentWebView(); + // Simulate overlay mode by scrolling the webview the amount it will be + // pushed down. Actual overlay mode doesn't work for us as otherwise + // the CAB will, well, overlay the content, which breaks things like + // find on page. + int scrollBy = getActionModeHeight(); + web.scrollBy(0, scrollBy); + } } /* @@ -1912,6 +1849,11 @@ public class Controller if (!isInCustomActionMode()) return; mUi.onActionModeFinished(mInLoad); mActionMode = null; + if (mSimulateActionBarOverlayMode) { + WebView web = getCurrentWebView(); + int scrollBy = getActionModeHeight(); + web.scrollBy(0, -scrollBy); + } } boolean isInLoad() { @@ -1923,13 +1865,13 @@ public class Controller /** * add the current page as a bookmark to the given folder id * @param folderId use -1 for the default folder - * @param canBeAnEdit If true, check to see whether the site is already + * @param editExisting If true, check to see whether the site is already * bookmarked, and if it is, edit that bookmark. If false, and * the site is already bookmarked, do not attempt to edit the * existing bookmark. */ @Override - public void bookmarkCurrentPage(boolean canBeAnEdit) { + public Intent createBookmarkCurrentPageIntent(boolean editExisting) { Intent i = new Intent(mActivity, AddBookmarkPage.class); WebView w = getCurrentTopWebView(); @@ -1948,13 +1890,13 @@ public class Controller createScreenshot(w, getDesiredThumbnailWidth(mActivity), getDesiredThumbnailHeight(mActivity))); i.putExtra(BrowserContract.Bookmarks.FAVICON, w.getFavicon()); - if (canBeAnEdit) { + if (editExisting) { i.putExtra(AddBookmarkPage.CHECK_FOR_DUPE, true); } // Put the dialog at the upper right of the screen, covering the // star on the title bar. i.putExtra("gravity", Gravity.RIGHT | Gravity.TOP); - mActivity.startActivity(i); + return i; } // file chooser @@ -1987,14 +1929,7 @@ public class Controller R.dimen.bookmarkThumbnailHeight); } - static Bitmap createScreenshot(Tab tab, int width, int height) { - if ((tab != null) && (tab.getWebView() != null)) { - return createScreenshot(tab.getWebView(), width, height); - } - return null; - } - - private static Bitmap createScreenshot(WebView view, int width, int height) { + static Bitmap createScreenshot(WebView view, int width, int height) { // We render to a bitmap 2x the desired size so that we can then // re-scale it with filtering since canvas.scale doesn't filter // This helps reduce aliasing at the cost of being slightly blurry @@ -2032,6 +1967,7 @@ public class Controller thumbnail.draw(canvas); Bitmap ret = Bitmap.createScaledBitmap(bm, width / filter_scale, height / filter_scale, true); + canvas.setBitmap(null); bm.recycle(); return ret; } @@ -2162,18 +2098,6 @@ public class Controller mUi.removeTab(tab); mTabControl.removeTab(tab); mCrashRecoveryHandler.backupState(); - if (tab.isSnapshot()) { - SnapshotTab st = (SnapshotTab) tab; - final Uri uri = ContentUris.withAppendedId( - Snapshots.CONTENT_URI, st.getSnapshotId()); - final ContentResolver cr = mActivity.getContentResolver(); - new Thread() { - @Override - public void run() { - cr.delete(uri, null, null); - } - }.start(); - } } @Override @@ -2243,12 +2167,42 @@ public class Controller } } + private Tab showPreloadedTab(final UrlData urlData) { + if (!urlData.isPreloaded()) { + return null; + } + final PreloadedTabControl tabControl = urlData.getPreloadedTab(); + final String sbQuery = urlData.getSearchBoxQueryToSubmit(); + if (sbQuery != null) { + if (!tabControl.searchBoxSubmit(sbQuery, urlData.mUrl, urlData.mHeaders)) { + // Could not submit query. Fallback to regular tab creation + tabControl.destroy(); + return null; + } + } + // check tab count and make room for new tab + if (!mTabControl.canCreateNewTab()) { + Tab leastUsed = mTabControl.getLeastUsedTab(getCurrentTab()); + if (leastUsed != null) { + closeTab(leastUsed); + } + } + Tab t = tabControl.getTab(); + mTabControl.addPreloadedTab(t); + addTab(t); + setActiveTab(t); + return t; + } + // open a non inconito tab with the given url data // and set as active tab public Tab openTab(UrlData urlData) { - Tab tab = createNewTab(false, true, true); - if ((tab != null) && !urlData.isEmpty()) { - loadUrlDataIn(tab, urlData); + Tab tab = showPreloadedTab(urlData); + if (tab == null) { + tab = createNewTab(false, true, true); + if ((tab != null) && !urlData.isEmpty()) { + loadUrlDataIn(tab, urlData); + } } return tab; } @@ -2314,11 +2268,17 @@ public class Controller return tab; } - private SnapshotTab createNewSnapshotTab(long snapshotId, boolean setActive) { - SnapshotTab tab = mTabControl.createSnapshotTab(snapshotId); - addTab(tab); - if (setActive) { - setActiveTab(tab); + @Override + public SnapshotTab createNewSnapshotTab(long snapshotId, boolean setActive) { + SnapshotTab tab = null; + if (mTabControl.canCreateNewTab()) { + tab = mTabControl.createSnapshotTab(snapshotId); + addTab(tab); + if (setActive) { + setActiveTab(tab); + } + } else { + mUi.showMaxTabsWarning(); } return tab; } @@ -2331,8 +2291,6 @@ public class Controller */ @Override public boolean switchToTab(Tab tab) { - // hide combo view if open - removeComboView(); Tab currentTab = mTabControl.getCurrentTab(); if (tab == null || tab == currentTab) { return false; @@ -2343,9 +2301,9 @@ public class Controller @Override public void closeCurrentTab() { - // hide combo view if open - removeComboView(); if (mTabControl.getTabCount() == 1) { + mCrashRecoveryHandler.clearState(); + mTabControl.removeTab(getCurrentTab()); mActivity.finish(); return; } @@ -2370,8 +2328,6 @@ public class Controller */ @Override public void closeTab(Tab tab) { - // hide combo view if open - removeComboView(); removeTab(tab); } @@ -2395,7 +2351,8 @@ public class Controller * @param view The WebView used to load url. * @param url The URL to load. */ - protected void loadUrl(Tab tab, String url) { + @Override + public void loadUrl(Tab tab, String url) { loadUrl(tab, url, null); } @@ -2416,6 +2373,8 @@ public class Controller if (data != null) { if (data.mVoiceIntent != null) { t.activateVoiceSearchMode(data.mVoiceIntent); + } else if (data.isPreloaded()) { + // this isn't called for preloaded tabs } else { loadUrl(t, data.mUrl, data.mHeaders); } @@ -2424,12 +2383,11 @@ public class Controller @Override public void onUserCanceledSsl(Tab tab) { - WebView web = tab.getWebView(); // TODO: Figure out the "right" behavior - if (web.canGoBack()) { - web.goBack(); + if (tab.canGoBack()) { + tab.goBack(); } else { - web.loadUrl(mSettings.getHomePage()); + tab.loadUrl(mSettings.getHomePage(), null); } } @@ -2446,9 +2404,8 @@ public class Controller mActivity.moveTaskToBack(true); return; } - WebView w = current.getWebView(); - if (w.canGoBack()) { - w.goBack(); + if (current.canGoBack()) { + current.goBack(); } else { // Check to see if we are closing a window that was created by // another window. If so, we switch back to that window. @@ -2458,6 +2415,9 @@ public class Controller // Now we close the other tab closeTab(current); } else { + if ((current.getAppId() != null) || current.closeOnBack()) { + closeCurrentTab(); + } /* * Instead of finishing the activity, simply push this to the back * of the stack and let ActivityManager to choose the foreground @@ -2540,14 +2500,6 @@ public class Controller boolean noModifiers = event.hasNoModifiers(); // Even if MENU is already held down, we need to call to super to open // the IME on long press. - if (KeyEvent.KEYCODE_MENU == keyCode) { - if (mOptionsMenuHandler != null) { - return false; - } else { - event.startTracking(); - return true; - } - } if (!noModifiers && ((KeyEvent.KEYCODE_MENU == keyCode) || (KeyEvent.KEYCODE_CTRL_LEFT == keyCode) @@ -2557,7 +2509,8 @@ public class Controller } WebView webView = getCurrentTopWebView(); - if (webView == null) return false; + Tab tab = getCurrentTab(); + if (webView == null || tab == null) return false; boolean ctrl = event.hasModifiers(KeyEvent.META_CTRL_ON); boolean shift = event.hasModifiers(KeyEvent.META_SHIFT_ON); @@ -2589,15 +2542,19 @@ public class Controller if (!noModifiers) break; event.startTracking(); return true; + case KeyEvent.KEYCODE_FORWARD: + if (!noModifiers) break; + tab.goForward(); + return true; case KeyEvent.KEYCODE_DPAD_LEFT: if (ctrl) { - webView.goBack(); + tab.goBack(); return true; } break; case KeyEvent.KEYCODE_DPAD_RIGHT: if (ctrl) { - webView.goForward(); + tab.goForward(); return true; } break; @@ -2705,19 +2662,18 @@ public class Controller } @Override - public void registerOptionsMenuHandler(OptionsMenuHandler handler) { - mOptionsMenuHandler = handler; + public void registerDropdownChangeListener(DropdownChangeListener d) { + mUi.registerDropdownChangeListener(d); } - @Override - public void unregisterOptionsMenuHandler(OptionsMenuHandler handler) { - if (mOptionsMenuHandler == handler) { - mOptionsMenuHandler = null; - } + public boolean onSearchRequested() { + mUi.editUrl(false); + return true; } @Override - public void registerDropdownChangeListener(DropdownChangeListener d) { - mUi.registerDropdownChangeListener(d); + public boolean shouldCaptureThumbnails() { + return mUi.shouldCaptureThumbnails(); } + } diff --git a/src/com/android/browser/CrashRecoveryHandler.java b/src/com/android/browser/CrashRecoveryHandler.java index 5140952..8cb5929 100644 --- a/src/com/android/browser/CrashRecoveryHandler.java +++ b/src/com/android/browser/CrashRecoveryHandler.java @@ -16,24 +16,21 @@ package com.android.browser; -import android.app.AlertDialog; import android.content.Context; -import android.content.DialogInterface; -import android.content.DialogInterface.OnCancelListener; -import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.os.Handler; -import android.os.HandlerThread; +import android.os.Message; import android.os.Parcel; -import android.os.Process; import android.util.Log; import java.io.ByteArrayOutputStream; +import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.IOException; public class CrashRecoveryHandler { @@ -48,13 +45,21 @@ public class CrashRecoveryHandler { * we will automatically restore. If we then crash again within XX minutes, * we will prompt instead of automatically restoring. */ - private static final long PROMPT_INTERVAL = 30 * 60 * 1000; // 30 minutes + private static final long PROMPT_INTERVAL = 5 * 60 * 1000; // 5 minutes + + private static final int MSG_WRITE_STATE = 1; + private static final int MSG_CLEAR_STATE = 2; + private static final int MSG_PRELOAD_STATE = 3; private static CrashRecoveryHandler sInstance; private Controller mController; + private Context mContext; private Handler mForegroundHandler; private Handler mBackgroundHandler; + private boolean mIsPreloading = false; + private boolean mDidPreload = false; + private Bundle mRecoveryState = null; public static CrashRecoveryHandler initialize(Controller controller) { if (sInstance == null) { @@ -71,11 +76,45 @@ public class CrashRecoveryHandler { private CrashRecoveryHandler(Controller controller) { mController = controller; + mContext = mController.getActivity().getApplicationContext(); mForegroundHandler = new Handler(); - HandlerThread thread = new HandlerThread(LOGTAG, - Process.THREAD_PRIORITY_BACKGROUND); - thread.start(); - mBackgroundHandler = new Handler(thread.getLooper()); + mBackgroundHandler = new Handler(BackgroundHandler.getLooper()) { + + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MSG_WRITE_STATE: + Parcel p = Parcel.obtain(); + try { + Bundle state = (Bundle) msg.obj; + state.writeToParcel(p, 0); + File stateFile = new File(mContext.getCacheDir(), STATE_FILE); + FileOutputStream fout = new FileOutputStream(stateFile); + fout.write(p.marshall()); + fout.close(); + } catch (Throwable e) { + Log.i(LOGTAG, "Failed to save persistent state", e); + } finally { + p.recycle(); + } + break; + case MSG_CLEAR_STATE: + File state = new File(mContext.getCacheDir(), STATE_FILE); + if (state.exists()) { + state.delete(); + } + break; + case MSG_PRELOAD_STATE: + mRecoveryState = loadCrashState(); + synchronized (CrashRecoveryHandler.this) { + mIsPreloading = false; + mDidPreload = true; + CrashRecoveryHandler.this.notifyAll(); + } + break; + } + } + }; } public void backupState() { @@ -88,10 +127,9 @@ public class CrashRecoveryHandler { public void run() { try { final Bundle state = new Bundle(); - mController.onSaveInstanceState(state, false); - Context context = mController.getActivity() - .getApplicationContext(); - mBackgroundHandler.post(new WriteState(context, state)); + mController.onSaveInstanceState(state); + Message.obtain(mBackgroundHandler, MSG_WRITE_STATE, state) + .sendToTarget(); // Remove any queued up saves mForegroundHandler.removeCallbacks(mCreateState); } catch (Throwable t) { @@ -102,97 +140,40 @@ public class CrashRecoveryHandler { }; - static class WriteState implements Runnable { - private Context mContext; - private Bundle mState; - - WriteState(Context context, Bundle state) { - mContext = context; - mState = state; - } - - @Override - public void run() { - if (mState.isEmpty()) { - clearState(mContext); - return; - } - Parcel p = Parcel.obtain(); - try { - mState.writeToParcel(p, 0); - FileOutputStream fout = mContext.openFileOutput(STATE_FILE, - Context.MODE_PRIVATE); - fout.write(p.marshall()); - fout.close(); - } catch (Throwable e) { - Log.i(LOGTAG, "Failed to save persistent state", e); - } finally { - p.recycle(); - } - } - + public void clearState() { + mBackgroundHandler.sendEmptyMessage(MSG_CLEAR_STATE); + updateLastRecovered(0); } - private static void clearState(Context context) { - context.deleteFile(STATE_FILE); - } - - public void promptToRecover(final Bundle state, final Intent intent) { - new AlertDialog.Builder(mController.getActivity()) - .setTitle(R.string.recover_title) - .setMessage(R.string.recover_prompt) - .setIcon(R.mipmap.ic_launcher_browser) - .setPositiveButton(R.string.recover_yes, new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - updateLastRecovered(); - mController.doStart(state, intent); - } - }) - .setNegativeButton(R.string.recover_no, new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.cancel(); - } - }) - .setOnCancelListener(new OnCancelListener() { - @Override - public void onCancel(DialogInterface dialog) { - clearState(mController.getActivity()); - mController.doStart(null, intent); - } - }) - .show(); - } - - private boolean shouldPrompt() { - Context context = mController.getActivity(); - SharedPreferences prefs = context.getSharedPreferences( + private boolean shouldRestore() { + SharedPreferences prefs = mContext.getSharedPreferences( RECOVERY_PREFERENCES, Context.MODE_PRIVATE); - long lastRecovered = prefs.getLong(KEY_LAST_RECOVERED, - System.currentTimeMillis()); + long lastRecovered = prefs.getLong(KEY_LAST_RECOVERED, 0); long timeSinceLastRecover = System.currentTimeMillis() - lastRecovered; if (timeSinceLastRecover > PROMPT_INTERVAL) { - return false; + return true; } - return true; + return false; } - private void updateLastRecovered() { - Context context = mController.getActivity(); - SharedPreferences prefs = context.getSharedPreferences( + private void updateLastRecovered(long time) { + SharedPreferences prefs = mContext.getSharedPreferences( RECOVERY_PREFERENCES, Context.MODE_PRIVATE); prefs.edit() - .putLong(KEY_LAST_RECOVERED, System.currentTimeMillis()) - .commit(); + .putLong(KEY_LAST_RECOVERED, time) + .apply(); } - public void startRecovery(Intent intent) { + private Bundle loadCrashState() { + if (!shouldRestore()) { + return null; + } Bundle state = null; Parcel parcel = Parcel.obtain(); + FileInputStream fin = null; try { - Context context = mController.getActivity(); - FileInputStream fin = context.openFileInput(STATE_FILE); + File stateFile = new File(mContext.getCacheDir(), STATE_FILE); + fin = new FileInputStream(stateFile); ByteArrayOutputStream dataStream = new ByteArrayOutputStream(); byte[] buffer = new byte[BUFFER_SIZE]; int read; @@ -203,21 +184,51 @@ public class CrashRecoveryHandler { parcel.unmarshall(data, 0, data.length); parcel.setDataPosition(0); state = parcel.readBundle(); - if (shouldPrompt()) { - promptToRecover(state, intent); - return; - } else { - updateLastRecovered(); - } } catch (FileNotFoundException e) { // No state to recover state = null; - } catch (Exception e) { + } catch (Throwable e) { Log.w(LOGTAG, "Failed to recover state!", e); state = null; } finally { parcel.recycle(); + if (fin != null) { + try { + fin.close(); + } catch (IOException e) { } + } + } + if (state != null && !state.isEmpty()) { + return state; + } + return null; + } + + public void startRecovery(Intent intent) { + synchronized (CrashRecoveryHandler.this) { + while (mIsPreloading) { + try { + CrashRecoveryHandler.this.wait(); + } catch (InterruptedException e) {} + } + } + if (!mDidPreload) { + mRecoveryState = loadCrashState(); + } + updateLastRecovered(mRecoveryState != null + ? System.currentTimeMillis() : 0); + mController.doStart(mRecoveryState, intent); + mRecoveryState = null; + } + + public void preloadCrashState() { + synchronized (CrashRecoveryHandler.this) { + if (mIsPreloading) { + return; + } + mIsPreloading = true; } - mController.doStart(state, intent); + mBackgroundHandler.sendEmptyMessage(MSG_PRELOAD_STATE); } + } diff --git a/src/com/android/browser/DownloadTouchIcon.java b/src/com/android/browser/DownloadTouchIcon.java index 64a7316..ba299b6 100644 --- a/src/com/android/browser/DownloadTouchIcon.java +++ b/src/com/android/browser/DownloadTouchIcon.java @@ -60,7 +60,7 @@ class DownloadTouchIcon extends AsyncTask<String, Void, Void> { */ public DownloadTouchIcon(Tab tab, Context ctx, ContentResolver cr, WebView view) { mTab = tab; - mContext = ctx; + mContext = ctx.getApplicationContext(); mContentResolver = cr; // Store these in case they change. mOriginalUrl = view.getOriginalUrl(); @@ -77,7 +77,7 @@ class DownloadTouchIcon extends AsyncTask<String, Void, Void> { */ public DownloadTouchIcon(Context ctx, ContentResolver cr, String url) { mTab = null; - mContext = ctx; + mContext = ctx.getApplicationContext(); mContentResolver = cr; mOriginalUrl = null; mUrl = url; @@ -91,7 +91,7 @@ class DownloadTouchIcon extends AsyncTask<String, Void, Void> { */ public DownloadTouchIcon(Context context, Message msg, String userAgent) { mMessage = msg; - mContext = context; + mContext = context.getApplicationContext(); mContentResolver = null; mOriginalUrl = null; mUrl = null; diff --git a/src/com/android/browser/FetchUrlMimeType.java b/src/com/android/browser/FetchUrlMimeType.java index 85c588e..845bcc7 100644 --- a/src/com/android/browser/FetchUrlMimeType.java +++ b/src/com/android/browser/FetchUrlMimeType.java @@ -22,7 +22,6 @@ import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpHead; import org.apache.http.conn.params.ConnRouteParams; -import android.app.Activity; import android.app.DownloadManager; import android.content.Context; import android.net.Proxy; @@ -45,15 +44,15 @@ import java.io.IOException; */ class FetchUrlMimeType extends Thread { - private Activity mActivity; + private Context mContext; private DownloadManager.Request mRequest; private String mUri; private String mCookies; private String mUserAgent; - public FetchUrlMimeType(Activity activity, DownloadManager.Request request, + public FetchUrlMimeType(Context context, DownloadManager.Request request, String uri, String cookies, String userAgent) { - mActivity = activity; + mContext = context.getApplicationContext(); mRequest = request; mUri = uri; mCookies = cookies; @@ -65,7 +64,7 @@ class FetchUrlMimeType extends Thread { // User agent is likely to be null, though the AndroidHttpClient // seems ok with that. AndroidHttpClient client = AndroidHttpClient.newInstance(mUserAgent); - HttpHost httpHost = Proxy.getPreferredHttpHost(mActivity, mUri); + HttpHost httpHost = Proxy.getPreferredHttpHost(mContext, mUri); if (httpHost != null) { ConnRouteParams.setDefaultProxy(client.getParams(), httpHost); } @@ -121,7 +120,7 @@ class FetchUrlMimeType extends Thread { } // Start the download - DownloadManager manager = (DownloadManager) mActivity.getSystemService( + DownloadManager manager = (DownloadManager) mContext.getSystemService( Context.DOWNLOAD_SERVICE); manager.enqueue(mRequest); } diff --git a/src/com/android/browser/GeolocationPermissionsPrompt.java b/src/com/android/browser/GeolocationPermissionsPrompt.java index 95c5415..afbf39f 100755 --- a/src/com/android/browser/GeolocationPermissionsPrompt.java +++ b/src/com/android/browser/GeolocationPermissionsPrompt.java @@ -17,22 +17,18 @@ package com.android.browser; import android.content.Context; -import android.graphics.drawable.Drawable; import android.net.Uri; import android.util.AttributeSet; import android.view.Gravity; -import android.view.LayoutInflater; import android.view.View; -import android.webkit.WebView; import android.webkit.GeolocationPermissions; import android.widget.Button; import android.widget.CheckBox; -import android.widget.LinearLayout; +import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; -public class GeolocationPermissionsPrompt extends LinearLayout { - private LinearLayout mInner; +public class GeolocationPermissionsPrompt extends RelativeLayout { private TextView mMessage; private Button mShareButton; private Button mDontShareButton; @@ -48,22 +44,26 @@ public class GeolocationPermissionsPrompt extends LinearLayout { super(context, attrs); } - void init() { - mInner = (LinearLayout) findViewById(R.id.inner); + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + init(); + } + + private void init() { mMessage = (TextView) findViewById(R.id.message); mShareButton = (Button) findViewById(R.id.share_button); mDontShareButton = (Button) findViewById(R.id.dont_share_button); mRemember = (CheckBox) findViewById(R.id.remember); - final GeolocationPermissionsPrompt me = this; mShareButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { - me.handleButtonClick(true); + handleButtonClick(true); } }); mDontShareButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { - me.handleButtonClick(false); + handleButtonClick(false); } }); } @@ -79,21 +79,21 @@ public class GeolocationPermissionsPrompt extends LinearLayout { setMessage("http".equals(uri.getScheme()) ? mOrigin.substring(7) : mOrigin); // The checkbox should always be intially checked. mRemember.setChecked(true); - showDialog(true); + setVisibility(View.VISIBLE); } /** * Hides the prompt. */ public void hide() { - showDialog(false); + setVisibility(View.GONE); } /** * Handles a click on one the buttons by invoking the callback. */ private void handleButtonClick(boolean allow) { - showDialog(false); + hide(); boolean remember = mRemember.isChecked(); if (remember) { @@ -117,11 +117,4 @@ public class GeolocationPermissionsPrompt extends LinearLayout { getResources().getString(R.string.geolocation_permissions_prompt_message), origin)); } - - /** - * Shows or hides the prompt. - */ - private void showDialog(boolean shown) { - mInner.setVisibility(shown ? View.VISIBLE : View.GONE); - } } diff --git a/src/com/android/browser/GoogleAccountLogin.java b/src/com/android/browser/GoogleAccountLogin.java index 37654dc..2bd3c8c 100644 --- a/src/com/android/browser/GoogleAccountLogin.java +++ b/src/com/android/browser/GoogleAccountLogin.java @@ -16,12 +16,6 @@ package com.android.browser; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.HttpStatus; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.util.EntityUtils; - import android.accounts.Account; import android.accounts.AccountManager; import android.accounts.AccountManagerCallback; @@ -35,13 +29,17 @@ import android.content.SharedPreferences.Editor; import android.net.Uri; import android.net.http.AndroidHttpClient; import android.os.Bundle; -import android.os.Handler; -import android.preference.PreferenceManager; import android.util.Log; import android.webkit.CookieSyncManager; import android.webkit.WebView; import android.webkit.WebViewClient; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.HttpStatus; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.util.EntityUtils; + public class GoogleAccountLogin implements Runnable, AccountManagerCallback<Bundle>, OnCancelListener { @@ -56,16 +54,11 @@ public class GoogleAccountLogin implements Runnable, // Google account type private static final String GOOGLE = "com.google"; // Last auto login time - private static final String PREF_AUTOLOGIN_TIME = "last_autologin_time"; - // A week in milliseconds (7*24*60*60*1000) - private static final long WEEK_IN_MILLIS = 604800000L; + public static final String PREF_AUTOLOGIN_TIME = "last_autologin_time"; private final Activity mActivity; private final Account mAccount; private final WebView mWebView; - // Does not matter if this is initialized in a non-ui thread. - // Dialog.dismiss() will post to the right handler. - private final Handler mHandler = new Handler(); private Runnable mRunnable; private ProgressDialog mProgressDialog; @@ -74,6 +67,7 @@ public class GoogleAccountLogin implements Runnable, private String mLsid; private int mState; // {NONE(0), SID(1), LSID(2)} private boolean mTokensInvalidated; + private String mUserAgent; private GoogleAccountLogin(Activity activity, Account account, Runnable runnable) { @@ -81,12 +75,13 @@ public class GoogleAccountLogin implements Runnable, mAccount = account; mWebView = new WebView(mActivity); mRunnable = runnable; + mUserAgent = mWebView.getSettings().getUserAgentString(); // XXX: Doing pre-login causes onResume to skip calling // resumeWebViewTimers. So to avoid problems with timers not running, we // duplicate the work here using the off-screen WebView. CookieSyncManager.getInstance().startSync(); - mWebView.resumeTimers(); + WebViewTimersControl.getInstance().onBrowserActivityResume(mWebView); mWebView.setWebViewClient(new WebViewClient() { @Override @@ -95,15 +90,13 @@ public class GoogleAccountLogin implements Runnable, } @Override public void onPageFinished(WebView view, String url) { - saveLoginTime(); done(); } }); } private void saveLoginTime() { - Editor ed = PreferenceManager. - getDefaultSharedPreferences(mActivity).edit(); + Editor ed = BrowserSettings.getInstance().getPreferences().edit(); ed.putLong(PREF_AUTOLOGIN_TIME, System.currentTimeMillis()); ed.apply(); } @@ -115,17 +108,8 @@ public class GoogleAccountLogin implements Runnable, .appendQueryParameter("SID", mSid) .appendQueryParameter("LSID", mLsid) .build().toString(); - // Check mRunnable to see if the request has been canceled. Otherwise - // we might access a destroyed WebView. - String ua = null; - synchronized (this) { - if (mRunnable == null) { - return; - } - ua = mWebView.getSettings().getUserAgentString(); - } // Intentionally not using Proxy. - AndroidHttpClient client = AndroidHttpClient.newInstance(ua); + AndroidHttpClient client = AndroidHttpClient.newInstance(mUserAgent); HttpPost request = new HttpPost(url); String result = null; @@ -230,7 +214,7 @@ public class GoogleAccountLogin implements Runnable, public static void startLoginIfNeeded(Activity activity, Runnable runnable) { // Already logged in? - if (isLoggedIn(activity)) { + if (isLoggedIn()) { runnable.run(); return; } @@ -248,6 +232,7 @@ public class GoogleAccountLogin implements Runnable, } private void startLogin() { + saveLoginTime(); mProgressDialog = ProgressDialog.show(mActivity, mActivity.getString(R.string.pref_autologin_title), mActivity.getString(R.string.pref_autologin_progress, @@ -265,11 +250,10 @@ public class GoogleAccountLogin implements Runnable, } // Checks if we already did pre-login. - private static boolean isLoggedIn(Context ctx) { + private static boolean isLoggedIn() { // See if we last logged in less than a week ago. - long lastLogin = PreferenceManager. - getDefaultSharedPreferences(ctx). - getLong(PREF_AUTOLOGIN_TIME, -1); + long lastLogin = BrowserSettings.getInstance().getPreferences() + .getLong(PREF_AUTOLOGIN_TIME, -1); if (lastLogin == -1) { return false; } @@ -283,18 +267,22 @@ public class GoogleAccountLogin implements Runnable, Log.d(LOGTAG, "Finished login attempt for " + mAccount.name); mActivity.runOnUiThread(mRunnable); - // Post a delayed message to dismiss the dialog in order to avoid a - // flash of the progress dialog. - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - if (mProgressDialog.isShowing()) { - mProgressDialog.dismiss(); - } - } - }, 2000); + try { + mProgressDialog.dismiss(); + } catch (Exception e) { + // TODO: Switch to a managed dialog solution (DialogFragment?) + // Also refactor this class, it doesn't + // play nice with the activity lifecycle, leading to issues + // with the dialog it manages + Log.w(LOGTAG, "Failed to dismiss mProgressDialog: " + e.getMessage()); + } mRunnable = null; - mWebView.destroy(); + mActivity.runOnUiThread(new Runnable() { + @Override + public void run() { + mWebView.destroy(); + } + }); } } diff --git a/src/com/android/browser/InstantSearchEngine.java b/src/com/android/browser/InstantSearchEngine.java index e2e9c8a..7176c0a 100644 --- a/src/com/android/browser/InstantSearchEngine.java +++ b/src/com/android/browser/InstantSearchEngine.java @@ -52,7 +52,7 @@ public class InstantSearchEngine implements SearchEngine, DropdownChangeListener private final SearchEngine mWrapped; public InstantSearchEngine(Context context, SearchEngine wrapped) { - mContext = context; + mContext = context.getApplicationContext(); mWrapped = wrapped; } @@ -85,10 +85,10 @@ public class InstantSearchEngine implements SearchEngine, DropdownChangeListener mSearchBox.setQuery(query); mSearchBox.setVerbatim(true); - mSearchBox.onsubmit(); + mSearchBox.onsubmit(null); } - private final class BrowserSearchboxListener implements SearchBox.SearchBoxListener { + private final class BrowserSearchboxListener extends SearchBox.SearchBoxListener { /* * The maximum number of out of order suggestions we accept * before giving up the wait. @@ -199,7 +199,7 @@ public class InstantSearchEngine implements SearchEngine, DropdownChangeListener return false; } - final String currentUrl = current.getUrl(); + final String currentUrl = mController.getCurrentTab().getUrl(); if (currentUrl != null) { Uri uri = Uri.parse(currentUrl); @@ -253,7 +253,7 @@ public class InstantSearchEngine implements SearchEngine, DropdownChangeListener } mSearchBox.setDimensions(0, 0, 0, mHeight); - mSearchBox.onresize(); + mSearchBox.onresize(null); if (TextUtils.isEmpty(query)) { // To force the SRP to render an empty (no results) page. @@ -262,7 +262,7 @@ public class InstantSearchEngine implements SearchEngine, DropdownChangeListener mSearchBox.setVerbatim(false); } mSearchBox.setQuery(query); - mSearchBox.onchange(); + mSearchBox.onchange(null); // Don't bother waiting for suggestions for an empty query. We still // set the query so that the SRP clears itself. @@ -327,7 +327,7 @@ public class InstantSearchEngine implements SearchEngine, DropdownChangeListener mHeight = rescaledHeight; if (mSearchBox != null) { mSearchBox.setDimensions(0, 0, 0, rescaledHeight); - mSearchBox.onresize(); + mSearchBox.onresize(null); } } } diff --git a/src/com/android/browser/IntentHandler.java b/src/com/android/browser/IntentHandler.java index 54711d9..c76197d 100644 --- a/src/com/android/browser/IntentHandler.java +++ b/src/com/android/browser/IntentHandler.java @@ -17,10 +17,6 @@ package com.android.browser; -import com.android.browser.search.SearchEngine; -import com.android.common.Search; -import com.android.common.speech.LoggingEvents; - import android.app.Activity; import android.app.SearchManager; import android.content.ContentResolver; @@ -36,6 +32,10 @@ import android.speech.RecognizerResultsIntent; import android.text.TextUtils; import android.util.Patterns; +import com.android.browser.search.SearchEngine; +import com.android.common.Search; +import com.android.common.speech.LoggingEvents; + import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -88,7 +88,6 @@ public class IntentHandler { mController.bookmarksOrHistoryPicker(false); return; } - mController.removeComboView(); // In case the SearchDialog is open. ((SearchManager) mActivity.getSystemService(Context.SEARCH_SERVICE)) @@ -135,10 +134,20 @@ public class IntentHandler { urlData = new UrlData(mSettings.getHomePage()); } - if (intent.getBooleanExtra(Browser.EXTRA_CREATE_NEW_TAB, false)) { - mController.openTab(urlData); + if (intent.getBooleanExtra(Browser.EXTRA_CREATE_NEW_TAB, false) + || urlData.isPreloaded()) { + Tab t = mController.openTab(urlData); return; } + /* + * TODO: Don't allow javascript URIs + * 0) If this is a javascript: URI, *always* open a new tab + * 1) If this is a voice search, re-use tab for appId + * If there is no appId, use current tab + * 2) If the URL is already opened, switch to that tab + * 3-phone) Reuse tab with same appId + * 3-tablet) Open new tab + */ final String appId = intent .getStringExtra(Browser.EXTRA_APPLICATION_ID); if (!TextUtils.isEmpty(urlData.mUrl) && @@ -151,37 +160,35 @@ public class IntentHandler { // If a voice search has no appId, it means that it came // from the browser. In that case, reuse the current tab. || (activateVoiceSearch && appId != null)) - && !mActivity.getPackageName().equals(appId) - && (flags & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) { - if (activateVoiceSearch) { + && !mActivity.getPackageName().equals(appId)) { + if (activateVoiceSearch || !BrowserActivity.isTablet(mActivity)) { Tab appTab = mTabControl.getTabFromAppId(appId); if (appTab != null) { mController.reuseTab(appTab, urlData); return; - } else { - Tab tab = mController.openTab(urlData); - if (tab != null) { - tab.setAppId(appId); - } } + } + // No matching application tab, try to find a regular tab + // with a matching url. + Tab appTab = mTabControl.findTabWithUrl(urlData.mUrl); + if (appTab != null) { + // Transfer ownership + appTab.setAppId(appId); + if (current != appTab) { + mController.switchToTab(appTab); + } + // Otherwise, we are already viewing the correct tab. } else { - // No matching application tab, try to find a regular tab - // with a matching url. - Tab appTab = mTabControl.findUnusedTabWithUrl(urlData.mUrl); - if (appTab != null) { - if (current != appTab) { - mController.switchToTab(appTab); - } - // Otherwise, we are already viewing the correct tab. - } else { - // if FLAG_ACTIVITY_BROUGHT_TO_FRONT flag is on, the url - // will be opened in a new tab unless we have reached - // MAX_TABS. Then the url will be opened in the current - // tab. If a new tab is created, it will have "true" for - // exit on close. - Tab tab = mController.openTab(urlData); - if (tab != null) { - tab.setAppId(appId); + // if FLAG_ACTIVITY_BROUGHT_TO_FRONT flag is on, the url + // will be opened in a new tab unless we have reached + // MAX_TABS. Then the url will be opened in the current + // tab. If a new tab is created, it will have "true" for + // exit on close. + Tab tab = mController.openTab(urlData); + if (tab != null) { + tab.setAppId(appId); + if ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) { + tab.setCloseOnBack(true); } } } @@ -216,9 +223,11 @@ public class IntentHandler { } } - protected UrlData getUrlDataFromIntent(Intent intent) { + protected static UrlData getUrlDataFromIntent(Intent intent) { String url = ""; Map<String, String> headers = null; + PreloadedTabControl preloaded = null; + String preloadedSearchBoxQuery = null; if (intent != null && (intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) { final String action = intent.getAction(); @@ -237,6 +246,12 @@ public class IntentHandler { } } } + if (intent.hasExtra(PreloadRequestReceiver.EXTRA_PRELOAD_ID)) { + String id = intent.getStringExtra(PreloadRequestReceiver.EXTRA_PRELOAD_ID); + preloadedSearchBoxQuery = intent.getStringExtra( + PreloadRequestReceiver.EXTRA_SEARCHBOX_SETQUERY); + preloaded = Preloader.getInstance().getPreloadedTab(id); + } } else if (Intent.ACTION_SEARCH.equals(action) || MediaStore.INTENT_ACTION_MEDIA_SEARCH.equals(action) || Intent.ACTION_WEB_SEARCH.equals(action)) { @@ -261,7 +276,7 @@ public class IntentHandler { } } } - return new UrlData(url, headers, intent); + return new UrlData(url, headers, intent, preloaded, preloadedSearchBoxQuery); } /** @@ -344,14 +359,23 @@ public class IntentHandler { final String mUrl; final Map<String, String> mHeaders; final Intent mVoiceIntent; + final PreloadedTabControl mPreloadedTab; + final String mSearchBoxQueryToSubmit; UrlData(String url) { this.mUrl = url; this.mHeaders = null; this.mVoiceIntent = null; + this.mPreloadedTab = null; + this.mSearchBoxQueryToSubmit = null; } UrlData(String url, Map<String, String> headers, Intent intent) { + this(url, headers, intent, null, null); + } + + UrlData(String url, Map<String, String> headers, Intent intent, + PreloadedTabControl preloaded, String searchBoxQueryToSubmit) { this.mUrl = url; this.mHeaders = headers; if (RecognizerResultsIntent.ACTION_VOICE_SEARCH_RESULTS @@ -360,11 +384,25 @@ public class IntentHandler { } else { this.mVoiceIntent = null; } + this.mPreloadedTab = preloaded; + this.mSearchBoxQueryToSubmit = searchBoxQueryToSubmit; } boolean isEmpty() { return mVoiceIntent == null && (mUrl == null || mUrl.length() == 0); } + + boolean isPreloaded() { + return mPreloadedTab != null; + } + + PreloadedTabControl getPreloadedTab() { + return mPreloadedTab; + } + + String getSearchBoxQueryToSubmit() { + return mSearchBoxQueryToSubmit; + } } } diff --git a/src/com/android/browser/KeyChainLookup.java b/src/com/android/browser/KeyChainLookup.java index 52be25a..4d5f694 100644 --- a/src/com/android/browser/KeyChainLookup.java +++ b/src/com/android/browser/KeyChainLookup.java @@ -29,7 +29,7 @@ final class KeyChainLookup extends AsyncTask<Void, Void, Void> { private final ClientCertRequestHandler mHandler; private final String mAlias; KeyChainLookup(Context context, ClientCertRequestHandler handler, String alias) { - mContext = context; + mContext = context.getApplicationContext(); mHandler = handler; mAlias = alias; } diff --git a/src/com/android/browser/NavScreen.java b/src/com/android/browser/NavScreen.java index a841989..face39e 100644 --- a/src/com/android/browser/NavScreen.java +++ b/src/com/android/browser/NavScreen.java @@ -24,24 +24,23 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; +import android.view.ViewConfiguration; import android.view.ViewGroup; import android.webkit.WebView; import android.widget.BaseAdapter; import android.widget.FrameLayout; -import android.widget.Gallery; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; -import android.widget.ListPopupWindow; +import android.widget.PopupMenu; +import android.widget.PopupMenu.OnMenuItemClickListener; import android.widget.RelativeLayout; import android.widget.TextView; -import com.android.browser.view.Gallery.OnItemSelectedListener; +import com.android.browser.NavTabGallery.OnRemoveListener; -import java.util.ArrayList; -import java.util.List; - -public class NavScreen extends RelativeLayout implements OnClickListener { +public class NavScreen extends RelativeLayout + implements OnClickListener, OnMenuItemClickListener { UiController mUiController; PhoneUi mUi; @@ -53,7 +52,6 @@ public class NavScreen extends RelativeLayout implements OnClickListener { ImageButton mBookmarks; ImageButton mMore; ImageButton mNewTab; - ImageButton mNewIncognito; FrameLayout mHolder; TextView mTitle; @@ -61,12 +59,9 @@ public class NavScreen extends RelativeLayout implements OnClickListener { ImageButton mCloseTab; NavTabGallery mScroller; - float mTabAspect = 0.66f; - int mTabWidth; - int mTabHeight; TabAdapter mAdapter; - ListPopupWindow mPopup; int mOrientation; + boolean mNeedsMenu; public NavScreen(Activity activity, UiController ctl, PhoneUi ui) { super(activity); @@ -82,30 +77,22 @@ public class NavScreen extends RelativeLayout implements OnClickListener { } protected void showMenu() { - Menu menu = mUi.getMenu(); - menu.setGroupVisible(R.id.NAV_MENU, false); - - MenuAdapter menuAdapter = new MenuAdapter(mContext); - menuAdapter.setMenu(menu); - ListPopupWindow popup = new ListPopupWindow(mContext); - popup.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NOT_NEEDED); - popup.setAdapter(menuAdapter); - popup.setModal(true); - popup.setAnchorView(mMore); - popup.setWidth((int) mContext.getResources().getDimension( - R.dimen.menu_width)); + PopupMenu popup = new PopupMenu(mContext, mMore); + Menu menu = popup.getMenu(); + popup.getMenuInflater().inflate(R.menu.browser, menu); + mUiController.updateMenuState(mScroller.getSelectedItem(), menu); + popup.setOnMenuItemClickListener(this); popup.show(); - mPopup = popup; } - protected float getToolbarHeight() { - return mActivity.getResources().getDimension(R.dimen.toolbar_height); + @Override + public boolean onMenuItemClick(MenuItem item) { + mUi.hideNavScreen(false); + return mUiController.onOptionsItemSelected(item); } - protected void dismissMenu() { - if (mPopup != null) { - mPopup.dismiss(); - } + protected float getToolbarHeight() { + return mActivity.getResources().getDimension(R.dimen.toolbar_height); } // for configuration changes @@ -123,13 +110,13 @@ public class NavScreen extends RelativeLayout implements OnClickListener { private void init() { LayoutInflater.from(mContext).inflate(R.layout.nav_screen, this); + setContentDescription(mContext.getResources().getString( + R.string.accessibility_transition_navscreen)); mBookmarks = (ImageButton) findViewById(R.id.bookmarks); mNewTab = (ImageButton) findViewById(R.id.newtab); - mNewIncognito = (ImageButton) findViewById(R.id.newincognito); mMore = (ImageButton) findViewById(R.id.more); mBookmarks.setOnClickListener(this); mNewTab.setOnClickListener(this); - mNewIncognito.setOnClickListener(this); mMore.setOnClickListener(this); mScroller = (NavTabGallery) findViewById(R.id.scroller); mAdapter = new TabAdapter(mContext, mUiController.getTabControl()); @@ -138,6 +125,16 @@ public class NavScreen extends RelativeLayout implements OnClickListener { ? LinearLayout.HORIZONTAL : LinearLayout.VERTICAL); // update state for active tab mScroller.setSelection(mUiController.getTabControl().getTabPosition(mUi.getActiveTab())); + mScroller.setOnRemoveListener(new OnRemoveListener() { + public void onRemovePosition(int pos) { + Tab tab = mAdapter.getItem(pos); + onCloseTab(tab); + } + }); + mNeedsMenu = !ViewConfiguration.get(getContext()).hasPermanentMenuKey(); + if (!mNeedsMenu) { + mMore.setVisibility(View.GONE); + } } @Override @@ -146,7 +143,7 @@ public class NavScreen extends RelativeLayout implements OnClickListener { if (web != null) { if (mForward == v) { mUi.hideNavScreen(true); - web.goForward(); + mTab.goForward(); } else if (mRefresh == v) { mUi.hideNavScreen(true); web.reload(); @@ -160,9 +157,6 @@ public class NavScreen extends RelativeLayout implements OnClickListener { openNewTab(); } else if (mMore == v) { showMenu(); - } else if (mNewIncognito == v) { - mUi.hideNavScreen(true); - mUiController.openIncognitoTab(); } else if (mTitle == v) { mUi.getTitleBar().setSkipTitleBarAnimations(true); close(false); @@ -173,8 +167,11 @@ public class NavScreen extends RelativeLayout implements OnClickListener { private void onCloseTab(Tab tab) { if (tab != null) { - switchToSelected(); - mUiController.closeCurrentTab(); + if (tab == mUiController.getCurrentTab()) { + mUiController.closeCurrentTab(); + } else { + mUiController.closeTab(tab); + } mAdapter.notifyDataSetChanged(); } } @@ -213,25 +210,6 @@ public class NavScreen extends RelativeLayout implements OnClickListener { mUi.hideNavScreen(animate); } - class TabGallery extends Gallery { - - public TabGallery(Context ctx) { - super(ctx); - setUnselectedAlpha(0.3f); - } - - @Override - protected ViewGroup.LayoutParams generateDefaultLayoutParams() { - return new Gallery.LayoutParams(mTabWidth, mTabHeight); - } - - @Override - protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) { - return generateDefaultLayoutParams(); - } - - } - class TabAdapter extends BaseAdapter { Context context; @@ -260,14 +238,15 @@ public class NavScreen extends RelativeLayout implements OnClickListener { public View getView(final int position, View convertView, ViewGroup parent) { final NavTabView tabview = new NavTabView(mActivity); final Tab tab = getItem(position); - final BrowserWebView web = (BrowserWebView) tab.getWebView(); tabview.setWebView(mUi, tab); tabview.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (tabview.isClose(v)) { - onCloseTab((Tab) (mScroller.getSelectedItem())); + mScroller.animateOut(tabview); } else if (tabview.isTitle(v)) { + mScroller.setSelection(position); + switchToSelected(); mUi.getTitleBar().setSkipTitleBarAnimations(true); close(false); mUi.editUrl(false); @@ -275,7 +254,6 @@ public class NavScreen extends RelativeLayout implements OnClickListener { } else if (tabview.isWebView(v)) { mScroller.setSelection(position); close(); - } } }); @@ -284,64 +262,4 @@ public class NavScreen extends RelativeLayout implements OnClickListener { } - private class MenuAdapter extends BaseAdapter implements OnClickListener { - - List<MenuItem> mItems; - LayoutInflater mInflater; - - public MenuAdapter(Context ctx) { - mInflater = LayoutInflater.from(ctx); - mItems = new ArrayList<MenuItem>(); - } - - public void setMenu(Menu menu) { - mItems.clear(); - for (int i = 0; i < menu.size(); i++) { - MenuItem item = menu.getItem(i); - if (item.isEnabled() && item.isVisible()) { - mItems.add(item); - } - } - notifyDataSetChanged(); - } - - @Override - public int getCount() { - return mItems.size(); - } - - @Override - public MenuItem getItem(int position) { - return mItems.get(position); - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public void onClick(View v) { - if (v.getTag() != null) { - dismissMenu(); - mActivity.closeOptionsMenu(); - mUi.hideNavScreen(false); - mUiController.onOptionsItemSelected((MenuItem) v.getTag()); - } - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - final MenuItem item = mItems.get(position); - View view = mInflater.inflate(R.layout.qc_menu_item, null); - TextView label = (TextView) view.findViewById(R.id.title); - label.setText(item.getTitle()); - label.setTag(item); - label.setOnClickListener(this); - return label; - } - - } - - } diff --git a/src/com/android/browser/NavTabGallery.java b/src/com/android/browser/NavTabGallery.java index 3014eaf..af02e8d 100644 --- a/src/com/android/browser/NavTabGallery.java +++ b/src/com/android/browser/NavTabGallery.java @@ -16,8 +16,12 @@ package com.android.browser; +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ObjectAnimator; import android.content.Context; import android.util.AttributeSet; +import android.view.MotionEvent; import android.view.View; import com.android.browser.view.Gallery; @@ -27,6 +31,17 @@ import com.android.browser.view.Gallery; */ public class NavTabGallery extends Gallery { + interface OnRemoveListener { + public void onRemovePosition(int position); + } + + // after drag animation velocity in pixels/sec + private static final float MIN_VELOCITY = 1500; + + private OnRemoveListener mRemoveListener; + private boolean mBlockUpCallback; + private Animator mAnimator; + public NavTabGallery(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @@ -39,6 +54,10 @@ public class NavTabGallery extends Gallery { super(context); } + public void setOnRemoveListener(OnRemoveListener l) { + mRemoveListener = l; + } + protected void setSelection(int ix) { super.setSelectedPositionInt(ix); } @@ -55,4 +74,91 @@ public class NavTabGallery extends Gallery { return getSelectedView(); } + @Override + protected void onOrthoDrag(View v, MotionEvent down, MotionEvent move, + float distance) { + if (mAnimator == null) { + offsetView(v, - distance); + } + } + + @Override + protected void onOrthoFling(View v, MotionEvent down, MotionEvent move, + float velocity) { + if ((mAnimator == null) && (Math.abs(velocity) > MIN_VELOCITY)) { + mBlockUpCallback = true; + animateOut(v, velocity); + } + } + + @Override + protected void onUp(View downView) { + if (mAnimator != null) return; + if (mBlockUpCallback) { + mBlockUpCallback = false; + return; + } + if (mIsOrthoDragged && downView != null) { + // offset + int diff = calculateTop(downView, false) - (mHorizontal ? downView.getTop() + : downView.getLeft()); + if (Math.abs(diff) > (mHorizontal ? downView.getHeight() : downView.getWidth()) / 2) { + // remove it + animateOut(downView, - Math.signum(diff) * MIN_VELOCITY); + } else { + // snap back + offsetView(downView, diff); + } + } else { + super.onUp(downView); + } + } + + private void offsetView(View v, float distance) { + if (mHorizontal) { + v.offsetTopAndBottom((int) distance); + } else { + v.offsetLeftAndRight((int) distance); + } + } + + protected void animateOut(View v) { + animateOut(v, -MIN_VELOCITY); + } + + private void animateOut(final View v, float velocity) { + if ((v == null) || (mAnimator != null)) return; + final int position = mFirstPosition + indexOfChild(v); + int target = 0; + if (velocity < 0) { + target = mHorizontal ? -v.getHeight() : - v.getWidth(); + } else { + target = mHorizontal ? getHeight() : getWidth(); + } + int distance = target - (mHorizontal ? v.getTop() : v.getLeft()); + long duration = (long) (Math.abs(distance) * 1000 / Math.abs(velocity)); + if (mHorizontal) { + mAnimator = ObjectAnimator.ofFloat(v, TRANSLATION_Y, 0, target); + } else { + mAnimator = ObjectAnimator.ofFloat(v, TRANSLATION_X, 0, target); + } + mAnimator.setDuration(duration); + mAnimator.addListener(new AnimatorListenerAdapter() { + public void onAnimationEnd(Animator a) { + if (mRemoveListener != null) { + boolean needsGap = position < (mAdapter.getCount() - 1); + if (needsGap) { + setGapPosition(position, mHorizontal ? v.getWidth() : v.getHeight()); + } + mRemoveListener.onRemovePosition(position); + if (!needsGap && (position > 0) && (mAdapter.getCount() > 0)) { + scrollToChild(position - 1); + } + mAnimator = null; + } + } + }); + mAnimator.start(); + } + } diff --git a/src/com/android/browser/NavTabView.java b/src/com/android/browser/NavTabView.java index 7b547b8..23ad2f1 100644 --- a/src/com/android/browser/NavTabView.java +++ b/src/com/android/browser/NavTabView.java @@ -17,16 +17,10 @@ package com.android.browser; import android.content.Context; -import android.content.res.Resources; -import android.graphics.Canvas; -import android.graphics.drawable.Drawable; +import android.graphics.Bitmap; import android.util.AttributeSet; -import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; -import android.view.ViewGroup; -import android.widget.FrameLayout; -import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -34,12 +28,10 @@ import android.widget.TextView; public class NavTabView extends LinearLayout { private Tab mTab; - private BrowserWebView mWebView; - private WebProxyView mProxy; private ImageView mClose; - private FrameLayout mContainer; private TextView mTitle; private View mTitleBar; + private ImageView mImage; private OnClickListener mClickListener; private boolean mHighlighted; @@ -60,10 +52,10 @@ public class NavTabView extends LinearLayout { private void init() { LayoutInflater.from(mContext).inflate(R.layout.nav_tab_view, this); - mContainer = (FrameLayout) findViewById(R.id.tab_view); mClose = (ImageView) findViewById(R.id.closetab); mTitle = (TextView) findViewById(R.id.title); mTitleBar = findViewById(R.id.titlebar); + mImage = (ImageView) findViewById(R.id.tab_view); } protected boolean isClose(View v) { @@ -75,7 +67,7 @@ public class NavTabView extends LinearLayout { } protected boolean isWebView(View v) { - return v == mProxy; + return v == mImage; } protected void setHighlighted(boolean highlighted) { @@ -103,12 +95,9 @@ public class NavTabView extends LinearLayout { protected void setWebView(PhoneUi ui, Tab tab) { mTab = tab; setTitle(); - BrowserWebView web = (BrowserWebView) tab.getWebView(); - if (web != null) { - mWebView = web; - removeFromParent(mWebView); - mProxy = new WebProxyView(mContext, mWebView); - mContainer.addView(mProxy, 0); + Bitmap image = tab.getScreenshot(); + if (image != null) { + mImage.setImageBitmap(image); } } @@ -121,52 +110,9 @@ public class NavTabView extends LinearLayout { mClickListener = listener; mTitleBar.setOnClickListener(mClickListener); mClose.setOnClickListener(mClickListener); - if (mProxy != null) { - mProxy.setOnClickListener(mClickListener); + if (mImage != null) { + mImage.setOnClickListener(mClickListener); } } - @Override - public void onDetachedFromWindow() { - if (mWebView != null) { - mWebView.setProxyView(null); - } - } - - @Override - public void onAttachedToWindow() { - if (mWebView != null) { - mWebView.invalidate(); - } - } - - private static void removeFromParent(View v) { - if (v.getParent() != null) { - ((ViewGroup) v.getParent()).removeView(v); - } - } - - static class WebProxyView extends View { - - private BrowserWebView mWeb; - - public WebProxyView(Context context, BrowserWebView web) { - super(context); - setWillNotDraw(false); - mWeb = web; - mWeb.setProxyView(this); - - } - - public void onDraw(Canvas c) { - float scale = 0.7f; - int sx = mWeb.getScrollX(); - int sy = mWeb.getScrollY(); - c.scale(scale, scale); - c.translate(-sx, -sy); - mWeb.onDraw(c); - } - - } - } diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java new file mode 100644 index 0000000..724dcc8 --- /dev/null +++ b/src/com/android/browser/NavigationBarBase.java @@ -0,0 +1,333 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.browser; + +import android.app.SearchManager; +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.speech.RecognizerResultsIntent; +import android.util.AttributeSet; +import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.View.OnFocusChangeListener; +import android.webkit.WebView; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.PopupMenu; +import android.widget.PopupMenu.OnMenuItemClickListener; + +import com.android.browser.UI.DropdownChangeListener; +import com.android.browser.UrlInputView.UrlInputListener; +import com.android.browser.autocomplete.SuggestedTextController.TextChangeWatcher; + +import java.util.List; + +public class NavigationBarBase extends LinearLayout implements OnClickListener, + OnMenuItemClickListener, UrlInputListener, OnFocusChangeListener, + TextChangeWatcher { + + protected BaseUi mBaseUi; + protected TitleBar mTitleBar; + protected UiController mUiController; + protected UrlInputView mUrlInput; + protected boolean mInVoiceMode = false; + + private ImageView mFavicon; + private ImageView mLockIcon; + private View mUaSwitcher; + + public NavigationBarBase(Context context) { + super(context); + } + + public NavigationBarBase(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public NavigationBarBase(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + mLockIcon = (ImageView) findViewById(R.id.lock); + mFavicon = (ImageView) findViewById(R.id.favicon); + mUrlInput = (UrlInputView) findViewById(R.id.url); + mUrlInput.setUrlInputListener(this); + mUrlInput.setOnFocusChangeListener(this); + mUrlInput.setSelectAllOnFocus(true); + mUrlInput.addQueryTextWatcher(this); + } + + public void setTitleBar(TitleBar titleBar) { + mTitleBar = titleBar; + mBaseUi = mTitleBar.getUi(); + mUiController = mTitleBar.getUiController(); + mUrlInput.setController(mUiController); + } + + public void setLock(Drawable d) { + if (mLockIcon == null) return; + if (d == null) { + mLockIcon.setVisibility(View.GONE); + } else { + mLockIcon.setImageDrawable(d); + mLockIcon.setVisibility(View.VISIBLE); + } + } + + public void setFavicon(Bitmap icon) { + if (mFavicon == null) return; + mFavicon.setImageDrawable(mBaseUi.getFaviconDrawable(icon)); + } + + public void setUaSwitcher(View v) { + if (mUaSwitcher != null) { + mUaSwitcher.setOnClickListener(null); + } + mUaSwitcher = v; + mUaSwitcher.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + if (mUaSwitcher == v) { + BrowserSettings settings = BrowserSettings.getInstance(); + WebView web = mTitleBar.getCurrentWebView(); + if (web == null) return; + boolean desktop = settings.hasDesktopUseragent(web); + PopupMenu popup = new PopupMenu(mContext, mUaSwitcher); + Menu menu = popup.getMenu(); + popup.getMenuInflater().inflate(R.menu.ua_switcher, menu); + menu.findItem(R.id.ua_mobile_menu_id).setChecked(!desktop); + menu.findItem(R.id.ua_desktop_menu_id).setChecked(desktop); + popup.setOnMenuItemClickListener(this); + popup.show(); + } + } + + @Override + public boolean onMenuItemClick(MenuItem item) { + BrowserSettings settings = BrowserSettings.getInstance(); + WebView web = mTitleBar.getCurrentWebView(); + if (web == null) return false; + boolean desktop = settings.hasDesktopUseragent(web); + switch (item.getItemId()) { + case R.id.ua_mobile_menu_id: + if (desktop) { + settings.toggleDesktopUseragent(web); + web.loadUrl(web.getOriginalUrl()); + } + return true; + case R.id.ua_desktop_menu_id: + if (!desktop) { + settings.toggleDesktopUseragent(web); + web.loadUrl(web.getOriginalUrl()); + } + return true; + } + return false; + } + + @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) { + mBaseUi.showTitleBar(); + 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); + } + } + mBaseUi.suggestHideTitleBar(); + } + mUrlInput.clearNeedsUpdate(); + } + + protected void setFocusState(boolean focus) { + } + + protected void setSearchMode(boolean voiceSearchEnabled) {} + + public 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()) { + // 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 + + /** + * callback from suggestion dropdown + * user selected a suggestion + */ + @Override + public void onAction(String text, String extra, String source) { + mUiController.getCurrentTopWebView().requestFocus(); + if (UrlInputView.TYPED.equals(source)) { + String url = UrlUtils.smartUrlFilter(text, false); + Tab t = mBaseUi.getActiveTab(); + // Only shortcut javascript URIs for now, as there is special + // logic in UrlHandler for other schemas + if (url != null && t != null && url.startsWith("javascript:")) { + mUiController.loadUrl(t, url); + setDisplayTitle(text); + return; + } + } + Intent i = new Intent(); + String action = null; + if (UrlInputView.VOICE.equals(source)) { + action = RecognizerResultsIntent.ACTION_VOICE_SEARCH_RESULTS; + source = null; + } else { + action = Intent.ACTION_SEARCH; + } + i.setAction(action); + i.putExtra(SearchManager.QUERY, text); + if (extra != null) { + i.putExtra(SearchManager.EXTRA_DATA_KEY, extra); + } + if (source != null) { + Bundle appData = new Bundle(); + appData.putString(com.android.common.Search.SOURCE, source); + i.putExtra(SearchManager.APP_DATA, appData); + } + mUiController.handleNewIntent(i); + setDisplayTitle(text); + } + + @Override + public void onDismiss() { + final Tab currentTab = mBaseUi.getActiveTab(); + mBaseUi.hideTitleBar(); + post(new Runnable() { + public void run() { + clearFocus(); + if ((currentTab != null) && !mInVoiceMode) { + setDisplayTitle(currentTab.getUrl()); + } + } + }); + } + + /** + * callback from the suggestion dropdown + * copy text to input field and stay in edit mode + */ + @Override + public void onCopySuggestion(String text) { + mUrlInput.setText(text, true); + if (text != null) { + mUrlInput.setSelection(text.length()); + } + } + + public void setCurrentUrlIsBookmark(boolean isBookmark) { + } + + @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); + } + + 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) { + // editing takes preference of progress + setVisibility(View.VISIBLE); + if (mTitleBar.useQuickControls()) { + mTitleBar.getProgressView().setVisibility(View.GONE); + } + if (!mUrlInput.hasFocus()) { + mUrlInput.requestFocus(); + } + if (clearInput) { + mUrlInput.setText(""); + } else if (mInVoiceMode) { + mUrlInput.showDropDown(); + } + } + + public void onProgressStarted() { + } + + public void onProgressStopped() { + } + +} diff --git a/src/com/android/browser/NavigationBarPhone.java b/src/com/android/browser/NavigationBarPhone.java new file mode 100644 index 0000000..8173377 --- /dev/null +++ b/src/com/android/browser/NavigationBarPhone.java @@ -0,0 +1,229 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.browser; + +import android.app.Activity; +import android.content.Context; +import android.content.res.Resources; +import android.graphics.drawable.Drawable; +import android.util.AttributeSet; +import android.view.ContextMenu; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewConfiguration; +import android.webkit.WebView; +import android.widget.ImageView; +import android.widget.PopupMenu; +import android.widget.PopupMenu.OnDismissListener; + +import com.android.browser.UrlInputView.StateListener; + +public class NavigationBarPhone extends NavigationBarBase implements + StateListener, OnDismissListener { + + private ImageView mStopButton; + private ImageView mVoiceButton; + private Drawable mStopDrawable; + private Drawable mRefreshDrawable; + private String mStopDescription; + private String mRefreshDescription; + private View mTabSwitcher; + private View mComboIcon; + private View mTitleContainer; + private View mMore; + private Drawable mTextfieldBgDrawable; + private PopupMenu mPopupMenu; + private boolean mMenuShowing; + private boolean mNeedsMenu; + + public NavigationBarPhone(Context context) { + super(context); + } + + public NavigationBarPhone(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public NavigationBarPhone(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + mStopButton = (ImageView) findViewById(R.id.stop); + mStopButton.setOnClickListener(this); + mVoiceButton = (ImageView) findViewById(R.id.voice); + mVoiceButton.setOnClickListener(this); + mTabSwitcher = findViewById(R.id.tab_switcher); + mTabSwitcher.setOnClickListener(this); + mMore = findViewById(R.id.more); + mMore.setOnClickListener(this); + mComboIcon = findViewById(R.id.iconcombo); + mTitleContainer = findViewById(R.id.title_bg); + setFocusState(false); + Resources res = getContext().getResources(); + mStopDrawable = res.getDrawable(R.drawable.ic_stop_holo_dark); + mRefreshDrawable = res.getDrawable(R.drawable.ic_refresh_holo_dark); + mStopDescription = res.getString(R.string.accessibility_button_stop); + mRefreshDescription = res.getString(R.string.accessibility_button_refresh); + mTextfieldBgDrawable = res.getDrawable(R.drawable.textfield_active_holo_dark); + setUaSwitcher(mComboIcon); + mUrlInput.setContainer(this); + mUrlInput.setStateListener(this); + mNeedsMenu = !ViewConfiguration.get(getContext()).hasPermanentMenuKey(); + } + + @Override + protected void setSearchMode(boolean voiceSearchEnabled) { + boolean showvoicebutton = voiceSearchEnabled && + mUiController.supportsVoiceSearch(); + mVoiceButton.setVisibility(showvoicebutton ? View.VISIBLE : + View.GONE); + } + + @Override + public void onProgressStarted() { + super.onProgressStarted(); + if (mStopButton.getDrawable() != mStopDrawable) { + mStopButton.setImageDrawable(mStopDrawable); + mStopButton.setContentDescription(mStopDescription); + if (mStopButton.getVisibility() != View.VISIBLE) { + mComboIcon.setVisibility(View.GONE); + mStopButton.setVisibility(View.VISIBLE); + } + } + } + + @Override + public void onProgressStopped() { + super.onProgressStopped(); + mStopButton.setImageDrawable(mRefreshDrawable); + mStopButton.setContentDescription(mRefreshDescription); + if (!isEditingUrl()) { + mComboIcon.setVisibility(View.VISIBLE); + } + onStateChanged(mUrlInput.getState()); + } + + /** + * 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 (!isEditingUrl()) { + if (title == null) { + mUrlInput.setText(R.string.new_tab); + } else { + mUrlInput.setText(title); + } + mUrlInput.setSelection(0); + } + } + + @Override + public void onClick(View v) { + if (v == mStopButton) { + if (mTitleBar.isInLoad()) { + mUiController.stopLoading(); + } else { + WebView web = mBaseUi.getWebView(); + if (web != null) { + stopEditingUrl(); + web.reload(); + } + } + } else if (v == mVoiceButton) { + mUiController.startVoiceSearch(); + } else if (v == mTabSwitcher) { + ((PhoneUi) mBaseUi).toggleNavScreen(); + } else if (mMore == v) { + showMenu(mMore); + } else { + super.onClick(v); + } + } + + public boolean isMenuShowing() { + return mMenuShowing; + } + + void showMenu(View anchor) { + mMenuShowing = true; + mPopupMenu = new PopupMenu(mContext, anchor); + Menu menu = mPopupMenu.getMenu(); + mPopupMenu.getMenuInflater().inflate(R.menu.browser, menu); + mUiController.updateMenuState(mBaseUi.getActiveTab(), menu); + mPopupMenu.setOnMenuItemClickListener(this); + mPopupMenu.setOnDismissListener(this); + mPopupMenu.show(); + } + + @Override + public void onDismiss(PopupMenu menu) { + onMenuHidden(); + } + + @Override + public boolean onMenuItemClick(MenuItem item) { + onMenuHidden(); + boolean res = mUiController.onOptionsItemSelected(item); + if (!res) { + return super.onMenuItemClick(item); + } + return res; + } + + private void onMenuHidden() { + mMenuShowing = false; + mPopupMenu = null; + mBaseUi.showTitleBarForDuration(); + } + + @Override + public void onStateChanged(int state) { + switch(state) { + case StateListener.STATE_NORMAL: + mComboIcon.setVisibility(View.VISIBLE); + mStopButton.setVisibility(View.GONE); + setSearchMode(mInVoiceMode); + mTabSwitcher.setVisibility(View.VISIBLE); + mTitleContainer.setBackgroundDrawable(null); + mMore.setVisibility(mNeedsMenu ? View.VISIBLE : View.GONE); + break; + case StateListener.STATE_HIGHLIGHTED: + mComboIcon.setVisibility(View.GONE); + mStopButton.setVisibility(View.VISIBLE); + setSearchMode(true); + mTabSwitcher.setVisibility(View.GONE); + mMore.setVisibility(View.GONE); + mTitleContainer.setBackgroundDrawable(mTextfieldBgDrawable); + break; + case StateListener.STATE_EDITED: + mComboIcon.setVisibility(View.GONE); + mStopButton.setVisibility(View.GONE); + setSearchMode(false); + mTabSwitcher.setVisibility(View.GONE); + mMore.setVisibility(View.GONE); + mTitleContainer.setBackgroundDrawable(mTextfieldBgDrawable); + break; + } + } +} diff --git a/src/com/android/browser/TitleBarXLarge.java b/src/com/android/browser/NavigationBarTablet.java index 3d4d2ec..e3059ea 100644 --- a/src/com/android/browser/TitleBarXLarge.java +++ b/src/com/android/browser/NavigationBarTablet.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010 The Android Open Source Project + * 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. @@ -13,41 +13,30 @@ * 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 android.app.Activity; +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; import android.content.Context; -import android.content.SharedPreferences; -import android.content.SharedPreferences.OnSharedPreferenceChangeListener; +import android.content.res.Configuration; import android.content.res.Resources; -import android.graphics.Bitmap; import android.graphics.drawable.Drawable; -import android.preference.PreferenceManager; import android.text.TextUtils; +import android.util.AttributeSet; import android.view.View; -import android.view.View.OnClickListener; -import android.view.View.OnFocusChangeListener; -import android.webkit.WebView; -import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.ImageView; import java.util.List; -/** - * tabbed title bar for xlarge screen browser - */ -public class TitleBarXLarge extends TitleBarBase - implements OnClickListener, OnFocusChangeListener, TextChangeWatcher, - DeviceAccountLogin.AutoLoginCallback { - - private XLargeUi mUi; +public class NavigationBarTablet extends NavigationBarBase { private Drawable mStopDrawable; private Drawable mReloadDrawable; + private String mStopDescription; + private String mRefreshDescription; private View mUrlContainer; private ImageButton mBackButton; @@ -60,37 +49,52 @@ public class TitleBarXLarge extends TitleBarBase private View mAllButton; private View mClearButton; private ImageView mVoiceSearch; + private View mNavButtons; private Drawable mFocusDrawable; private Drawable mUnfocusDrawable; + private boolean mHideNavButtons; + + public NavigationBarTablet(Context context) { + super(context); + init(context); + } + + public NavigationBarTablet(Context context, AttributeSet attrs) { + super(context, attrs); + init(context); + } + + public NavigationBarTablet(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(context); + } - public TitleBarXLarge(Activity activity, UiController controller, - XLargeUi ui, FrameLayout parent) { - super(activity, controller, ui, parent); - mUi = ui; - Resources resources = activity.getResources(); + private void init(Context context) { + Resources resources = context.getResources(); mStopDrawable = resources.getDrawable(R.drawable.ic_stop_holo_dark); mReloadDrawable = resources.getDrawable(R.drawable.ic_refresh_holo_dark); + mStopDescription = resources.getString(R.string.accessibility_button_stop); + mRefreshDescription = resources.getString(R.string.accessibility_button_refresh); mFocusDrawable = resources.getDrawable( R.drawable.textfield_active_holo_dark); mUnfocusDrawable = resources.getDrawable( R.drawable.textfield_default_holo_dark); - mInVoiceMode = false; - initLayout(activity, R.layout.url_bar); + mHideNavButtons = resources.getBoolean(R.bool.hide_nav_buttons); } @Override - protected void initLayout(Context context, int layoutId) { - super.initLayout(context, layoutId); + protected void onFinishInflate() { + super.onFinishInflate(); mAllButton = findViewById(R.id.all_btn); // TODO: Change enabled states based on whether you can go // back/forward. Probably should be done inside onPageStarted. + mNavButtons = findViewById(R.id.navbuttons); mBackButton = (ImageButton) findViewById(R.id.back); mForwardButton = (ImageButton) findViewById(R.id.forward); mUrlIcon = (ImageView) findViewById(R.id.url_icon); mStar = (ImageView) findViewById(R.id.star); mStopButton = (ImageView) findViewById(R.id.stop); mSearchButton = (ImageView) findViewById(R.id.search); - mLockIcon = (ImageView) findViewById(R.id.lock); mGoButton = findViewById(R.id.go); mClearButton = findViewById(R.id.clear); mVoiceSearch = (ImageView) findViewById(R.id.voicesearch); @@ -106,16 +110,38 @@ public class TitleBarXLarge extends TitleBarBase mVoiceSearch.setOnClickListener(this); setUaSwitcher(mUrlIcon); mUrlInput.setContainer(mUrlContainer); + } + + public void onConfigurationChanged(Configuration config) { + super.onConfigurationChanged(config); + Resources res = mContext.getResources(); + mHideNavButtons = res.getBoolean(R.bool.hide_nav_buttons); + if (mUrlInput.hasFocus()) { + if (mHideNavButtons && (mNavButtons.getVisibility() == View.VISIBLE)) { + int aw = mNavButtons.getMeasuredWidth(); + mNavButtons.setVisibility(View.GONE); + mNavButtons.setAlpha(0f); + mNavButtons.setTranslationX(-aw); + } else if (!mHideNavButtons && (mNavButtons.getVisibility() == View.GONE)) { + mNavButtons.setVisibility(View.VISIBLE); + mNavButtons.setAlpha(1f); + mNavButtons.setTranslationX(0); + } + } + } + + @Override + public void setTitleBar(TitleBar titleBar) { + super.setTitleBar(titleBar); setFocusState(false); } void updateNavigationState(Tab tab) { - WebView web = tab.getWebView(); - if (web != null) { - mBackButton.setImageResource(web.canGoBack() + if (tab != null) { + mBackButton.setImageResource(tab.canGoBack() ? R.drawable.ic_back_holo_dark : R.drawable.ic_back_disabled_holo_dark); - mForwardButton.setImageResource(web.canGoForward() + mForwardButton.setImageResource(tab.canGoForward() ? R.drawable.ic_forward_holo_dark : R.drawable.ic_forward_disabled_holo_dark); } @@ -127,19 +153,18 @@ public class TitleBarXLarge extends TitleBarBase mStar.setActivated(isBookmark); } - @Override public void onClick(View v) { if (mBackButton == v) { - mUiController.getCurrentTopWebView().goBack(); + mUiController.getCurrentTab().goBack(); } else if (mForwardButton == v) { - mUiController.getCurrentTopWebView().goForward(); + mUiController.getCurrentTab().goForward(); } else if (mStar == v) { - mUiController.bookmarkCurrentPage(true); + getContext().startActivity(mUiController.createBookmarkCurrentPageIntent(true)); } else if (mAllButton == v) { mUiController.bookmarksOrHistoryPicker(false); } else if (mSearchButton == v) { - mUi.editUrl(true); + mBaseUi.editUrl(true); } else if (mStopButton == v) { stopOrRefresh(); } else if (mGoButton == v) { @@ -156,9 +181,6 @@ public class TitleBarXLarge extends TitleBarBase } } - @Override - void setFavicon(Bitmap icon) { } - private void clearOrClose() { if (TextUtils.isEmpty(mUrlInput.getUserText())) { // close @@ -179,17 +201,23 @@ public class TitleBarXLarge extends TitleBarBase protected void setFocusState(boolean focus) { super.setFocusState(focus); if (focus) { + if (mHideNavButtons) { + hideNavButtons(); + } mSearchButton.setVisibility(View.GONE); mStar.setVisibility(View.GONE); mClearButton.setVisibility(View.VISIBLE); mUrlIcon.setImageResource(R.drawable.ic_search_holo_dark); updateSearchMode(false); } else { + if (mHideNavButtons) { + showNavButtons(); + } mGoButton.setVisibility(View.GONE); mVoiceSearch.setVisibility(View.GONE); mStar.setVisibility(View.VISIBLE); mClearButton.setVisibility(View.GONE); - if (mUseQuickControls) { + if (mTitleBar.useQuickControls()) { mSearchButton.setVisibility(View.GONE); } else { mSearchButton.setVisibility(View.VISIBLE); @@ -201,7 +229,7 @@ public class TitleBarXLarge extends TitleBarBase } private void stopOrRefresh() { - if (mInLoad) { + if (mTitleBar.isInLoad()) { mUiController.stopLoading(); } else { mUiController.getCurrentTopWebView().reload(); @@ -209,16 +237,17 @@ public class TitleBarXLarge extends TitleBarBase } @Override - protected void onProgressStarted() { + public void onProgressStarted() { mStopButton.setImageDrawable(mStopDrawable); + mStopButton.setContentDescription(mStopDescription); } @Override - protected void onProgressStopped() { + public void onProgressStopped() { mStopButton.setImageDrawable(mReloadDrawable); + mStopButton.setContentDescription(mRefreshDescription); } - @Override protected void updateSearchMode(boolean userEdited) { setSearchMode(!userEdited || TextUtils.isEmpty(mUrlInput.getUserText())); } @@ -241,12 +270,34 @@ public class TitleBarXLarge extends TitleBarBase } } - @Override - public View focusSearch(View focused, int dir) { - if (FOCUS_DOWN == dir && hasFocus()) { - return getCurrentWebView(); - } - return super.focusSearch(focused, dir); + private void hideNavButtons() { + int awidth = mNavButtons.getMeasuredWidth(); + Animator anim1 = ObjectAnimator.ofFloat(mNavButtons, View.TRANSLATION_X, 0, - awidth); + Animator anim2 = ObjectAnimator.ofInt(mUrlContainer, "left", mUrlContainer.getLeft(), + mUrlContainer.getPaddingLeft()); + Animator anim3 = ObjectAnimator.ofFloat(mNavButtons, View.ALPHA, 1f, 0f); + AnimatorSet combo = new AnimatorSet(); + combo.playTogether(anim1, anim2, anim3); + combo.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + mNavButtons.setVisibility(View.GONE); + } + }); + combo.setDuration(150); + combo.start(); + } + + private void showNavButtons() { + int awidth = mNavButtons.getMeasuredWidth(); + Animator anim1 = ObjectAnimator.ofFloat(mNavButtons, View.TRANSLATION_X, -awidth, 0); + Animator anim2 = ObjectAnimator.ofInt(mUrlContainer, "left", 0, awidth); + Animator anim3 = ObjectAnimator.ofFloat(mNavButtons, View.ALPHA, 0f, 1f); + AnimatorSet combo = new AnimatorSet(); + combo.playTogether(anim1, anim2, anim3); + mNavButtons.setVisibility(View.VISIBLE); + combo.setDuration(150); + combo.start(); } } diff --git a/src/com/android/browser/NfcHandler.java b/src/com/android/browser/NfcHandler.java index bdfe25e..a8e11d3 100644 --- a/src/com/android/browser/NfcHandler.java +++ b/src/com/android/browser/NfcHandler.java @@ -20,6 +20,11 @@ import android.app.Activity; import android.nfc.NdefMessage; import android.nfc.NdefRecord; import android.nfc.NfcAdapter; +import android.os.AsyncTask; +import android.os.Handler; +import android.os.Message; + +import java.util.concurrent.CountDownLatch; /** This class implements sharing the URL of the currently * shown browser page over NFC. Sharing is only active @@ -30,11 +35,26 @@ public class NfcHandler implements NfcAdapter.NdefPushCallback { private NfcAdapter mNfcAdapter; private Activity mActivity; private Controller mController; + private Handler mHandler; + private Tab mCurrentTab; + private boolean mIsPrivate; + private CountDownLatch mPrivateBrowsingSignal; + + private static final int GET_PRIVATE_BROWSING_STATE_MSG = 100; public NfcHandler(Activity browser, Controller controller) { mActivity = browser; mController = controller; mNfcAdapter = NfcAdapter.getDefaultAdapter(mActivity); + mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + if (msg.what == GET_PRIVATE_BROWSING_STATE_MSG) { + mIsPrivate = mCurrentTab.getWebView().isPrivateBrowsingEnabled(); + mPrivateBrowsingSignal.countDown(); + } + } + }; } void onPause() { @@ -51,15 +71,26 @@ public class NfcHandler implements NfcAdapter.NdefPushCallback { @Override public NdefMessage createMessage() { - Tab currentTab = mController.getCurrentTab(); - if (currentTab == null) { + mCurrentTab = mController.getCurrentTab(); + if ((mCurrentTab != null) && (mCurrentTab.getWebView() != null)) { + // We can only read the WebView state on the UI thread, so post + // a message and wait. + mPrivateBrowsingSignal = new CountDownLatch(1); + mHandler.sendMessage(mHandler.obtainMessage(GET_PRIVATE_BROWSING_STATE_MSG)); + try { + mPrivateBrowsingSignal.await(); + } catch (InterruptedException e) { + return null; + } + } + + if ((mCurrentTab == null) || mIsPrivate) { return null; } - String currentUrl = currentTab.getUrl(); - if (currentUrl != null && currentTab.getWebView() != null && - !currentTab.getWebView().isPrivateBrowsingEnabled()) { - NdefRecord record = new NdefRecord(NdefRecord.TNF_ABSOLUTE_URI, - NdefRecord.RTD_URI, new byte[] {}, currentUrl.getBytes()); + + String currentUrl = mCurrentTab.getUrl(); + if (currentUrl != null) { + NdefRecord record = NdefRecord.createUri(currentUrl); NdefMessage msg = new NdefMessage(new NdefRecord[] { record }); return msg; } else { diff --git a/src/com/android/browser/PageDialogsHandler.java b/src/com/android/browser/PageDialogsHandler.java index c902f65..3f64758 100644 --- a/src/com/android/browser/PageDialogsHandler.java +++ b/src/com/android/browser/PageDialogsHandler.java @@ -39,6 +39,7 @@ public class PageDialogsHandler { private Context mContext; private Controller mController; private boolean mPageInfoFromShowSSLCertificateOnError; + private String mUrlCertificateOnError; private Tab mPageInfoView; private AlertDialog mPageInfoDialog; @@ -63,7 +64,9 @@ public class PageDialogsHandler { public void onConfigurationChanged(Configuration config) { if (mPageInfoDialog != null) { mPageInfoDialog.dismiss(); - showPageInfo(mPageInfoView, mPageInfoFromShowSSLCertificateOnError); + showPageInfo(mPageInfoView, + mPageInfoFromShowSSLCertificateOnError, + mUrlCertificateOnError); } if (mSSLCertificateDialog != null) { mSSLCertificateDialog.dismiss(); @@ -71,8 +74,9 @@ public class PageDialogsHandler { } if (mSSLCertificateOnErrorDialog != null) { mSSLCertificateOnErrorDialog.dismiss(); - showSSLCertificateOnError(mSSLCertificateOnErrorView, mSSLCertificateOnErrorHandler, - mSSLCertificateOnErrorError); + showSSLCertificateOnError(mSSLCertificateOnErrorView, + mSSLCertificateOnErrorHandler, + mSSLCertificateOnErrorError); } if (mHttpAuthenticationDialog != null) { mHttpAuthenticationDialog.reshow(); @@ -126,16 +130,19 @@ public class PageDialogsHandler { * this dialog was opened from the SSL-certificate-on-error dialog or * not. This is important, since we need to know whether to return to * the parent dialog or simply dismiss. + * @param urlCertificateOnError The URL that invokes SSLCertificateError. + * Null when fromShowSSLCertificateOnError is false. */ void showPageInfo(final Tab tab, - final boolean fromShowSSLCertificateOnError) { + final boolean fromShowSSLCertificateOnError, + final String urlCertificateOnError) { final LayoutInflater factory = LayoutInflater.from(mContext); final View pageInfoView = factory.inflate(R.layout.page_info, null); final WebView view = tab.getWebView(); - String url = tab.getUrl(); + String url = fromShowSSLCertificateOnError ? urlCertificateOnError : tab.getUrl(); String title = tab.getTitle(); if (url == null) { @@ -150,6 +157,7 @@ public class PageDialogsHandler { mPageInfoView = tab; mPageInfoFromShowSSLCertificateOnError = fromShowSSLCertificateOnError; + mUrlCertificateOnError = urlCertificateOnError; AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mContext) @@ -241,7 +249,7 @@ public class PageDialogsHandler { LayoutInflater factory = LayoutInflater.from(mContext); final LinearLayout placeholder = - (LinearLayout)certificateView.findViewById(R.id.placeholder); + (LinearLayout)certificateView.findViewById(com.android.internal.R.id.placeholder); LinearLayout ll = (LinearLayout) factory.inflate( R.layout.ssl_success, placeholder); @@ -261,7 +269,7 @@ public class PageDialogsHandler { mSSLCertificateDialog = null; mSSLCertificateView = null; - showPageInfo(tab, false); + showPageInfo(tab, false, null); } }) .setOnCancelListener( @@ -270,7 +278,7 @@ public class PageDialogsHandler { mSSLCertificateDialog = null; mSSLCertificateView = null; - showPageInfo(tab, false); + showPageInfo(tab, false, null); } }) .show(); @@ -296,34 +304,25 @@ public class PageDialogsHandler { LayoutInflater factory = LayoutInflater.from(mContext); final LinearLayout placeholder = - (LinearLayout)certificateView.findViewById(R.id.placeholder); + (LinearLayout)certificateView.findViewById(com.android.internal.R.id.placeholder); - if (error.hasError(SslError.SSL_UNTRUSTED)) { - LinearLayout ll = (LinearLayout)factory - .inflate(R.layout.ssl_warning, placeholder); - ((TextView)ll.findViewById(R.id.warning)) - .setText(R.string.ssl_untrusted); - } - - if (error.hasError(SslError.SSL_IDMISMATCH)) { - LinearLayout ll = (LinearLayout)factory - .inflate(R.layout.ssl_warning, placeholder); - ((TextView)ll.findViewById(R.id.warning)) - .setText(R.string.ssl_mismatch); - } + LinearLayout ll = (LinearLayout)factory.inflate(R.layout.ssl_warning, placeholder); + TextView textView = (TextView)ll.findViewById(R.id.warning); - if (error.hasError(SslError.SSL_EXPIRED)) { - LinearLayout ll = (LinearLayout)factory - .inflate(R.layout.ssl_warning, placeholder); - ((TextView)ll.findViewById(R.id.warning)) - .setText(R.string.ssl_expired); - } - - if (error.hasError(SslError.SSL_NOTYETVALID)) { - LinearLayout ll = (LinearLayout)factory - .inflate(R.layout.ssl_warning, placeholder); - ((TextView)ll.findViewById(R.id.warning)) - .setText(R.string.ssl_not_yet_valid); + if (error.hasError(SslError.SSL_UNTRUSTED)) { + textView.setText(R.string.ssl_untrusted); + } else if (error.hasError(SslError.SSL_IDMISMATCH)) { + textView.setText(R.string.ssl_mismatch); + } else if (error.hasError(SslError.SSL_EXPIRED)) { + textView.setText(R.string.ssl_expired); + } else if (error.hasError(SslError.SSL_NOTYETVALID)) { + textView.setText(R.string.ssl_not_yet_valid); + } else if (error.hasError(SslError.SSL_DATE_INVALID)) { + textView.setText(R.string.ssl_date_invalid); + } else if (error.hasError(SslError.SSL_INVALID)) { + textView.setText(R.string.ssl_invalid); + } else { + textView.setText(R.string.ssl_unknown); } mSSLCertificateOnErrorHandler = handler; @@ -359,7 +358,8 @@ public class PageDialogsHandler { showPageInfo(mController.getTabControl() .getTabFromView(view), - true); + true, + error.getUrl()); } }) .setOnCancelListener( diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java index d0b0f77..32bc092 100644 --- a/src/com/android/browser/PhoneUi.java +++ b/src/com/android/browser/PhoneUi.java @@ -17,16 +17,22 @@ package com.android.browser; import android.app.Activity; +import android.content.Context; import android.os.Bundle; import android.util.Log; import android.view.ActionMode; import android.view.Gravity; import android.view.KeyEvent; import android.view.Menu; +import android.view.MenuItem; import android.view.View; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityManager; import android.webkit.WebView; import android.widget.FrameLayout; +import com.android.browser.UrlInputView.StateListener; + /** * Ui for regular phone screen sizes */ @@ -34,11 +40,9 @@ public class PhoneUi extends BaseUi { private static final String LOGTAG = "PhoneUi"; - private TitleBarPhone mTitleBar; - private ActiveTabsPage mActiveTabsPage; - private boolean mUseQuickControls; - private PieControl mPieControl; + private PieControlPhone mPieControl; private NavScreen mNavScreen; + private NavigationBarPhone mNavigationBar; boolean mExtendedMenuOpen; boolean mOptionsMenuOpen; @@ -50,33 +54,9 @@ public class PhoneUi extends BaseUi { */ public PhoneUi(Activity browser, UiController controller) { super(browser, controller); - mTitleBar = new TitleBarPhone(mActivity, mUiController, this, - mContentView); - // mTitleBar will be always be shown in the fully loaded mode on - // phone - mTitleBar.setProgress(100); mActivity.getActionBar().hide(); setUseQuickControls(BrowserSettings.getInstance().useQuickControls()); - } - - @Override - public void hideComboView() { - super.hideComboView(); - mActivity.getActionBar().hide(); - } - - // lifecycle - - @Override - public void onPause() { - // FIXME: This removes the active tabs page and resets the menu to - // MAIN_MENU. A better solution might be to do this work in onNewIntent - // but then we would need to save it in onSaveInstanceState and restore - // it in onCreate/onRestoreInstanceState - if (mActiveTabsPage != null) { - mUiController.removeActiveTabsPage(true); - } - super.onPause(); + mNavigationBar = (NavigationBarPhone) mTitleBar.getNavigationBar(); } @Override @@ -87,18 +67,14 @@ public class PhoneUi extends BaseUi { @Override public void editUrl(boolean clearInput) { if (mUseQuickControls) { - getTitleBar().setShowProgressOnly(false); + mTitleBar.setShowProgressOnly(false); } super.editUrl(clearInput); } @Override public boolean onBackKey() { - if (mActiveTabsPage != null) { - // if tab page is showing, hide it - mUiController.removeActiveTabsPage(true); - return true; - } else if (mNavScreen != null) { + if (mNavScreen != null) { mNavScreen.close(); return true; } @@ -106,23 +82,7 @@ public class PhoneUi extends BaseUi { } @Override - public boolean onMenuKey() { - if (!isComboViewShowing()) { - if (mNavScreen == null) { - showNavScreen(); - } else { - mNavScreen.close(); - } - return true; - } else { - return false; - } - } - - @Override public boolean dispatchKey(int code, KeyEvent event) { - if (!isComboViewShowing()) { - } return false; } @@ -152,7 +112,6 @@ public class PhoneUi extends BaseUi { @Override public void setActiveTab(final Tab tab) { - captureTab(mActiveTab); super.setActiveTab(tab); BrowserWebView view = (BrowserWebView) tab.getWebView(); // TabControl.setCurrentTab has been called before this, @@ -164,65 +123,80 @@ public class PhoneUi extends BaseUi { // 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); } - view.setScrollListener(this); } if (tab.isInVoiceSearchMode()) { showVoiceTitleBar(tab.getVoiceDisplayTitle(), tab.getVoiceSearchResults()); } else { revertVoiceTitleBar(tab); } + // update nav bar state + mNavigationBar.onStateChanged(StateListener.STATE_NORMAL); updateLockIconToLatest(tab); tab.getTopWindow().requestFocus(); } + /** + * Suggest to the UI that the title bar can be hidden. The UI will then + * decide whether or not to hide based off a number of factors, such + * as if the user is editing the URL bar or if the page is loading + */ @Override - protected TitleBarBase getTitleBar() { - return mTitleBar; + public void suggestHideTitleBar() { + if (!mNavigationBar.isMenuShowing()) { + super.suggestHideTitleBar(); + } } - // active tabs page - @Override - public void showActiveTabsPage() { - captureTab(mActiveTab); - mActiveTabsPage = new ActiveTabsPage(mActivity, mUiController); - mTitleBar.setVisibility(View.GONE); - hideTitleBar(); - mContentView.addView(mActiveTabsPage, COVER_SCREEN_PARAMS); - mActiveTabsPage.requestFocus(); + public void showComboView(ComboViews startWith, Bundle extras) { + if (mNavScreen != null) { + hideNavScreen(false); + } + super.showComboView(startWith, extras); } - /** - * Remove the active tabs page. - */ + // menu handling callbacks + @Override - public void removeActiveTabsPage() { - mContentView.removeView(mActiveTabsPage); - mTitleBar.setVisibility(View.VISIBLE); - mActiveTabsPage = null; + public boolean onPrepareOptionsMenu(Menu menu) { + updateMenuState(mActiveTab, menu); + return true; } @Override - public void showComboView(boolean startWithHistory, Bundle extras) { - if (mNavScreen != null) { - hideNavScreen(false); + public void updateMenuState(Tab tab, Menu menu) { + menu.setGroupVisible(R.id.NAV_MENU, (mNavScreen == null)); + MenuItem bm = menu.findItem(R.id.bookmarks_menu_id); + if (bm != null) { + bm.setVisible(mNavScreen == null); + } + MenuItem nt = menu.findItem(R.id.new_tab_menu_id); + if (nt != null) { + nt.setVisible(mNavScreen == null); + } + MenuItem find = menu.findItem(R.id.find_menu_id); + if (find != null) { + find.setVisible(((tab != null) && !tab.isSnapshot())); + } + MenuItem abm = menu.findItem(R.id.add_bookmark_menu_id); + if (abm != null) { + abm.setVisible((tab != null) && !tab.isSnapshot()); } - super.showComboView(startWithHistory, extras); } @Override - public boolean showsWeb() { - return super.showsWeb() && mActiveTabsPage == null; + public boolean onOptionsItemSelected(MenuItem item) { + if (mNavScreen != null) { + hideNavScreen(false); + } + return false; } - // menu handling callbacks - @Override public void onContextMenuCreated(Menu menu) { hideTitleBar(); @@ -239,7 +213,9 @@ public class PhoneUi extends BaseUi { @Override public void onActionModeStarted(ActionMode mode) { - hideTitleBar(); + if (!isEditingUrl()) { + hideTitleBar(); + } } @Override @@ -257,23 +233,26 @@ public class PhoneUi extends BaseUi { protected void setTitleGravity(int gravity) { if (mUseQuickControls) { FrameLayout.LayoutParams lp = - (FrameLayout.LayoutParams) getTitleBar().getLayoutParams(); + (FrameLayout.LayoutParams) mTitleBar.getLayoutParams(); lp.gravity = gravity; - getTitleBar().setLayoutParams(lp); + mTitleBar.setLayoutParams(lp); } else { super.setTitleGravity(gravity); } } - private void setUseQuickControls(boolean useQuickControls) { + @Override + public void setUseQuickControls(boolean useQuickControls) { mUseQuickControls = useQuickControls; - getTitleBar().setUseQuickControls(mUseQuickControls); + mTitleBar.setUseQuickControls(mUseQuickControls); if (useQuickControls) { - mPieControl = new PieControl(mActivity, mUiController, this); + mPieControl = new PieControlPhone(mActivity, mUiController, this); mPieControl.attachToContainer(mContentView); WebView web = getWebView(); if (web != null) { web.setEmbeddedTitleBar(null); + // don't show url bar on scrolling + web.setOnTouchListener(null); } } else { if (mPieControl != null) { @@ -282,20 +261,13 @@ public class PhoneUi extends BaseUi { WebView web = getWebView(); if (web != null) { web.setEmbeddedTitleBar(mTitleBar); + // show url bar on scrolling + web.setOnTouchListener(this); } setTitleGravity(Gravity.NO_GRAVITY); } } - @Override - protected void captureTab(final Tab tab) { - if (tab == null) return; - BrowserWebView web = (BrowserWebView) tab.getWebView(); - if (web != null) { - tab.setScreenshot(web.capture()); - } - } - void showNavScreen() { detachTab(mActiveTab); mNavScreen = new NavScreen(mActivity, mUiController, this); @@ -304,6 +276,8 @@ public class PhoneUi extends BaseUi { mContentView.setVisibility(View.GONE); mCustomViewContainer.setVisibility(View.VISIBLE); mCustomViewContainer.bringToFront(); + // notify accessibility manager about the screen change + mNavScreen.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); } void hideNavScreen(boolean animate) { @@ -317,4 +291,22 @@ public class PhoneUi extends BaseUi { mContentView.setVisibility(View.VISIBLE); } + @Override + public boolean needsRestoreAllTabs() { + return false; + } + + public void toggleNavScreen() { + if (mNavScreen == null) { + showNavScreen(); + } else { + hideNavScreen(false); + } + } + + @Override + public boolean shouldCaptureThumbnails() { + return true; + } + } diff --git a/src/com/android/browser/PieControl.java b/src/com/android/browser/PieControl.java deleted file mode 100644 index 8bcd972..0000000 --- a/src/com/android/browser/PieControl.java +++ /dev/null @@ -1,359 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.browser; - -import com.android.browser.view.PieItem; -import com.android.browser.view.PieListView; -import com.android.browser.view.PieMenu; -import com.android.browser.view.PieMenu.PieView.OnLayoutListener; -import com.android.browser.view.PieStackView; -import com.android.browser.view.PieStackView.OnCurrentListener; - -import android.app.Activity; -import android.content.Context; -import android.graphics.Bitmap; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup; -import android.view.ViewGroup.LayoutParams; -import android.webkit.WebView; -import android.widget.BaseAdapter; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.ImageView.ScaleType; -import android.widget.TextView; - -import java.util.ArrayList; -import java.util.List; - -/** - * controller for Quick Controls pie menu - */ -public class PieControl implements OnClickListener, PieMenu.PieController { - - private Activity mActivity; - private UiController mUiController; - private BaseUi mUi; - private PieMenu mPie; - private PieItem mBack; - private PieItem mForward; - private PieItem mRefresh; - private PieItem mUrl; - private PieItem mOptions; - private PieItem mBookmarks; - private PieItem mNewTab; - private PieItem mClose; - private MenuAdapter mMenuAdapter; - private PieItem mShowTabs; - private TabAdapter mTabAdapter; - private TextView mTabsCount; - private int mItemSize; - - public PieControl(Activity activity, UiController controller, BaseUi ui) { - mActivity = activity; - mUiController = controller; - mUi = ui; - mItemSize = (int) activity.getResources().getDimension(R.dimen.qc_item_size); - } - - protected void attachToContainer(FrameLayout container) { - if (mPie == null) { - mPie = new PieMenu(mActivity); - LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, - LayoutParams.MATCH_PARENT); - mPie.setLayoutParams(lp); - mBack = makeItem(R.drawable.ic_back_holo_dark, 1); - mUrl = makeItem(R.drawable.ic_web_holo_dark, 1); - mBookmarks = makeItem(R.drawable.ic_bookmarks_holo_dark, 1); - mRefresh = makeItem(R.drawable.ic_refresh_holo_dark, 2); - mForward = makeItem(R.drawable.ic_forward_holo_dark, 2); - mNewTab = makeItem(R.drawable.ic_new_window_holo_dark, 2); - mClose = makeItem(R.drawable.ic_close_window_holo_dark, 2); - View tabs = makeTabsView(); - mShowTabs = new PieItem(tabs, 2); - mOptions = makeItem( - com.android.internal.R.drawable.ic_menu_moreoverflow_normal_holo_dark, - 2); - mMenuAdapter = new MenuAdapter(mActivity, mUiController); - mTabAdapter = new TabAdapter(mActivity, mUiController); - PieStackView stack = new PieStackView(mActivity); - stack.setLayoutListener(new OnLayoutListener() { - @Override - public void onLayout(int ax, int ay, boolean left) { - buildTabs(); - } - }); - stack.setOnCurrentListener(mTabAdapter); - stack.setAdapter(mTabAdapter); - mShowTabs.setPieView(stack); - PieListView menuview = new PieListView(mActivity); - menuview.setLayoutListener(new OnLayoutListener() { - @Override - public void onLayout(int ax, int ay, boolean left) { - buildMenu(); - } - }); - - mOptions.setPieView(menuview); - menuview.setAdapter(mMenuAdapter); - setClickListener(mBack, - mRefresh, - mForward, - mUrl, - mBookmarks, - mNewTab, - mClose - ); - // level 1 - mPie.addItem(mBack); - mPie.addItem(mUrl); - mPie.addItem(mBookmarks); - // level 2 - mPie.addItem(mForward); - mPie.addItem(mRefresh); - mPie.addItem(mOptions); - mPie.addItem(mShowTabs); - mPie.addItem(mNewTab); - mPie.addItem(mClose); - mPie.setController(this); - } - container.addView(mPie); - } - - private void buildTabs() { - final List<Tab> tabs = mUiController.getTabs(); - mUi.captureTab(mUi.getActiveTab()); - mTabAdapter.setTabs(tabs); - PieStackView sym = (PieStackView) mShowTabs.getPieView(); - sym.setCurrent(mUiController.getTabControl().getCurrentPosition()); - - } - - private void buildMenu() { - Menu menu = mUi.getMenu(); - menu.setGroupVisible(R.id.NAV_MENU, false); - mMenuAdapter.setMenu(menu); - } - - protected void removeFromContainer(FrameLayout container) { - container.removeView(mPie); - } - - private View makeTabsView() { - View v = mActivity.getLayoutInflater().inflate(R.layout.qc_tabs_view, null); - mTabsCount = (TextView) v.findViewById(R.id.label); - mTabsCount.setText("1"); - ImageView image = (ImageView) v.findViewById(R.id.icon); - image.setImageResource(R.drawable.ic_windows_holo_dark); - image.setScaleType(ScaleType.CENTER); - LayoutParams lp = new LayoutParams(mItemSize, mItemSize); - v.setLayoutParams(lp); - return v; - } - - private PieItem makeItem(int image, int l) { - ImageView view = new ImageView(mActivity); - view.setImageResource(image); - view.setMinimumWidth(mItemSize); - view.setMinimumHeight(mItemSize); - view.setScaleType(ScaleType.CENTER); - LayoutParams lp = new LayoutParams(mItemSize, mItemSize); - view.setLayoutParams(lp); - return new PieItem(view, l); - } - - private void setClickListener(PieItem... items) { - for (PieItem item : items) { - item.getView().setOnClickListener(this); - } - } - - protected void forceToTop(FrameLayout container) { - if (mPie.getParent() != null) { - container.removeView(mPie); - container.addView(mPie); - } - } - - @Override - public void onClick(View v) { - Tab tab = mUiController.getTabControl().getCurrentTab(); - WebView web = tab.getWebView(); - if (mBack.getView() == v) { - web.goBack(); - } else if (mForward.getView() == v) { - web.goForward(); - } else if (mRefresh.getView() == v) { - if (tab.inPageLoad()) { - web.stopLoading(); - } else { - web.reload(); - } - } else if (mUrl.getView() == v) { - mUi.editUrl(false); - } else if (mBookmarks.getView() == v) { - mUiController.bookmarksOrHistoryPicker(false); - } else if (mNewTab.getView() == v) { - mUiController.openTabToHomePage(); - mUi.editUrl(false); - } else if (mClose.getView() == v) { - mUiController.closeCurrentTab(); - } - } - - @Override - public boolean onOpen() { - int n = mUiController.getTabControl().getTabCount(); - mTabsCount.setText(Integer.toString(n)); - return true; - } - - private static class TabAdapter extends BaseAdapter implements OnCurrentListener { - - LayoutInflater mInflater; - UiController mUiController; - private List<Tab> mTabs; - private int mCurrent; - - public TabAdapter(Context ctx, UiController ctl) { - mInflater = LayoutInflater.from(ctx); - mUiController = ctl; - mTabs = new ArrayList<Tab>(); - mCurrent = -1; - } - - public void setTabs(List<Tab> tabs) { - mTabs = tabs; - notifyDataSetChanged(); - } - - @Override - public int getCount() { - return mTabs.size(); - } - - @Override - public Tab getItem(int position) { - return mTabs.get(position); - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - final Tab tab = mTabs.get(position); - View view = mInflater.inflate(R.layout.qc_tab, - null); - ImageView thumb = (ImageView) view.findViewById(R.id.thumb); - TextView title1 = (TextView) view.findViewById(R.id.title1); - TextView title2 = (TextView) view.findViewById(R.id.title2); - Bitmap b = tab.getScreenshot(); - if (b != null) { - thumb.setImageBitmap(b); - } - if (position > mCurrent) { - title1.setVisibility(View.GONE); - title2.setText(tab.getTitle()); - } else { - title2.setVisibility(View.GONE); - title1.setText(tab.getTitle()); - } - view.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - mUiController.switchToTab(tab); - } - }); - return view; - } - - @Override - public void onSetCurrent(int index) { - mCurrent = index; - } - - } - - private static class MenuAdapter extends BaseAdapter - implements OnClickListener { - - List<MenuItem> mItems; - UiController mUiController; - LayoutInflater mInflater; - - public MenuAdapter(Context ctx, UiController ctl) { - mUiController = ctl; - mInflater = LayoutInflater.from(ctx); - mItems = new ArrayList<MenuItem>(); - } - - public void setMenu(Menu menu) { - mItems.clear(); - for (int i = 0; i < menu.size(); i++) { - MenuItem item = menu.getItem(i); - if (item.isEnabled() && item.isVisible()) { - mItems.add(item); - } - } - notifyDataSetChanged(); - } - - @Override - public int getCount() { - return mItems.size(); - } - - @Override - public MenuItem getItem(int position) { - return mItems.get(position); - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public void onClick(View v) { - if (v.getTag() != null) { - mUiController.onOptionsItemSelected((MenuItem) v.getTag()); - } - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - final MenuItem item = mItems.get(position); - View view = mInflater.inflate( - R.layout.qc_menu_item, null); - TextView label = - (TextView) view.findViewById(R.id.title); - label.setText(item.getTitle()); - label.setTag(item); - label.setOnClickListener(this); - label.setLayoutParams(new LayoutParams(240, 32)); - return label; - } - - } - -} diff --git a/src/com/android/browser/PieControlBase.java b/src/com/android/browser/PieControlBase.java new file mode 100644 index 0000000..830afea --- /dev/null +++ b/src/com/android/browser/PieControlBase.java @@ -0,0 +1,187 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.browser; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Bitmap; +import android.view.LayoutInflater; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; +import android.widget.BaseAdapter; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.ImageView.ScaleType; +import android.widget.TextView; + +import com.android.browser.view.PieItem; +import com.android.browser.view.PieMenu; +import com.android.browser.view.PieStackView.OnCurrentListener; + +import java.util.ArrayList; +import java.util.List; + +/** + * base controller for Quick Controls pie menu + */ +public abstract class PieControlBase implements PieMenu.PieController { + + protected Activity mActivity; + protected UiController mUiController; + protected PieMenu mPie; + protected int mItemSize; + protected TextView mTabsCount; + + public PieControlBase(Activity activity, UiController controller) { + mActivity = activity; + mUiController = controller; + mItemSize = (int) activity.getResources().getDimension(R.dimen.qc_item_size); + } + + protected void attachToContainer(FrameLayout container) { + if (mPie == null) { + mPie = new PieMenu(mActivity); + LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, + LayoutParams.MATCH_PARENT); + mPie.setLayoutParams(lp); + populateMenu(); + mPie.setController(this); + } + container.addView(mPie); + } + + protected void removeFromContainer(FrameLayout container) { + container.removeView(mPie); + } + + protected void forceToTop(FrameLayout container) { + if (mPie.getParent() != null) { + container.removeView(mPie); + container.addView(mPie); + } + } + + protected abstract void populateMenu(); + + protected void setClickListener(OnClickListener listener, PieItem... items) { + for (PieItem item : items) { + item.getView().setOnClickListener(listener); + } + } + + @Override + public boolean onOpen() { + int n = mUiController.getTabControl().getTabCount(); + mTabsCount.setText(Integer.toString(n)); + return true; + } + + protected PieItem makeItem(int image, int l) { + ImageView view = new ImageView(mActivity); + view.setImageResource(image); + view.setMinimumWidth(mItemSize); + view.setMinimumHeight(mItemSize); + view.setScaleType(ScaleType.CENTER); + LayoutParams lp = new LayoutParams(mItemSize, mItemSize); + view.setLayoutParams(lp); + return new PieItem(view, l); + } + + protected View makeTabsView() { + View v = mActivity.getLayoutInflater().inflate(R.layout.qc_tabs_view, null); + mTabsCount = (TextView) v.findViewById(R.id.label); + mTabsCount.setText("1"); + ImageView image = (ImageView) v.findViewById(R.id.icon); + image.setImageResource(R.drawable.ic_windows_holo_dark); + image.setScaleType(ScaleType.CENTER); + LayoutParams lp = new LayoutParams(mItemSize, mItemSize); + v.setLayoutParams(lp); + return v; + } + + static class TabAdapter extends BaseAdapter implements OnCurrentListener { + + LayoutInflater mInflater; + UiController mUiController; + private List<Tab> mTabs; + private int mCurrent; + + public TabAdapter(Context ctx, UiController ctl) { + mInflater = LayoutInflater.from(ctx); + mUiController = ctl; + mTabs = new ArrayList<Tab>(); + mCurrent = -1; + } + + public void setTabs(List<Tab> tabs) { + mTabs = tabs; + notifyDataSetChanged(); + } + + @Override + public int getCount() { + return mTabs.size(); + } + + @Override + public Tab getItem(int position) { + return mTabs.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + final Tab tab = mTabs.get(position); + View view = mInflater.inflate(R.layout.qc_tab, + null); + ImageView thumb = (ImageView) view.findViewById(R.id.thumb); + TextView title1 = (TextView) view.findViewById(R.id.title1); + TextView title2 = (TextView) view.findViewById(R.id.title2); + Bitmap b = tab.getScreenshot(); + if (b != null) { + thumb.setImageBitmap(b); + } + if (position > mCurrent) { + title1.setVisibility(View.GONE); + title2.setText(tab.getTitle()); + } else { + title2.setVisibility(View.GONE); + title1.setText(tab.getTitle()); + } + view.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + mUiController.switchToTab(tab); + } + }); + return view; + } + + @Override + public void onSetCurrent(int index) { + mCurrent = index; + } + + } + +} diff --git a/src/com/android/browser/PieControlPhone.java b/src/com/android/browser/PieControlPhone.java new file mode 100644 index 0000000..0b62cef --- /dev/null +++ b/src/com/android/browser/PieControlPhone.java @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.browser; + +import android.app.Activity; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup.LayoutParams; +import android.webkit.WebView; +import android.widget.ImageView; +import android.widget.ImageView.ScaleType; +import android.widget.TextView; + +import com.android.browser.view.PieItem; +import com.android.browser.view.PieMenu.PieView.OnLayoutListener; +import com.android.browser.view.PieStackView; + +import java.util.List; + +/** + * controller for Quick Controls pie menu + */ +public class PieControlPhone extends PieControlBase implements OnClickListener { + + private PhoneUi mUi; + private PieItem mBack; + private PieItem mUrl; + private PieItem mShowTabs; + private TabAdapter mTabAdapter; + + public PieControlPhone(Activity activity, UiController controller, PhoneUi ui) { + super(activity, controller); + mUi = ui; + } + + protected void populateMenu() { + mBack = makeItem(R.drawable.ic_back_holo_dark, 1); + mUrl = makeItem(R.drawable.ic_web_holo_dark, 1); + View tabs = makeTabsView(); + mShowTabs = new PieItem(tabs, 1); + mTabAdapter = new TabAdapter(mActivity, mUiController); + PieStackView stack = new PieStackView(mActivity); + stack.setLayoutListener(new OnLayoutListener() { + @Override + public void onLayout(int ax, int ay, boolean left) { + buildTabs(); + } + }); + stack.setOnCurrentListener(mTabAdapter); + stack.setAdapter(mTabAdapter); + mShowTabs.setPieView(stack); + // level 1 + mPie.addItem(mBack); + mPie.addItem(mUrl); + mPie.addItem(mShowTabs); + setClickListener(this, mBack, mUrl, mShowTabs); + } + + private void buildTabs() { + final List<Tab> tabs = mUiController.getTabs(); + mUi.getActiveTab().capture(); + mTabAdapter.setTabs(tabs); + PieStackView sym = (PieStackView) mShowTabs.getPieView(); + sym.setCurrent(mUiController.getTabControl().getCurrentPosition()); + + } + + @Override + public void onClick(View v) { + Tab tab = mUiController.getTabControl().getCurrentTab(); + if (mBack.getView() == v) { + tab.goBack(); + } else if (mUrl.getView() == v) { + mUi.editUrl(false); + } else if (mShowTabs.getView() == v) { + mUi.showNavScreen(); + } + } + + +} diff --git a/src/com/android/browser/PieControlXLarge.java b/src/com/android/browser/PieControlXLarge.java new file mode 100644 index 0000000..95f586e --- /dev/null +++ b/src/com/android/browser/PieControlXLarge.java @@ -0,0 +1,215 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.browser; + +import android.app.Activity; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; +import android.webkit.WebView; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import com.android.browser.view.PieItem; +import com.android.browser.view.PieListView; +import com.android.browser.view.PieMenu.PieView.OnLayoutListener; +import com.android.browser.view.PieStackView; + +import java.util.ArrayList; +import java.util.List; + +/** + * controller for Quick Controls pie menu + */ +public class PieControlXLarge extends PieControlBase implements OnClickListener { + + private BaseUi mUi; + private PieItem mBack; + private PieItem mForward; + private PieItem mRefresh; + private PieItem mUrl; + private PieItem mOptions; + private PieItem mBookmarks; + private PieItem mNewTab; + private PieItem mClose; + private MenuAdapter mMenuAdapter; + private PieItem mShowTabs; + private TabAdapter mTabAdapter; + + public PieControlXLarge(Activity activity, UiController controller, BaseUi ui) { + super(activity, controller); + mUiController = controller; + mUi = ui; + } + + protected void populateMenu() { + mBack = makeItem(R.drawable.ic_back_holo_dark, 1); + mUrl = makeItem(R.drawable.ic_web_holo_dark, 1); + mBookmarks = makeItem(R.drawable.ic_bookmarks_holo_dark, 1); + mRefresh = makeItem(R.drawable.ic_refresh_holo_dark, 2); + mForward = makeItem(R.drawable.ic_forward_holo_dark, 2); + mNewTab = makeItem(R.drawable.ic_new_window_holo_dark, 2); + mClose = makeItem(R.drawable.ic_close_window_holo_dark, 2); + View tabs = makeTabsView(); + mShowTabs = new PieItem(tabs, 2); + mOptions = makeItem(com.android.internal.R.drawable.ic_menu_moreoverflow_normal_holo_dark, + 2); + mMenuAdapter = new MenuAdapter(mActivity, mUiController); + mTabAdapter = new TabAdapter(mActivity, mUiController); + PieStackView stack = new PieStackView(mActivity); + stack.setLayoutListener(new OnLayoutListener() { + @Override + public void onLayout(int ax, int ay, boolean left) { + buildTabs(); + } + }); + stack.setOnCurrentListener(mTabAdapter); + stack.setAdapter(mTabAdapter); + mShowTabs.setPieView(stack); + PieListView menuview = new PieListView(mActivity); + menuview.setLayoutListener(new OnLayoutListener() { + @Override + public void onLayout(int ax, int ay, boolean left) { + buildMenu(); + } + }); + + mOptions.setPieView(menuview); + menuview.setAdapter(mMenuAdapter); + setClickListener(this, mBack, mRefresh, mForward, mUrl, mBookmarks, mNewTab, + mClose); + // level 1 + mPie.addItem(mBack); + mPie.addItem(mUrl); + mPie.addItem(mBookmarks); + // level 2 + mPie.addItem(mForward); + mPie.addItem(mRefresh); + mPie.addItem(mOptions); + mPie.addItem(mShowTabs); + mPie.addItem(mNewTab); + mPie.addItem(mClose); + } + + private void buildTabs() { + final List<Tab> tabs = mUiController.getTabs(); + mUi.getActiveTab().capture(); + mTabAdapter.setTabs(tabs); + PieStackView sym = (PieStackView) mShowTabs.getPieView(); + sym.setCurrent(mUiController.getTabControl().getCurrentPosition()); + } + + private void buildMenu() { + Menu menu = mUi.getMenu(); + menu.setGroupVisible(R.id.NAV_MENU, false); + mMenuAdapter.setMenu(menu); + } + + @Override + public void onClick(View v) { + Tab tab = mUiController.getTabControl().getCurrentTab(); + WebView web = tab.getWebView(); + if (mBack.getView() == v) { + tab.goBack(); + } else if (mForward.getView() == v) { + tab.goForward(); + } else if (mRefresh.getView() == v) { + if (tab.inPageLoad()) { + web.stopLoading(); + } else { + web.reload(); + } + } else if (mUrl.getView() == v) { + mUi.editUrl(false); + } else if (mBookmarks.getView() == v) { + mUiController.bookmarksOrHistoryPicker(false); + } else if (mNewTab.getView() == v) { + mUiController.openTabToHomePage(); + mUi.editUrl(false); + } else if (mClose.getView() == v) { + mUiController.closeCurrentTab(); + } + } + + private static class MenuAdapter extends BaseAdapter + implements OnClickListener { + + List<MenuItem> mItems; + UiController mUiController; + LayoutInflater mInflater; + + public MenuAdapter(Context ctx, UiController ctl) { + mUiController = ctl; + mInflater = LayoutInflater.from(ctx); + mItems = new ArrayList<MenuItem>(); + } + + public void setMenu(Menu menu) { + mItems.clear(); + for (int i = 0; i < menu.size(); i++) { + MenuItem item = menu.getItem(i); + if (item.isEnabled() && item.isVisible()) { + mItems.add(item); + } + } + notifyDataSetChanged(); + } + + @Override + public int getCount() { + return mItems.size(); + } + + @Override + public MenuItem getItem(int position) { + return mItems.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public void onClick(View v) { + if (v.getTag() != null) { + mUiController.onOptionsItemSelected((MenuItem) v.getTag()); + } + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + final MenuItem item = mItems.get(position); + View view = mInflater.inflate( + R.layout.qc_menu_item, null); + TextView label = + (TextView) view.findViewById(R.id.title); + label.setText(item.getTitle()); + label.setTag(item); + label.setOnClickListener(this); + label.setLayoutParams(new LayoutParams(240, 32)); + return label; + } + + } + +} diff --git a/src/com/android/browser/PreferenceKeys.java b/src/com/android/browser/PreferenceKeys.java index bc8d38f..1bfe389 100644 --- a/src/com/android/browser/PreferenceKeys.java +++ b/src/com/android/browser/PreferenceKeys.java @@ -28,6 +28,8 @@ public interface PreferenceKeys { static final String PREF_TEXT_SIZE = "text_size"; static final String PREF_TEXT_ZOOM = "text_zoom"; static final String PREF_FORCE_USERSCALABLE = "force_userscalable"; + static final String PREF_INVERTED = "inverted"; + static final String PREF_INVERTED_CONTRAST = "inverted_contrast"; // ---------------------- // Keys for advanced_preferences.xml @@ -37,7 +39,6 @@ public interface PreferenceKeys { static final String PREF_DEFAULT_TEXT_ENCODING = "default_text_encoding"; static final String PREF_DEFAULT_ZOOM = "default_zoom"; static final String PREF_ENABLE_JAVASCRIPT = "enable_javascript"; - static final String PREF_LOAD_IMAGES = "load_images"; static final String PREF_LOAD_PAGE = "load_page"; static final String PREF_OPEN_IN_BACKGROUND = "open_in_background"; static final String PREF_PLUGIN_STATE = "plugin_state"; @@ -49,6 +50,7 @@ public interface PreferenceKeys { // Keys for debug_preferences.xml // ---------------------- static final String PREF_ENABLE_HARDWARE_ACCEL = "enable_hardware_accel"; + static final String PREF_ENABLE_HARDWARE_ACCEL_SKIA = "enable_hardware_accel_skia"; static final String PREF_USER_AGENT = "user_agent"; // ---------------------- @@ -71,6 +73,7 @@ public interface PreferenceKeys { static final String PREF_NORMAL_LAYOUT = "normal_layout"; static final String PREF_SMALL_SCREEN = "small_screen"; static final String PREF_WIDE_VIEWPORT = "wide_viewport"; + static final String PREF_RESET_PRELOGIN = "reset_prelogin"; // ---------------------- // Keys for lab_preferences.xml @@ -94,4 +97,10 @@ public interface PreferenceKeys { static final String PREF_SAVE_FORMDATA = "save_formdata"; static final String PREF_SHOW_SECURITY_WARNINGS = "show_security_warnings"; + // ---------------------- + // Keys for bandwidth_preferences.xml + // ---------------------- + static final String PREF_DATA_PRELOAD = "preload_enabled"; + static final String PREF_LOAD_IMAGES = "load_images"; + } diff --git a/src/com/android/browser/PreloadController.java b/src/com/android/browser/PreloadController.java new file mode 100644 index 0000000..dec22ff --- /dev/null +++ b/src/com/android/browser/PreloadController.java @@ -0,0 +1,284 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.browser; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Bitmap; +import android.net.Uri; +import android.net.http.SslError; +import android.os.Message; +import android.util.Log; +import android.view.KeyEvent; +import android.view.View; +import android.webkit.HttpAuthHandler; +import android.webkit.SslErrorHandler; +import android.webkit.ValueCallback; +import android.webkit.WebChromeClient.CustomViewCallback; +import android.webkit.WebView; + +import java.util.List; + +public class PreloadController implements WebViewController { + + private static final boolean LOGD_ENABLED = false; + private static final String LOGTAG = "PreloadController"; + + private Context mContext; + + public PreloadController(Context ctx) { + mContext = ctx.getApplicationContext(); + + } + + @Override + public Context getContext() { + return mContext; + } + + @Override + public Activity getActivity() { + if (LOGD_ENABLED) Log.d(LOGTAG, "getActivity()"); + return null; + } + + @Override + public TabControl getTabControl() { + if (LOGD_ENABLED) Log.d(LOGTAG, "getTabControl()"); + return null; + } + + @Override + public WebViewFactory getWebViewFactory() { + if (LOGD_ENABLED) Log.d(LOGTAG, "getWebViewFactory()"); + return null; + } + + @Override + public void onSetWebView(Tab tab, WebView view) { + if (LOGD_ENABLED) Log.d(LOGTAG, "onSetWebView()"); + } + + @Override + public void createSubWindow(Tab tab) { + if (LOGD_ENABLED) Log.d(LOGTAG, "createSubWindow()"); + } + + @Override + public void onPageStarted(Tab tab, WebView view, Bitmap favicon) { + if (LOGD_ENABLED) Log.d(LOGTAG, "onPageStarted()"); + if (view != null) { + // Clear history of all previously visited pages. When the + // user visits a preloaded tab, the only item in the history + // list should the currently viewed page. + view.clearHistory(); + } + } + + @Override + public void onPageFinished(Tab tab) { + if (LOGD_ENABLED) Log.d(LOGTAG, "onPageFinished()"); + if (tab != null) { + final WebView view = tab.getWebView(); + if (view != null) { + // Clear history of all previously visited pages. When the + // user visits a preloaded tab. + view.clearHistory(); + } + } + } + + @Override + public void onProgressChanged(Tab tab) { + if (LOGD_ENABLED) Log.d(LOGTAG, "onProgressChanged()"); + } + + @Override + public void onReceivedTitle(Tab tab, String title) { + if (LOGD_ENABLED) Log.d(LOGTAG, "onReceivedTitle()"); + } + + @Override + public void onFavicon(Tab tab, WebView view, Bitmap icon) { + if (LOGD_ENABLED) Log.d(LOGTAG, "onFavicon()"); + } + + @Override + public boolean shouldOverrideUrlLoading(Tab tab, WebView view, String url) { + if (LOGD_ENABLED) Log.d(LOGTAG, "shouldOverrideUrlLoading()"); + return false; + } + + @Override + public boolean shouldOverrideKeyEvent(KeyEvent event) { + if (LOGD_ENABLED) Log.d(LOGTAG, "shouldOverrideKeyEvent()"); + return false; + } + + @Override + public void onUnhandledKeyEvent(KeyEvent event) { + if (LOGD_ENABLED) Log.d(LOGTAG, "onUnhandledKeyEvent()"); + } + + @Override + public void doUpdateVisitedHistory(Tab tab, boolean isReload) { + if (LOGD_ENABLED) Log.d(LOGTAG, "doUpdateVisitedHistory()"); + } + + @Override + public void getVisitedHistory(ValueCallback<String[]> callback) { + if (LOGD_ENABLED) Log.d(LOGTAG, "getVisitedHistory()"); + } + + @Override + public void onReceivedHttpAuthRequest(Tab tab, WebView view, + HttpAuthHandler handler, String host, + String realm) { + if (LOGD_ENABLED) Log.d(LOGTAG, "onReceivedHttpAuthRequest()"); + } + + @Override + public void onDownloadStart(Tab tab, String url, String useragent, + String contentDisposition, String mimeType, + long contentLength) { + if (LOGD_ENABLED) Log.d(LOGTAG, "onDownloadStart()"); + } + + @Override + public void showCustomView(Tab tab, View view, int requestedOrientation, + CustomViewCallback callback) { + if (LOGD_ENABLED) Log.d(LOGTAG, "showCustomView()"); + } + + @Override + public void hideCustomView() { + if (LOGD_ENABLED) Log.d(LOGTAG, "hideCustomView()"); + } + + @Override + public Bitmap getDefaultVideoPoster() { + if (LOGD_ENABLED) Log.d(LOGTAG, "getDefaultVideoPoster()"); + return null; + } + + @Override + public View getVideoLoadingProgressView() { + if (LOGD_ENABLED) Log.d(LOGTAG, "getVideoLoadingProgressView()"); + return null; + } + + @Override + public void showSslCertificateOnError(WebView view, + SslErrorHandler handler, SslError error) { + if (LOGD_ENABLED) Log.d(LOGTAG, "showSslCertificateOnError()"); + } + + @Override + public void onUserCanceledSsl(Tab tab) { + if (LOGD_ENABLED) Log.d(LOGTAG, "onUserCanceledSsl()"); + } + + @Override + public void activateVoiceSearchMode(String title, List<String> results) { + if (LOGD_ENABLED) Log.d(LOGTAG, "activateVoiceSearchMode()"); + } + + @Override + public void revertVoiceSearchMode(Tab tab) { + if (LOGD_ENABLED) Log.d(LOGTAG, "revertVoiceSearchMode()"); + } + + @Override + public boolean shouldShowErrorConsole() { + if (LOGD_ENABLED) Log.d(LOGTAG, "shouldShowErrorConsole()"); + return false; + } + + @Override + public void onUpdatedLockIcon(Tab tab) { + if (LOGD_ENABLED) Log.d(LOGTAG, "onUpdatedLockIcon()"); + } + + @Override + public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) { + if (LOGD_ENABLED) Log.d(LOGTAG, "openFileChooser()"); + } + + @Override + public void endActionMode() { + if (LOGD_ENABLED) Log.d(LOGTAG, "endActionMode()"); + } + + @Override + public void attachSubWindow(Tab tab) { + if (LOGD_ENABLED) Log.d(LOGTAG, "attachSubWindow()"); + } + + @Override + public void dismissSubWindow(Tab tab) { + if (LOGD_ENABLED) Log.d(LOGTAG, "dismissSubWindow()"); + } + + @Override + public Tab openTab(String url, boolean incognito, boolean setActive, boolean useCurrent) { + if (LOGD_ENABLED) Log.d(LOGTAG, "openTab()"); + return null; + } + + @Override + public Tab openTab(String url, Tab parent, boolean setActive, boolean useCurrent) { + if (LOGD_ENABLED) Log.d(LOGTAG, "openTab()"); + return null; + } + + @Override + public boolean switchToTab(Tab tab) { + if (LOGD_ENABLED) Log.d(LOGTAG, "switchToTab()"); + return false; + } + + @Override + public void closeTab(Tab tab) { + if (LOGD_ENABLED) Log.d(LOGTAG, "closeTab()"); + } + + @Override + public void setupAutoFill(Message message) { + if (LOGD_ENABLED) Log.d(LOGTAG, "setupAutoFill()"); + } + + @Override + public void bookmarkedStatusHasChanged(Tab tab) { + if (LOGD_ENABLED) Log.d(LOGTAG, "bookmarkedStatusHasChanged()"); + } + + @Override + public void showAutoLogin(Tab tab) { + if (LOGD_ENABLED) Log.d(LOGTAG, "showAutoLogin()"); + } + + @Override + public void hideAutoLogin(Tab tab) { + if (LOGD_ENABLED) Log.d(LOGTAG, "hideAutoLogin()"); + } + + @Override + public boolean shouldCaptureThumbnails() { + return false; + } + +} diff --git a/src/com/android/browser/PreloadRequestReceiver.java b/src/com/android/browser/PreloadRequestReceiver.java new file mode 100644 index 0000000..5176176 --- /dev/null +++ b/src/com/android/browser/PreloadRequestReceiver.java @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.browser; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.provider.Browser; +import android.util.Log; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +/** + * Broadcast receiver for receiving browser preload requests + */ +public class PreloadRequestReceiver extends BroadcastReceiver { + + private final static String LOGTAG = "browser.preloader"; + private final static boolean LOGD_ENABLED = com.android.browser.Browser.LOGD_ENABLED; + + private static final String ACTION_PRELOAD = "android.intent.action.PRELOAD"; + static final String EXTRA_PRELOAD_ID = "preload_id"; + static final String EXTRA_PRELOAD_DISCARD = "preload_discard"; + static final String EXTRA_SEARCHBOX_SETQUERY = "searchbox_query"; + + @Override + public void onReceive(Context context, Intent intent) { + if (LOGD_ENABLED) Log.d(LOGTAG, "received intent " + intent); + if (BrowserSettings.getInstance().isPreloadEnabled() + && intent.getAction().equals(ACTION_PRELOAD)) { + handlePreload(context, intent); + } + } + + private void handlePreload(Context context, Intent i) { + String url = UrlUtils.smartUrlFilter(i.getData()); + String id = i.getStringExtra(EXTRA_PRELOAD_ID); + Map<String, String> headers = null; + if (id == null) { + if (LOGD_ENABLED) Log.d(LOGTAG, "Preload request has no " + EXTRA_PRELOAD_ID); + return; + } + if (i.getBooleanExtra(EXTRA_PRELOAD_DISCARD, false)) { + if (LOGD_ENABLED) Log.d(LOGTAG, "Got " + id + " preload discard request"); + Preloader.getInstance().discardPreload(id); + } else { + if (LOGD_ENABLED) Log.d(LOGTAG, "Got " + id + " preload request for " + url); + if (url != null && url.startsWith("http")) { + final Bundle pairs = i.getBundleExtra(Browser.EXTRA_HEADERS); + if (pairs != null && !pairs.isEmpty()) { + Iterator<String> iter = pairs.keySet().iterator(); + headers = new HashMap<String, String>(); + while (iter.hasNext()) { + String key = iter.next(); + headers.put(key, pairs.getString(key)); + } + } + } + String sbQuery = i.getStringExtra(EXTRA_SEARCHBOX_SETQUERY); + if (url != null) { + if (LOGD_ENABLED){ + Log.d(LOGTAG, "Preload request(" + id + ", " + url + ", " + + headers + ", " + sbQuery + ")"); + } + Preloader.getInstance().handlePreloadRequest(id, url, headers, sbQuery); + } + } + } + +} diff --git a/src/com/android/browser/PreloadedTabControl.java b/src/com/android/browser/PreloadedTabControl.java new file mode 100644 index 0000000..824c00b --- /dev/null +++ b/src/com/android/browser/PreloadedTabControl.java @@ -0,0 +1,123 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.browser; + +import android.net.Uri; +import android.text.TextUtils; +import android.util.Log; +import android.webkit.SearchBox; + +import java.util.Map; + +/** + * Class to manage the controlling of preloaded tab. + */ +public class PreloadedTabControl { + private static final boolean LOGD_ENABLED = com.android.browser.Browser.LOGD_ENABLED; + private static final String LOGTAG = "PreloadedTabControl"; + + final Tab mTab; + private String mLastQuery; + private boolean mDestroyed; + + public PreloadedTabControl(Tab t) { + if (LOGD_ENABLED) Log.d(LOGTAG, "PreloadedTabControl.<init>"); + mTab = t; + } + + private void maybeSetQuery(final String query, SearchBox sb) { + if (!TextUtils.equals(mLastQuery, query)) { + if (sb != null) { + if (LOGD_ENABLED) Log.d(LOGTAG, "Changing searchbox query to " + query); + sb.setVerbatim(true); + sb.setQuery(query); + sb.onchange(new SearchBox.SearchBoxListener() { + @Override + public void onChangeComplete(boolean called) { + if (mDestroyed) return; + if (LOGD_ENABLED) Log.d(LOGTAG, "Changed searchbox query: " + called); + if (called) { + mLastQuery = query; + } + } + }); + } else { + if (LOGD_ENABLED) Log.d(LOGTAG, "Cannot set query: no searchbox interface"); + } + } + } + + public void setQuery(String query) { + maybeSetQuery(query, mTab.getWebView().getSearchBox()); + } + + public boolean searchBoxSubmit(final String query, + final String fallbackUrl, final Map<String, String> fallbackHeaders) { + final SearchBox sb = mTab.getWebView().getSearchBox(); + if (sb == null) { + // no searchbox, cannot submit. Fallback to regular tab creation + if (LOGD_ENABLED) Log.d(LOGTAG, "No searchbox, cannot submit query"); + return false; + } + maybeSetQuery(query, sb); + if (LOGD_ENABLED) Log.d(LOGTAG, "Submitting query " + query); + sb.onsubmit(new SearchBox.SearchBoxListener() { + @Override + public void onSubmitComplete(boolean called) { + if (mDestroyed) return; + if (LOGD_ENABLED) Log.d(LOGTAG, "Query submitted: " + called); + if (!called) { + if (LOGD_ENABLED) Log.d(LOGTAG, "Query not submitted; falling back"); + loadUrl(fallbackUrl, fallbackHeaders); + // make sure that the failed, preloaded URL is cleared from the back stack + mTab.clearBackStackWhenItemAdded(fallbackUrl); + } + }}); + return true; + } + + public void loadUrlIfChanged(String url, Map<String, String> headers) { + String currentUrl = mTab.getUrl(); + if (!TextUtils.isEmpty(currentUrl)) { + try { + // remove fragment: + currentUrl = Uri.parse(currentUrl).buildUpon().fragment(null).build().toString(); + } catch (UnsupportedOperationException e) { + // carry on + } + } + if (LOGD_ENABLED) Log.d(LOGTAG, "loadUrlIfChanged\nnew: " + url + "\nold: " +currentUrl); + if (!TextUtils.equals(url, currentUrl)) { + loadUrl(url, headers); + } + } + + public void loadUrl(String url, Map<String, String> headers) { + if (LOGD_ENABLED) Log.d(LOGTAG, "Preloading " + url); + mTab.loadUrl(url, headers); + } + + public void destroy() { + if (LOGD_ENABLED) Log.d(LOGTAG, "PreloadedTabControl.destroy"); + mDestroyed = true; + mTab.destroy(); + } + + public Tab getTab() { + return mTab; + } + +} diff --git a/src/com/android/browser/Preloader.java b/src/com/android/browser/Preloader.java new file mode 100644 index 0000000..3d30c96 --- /dev/null +++ b/src/com/android/browser/Preloader.java @@ -0,0 +1,169 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.browser; + +import android.content.Context; +import android.os.Handler; +import android.os.Looper; +import android.util.Log; +import android.webkit.WebView; + +import java.util.Map; + +/** + * Singleton class for handling preload requests. + */ +public class Preloader { + + private final static String LOGTAG = "browser.preloader"; + private final static boolean LOGD_ENABLED = com.android.browser.Browser.LOGD_ENABLED; + + private static final int PRERENDER_TIMEOUT_MILLIS = 30 * 1000; // 30s + + private static Preloader sInstance; + + private final Context mContext; + private final Handler mHandler; + private final BrowserWebViewFactory mFactory; + private volatile PreloaderSession mSession; + + public static void initialize(Context context) { + sInstance = new Preloader(context); + } + + public static Preloader getInstance() { + return sInstance; + } + + private Preloader(Context context) { + mContext = context.getApplicationContext(); + mHandler = new Handler(Looper.getMainLooper()); + mSession = null; + mFactory = new BrowserWebViewFactory(context); + + } + + private PreloaderSession getSession(String id) { + if (mSession == null) { + if (LOGD_ENABLED) Log.d(LOGTAG, "Create new preload session " + id); + mSession = new PreloaderSession(id); + WebViewTimersControl.getInstance().onPrerenderStart( + mSession.getWebView()); + return mSession; + } else if (mSession.mId.equals(id)) { + if (LOGD_ENABLED) Log.d(LOGTAG, "Returning existing preload session " + id); + return mSession; + } + + if (LOGD_ENABLED) Log.d(LOGTAG, "Existing session in progress : " + mSession.mId + + " returning null."); + return null; + } + + private PreloaderSession takeSession(String id) { + PreloaderSession s = null; + if (mSession != null && mSession.mId.equals(id)) { + s = mSession; + mSession = null; + } + + if (s != null) { + s.cancelTimeout(); + } + + return s; + } + + public void handlePreloadRequest(String id, String url, Map<String, String> headers, + String searchBoxQuery) { + PreloaderSession s = getSession(id); + if (s == null) { + if (LOGD_ENABLED) Log.d(LOGTAG, "Discarding preload request, existing" + + " session in progress"); + return; + } + + s.touch(); // reset timer + PreloadedTabControl tab = s.getTabControl(); + if (searchBoxQuery != null) { + tab.loadUrlIfChanged(url, headers); + tab.setQuery(searchBoxQuery); + } else { + tab.loadUrl(url, headers); + } + } + + public void discardPreload(String id) { + PreloaderSession s = takeSession(id); + if (s != null) { + if (LOGD_ENABLED) Log.d(LOGTAG, "Discard preload session " + id); + WebViewTimersControl.getInstance().onPrerenderDone(s == null ? null : s.getWebView()); + PreloadedTabControl t = s.getTabControl(); + t.destroy(); + } else { + if (LOGD_ENABLED) Log.d(LOGTAG, "Ignored discard request " + id); + } + } + + /** + * Return a preloaded tab, and remove it from the preloader. This is used when the + * view is about to be displayed. + */ + public PreloadedTabControl getPreloadedTab(String id) { + PreloaderSession s = takeSession(id); + if (LOGD_ENABLED) Log.d(LOGTAG, "Showing preload session " + id + "=" + s); + return s == null ? null : s.getTabControl(); + } + + private class PreloaderSession { + private final String mId; + private final PreloadedTabControl mTabControl; + + private final Runnable mTimeoutTask = new Runnable(){ + @Override + public void run() { + if (LOGD_ENABLED) Log.d(LOGTAG, "Preload session timeout " + mId); + discardPreload(mId); + }}; + + public PreloaderSession(String id) { + mId = id; + mTabControl = new PreloadedTabControl( + new Tab(new PreloadController(mContext), mFactory.createWebView(false))); + touch(); + } + + public void cancelTimeout() { + mHandler.removeCallbacks(mTimeoutTask); + } + + public void touch() { + cancelTimeout(); + mHandler.postDelayed(mTimeoutTask, PRERENDER_TIMEOUT_MILLIS); + } + + public PreloadedTabControl getTabControl() { + return mTabControl; + } + + public WebView getWebView() { + Tab t = mTabControl.getTab(); + return t == null? null : t.getWebView(); + } + + } + +} diff --git a/src/com/android/browser/ShortcutActivity.java b/src/com/android/browser/ShortcutActivity.java index af1788d..134bf23 100644 --- a/src/com/android/browser/ShortcutActivity.java +++ b/src/com/android/browser/ShortcutActivity.java @@ -19,7 +19,6 @@ package com.android.browser; import android.app.Activity; import android.content.Intent; import android.database.Cursor; -import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; @@ -59,7 +58,7 @@ public class ShortcutActivity extends Activity } @Override - public boolean onOpenInNewWindow(Cursor c) { + public boolean onOpenInNewWindow(String... urls) { return false; } diff --git a/src/com/android/browser/SnapshotBar.java b/src/com/android/browser/SnapshotBar.java new file mode 100644 index 0000000..ba0bf98 --- /dev/null +++ b/src/com/android/browser/SnapshotBar.java @@ -0,0 +1,239 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.browser; + +import android.content.Context; +import android.graphics.Bitmap; +import android.os.Handler; +import android.os.Message; +import android.text.TextUtils; +import android.util.AttributeSet; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.Menu; +import android.view.MenuItem; +import android.view.ViewConfiguration; +import android.view.ViewPropertyAnimator; +import android.webkit.WebView; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.PopupMenu; +import android.widget.PopupMenu.OnMenuItemClickListener; +import android.widget.TextView; + +import java.text.DateFormat; +import java.util.Date; + +public class SnapshotBar extends LinearLayout implements OnClickListener, + OnMenuItemClickListener { + + private static final int MSG_SHOW_TITLE = 1; + private static final long DURATION_SHOW_DATE = BaseUi.HIDE_TITLEBAR_DELAY; + + private ImageView mFavicon; + private View mGoLive; + private TextView mDate; + private TextView mTitle; + private View mBookmarks; + private TitleBar mTitleBar; + private View mTabSwitcher; + private View mOverflowMenu; + private View mToggleContainer; + private boolean mIsAnimating; + private ViewPropertyAnimator mTitleAnimator, mDateAnimator; + private float mAnimRadius = 20f; + private View mDateContainer; + + public SnapshotBar(Context context) { + super(context); + } + + public SnapshotBar(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public SnapshotBar(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + public void setTitleBar(TitleBar titleBar) { + mTitleBar = titleBar; + setFavicon(null); + } + + private Handler mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + if (msg.what == MSG_SHOW_TITLE) { + mIsAnimating = false; + showTitle(); + mTitleBar.getUi().showTitleBarForDuration(); + } + } + }; + + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + mGoLive = mFavicon = (ImageView) findViewById(R.id.favicon); + if (mGoLive == null) { + mGoLive = findViewById(R.id.date_icon); + } + mDate = (TextView) findViewById(R.id.date); + mTitle = (TextView) findViewById(R.id.title); + mBookmarks = findViewById(R.id.all_btn); + mTabSwitcher = findViewById(R.id.tab_switcher); + mOverflowMenu = findViewById(R.id.more); + mToggleContainer = findViewById(R.id.toggle_container); + mDateContainer = findViewById(R.id.date_container); + + if (mBookmarks != null) { + mBookmarks.setOnClickListener(this); + } + if (mTabSwitcher != null) { + mTabSwitcher.setOnClickListener(this); + } + if (mOverflowMenu != null) { + mOverflowMenu.setOnClickListener(this); + boolean showMenu = !ViewConfiguration.get(getContext()) + .hasPermanentMenuKey(); + mOverflowMenu.setVisibility(showMenu ? VISIBLE : GONE); + } + if (mToggleContainer != null) { + mToggleContainer.setOnClickListener(this); + resetAnimation(); + } + mGoLive.setOnClickListener(this); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + super.onLayout(changed, l, t, r, b); + if (mToggleContainer != null) { + mAnimRadius = mToggleContainer.getHeight() / 2f; + } + } + + void resetAnimation() { + if (mToggleContainer == null) { + // No animation needed/used + return; + } + if (mTitleAnimator != null) { + mTitleAnimator.cancel(); + mTitleAnimator = null; + } + if (mDateAnimator != null) { + mDateAnimator.cancel(); + mDateAnimator = null; + } + mIsAnimating = false; + mHandler.removeMessages(MSG_SHOW_TITLE); + mTitle.setAlpha(1f); + mTitle.setTranslationY(0f); + mTitle.setRotationX(0f); + mDateContainer.setAlpha(0f); + mDateContainer.setTranslationY(-mAnimRadius); + mDateContainer.setRotationX(90f); + } + + private void showDate() { + mTitleAnimator = mTitle.animate() + .alpha(0f) + .translationY(mAnimRadius) + .rotationX(-90f); + mDateAnimator = mDateContainer.animate() + .alpha(1f) + .translationY(0f) + .rotationX(0f); + } + + private void showTitle() { + mTitleAnimator = mTitle.animate() + .alpha(1f) + .translationY(0f) + .rotationX(0f); + mDateAnimator = mDateContainer.animate() + .alpha(0f) + .translationY(-mAnimRadius) + .rotationX(90f); + } + + @Override + public void onClick(View v) { + if (mBookmarks == v) { + mTitleBar.getUiController().bookmarksOrHistoryPicker(false); + } else if (mGoLive == v) { + PopupMenu popup = new PopupMenu(mContext, mGoLive); + Menu menu = popup.getMenu(); + popup.getMenuInflater().inflate(R.menu.snapshot_go_live, menu); + popup.setOnMenuItemClickListener(this); + popup.show(); + } else if (mTabSwitcher == v) { + ((PhoneUi) mTitleBar.getUi()).toggleNavScreen(); + } else if (mOverflowMenu == v) { + NavigationBarBase navBar = mTitleBar.getNavigationBar(); + if (navBar instanceof NavigationBarPhone) { + ((NavigationBarPhone)navBar).showMenu(mOverflowMenu); + } + } else if (mToggleContainer == v && !mIsAnimating) { + mIsAnimating = true; + showDate(); + mTitleBar.getUi().showTitleBar(); + Message m = mHandler.obtainMessage(MSG_SHOW_TITLE); + mHandler.sendMessageDelayed(m, DURATION_SHOW_DATE); + } + } + + @Override + public boolean onMenuItemClick(MenuItem item) { + switch (item.getItemId()) { + case R.id.snapshot_go_live: + goLive(); + return true; + } + return false; + } + + private void goLive() { + Tab t = mTitleBar.getUi().getActiveTab(); + t.loadUrl(t.getUrl(), null); + } + + public void onTabDataChanged(Tab tab) { + if (!tab.isSnapshot()) return; + SnapshotTab snapshot = (SnapshotTab) tab; + DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG); + mDate.setText(dateFormat.format(new Date(snapshot.getDateCreated()))); + String title = snapshot.getTitle(); + if (TextUtils.isEmpty(title)) { + title = UrlUtils.stripUrl(snapshot.getUrl()); + } + mTitle.setText(title); + setFavicon(tab.getFavicon()); + resetAnimation(); + } + + public void setFavicon(Bitmap icon) { + if (mFavicon == null) return; + mFavicon.setImageDrawable(mTitleBar.getUi().getFaviconDrawable(icon)); + } + + public boolean isAnimating() { + return mIsAnimating; + } + +} diff --git a/src/com/android/browser/SnapshotTab.java b/src/com/android/browser/SnapshotTab.java index 52a5c5f..bb4c240 100644 --- a/src/com/android/browser/SnapshotTab.java +++ b/src/com/android/browser/SnapshotTab.java @@ -20,35 +20,36 @@ import android.content.ContentUris; import android.content.ContentValues; import android.database.Cursor; import android.graphics.BitmapFactory; -import android.graphics.Color; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; +import android.util.Log; import android.webkit.WebView; -import com.android.browser.provider.BrowserProvider2.Snapshots; +import com.android.browser.provider.SnapshotProvider.Snapshots; import java.io.ByteArrayInputStream; +import java.util.Map; +import java.util.zip.GZIPInputStream; public class SnapshotTab extends Tab { + private static final String LOGTAG = "SnapshotTab"; + private long mSnapshotId; private LoadData mLoadTask; private WebViewFactory mWebViewFactory; - // TODO: Support non-persistent webview's on phone - private boolean mPersistentWebview; private int mBackgroundColor; + private long mDateCreated; + private boolean mIsLive; public SnapshotTab(WebViewController wvcontroller, long snapshotId) { - super(wvcontroller, null); + super(wvcontroller, null, null); mSnapshotId = snapshotId; mWebViewFactory = mWebViewController.getWebViewFactory(); - mPersistentWebview = !BrowserActivity.isTablet(wvcontroller.getActivity()); - if (mPersistentWebview) { - WebView web = mWebViewFactory.createWebView(false); - setWebView(web); - } + WebView web = mWebViewFactory.createWebView(false); + setWebView(web); loadData(); } @@ -69,14 +70,11 @@ public class SnapshotTab extends Tab { void putInBackground() { if (getWebView() == null) return; super.putInBackground(); - if (!mPersistentWebview) { - super.destroy(); - } } void loadData() { if (mLoadTask == null) { - mLoadTask = new LoadData(this, mActivity.getContentResolver()); + mLoadTask = new LoadData(this, mContext.getContentResolver()); mLoadTask.execute(); } } @@ -88,7 +86,7 @@ public class SnapshotTab extends Tab { @Override public boolean isSnapshot() { - return true; + return !mIsLive; } public long getSnapshotId() { @@ -101,8 +99,42 @@ public class SnapshotTab extends Tab { } @Override - boolean saveState() { - return false; + public Bundle saveState() { + return null; + } + + public long getDateCreated() { + return mDateCreated; + } + + @Override + public void loadUrl(String url, Map<String, String> headers) { + if (!mIsLive) { + mIsLive = true; + getWebView().clearViewState(); + } + super.loadUrl(url, headers); + } + + @Override + public boolean canGoBack() { + return super.canGoBack() || mIsLive; + } + + @Override + public boolean canGoForward() { + return mIsLive && super.canGoForward(); + } + + @Override + public void goBack() { + if (super.canGoBack()) { + super.goBack(); + } else { + mIsLive = false; + getWebView().stopLoading(); + loadData(); + } } static class LoadData extends AsyncTask<Void, Void, Cursor> { @@ -114,6 +146,7 @@ public class SnapshotTab extends Tab { Snapshots.FAVICON, // 3 Snapshots.VIEWSTATE, // 4 Snapshots.BACKGROUND, // 5 + Snapshots.DATE_CREATED, // 6 }; private SnapshotTab mTab; @@ -145,10 +178,16 @@ public class SnapshotTab extends Tab { WebView web = mTab.getWebView(); if (web != null) { byte[] data = result.getBlob(4); - ByteArrayInputStream stream = new ByteArrayInputStream(data); - web.loadViewState(stream); + ByteArrayInputStream bis = new ByteArrayInputStream(data); + try { + GZIPInputStream stream = new GZIPInputStream(bis); + web.loadViewState(stream); + } catch (Exception e) { + Log.w(LOGTAG, "Failed to load view state", e); + } } mTab.mBackgroundColor = result.getInt(5); + mTab.mDateCreated = result.getLong(6); mTab.mWebViewController.onPageFinished(mTab); } } finally { @@ -160,4 +199,15 @@ public class SnapshotTab extends Tab { } } + + @Override + protected void persistThumbnail() { + // Nope + } + + @Override + protected void deleteThumbnail() { + // Nope + } + } diff --git a/src/com/android/browser/SuggestionsAdapter.java b/src/com/android/browser/SuggestionsAdapter.java index 9a099cb..e1511b9 100644 --- a/src/com/android/browser/SuggestionsAdapter.java +++ b/src/com/android/browser/SuggestionsAdapter.java @@ -17,6 +17,7 @@ package com.android.browser; import com.android.browser.provider.BrowserProvider2; +import com.android.browser.provider.BrowserProvider2.OmniboxSuggestions; import com.android.browser.search.SearchEngine; import android.app.SearchManager; @@ -53,9 +54,12 @@ public class SuggestionsAdapter extends BaseAdapter implements Filterable, public static final int TYPE_SUGGEST = 4; public static final int TYPE_VOICE_SEARCH = 5; - private static final String[] COMBINED_PROJECTION = - {BrowserContract.Combined._ID, BrowserContract.Combined.TITLE, - BrowserContract.Combined.URL, BrowserContract.Combined.IS_BOOKMARK}; + private static final String[] COMBINED_PROJECTION = { + OmniboxSuggestions._ID, + OmniboxSuggestions.TITLE, + OmniboxSuggestions.URL, + OmniboxSuggestions.IS_BOOKMARK + }; private static final String COMBINED_SELECTION = "(url LIKE ? OR url LIKE ? OR url LIKE ? OR url LIKE ? OR title LIKE ?)"; @@ -178,9 +182,11 @@ public class SuggestionsAdapter extends BaseAdapter implements Filterable, tv1.setText(Html.fromHtml(item.title)); if (TextUtils.isEmpty(item.url)) { tv2.setVisibility(View.GONE); + tv1.setMaxLines(2); } else { tv2.setVisibility(View.VISIBLE); tv2.setText(item.url); + tv1.setMaxLines(1); } int id = -1; switch (item.type) { @@ -470,18 +476,14 @@ public class SuggestionsAdapter extends BaseAdapter implements Filterable, args[4] = like; selection = COMBINED_SELECTION; } - Uri.Builder ub = BrowserContract.Combined.CONTENT_URI.buildUpon(); + Uri.Builder ub = OmniboxSuggestions.CONTENT_URI.buildUpon(); ub.appendQueryParameter(BrowserContract.PARAM_LIMIT, Integer.toString(Math.max(mLinesLandscape, mLinesPortrait))); ub.appendQueryParameter(BrowserProvider2.PARAM_GROUP_BY, - BrowserContract.Combined.URL); + OmniboxSuggestions.URL); mCursor = mContext.getContentResolver().query(ub.build(), COMBINED_PROJECTION, - selection, - (constraint != null) ? args : null, - BrowserContract.Combined.IS_BOOKMARK + " DESC, " + - BrowserContract.Combined.VISITS + " DESC, " + - BrowserContract.Combined.DATE_LAST_VISITED + " DESC"); + selection, (constraint != null) ? args : null, null); if (mCursor != null) { mCursor.moveToFirst(); } diff --git a/src/com/android/browser/SystemAllowGeolocationOrigins.java b/src/com/android/browser/SystemAllowGeolocationOrigins.java index b53611f..e0759ad 100644 --- a/src/com/android/browser/SystemAllowGeolocationOrigins.java +++ b/src/com/android/browser/SystemAllowGeolocationOrigins.java @@ -48,7 +48,7 @@ class SystemAllowGeolocationOrigins { private final SettingObserver mSettingObserver; public SystemAllowGeolocationOrigins(Context context) { - mContext = context; + mContext = context.getApplicationContext(); mSettingObserver = new SettingObserver(); } @@ -73,49 +73,48 @@ class SystemAllowGeolocationOrigins { } void maybeApplySettingAsync() { - new AsyncTask<Void,Void,Void>() { - @Override - protected Void doInBackground(Void... params) { - maybeApplySetting(); - return null; - } - }.execute(); + BackgroundHandler.execute(mMaybeApplySetting); } /** * Checks to see if the system setting has changed and if so, * updates the Geolocation permissions accordingly. */ - private void maybeApplySetting() { - // Get the new value - String newSetting = getSystemSetting(); - - // Get the last read value - SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext); - String lastReadSetting = - preferences.getString(LAST_READ_ALLOW_GEOLOCATION_ORIGINS, ""); - - // If the new value is the same as the last one we read, we're done. - if (TextUtils.equals(lastReadSetting, newSetting)) { - return; - } + private Runnable mMaybeApplySetting = new Runnable() { - // Save the new value as the last read value - preferences.edit() - .putString(LAST_READ_ALLOW_GEOLOCATION_ORIGINS, newSetting) - .apply(); + @Override + public void run() { + // Get the new value + String newSetting = getSystemSetting(); + + // Get the last read value + SharedPreferences preferences = BrowserSettings.getInstance() + .getPreferences(); + String lastReadSetting = + preferences.getString(LAST_READ_ALLOW_GEOLOCATION_ORIGINS, ""); + + // If the new value is the same as the last one we read, we're done. + if (TextUtils.equals(lastReadSetting, newSetting)) { + return; + } - Set<String> oldOrigins = parseAllowGeolocationOrigins(lastReadSetting); - Set<String> newOrigins = parseAllowGeolocationOrigins(newSetting); - Set<String> addedOrigins = setMinus(newOrigins, oldOrigins); - Set<String> removedOrigins = setMinus(oldOrigins, newOrigins); + // Save the new value as the last read value + preferences.edit() + .putString(LAST_READ_ALLOW_GEOLOCATION_ORIGINS, newSetting) + .apply(); - // Remove the origins in the last read value - removeOrigins(removedOrigins); + Set<String> oldOrigins = parseAllowGeolocationOrigins(lastReadSetting); + Set<String> newOrigins = parseAllowGeolocationOrigins(newSetting); + Set<String> addedOrigins = setMinus(newOrigins, oldOrigins); + Set<String> removedOrigins = setMinus(oldOrigins, newOrigins); - // Add the origins in the new value - addOrigins(addedOrigins); - } + // Remove the origins in the last read value + removeOrigins(removedOrigins); + + // Add the origins in the new value + addOrigins(addedOrigins); + } + }; /** * Parses the value of the default geolocation permissions setting. diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java index c78b562..39bf49c 100644 --- a/src/com/android/browser/Tab.java +++ b/src/com/android/browser/Tab.java @@ -20,16 +20,22 @@ import android.app.Activity; import android.app.AlertDialog; import android.app.SearchManager; import android.content.ContentResolver; +import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.content.Intent; +import android.database.Cursor; import android.graphics.Bitmap; +import android.graphics.Bitmap.CompressFormat; import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Picture; import android.net.Uri; import android.net.http.SslError; import android.os.Bundle; +import android.os.Handler; import android.os.Message; import android.os.SystemClock; import android.security.KeyChain; @@ -49,13 +55,13 @@ import android.webkit.HttpAuthHandler; import android.webkit.SslErrorHandler; import android.webkit.URLUtil; import android.webkit.ValueCallback; -import android.webkit.WebBackForwardList; import android.webkit.WebBackForwardListClient; import android.webkit.WebChromeClient; import android.webkit.WebHistoryItem; import android.webkit.WebResourceResponse; import android.webkit.WebStorage; import android.webkit.WebView; +import android.webkit.WebView.PictureListener; import android.webkit.WebViewClient; import android.widget.CheckBox; import android.widget.LinearLayout; @@ -63,36 +69,45 @@ import android.widget.TextView; import android.widget.Toast; import com.android.browser.homepages.HomeProvider; -import com.android.browser.provider.BrowserProvider2.Snapshots; +import com.android.browser.provider.BrowserProvider2.Thumbnails; +import com.android.browser.provider.SnapshotProvider.Snapshots; import com.android.common.speech.LoggingEvents; import java.io.ByteArrayOutputStream; +import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.Map; import java.util.Vector; +import java.util.zip.GZIPOutputStream; /** * Class for maintaining Tabs with a main WebView and a subwindow. */ -class Tab { +class Tab implements PictureListener { // Log Tag private static final String LOGTAG = "Tab"; + private static final boolean LOGD_ENABLED = com.android.browser.Browser.LOGD_ENABLED; // Special case the logtag for messages for the Console to make it easier to // filter them and match the logtag used for these messages in older versions // of the browser. private static final String CONSOLE_LOGTAG = "browser"; + private static final int MSG_CAPTURE = 42; + private static final int CAPTURE_DELAY = 500; + + private static Bitmap sDefaultFavicon; + public enum LockIcon { LOCK_ICON_UNSECURE, LOCK_ICON_SECURE, LOCK_ICON_MIXED, } - Activity mActivity; + Context mContext; protected WebViewController mWebViewController; // The tab ID @@ -130,6 +145,8 @@ class Tab { // Application identifier used to find tabs that another application wants // to reuse. private String mAppId; + // flag to indicate if tab should be closed on back + private boolean mCloseOnBack; // Keep the original url around to avoid killing the old WebView if the url // has not changed. // Error console for the tab @@ -146,12 +163,29 @@ class Tab { // AsyncTask for downloading touch icons DownloadTouchIcon mTouchIconLoader; - private Bitmap mScreenshot; private BrowserSettings mSettings; + private int mCaptureWidth; + private int mCaptureHeight; + private Bitmap mCapture; + private Handler mHandler; + + /** + * See {@link #clearBackStackWhenItemAdded(String)}. + */ + private String mClearHistoryMatchUrl; + + private static synchronized Bitmap getDefaultFavicon(Context context) { + if (sDefaultFavicon == null) { + sDefaultFavicon = BitmapFactory.decodeResource( + context.getResources(), R.drawable.app_web_browser_sm); + } + return sDefaultFavicon; + } // All the state needed for a page protected static class PageState { String mUrl; + String mOriginalUrl; String mTitle; LockIcon mLockIcon; Bitmap mFavicon; @@ -159,32 +193,27 @@ class Tab { PageState(Context c, boolean incognito) { if (incognito) { - mUrl = "browser:incognito"; + mOriginalUrl = mUrl = "browser:incognito"; mTitle = c.getString(R.string.new_incognito_tab); } else { - mUrl = ""; + mOriginalUrl = mUrl = ""; mTitle = c.getString(R.string.new_tab); } - mFavicon = BitmapFactory.decodeResource( - c.getResources(), R.drawable.app_web_browser_sm); + mFavicon = null; mLockIcon = LockIcon.LOCK_ICON_UNSECURE; } PageState(Context c, boolean incognito, String url, Bitmap favicon) { - mUrl = url; + mOriginalUrl = mUrl = url; mTitle = null; if (URLUtil.isHttpsUrl(url)) { mLockIcon = LockIcon.LOCK_ICON_SECURE; } else { mLockIcon = LockIcon.LOCK_ICON_UNSECURE; } - if (favicon != null) { - mFavicon = favicon; - } else { - mFavicon = BitmapFactory.decodeResource( - c.getResources(), R.drawable.app_web_browser_sm); - } + mFavicon = favicon; } + } // The current/loading page's state @@ -197,8 +226,8 @@ class Tab { static final String PARENTTAB = "parentTab"; static final String APPID = "appid"; static final String INCOGNITO = "privateBrowsingEnabled"; - static final String SCREENSHOT = "screenshot"; static final String USERAGENT = "useragent"; + static final String CLOSEFLAG = "closeOnBack"; // ------------------------------------------------------------------------- @@ -303,7 +332,7 @@ class Tab { logIntent.putExtra( LoggingEvents.VoiceSearch.EXTRA_N_BEST_CHOOSE_INDEX, index); - mActivity.sendBroadcast(logIntent); + mContext.sendBroadcast(logIntent); } if (mVoiceSearchData.mVoiceSearchIntent != null) { // Copy the Intent, so that each history item will have its own @@ -486,7 +515,7 @@ class Tab { private void showError(ErrorDialog errDialog) { if (mInForeground) { - AlertDialog d = new AlertDialog.Builder(mActivity) + AlertDialog d = new AlertDialog.Builder(mContext) .setTitle(errDialog.mTitle) .setMessage(errDialog.mDescription) .setPositiveButton(R.string.ok, null) @@ -507,7 +536,7 @@ class Tab { public void onPageStarted(WebView view, String url, Bitmap favicon) { mInPageLoad = true; mPageLoadProgress = 0; - mCurrentState = new PageState(mActivity, + mCurrentState = new PageState(mContext, view.isPrivateBrowsingEnabled(), url, favicon); mLoadStartTime = SystemClock.uptimeMillis(); if (mVoiceSearchData != null @@ -515,7 +544,7 @@ class Tab { if (mVoiceSearchData.mSourceIsGoogle) { Intent i = new Intent(LoggingEvents.ACTION_LOG_EVENT); i.putExtra(LoggingEvents.EXTRA_FLUSH, true); - mActivity.sendBroadcast(i); + mContext.sendBroadcast(i); } revertVoiceSearchMode(); } @@ -552,23 +581,17 @@ class Tab { @Override public void onPageFinished(WebView view, String url) { + if (!mInPageLoad) { + // In page navigation links (www.something.com#footer) will + // trigger an onPageFinished which we don't care about. + return; + } if (!isPrivateBrowsingEnabled()) { LogTag.logPageFinishedLoading( url, SystemClock.uptimeMillis() - mLoadStartTime); } mInPageLoad = false; - // Sync state (in case of stop/timeout) - mCurrentState.mUrl = view.getUrl(); - if (mCurrentState.mUrl == null) { - mCurrentState.mUrl = url != null ? url : ""; - } - mCurrentState.mTitle = view.getTitle(); - mCurrentState.mFavicon = view.getFavicon(); - if (!URLUtil.isHttpsUrl(mCurrentState.mUrl)) { - // In case we stop when loading an HTTPS page from an HTTP page - // but before a provisional load occurred - mCurrentState.mLockIcon = LockIcon.LOCK_ICON_UNSECURE; - } + syncCurrentState(view, url); mWebViewController.onPageFinished(Tab.this); } @@ -585,7 +608,7 @@ class Tab { Intent logIntent = new Intent(LoggingEvents.ACTION_LOG_EVENT); logIntent.putExtra(LoggingEvents.EXTRA_EVENT, LoggingEvents.VoiceSearch.RESULT_CLICKED); - mActivity.sendBroadcast(logIntent); + mContext.sendBroadcast(logIntent); } if (mInForeground) { return mWebViewController.shouldOverrideUrlLoading(Tab.this, @@ -657,7 +680,7 @@ class Tab { } mDontResend = dontResend; mResend = resend; - new AlertDialog.Builder(mActivity).setTitle( + new AlertDialog.Builder(mContext).setTitle( R.string.browserFrameFormResubmitLabel).setMessage( R.string.browserFrameFormResubmitMessage) .setPositiveButton(R.string.ok, @@ -716,7 +739,7 @@ class Tab { } if (mSettings.showSecurityWarnings()) { final LayoutInflater factory = - LayoutInflater.from(mActivity); + LayoutInflater.from(mContext); final View warningsView = factory.inflate(R.layout.ssl_warnings, null); final LinearLayout placeholder = @@ -754,7 +777,7 @@ class Tab { placeholder.addView(ll); } - new AlertDialog.Builder(mActivity).setTitle( + new AlertDialog.Builder(mContext).setTitle( R.string.security_warning).setIcon( android.R.drawable.ic_dialog_alert).setView( warningsView).setPositiveButton(R.string.ssl_continue, @@ -815,13 +838,14 @@ class Tab { port = -1; } } - KeyChain.choosePrivateKeyAlias(mActivity, new KeyChainAliasCallback() { + KeyChain.choosePrivateKeyAlias( + mWebViewController.getActivity(), new KeyChainAliasCallback() { @Override public void alias(String alias) { if (alias == null) { handler.cancel(); return; } - new KeyChainLookup(mActivity, handler, alias).execute(); + new KeyChainLookup(mContext, handler, alias).execute(); } }, null, null, host, port, null); } @@ -844,7 +868,7 @@ class Tab { public WebResourceResponse shouldInterceptRequest(WebView view, String url) { WebResourceResponse res = HomeProvider.shouldInterceptRequest( - mActivity, url); + mContext, url); return res; } @@ -867,12 +891,28 @@ class Tab { @Override public void onReceivedLoginRequest(WebView view, String realm, String account, String args) { - new DeviceAccountLogin(mActivity, view, Tab.this, mWebViewController) + new DeviceAccountLogin(mWebViewController.getActivity(), view, Tab.this, mWebViewController) .handleLogin(realm, account, args); } }; + private void syncCurrentState(WebView view, String url) { + // Sync state (in case of stop/timeout) + mCurrentState.mUrl = view.getUrl(); + if (mCurrentState.mUrl == null) { + mCurrentState.mUrl = url != null ? url : ""; + } + mCurrentState.mOriginalUrl = view.getOriginalUrl(); + mCurrentState.mTitle = view.getTitle(); + mCurrentState.mFavicon = view.getFavicon(); + if (!URLUtil.isHttpsUrl(mCurrentState.mUrl)) { + // In case we stop when loading an HTTPS page from an HTTP page + // but before a provisional load occurred + mCurrentState.mLockIcon = LockIcon.LOCK_ICON_UNSECURE; + } + } + // Called by DeviceAccountLogin when the Tab needs to have the auto-login UI // displayed. void setDeviceAccountLogin(DeviceAccountLogin login) { @@ -914,7 +954,7 @@ class Tab { } // Short-circuit if we can't create any more tabs or sub windows. if (dialog && mSubView != null) { - new AlertDialog.Builder(mActivity) + new AlertDialog.Builder(mContext) .setTitle(R.string.too_many_subwindows_dialog_title) .setIcon(android.R.drawable.ic_dialog_alert) .setMessage(R.string.too_many_subwindows_dialog_message) @@ -922,7 +962,7 @@ class Tab { .show(); return false; } else if (!mWebViewController.getTabControl().canCreateNewTab()) { - new AlertDialog.Builder(mActivity) + new AlertDialog.Builder(mContext) .setTitle(R.string.too_many_windows_dialog_title) .setIcon(android.R.drawable.ic_dialog_alert) .setMessage(R.string.too_many_windows_dialog_message) @@ -956,7 +996,7 @@ class Tab { // Build a confirmation dialog to display to the user. final AlertDialog d = - new AlertDialog.Builder(mActivity) + new AlertDialog.Builder(mContext) .setTitle(R.string.attention) .setIcon(android.R.drawable.ic_dialog_alert) .setMessage(R.string.popup_window_attempt) @@ -1009,7 +1049,7 @@ class Tab { @Override public void onReceivedTouchIconUrl(WebView view, String url, boolean precomposed) { - final ContentResolver cr = mActivity.getContentResolver(); + final ContentResolver cr = mContext.getContentResolver(); // Let precomposed icons take precedence over non-composed // icons. if (precomposed && mTouchIconLoader != null) { @@ -1019,7 +1059,7 @@ class Tab { // Have only one async task at a time. if (mTouchIconLoader == null) { mTouchIconLoader = new DownloadTouchIcon(Tab.this, - mActivity, cr, view); + mContext, cr, view); mTouchIconLoader.execute(url); } } @@ -1027,7 +1067,10 @@ class Tab { @Override public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) { - onShowCustomView(view, mActivity.getRequestedOrientation(), callback); + Activity activity = mWebViewController.getActivity(); + if (activity != null) { + onShowCustomView(view, activity.getRequestedOrientation(), callback); + } } @Override @@ -1200,12 +1243,13 @@ class Tab { public void setupAutoFill(Message message) { // Prompt the user to set up their profile. final Message msg = message; - AlertDialog.Builder builder = new AlertDialog.Builder(mActivity); - LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService( + AlertDialog.Builder builder = new AlertDialog.Builder(mContext); + LayoutInflater inflater = (LayoutInflater) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE); final View layout = inflater.inflate(R.layout.setup_autofill_dialog, null); builder.setView(layout) + .setTitle(R.string.autofill_setup_dialog_title) .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { @@ -1215,7 +1259,7 @@ class Tab { if (disableAutoFill.isChecked()) { // Disable autofill and show a toast with how to turn it on again. mSettings.setAutofillEnabled(false); - Toast.makeText(mActivity, + Toast.makeText(mContext, R.string.autofill_setup_dialog_negative_toast, Toast.LENGTH_LONG).show(); } else { @@ -1330,16 +1374,21 @@ class Tab { // ------------------------------------------------------------------------- - // TODO temporarily use activity here - // remove later - // Construct a new tab Tab(WebViewController wvcontroller, WebView w) { + this(wvcontroller, w, null); + } + + Tab(WebViewController wvcontroller, Bundle state) { + this(wvcontroller, null, state); + } + + Tab(WebViewController wvcontroller, WebView w, Bundle state) { mWebViewController = wvcontroller; - mActivity = mWebViewController.getActivity(); + mContext = mWebViewController.getContext(); mSettings = BrowserSettings.getInstance(); - mDataController = DataController.getInstance(mActivity); - mCurrentState = new PageState(mActivity, w != null + mDataController = DataController.getInstance(mContext); + mCurrentState = new PageState(mContext, w != null ? w.isPrivateBrowsingEnabled() : false); mInPageLoad = false; mInForeground = false; @@ -1358,6 +1407,18 @@ class Tab { if (isInVoiceSearchMode()) { item.setCustomData(mVoiceSearchData.mVoiceSearchIntent); } + if (mClearHistoryMatchUrl != null) { + if (LOGD_ENABLED) { + Log.d(LOGTAG, "onNewHistoryItem:\n\t" + item.getUrl() + "\n\t" + + mClearHistoryMatchUrl); + } + if (TextUtils.equals(item.getOriginalUrl(), mClearHistoryMatchUrl)) { + if (mMainView != null) { + mMainView.clearHistory(); + } + } + mClearHistoryMatchUrl = null; + } } @Override public void onIndexChanged(WebHistoryItem item, int index) { @@ -1368,7 +1429,47 @@ class Tab { } }; + mCaptureWidth = mContext.getResources().getDimensionPixelSize( + R.dimen.tab_thumbnail_width); + mCaptureHeight = mContext.getResources().getDimensionPixelSize( + R.dimen.tab_thumbnail_height); + updateShouldCaptureThumbnails(); + restoreState(state); setWebView(w); + mHandler = new Handler() { + @Override + public void handleMessage(Message m) { + switch (m.what) { + case MSG_CAPTURE: + capture(); + break; + } + } + }; + } + + public void updateShouldCaptureThumbnails() { + if (mWebViewController.shouldCaptureThumbnails()) { + synchronized (Tab.this) { + if (mCapture == null) { + mCapture = Bitmap.createBitmap(mCaptureWidth, mCaptureHeight, + Bitmap.Config.RGB_565); + if (mInForeground) { + postCapture(); + } + } + } + } else { + synchronized (Tab.this) { + mCapture = null; + deleteThumbnail(); + } + } + } + + public void setController(WebViewController ctl) { + mWebViewController = ctl; + updateShouldCaptureThumbnails(); } public void setId(long id) { @@ -1396,6 +1497,13 @@ class Tab { mWebViewController.onSetWebView(this, w); + if (mMainView != null) { + if (w != null) { + syncCurrentState(w, null); + } else { + mCurrentState = new PageState(mContext, false); + } + } // set the new one mMainView = w; // attach the WebViewClient, WebChromeClient and DownloadListener @@ -1408,6 +1516,11 @@ class Tab { // switched to another tab while waiting for the download to start. mMainView.setDownloadListener(mDownloadListener); mMainView.setWebBackForwardListClient(mWebBackForwardListClient); + mMainView.setPictureListener(this); + if (mSavedState != null) { + mMainView.restoreState(mSavedState); + mSavedState = null; + } } } @@ -1417,6 +1530,8 @@ class Tab { void destroy() { if (mMainView != null) { dismissSubWindow(); + // Make sure the embedded title bar isn't still attached + mMainView.setEmbeddedTitleBar(null); // save the WebView to call destroy() after detach it from the tab WebView webView = mMainView; setWebView(null); @@ -1438,6 +1553,7 @@ class Tab { if (mParent != null) { mParent.mChildren.remove(this); } + deleteThumbnail(); } /** @@ -1466,7 +1582,7 @@ class Tab { } } }); - mSubView.setOnCreateContextMenuListener(mActivity); + mSubView.setOnCreateContextMenuListener(mWebViewController.getActivity()); return true; } return false; @@ -1556,9 +1672,10 @@ class Tab { void putInForeground() { mInForeground = true; resume(); - mMainView.setOnCreateContextMenuListener(mActivity); + Activity activity = mWebViewController.getActivity(); + mMainView.setOnCreateContextMenuListener(activity); if (mSubView != null) { - mSubView.setOnCreateContextMenuListener(mActivity); + mSubView.setOnCreateContextMenuListener(activity); } // Show the pending error dialog if the queue is not empty if (mQueuedErrors != null && mQueuedErrors.size() > 0) { @@ -1652,7 +1769,6 @@ class Tab { .findViewById(R.id.geolocation_permissions_prompt); mGeolocationPermissionsPrompt = (GeolocationPermissionsPrompt) stub .inflate(); - mGeolocationPermissionsPrompt.init(); } return mGeolocationPermissionsPrompt; } @@ -1672,15 +1788,23 @@ class Tab { mAppId = id; } + boolean closeOnBack() { + return mCloseOnBack; + } + + void setCloseOnBack(boolean close) { + mCloseOnBack = close; + } + String getUrl() { return UrlUtils.filteredUrl(mCurrentState.mUrl); } String getOriginalUrl() { - if (mMainView == null) { - return ""; + if (mCurrentState.mOriginalUrl == null) { + return getUrl(); } - return UrlUtils.filteredUrl(mMainView.getOriginalUrl()); + return UrlUtils.filteredUrl(mCurrentState.mOriginalUrl); } /** @@ -1688,7 +1812,7 @@ class Tab { */ String getTitle() { if (mCurrentState.mTitle == null && mInPageLoad) { - return mActivity.getString(R.string.title_bar_loading); + return mContext.getString(R.string.title_bar_loading); } return mCurrentState.mTitle; } @@ -1697,7 +1821,10 @@ class Tab { * Get the favicon of this tab. */ Bitmap getFavicon() { - return mCurrentState.mFavicon; + if (mCurrentState.mFavicon != null) { + return mCurrentState.mFavicon; + } + return getDefaultFavicon(mContext); } public boolean isBookmarkedSite() { @@ -1714,7 +1841,7 @@ class Tab { */ ErrorConsoleView getErrorConsole(boolean createIfNecessary) { if (createIfNecessary && mErrorConsole == null) { - mErrorConsole = new ErrorConsoleView(mActivity); + mErrorConsole = new ErrorConsoleView(mContext); mErrorConsole.setWebView(mMainView); } return mErrorConsole; @@ -1754,43 +1881,19 @@ class Tab { } /** - * Get the cached saved state bundle. - * @return cached state bundle + * @return The Bundle with the tab's state if it can be saved, otherwise null */ - Bundle getSavedState() { - return mSavedState; - } - - Bundle getSavedState(boolean saveImages) { - if (saveImages && mScreenshot != null) { - Bundle b = new Bundle(mSavedState); - b.putParcelable(SCREENSHOT, mScreenshot); - return b; - } - return mSavedState; - } - - /** - * Set the saved state. - */ - void setSavedState(Bundle state) { - mSavedState = state; - } - - /** - * @return TRUE if succeed in saving the state. - */ - boolean saveState() { + public Bundle saveState() { // If the WebView is null it means we ran low on memory and we already // stored the saved state in mSavedState. if (mMainView == null) { - return mSavedState != null; + return mSavedState; } // If the tab is the homepage or has no URL, don't save it String homepage = BrowserSettings.getInstance().getHomePage(); if (TextUtils.equals(homepage, mCurrentState.mUrl) || TextUtils.isEmpty(mCurrentState.mUrl)) { - return false; + return null; } mSavedState = new Bundle(); @@ -1799,41 +1902,47 @@ class Tab { mSavedState.putLong(ID, mId); mSavedState.putString(CURRURL, mCurrentState.mUrl); mSavedState.putString(CURRTITLE, mCurrentState.mTitle); + mSavedState.putBoolean(INCOGNITO, mMainView.isPrivateBrowsingEnabled()); if (mAppId != null) { mSavedState.putString(APPID, mAppId); } + mSavedState.putBoolean(CLOSEFLAG, mCloseOnBack); // Remember the parent tab so the relationship can be restored. if (mParent != null) { mSavedState.putLong(PARENTTAB, mParent.mId); } mSavedState.putBoolean(USERAGENT, mSettings.hasDesktopUseragent(getWebView())); - return true; + return mSavedState; } /* * Restore the state of the tab. */ - boolean restoreState(Bundle b) { - if (b == null) { - return false; + private void restoreState(Bundle b) { + mSavedState = b; + if (mSavedState == null) { + return; } // Restore the internal state even if the WebView fails to restore. // This will maintain the app id, original url and close-on-exit values. - mSavedState = null; mId = b.getLong(ID); mAppId = b.getString(APPID); - mScreenshot = b.getParcelable(SCREENSHOT); + mCloseOnBack = b.getBoolean(CLOSEFLAG); if (b.getBoolean(USERAGENT) != mSettings.hasDesktopUseragent(getWebView())) { mSettings.toggleDesktopUseragent(getWebView()); } - - final WebBackForwardList list = mMainView.restoreState(b); - if (list == null) { - return false; + String url = b.getString(CURRURL); + String title = b.getString(CURRTITLE); + boolean incognito = b.getBoolean(INCOGNITO); + mCurrentState = new PageState(mContext, incognito, url, null); + mCurrentState.mTitle = title; + synchronized (Tab.this) { + if (mCapture != null) { + BackgroundHandler.execute(mLoadThumbnail); + } } - return true; } public void updateBookmarkedStatus() { @@ -1851,12 +1960,10 @@ class Tab { } }; - public void setScreenshot(Bitmap screenshot) { - mScreenshot = screenshot; - } - public Bitmap getScreenshot() { - return mScreenshot; + synchronized (Tab.this) { + return mCapture; + } } public boolean isSnapshot() { @@ -1865,25 +1972,189 @@ class Tab { public ContentValues createSnapshotValues() { if (mMainView == null) return null; - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - if (!mMainView.saveViewState(stream)) { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + try { + GZIPOutputStream stream = new GZIPOutputStream(bos); + if (!mMainView.saveViewState(stream)) { + return null; + } + stream.flush(); + stream.close(); + } catch (Exception e) { + Log.w(LOGTAG, "Failed to save view state", e); return null; } - byte[] data = stream.toByteArray(); + byte[] data = bos.toByteArray(); ContentValues values = new ContentValues(); values.put(Snapshots.TITLE, mCurrentState.mTitle); values.put(Snapshots.URL, mCurrentState.mUrl); values.put(Snapshots.VIEWSTATE, data); values.put(Snapshots.BACKGROUND, mMainView.getPageBackgroundColor()); + values.put(Snapshots.DATE_CREATED, System.currentTimeMillis()); + values.put(Snapshots.FAVICON, compressBitmap(getFavicon())); + Bitmap screenshot = Controller.createScreenshot(mMainView, + Controller.getDesiredThumbnailWidth(mContext), + Controller.getDesiredThumbnailHeight(mContext)); + values.put(Snapshots.THUMBNAIL, compressBitmap(screenshot)); return values; } + public byte[] compressBitmap(Bitmap bitmap) { + if (bitmap == null) { + return null; + } + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + bitmap.compress(CompressFormat.PNG, 100, stream); + return stream.toByteArray(); + } + public void loadUrl(String url, Map<String, String> headers) { if (mMainView != null) { - mCurrentState = new PageState(mActivity, false, url, null); + mCurrentState = new PageState(mContext, false, url, null); mWebViewController.onPageStarted(this, mMainView, null); mMainView.loadUrl(url, headers); } } + protected void capture() { + if (mMainView == null || mCapture == null) return; + Canvas c = new Canvas(mCapture); + final int left = mMainView.getScrollX(); + final int top = mMainView.getScrollY() + mMainView.getVisibleTitleHeight(); + c.translate(-left, -top); + float scale = mCaptureWidth / (float) mMainView.getWidth(); + c.scale(scale, scale, left, top); + mMainView.draw(c); + c.setBitmap(null); + persistThumbnail(); + } + + @Override + public void onNewPicture(WebView view, Picture picture) { + //update screenshot + postCapture(); + } + + private void postCapture() { + if (!mHandler.hasMessages(MSG_CAPTURE)) { + mHandler.sendEmptyMessageDelayed(MSG_CAPTURE, CAPTURE_DELAY); + } + } + + public boolean canGoBack() { + return mMainView != null ? mMainView.canGoBack() : false; + } + + public boolean canGoForward() { + return mMainView != null ? mMainView.canGoForward() : false; + } + + public void goBack() { + if (mMainView != null) { + mMainView.goBack(); + } + } + + public void goForward() { + if (mMainView != null) { + mMainView.goForward(); + } + } + + /** + * Causes the tab back/forward stack to be cleared once, if the given URL is the next URL + * to be added to the stack. + * + * This is used to ensure that preloaded URLs that are not subsequently seen by the user do + * not appear in the back stack. + */ + public void clearBackStackWhenItemAdded(String urlToMatch) { + mClearHistoryMatchUrl = urlToMatch; + } + + protected void persistThumbnail() { + BackgroundHandler.execute(mSaveThumbnail); + } + + protected void deleteThumbnail() { + BackgroundHandler.execute(mDeleteThumbnail); + } + + private void updateCaptureFromBlob(byte[] blob) { + synchronized (Tab.this) { + if (mCapture == null) { + return; + } + ByteBuffer buffer = ByteBuffer.wrap(blob); + if (buffer.capacity() != blob.length) { + Log.e(LOGTAG, "Load capture has mismatched sizes: " + + buffer.capacity() + " vs " + blob.length); + } + mCapture.copyPixelsFromBuffer(buffer); + } + } + + private byte[] getCaptureBlob() { + synchronized (Tab.this) { + if (mCapture == null) { + return null; + } + ByteBuffer buffer = ByteBuffer.allocate(mCapture.getByteCount()); + mCapture.copyPixelsToBuffer(buffer); + return buffer.array(); + } + } + + private Runnable mSaveThumbnail = new Runnable() { + + @Override + public void run() { + byte[] blob = getCaptureBlob(); + if (blob == null) { + return; + } + ContentResolver cr = mContext.getContentResolver(); + ContentValues values = new ContentValues(); + values.put(Thumbnails._ID, mId); + values.put(Thumbnails.THUMBNAIL, blob); + cr.insert(Thumbnails.CONTENT_URI, values); + } + }; + + private Runnable mDeleteThumbnail = new Runnable() { + + @Override + public void run() { + ContentResolver cr = mContext.getContentResolver(); + try { + cr.delete(ContentUris.withAppendedId(Thumbnails.CONTENT_URI, mId), + null, null); + } catch (Throwable t) {} + } + }; + + private Runnable mLoadThumbnail = new Runnable() { + + @Override + public void run() { + ContentResolver cr = mContext.getContentResolver(); + Cursor c = null; + try { + Uri uri = ContentUris.withAppendedId(Thumbnails.CONTENT_URI, mId); + c = cr.query(uri, new String[] {Thumbnails._ID, + Thumbnails.THUMBNAIL}, null, null, null); + if (c.moveToFirst()) { + byte[] data = c.getBlob(1); + if (data != null && data.length > 0) { + updateCaptureFromBlob(data); + } + } + } finally { + if (c != null) { + c.close(); + } + } + } + }; + } diff --git a/src/com/android/browser/TabBar.java b/src/com/android/browser/TabBar.java index 8584afa..d1652dd 100644 --- a/src/com/android/browser/TabBar.java +++ b/src/com/android/browser/TabBar.java @@ -16,8 +16,6 @@ package com.android.browser; -import com.android.browser.BrowserWebView.ScrollListener; - import android.animation.Animator; import android.animation.Animator.AnimatorListener; import android.animation.AnimatorSet; @@ -43,7 +41,6 @@ import android.view.LayoutInflater; import android.view.MenuInflater; import android.view.View; import android.view.View.OnClickListener; -import android.webkit.WebView; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; @@ -56,8 +53,7 @@ import java.util.Map; /** * tabbed title bar for xlarge screen browser */ -public class TabBar extends LinearLayout - implements ScrollListener, OnClickListener { +public class TabBar extends LinearLayout implements OnClickListener { private static final int PROGRESS_MAX = 100; @@ -235,67 +231,6 @@ public class TabBar extends LinearLayout mUi.showTitleBar(); } - void showTitleBarIndicator(boolean show) { - Tab tab = mTabControl.getCurrentTab(); - if (tab != null && !tab.isSnapshot()) { - TabView tv = mTabMap.get(tab); - if (tv != null) { - tv.showIndicator(show); - } - } - } - - boolean showsTitleBarIndicator() { - Tab tab = mTabControl.getCurrentTab(); - if (tab != null) { - TabView tv = mTabMap.get(tab); - if (tv != null) { - return tv.showsIndicator(); - } - } - return false; - } - - // callback after fake titlebar is shown - void onShowTitleBar() { - showTitleBarIndicator(false); - } - - // callback after fake titlebar is hidden - void onHideTitleBar() { - Tab tab = mTabControl.getCurrentTab(); - WebView w = tab.getWebView(); - if (w != null) { - showTitleBarIndicator(w.getVisibleTitleHeight() == 0); - } - } - - // webview scroll listener - - @Override - public void onScroll(int visibleTitleHeight, boolean userInitiated) { - if (mUseQuickControls) return; - // isLoading is using the current tab, which initially might not be set yet - if (mTabControl.getCurrentTab() != null) { - if (visibleTitleHeight == 0 && !mUi.isTitleBarShowing()) { - if (!showsTitleBarIndicator()) { - showTitleBarIndicator(true); - } - } else { - if (showsTitleBarIndicator()) { - showTitleBarIndicator(false); - } - } - } - } - - @Override - public void createContextMenu(ContextMenu menu) { - MenuInflater inflater = mActivity.getMenuInflater(); - inflater.inflate(R.menu.title_context, menu); - mActivity.onCreateContextMenu(menu, this, null); - } - private TabView buildTabView(Tab tab) { TabView tabview = new TabView(mActivity, tab); mTabMap.put(tab, tabview); @@ -308,6 +243,7 @@ public class TabBar extends LinearLayout Canvas c = new Canvas(b); drawable.setBounds(0, 0, width, height); drawable.draw(c); + c.setBitmap(null); return b; } @@ -319,7 +255,6 @@ public class TabBar extends LinearLayout Tab mTab; View mTabContent; TextView mTitle; - View mIndicator; View mIncognito; View mSnapshot; ImageView mIconView; @@ -353,33 +288,12 @@ public class TabBar extends LinearLayout mClose.setOnClickListener(this); mIncognito = mTabContent.findViewById(R.id.incognito); mSnapshot = mTabContent.findViewById(R.id.snapshot); - mIndicator = mTabContent.findViewById(R.id.chevron); mSelected = false; mInLoad = false; // update the status updateFromTab(); } - void showIndicator(boolean show) { - if (mSelected) { - mIndicator.setVisibility(show ? View.VISIBLE : View.GONE); - LayoutParams lp = (LinearLayout.LayoutParams) getLayoutParams(); - if (show) { - lp.width = mTabWidthSelected + mIndicator.getWidth(); - } else { - lp.width = mTabWidthSelected; - } - lp.height = LayoutParams.MATCH_PARENT; - setLayoutParams(lp); - } else { - mIndicator.setVisibility(View.GONE); - } - } - - boolean showsIndicator() { - return (mIndicator.getVisibility() == View.VISIBLE); - } - @Override public void onClick(View v) { if (v == mClose) { @@ -412,7 +326,6 @@ public class TabBar extends LinearLayout public void setActivated(boolean selected) { mSelected = selected; mClose.setVisibility(mSelected ? View.VISIBLE : View.GONE); - mIndicator.setVisibility(View.GONE); mTitle.setTextAppearance(mActivity, mSelected ? R.style.TabTitleSelected : R.style.TabTitleUnselected); setHorizontalFadingEdgeEnabled(!mSelected); @@ -623,12 +536,6 @@ public class TabBar extends LinearLayout TabView tv = mTabMap.get(tab); if (tv != null) { tv.setProgress(tv.mTab.getLoadProgress()); - // update the scroll state - WebView webview = tab.getWebView(); - if (webview != null) { - int h = webview.getVisibleTitleHeight(); - onScroll(h, true); - } } } diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java index 1367ba2..b708841 100644 --- a/src/com/android/browser/TabControl.java +++ b/src/com/android/browser/TabControl.java @@ -16,14 +16,10 @@ package com.android.browser; -import android.content.ContentResolver; -import android.database.Cursor; import android.os.Bundle; import android.util.Log; import android.webkit.WebView; -import com.android.browser.provider.BrowserProvider2.Snapshots; - import java.io.File; import java.util.ArrayList; import java.util.HashMap; @@ -159,7 +155,7 @@ class TabControl { } boolean canCreateNewTab() { - return mMaxTabs != mTabs.size(); + return mMaxTabs > mTabs.size(); } /** @@ -176,21 +172,34 @@ class TabControl { return false; } + void addPreloadedTab(Tab tab) { + tab.setId(getNextId()); + mTabs.add(tab); + tab.setController(mController); + mController.onSetWebView(tab, tab.getWebView()); + tab.putInBackground(); + } + /** * Create a new tab. * @return The newly createTab or null if we have reached the maximum * number of open tabs. */ Tab createNewTab(boolean privateBrowsing) { + return createNewTab(null, privateBrowsing); + } + + Tab createNewTab(Bundle state, boolean privateBrowsing) { int size = mTabs.size(); // Return false if we have maxed out on tabs - if (mMaxTabs == size) { + if (!canCreateNewTab()) { return null; } + final WebView w = createNewWebView(privateBrowsing); // Create a new tab and add it to the tab list - Tab t = new Tab(mController, w); + Tab t = new Tab(mController, w, state); t.setId(getNextId()); mTabs.add(t); // Initially put the tab in the background. @@ -207,7 +216,6 @@ class TabControl { } SnapshotTab createSnapshotTab(long snapshotId) { - // TODO: Don't count this against the limit SnapshotTab t = new SnapshotTab(mController, snapshotId); t.setId(getNextId()); mTabs.add(t); @@ -286,7 +294,7 @@ class TabControl { * @param outState * @param saveImages */ - void saveState(Bundle outState, boolean saveImages) { + void saveState(Bundle outState) { final int numTabs = getTabCount(); if (numTabs == 0) { return; @@ -294,10 +302,12 @@ class TabControl { long[] ids = new long[numTabs]; int i = 0; for (Tab tab : mTabs) { - ids[i++] = tab.getId(); - if (tab.saveState()) { - outState.putBundle(Long.toString(tab.getId()), - tab.getSavedState(saveImages)); + Bundle tabState = tab.saveState(); + if (tabState != null) { + ids[i++] = tab.getId(); + outState.putBundle(Long.toString(tab.getId()), tabState); + } else { + ids[i++] = -1; } } if (!outState.isEmpty()) { @@ -324,13 +334,12 @@ class TabControl { } final long oldcurrent = inState.getLong(CURRENT); long current = -1; - if (restoreIncognitoTabs || - !inState.getBundle(Long.toString(oldcurrent)).getBoolean(Tab.INCOGNITO)) { - current = oldcurrent; + if (restoreIncognitoTabs || (hasState(oldcurrent, inState) && !isIncognito(oldcurrent, inState))) { + current = oldcurrent; } else { // pick first non incognito tab for (long id : ids) { - if (!inState.getBundle(Long.toString(id)).getBoolean(Tab.INCOGNITO)) { + if (hasState(id, inState) && !isIncognito(id, inState)) { current = id; break; } @@ -339,6 +348,20 @@ class TabControl { return current; } + private boolean hasState(long id, Bundle state) { + if (id == -1) return false; + Bundle tab = state.getBundle(Long.toString(id)); + return ((tab != null) && !tab.isEmpty()); + } + + private boolean isIncognito(long id, Bundle state) { + Bundle tabstate = state.getBundle(Long.toString(id)); + if ((tabstate != null) && !tabstate.isEmpty()) { + return tabstate.getBoolean(Tab.INCOGNITO); + } + return false; + } + /** * Restore the state of all the tabs. * @param currentId The tab id to restore. @@ -346,8 +369,6 @@ class TabControl { * @param restoreIncognitoTabs Restoring private browsing tabs * @param restoreAll All webviews get restored, not just the current tab * (this does not override handling of incognito tabs) - * @return True if there were previous tabs that were restored. False if - * there was no saved state or restoring the state failed. */ void restoreState(Bundle inState, long currentId, boolean restoreIncognitoTabs, boolean restoreAll) { @@ -370,39 +391,34 @@ class TabControl { && state.getBoolean(Tab.INCOGNITO)) { // ignore tab } else if (id == currentId || restoreAll) { - Tab t = createNewTab(); + Tab t = createNewTab(state, false); + if (t == null) { + // We could "break" at this point, but we want + // sNextId to be set correctly. + continue; + } tabMap.put(id, t); // Me must set the current tab before restoring the state // so that all the client classes are set. if (id == currentId) { setCurrentTab(t); } - if (!t.restoreState(state)) { - Log.w(LOGTAG, "Fail in restoreState, load home page."); - t.getWebView().loadUrl(BrowserSettings.getInstance() - .getHomePage()); - } } else { // Create a new tab and don't restore the state yet, add it // to the tab list - Tab t = new Tab(mController, null); + Tab t = new Tab(mController, state); t.setId(id); tabMap.put(id, t); - if (state != null) { - t.setSavedState(state); - // Need to maintain the app id and original url so we - // can possibly reuse this tab. - t.setAppId(state.getString(Tab.APPID)); - } mTabs.add(t); // added the tab to the front as they are not current mTabQueue.add(0, t); } - // make sure that there is no id overlap between the restored - // and new tabs - sNextId = maxId + 1; - } + + // make sure that there is no id overlap between the restored + // and new tabs + sNextId = maxId + 1; + if (mCurrentTab == -1) { if (getTabCount() > 0) { setCurrentTab(getTab(0)); @@ -427,21 +443,6 @@ class TabControl { } } } - loadSnapshotTabs(); - - } - - void loadSnapshotTabs() { - ContentResolver cr = mController.getActivity().getContentResolver(); - Cursor c = cr.query(Snapshots.CONTENT_URI, new String[] { "_id" }, - null, null, null); - try { - while (c.moveToNext()) { - createSnapshotTab(c.getLong(0)); - } - } finally { - c.close(); - } } /** @@ -506,6 +507,25 @@ class TabControl { return tabsToGo; } + Tab getLeastUsedTab(Tab current) { + if (getTabCount() == 1 || current == null) { + return null; + } + if (mTabQueue.size() == 0) { + return null; + } + // find a tab which is not the current tab or the parent of the + // current tab + for (Tab t : mTabQueue) { + if (t != null && t.getWebView() != null) { + if (t != current && t != current.getParent()) { + return t; + } + } + } + return null; + } + /** * Show the tab that contains the given WebView. * @param view The WebView used to find the tab. @@ -551,40 +571,28 @@ class TabControl { } } - // This method checks if a non-app tab (one created within the browser) - // matches the given url. + // This method checks if a tab matches the given url. private boolean tabMatchesUrl(Tab t, String url) { - if (t.getAppId() != null) { - return false; - } - WebView webview = t.getWebView(); - if (webview == null) { - return false; - } else if (url.equals(webview.getUrl()) - || url.equals(webview.getOriginalUrl())) { - return true; - } - return false; + return url.equals(t.getUrl()) || url.equals(t.getOriginalUrl()); } /** - * Return the tab that has no app id associated with it and the url of the - * tab matches the given url. + * Return the tab that matches the given url. * @param url The url to search for. */ - Tab findUnusedTabWithUrl(String url) { + Tab findTabWithUrl(String url) { if (url == null) { return null; } // Check the current tab first. - Tab t = getCurrentTab(); - if (t != null && tabMatchesUrl(t, url)) { - return t; + Tab currentTab = getCurrentTab(); + if (currentTab != null && tabMatchesUrl(currentTab, url)) { + return currentTab; } // Now check all the rest. for (Tab tab : mTabs) { if (tabMatchesUrl(tab, url)) { - return t; + return tab; } } return null; @@ -604,8 +612,6 @@ class TabControl { if (getCurrentTab() == t) { setCurrentTab(t, true); } - // Clear the saved state and picker data - t.setSavedState(null); } /** @@ -666,12 +672,6 @@ class TabControl { newTab.setWebView(mainView); } newTab.putInForeground(); - if (needRestore) { - // Have to finish setCurrentTab work before calling restoreState - if (!newTab.restoreState(newTab.getSavedState())) { - mainView.loadUrl(BrowserSettings.getInstance().getHomePage()); - } - } return true; } diff --git a/src/com/android/browser/TabScrollView.java b/src/com/android/browser/TabScrollView.java index f43d6d6..52dd6af 100644 --- a/src/com/android/browser/TabScrollView.java +++ b/src/com/android/browser/TabScrollView.java @@ -246,11 +246,11 @@ public class TabScrollView extends HorizontalScrollView { @Override protected int getChildDrawingOrder(int count, int i) { int next = -1; - if ((i == (count - 1)) && (mSelected >= 0)) { + if ((i == (count - 1)) && (mSelected >= 0) && (mSelected < count)) { next = mSelected; } else { next = count - i - 1; - if (next <= mSelected) { + if (next <= mSelected && next > 0) { next--; } } diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java new file mode 100644 index 0000000..9848a39 --- /dev/null +++ b/src/com/android/browser/TitleBar.java @@ -0,0 +1,361 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.browser; + +import android.animation.Animator; +import android.animation.Animator.AnimatorListener; +import android.animation.ObjectAnimator; +import android.content.Context; +import android.content.res.Resources; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.animation.Animation; +import android.view.animation.Animation.AnimationListener; +import android.view.animation.AnimationUtils; +import android.view.animation.DecelerateInterpolator; +import android.webkit.WebView; +import android.widget.AbsoluteLayout; +import android.widget.FrameLayout; +import android.widget.RelativeLayout; + + +/** + * Base class for a title bar used by the browser. + */ +public class TitleBar extends RelativeLayout { + + private static final int PROGRESS_MAX = 100; + private static final float ANIM_TITLEBAR_DECELERATE = 2.5f; + + private UiController mUiController; + private BaseUi mBaseUi; + private FrameLayout mParent; + private PageProgressView mProgress; + + private AutologinBar mAutoLogin; + private NavigationBarBase mNavBar; + private boolean mUseQuickControls; + private SnapshotBar mSnapshotBar; + + //state + private boolean mShowing; + private boolean mInLoad; + private boolean mSkipTitleBarAnimations; + private Animator mTitleBarAnimator; + + public TitleBar(Context context, UiController controller, BaseUi ui, + FrameLayout parent) { + super(context, null); + mUiController = controller; + mBaseUi = ui; + mParent = parent; + initLayout(context); + } + + private void initLayout(Context context) { + LayoutInflater factory = LayoutInflater.from(context); + factory.inflate(R.layout.title_bar, this); + mProgress = (PageProgressView) findViewById(R.id.progress); + mAutoLogin = (AutologinBar) findViewById(R.id.autologin); + mAutoLogin.setTitleBar(this); + mNavBar = (NavigationBarBase) findViewById(R.id.taburlbar); + mNavBar.setTitleBar(this); + mSnapshotBar = (SnapshotBar) findViewById(R.id.snapshotbar); + mSnapshotBar.setTitleBar(this); + } + + public BaseUi getUi() { + return mBaseUi; + } + + public UiController getUiController() { + return mUiController; + } + + public void setUseQuickControls(boolean use) { + mUseQuickControls = use; + setLayoutParams(makeLayoutParams()); + } + + void setShowProgressOnly(boolean progress) { + if (progress && !wantsToBeVisible()) { + mNavBar.setVisibility(View.GONE); + } else { + mNavBar.setVisibility(View.VISIBLE); + } + } + + void setSkipTitleBarAnimations(boolean skip) { + mSkipTitleBarAnimations = skip; + } + + void setupTitleBarAnimator(Animator animator) { + Resources res = mContext.getResources(); + int duration = res.getInteger(R.integer.titlebar_animation_duration); + animator.setInterpolator(new DecelerateInterpolator( + ANIM_TITLEBAR_DECELERATE)); + animator.setDuration(duration); + } + + void show() { + if (mUseQuickControls) { + mParent.addView(this); + } else { + if (!mSkipTitleBarAnimations) { + cancelTitleBarAnimation(false); + int visibleHeight = getVisibleTitleHeight(); + float startPos = (-getEmbeddedHeight() + visibleHeight); + if (getTranslationY() != 0) { + startPos = Math.max(startPos, getTranslationY()); + } + mTitleBarAnimator = ObjectAnimator.ofFloat(this, + "translationY", + startPos, 0); + setupTitleBarAnimator(mTitleBarAnimator); + mTitleBarAnimator.start(); + } + mBaseUi.setTitleGravity(Gravity.TOP); + } + mShowing = true; + } + + void hide() { + if (mUseQuickControls) { + mParent.removeView(this); + } else { + if (!mSkipTitleBarAnimations) { + cancelTitleBarAnimation(false); + int visibleHeight = getVisibleTitleHeight(); + mTitleBarAnimator = ObjectAnimator.ofFloat(this, + "translationY", getTranslationY(), + (-getEmbeddedHeight() + visibleHeight)); + mTitleBarAnimator.addListener(mHideTileBarAnimatorListener); + setupTitleBarAnimator(mTitleBarAnimator); + mTitleBarAnimator.start(); + } else { + mBaseUi.setTitleGravity(Gravity.NO_GRAVITY); + } + } + mShowing = false; + } + + boolean isShowing() { + return mShowing; + } + + void cancelTitleBarAnimation(boolean reset) { + if (mTitleBarAnimator != null) { + mTitleBarAnimator.cancel(); + mTitleBarAnimator = null; + } + if (reset) { + setTranslationY(0); + } + } + + private AnimatorListener mHideTileBarAnimatorListener = new AnimatorListener() { + + boolean mWasCanceled; + @Override + public void onAnimationStart(Animator animation) { + mWasCanceled = false; + } + + @Override + public void onAnimationRepeat(Animator animation) { + } + + @Override + public void onAnimationEnd(Animator animation) { + if (!mWasCanceled) { + setTranslationY(0); + } + mBaseUi.setTitleGravity(Gravity.NO_GRAVITY); + } + + @Override + public void onAnimationCancel(Animator animation) { + mWasCanceled = true; + } + }; + + private int getVisibleTitleHeight() { + Tab tab = mBaseUi.getActiveTab(); + WebView webview = tab != null ? tab.getWebView() : null; + return webview != null ? webview.getVisibleTitleHeight() : 0; + } + + /** + * Update the progress, from 0 to 100. + */ + public void setProgress(int newProgress) { + if (newProgress >= PROGRESS_MAX) { + mProgress.setProgress(PageProgressView.MAX_PROGRESS); + mProgress.setVisibility(View.GONE); + mInLoad = false; + mNavBar.onProgressStopped(); + // check if needs to be hidden + if (!isEditingUrl() && !wantsToBeVisible()) { + hide(); + if (mUseQuickControls) { + setShowProgressOnly(false); + } + } + } else { + if (!mInLoad) { + mProgress.setVisibility(View.VISIBLE); + mInLoad = true; + mNavBar.onProgressStarted(); + } + mProgress.setProgress(newProgress * PageProgressView.MAX_PROGRESS + / PROGRESS_MAX); + if (!mShowing) { + if (mUseQuickControls && !isEditingUrl()) { + setShowProgressOnly(true); + } + show(); + } + } + } + + public int getEmbeddedHeight() { + int height = mNavBar.getHeight(); + if (mAutoLogin.getVisibility() == View.VISIBLE) { + height += mAutoLogin.getHeight(); + } + return height; + } + + public void updateAutoLogin(Tab tab, boolean animate) { + mAutoLogin.updateAutoLogin(tab, animate); + } + + public void showAutoLogin(boolean animate) { + if (mUseQuickControls) { + mBaseUi.showTitleBar(); + } + mAutoLogin.setVisibility(View.VISIBLE); + if (animate) { + mAutoLogin.startAnimation(AnimationUtils.loadAnimation( + getContext(), R.anim.autologin_enter)); + } + } + + public void hideAutoLogin(boolean animate) { + if (mUseQuickControls) { + mBaseUi.hideTitleBar(); + mAutoLogin.setVisibility(View.GONE); + mBaseUi.refreshWebView(); + } else { + 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(); + } + } + } + + public boolean wantsToBeVisible() { + return inAutoLogin() + || (mSnapshotBar.getVisibility() == View.VISIBLE + && mSnapshotBar.isAnimating()); + } + + private boolean inAutoLogin() { + return mAutoLogin.getVisibility() == View.VISIBLE; + } + + public boolean isEditingUrl() { + return mNavBar.isEditingUrl(); + } + + public WebView getCurrentWebView() { + Tab t = mBaseUi.getActiveTab(); + if (t != null) { + return t.getWebView(); + } else { + return null; + } + } + + public PageProgressView getProgressView() { + return mProgress; + } + + public NavigationBarBase getNavigationBar() { + return mNavBar; + } + + public boolean useQuickControls() { + return mUseQuickControls; + } + + public boolean isInLoad() { + return mInLoad; + } + + private ViewGroup.LayoutParams makeLayoutParams() { + if (mUseQuickControls) { + return new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, + LayoutParams.WRAP_CONTENT); + } else { + return new AbsoluteLayout.LayoutParams( + LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, + 0, 0); + } + } + + @Override + public View focusSearch(View focused, int dir) { + if (FOCUS_DOWN == dir && hasFocus()) { + return getCurrentWebView(); + } + return super.focusSearch(focused, dir); + } + + public void onTabDataChanged(Tab tab) { + mSnapshotBar.onTabDataChanged(tab); + if (tab.isSnapshot()) { + mSnapshotBar.setVisibility(VISIBLE); + mNavBar.setVisibility(GONE); + } else { + mSnapshotBar.setVisibility(GONE); + mNavBar.setVisibility(VISIBLE); + } + } + +} diff --git a/src/com/android/browser/TitleBarBase.java b/src/com/android/browser/TitleBarBase.java deleted file mode 100644 index c7fb9c6..0000000 --- a/src/com/android/browser/TitleBarBase.java +++ /dev/null @@ -1,663 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.browser; - -import android.animation.Animator; -import android.animation.Animator.AnimatorListener; -import android.animation.ObjectAnimator; -import android.app.SearchManager; -import android.content.Context; -import android.content.Intent; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.drawable.Drawable; -import android.os.Bundle; -import android.speech.RecognizerResultsIntent; -import android.text.TextUtils; -import android.view.ContextThemeWrapper; -import android.view.Gravity; -import android.view.KeyEvent; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; -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.view.animation.DecelerateInterpolator; -import android.webkit.WebView; -import android.widget.AbsoluteLayout; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.PopupMenu; -import android.widget.PopupMenu.OnMenuItemClickListener; -import android.widget.ProgressBar; -import android.widget.RelativeLayout; -import android.widget.Spinner; -import android.widget.TextView; - -import com.android.browser.UI.DropdownChangeListener; -import com.android.browser.UrlInputView.UrlInputListener; -import com.android.browser.autocomplete.SuggestedTextController.TextChangeWatcher; - -import java.util.List; - -/** - * Base class for a title bar used by the browser. - */ -public class TitleBarBase extends RelativeLayout - implements OnClickListener, OnFocusChangeListener, UrlInputListener, - TextChangeWatcher, DeviceAccountLogin.AutoLoginCallback, - OnMenuItemClickListener { - - protected static final int PROGRESS_MAX = 100; - private static final float ANIM_TITLEBAR_DECELERATE = 2.5f; - - // These need to be set by the subclass. - protected ImageView mFavicon; - protected ImageView mLockIcon; - - protected UiController mUiController; - protected BaseUi mBaseUi; - protected FrameLayout mParent; - protected PageProgressView mProgress; - protected UrlInputView mUrlInput; - protected boolean mInVoiceMode; - protected View mContainer; - private View mUaSwitcher; - - // Auto-login UI - protected View mAutoLogin; - protected Spinner mAutoLoginAccount; - protected Button mAutoLoginLogin; - protected ProgressBar mAutoLoginProgress; - protected TextView mAutoLoginError; - protected View mAutoLoginCancel; - protected DeviceAccountLogin mAutoLoginHandler; - protected ArrayAdapter<String> mAccountsAdapter; - protected boolean mUseQuickControls; - - //state - protected boolean mShowing; - protected boolean mInLoad; - protected boolean mSkipTitleBarAnimations; - private Animator mTitleBarAnimator; - - public TitleBarBase(Context context, UiController controller, BaseUi ui, - FrameLayout parent) { - super(context, null); - mUiController = controller; - mBaseUi = ui; - mParent = parent; - } - - protected void initLayout(Context context, int layoutId) { - LayoutInflater factory = LayoutInflater.from(context); - factory.inflate(layoutId, this); - mContainer = findViewById(R.id.taburlbar); - mProgress = (PageProgressView) findViewById(R.id.progress); - 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 = mAutoLogin.findViewById(R.id.autologin_close); - mAutoLoginCancel.setOnClickListener(this); - } - - protected void setupUrlInput() { - } - - protected void setUseQuickControls(boolean use) { - mUseQuickControls = use; - setLayoutParams(makeLayoutParams()); - } - - void setShowProgressOnly(boolean progress) { - if (progress && !inAutoLogin()) { - mContainer.setVisibility(View.GONE); - } else { - mContainer.setVisibility(View.VISIBLE); - } - } - - void setSkipTitleBarAnimations(boolean skip) { - mSkipTitleBarAnimations = skip; - } - - void setupTitleBarAnimator(Animator animator) { - Resources res = mContext.getResources(); - int duration = res.getInteger(R.integer.titlebar_animation_duration); - animator.setInterpolator(new DecelerateInterpolator( - ANIM_TITLEBAR_DECELERATE)); - animator.setDuration(duration); - } - - void show() { - if (mUseQuickControls) { - mParent.addView(this); - } else { - if (!mSkipTitleBarAnimations) { - cancelTitleBarAnimation(false); - int visibleHeight = getVisibleTitleHeight(); - float startPos = (-getEmbeddedHeight() + visibleHeight); - if (getTranslationY() != 0) { - startPos = Math.max(startPos, getTranslationY()); - } - mTitleBarAnimator = ObjectAnimator.ofFloat(this, - "translationY", - startPos, 0); - setupTitleBarAnimator(mTitleBarAnimator); - mTitleBarAnimator.start(); - } - mBaseUi.setTitleGravity(Gravity.TOP); - } - mShowing = true; - } - - void hide() { - if (mUseQuickControls) { - mParent.removeView(this); - } else { - if (!mSkipTitleBarAnimations) { - cancelTitleBarAnimation(false); - int visibleHeight = getVisibleTitleHeight(); - mTitleBarAnimator = ObjectAnimator.ofFloat(this, - "translationY", getTranslationY(), - (-getEmbeddedHeight() + visibleHeight)); - mTitleBarAnimator.addListener(mHideTileBarAnimatorListener); - setupTitleBarAnimator(mTitleBarAnimator); - mTitleBarAnimator.start(); - } else { - mBaseUi.setTitleGravity(Gravity.NO_GRAVITY); - } - } - mShowing = false; - } - - boolean isShowing() { - return mShowing; - } - - void cancelTitleBarAnimation(boolean reset) { - if (mTitleBarAnimator != null) { - mTitleBarAnimator.cancel(); - mTitleBarAnimator = null; - } - if (reset) { - setTranslationY(0); - } - } - - private AnimatorListener mHideTileBarAnimatorListener = new AnimatorListener() { - - boolean mWasCanceled; - @Override - public void onAnimationStart(Animator animation) { - mWasCanceled = false; - } - - @Override - public void onAnimationRepeat(Animator animation) { - } - - @Override - public void onAnimationEnd(Animator animation) { - if (!mWasCanceled) { - setTranslationY(0); - } - mBaseUi.setTitleGravity(Gravity.NO_GRAVITY); - } - - @Override - public void onAnimationCancel(Animator animation) { - mWasCanceled = true; - } - }; - - private int getVisibleTitleHeight() { - Tab tab = mBaseUi.getActiveTab(); - WebView webview = tab != null ? tab.getWebView() : null; - return webview != null ? webview.getVisibleTitleHeight() : 0; - } - - /** - * Update the progress, from 0 to 100. - */ - void setProgress(int newProgress) { - if (newProgress >= PROGRESS_MAX) { - mProgress.setProgress(PageProgressView.MAX_PROGRESS); - mProgress.setVisibility(View.GONE); - mInLoad = false; - onProgressStopped(); - // check if needs to be hidden - if (!isEditingUrl() && !inAutoLogin()) { - hide(); - if (mUseQuickControls) { - setShowProgressOnly(false); - } - } - } else { - if (!mInLoad) { - mProgress.setVisibility(View.VISIBLE); - mInLoad = true; - onProgressStarted(); - } - mProgress.setProgress(newProgress * PageProgressView.MAX_PROGRESS - / PROGRESS_MAX); - if (!mShowing) { - if (mUseQuickControls && !isEditingUrl()) { - setShowProgressOnly(true); - } - show(); - } - } - } - - protected void onProgressStarted() { - } - - protected void onProgressStopped() { - } - - /* package */ void setLock(Drawable d) { - assert mLockIcon != null; - if (null == d) { - mLockIcon.setVisibility(View.GONE); - } else { - mLockIcon.setImageDrawable(d); - mLockIcon.setVisibility(View.VISIBLE); - } - } - - /* package */ void setFavicon(Bitmap icon) { - mFavicon.setImageDrawable(mBaseUi.getFaviconDrawable(icon)); - } - - public int getEmbeddedHeight() { - int height = mContainer.getHeight(); - if (mAutoLogin.getVisibility() == View.VISIBLE) { - height += mAutoLogin.getHeight(); - } - return height; - } - - 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.INVISIBLE); - 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.INVISIBLE); - mAutoLoginError.setVisibility(View.VISIBLE); - break; - case DeviceAccountLogin.INITIAL: - break; - default: - throw new IllegalStateException(); - } - showAutoLogin(animate); - } else { - hideAutoLogin(animate); - } - } - - protected void showAutoLogin(boolean animate) { - if (mUseQuickControls) { - mBaseUi.showTitleBar(); - } - mAutoLogin.setVisibility(View.VISIBLE); - if (animate) { - mAutoLogin.startAnimation(AnimationUtils.loadAnimation( - getContext(), R.anim.autologin_enter)); - } - } - - protected void hideAutoLogin(boolean animate) { - mAutoLoginHandler = null; - if (mUseQuickControls) { - mBaseUi.hideTitleBar(); - mAutoLogin.setVisibility(View.GONE); - mBaseUi.refreshWebView(); - } else { - 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.INVISIBLE); - mAutoLoginError.setVisibility(View.VISIBLE); - } - - - protected boolean inAutoLogin() { - return mAutoLoginHandler != null; - } - - public void setUaSwitcher(View v) { - if (mUaSwitcher != null) { - mUaSwitcher.setOnClickListener(null); - } - mUaSwitcher = v; - mUaSwitcher.setOnClickListener(this); - } - - @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); - } - } else if (mUaSwitcher == v) { - BrowserSettings settings = BrowserSettings.getInstance(); - WebView web = getCurrentWebView(); - if (web == null) return; - boolean desktop = settings.hasDesktopUseragent(web); - PopupMenu popup = new PopupMenu(mContext, mUaSwitcher); - Menu menu = popup.getMenu(); - popup.getMenuInflater().inflate(R.menu.ua_switcher, menu); - menu.findItem(R.id.ua_mobile_menu_id).setChecked(!desktop); - menu.findItem(R.id.ua_desktop_menu_id).setChecked(desktop); - popup.setOnMenuItemClickListener(this); - popup.show(); - } - } - - @Override - public boolean onMenuItemClick(MenuItem item) { - BrowserSettings settings = BrowserSettings.getInstance(); - WebView web = getCurrentWebView(); - if (web == null) return false; - boolean desktop = settings.hasDesktopUseragent(web); - switch (item.getItemId()) { - case R.id.ua_mobile_menu_id: - if (desktop) { - settings.toggleDesktopUseragent(web); - web.loadUrl(web.getOriginalUrl()); - } - return true; - case R.id.ua_desktop_menu_id: - if (!desktop) { - settings.toggleDesktopUseragent(web); - web.loadUrl(web.getOriginalUrl()); - } - return true; - } - return false; - } - - @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) { - mBaseUi.showTitleBar(); - 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); - } - } - mBaseUi.suggestHideTitleBar(); - } - 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 - - /** - * callback from suggestion dropdown - * user selected a suggestion - */ - @Override - public void onAction(String text, String extra, String source) { - mUiController.getCurrentTopWebView().requestFocus(); - mBaseUi.hideTitleBar(); - Intent i = new Intent(); - String action = null; - if (UrlInputView.VOICE.equals(source)) { - action = RecognizerResultsIntent.ACTION_VOICE_SEARCH_RESULTS; - source = null; - } else { - action = Intent.ACTION_SEARCH; - } - i.setAction(action); - i.putExtra(SearchManager.QUERY, text); - if (extra != null) { - i.putExtra(SearchManager.EXTRA_DATA_KEY, extra); - } - if (source != null) { - Bundle appData = new Bundle(); - appData.putString(com.android.common.Search.SOURCE, source); - i.putExtra(SearchManager.APP_DATA, appData); - } - mUiController.handleNewIntent(i); - setDisplayTitle(text); - } - - @Override - public void onDismiss() { - final Tab currentTab = mBaseUi.getActiveTab(); - mBaseUi.hideTitleBar(); - post(new Runnable() { - public void run() { - clearFocus(); - if ((currentTab != null) && !mInVoiceMode) { - setDisplayTitle(currentTab.getUrl()); - } - } - }); - } - - /** - * callback from the suggestion dropdown - * copy text to input field and stay in edit mode - */ - @Override - public void onCopySuggestion(String text) { - mUrlInput.setText(text, true); - if (text != null) { - mUrlInput.setSelection(text.length()); - } - } - - public void setCurrentUrlIsBookmark(boolean isBookmark) { - } - - @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) { - // editing takes preference of progress - mContainer.setVisibility(View.VISIBLE); - if (mUseQuickControls) { - mProgress.setVisibility(View.GONE); - } - if (!mUrlInput.hasFocus()) { - mUrlInput.requestFocus(); - } - if (clearInput) { - mUrlInput.setText(""); - } else if (mInVoiceMode) { - mUrlInput.showDropDown(); - } - } - - 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/TitleBarPhone.java b/src/com/android/browser/TitleBarPhone.java deleted file mode 100644 index 1fcaf4d..0000000 --- a/src/com/android/browser/TitleBarPhone.java +++ /dev/null @@ -1,182 +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 com.android.browser.autocomplete.SuggestedTextController.TextChangeWatcher; - -import android.app.Activity; -import android.content.Context; -import android.content.res.Resources; -import android.graphics.drawable.Drawable; -import android.view.ContextMenu; -import android.view.MenuInflater; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.View.OnFocusChangeListener; -import android.webkit.WebView; -import android.widget.FrameLayout; -import android.widget.ImageButton; -import android.widget.ImageView; - -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 ImageView mVoiceButton; - private boolean mHasLockIcon; - private ImageButton mForward; - private Drawable mStopDrawable; - private Drawable mRefreshDrawable; - - public TitleBarPhone(Activity activity, UiController controller, PhoneUi ui, - FrameLayout parent) { - super(activity, controller, ui, parent); - mActivity = activity; - initLayout(activity, R.layout.title_bar); - } - - @Override - protected void initLayout(Context context, int layoutId) { - super.initLayout(context, layoutId); - mLockIcon = (ImageView) findViewById(R.id.lock); - mFavicon = (ImageView) findViewById(R.id.favicon); - mStopButton = (ImageView) findViewById(R.id.stop); - mStopButton.setOnClickListener(this); - mVoiceButton = (ImageView) findViewById(R.id.voice); - mVoiceButton.setOnClickListener(this); - mForward = (ImageButton) findViewById(R.id.forward); - mForward.setOnClickListener(this); - setFocusState(false); - Resources res = context.getResources(); - mStopDrawable = res.getDrawable(R.drawable.ic_stop_holo_dark); - mRefreshDrawable = res.getDrawable(R.drawable.ic_refresh_holo_dark); - setUaSwitcher(mFavicon); - mUrlInput.setContainer(this); - } - - @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); - mLockIcon.setVisibility(View.GONE); - mStopButton.setVisibility(View.GONE); - mVoiceButton.setVisibility(View.VISIBLE); - } else { - mLockIcon.setVisibility(mHasLockIcon ? View.VISIBLE : View.GONE); - mStopButton.setVisibility(View.VISIBLE); - mVoiceButton.setVisibility(View.GONE); - } - } - - @Override - void setProgress(int progress) { - super.setProgress(progress); - if (progress == 100) { - mStopButton.setImageDrawable(mRefreshDrawable); - } else if (mStopButton.getDrawable() != mStopDrawable) { - mStopButton.setImageDrawable(mStopDrawable); - } - updateNavigationState(); - } - - /** - * 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 (!isEditingUrl()) { - if (title == null) { - mUrlInput.setText(R.string.new_tab); - } else { - mUrlInput.setText(title); - } - mUrlInput.setSelection(0); - updateNavigationState(); - } - } - - @Override - public void onFocusChange(View v, boolean hasFocus) { - if (v == mUrlInput) { - if (hasFocus) { - mActivity.closeOptionsMenu(); - } - } - super.onFocusChange(v, hasFocus); - } - - @Override - public void onClick(View v) { - if (v == mStopButton) { - if (mInLoad) { - mUiController.stopLoading(); - } else { - WebView web = mBaseUi.getWebView(); - if (web != null) { - web.reload(); - } - } - } else if (v == mVoiceButton) { - mUiController.startVoiceSearch(); - } else if (v == mForward) { - WebView web = mBaseUi.getWebView(); - if (web != null) { - web.goForward(); - } - } else { - super.onClick(v); - } - } - - private void updateNavigationState() { - WebView web = mBaseUi.getWebView(); - if (web != null) { - mForward.setVisibility(web.canGoForward() ? View.VISIBLE : View.GONE); - } - } - -} diff --git a/src/com/android/browser/UI.java b/src/com/android/browser/UI.java index a6356a3..0929c0c 100644 --- a/src/com/android/browser/UI.java +++ b/src/com/android/browser/UI.java @@ -22,6 +22,7 @@ import android.os.Bundle; import android.view.ActionMode; import android.view.KeyEvent; import android.view.Menu; +import android.view.MenuItem; import android.view.View; import android.webkit.WebChromeClient.CustomViewCallback; import android.webkit.WebView; @@ -33,6 +34,12 @@ import java.util.List; */ public interface UI { + public static enum ComboViews { + History, + Bookmarks, + Snapshots, + } + public void onPause(); public void onResume(); @@ -77,9 +84,7 @@ public interface UI { public void removeActiveTabsPage(); - public void showComboView(boolean startWithHistory, Bundle extra); - - public void hideComboView(); + public void showComboView(ComboViews startingView, Bundle extra); public void showCustomView(View view, int requestedOrientation, CustomViewCallback callback); @@ -94,10 +99,14 @@ public interface UI { public boolean onPrepareOptionsMenu(Menu menu); + public void updateMenuState(Tab tab, Menu menu); + public void onOptionsMenuOpened(); public void onExtendedMenuOpened(); + public boolean onOptionsItemSelected(MenuItem item); + public void onOptionsMenuClosed(boolean inLoad); public void onExtendedMenuClosed(boolean inLoad); @@ -125,6 +134,8 @@ public interface UI { void editUrl(boolean clearInput); + boolean isEditingUrl(); + boolean dispatchKey(int code, KeyEvent event); public static interface DropdownChangeListener { @@ -137,4 +148,9 @@ public interface UI { void hideAutoLogin(Tab tab); void setFullscreen(boolean enabled); + + void setUseQuickControls(boolean enabled); + + public boolean shouldCaptureThumbnails(); + } diff --git a/src/com/android/browser/UiController.java b/src/com/android/browser/UiController.java index 05eaf8e..14d498c 100644 --- a/src/com/android/browser/UiController.java +++ b/src/com/android/browser/UiController.java @@ -16,19 +16,20 @@ package com.android.browser; -import com.android.browser.UI.DropdownChangeListener; - import android.content.Intent; +import android.view.Menu; import android.view.MenuItem; import android.webkit.WebView; +import com.android.browser.UI.DropdownChangeListener; + import java.util.List; /** * UI aspect of the controller */ -public interface UiController extends BookmarksHistoryCallbacks { +public interface UiController { UI getUi(); @@ -36,6 +37,8 @@ public interface UiController extends BookmarksHistoryCallbacks { WebView getCurrentTopWebView(); + Tab getCurrentTab(); + TabControl getTabControl(); List<Tab> getTabs(); @@ -57,7 +60,7 @@ public interface UiController extends BookmarksHistoryCallbacks { void stopLoading(); - void bookmarkCurrentPage(boolean canBeAnEdit); + Intent createBookmarkCurrentPageIntent(boolean canBeAnEdit); void bookmarksOrHistoryPicker(boolean openHistory); @@ -69,14 +72,10 @@ public interface UiController extends BookmarksHistoryCallbacks { void editUrl(); - void removeActiveTabsPage(boolean attach); - void handleNewIntent(Intent intent); boolean shouldShowErrorConsole(); - void removeComboView(); - void hideCustomView(); void attachSubWindow(Tab tab); @@ -89,12 +88,14 @@ public interface UiController extends BookmarksHistoryCallbacks { void shareCurrentPage(); - void registerOptionsMenuHandler(OptionsMenuHandler handler); - - void unregisterOptionsMenuHandler(OptionsMenuHandler handler); + void updateMenuState(Tab tab, Menu menu); void registerDropdownChangeListener(DropdownChangeListener d); boolean onOptionsItemSelected(MenuItem item); + SnapshotTab createNewSnapshotTab(long snapshotId, boolean setActive); + + void loadUrl(Tab tab, String url); + } diff --git a/src/com/android/browser/UrlHandler.java b/src/com/android/browser/UrlHandler.java index 17d4062..74a58f3 100644 --- a/src/com/android/browser/UrlHandler.java +++ b/src/com/android/browser/UrlHandler.java @@ -257,6 +257,8 @@ public class UrlHandler { } protected void onPostExecute(String result) { + // abort if we left browser already + if (mController.isActivityPaused()) return; // Make sure the Tab was not closed while handling the task if (mController.getTabControl().getTabPosition(mTab) != -1) { // If the Activity Manager is not invoked, load the URL directly diff --git a/src/com/android/browser/UrlInputView.java b/src/com/android/browser/UrlInputView.java index 7545e6a..2acc69b 100644 --- a/src/com/android/browser/UrlInputView.java +++ b/src/com/android/browser/UrlInputView.java @@ -16,14 +16,6 @@ package com.android.browser; -import com.android.browser.SuggestionsAdapter.CompletionListener; -import com.android.browser.SuggestionsAdapter.SuggestItem; -import com.android.browser.UI.DropdownChangeListener; -import com.android.browser.autocomplete.SuggestiveAutoCompleteTextView; -import com.android.browser.search.SearchEngine; -import com.android.browser.search.SearchEngineInfo; -import com.android.browser.search.SearchEngines; - import android.content.Context; import android.content.res.Configuration; import android.database.DataSetObserver; @@ -32,6 +24,7 @@ import android.text.TextUtils; import android.util.AttributeSet; import android.util.Patterns; import android.view.KeyEvent; +import android.view.MotionEvent; import android.view.View; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; @@ -40,6 +33,15 @@ import android.widget.AdapterView.OnItemClickListener; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; +import com.android.browser.SuggestionsAdapter.CompletionListener; +import com.android.browser.SuggestionsAdapter.SuggestItem; +import com.android.browser.UI.DropdownChangeListener; +import com.android.browser.autocomplete.SuggestedTextController.TextChangeWatcher; +import com.android.browser.autocomplete.SuggestiveAutoCompleteTextView; +import com.android.browser.search.SearchEngine; +import com.android.browser.search.SearchEngineInfo; +import com.android.browser.search.SearchEngines; + import java.util.List; /** @@ -48,13 +50,20 @@ import java.util.List; */ public class UrlInputView extends SuggestiveAutoCompleteTextView implements OnEditorActionListener, - CompletionListener, OnItemClickListener { - + CompletionListener, OnItemClickListener, TextChangeWatcher { static final String TYPED = "browser-type"; static final String SUGGESTED = "browser-suggest"; static final String VOICE = "voice-search"; + static interface StateListener { + static final int STATE_NORMAL = 0; + static final int STATE_HIGHLIGHTED = 1; + static final int STATE_EDITED = 2; + + public void onStateChanged(int state); + } + private UrlInputListener mListener; private InputMethodManager mInputManager; private SuggestionsAdapter mAdapter; @@ -64,6 +73,9 @@ public class UrlInputView extends SuggestiveAutoCompleteTextView private boolean mNeedsUpdate; private DropdownChangeListener mDropdownListener; + private int mState; + private StateListener mStateListener; + public UrlInputView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(context); @@ -90,6 +102,7 @@ public class UrlInputView extends SuggestiveAutoCompleteTextView setOnItemClickListener(this); mNeedsUpdate = false; mDropdownListener = null; + addQueryTextWatcher(this); mAdapter.registerDataSetObserver(new DataSetObserver() { @Override @@ -105,6 +118,32 @@ public class UrlInputView extends SuggestiveAutoCompleteTextView dispatchChange(); } }); + mState = StateListener.STATE_NORMAL; + } + + protected void onFocusChanged(boolean focused, int direction, Rect prevRect) { + super.onFocusChanged(focused, direction, prevRect); + if (focused) { + if (hasSelection()) { + changeState(StateListener.STATE_HIGHLIGHTED); + } else { + changeState(StateListener.STATE_EDITED); + } + } else { + // reset the selection state + changeState(StateListener.STATE_NORMAL); + } + } + + @Override + public boolean onTouchEvent(MotionEvent evt) { + boolean hasSelection = hasSelection(); + boolean res = super.onTouchEvent(evt); + if ((MotionEvent.ACTION_DOWN == evt.getActionMasked()) + && hasSelection) { + changeState(StateListener.STATE_EDITED); + } + return res; } /** @@ -135,6 +174,23 @@ public class UrlInputView extends SuggestiveAutoCompleteTextView mListener = listener; } + public void setStateListener(StateListener listener) { + mStateListener = listener; + // update listener + changeState(mState); + } + + private void changeState(int newState) { + mState = newState; + if (mStateListener != null) { + mStateListener.onStateChanged(mState); + } + } + + int getState() { + return mState; + } + void setVoiceResults(List<String> voiceResults) { mAdapter.setVoiceResults(voiceResults); } @@ -305,4 +361,12 @@ public class UrlInputView extends SuggestiveAutoCompleteTextView public boolean requestRectangleOnScreen(Rect rect, boolean immediate) { return false; } + + @Override + public void onTextChanged(String newText) { + if (StateListener.STATE_HIGHLIGHTED == mState) { + changeState(StateListener.STATE_EDITED); + } + } + } diff --git a/src/com/android/browser/UrlUtils.java b/src/com/android/browser/UrlUtils.java index 26f8e0e..c922e55 100644 --- a/src/com/android/browser/UrlUtils.java +++ b/src/com/android/browser/UrlUtils.java @@ -85,7 +85,22 @@ public class UrlUtils { * */ public static String smartUrlFilter(String url) { + return smartUrlFilter(url, true); + } + /** + * Attempts to determine whether user input is a URL or search + * terms. Anything with a space is passed to search if canBeSearch is true. + * + * Converts to lowercase any mistakenly uppercased schema (i.e., + * "Http://" converts to "http://" + * + * @param canBeSearch If true, will return a search url if it isn't a valid + * URL. If false, invalid URLs will return null + * @return Original or modified URL + * + */ + public static String smartUrlFilter(String url, boolean canBeSearch) { String inUrl = url.trim(); boolean hasSpace = inUrl.indexOf(' ') != -1; @@ -97,7 +112,7 @@ public class UrlUtils { if (!lcScheme.equals(scheme)) { inUrl = lcScheme + matcher.group(2); } - if (hasSpace) { + if (hasSpace && Patterns.WEB_URL.matcher(inUrl).matches()) { inUrl = inUrl.replace(" ", "%20"); } return inUrl; @@ -107,12 +122,11 @@ public class UrlUtils { return URLUtil.guessUrl(inUrl); } } - - // FIXME: Is this the correct place to add to searches? - // what if someone else calls this function? - -// Browser.addSearchUrl(mBrowser.getContentResolver(), inUrl); - return URLUtil.composeSearchUrl(inUrl, QUICKSEARCH_G, QUERY_PLACE_HOLDER); + if (canBeSearch) { + return URLUtil.composeSearchUrl(inUrl, + QUICKSEARCH_G, QUERY_PLACE_HOLDER); + } + return null; } /* package */ static String fixUrl(String inUrl) { diff --git a/src/com/android/browser/WallpaperHandler.java b/src/com/android/browser/WallpaperHandler.java index cd896da..6437b1a 100644 --- a/src/com/android/browser/WallpaperHandler.java +++ b/src/com/android/browser/WallpaperHandler.java @@ -162,6 +162,7 @@ public class WallpaperHandler extends Thread Canvas canvas = new Canvas(bm); oldWallpaper.setBounds(0, 0, width, height); oldWallpaper.draw(canvas); + canvas.setBitmap(null); try { wm.setBitmap(bm); } catch (IOException e) { diff --git a/src/com/android/browser/WebStorageSizeManager.java b/src/com/android/browser/WebStorageSizeManager.java index bd7f8e6..109a02b 100644 --- a/src/com/android/browser/WebStorageSizeManager.java +++ b/src/com/android/browser/WebStorageSizeManager.java @@ -189,7 +189,7 @@ public class WebStorageSizeManager { */ public WebStorageSizeManager(Context ctx, DiskInfo diskInfo, AppCacheInfo appCacheInfo) { - mContext = ctx; + mContext = ctx.getApplicationContext(); mDiskInfo = diskInfo; mGlobalLimit = getGlobalLimit(); // The initial max size of the app cache is either 25% of the global diff --git a/src/com/android/browser/WebViewController.java b/src/com/android/browser/WebViewController.java index 018af99..f4ff764 100644 --- a/src/com/android/browser/WebViewController.java +++ b/src/com/android/browser/WebViewController.java @@ -17,6 +17,7 @@ package com.android.browser; import android.app.Activity; +import android.content.Context; import android.graphics.Bitmap; import android.net.Uri; import android.net.http.SslError; @@ -36,6 +37,8 @@ import java.util.List; */ public interface WebViewController { + Context getContext(); + Activity getActivity(); TabControl getTabControl(); @@ -72,7 +75,7 @@ public interface WebViewController { void onDownloadStart(Tab tab, String url, String useragent, String contentDisposition, String mimeType, long contentLength); - void showCustomView(Tab tab, View view, int requestedOrientation, + void showCustomView(Tab tab, View view, int requestedOrientation, WebChromeClient.CustomViewCallback callback); void hideCustomView(); @@ -119,4 +122,6 @@ public interface WebViewController { void showAutoLogin(Tab tab); void hideAutoLogin(Tab tab); + + boolean shouldCaptureThumbnails(); } diff --git a/src/com/android/browser/WebViewTimersControl.java b/src/com/android/browser/WebViewTimersControl.java new file mode 100644 index 0000000..d6d1726 --- /dev/null +++ b/src/com/android/browser/WebViewTimersControl.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.browser; + +import android.os.Looper; +import android.util.Log; +import android.webkit.WebView; + +/** + * Centralised point for controlling WebView timers pausing and resuming. + * + * All methods on this class should only be called from the UI thread. + */ +public class WebViewTimersControl { + + private static final boolean LOGD_ENABLED = com.android.browser.Browser.LOGD_ENABLED; + private static final String LOGTAG = "WebViewTimersControl"; + + private static WebViewTimersControl sInstance; + + private boolean mBrowserActive; + private boolean mPrerenderActive; + + /** + * Get the static instance. Must be called from UI thread. + */ + public static WebViewTimersControl getInstance() { + if (Looper.myLooper() != Looper.getMainLooper()) { + throw new IllegalStateException("WebViewTimersControl.get() called on wrong thread"); + } + if (sInstance == null) { + sInstance = new WebViewTimersControl(); + } + return sInstance; + } + + private WebViewTimersControl() { + } + + private void resumeTimers(WebView wv) { + if (LOGD_ENABLED) Log.d(LOGTAG, "Resuming webview timers, view=" + wv); + if (wv != null) { + wv.resumeTimers(); + } + } + + private void maybePauseTimers(WebView wv) { + if (!mBrowserActive && !mPrerenderActive && wv != null) { + if (LOGD_ENABLED) Log.d(LOGTAG, "Pausing webview timers, view=" + wv); + wv.pauseTimers(); + } + } + + public void onBrowserActivityResume(WebView wv) { + if (LOGD_ENABLED) Log.d(LOGTAG, "onBrowserActivityResume"); + mBrowserActive = true; + resumeTimers(wv); + } + + public void onBrowserActivityPause(WebView wv) { + if (LOGD_ENABLED) Log.d(LOGTAG, "onBrowserActivityPause"); + mBrowserActive = false; + maybePauseTimers(wv); + } + + public void onPrerenderStart(WebView wv) { + if (LOGD_ENABLED) Log.d(LOGTAG, "onPrerenderStart"); + mPrerenderActive = true; + resumeTimers(wv); + } + + public void onPrerenderDone(WebView wv) { + if (LOGD_ENABLED) Log.d(LOGTAG, "onPrerenderDone"); + mPrerenderActive = false; + maybePauseTimers(wv); + } + +} diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java index 84ad6ea..5c11b58 100644 --- a/src/com/android/browser/XLargeUi.java +++ b/src/com/android/browser/XLargeUi.java @@ -16,8 +16,6 @@ package com.android.browser; -import com.android.browser.BrowserWebView.ScrollListener; - import android.app.ActionBar; import android.app.Activity; import android.os.Bundle; @@ -27,6 +25,7 @@ import android.view.ActionMode; import android.view.Gravity; import android.view.KeyEvent; import android.view.View; +import android.view.ViewGroup; import android.webkit.WebChromeClient.CustomViewCallback; import android.webkit.WebView; @@ -42,10 +41,9 @@ public class XLargeUi extends BaseUi { private ActionBar mActionBar; private TabBar mTabBar; - private TitleBarXLarge mTitleBar; + private NavigationBarTablet mNavBar; - private boolean mUseQuickControls; - private PieControl mPieControl; + private PieControlXLarge mPieControl; private Handler mHandler; /** @@ -55,9 +53,7 @@ public class XLargeUi extends BaseUi { public XLargeUi(Activity browser, UiController controller) { super(browser, controller); mHandler = new Handler(); - mTitleBar = new TitleBarXLarge(mActivity, mUiController, this, - mContentView); - mTitleBar.setProgress(100); + mNavBar = (NavigationBarTablet) mTitleBar.getNavigationBar(); mTabBar = new TabBar(mActivity, mUiController, this); mActionBar = mActivity.getActionBar(); setupActionBar(); @@ -70,34 +66,27 @@ public class XLargeUi extends BaseUi { mActionBar.setCustomView(mTabBar); } - @Override - public void showComboView(boolean startWithHistory, Bundle extras) { - super.showComboView(startWithHistory, extras); + public void showComboView(ComboViews startWith, Bundle extras) { + super.showComboView(startWith, extras); if (mUseQuickControls) { mActionBar.show(); } } @Override - public void hideComboView() { - if (isComboViewShowing()) { - super.hideComboView(); - // ComboView changes the action bar, set it back up to what we want - setupActionBar(); - checkTabCount(); - } - } - - private void setUseQuickControls(boolean useQuickControls) { + public void setUseQuickControls(boolean useQuickControls) { mUseQuickControls = useQuickControls; mTitleBar.setUseQuickControls(mUseQuickControls); if (useQuickControls) { checkTabCount(); - mPieControl = new PieControl(mActivity, mUiController, this); + mPieControl = new PieControlXLarge(mActivity, mUiController, this); mPieControl.attachToContainer(mContentView); WebView web = getWebView(); if (web != null) { web.setEmbeddedTitleBar(null); + // don't show url bar on scrolling + web.setOnTouchListener(null); + } } else { mActivity.getActionBar().show(); @@ -106,11 +95,21 @@ public class XLargeUi extends BaseUi { } WebView web = getWebView(); if (web != null) { + if (mTitleBar.getParent() != null) { + ViewGroup p = (ViewGroup) mTitleBar.getParent(); + p.removeView(mTitleBar); + } web.setEmbeddedTitleBar(mTitleBar); + // show url bar on scrolling + web.setOnTouchListener(this); } setTitleGravity(Gravity.NO_GRAVITY); } mTabBar.setUseQuickControls(mUseQuickControls); + // We need to update the tabs with this change + for (Tab t : mTabControl.getTabs()) { + t.updateShouldCaptureThumbnails(); + } } private void checkTabCount() { @@ -127,7 +126,7 @@ public class XLargeUi extends BaseUi { public void onResume() { super.onResume(); if (!BrowserSettings.getInstance().useInstantSearch()) { - mTitleBar.clearCompletions(); + mNavBar.clearCompletions(); } } @@ -136,27 +135,6 @@ public class XLargeUi extends BaseUi { hideTitleBar(); } - // webview factory - - @Override - public WebView createWebView(boolean privateBrowsing) { - // Create a new WebView - BrowserWebView w = (BrowserWebView) super.createWebView(privateBrowsing); - w.setScrollListener(this); - return w; - } - - @Override - public WebView createSubWebView(boolean privateBrowsing) { - return super.createWebView(privateBrowsing); - } - - @Override - public void onScroll(int visibleTitleHeight, boolean userInitiated) { - super.onScroll(visibleTitleHeight, userInitiated); - mTabBar.onScroll(visibleTitleHeight, userInitiated); - } - void stopWebViewScrolling() { BrowserWebView web = (BrowserWebView) mUiController.getCurrentWebView(); if (web != null) { @@ -188,11 +166,6 @@ public class XLargeUi extends BaseUi { public void setActiveTab(final Tab tab) { mTitleBar.cancelTitleBarAnimation(true); mTitleBar.setSkipTitleBarAnimations(true); - if (mUseQuickControls) { - if (mActiveTab != null) { - captureTab(mActiveTab); - } - } super.setActiveTab(tab); BrowserWebView view = (BrowserWebView) tab.getWebView(); // TabControl.setCurrentTab has been called before this, @@ -204,14 +177,11 @@ public class XLargeUi extends BaseUi { // Request focus on the top window. if (mUseQuickControls) { mPieControl.forceToTop(mContentView); - view.setScrollListener(null); - mTabBar.showTitleBarIndicator(false); } else { // check if title bar is already attached by animation - if (mTitleBar.getParent() == null && !tab.isSnapshot()) { + if (mTitleBar.getParent() == null) { view.setEmbeddedTitleBar(mTitleBar); } - view.setScrollListener(this); } mTabBar.onSetActiveTab(tab); if (tab.isInVoiceSearchMode()) { @@ -253,37 +223,30 @@ public class XLargeUi extends BaseUi { @Override public void editUrl(boolean clearInput) { if (mUseQuickControls) { - getTitleBar().setShowProgressOnly(false); + mTitleBar.setShowProgressOnly(false); } super.editUrl(clearInput); } void stopEditingUrl() { - mTitleBar.stopEditingUrl(); + mTitleBar.getNavigationBar().stopEditingUrl(); } @Override protected void showTitleBar() { if (canShowTitleBar()) { mTitleBar.show(); - mTabBar.onShowTitleBar(); } } @Override protected void hideTitleBar() { if (isTitleBarShowing()) { - mTabBar.onHideTitleBar(); mTitleBar.hide(); } } @Override - protected TitleBarBase getTitleBar() { - return mTitleBar; - } - - @Override protected void setTitleGravity(int gravity) { if (!mUseQuickControls) { super.setTitleGravity(gravity); @@ -295,7 +258,7 @@ public class XLargeUi extends BaseUi { @Override public void onActionModeStarted(ActionMode mode) { if (!mTitleBar.isEditingUrl()) { - // hide the fake title bar when CAB is shown + // hide the title bar when CAB is shown hideTitleBar(); } } @@ -315,7 +278,7 @@ public class XLargeUi extends BaseUi { @Override protected void updateNavigationState(Tab tab) { - mTitleBar.updateNavigationState(tab); + mNavBar.updateNavigationState(tab); } @Override @@ -332,19 +295,6 @@ public class XLargeUi extends BaseUi { } @Override - public void showVoiceTitleBar(String title, List<String> vsresults) { - mTitleBar.setInVoiceMode(true, vsresults); - mTitleBar.setDisplayTitle(title); - } - - @Override - public void revertVoiceTitleBar(Tab tab) { - mTitleBar.setInVoiceMode(false, null); - String url = tab.getUrl(); - mTitleBar.setDisplayTitle(url); - } - - @Override public void showCustomView(View view, int requestedOrientation, CustomViewCallback callback) { super.showCustomView(view, requestedOrientation, callback); @@ -393,4 +343,9 @@ public class XLargeUi extends BaseUi { return mTabBar; } + @Override + public boolean shouldCaptureThumbnails() { + return mUseQuickControls; + } + } diff --git a/src/com/android/browser/addbookmark/FolderSpinnerAdapter.java b/src/com/android/browser/addbookmark/FolderSpinnerAdapter.java index 67563c0..f86c9c6 100644 --- a/src/com/android/browser/addbookmark/FolderSpinnerAdapter.java +++ b/src/com/android/browser/addbookmark/FolderSpinnerAdapter.java @@ -154,4 +154,10 @@ public class FolderSpinnerAdapter extends BaseAdapter { notifyDataSetChanged(); } + public void clearRecentFolder() { + if (mIncludesRecentFolder) { + mIncludesRecentFolder = false; + notifyDataSetChanged(); + } + } } diff --git a/src/com/android/browser/homepages/RequestHandler.java b/src/com/android/browser/homepages/RequestHandler.java index a53fb52..248bf53 100644 --- a/src/com/android/browser/homepages/RequestHandler.java +++ b/src/com/android/browser/homepages/RequestHandler.java @@ -51,7 +51,7 @@ public class RequestHandler extends Thread { public RequestHandler(Context context, Uri uri, OutputStream out) {
mUri = uri;
- mContext = context;
+ mContext = context.getApplicationContext();
mOutput = out;
}
diff --git a/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java b/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java index b7d06a1..312a61e 100644 --- a/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java +++ b/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java @@ -45,6 +45,9 @@ public class AccessibilityPreferencesFragment extends PreferenceFragment e = findPreference(PreferenceKeys.PREF_TEXT_ZOOM); e.setOnPreferenceChangeListener(this); updateTextZoomSummary(e, settings.getTextZoom()); + e = findPreference(PreferenceKeys.PREF_INVERTED_CONTRAST); + e.setOnPreferenceChangeListener(this); + updateInvertedContrastSummary(e, (int) (settings.getInvertedContrast() * 100)); } void updateMinFontSummary(Preference pref, int minFontSize) { @@ -56,6 +59,10 @@ public class AccessibilityPreferencesFragment extends PreferenceFragment pref.setSummary(mFormat.format(textZoom / 100.0)); } + void updateInvertedContrastSummary(Preference pref, int contrast) { + pref.setSummary(mFormat.format(contrast / 100.0)); + } + @Override public boolean onPreferenceChange(Preference pref, Object objValue) { if (getActivity() == null) { @@ -72,7 +79,11 @@ public class AccessibilityPreferencesFragment extends PreferenceFragment updateTextZoomSummary(pref, BrowserSettings .getAdjustedTextZoom((Integer) objValue)); } + if (PreferenceKeys.PREF_INVERTED_CONTRAST.equals(pref.getKey())) { + updateInvertedContrastSummary(pref, + (int) ((10 + (Integer) objValue) * 10)); + } return true; } -}
\ No newline at end of file +} diff --git a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java index 2cc504e..0a97ba0 100644 --- a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java +++ b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java @@ -61,12 +61,16 @@ public class AdvancedPreferencesFragment extends PreferenceFragment e = findPreference(PreferenceKeys.PREF_RESET_DEFAULT_PREFERENCES); e.setOnPreferenceChangeListener(this); + e = findPreference(PreferenceKeys.PREF_SEARCH_ENGINE); + e.setOnPreferenceChangeListener(this); + updateListPreferenceSummary((ListPreference) e); + e = findPreference(PreferenceKeys.PREF_PLUGIN_STATE); e.setOnPreferenceChangeListener(this); - updatePluginSummary((ListPreference) e); + updateListPreferenceSummary((ListPreference) e); } - void updatePluginSummary(ListPreference e) { + void updateListPreferenceSummary(ListPreference e) { e.setSummary(e.getEntry()); } @@ -121,10 +125,11 @@ public class AdvancedPreferencesFragment extends PreferenceFragment getActivity(), BrowserActivity.class)); return true; } - } else if (pref.getKey().equals(PreferenceKeys.PREF_PLUGIN_STATE)) { + } else if (pref.getKey().equals(PreferenceKeys.PREF_PLUGIN_STATE) + || pref.getKey().equals(PreferenceKeys.PREF_SEARCH_ENGINE)) { ListPreference lp = (ListPreference) pref; lp.setValue((String) objValue); - updatePluginSummary(lp); + updateListPreferenceSummary(lp); return false; } return false; diff --git a/src/com/android/browser/preferences/BandwidthPreferencesFragment.java b/src/com/android/browser/preferences/BandwidthPreferencesFragment.java new file mode 100644 index 0000000..18b9fa4 --- /dev/null +++ b/src/com/android/browser/preferences/BandwidthPreferencesFragment.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.browser.preferences; + +import android.content.res.Resources; +import android.os.Bundle; +import android.preference.Preference; +import android.preference.PreferenceFragment; +import android.util.Log; + +import com.android.browser.PreferenceKeys; +import com.android.browser.R; + +public class BandwidthPreferencesFragment extends PreferenceFragment { + + static final String TAG = "BandwidthPreferencesFragment"; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + // Load the XML preferences file + addPreferencesFromResource(R.xml.bandwidth_preferences); + } + +} diff --git a/src/com/android/browser/preferences/DebugPreferencesFragment.java b/src/com/android/browser/preferences/DebugPreferencesFragment.java index 984c12a..566eee2 100644 --- a/src/com/android/browser/preferences/DebugPreferencesFragment.java +++ b/src/com/android/browser/preferences/DebugPreferencesFragment.java @@ -18,6 +18,7 @@ package com.android.browser.preferences; import com.android.browser.BrowserActivity; import com.android.browser.BrowserSettings; +import com.android.browser.GoogleAccountLogin; import com.android.browser.PreferenceKeys; import com.android.browser.R; @@ -25,10 +26,11 @@ import android.content.Intent; import android.os.Bundle; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; +import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceFragment; public class DebugPreferencesFragment extends PreferenceFragment - implements OnPreferenceChangeListener { + implements OnPreferenceChangeListener, OnPreferenceClickListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -38,6 +40,8 @@ public class DebugPreferencesFragment extends PreferenceFragment Preference e = findPreference(PreferenceKeys.PREF_ENABLE_HARDWARE_ACCEL); e.setOnPreferenceChangeListener(this); + e = findPreference(PreferenceKeys.PREF_RESET_PRELOGIN); + e.setOnPreferenceClickListener(this); } @Override @@ -47,4 +51,15 @@ public class DebugPreferencesFragment extends PreferenceFragment getActivity(), BrowserActivity.class)); return true; } + + @Override + public boolean onPreferenceClick(Preference preference) { + if (PreferenceKeys.PREF_RESET_PRELOGIN.equals(preference.getKey())) { + BrowserSettings.getInstance().getPreferences().edit() + .remove(GoogleAccountLogin.PREF_AUTOLOGIN_TIME) + .apply(); + return true; + } + return false; + } } diff --git a/src/com/android/browser/preferences/LabPreferencesFragment.java b/src/com/android/browser/preferences/LabPreferencesFragment.java index 0dd8805..ca3a86a 100644 --- a/src/com/android/browser/preferences/LabPreferencesFragment.java +++ b/src/com/android/browser/preferences/LabPreferencesFragment.java @@ -16,23 +16,16 @@ package com.android.browser.preferences; -import com.android.browser.BrowserActivity; +import android.os.Bundle; +import android.preference.Preference; +import android.preference.PreferenceFragment; + import com.android.browser.BrowserSettings; import com.android.browser.PreferenceKeys; import com.android.browser.R; import com.android.browser.search.SearchEngine; -import android.app.AlertDialog; -import android.content.Intent; -import android.os.Bundle; -import android.preference.Preference; -import android.preference.Preference.OnPreferenceChangeListener; -import android.preference.PreferenceFragment; -import android.view.LayoutInflater; -import android.view.View; - -public class LabPreferencesFragment extends PreferenceFragment - implements OnPreferenceChangeListener { +public class LabPreferencesFragment extends PreferenceFragment { private BrowserSettings mBrowserSettings; private Preference useInstantPref; @@ -44,17 +37,9 @@ public class LabPreferencesFragment extends PreferenceFragment // Load the XML preferences file addPreferencesFromResource(R.xml.lab_preferences); - registerChangeListener(PreferenceKeys.PREF_ENABLE_QUICK_CONTROLS); useInstantPref = findPreference(PreferenceKeys.PREF_USE_INSTANT_SEARCH); } - private void registerChangeListener(String key) { - Preference e = findPreference(key); - if (e != null) { - e.setOnPreferenceChangeListener(this); - } - } - @Override public void onResume() { super.onResume(); @@ -72,14 +57,4 @@ public class LabPreferencesFragment extends PreferenceFragment } } - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - String key = preference.getKey(); - if (PreferenceKeys.PREF_ENABLE_QUICK_CONTROLS.equals(key)) { - // Attempt to restart - startActivity(new Intent(BrowserActivity.ACTION_RESTART, null, - getActivity(), BrowserActivity.class)); - } - return true; - } } diff --git a/src/com/android/browser/preferences/WebViewPreview.java b/src/com/android/browser/preferences/WebViewPreview.java index 1886bed..27c4f00 100644 --- a/src/com/android/browser/preferences/WebViewPreview.java +++ b/src/com/android/browser/preferences/WebViewPreview.java @@ -17,6 +17,7 @@ package com.android.browser.preferences; import com.android.browser.BrowserSettings; +import com.android.browser.PreferenceKeys; import com.android.browser.R; import android.content.Context; @@ -68,6 +69,7 @@ public class WebViewPreview extends Preference implements OnSharedPreferenceChan BrowserSettings bs = BrowserSettings.getInstance(); ws.setMinimumFontSize(bs.getMinimumFontSize()); ws.setTextZoom(bs.getTextZoom()); + ws.setProperty(PreferenceKeys.PREF_INVERTED_CONTRAST, Float.toString(bs.getInvertedContrast())); mWebView.loadData(mHtml, "text/html", "utf-8"); } diff --git a/src/com/android/browser/preferences/WebsiteSettingsFragment.java b/src/com/android/browser/preferences/WebsiteSettingsFragment.java index 6339d72..a2ccca1 100644 --- a/src/com/android/browser/preferences/WebsiteSettingsFragment.java +++ b/src/com/android/browser/preferences/WebsiteSettingsFragment.java @@ -16,27 +16,22 @@ package com.android.browser.preferences; -import com.android.browser.R; -import com.android.browser.WebStorageSizeManager; - import android.app.AlertDialog; -import android.app.FragmentTransaction; import android.app.ListFragment; import android.content.Context; import android.content.DialogInterface; -import android.content.res.Resources; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; +import android.os.Parcel; +import android.os.Parcelable; import android.preference.PreferenceActivity; -import android.preference.PreferenceFragment; import android.provider.BrowserContract.Bookmarks; import android.util.Log; import android.view.LayoutInflater; -import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; @@ -44,12 +39,13 @@ import android.webkit.GeolocationPermissions; import android.webkit.ValueCallback; import android.webkit.WebStorage; import android.widget.AdapterView; -import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; -import java.io.Serializable; +import com.android.browser.R; +import com.android.browser.WebStorageSizeManager; + import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -69,7 +65,7 @@ public class WebsiteSettingsFragment extends ListFragment implements OnClickList private SiteAdapter mAdapter = null; private Site mSite = null; - static class Site implements Serializable { + static class Site implements Parcelable { private String mOrigin; private String mTitle; private Bitmap mIcon; @@ -160,6 +156,38 @@ public class WebsiteSettingsFragment extends ListFragment implements OnClickList Uri uri = Uri.parse(str); return "http".equals(uri.getScheme()) ? str.substring(7) : str; } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(mOrigin); + dest.writeString(mTitle); + dest.writeInt(mFeatures); + dest.writeParcelable(mIcon, flags); + } + + private Site(Parcel in) { + mOrigin = in.readString(); + mTitle = in.readString(); + mFeatures = in.readInt(); + mIcon = in.readParcelable(null); + } + + public static final Parcelable.Creator<Site> CREATOR + = new Parcelable.Creator<Site>() { + public Site createFromParcel(Parcel in) { + return new Site(in); + } + + public Site[] newArray(int size) { + return new Site[size]; + } + }; + } class SiteAdapter extends ArrayAdapter<Site> @@ -268,7 +296,7 @@ public class WebsiteSettingsFragment extends ListFragment implements OnClickList private Map<String, Site> mSites; public UpdateFromBookmarksDbTask(Context ctx, Map<String, Site> sites) { - mContext = ctx; + mContext = ctx.getApplicationContext(); mSites = sites; } @@ -597,7 +625,7 @@ public class WebsiteSettingsFragment extends ListFragment implements OnClickList PreferenceActivity activity = (PreferenceActivity) getActivity(); if (activity != null) { Bundle args = new Bundle(); - args.putSerializable(EXTRA_SITE, site); + args.putParcelable(EXTRA_SITE, site); activity.startPreferencePanel(WebsiteSettingsFragment.class.getName(), args, 0, site.getPrettyTitle(), null, 0); } @@ -615,7 +643,7 @@ public class WebsiteSettingsFragment extends ListFragment implements OnClickList View view = inflater.inflate(R.layout.website_settings, container, false); Bundle args = getArguments(); if (args != null) { - mSite = (Site) args.getSerializable(EXTRA_SITE); + mSite = (Site) args.getParcelable(EXTRA_SITE); } if (mSite == null) { View clear = view.findViewById(R.id.clear_all_button); diff --git a/src/com/android/browser/provider/BrowserProvider.java b/src/com/android/browser/provider/BrowserProvider.java index b55b84a..fabf57e 100644 --- a/src/com/android/browser/provider/BrowserProvider.java +++ b/src/com/android/browser/provider/BrowserProvider.java @@ -251,7 +251,7 @@ public class BrowserProvider extends ContentProvider { public DatabaseHelper(Context context) { super(context, sDatabaseName, null, DATABASE_VERSION); - mContext = context; + mContext = context.getApplicationContext(); } @Override diff --git a/src/com/android/browser/provider/BrowserProvider2.java b/src/com/android/browser/provider/BrowserProvider2.java index 06e4e4a..0c1fd42 100644 --- a/src/com/android/browser/provider/BrowserProvider2.java +++ b/src/com/android/browser/provider/BrowserProvider2.java @@ -68,24 +68,28 @@ import java.util.HashMap; public class BrowserProvider2 extends SQLiteContentProvider { - public static interface Snapshots { - - public static final Uri CONTENT_URI = Uri.withAppendedPath( - BrowserContract.AUTHORITY_URI, "snapshots"); - public static final String _ID = "_id"; - public static final String VIEWSTATE = "view_state"; - public static final String BACKGROUND = "background"; - public static final String TITLE = History.TITLE; - public static final String URL = History.URL; - public static final String FAVICON = History.FAVICON; - } - public static final String PARAM_GROUP_BY = "groupBy"; public static final String LEGACY_AUTHORITY = "browser"; static final Uri LEGACY_AUTHORITY_URI = new Uri.Builder() .authority(LEGACY_AUTHORITY).scheme("content").build(); + public static interface Thumbnails { + public static final Uri CONTENT_URI = Uri.withAppendedPath( + BrowserContract.AUTHORITY_URI, "thumbnails"); + public static final String _ID = "_id"; + public static final String THUMBNAIL = "thumbnail"; + } + + public static interface OmniboxSuggestions { + public static final Uri CONTENT_URI = Uri.withAppendedPath( + BrowserContract.AUTHORITY_URI, "omnibox_suggestions"); + public static final String _ID = "_id"; + public static final String URL = "url"; + public static final String TITLE = "title"; + public static final String IS_BOOKMARK = "bookmark"; + } + static final String TABLE_BOOKMARKS = "bookmarks"; static final String TABLE_HISTORY = "history"; static final String TABLE_IMAGES = "images"; @@ -93,6 +97,7 @@ public class BrowserProvider2 extends SQLiteContentProvider { static final String TABLE_SYNC_STATE = "syncstate"; static final String TABLE_SETTINGS = "settings"; static final String TABLE_SNAPSHOTS = "snapshots"; + static final String TABLE_THUMBNAILS = "thumbnails"; static final String TABLE_BOOKMARKS_JOIN_IMAGES = "bookmarks LEFT OUTER JOIN images " + "ON bookmarks.url = images." + Images.URL; @@ -101,6 +106,7 @@ public class BrowserProvider2 extends SQLiteContentProvider { static final String VIEW_ACCOUNTS = "v_accounts"; static final String VIEW_SNAPSHOTS_COMBINED = "v_snapshots_combined"; + static final String VIEW_OMNIBOX_SUGGESTIONS = "v_omnibox_suggestions"; static final String FORMAT_COMBINED_JOIN_SUBQUERY_JOIN_IMAGES = "history LEFT OUTER JOIN (%s) bookmarks " + @@ -123,6 +129,10 @@ public class BrowserProvider2 extends SQLiteContentProvider { "WHERE url IS NOT NULL AND deleted == 0) AND url_key NOT IN " + "(SELECT url FROM history WHERE url IS NOT NULL)"; + static final int THUMBNAILS = 10; + static final int THUMBNAILS_ID = 11; + static final int OMNIBOX_SUGGESTIONS = 20; + static final int BOOKMARKS = 1000; static final int BOOKMARKS_ID = 1001; static final int BOOKMARKS_FOLDER = 1002; @@ -151,9 +161,6 @@ public class BrowserProvider2 extends SQLiteContentProvider { static final int LEGACY = 9000; static final int LEGACY_ID = 9001; - static final int SNAPSHOTS = 10000; - static final int SNAPSHOTS_ID = 10001; - public static final long FIXED_ID_ROOT = 1; // Default sort order for unsync'd bookmarks @@ -202,6 +209,9 @@ public class BrowserProvider2 extends SQLiteContentProvider { matcher.addURI(authority, "combined", COMBINED); matcher.addURI(authority, "combined/#", COMBINED_ID); matcher.addURI(authority, "settings", SETTINGS); + matcher.addURI(authority, "thumbnails", THUMBNAILS); + matcher.addURI(authority, "thumbnails/#", THUMBNAILS_ID); + matcher.addURI(authority, "omnibox_suggestions", OMNIBOX_SUGGESTIONS); // Legacy matcher.addURI(LEGACY_AUTHORITY, "searches", SEARCHES); @@ -215,9 +225,6 @@ public class BrowserProvider2 extends SQLiteContentProvider { "bookmarks/" + SearchManager.SUGGEST_URI_PATH_QUERY, BOOKMARKS_SUGGESTIONS); - matcher.addURI(authority, "snapshots", SNAPSHOTS); - matcher.addURI(authority, "snapshots/#", SNAPSHOTS_ID); - // Projection maps HashMap<String, String> map; @@ -348,10 +355,11 @@ public class BrowserProvider2 extends SQLiteContentProvider { SyncStateContentProviderHelper mSyncHelper = new SyncStateContentProviderHelper(); // This is so provider tests can intercept widget updating ContentObserver mWidgetObserver = null; + boolean mUpdateWidgets = false; final class DatabaseHelper extends SQLiteOpenHelper { static final String DATABASE_NAME = "browser2.db"; - static final int DATABASE_VERSION = 29; + static final int DATABASE_VERSION = 32; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @@ -414,6 +422,7 @@ public class BrowserProvider2 extends SQLiteContentProvider { ");"); createAccountsView(db); + createThumbnails(db); mSyncHelper.createDatabase(db); @@ -422,8 +431,18 @@ public class BrowserProvider2 extends SQLiteContentProvider { } enableSync(db); + createOmniboxSuggestions(db); + } - createSnapshots(db); + void createOmniboxSuggestions(SQLiteDatabase db) { + db.execSQL(SQL_CREATE_VIEW_OMNIBOX_SUGGESTIONS); + } + + void createThumbnails(SQLiteDatabase db) { + db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_THUMBNAILS + " (" + + Thumbnails._ID + " INTEGER PRIMARY KEY," + + Thumbnails.THUMBNAIL + " BLOB NOT NULL" + + ");"); } void enableSync(SQLiteDatabase db) { @@ -431,6 +450,26 @@ public class BrowserProvider2 extends SQLiteContentProvider { values.put(Settings.KEY, Settings.KEY_SYNC_ENABLED); values.put(Settings.VALUE, 1); insertSettingsInTransaction(db, values); + // Enable bookmark sync on all accounts + AccountManager am = (AccountManager) getContext().getSystemService( + Context.ACCOUNT_SERVICE); + if (am == null) { + return; + } + Account[] accounts = am.getAccountsByType("com.google"); + if (accounts == null || accounts.length == 0) { + return; + } + for (Account account : accounts) { + if (ContentResolver.getIsSyncable( + account, BrowserContract.AUTHORITY) == 0) { + // Account wasn't syncable, enable it + ContentResolver.setIsSyncable( + account, BrowserContract.AUTHORITY, 1); + ContentResolver.setSyncAutomatically( + account, BrowserContract.AUTHORITY, true); + } + } } boolean importFromBrowserProvider(SQLiteDatabase db) { @@ -450,6 +489,7 @@ public class BrowserProvider2 extends SQLiteContentProvider { BookmarkColumns.TITLE, // 1 BookmarkColumns.FAVICON, // 2 BookmarkColumns.TOUCH_ICON, // 3 + BookmarkColumns.CREATED, // 4 }, BookmarkColumns.BOOKMARK + "!=0", null, null, null, null); if (c != null) { @@ -457,6 +497,7 @@ public class BrowserProvider2 extends SQLiteContentProvider { ContentValues values = new ContentValues(); values.put(Bookmarks.URL, c.getString(0)); values.put(Bookmarks.TITLE, c.getString(1)); + values.put(Bookmarks.DATE_CREATED, c.getInt(4)); values.put(Bookmarks.POSITION, 0); values.put(Bookmarks.PARENT, FIXED_ID_ROOT); ContentValues imageValues = new ContentValues(); @@ -476,7 +517,9 @@ public class BrowserProvider2 extends SQLiteContentProvider { BookmarkColumns.VISITS, // 2 BookmarkColumns.DATE, // 3 BookmarkColumns.CREATED, // 4 - }, null, null, null, null, null); + }, BookmarkColumns.VISITS + " > 0 OR " + + BookmarkColumns.BOOKMARK + " = 0", + null, null, null, null); if (c != null) { while (c.moveToNext()) { ContentValues values = new ContentValues(); @@ -520,8 +563,15 @@ public class BrowserProvider2 extends SQLiteContentProvider { @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - if (oldVersion < 29) { - createSnapshots(db); + if (oldVersion < 32) { + createOmniboxSuggestions(db); + } + if (oldVersion < 31) { + createThumbnails(db); + } + if (oldVersion < 30) { + db.execSQL("DROP VIEW IF EXISTS " + VIEW_SNAPSHOTS_COMBINED); + db.execSQL("DROP TABLE IF EXISTS " + TABLE_SNAPSHOTS); } if (oldVersion < 28) { enableSync(db); @@ -543,23 +593,6 @@ public class BrowserProvider2 extends SQLiteContentProvider { } } - void createSnapshots(SQLiteDatabase db) { - db.execSQL("DROP TABLE IF EXISTS " + TABLE_SNAPSHOTS); - db.execSQL("CREATE TABLE " + TABLE_SNAPSHOTS + " (" + - Snapshots._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + - Snapshots.URL + " TEXT NOT NULL," + - Snapshots.TITLE + " TEXT," + - Snapshots.BACKGROUND + " INTEGER," + - Snapshots.VIEWSTATE + " BLOB NOT NULL" + - ");"); - db.execSQL("CREATE VIEW IF NOT EXISTS " + VIEW_SNAPSHOTS_COMBINED + - " AS SELECT * FROM " + TABLE_SNAPSHOTS + - " LEFT OUTER JOIN " + TABLE_IMAGES + - " ON " + TABLE_SNAPSHOTS + "." + Snapshots.URL + - " = images.url_key"); - } - - @Override public void onOpen(SQLiteDatabase db) { db.enableWriteAheadLogging(); mSyncHelper.onDatabaseOpened(db); @@ -734,10 +767,19 @@ public class BrowserProvider2 extends SQLiteContentProvider { } void refreshWidgets() { - if (mWidgetObserver == null) { - BookmarkThumbnailWidgetProvider.refreshWidgets(getContext()); - } else { - mWidgetObserver.dispatchChange(false); + mUpdateWidgets = true; + } + + @Override + protected void onEndTransaction(boolean callerIsSyncAdapter) { + super.onEndTransaction(callerIsSyncAdapter); + if (mUpdateWidgets) { + if (mWidgetObserver == null) { + BookmarkThumbnailWidgetProvider.refreshWidgets(getContext()); + } else { + mWidgetObserver.dispatchChange(false); + } + mUpdateWidgets = false; } } @@ -1010,14 +1052,20 @@ public class BrowserProvider2 extends SQLiteContentProvider { break; } - case SNAPSHOTS_ID: { - selection = DatabaseUtils.concatenateWhere(selection, "_id=?"); + case THUMBNAILS_ID: { + selection = DatabaseUtils.concatenateWhere( + selection, Thumbnails._ID + " = ?"); selectionArgs = DatabaseUtils.appendSelectionArgs(selectionArgs, new String[] { Long.toString(ContentUris.parseId(uri)) }); // fall through } - case SNAPSHOTS: { - qb.setTables(VIEW_SNAPSHOTS_COMBINED); + case THUMBNAILS: { + qb.setTables(TABLE_THUMBNAILS); + break; + } + + case OMNIBOX_SUGGESTIONS: { + qb.setTables(VIEW_OMNIBOX_SUGGESTIONS); break; } @@ -1218,16 +1266,18 @@ public class BrowserProvider2 extends SQLiteContentProvider { new String[] { Long.toString(id) }); } } + c.close(); break; } - case SNAPSHOTS_ID: { - selection = DatabaseUtils.concatenateWhere(selection, TABLE_SNAPSHOTS + "._id=?"); + case THUMBNAILS_ID: { + selection = DatabaseUtils.concatenateWhere( + selection, Thumbnails._ID + " = ?"); selectionArgs = DatabaseUtils.appendSelectionArgs(selectionArgs, new String[] { Long.toString(ContentUris.parseId(uri)) }); // fall through } - case SNAPSHOTS: { - deleted = db.delete(TABLE_SNAPSHOTS, selection, selectionArgs); + case THUMBNAILS: { + deleted = db.delete(TABLE_THUMBNAILS, selection, selectionArgs); break; } default: { @@ -1249,8 +1299,12 @@ public class BrowserProvider2 extends SQLiteContentProvider { " AND account_type = ? AND account_name = ?", new String[] { ChromeSyncColumns.FOLDER_NAME_BOOKMARKS_BAR, accountType, accountName }, null, null, null); - if (c.moveToFirst()) { - return c.getLong(0); + try { + if (c.moveToFirst()) { + return c.getLong(0); + } + } finally { + c.close(); } } return FIXED_ID_ROOT; @@ -1367,8 +1421,8 @@ public class BrowserProvider2 extends SQLiteContentProvider { break; } - case SNAPSHOTS: { - id = db.insertOrThrow(TABLE_SNAPSHOTS, Snapshots.TITLE, values); + case THUMBNAILS: { + id = db.replaceOrThrow(TABLE_THUMBNAILS, null, values); break; } @@ -1614,6 +1668,12 @@ public class BrowserProvider2 extends SQLiteContentProvider { break; } + case THUMBNAILS: { + modified = db.update(TABLE_THUMBNAILS, values, + selection, selectionArgs); + break; + } + default: { throw new UnsupportedOperationException("Unknown update URI " + uri); } @@ -1721,8 +1781,8 @@ public class BrowserProvider2 extends SQLiteContentProvider { if (c.moveToFirst()) { parentAccountName = c.getString(0); parentAccountType = c.getString(1); - c.close(); } + c.close(); } else if (values.containsKey(Bookmarks.ACCOUNT_NAME) || values.containsKey(Bookmarks.ACCOUNT_TYPE)) { // TODO: Implement if needed (no one needs this yet) @@ -2037,4 +2097,21 @@ public class BrowserProvider2 extends SQLiteContentProvider { return mSource.moveToPosition(newPosition); } } + + // --------------------------------------------------- + // SQL below, be warned + // --------------------------------------------------- + + private static final String SQL_CREATE_VIEW_OMNIBOX_SUGGESTIONS = + "CREATE VIEW IF NOT EXISTS v_omnibox_suggestions " + + " AS " + + " SELECT _id, url, title, 1 AS bookmark, 0 AS visits, 0 AS date" + + " FROM bookmarks " + + " WHERE deleted = 0 AND folder = 0 " + + " UNION ALL " + + " SELECT _id, url, title, 0 AS bookmark, visits, date " + + " FROM history " + + " WHERE url NOT IN (SELECT url FROM bookmarks" + + " WHERE deleted = 0 AND folder = 0) " + + " ORDER BY bookmark DESC, visits DESC, date DESC "; } diff --git a/src/com/android/browser/provider/SnapshotProvider.java b/src/com/android/browser/provider/SnapshotProvider.java new file mode 100644 index 0000000..c0aad23 --- /dev/null +++ b/src/com/android/browser/provider/SnapshotProvider.java @@ -0,0 +1,265 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.browser.provider; + +import android.content.BroadcastReceiver; +import android.content.ContentProvider; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.UriMatcher; +import android.database.Cursor; +import android.database.DatabaseUtils; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import android.database.sqlite.SQLiteQueryBuilder; +import android.net.Uri; +import android.os.Environment; +import android.provider.BrowserContract; + +import java.io.File; + +/** + * This provider is expected to be potentially flaky. It uses a database + * stored on external storage, which could be yanked unexpectedly. + */ +public class SnapshotProvider extends ContentProvider { + + public static interface Snapshots { + + public static final Uri CONTENT_URI = Uri.withAppendedPath( + SnapshotProvider.AUTHORITY_URI, "snapshots"); + public static final String _ID = "_id"; + public static final String VIEWSTATE = "view_state"; + public static final String BACKGROUND = "background"; + public static final String TITLE = "title"; + public static final String URL = "url"; + public static final String FAVICON = "favicon"; + public static final String THUMBNAIL = "thumbnail"; + public static final String DATE_CREATED = "date_created"; + } + + public static final String AUTHORITY = "com.android.browser.snapshots"; + public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY); + + static final String TABLE_SNAPSHOTS = "snapshots"; + static final int SNAPSHOTS = 10; + static final int SNAPSHOTS_ID = 11; + static final UriMatcher URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH); + + SnapshotDatabaseHelper mOpenHelper; + + static { + URI_MATCHER.addURI(AUTHORITY, "snapshots", SNAPSHOTS); + URI_MATCHER.addURI(AUTHORITY, "snapshots/#", SNAPSHOTS_ID); + } + + final static class SnapshotDatabaseHelper extends SQLiteOpenHelper { + + static final String DATABASE_NAME = "snapshots.db"; + static final int DATABASE_VERSION = 1; + + public SnapshotDatabaseHelper(Context context) { + super(context, getFullDatabaseName(context), null, DATABASE_VERSION); + } + + static String getFullDatabaseName(Context context) { + File dir = context.getExternalFilesDir(null); + return new File(dir, DATABASE_NAME).getAbsolutePath(); + } + + @Override + public void onCreate(SQLiteDatabase db) { + db.execSQL("CREATE TABLE " + TABLE_SNAPSHOTS + "(" + + Snapshots._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + + Snapshots.TITLE + " TEXT," + + Snapshots.URL + " TEXT NOT NULL," + + Snapshots.DATE_CREATED + " INTEGER," + + Snapshots.FAVICON + " BLOB," + + Snapshots.THUMBNAIL + " BLOB," + + Snapshots.BACKGROUND + " INTEGER," + + Snapshots.VIEWSTATE + " BLOB NOT NULL" + + ");"); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + // Not needed yet + } + + } + + @Override + public boolean onCreate() { + IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_EJECT); + filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED); + getContext().registerReceiver(mExternalStorageReceiver, filter); + return true; + } + + final BroadcastReceiver mExternalStorageReceiver = new BroadcastReceiver() { + + @Override + public void onReceive(Context context, Intent intent) { + if (mOpenHelper != null) { + try { + mOpenHelper.close(); + } catch (Throwable t) { + // We failed to close the open helper, which most likely means + // another thread is busy attempting to open the database + // or use the database. Let that thread try to gracefully + // deal with the error + } + } + } + }; + + SQLiteDatabase getWritableDatabase() { + String state = Environment.getExternalStorageState(); + if (Environment.MEDIA_MOUNTED.equals(state)) { + try { + if (mOpenHelper == null) { + mOpenHelper = new SnapshotDatabaseHelper(getContext()); + } + return mOpenHelper.getWritableDatabase(); + } catch (Throwable t) { + return null; + } + } + return null; + } + + SQLiteDatabase getReadableDatabase() { + String state = Environment.getExternalStorageState(); + if (Environment.MEDIA_MOUNTED.equals(state) + || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { + try { + if (mOpenHelper == null) { + mOpenHelper = new SnapshotDatabaseHelper(getContext()); + } + return mOpenHelper.getReadableDatabase(); + } catch (Throwable t) { + return null; + } + } + return null; + } + + @Override + public Cursor query(Uri uri, String[] projection, String selection, + String[] selectionArgs, String sortOrder) { + SQLiteDatabase db = getReadableDatabase(); + if (db == null) { + return null; + } + final int match = URI_MATCHER.match(uri); + SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); + String limit = uri.getQueryParameter(BrowserContract.PARAM_LIMIT); + switch (match) { + case SNAPSHOTS_ID: + selection = DatabaseUtils.concatenateWhere(selection, "_id=?"); + selectionArgs = DatabaseUtils.appendSelectionArgs(selectionArgs, + new String[] { Long.toString(ContentUris.parseId(uri)) }); + // fall through + case SNAPSHOTS: + qb.setTables(TABLE_SNAPSHOTS); + break; + + default: + throw new UnsupportedOperationException("Unknown URL " + uri.toString()); + } + try { + Cursor cursor = qb.query(db, projection, selection, selectionArgs, + null, null, sortOrder, limit); + cursor.setNotificationUri(getContext().getContentResolver(), + AUTHORITY_URI); + return cursor; + } catch (Throwable t) { + return null; + } + } + + @Override + public String getType(Uri uri) { + return null; + } + + @Override + public Uri insert(Uri uri, ContentValues values) { + SQLiteDatabase db = getWritableDatabase(); + if (db == null) { + return null; + } + int match = URI_MATCHER.match(uri); + long id = -1; + switch (match) { + case SNAPSHOTS: + try { + id = db.insert(TABLE_SNAPSHOTS, Snapshots.TITLE, values); + } catch (Throwable t) { + id = -1; + } + break; + default: + throw new UnsupportedOperationException("Unknown insert URI " + uri); + } + if (id < 0) { + return null; + } + Uri inserted = ContentUris.withAppendedId(uri, id); + getContext().getContentResolver().notifyChange(inserted, null, false); + return inserted; + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + SQLiteDatabase db = getWritableDatabase(); + if (db == null) { + return 0; + } + int match = URI_MATCHER.match(uri); + int deleted = 0; + switch (match) { + case SNAPSHOTS_ID: { + selection = DatabaseUtils.concatenateWhere(selection, TABLE_SNAPSHOTS + "._id=?"); + selectionArgs = DatabaseUtils.appendSelectionArgs(selectionArgs, + new String[] { Long.toString(ContentUris.parseId(uri)) }); + // fall through + } + case SNAPSHOTS: + try { + deleted = db.delete(TABLE_SNAPSHOTS, selection, selectionArgs); + } catch (Throwable t) { + } + break; + default: + throw new UnsupportedOperationException("Unknown delete URI " + uri); + } + if (deleted > 0) { + getContext().getContentResolver().notifyChange(uri, null, false); + } + return deleted; + } + + @Override + public int update(Uri uri, ContentValues values, String selection, + String[] selectionArgs) { + throw new UnsupportedOperationException("not implemented"); + } + +} diff --git a/src/com/android/browser/view/BookmarkExpandableView.java b/src/com/android/browser/view/BookmarkExpandableView.java index 6f5fdaa..baa9172 100644 --- a/src/com/android/browser/view/BookmarkExpandableView.java +++ b/src/com/android/browser/view/BookmarkExpandableView.java @@ -49,6 +49,9 @@ import java.util.HashMap; public class BookmarkExpandableView extends ExpandableListView implements BreadCrumbView.Controller { + // Experimental drag & drop + private static final boolean ENABLE_DRAG_DROP = false; + private BookmarkAccountAdapter mAdapter; private int mColumnWidth; private Context mContext; @@ -280,6 +283,9 @@ public class BookmarkExpandableView extends ExpandableListView @Override public boolean onLongClick(View v) { + if (!ENABLE_DRAG_DROP) { + return false; + } ExtraDragState state = new ExtraDragState(); state.groupPosition = (Integer) v.getTag(R.id.group_position); state.childPosition = (Integer) v.getTag(R.id.child_position); diff --git a/src/com/android/browser/view/Gallery.java b/src/com/android/browser/view/Gallery.java index fa3f97a..78d4bc6 100644 --- a/src/com/android/browser/view/Gallery.java +++ b/src/com/android/browser/view/Gallery.java @@ -16,6 +16,9 @@ package com.android.browser.view; +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ObjectAnimator; import android.content.Context; import android.content.res.TypedArray; import android.database.DataSetObserver; @@ -63,8 +66,8 @@ public class Gallery extends ViewGroup implements private RecycleBin mRecycler; - private boolean mHorizontal; - private int mFirstPosition; + protected boolean mHorizontal; + protected int mFirstPosition; private int mItemCount; private boolean mDataChanged; @@ -82,13 +85,17 @@ public class Gallery extends ViewGroup implements private GestureDetector mGestureDetector; - private int mDownTouchPosition; - private View mDownTouchView; + protected int mDownTouchPosition; + protected View mDownTouchView; private FlingRunnable mFlingRunnable = new FlingRunnable(); private OnItemSelectedListener mOnItemSelectedListener; private SelectionNotifier mSelectionNotifier; + private int mGapPosition; + private int mGap; + private Animator mGapAnimator; + /** * Sets mSuppressSelectionChanged = false. This is used to set it to false * in the future. It will also trigger a selection changed. @@ -114,12 +121,14 @@ public class Gallery extends ViewGroup implements private boolean mIsFirstScroll; private boolean mIsBeingDragged; + protected boolean mIsOrthoDragged; private int mActivePointerId = INVALID_POINTER; private int mTouchSlop; private float mLastMotionCoord; + private float mLastOrthoCoord; public Gallery(Context context) { this(context, null); @@ -159,6 +168,10 @@ public class Gallery extends ViewGroup implements mTouchSlop = configuration.getScaledTouchSlop(); setFocusable(true); setWillNotDraw(false); + mGapPosition = INVALID_POSITION; + mGap = 0; + // proguard + setGap(getGap()); } /** @@ -190,6 +203,29 @@ public class Gallery extends ViewGroup implements requestLayout(); } + /** + * define a visual gap in the list of items + * the gap is rendered in front (left or above) + * the given position + * @param position + * @param gap + */ + public void setGapPosition(int position, int gap) { + mGapPosition = position; + mGap = gap; + } + + public void setGap(int gap) { + if (mGapPosition != INVALID_POSITION) { + mGap = gap; + layout(0, false); + } + } + + public int getGap() { + return mGap; + } + public void setAdapter(BaseAdapter adapter) { mAdapter = adapter; if (mAdapter != null) { @@ -212,17 +248,33 @@ public class Gallery extends ViewGroup implements void handleDataChanged() { if (mAdapter != null) { + if (mGapAnimator != null) { + mGapAnimator.cancel(); + } resetList(); mItemCount = mAdapter.getCount(); // checkFocus(); - int position = mItemCount > 0 ? 0 : INVALID_POSITION; - if (mSelectedPosition >= 0) { - position = Math.min(mItemCount - 1, mSelectedPosition); - } - setSelectedPositionInt(position); - if (mItemCount == 0) { - // Nothing selected - checkSelectionChanged(); + if (mItemCount > 0) { + int position = 0; + if (mSelectedPosition >= 0) { + position = Math.min(mItemCount - 1, mSelectedPosition); + } + setSelectedPositionInt(position); + if (mGapPosition > INVALID_POSITION) { + mGapAnimator = ObjectAnimator.ofInt(this, "gap", mGap, 0); + mGapAnimator.setDuration(250); + mGapAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator a) { + mGapPosition = INVALID_POSITION; + mGap = 0; + mGapAnimator = null; + } + }); + mGapAnimator.start(); + } else { + layout(0, false); + } } } else { // checkFocus(); @@ -231,6 +283,7 @@ public class Gallery extends ViewGroup implements resetList(); // Nothing selected checkSelectionChanged(); + invalidate(); } } @@ -240,7 +293,6 @@ public class Gallery extends ViewGroup implements void resetList() { mDataChanged = false; removeAllViewsInLayout(); - invalidate(); } public void setCallbackDuringFling(boolean shouldCallback) { @@ -261,9 +313,7 @@ public class Gallery extends ViewGroup implements @Override protected boolean getChildStaticTransformation(View child, Transformation t) { - t.clear(); - t.setAlpha(child == mSelectedChild ? 1.0f : mUnselectedAlpha); - return true; + return false; } @Override @@ -372,7 +422,7 @@ public class Gallery extends ViewGroup implements * @param deltaX * Change in X from the previous event. */ - void trackMotionScroll(int deltaX) { + protected void trackMotionScroll(int deltaX) { if (getChildCount() == 0) { return; } @@ -393,8 +443,6 @@ public class Gallery extends ViewGroup implements // Similarly, empty space on the left fillToGalleryLeft(); } - // Clear unused views - mRecycler.clear(); setSelectionToCenterChild(); invalidate(); } @@ -588,6 +636,9 @@ public class Gallery extends ViewGroup implements } fillToGalleryRight(); fillToGalleryLeft(); + if (mGapPosition > INVALID_POSITION) { + adjustGap(); + } mRecycler.clear(); invalidate(); checkSelectionChanged(); @@ -595,6 +646,19 @@ public class Gallery extends ViewGroup implements updateSelectedItemMetadata(); } + void adjustGap() { + for (int i = 0; i < getChildCount(); i++) { + int pos = i + mFirstPosition; + if (pos >= mGapPosition) { + if (mHorizontal) { + getChildAt(i).offsetLeftAndRight(mGap); + } else { + getChildAt(i).offsetTopAndBottom(mGap); + } + } + } + } + void recycleAllViews() { final int childCount = getChildCount(); final RecycleBin recycleBin = mRecycler; @@ -620,7 +684,7 @@ public class Gallery extends ViewGroup implements // No children available! curPosition = 0; curRightEdge = (mHorizontal ? mRight - mLeft - mPaddingRight - : mBottom - mBottom - mPaddingBottom); + : mBottom - mTop - mPaddingBottom); mShouldStopFling = true; } while (curRightEdge > galleryLeft && curPosition >= 0) { @@ -679,7 +743,7 @@ public class Gallery extends ViewGroup implements * This will either be the left or right edge of the view, * depending on the fromLeft paramter * @param fromLeft - * Are we posiitoning views based on the left edge? (i.e., + * Are we positioning views based on the left edge? (i.e., * building from left to right)? * @return A view that has been added to the gallery */ @@ -772,7 +836,7 @@ public class Gallery extends ViewGroup implements * Child to place * @return Where the top of the child should be */ - private int calculateTop(View child, boolean duringLayout) { + protected int calculateTop(View child, boolean duringLayout) { int myHeight = mHorizontal ? (duringLayout ? getMeasuredHeight() : getHeight()) : (duringLayout ? getMeasuredWidth() : getWidth()); @@ -808,6 +872,9 @@ public class Gallery extends ViewGroup implements if ((action == MotionEvent.ACTION_MOVE) && (mIsBeingDragged)) { return true; } + if ((action == MotionEvent.ACTION_MOVE) && (mIsOrthoDragged)) { + return true; + } switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_MOVE: { /* @@ -824,10 +891,20 @@ public class Gallery extends ViewGroup implements final int pointerIndex = ev.findPointerIndex(activePointerId); final float coord = mHorizontal ? ev.getX(pointerIndex) : ev .getY(pointerIndex); + final int diff = (int) Math.abs(coord - mLastMotionCoord); if (diff > mTouchSlop) { mIsBeingDragged = true; mLastMotionCoord = coord; + } else { + final float ocoord = mHorizontal ? ev.getY(pointerIndex) + : ev.getX(pointerIndex); + if (Math.abs(ocoord - mLastOrthoCoord) > mTouchSlop) { + mIsOrthoDragged = true; + mLastOrthoCoord = ocoord; + } + } + if (mIsBeingDragged || mIsOrthoDragged) { if (mParent != null) mParent.requestDisallowInterceptTouchEvent(true); } @@ -847,6 +924,9 @@ public class Gallery extends ViewGroup implements * flinged. */ mIsBeingDragged = !mFlingRunnable.mScroller.isFinished(); + mIsOrthoDragged = false; + final float ocoord = mHorizontal ? ev.getY() : ev.getX(); + mLastOrthoCoord = ocoord; mGestureDetector.onTouchEvent(ev); break; } @@ -854,20 +934,24 @@ public class Gallery extends ViewGroup implements case MotionEvent.ACTION_UP: /* Release the drag */ mIsBeingDragged = false; + mIsOrthoDragged = false; mActivePointerId = INVALID_POINTER; break; case MotionEvent.ACTION_POINTER_DOWN: { final int index = ev.getActionIndex(); mLastMotionCoord = mHorizontal ? ev.getX(index) : ev.getY(index); + mLastOrthoCoord = mHorizontal ? ev.getY(index) : ev.getX(index); mActivePointerId = ev.getPointerId(index); break; } case MotionEvent.ACTION_POINTER_UP: - mLastMotionCoord = ev.getX(ev.findPointerIndex(mActivePointerId)); + mLastMotionCoord = mHorizontal ? ev.getX(ev.findPointerIndex(mActivePointerId)) + : ev.getY(ev.findPointerIndex(mActivePointerId)); + mLastOrthoCoord = mHorizontal ? ev.getY(ev.findPointerIndex(mActivePointerId)) + : ev.getX(ev.findPointerIndex(mActivePointerId)); break; } - - return mIsBeingDragged; + return mIsBeingDragged || mIsOrthoDragged; } @Override @@ -877,7 +961,7 @@ public class Gallery extends ViewGroup implements int action = event.getAction(); if (action == MotionEvent.ACTION_UP) { // Helper method for lifted finger - onUp(); + onUp(mDownTouchView); } else if (action == MotionEvent.ACTION_CANCEL) { onCancel(); } @@ -905,6 +989,10 @@ public class Gallery extends ViewGroup implements if (!mSuppressSelectionChanged) mSuppressSelectionChanged = true; } + if (isOrthoMove(velocityX, velocityY)) { + onOrthoFling(mDownTouchView, e1, e2, mHorizontal ? velocityY : velocityX); + return true; + } mFlingRunnable.startUsingVelocity(mHorizontal ? (int) -velocityX : (int) -velocityY); return true; @@ -915,30 +1003,43 @@ public class Gallery extends ViewGroup implements if (localLOGV) Log.v(TAG, String.valueOf(e2.getX() - e1.getX())); mParent.requestDisallowInterceptTouchEvent(true); - if (!mShouldCallbackDuringFling) { - if (mIsFirstScroll) { - if (!mSuppressSelectionChanged) - mSuppressSelectionChanged = true; - postDelayed(mDisableSuppressSelectionChangedRunnable, - SCROLL_TO_FLING_UNCERTAINTY_TIMEOUT); + if (mIsOrthoDragged && isOrthoMove(distanceX, distanceY)) { + onOrthoDrag(mDownTouchView, e1, e2, mHorizontal ? distanceY : distanceX); + } else if (mIsBeingDragged) { + if (!mShouldCallbackDuringFling) { + if (mIsFirstScroll) { + if (!mSuppressSelectionChanged) { + mSuppressSelectionChanged = true; + } + postDelayed(mDisableSuppressSelectionChangedRunnable, + SCROLL_TO_FLING_UNCERTAINTY_TIMEOUT); + } + } else { + if (mSuppressSelectionChanged) { + mSuppressSelectionChanged = false; + } } - } else { - if (mSuppressSelectionChanged) - mSuppressSelectionChanged = false; - } - trackMotionScroll(mHorizontal ? -1 * (int) distanceX : -1 - * (int) distanceY); + trackMotionScroll(mHorizontal ? -1 * (int) distanceX : -1 + * (int) distanceY); - mIsFirstScroll = false; + mIsFirstScroll = false; + } return true; } + protected void onOrthoDrag(View draggedView, MotionEvent down, + MotionEvent move, float distance) { + } + + protected void onOrthoFling(View draggedView, MotionEvent down, + MotionEvent move, float velocity) { + } + public boolean onDown(MotionEvent e) { mFlingRunnable.stop(false); mDownTouchPosition = pointToPosition((int) e.getX(), (int) e.getY()); if (mDownTouchPosition >= 0) { mDownTouchView = getChildAt(mDownTouchPosition - mFirstPosition); - mDownTouchView.setPressed(true); } // Reset the multiple-scroll tracking state mIsFirstScroll = true; @@ -949,18 +1050,23 @@ public class Gallery extends ViewGroup implements /** * Called when a touch event's action is MotionEvent.ACTION_UP. */ - void onUp() { + protected void onUp(View downView) { if (mFlingRunnable.mScroller.isFinished()) { scrollIntoSlots(); } dispatchUnpress(); } + private boolean isOrthoMove(float moveX, float moveY) { + return mHorizontal && Math.abs(moveY) > Math.abs(moveX) + || !mHorizontal && Math.abs(moveX) > Math.abs(moveY); + } + /** * Called when a touch event's action is MotionEvent.ACTION_CANCEL. */ void onCancel() { - onUp(); + onUp(mDownTouchView); } public void onLongPress(MotionEvent e) { @@ -989,9 +1095,6 @@ public class Gallery extends ViewGroup implements @Override protected void dispatchSetPressed(boolean pressed) { - if (mSelectedChild != null) { - mSelectedChild.setPressed(pressed); - } } @Override @@ -1066,7 +1169,7 @@ public class Gallery extends ViewGroup implements long itemId) { } - boolean movePrevious() { + protected boolean movePrevious() { if (mItemCount > 0 && mSelectedPosition > 0) { scrollToChild(mSelectedPosition - mFirstPosition - 1); return true; @@ -1084,7 +1187,7 @@ public class Gallery extends ViewGroup implements } } - private boolean scrollToChild(int childPosition) { + protected boolean scrollToChild(int childPosition) { View child = getChildAt(childPosition); if (child != null) { int distance = getCenterOfGallery() - getCenterOfView(child); @@ -1199,24 +1302,6 @@ public class Gallery extends ViewGroup implements } @Override - protected int getChildDrawingOrder(int childCount, int i) { - int selectedIndex = mSelectedPosition - mFirstPosition; - // Just to be safe - if (selectedIndex < 0) - return i; - if (i == childCount - 1) { - // Draw the selected child last - return selectedIndex; - } else if (i >= selectedIndex) { - // Move the children to the right of the selected child earlier one - return i + 1; - } else { - // Keep the children to the left of the selected child the same - return i; - } - } - - @Override protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) { super.onFocusChanged(gainFocus, direction, previouslyFocusedRect); diff --git a/src/com/android/browser/view/PieMenu.java b/src/com/android/browser/view/PieMenu.java index cded435..99750f9 100644 --- a/src/com/android/browser/view/PieMenu.java +++ b/src/com/android/browser/view/PieMenu.java @@ -310,7 +310,6 @@ public class PieMenu extends FrameLayout { float x = evt.getX(); float y = evt.getY(); int action = evt.getActionMasked(); - int edges = evt.getEdgeFlags(); if (MotionEvent.ACTION_DOWN == action) { if ((x > getWidth() - mSlop) || (x < mSlop)) { setCenter((int) x, (int) y); diff --git a/src/com/android/browser/view/SnapshotGridView.java b/src/com/android/browser/view/SnapshotGridView.java new file mode 100644 index 0000000..ab12060 --- /dev/null +++ b/src/com/android/browser/view/SnapshotGridView.java @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.browser.view; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.GridView; + +public class SnapshotGridView extends GridView { + + private static final int MAX_COLUMNS = 5; + + private int mColWidth; + + public SnapshotGridView(Context context) { + super(context); + } + + public SnapshotGridView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public SnapshotGridView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int widthSize = MeasureSpec.getSize(widthMeasureSpec); + int widthMode = MeasureSpec.getMode(widthMeasureSpec); + if (widthSize > 0 && mColWidth > 0) { + int numCols = widthSize / mColWidth; + widthSize = Math.min( + Math.min(numCols, MAX_COLUMNS) * mColWidth, + widthSize); + widthMeasureSpec = MeasureSpec.makeMeasureSpec(widthSize, widthMode); + } + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + + @Override + public void setColumnWidth(int columnWidth) { + mColWidth = columnWidth; + super.setColumnWidth(columnWidth); + } +} diff --git a/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java b/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java index 7d174ee..7077885 100644 --- a/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java +++ b/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java @@ -114,7 +114,7 @@ public class BookmarkThumbnailWidgetService extends RemoteViewsService { pref.edit() .putLong(STATE_CURRENT_FOLDER, rootFolder) .putLong(STATE_ROOT_FOLDER, rootFolder) - .commit(); + .apply(); } /** @@ -166,7 +166,7 @@ public class BookmarkThumbnailWidgetService extends RemoteViewsService { private SharedPreferences mPreferences = null; public BookmarkFactory(Context context, int widgetId) { - mContext = context; + mContext = context.getApplicationContext(); mWidgetId = widgetId; } diff --git a/tests/src/com/android/browser/IntentHandlerTests.java b/tests/src/com/android/browser/IntentHandlerTests.java new file mode 100644 index 0000000..2bdadae --- /dev/null +++ b/tests/src/com/android/browser/IntentHandlerTests.java @@ -0,0 +1,164 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.browser; + +import android.app.Activity; +import android.content.Intent; +import android.net.Uri; +import android.provider.Browser; +import android.test.ActivityInstrumentationTestCase2; +import android.text.TextUtils; +import android.webkit.WebView; + +public class IntentHandlerTests extends ActivityInstrumentationTestCase2<BrowserActivity> { + + // How long to wait to receive onPageStarted + static final int START_LOAD_TIMEOUT = 20000; // ms + static final int POLL_INTERVAL = 50; // ms + boolean mHasStarted = false; + + public IntentHandlerTests() { + super(BrowserActivity.class); + } + + public void testSwitchToTabWithUrl() throws Throwable { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse("http://google.com/")); + sendIntent(intent); + Controller controller = getActivity().getController(); + Tab tabGoogle = controller.getCurrentTab(); + assertNotNull("Current tab (google.com", tabGoogle); + assertEquals("http://google.com/", tabGoogle.getOriginalUrl()); + assertEquals(1, controller.getTabs().size()); + intent.setData(Uri.parse("http://maps.google.com/")); + sendIntent(intent); + Tab tabMaps = controller.getCurrentTab(); + assertNotSame(tabGoogle, tabMaps); + assertNotNull("Current tab (maps.google.com)", tabMaps); + assertEquals(2, controller.getTabs().size()); + intent.setData(Uri.parse("http://google.com/")); + sendIntent(intent); + assertEquals(tabGoogle, controller.getCurrentTab()); + assertEquals(2, controller.getTabs().size()); + } + + public void testShortcut() throws Throwable { + Intent intent = BookmarkUtils.createShortcutIntent("http://google.com/"); + sendIntent(intent); + Controller controller = getActivity().getController(); + Tab tabGoogle = controller.getCurrentTab(); + assertEquals("http://google.com/", tabGoogle.getOriginalUrl()); + assertEquals(1, controller.getTabs().size()); + sendIntent(intent); + assertEquals(1, controller.getTabs().size()); + assertEquals(tabGoogle, controller.getCurrentTab()); + directlyLoadUrl(tabGoogle, "http://maps.google.com/"); + sendIntent(intent); + if (BrowserActivity.isTablet(getActivity())) { + assertEquals(2, controller.getTabs().size()); + assertNotSame(tabGoogle, controller.getCurrentTab()); + assertEquals("http://maps.google.com/", tabGoogle.getOriginalUrl()); + Tab currentTab = controller.getCurrentTab(); + assertEquals("http://google.com/", currentTab.getOriginalUrl()); + } else { + assertEquals(1, controller.getTabs().size()); + assertEquals(tabGoogle, controller.getCurrentTab()); + assertEquals("http://google.com/", tabGoogle.getOriginalUrl()); + } + } + + public void testApplication() throws Throwable { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse("http://google.com/")); + intent.putExtra(Browser.EXTRA_APPLICATION_ID, getClass().getName()); + sendIntent(intent); + Controller controller = getActivity().getController(); + Tab tabGoogle = controller.getCurrentTab(); + assertNotNull("Current tab (google.com", tabGoogle); + assertEquals("http://google.com/", tabGoogle.getOriginalUrl()); + assertEquals(1, controller.getTabs().size()); + intent.setData(Uri.parse("http://maps.google.com/")); + sendIntent(intent); + Tab tabMaps = controller.getCurrentTab(); + assertEquals("http://maps.google.com/", tabMaps.getOriginalUrl()); + if (BrowserActivity.isTablet(getActivity())) { + assertEquals(2, controller.getTabs().size()); + assertNotSame(tabGoogle, tabMaps); + assertEquals("http://google.com/", tabGoogle.getOriginalUrl()); + } else { + assertEquals(1, controller.getTabs().size()); + assertEquals(tabGoogle, tabMaps); + } + } + + /** + * Simulate clicking a link by loading a URL directly on the WebView, + * bypassing Tab, Controller, etc.. + * @throws Throwable + */ + private void directlyLoadUrl(final Tab tab, final String url) throws Throwable { + runTestOnUiThread(new Runnable() { + @Override + public void run() { + WebView web = tab.getWebView(); + web.loadUrl(url); + } + }); + waitForLoadStart(tab, url); + } + + void waitForLoadStart(final Tab tab, final String url) throws InterruptedException { + long start = System.currentTimeMillis(); + while (!TextUtils.equals(tab.getOriginalUrl(), url)) { + if (start + START_LOAD_TIMEOUT < System.currentTimeMillis()) { + throw new RuntimeException("Didn't receive onPageStarted!"); + } + Thread.sleep(POLL_INTERVAL); + } + } + + private void sendIntent(final Intent intent) throws Throwable { + sendIntent(intent, true); + } + + private void sendIntent(final Intent intent, boolean waitForLoadStart) throws Throwable { + if (!mHasStarted) { + // Prevent crash recovery from happening + intent.putExtra(Controller.NO_CRASH_RECOVERY, true); + setActivityIntent(intent); + getActivity(); + } else { + final Activity activity = getActivity(); + runTestOnUiThread(new Runnable() { + @Override + public void run() { + getInstrumentation().callActivityOnNewIntent(activity, intent); + } + }); + } + if (waitForLoadStart) { + String url = intent.getDataString(); + Tab tab = getActivity().getController().getCurrentTab(); + waitForLoadStart(tab, url); + } + } + + @Override + public BrowserActivity getActivity() { + mHasStarted = true; + return super.getActivity(); + } +} diff --git a/tests/src/com/android/browser/PopularUrlsTest.java b/tests/src/com/android/browser/PopularUrlsTest.java index f1ab71b..cbe8324 100644 --- a/tests/src/com/android/browser/PopularUrlsTest.java +++ b/tests/src/com/android/browser/PopularUrlsTest.java @@ -21,6 +21,7 @@ import android.content.Intent; import android.net.Uri; import android.net.http.SslError; import android.os.Environment; +import android.provider.Browser; import android.test.ActivityInstrumentationTestCase2; import android.text.TextUtils; import android.util.Log; @@ -458,7 +459,7 @@ public class PopularUrlsTest extends ActivityInstrumentationTestCase2<BrowserAct while (mStatus.getIteration() < loopCount) { if (clearCache) { - webView.clearCache(true); + clearCacheUiThread(webView, true); } while(iterator.hasNext()) { page = iterator.next(); @@ -467,6 +468,8 @@ public class PopularUrlsTest extends ActivityInstrumentationTestCase2<BrowserAct Log.i(TAG, "start: " + page); Uri uri = Uri.parse(page); final Intent intent = new Intent(Intent.ACTION_VIEW, uri); + intent.putExtra(Browser.EXTRA_APPLICATION_ID, + getInstrumentation().getTargetContext().getPackageName()); long startTime = System.currentTimeMillis(); resetForNewPage(); @@ -480,7 +483,7 @@ public class PopularUrlsTest extends ActivityInstrumentationTestCase2<BrowserAct waitForLoad(); long stopTime = System.currentTimeMillis(); - String url = webView.getUrl(); + String url = getUrlUiThread(webView); Log.i(TAG, "finish: " + url); if (writer != null) { @@ -534,4 +537,44 @@ public class PopularUrlsTest extends ActivityInstrumentationTestCase2<BrowserAct } } } + + private void clearCacheUiThread(final WebView webView, final boolean includeDiskFiles) { + Runnable runner = new Runnable() { + + @Override + public void run() { + webView.clearCache(includeDiskFiles); + } + }; + getInstrumentation().runOnMainSync(runner); + } + + private String getUrlUiThread(final WebView webView) { + WebViewUrlGetter urlGetter = new WebViewUrlGetter(webView); + getInstrumentation().runOnMainSync(urlGetter); + return urlGetter.getUrl(); + } + + private class WebViewUrlGetter implements Runnable { + + private WebView mWebView; + private String mUrl; + + public WebViewUrlGetter(WebView webView) { + mWebView = webView; + } + + @Override + public void run() { + mUrl = null; + mUrl = mWebView.getUrl(); + } + + public String getUrl() { + if (mUrl != null) { + return mUrl; + } else + throw new IllegalStateException("url has not been fetched yet"); + } + } } diff --git a/tests/src/com/android/browser/tests/BP1to2UpgradeTests.java b/tests/src/com/android/browser/tests/BP1to2UpgradeTests.java new file mode 100644 index 0000000..91f7238 --- /dev/null +++ b/tests/src/com/android/browser/tests/BP1to2UpgradeTests.java @@ -0,0 +1,148 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.browser.tests; + +import com.android.browser.provider.BrowserProvider; +import com.android.browser.tests.utils.BP2TestCaseHelper; + +import android.content.ContentUris; +import android.content.ContentValues; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.Bitmap.Config; +import android.net.Uri; +import android.provider.Browser; +import android.provider.Browser.BookmarkColumns; +import android.provider.BrowserContract; +import android.provider.BrowserContract.Bookmarks; +import android.provider.BrowserContract.History; +import android.provider.BrowserContract.Images; +import android.test.suitebuilder.annotation.SmallTest; + +import java.io.ByteArrayOutputStream; +import java.util.ArrayList; + +@SmallTest +public class BP1to2UpgradeTests extends BP2TestCaseHelper { + + BrowserProvider mBp1; + + @Override + protected void setUp() throws Exception { + super.setUp(); + mBp1 = new BrowserProvider(); + mBp1.attachInfo(getMockContext(), null); + } + + /** + * Test that simply makes sure BP1->BP2 with no changes works as intended + */ + public void testStockUpgrade() { + Cursor c = mBp1.query(Browser.BOOKMARKS_URI, + new String[] { BookmarkColumns.URL }, null, null, + BookmarkColumns.URL + " DESC"); + ArrayList<String> urls = new ArrayList<String>(c.getCount()); + while (c.moveToNext()) { + urls.add(c.getString(0)); + } + c.close(); + // First, test the public API (which will hit BP2) + c = getMockContentResolver().query(Browser.BOOKMARKS_URI, + new String[] { BookmarkColumns.URL }, null, null, + BookmarkColumns.URL + " DESC"); + assertEquals(urls.size(), c.getCount()); + int i = 0; + while (c.moveToNext()) { + assertEquals(urls.get(i++), c.getString(0)); + } + c.close(); + // Next, test BP2's new API (not a public API) + c = getMockContentResolver().query(Bookmarks.CONTENT_URI, + new String[] { Bookmarks.URL }, null, null, + Bookmarks.URL + " DESC"); + assertEquals(urls.size(), c.getCount()); + i = 0; + while (c.moveToNext()) { + assertEquals(urls.get(i++), c.getString(0)); + } + c.close(); + } + + public void testPreserveHistory() { + ContentValues values = new ContentValues(); + values.put(BookmarkColumns.URL, "http://slashdot.org/"); + values.put(BookmarkColumns.BOOKMARK, 0); + values.put(BookmarkColumns.DATE, 123456); + mBp1.insert(Browser.BOOKMARKS_URI, values); + // First, test internal API + Cursor c = getMockContentResolver().query(History.CONTENT_URI, + new String[] { History.URL, History.DATE_LAST_VISITED }, + null, null, null); + assertEquals(1, c.getCount()); + assertTrue(c.moveToFirst()); + assertEquals("http://slashdot.org/", c.getString(0)); + assertEquals(123456, c.getInt(1)); + c.close(); + // Next, test public API + c = getMockContentResolver().query(Browser.BOOKMARKS_URI, + Browser.HISTORY_PROJECTION, BookmarkColumns.BOOKMARK + " = 0", + null, null); + assertEquals("public API", 1, c.getCount()); + assertTrue(c.moveToFirst()); + assertEquals("http://slashdot.org/", + c.getString(Browser.HISTORY_PROJECTION_URL_INDEX)); + assertEquals(123456, c.getInt(Browser.HISTORY_PROJECTION_DATE_INDEX)); + c.close(); + } + + public void testPreserveBookmarks() { + // First, nuke 'er (deletes stock bookmarks) + mBp1.delete(Browser.BOOKMARKS_URI, null, null); + ContentValues values = new ContentValues(); + values.put(BookmarkColumns.URL, "http://slashdot.org/"); + values.put(BookmarkColumns.BOOKMARK, 1); + values.put(BookmarkColumns.CREATED, 123456); + mBp1.insert(Browser.BOOKMARKS_URI, values); + // First, test internal API + Cursor c = getMockContentResolver().query(Bookmarks.CONTENT_URI, + new String[] { Bookmarks.URL, Bookmarks.DATE_CREATED }, + null, null, null); + assertEquals(1, c.getCount()); + assertTrue(c.moveToFirst()); + assertEquals("http://slashdot.org/", c.getString(0)); + assertEquals(123456, c.getInt(1)); + c.close(); + // Next, test public API + c = getMockContentResolver().query(Browser.BOOKMARKS_URI, + new String[] { BookmarkColumns.URL, BookmarkColumns.CREATED }, + BookmarkColumns.BOOKMARK + " = 1", null, null); + assertEquals("public API", 1, c.getCount()); + assertTrue(c.moveToFirst()); + assertEquals("http://slashdot.org/", c.getString(0)); + assertEquals(123456, c.getInt(1)); + c.close(); + } + + public void testEmptyUpgrade() { + mBp1.delete(Browser.BOOKMARKS_URI, null, null); + Cursor c = getMockContentResolver().query(Bookmarks.CONTENT_URI, + null, null, null, null); + assertEquals(0, c.getCount()); + c.close(); + } + +} diff --git a/tests/src/com/android/browser/tests/utils/ProviderTestCase3.java b/tests/src/com/android/browser/tests/utils/ProviderTestCase3.java index c374292..536163a 100644 --- a/tests/src/com/android/browser/tests/utils/ProviderTestCase3.java +++ b/tests/src/com/android/browser/tests/utils/ProviderTestCase3.java @@ -69,6 +69,11 @@ public abstract class ProviderTestCase3<T extends ContentProvider> extends Andro public Context getApplicationContext() { return this; } + + @Override + public Object getSystemService(String name) { + return null; + } } /** * Constructor. @@ -114,7 +119,15 @@ public abstract class ProviderTestCase3<T extends ContentProvider> extends Andro //delegated to getContext(), // The context that file methods are delegated to filenamePrefix); - mProviderContext = new IsolatedContext(mResolver, targetContextWrapper); + // The default IsolatedContext has a mock AccountManager that doesn't + // work for us, so override getSystemService to always return null + mProviderContext = new IsolatedContext(mResolver, targetContextWrapper) { + + @Override + public Object getSystemService(String name) { + return null; + } + }; mProvider = mProviderClass.newInstance(); mProvider.attachInfo(mProviderContext, null); |