OSDN Git Service

auto import from //branches/cupcake/...@125939
authorThe Android Open Source Project <initial-contribution@android.com>
Sat, 10 Jan 2009 01:51:25 +0000 (17:51 -0800)
committerThe Android Open Source Project <initial-contribution@android.com>
Sat, 10 Jan 2009 01:51:25 +0000 (17:51 -0800)
23 files changed:
assets/plugins/gears-0.5.7.0/dummy [moved from assets/plugins/gears-0.5.2.0/dummy with 100% similarity]
assets/plugins/gears.so
res/drawable/ic_dialog_alert.png [deleted file]
res/drawable/ic_dialog_info.png [deleted file]
res/drawable/ic_menu_recent_history.png [deleted file]
res/drawable/ic_menu_refresh.png [deleted file]
res/layout-land/gears_dialog.xml
res/layout/gears_dialog.xml
res/layout/gears_dialog_filepicker.xml
res/layout/gears_dialog_filepicker_cell.xml
res/layout/gears_dialog_settings.xml
res/layout/gears_dialog_settings_row.xml
res/menu/browser.xml
res/values-fr/strings.xml [new file with mode: 0644]
res/values-it/strings.xml [new file with mode: 0644]
res/values-zh-rCN/strings.xml [new file with mode: 0644]
res/values/colors.xml
res/values/strings.xml
res/xml/searchable.xml
src/com/android/browser/BrowserActivity.java
src/com/android/browser/GearsBaseDialog.java
src/com/android/browser/GearsFilePickerDialog.java
src/com/android/browser/GearsSettingsDialog.java

index 4a1aff2..9ae2a87 100644 (file)
Binary files a/assets/plugins/gears.so and b/assets/plugins/gears.so differ
diff --git a/res/drawable/ic_dialog_alert.png b/res/drawable/ic_dialog_alert.png
deleted file mode 100755 (executable)
index 0a7de04..0000000
Binary files a/res/drawable/ic_dialog_alert.png and /dev/null differ
diff --git a/res/drawable/ic_dialog_info.png b/res/drawable/ic_dialog_info.png
deleted file mode 100755 (executable)
index e8b0229..0000000
Binary files a/res/drawable/ic_dialog_info.png and /dev/null differ
diff --git a/res/drawable/ic_menu_recent_history.png b/res/drawable/ic_menu_recent_history.png
deleted file mode 100644 (file)
index 4ccae5d..0000000
Binary files a/res/drawable/ic_menu_recent_history.png and /dev/null differ
diff --git a/res/drawable/ic_menu_refresh.png b/res/drawable/ic_menu_refresh.png
deleted file mode 100644 (file)
index 77d70dd..0000000
Binary files a/res/drawable/ic_menu_refresh.png and /dev/null differ
index f5cf969..5536fed 100644 (file)
     android:background="@color/white"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
-    android:paddingTop="10dip">
+    android:paddingTop="2dip">
 
-    <Button
-      android:id="@+id/button_alwaysdeny"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_alignParentLeft="true"
-      style="@style/gears_button"
-      android:textSize="13dip"/>
-
-    <LinearLayout
-      android:layout_width="wrap_content"
-      android:layout_alignParentRight="true"
+    <LinearLayout 
+      android:orientation="vertical"
+      android:layout_width="fill_parent"
       android:layout_height="wrap_content">
 
-      <Button
-        android:id="@+id/button_allow"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textSize="13dip"/>
-
-      <Button
-        android:id="@+id/button_deny"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textSize="13dip"/>
+       <TextView
+         android:id="@+id/selection"
+         android:layout_width="fill_parent"
+         android:layout_height="wrap_content"
+         android:textSize="13dip"
+         android:gravity="right"
+         android:textColor="@color/black"/>
+
+       <RelativeLayout
+         android:background="@color/white"
+         android:layout_width="fill_parent"
+         android:layout_height="wrap_content"
+         android:paddingTop="2dip">
+
+         <LinearLayout
+           android:orientation="horizontal"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:background="@color/white">
+
+           <Button
+             android:id="@+id/button_alwaysdeny"
+             android:layout_width="wrap_content"
+             android:layout_height="48px"
+             android:layout_alignParentLeft="true"
+             style="@style/gears_button"
+             android:textSize="13dip"/>
+
+         </LinearLayout>
+
+         <LinearLayout
+           android:layout_width="wrap_content"
+           android:layout_alignParentRight="true"
+           android:layout_height="wrap_content">
+
+           <Button
+             android:id="@+id/button_allow"
+             android:layout_width="wrap_content"
+             android:layout_height="48px"
+             android:textSize="13dip"/>
+
+           <Button
+             android:id="@+id/button_deny"
+             android:layout_width="wrap_content"
+             android:layout_height="48px"
+             android:textSize="13dip"/>
+
+         </LinearLayout>
+
+       </RelativeLayout>
 
     </LinearLayout>
 
index b1a43cd..0d834f3 100644 (file)
     android:background="@color/white"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
-    android:paddingTop="10dip">
+    android:paddingTop="2dip">
 
-    <Button
-      android:id="@+id/button_alwaysdeny"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_alignParentLeft="true"
-      style="@style/gears_button"
-      android:textSize="13dip"/>
-
-    <LinearLayout
-      android:layout_width="wrap_content"
-      android:layout_alignParentRight="true"
+    <LinearLayout 
+      android:orientation="vertical"
+      android:layout_width="fill_parent"
       android:layout_height="wrap_content">
 
-      <Button
-        android:id="@+id/button_allow"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textSize="13dip"/>
-
-      <Button
-        android:id="@+id/button_deny"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textSize="13dip"/>
+       <TextView
+         android:id="@+id/selection"
+         android:layout_width="fill_parent"
+         android:layout_height="wrap_content"
+         android:textSize="13dip"
+         android:gravity="right"
+         android:textColor="@color/black"/>
+
+       <RelativeLayout
+         android:background="@color/white"
+         android:layout_width="fill_parent"
+         android:layout_height="wrap_content"
+         android:paddingTop="2dip">
+
+         <LinearLayout
+           android:orientation="horizontal"
+           android:layout_width="wrap_content"
+           android:layout_height="wrap_content"
+           android:background="@color/white">
+           <Button
+             android:id="@+id/button_alwaysdeny"
+             android:layout_width="wrap_content"
+             android:layout_height="48px"
+             android:layout_alignParentLeft="true"
+             style="@style/gears_button"
+             android:textSize="13dip"/>
+
+         </LinearLayout>
+
+         <LinearLayout
+           android:layout_width="wrap_content"
+           android:layout_alignParentRight="true"
+           android:layout_height="wrap_content">
+
+           <Button
+             android:id="@+id/button_allow"
+             android:layout_width="wrap_content"
+             android:layout_height="48px"
+             android:textSize="13dip"/>
+
+           <Button
+             android:id="@+id/button_deny"
+             android:layout_width="wrap_content"
+             android:layout_height="48px"
+             android:textSize="13dip"/>
+
+         </LinearLayout>
+
+       </RelativeLayout>
 
     </LinearLayout>
 
index 5f1c653..b1c1646 100644 (file)
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
-  android:layout_width="wrap_content"
+  android:layout_width="fill_parent"
   android:layout_height="wrap_content">
 
   <LinearLayout
     android:orientation="vertical"
-    android:layout_width="wrap_content"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:background="@color/white" >
+
+    <GridView android:id="@+id/paths_list"
+      android:padding="4dip"
+      android:layout_width="fill_parent"
+      android:layout_height="wrap_content" />
+  </LinearLayout>
+
+  <LinearLayout
+    android:orientation="horizontal"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:background="@color/white">
+
+    <TextView
+      android:id="@+id/path_name"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:textSize="13dip"
+      android:textColor="@color/dark_gray"/>
+    <TextView
+      android:id="@+id/current_path"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:textSize="13dip"
+      android:textColor="@color/black"/>
+
+  </LinearLayout>
+
+  <LinearLayout
+    android:orientation="vertical"
+    android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:background="@color/gray"
     android:padding="1px">
 
     <LinearLayout
       android:orientation="vertical"
-      android:layout_width="wrap_content"
+      android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:background="@color/white">
 
-      <GridView android:id="@+id/files_list"
-        android:padding="4px"
+      <LinearLayout
+        android:orientation="horizontal"
         android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
-        android:horizontalSpacing="2px"
-        android:verticalSpacing="2px"
-        android:numColumns="3"
-        style="@android:style/Widget.ListView.White" />
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:background="@color/white">
+
+        <ImageView
+          android:id="@+id/image"
+          android:padding="10dip"
+          android:layout_centerHorizontal="true"
+          android:layout_width="wrap_content"
+          android:layout_height="wrap_content"
+          android:adjustViewBounds="true"
+          android:visibility="gone"
+          android:gravity="center"
+          android:src="@drawable/gears"/>
+
+        <LinearLayout
+          android:orientation="vertical"
+          android:layout_width="fill_parent"
+          android:layout_height="wrap_content"
+          android:background="@color/white">
+          <GridView android:id="@+id/files_list"
+            android:padding="4px"
+            android:layout_width="fill_parent"
+            android:layout_height="fill_parent"
+            android:horizontalSpacing="2px"
+            android:verticalSpacing="2px"
+            android:numColumns="3"
+            style="@android:style/Widget.ListView.White" />
+
+        </LinearLayout>
+
+      </LinearLayout>
 
     </LinearLayout>
 
index 1db167f..0440e1f 100644 (file)
@@ -22,7 +22,7 @@
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:gravity="center_horizontal"
-  android:padding="2px" >
+  android:padding="4px" >
 
   <ImageView
     android:id="@+id/icon"
 
   <TextView
     android:id="@+id/name"
-    android:textAppearance="?android:attr/textAppearanceSmall"
     android:textColor="@color/black"
+    android:textSize="13dip"
+    android:shadowColor="@color/white"
+    android:shadowRadius="2.0"
     android:singleLine="true"
     android:ellipsize="middle"
     android:layout_width="wrap_content"
index a9026db..07b08ab 100644 (file)
@@ -36,7 +36,7 @@
       android:background="@color/white">
 
       <ListView android:id="@+id/sites_list"
-        android:padding="4dip"
+        android:padding="2dip"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         style="@android:style/Widget.ListView.White" />
index 8a2cadf..11d757a 100644 (file)
@@ -50,7 +50,9 @@
 
   <TableLayout
     android:layout_width="fill_parent"
-    android:layout_height="wrap_content">
+    android:layout_height="wrap_content"
+    android:stretchColumns="0"
+    android:shrinkColumns="0">
 
     <TableRow
       android:id="@+id/local_storage_choice"
         android:gravity="center_vertical"
         android:text="@string/local_storage"/>
 
-      <RadioGroup android:orientation="horizontal">
+      <RadioGroup
+        android:orientation="horizontal"
+        android:layout_width="wrap_content"
+        android:layout_height="fill_parent">
         <RadioButton
           android:id="@+id/local_storage_allowed"
           android:layout_width="wrap_content"
         android:layout_width="wrap_content"
         android:layout_height="fill_parent"
         android:textColor="@color/black"
-        android:gravity="center_vertical"
+        android:layout_gravity="center_vertical"
         android:text="@string/location"/>
 
-      <RadioGroup android:orientation="horizontal">
+      <RadioGroup
+        android:orientation="horizontal"
+        android:layout_width="wrap_content"
+        android:layout_height="fill_parent">
         <RadioButton
           android:id="@+id/location_data_allowed"
           android:layout_width="wrap_content"
index 5f5b3ca..f19b27c 100644 (file)
@@ -50,7 +50,7 @@
             android:alphabeticShortcut="&#32;" 
             android:icon="@drawable/ic_menu_home" />
         <item android:id="@+id/classic_history_menu_id"
-            android:icon="@drawable/ic_menu_recent_history" 
+            android:icon="@android:drawable/ic_menu_recent_history" 
             android:alphabeticShortcut="h" 
             android:title="@string/history" />
         <item android:id="@+id/view_downloads_menu_id"
         <item android:id="@+id/history_tab_menu_id"
             android:title="@string/history"
             android:alphabeticShortcut="h" 
-            android:icon="@drawable/ic_menu_recent_history" />
+            android:icon="@android:drawable/ic_menu_recent_history" />
     </group>
     <!-- these items are toggled in and out of @+id/stop_reload_menu_id -->
     <item android:id="@+id/stop_menu_id"
         android:visible="false" />
     <item android:id="@+id/reload_menu_id"
         android:title="@string/reload" 
-        android:icon="@drawable/ic_menu_refresh" 
+        android:icon="@android:drawable/ic_menu_refresh" 
         android:visible="false" />
 </menu>
  
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
new file mode 100644 (file)
index 0000000..774a4c4
--- /dev/null
@@ -0,0 +1,348 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sign_in_to">"Connectez-vous à <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
+    <string name="username">"Nom"</string>
+    <string name="password">"Mot de passe"</string>
+    <string name="action">"Se connecter"</string>
+    <string name="cancel">"Annuler"</string>
+    <string name="ok">"OK"</string>
+    <!-- no translation found for matches_found (4019114285322631887) -->
+    <skip />
+    <!-- no translation found for zero (5187607177868389265) -->
+    <skip />
+    <string name="page_info">"Infos sur la page"</string>
+    <string name="page_info_view">"Afficher les infos sur la page"</string>
+    <string name="page_info_address">"Adresse :"</string>
+    <string name="ssl_warnings_header">"Le certificat de sécurité pour ce site présente des problèmes."</string>
+    <string name="ssl_continue">"Continuer"</string>
+    <string name="security_warning">"Avertissement de sécurité"</string>
+    <string name="view_certificate">"Afficher le certificat"</string>
+    <string name="ssl_untrusted">"Ce certificat provient d\'une autorité non approuvée."</string>
+    <string name="ssl_mismatch">"Le nom du site ne correspond pas au nom indiqué dans le certificat."</string>
+    <string name="ssl_expired">"Le certificat a expiré."</string>
+    <string name="ssl_not_yet_valid">"Ce certificat n\'est pas encore valide."</string>
+    <string name="ssl_certificate">"Certificat de sécurité"</string>
+    <string name="ssl_certificate_is_valid">"Ce certificat est valide."</string>
+    <string name="issued_to">"Émis à :"</string>
+    <string name="common_name">"Nom commun :"</string>
+    <string name="org_name">"Organisation :"</string>
+    <string name="org_unit">"Unité d\'organisation :"</string>
+    <string name="issued_by">"Émis par :"</string>
+    <string name="validity_period">"Validité :"</string>
+    <string name="issued_on">"Émis le :"</string>
+    <string name="expires_on">"Expire le :"</string>
+    <string name="retrieving_creds_dlg_msg">"Récupération des données de connexion..."</string>
+    <string name="close">"Fermer"</string>
+    <string name="close_window">"La fenêtre sera fermée."</string>
+    <string name="stopping">"Arrêt..."</string>
+    <string name="stop">"Interrompre"</string>
+    <string name="reload">"Actualiser"</string>
+    <string name="back">"Précédent"</string>
+    <string name="forward">"Suivant"</string>
+    <string name="save">"OK"</string>
+    <string name="do_not_save">"Annuler"</string>
+    <string name="location">"Emplacement"</string>
+    <string name="name">"Nom"</string>
+    <string name="http">"http://"</string>
+    <!-- no translation found for save_to_bookmarks (4680844117598293907) -->
+    <skip />
+    <string name="edit_bookmark">"Modifier le favori"</string>
+    <!-- no translation found for create_shortcut_bookmark (9202323987633899835) -->
+    <skip />
+    <string name="open_bookmark">"Ouverture"</string>
+    <string name="remove_bookmark">"Supprimer le favori"</string>
+    <string name="remove_history_item">"Supprimer de l\'historique"</string>
+    <string name="bookmark_saved">"Enregistré dans les favoris"</string>
+    <string name="bookmark_needs_title">"Vous devez attribuer un nom à votre favori."</string>
+    <string name="bookmark_needs_url">"Le favori doit disposer d\'un emplacement."</string>
+    <string name="empty_bookmark">"Impossible de créer un favori vide."</string>
+    <string name="bookmark_url_not_valid">"L\'URL est incorrecte."</string>
+    <string name="delete_bookmark">"Supprimer"</string>
+    <string name="bookmark_page">"Dernière page de favori consultée"</string>
+    <string name="current_page">"Page actuelle :"</string>
+    <string name="delete_bookmark_warning">"Le favori \"<xliff:g id="BOOKMARK">%s</xliff:g>\" sera supprimé."</string>
+    <string name="open_in_new_window">"Ouvrir dans une nouvelle fenêtre"</string>
+    <string name="new_window">"Nouvelle fenêtre"</string>
+    <string name="goto_dot">"Accéder à l\'URL"</string>
+    <string name="find_dot">"Rechercher sur la page"</string>
+    <string name="homepage">"Page d\'accueil"</string>
+    <string name="view_tabs">"Vue d\'ensemble des fenêtres"</string>
+    <!-- no translation found for view_tabs_condensed (5803955493821945369) -->
+    <skip />
+    <string name="tab_picker_title">"Fenêtres actuelles"</string>
+    <string name="tab_picker_view_tab">"Afficher"</string>
+    <string name="tab_picker_new_tab">"Nouvelle fenêtre"</string>
+    <string name="tab_picker_remove_tab">"Fermer"</string>
+    <string name="tab_picker_bookmark">"Favori"</string>
+    <string name="tab_picker_send_url">"Partager le lien"</string>
+    <string name="bookmarks">"Favoris"</string>
+    <string name="shortcut_bookmark">"Favori"</string>
+    <string name="history">"Historique"</string>
+    <string name="menu_view_download">"Téléchargements"</string>
+    <string name="menu_bookmark_page">"Page de favori"</string>
+    <string name="share_page">"Partager la page"</string>
+    <string name="menu_zoom">"Zoom"</string>
+    <string name="menu_flip_orientation">"Changer l\'orientation"</string>
+    <string name="contextmenu_openlink">"Ouvrir"</string>
+    <string name="contextmenu_openlink_newwindow">"Ouvrir une nouvelle fenêtre"</string>
+    <string name="contextmenu_bookmark_thislink">"Lien du favori"</string>
+    <string name="contextmenu_savelink">"Enregistrer le lien"</string>
+    <string name="contextmenu_sharelink">"Partager le lien"</string>
+    <string name="contextmenu_copy">"Copier"</string>
+    <string name="contextmenu_copylink">"Copier l\'URL du lien"</string>
+    <string name="contextmenu_download_image">"Enregistrer l\'image"</string>
+    <string name="contextmenu_view_image">"Afficher l\'image"</string>
+    <string name="contextmenu_dial_dot">"Composer..."</string>
+    <string name="contextmenu_add_contact">"Ajouter un contact"</string>
+    <string name="contextmenu_send_mail">"Envoyer un e-mail"</string>
+    <string name="contextmenu_map">"Plan"</string>
+    <string name="clear">"Effacer"</string>
+    <string name="replace">"Remplacer"</string>
+    <string name="browser_bookmarks_page_bookmarks_text">"Favoris"</string>
+    <string name="menu_preferences">"Paramètres"</string>
+    <string name="pref_content_title">"Paramètres du contenu de la page"</string>
+    <string name="pref_content_load_images">"Charger les images"</string>
+    <string name="pref_content_load_images_summary">"Afficher les images des pages Web"</string>
+    <string name="pref_content_block_popups">"Bloquer les fenêtres contextuelles"</string>
+    <string name="pref_content_javascript">"Activer JavaScript"</string>
+    <string name="pref_content_open_in_background">"Ouvrir à l\'arrière-plan"</string>
+    <string name="pref_content_open_in_background_summary">"Les nouvelles fenêtres s\'ouvrent derrière la fenêtre actuelle"</string>
+    <string name="pref_content_homepage">"Configurer la page d\'accueil"</string>
+    <string name="pref_content_autofit">"Ajustement automatique des pages"</string>
+    <string name="pref_content_autofit_summary">"Configurer les pages Web pour qu\'elles s\'ajustent à l\'écran"</string>
+    <string name="pref_privacy_title">"Paramètres de confidentialité"</string>
+    <string name="pref_privacy_clear_cache">"Effacer le cache"</string>
+    <string name="pref_privacy_clear_cache_summary">"Supprimer tout le contenu de la page en cache"</string>
+    <string name="pref_privacy_clear_cache_dlg">"Le cache sera effacé."</string>
+    <string name="pref_privacy_clear_cookies">"Effacer toutes les données de cookies"</string>
+    <string name="pref_privacy_clear_cookies_summary">"Effacer tous les cookies du navigateur"</string>
+    <string name="pref_privacy_clear_cookies_dlg">"Tous les cookies seront effacés."</string>
+    <string name="pref_privacy_clear_history">"Effacer l\'historique"</string>
+    <string name="pref_privacy_clear_history_summary">"Effacer l\'historique du navigateur"</string>
+    <string name="pref_privacy_clear_history_dlg">"L\'historique du navigateur sera effacé."</string>
+    <string name="pref_privacy_clear_form_data">"Effacer les données du formulaire"</string>
+    <string name="pref_privacy_clear_form_data_summary">"Effacer toutes les données de formulaire enregistrées"</string>
+    <string name="pref_privacy_clear_form_data_dlg">"Toutes les données de formulaire enregistrées seront effacées."</string>
+    <string name="pref_privacy_clear_passwords">"Effacer les mots de passe"</string>
+    <string name="pref_privacy_clear_passwords_summary">"Effacer tous les mots de passe enregistrés"</string>
+    <string name="pref_privacy_clear_passwords_dlg">"Tous les mots de passe enregistrés seront effacés."</string>
+    <string name="pref_security_title">"Paramètres de sécurité"</string>
+    <string name="pref_security_remember_passwords">"Mémoriser les mots de passe"</string>
+    <string name="pref_security_remember_passwords_summary">"Enregistrer les noms d\'utilisateur et les mots de passe pour les sites Web"</string>
+    <string name="pref_security_save_form_data">"Mémoriser les données de formulaire"</string>
+    <string name="pref_security_save_form_data_summary">"Mémoriser les données saisies dans les formulaires pour les utiliser ultérieurement"</string>
+    <string name="pref_security_show_security_warning">"Afficher les avertissements de sécurité"</string>
+    <string name="pref_security_show_security_warning_summary">"Afficher un avertissement lorsqu\'un site présente des problèmes de sécurité"</string>
+    <string name="pref_security_accept_cookies">"Accepter les cookies"</string>
+    <string name="pref_security_accept_cookies_summary">"Autoriser les sites à enregistrer et lire les données \"cookie\""</string>
+    <!-- no translation found for pref_text_size (3765589440020504007) -->
+    <skip />
+  <string-array name="pref_text_size_choices">
+    <item>"Très petite"</item>
+    <item>"Petite"</item>
+    <item>"Normale"</item>
+    <item>"Grande"</item>
+    <item>"Très grande"</item>
+  </string-array>
+    <string name="pref_text_size_dialogtitle">"Taille de la police"</string>
+    <string name="pref_extras_title">"Paramètres avancés"</string>
+    <string name="pref_extras_gears_enable">"Activer Gears"</string>
+    <string name="pref_extras_gears_enable_summary">"Applications étendant les fonctionnalités du navigateur"</string>
+    <string name="pref_extras_gears_settings">"Paramètres Gears"</string>
+    <!-- no translation found for pref_plugin_installed (6387683936112106178) -->
+    <skip />
+    <string name="pref_plugin_installed_empty_list">"Aucun plug-in installé."</string>
+    <string name="pref_extras_gears_settings_summary">"Applications étendant les fonctionnalités du navigateur"</string>
+    <string name="pref_extras_reset_default">"Rétablir les valeurs par défaut"</string>
+    <string name="pref_extras_reset_default_summary">"Effacer toutes les données du navigateur et rétablir les paramètres par défaut"</string>
+    <string name="pref_extras_reset_default_dlg">"Toutes les données du navigateur seront effacées et les paramètres par défaut rétablis."</string>
+    <string name="pref_extras_reset_default_dlg_title">"Rétablir les valeurs par défaut"</string>
+    <string name="pref_development_title">"Débogage"</string>
+    <string name="pref_development_viewport">"Use wide viewport"</string>
+    <string name="pref_development_single_column_rendering">"Single column rendering"</string>
+    <string name="pref_development_normal_rendering">"Normal rendering"</string>
+    <string name="pref_development_trace">"Activer le suivi"</string>
+    <string name="pref_development_nav_dump">"Enable nav cache dump"</string>
+    <!-- no translation found for pref_development_search_url (7979283099657732298) -->
+    <skip />
+    <string name="pref_development_uastring">"UAString"</string>
+  <string-array name="pref_development_ua_choices">
+    <item>"Android"</item>
+    <item>"Desktop"</item>
+    <item>"iPhone"</item>
+  </string-array>
+  <string-array name="pref_development_ua_values">
+    <item>"0"</item>
+    <item>"1"</item>
+    <item>"2"</item>
+  </string-array>
+    <!-- no translation found for pref_default_text_encoding (2689164865300623884) -->
+    <skip />
+    <!-- no translation found for pref_default_text_encoding_choices:0 (7275223955790513818) -->
+    <!-- no translation found for pref_default_text_encoding_choices:1 (2456597866837587140) -->
+    <!-- no translation found for pref_default_text_encoding_choices:2 (7143715548814380950) -->
+    <!-- no translation found for pref_default_text_encoding_choices:3 (5111312120564516587) -->
+    <!-- no translation found for pref_default_text_encoding_choices:4 (6545734186479713946) -->
+    <!-- no translation found for pref_default_text_encoding_dialogtitle (5508255018084978547) -->
+    <skip />
+    <!-- no translation found for pref_default_text_encoding_default (5272126711231936722) -->
+    <skip />
+    <string name="browserFrameRedirect">"Rediriger"</string>
+    <string name="browserFrame307Post">"Cette page Web est en cours de redirection. Voulez-vous renvoyer les données de formulaire saisies vers le nouvel emplacement ?"</string>
+    <string name="browserFrameNetworkErrorLabel">"Problème de connectivité des données"</string>
+    <string name="browserFrameFileErrorLabel">"Problème de fichier"</string>
+    <string name="browserFrameFormResubmitLabel">"Confirmer"</string>
+    <string name="browserFrameFormResubmitMessage">"La page que vous tentez d\'afficher contient des données qui ont déjà été envoyées (\"POSTDATA\"). Si vous renvoyez les données, toute action effectuée par le formulaire sur la page exécutée (notamment les lancements de recherche ou les achats en ligne) seront répétés."</string>
+    <string name="loadSuspendedTitle">"Aucune connexion réseau"</string>
+    <string name="loadSuspended">"Une fois la connexion rétablie, le chargement de la page reprendra."</string>
+    <string name="clear_history">"Effacer l\'historique"</string>
+    <string name="browser_history">"Dernières pages consultées"</string>
+    <string name="empty_history">"L\'historique du navigateur est vide."</string>
+    <string name="add_new_bookmark">"Nouveau favori"</string>
+    <string name="no_database">"Aucune base de données !"</string>
+    <string name="search_hint">"Saisir l\'adresse Web"</string>
+    <string name="search">"Rechercher"</string>
+    <string name="search_button_text">"Aller"</string>
+    <string name="js_dialog_title_prefix">"La page à l\'adresse"</string>
+    <string name="js_dialog_title_suffix">"indique que :"</string>
+    <string name="js_dialog_title_default">"JavaScript"</string>
+    <string name="js_dialog_before_unload">"Vous souhaitez quitter cette page ?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Sélectionnez OK pour continuer ou Annuler pour rester sur la page actuelle."</string>
+    <string name="attention">"Attention"</string>
+    <string name="popup_window_attempt">"Le site tente d\'ouvrir une fenêtre contextuelle."</string>
+    <string name="allow">"Autoriser"</string>
+    <string name="block">"Bloquer"</string>
+    <string name="too_many_windows_dialog_title">"Limite de fenêtres atteinte"</string>
+    <string name="too_many_windows_dialog_message">"Impossible d\'ouvrir une nouvelle fenêtre, car vous avez déjà ouvert le nombre maximum de fenêtres."</string>
+    <string name="too_many_subwindows_dialog_title">"Fenêtre contextuelle déjà ouverte"</string>
+    <string name="too_many_subwindows_dialog_message">"Impossible d\'ouvrir une nouvelle fenêtre. Une seule fenêtre peut être ouverte à la fois."</string>
+    <string name="download_title">"Historique de téléchargement"</string>
+    <string name="download_unknown_filename">"&lt;Inconnu&gt;"</string>
+    <string name="download_menu_open">"Ouvrir"</string>
+    <string name="download_menu_clear">"Effacer de la liste"</string>
+    <string name="download_menu_cancel">"Annuler le téléchargement"</string>
+    <string name="download_menu_cancel_all">"Annuler tous les téléchargements"</string>
+    <string name="download_menu_clear_all">"Effacer la liste"</string>
+    <string name="download_clear_dlg_title">"Effacer"</string>
+    <string name="download_clear_dlg_msg">"Tous les éléments seront effacés de la liste et supprimés du cache du navigateur."</string>
+    <string name="download_cancel_dlg_title">"Annuler les téléchargements"</string>
+    <string name="download_cancel_dlg_msg">"Les <xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> téléchargements seront annulés et effacés de l\'historique des téléchargements."</string>
+    <string name="download_file_error_dlg_title">"Espace insuffisant"</string>
+    <string name="download_file_error_dlg_msg">"Impossible de télécharger <xliff:g id="FILENAME">%s</xliff:g>."\n"Libérez de l\'espace sur votre téléphone, puis réessayez."</string>
+    <string name="download_failed_generic_dlg_title">"Échec de téléchargement"</string>
+    <string name="download_no_sdcard_dlg_title">"Aucune carte SD"</string>
+    <string name="download_no_sdcard_dlg_msg">"Le téléchargement de <xliff:g id="FILENAME">%s</xliff:g> requiert une carte SD."</string>
+    <!-- no translation found for download_sdcard_busy_dlg_title (6877712666046917741) -->
+    <skip />
+    <!-- no translation found for download_sdcard_busy_dlg_msg (4579003999083645700) -->
+    <skip />
+    <string name="download_no_application">"Impossible de trouver une application permettant d\'ouvrir ce fichier."</string>
+    <string name="retry">"Réessayer"</string>
+    <string name="no_downloads">"L\'historique de téléchargement est vide."</string>
+    <string name="download_error">"Échec du téléchargement"</string>
+    <string name="download_success">"Téléchargement de <xliff:g id="FILE">%s</xliff:g> terminé."</string>
+    <string name="download_running">"Téléchargement en cours..."</string>
+    <string name="download_pending">"Début du téléchargement..."</string>
+    <string name="download_pending_network">"En attente d\'une connexion de données..."</string>
+    <string name="download_running_paused">"En attente d\'une connexion de données..."</string>
+    <string name="download_canceled">"Téléchargement annulé"</string>
+    <!-- no translation found for download_not_acceptable (282108828207321357) -->
+    <skip />
+    <string name="download_file_error">"Téléchargement interrompu. Espace insuffisant."</string>
+    <string name="download_length_required">"Téléchargement impossible. La taille de l\'élément n\'a pas pu être déterminée."</string>
+    <string name="download_precondition_failed">"Téléchargement interrompu. Impossible de reprendre le téléchargement."</string>
+    <!-- no translation found for activity_instrumentation_test_runner (8215091309334005029) -->
+    <skip />
+  <string-array name="bookmarks">
+    <item>"Google"</item>
+    <item>"http://www.google.com/"</item>
+    <item>"Yahoo!"</item>
+    <item>"http://www.yahoo.com/"</item>
+    <item>"MSN"</item>
+    <item>"http://www.msn.com/"</item>
+    <item>"MySpace"</item>
+    <item>"http://www.myspace.com/"</item>
+    <item>"Facebook"</item>
+    <item>"http://www.facebook.com/"</item>
+    <item>"Wikipédia"</item>
+    <item>"http://www.wikipedia.org/"</item>
+    <item>"eBay"</item>
+    <item>"http://www.ebay.com/"</item>
+    <item>"CNN"</item>
+    <item>"http://www.cnn.com/"</item>
+    <item>"New York Times"</item>
+    <item>"http://www.nytimes.com/"</item>
+    <item>"ESPN"</item>
+    <item>"http://espn.go.com/"</item>
+    <item>"Amazon"</item>
+    <item>"http://www.amazon.com/"</item>
+    <item>"Météo"</item>
+    <item>"http://www.weather.com/"</item>
+    <item>"BBC"</item>
+    <item>"http://www.bbc.co.uk/"</item>
+  </string-array>
+    <!-- no translation found for permlab_readHistoryBookmarks (2090878935052508686) -->
+    <skip />
+    <!-- no translation found for permdesc_readHistoryBookmarks (3198464990003094365) -->
+    <skip />
+    <!-- no translation found for permlab_writeHistoryBookmarks (3617974487656041765) -->
+    <skip />
+    <!-- no translation found for permdesc_writeHistoryBookmarks (2408364750616892343) -->
+    <skip />
+    <!-- no translation found for query_data_message (2662165772252682312) -->
+    <skip />
+    <!-- no translation found for location_message (3273812190303763599) -->
+    <skip />
+    <!-- no translation found for shortcut_message (8474516749978531587) -->
+    <skip />
+    <!-- no translation found for settings_message (6171686603006325199) -->
+    <skip />
+    <!-- no translation found for filepicker_message (3954806995548322454) -->
+    <skip />
+    <!-- no translation found for image_message (4416921522797991131) -->
+    <skip />
+    <!-- no translation found for settings_title (3579144910187265022) -->
+    <skip />
+    <!-- no translation found for privacy_policy (864201179110197308) -->
+    <skip />
+    <!-- no translation found for permission_button_alwaysdeny (3997759797081359571) -->
+    <skip />
+    <!-- no translation found for permission_button_allow (8433538747157349096) -->
+    <skip />
+    <!-- no translation found for permission_button_deny (8238202164838263939) -->
+    <skip />
+    <!-- no translation found for shortcut_button_alwaysdeny (8677418058335584182) -->
+    <skip />
+    <!-- no translation found for shortcut_button_allow (3106634184087569293) -->
+    <skip />
+    <!-- no translation found for shortcut_button_deny (6054910540900054553) -->
+    <skip />
+    <!-- no translation found for settings_button_allow (447817497759509841) -->
+    <skip />
+    <!-- no translation found for settings_button_deny (602496920123085858) -->
+    <skip />
+    <!-- no translation found for filepicker_button_allow (2849120125810490391) -->
+    <skip />
+    <!-- no translation found for filepicker_button_deny (1302975999145835953) -->
+    <skip />
+    <!-- no translation found for filepicker_path (4680729728498981925) -->
+    <skip />
+    <!-- no translation found for filepicker_no_files_selected (7859426670184432998) -->
+    <skip />
+    <!-- no translation found for filepicker_one_file_selected (1451259953191434851) -->
+    <skip />
+    <!-- no translation found for filepicker_some_files_selected (3859384664191734493) -->
+    <skip />
+    <!-- no translation found for remove (7820112494467011374) -->
+    <skip />
+    <!-- no translation found for local_storage (6703332885937279085) -->
+    <skip />
+    <!-- no translation found for allowed (1599514934221911624) -->
+    <skip />
+    <!-- no translation found for denied (7470209521858372968) -->
+    <skip />
+    <!-- no translation found for unrecognized_dialog_message (687399590684283989) -->
+    <skip />
+    <!-- no translation found for default_button (3901922329454578908) -->
+    <skip />
+</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
new file mode 100644 (file)
index 0000000..b20fef6
--- /dev/null
@@ -0,0 +1,348 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sign_in_to">"Accedi a <xliff:g id="HOSTNAME">%s1</xliff:g> \"<xliff:g id="REALM">%s2</xliff:g>\""</string>
+    <string name="username">"Nome"</string>
+    <string name="password">"Password"</string>
+    <string name="action">"Accedi"</string>
+    <string name="cancel">"Annulla"</string>
+    <string name="ok">"OK"</string>
+    <!-- no translation found for matches_found (4019114285322631887) -->
+    <skip />
+    <!-- no translation found for zero (5187607177868389265) -->
+    <skip />
+    <string name="page_info">"Info pagina"</string>
+    <string name="page_info_view">"Visualizza info pagina"</string>
+    <string name="page_info_address">"Indirizzo:"</string>
+    <string name="ssl_warnings_header">"Problemi con il certificato di protezione del sito."</string>
+    <string name="ssl_continue">"Continua"</string>
+    <string name="security_warning">"Avviso di protezione"</string>
+    <string name="view_certificate">"Visualizza certificato"</string>
+    <string name="ssl_untrusted">"Questo certificato non proviene da un\'autorità attendibile."</string>
+    <string name="ssl_mismatch">"Il nome del sito non corrisponde al nome nel certificato."</string>
+    <string name="ssl_expired">"Il certificato è scaduto."</string>
+    <string name="ssl_not_yet_valid">"Questo certificato non è ancora valido."</string>
+    <string name="ssl_certificate">"Certificato di protezione"</string>
+    <string name="ssl_certificate_is_valid">"Questo certificato è valido."</string>
+    <string name="issued_to">"Rilasciato a:"</string>
+    <string name="common_name">"Nome comune:"</string>
+    <string name="org_name">"Organizzazione:"</string>
+    <string name="org_unit">"Unità organizzativa:"</string>
+    <string name="issued_by">"Rilasciato da:"</string>
+    <string name="validity_period">"Validità:"</string>
+    <string name="issued_on">"Rilasciato il:"</string>
+    <string name="expires_on">"Scade il:"</string>
+    <string name="retrieving_creds_dlg_msg">"Recupero dettagli di accesso..."</string>
+    <string name="close">"Chiudi"</string>
+    <string name="close_window">"Questa finestra verrà chiusa."</string>
+    <string name="stopping">"Interruzione..."</string>
+    <string name="stop">"Interrompi"</string>
+    <string name="reload">"Aggiorna"</string>
+    <string name="back">"Indietro"</string>
+    <string name="forward">"Avanti"</string>
+    <string name="save">"OK"</string>
+    <string name="do_not_save">"Annulla"</string>
+    <string name="location">"Posizione"</string>
+    <string name="name">"Nome"</string>
+    <string name="http">"http://"</string>
+    <!-- no translation found for save_to_bookmarks (4680844117598293907) -->
+    <skip />
+    <string name="edit_bookmark">"Modifica segnalibro"</string>
+    <!-- no translation found for create_shortcut_bookmark (9202323987633899835) -->
+    <skip />
+    <string name="open_bookmark">"Apri"</string>
+    <string name="remove_bookmark">"Elimina segnalibro"</string>
+    <string name="remove_history_item">"Rimuovi da cronologia"</string>
+    <string name="bookmark_saved">"Salvato nei segnalibri."</string>
+    <string name="bookmark_needs_title">"Inserisci un nome per il segnalibro."</string>
+    <string name="bookmark_needs_url">"Inserisci una posizione per il segnalibro."</string>
+    <string name="empty_bookmark">"Impossibile creare un segnalibro vuoto."</string>
+    <string name="bookmark_url_not_valid">"URL non valido."</string>
+    <string name="delete_bookmark">"Elimina"</string>
+    <string name="bookmark_page">"Aggiungi ultima pagina visualizzata in segnalibri"</string>
+    <string name="current_page">"Pagina corrente:"</string>
+    <string name="delete_bookmark_warning">"Il segnalibro \"<xliff:g id="BOOKMARK">%s</xliff:g>\" verrà eliminato."</string>
+    <string name="open_in_new_window">"Apri in nuova finestra"</string>
+    <string name="new_window">"Nuova finestra"</string>
+    <string name="goto_dot">"Vai a URL"</string>
+    <string name="find_dot">"Trova nella pagina"</string>
+    <string name="homepage">"Home page"</string>
+    <string name="view_tabs">"Anteprima finestre"</string>
+    <!-- no translation found for view_tabs_condensed (5803955493821945369) -->
+    <skip />
+    <string name="tab_picker_title">"Finestre correnti"</string>
+    <string name="tab_picker_view_tab">"Visualizza"</string>
+    <string name="tab_picker_new_tab">"Nuova finestra"</string>
+    <string name="tab_picker_remove_tab">"Chiudi"</string>
+    <string name="tab_picker_bookmark">"Segnalibro"</string>
+    <string name="tab_picker_send_url">"Condividi link"</string>
+    <string name="bookmarks">"Segnalibri"</string>
+    <string name="shortcut_bookmark">"Segnalibro"</string>
+    <string name="history">"Cronologia"</string>
+    <string name="menu_view_download">"Download"</string>
+    <string name="menu_bookmark_page">"Pagina segnalibri"</string>
+    <string name="share_page">"Condividi pagina"</string>
+    <string name="menu_zoom">"Zoom"</string>
+    <string name="menu_flip_orientation">"Capovolgi orientamento"</string>
+    <string name="contextmenu_openlink">"Apri"</string>
+    <string name="contextmenu_openlink_newwindow">"Apri in nuova finestra"</string>
+    <string name="contextmenu_bookmark_thislink">"Aggiungi link in segnalibri"</string>
+    <string name="contextmenu_savelink">"Salva link"</string>
+    <string name="contextmenu_sharelink">"Condividi link"</string>
+    <string name="contextmenu_copy">"Copia"</string>
+    <string name="contextmenu_copylink">"Copia URL link"</string>
+    <string name="contextmenu_download_image">"Salva immagine"</string>
+    <string name="contextmenu_view_image">"Visualizza immagine"</string>
+    <string name="contextmenu_dial_dot">"Componi..."</string>
+    <string name="contextmenu_add_contact">"Aggiungi contatto"</string>
+    <string name="contextmenu_send_mail">"Invia email"</string>
+    <string name="contextmenu_map">"Mappa"</string>
+    <string name="clear">"Cancella"</string>
+    <string name="replace">"Sostituisci"</string>
+    <string name="browser_bookmarks_page_bookmarks_text">"Segnalibri"</string>
+    <string name="menu_preferences">"Impostazioni"</string>
+    <string name="pref_content_title">"Impostazioni contenuti pagina"</string>
+    <string name="pref_content_load_images">"Carica immagini"</string>
+    <string name="pref_content_load_images_summary">"Visualizza immagini in pagine web"</string>
+    <string name="pref_content_block_popups">"Blocca finestre pop-up"</string>
+    <string name="pref_content_javascript">"Attiva JavaScript"</string>
+    <string name="pref_content_open_in_background">"Apri in secondo piano"</string>
+    <string name="pref_content_open_in_background_summary">"Le nuove finestre vengono aperte dietro la finestra corrente"</string>
+    <string name="pref_content_homepage">"Imposta home page"</string>
+    <string name="pref_content_autofit">"Adatta autom. pagine"</string>
+    <string name="pref_content_autofit_summary">"Adatta le pagine web allo schermo"</string>
+    <string name="pref_privacy_title">"Impostazioni privacy"</string>
+    <string name="pref_privacy_clear_cache">"Cancella cache"</string>
+    <string name="pref_privacy_clear_cache_summary">"Elimina tutti i contenuti delle pagine nella cache"</string>
+    <string name="pref_privacy_clear_cache_dlg">"La cache verrà cancellata."</string>
+    <string name="pref_privacy_clear_cookies">"Cancella tutti i dati dei cookie"</string>
+    <string name="pref_privacy_clear_cookies_summary">"Cancella tutti i cookie del browser"</string>
+    <string name="pref_privacy_clear_cookies_dlg">"Verranno cancellati tutti i cookie."</string>
+    <string name="pref_privacy_clear_history">"Cancella cronologia"</string>
+    <string name="pref_privacy_clear_history_summary">"Cancella la cronologia di esplorazione del browser"</string>
+    <string name="pref_privacy_clear_history_dlg">"La cronologia di esplorazione del browser verrà cancellata."</string>
+    <string name="pref_privacy_clear_form_data">"Cancella dati moduli"</string>
+    <string name="pref_privacy_clear_form_data_summary">"Cancella tutti i dati dei moduli salvati"</string>
+    <string name="pref_privacy_clear_form_data_dlg">"Tutti i dati dei moduli salvati saranno cancellati."</string>
+    <string name="pref_privacy_clear_passwords">"Cancella password"</string>
+    <string name="pref_privacy_clear_passwords_summary">"Cancella tutte le password salvate"</string>
+    <string name="pref_privacy_clear_passwords_dlg">"Tutte le password salvate saranno cancellate."</string>
+    <string name="pref_security_title">"Impostazioni di protezione"</string>
+    <string name="pref_security_remember_passwords">"Memorizza le password"</string>
+    <string name="pref_security_remember_passwords_summary">"Salva nomi utente e password per i siti web"</string>
+    <string name="pref_security_save_form_data">"Memorizza dati moduli"</string>
+    <string name="pref_security_save_form_data_summary">"Memorizza i dati che digito nei moduli per usi futuri"</string>
+    <string name="pref_security_show_security_warning">"Mostra avvisi di protezione"</string>
+    <string name="pref_security_show_security_warning_summary">"Mostra un avviso se esiste un problema di sicurezza con un sito"</string>
+    <string name="pref_security_accept_cookies">"Accetta cookie"</string>
+    <string name="pref_security_accept_cookies_summary">"Consenti ai siti di salvare e leggere i dati \"cookie\""</string>
+    <!-- no translation found for pref_text_size (3765589440020504007) -->
+    <skip />
+  <string-array name="pref_text_size_choices">
+    <item>"Molto piccolo"</item>
+    <item>"Piccolo"</item>
+    <item>"Normale"</item>
+    <item>"Grande"</item>
+    <item>"Molto grande"</item>
+  </string-array>
+    <string name="pref_text_size_dialogtitle">"Dimensioni testo"</string>
+    <string name="pref_extras_title">"Impostazioni avanzate"</string>
+    <string name="pref_extras_gears_enable">"Attiva Gears"</string>
+    <string name="pref_extras_gears_enable_summary">"Applicazioni che estendono le funzionalità del browser"</string>
+    <string name="pref_extras_gears_settings">"Impostazioni Gears"</string>
+    <!-- no translation found for pref_plugin_installed (6387683936112106178) -->
+    <skip />
+    <string name="pref_plugin_installed_empty_list">"No installed plugins."</string>
+    <string name="pref_extras_gears_settings_summary">"Applicazioni che estendono le funzionalità del browser"</string>
+    <string name="pref_extras_reset_default">"Ripristina valori predefiniti"</string>
+    <string name="pref_extras_reset_default_summary">"Cancella tutti i dati del browser e ripristina tutte le impostazioni predefinite"</string>
+    <string name="pref_extras_reset_default_dlg">"Verranno cancellati tutti i dati del browser e ripristinate le impostazioni predefinite."</string>
+    <string name="pref_extras_reset_default_dlg_title">"Ripristina valori predefiniti"</string>
+    <string name="pref_development_title">"Debug"</string>
+    <string name="pref_development_viewport">"Use wide viewport"</string>
+    <string name="pref_development_single_column_rendering">"Single column rendering"</string>
+    <string name="pref_development_normal_rendering">"Normal rendering"</string>
+    <string name="pref_development_trace">"Enable tracing"</string>
+    <string name="pref_development_nav_dump">"Enable nav cache dump"</string>
+    <!-- no translation found for pref_development_search_url (7979283099657732298) -->
+    <skip />
+    <string name="pref_development_uastring">"UAString"</string>
+  <string-array name="pref_development_ua_choices">
+    <item>"Android"</item>
+    <item>"Desktop"</item>
+    <item>"iPhone"</item>
+  </string-array>
+  <string-array name="pref_development_ua_values">
+    <item>"0"</item>
+    <item>"1"</item>
+    <item>"2"</item>
+  </string-array>
+    <!-- no translation found for pref_default_text_encoding (2689164865300623884) -->
+    <skip />
+    <!-- no translation found for pref_default_text_encoding_choices:0 (7275223955790513818) -->
+    <!-- no translation found for pref_default_text_encoding_choices:1 (2456597866837587140) -->
+    <!-- no translation found for pref_default_text_encoding_choices:2 (7143715548814380950) -->
+    <!-- no translation found for pref_default_text_encoding_choices:3 (5111312120564516587) -->
+    <!-- no translation found for pref_default_text_encoding_choices:4 (6545734186479713946) -->
+    <!-- no translation found for pref_default_text_encoding_dialogtitle (5508255018084978547) -->
+    <skip />
+    <!-- no translation found for pref_default_text_encoding_default (5272126711231936722) -->
+    <skip />
+    <string name="browserFrameRedirect">"Reindirizza"</string>
+    <string name="browserFrame307Post">"La pagina web è in fase di reindizzamento. Inviare di nuovo i dati del modulo alla nuova posizione?"</string>
+    <string name="browserFrameNetworkErrorLabel">"Problema di connettività dati"</string>
+    <string name="browserFrameFileErrorLabel">"Problemi con il file"</string>
+    <string name="browserFrameFormResubmitLabel">"Conferma"</string>
+    <string name="browserFrameFormResubmitMessage">"La pagina che stai tentando di visualizzare contiene dati già inviati (\"POSTDATA\"). Se invii di nuovo i dati, ogni azione effettuata dal modulo nella pagina (come una ricerca o un acquisto online) verrà ripetuta."</string>
+    <string name="loadSuspendedTitle">"Nessuna connessione di rete"</string>
+    <string name="loadSuspended">"Il caricamento della pagina continuerà una volta ripristinata la connessione."</string>
+    <string name="clear_history">"Cancella cronologia"</string>
+    <string name="browser_history">"Pagine visitate di recente"</string>
+    <string name="empty_history">"La cronologia del browser è vuota."</string>
+    <string name="add_new_bookmark">"Nuovo segnalibro"</string>
+    <string name="no_database">"Nessun database"</string>
+    <string name="search_hint">"Digita l\'indirizzo web"</string>
+    <string name="search">"Cerca"</string>
+    <string name="search_button_text">"Vai"</string>
+    <string name="js_dialog_title_prefix">"La pagina all\'indirizzo"</string>
+    <string name="js_dialog_title_suffix">"invia il messaggio:"</string>
+    <string name="js_dialog_title_default">"JavaScript"</string>
+    <string name="js_dialog_before_unload">"Uscire da questa pagina?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Seleziona OK per continuare o Annulla per rimanere nella pagina corrente."</string>
+    <string name="attention">"Attenzione"</string>
+    <string name="popup_window_attempt">"Il sito sta tentando di aprire una finestra pop-up."</string>
+    <string name="allow">"Consenti"</string>
+    <string name="block">"Blocca"</string>
+    <string name="too_many_windows_dialog_title">"Numero limite di finestre raggiunto"</string>
+    <string name="too_many_windows_dialog_message">"Impossibile aprire una nuova finestra. Numero massimo di finestre aperte già raggiunto."</string>
+    <string name="too_many_subwindows_dialog_title">"Finestra pop-up già aperta"</string>
+    <string name="too_many_subwindows_dialog_message">"Impossibile aprire una nuova finestra pop-up. È possibile aprirne soltanto una alla volta."</string>
+    <string name="download_title">"Cronologia download"</string>
+    <string name="download_unknown_filename">"&lt;Sconosciuto&gt;"</string>
+    <string name="download_menu_open">"Apri"</string>
+    <string name="download_menu_clear">"Cancella da elenco"</string>
+    <string name="download_menu_cancel">"Cancella download"</string>
+    <string name="download_menu_cancel_all">"Annulla tutti i download"</string>
+    <string name="download_menu_clear_all">"Cancella elenco"</string>
+    <string name="download_clear_dlg_title">"Cancella"</string>
+    <string name="download_clear_dlg_msg">"Tutti gli elementi verranno cancellati dall\'elenco e rimossi dalla cache del browser."</string>
+    <string name="download_cancel_dlg_title">"Annulla download"</string>
+    <string name="download_cancel_dlg_msg">"Tutti i <xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> download verranno cancellati dalla cronologia download."</string>
+    <string name="download_file_error_dlg_title">"Spazio esaurito"</string>
+    <string name="download_file_error_dlg_msg">"Impossibile scaricare <xliff:g id="FILENAME">%s</xliff:g>."\n"Liberare spazio sul telefono e riprovare."</string>
+    <string name="download_failed_generic_dlg_title">"Download non riuscito"</string>
+    <string name="download_no_sdcard_dlg_title">"Nessuna scheda SD"</string>
+    <string name="download_no_sdcard_dlg_msg">"Per scaricare <xliff:g id="FILENAME">%s</xliff:g> occorre una scheda SD."</string>
+    <!-- no translation found for download_sdcard_busy_dlg_title (6877712666046917741) -->
+    <skip />
+    <!-- no translation found for download_sdcard_busy_dlg_msg (4579003999083645700) -->
+    <skip />
+    <string name="download_no_application">"Impossibile trovare un\'applicazione in cui aprire questo file."</string>
+    <string name="retry">"Riprova"</string>
+    <string name="no_downloads">"La cronologia download è vuota."</string>
+    <string name="download_error">"Download non riuscito."</string>
+    <string name="download_success">"Download di <xliff:g id="FILE">%s</xliff:g> completo."</string>
+    <string name="download_running">"Download..."</string>
+    <string name="download_pending">"Avvio download..."</string>
+    <string name="download_pending_network">"In attesa di connessione dati..."</string>
+    <string name="download_running_paused">"In attesa di connessione dati..."</string>
+    <string name="download_canceled">"Download annullato."</string>
+    <!-- no translation found for download_not_acceptable (282108828207321357) -->
+    <skip />
+    <string name="download_file_error">"Impossibile terminare il download. Spazio insufficiente."</string>
+    <string name="download_length_required">"Impossibile effettuare il download. Impossibile determinare le dimensioni dell\'elemento."</string>
+    <string name="download_precondition_failed">"Download interrotto. Impossibile ripristinarlo."</string>
+    <!-- no translation found for activity_instrumentation_test_runner (8215091309334005029) -->
+    <skip />
+  <string-array name="bookmarks">
+    <item>"Google"</item>
+    <item>"http://www.google.com/"</item>
+    <item>"Yahoo!"</item>
+    <item>"http://www.yahoo.com/"</item>
+    <item>"MSN"</item>
+    <item>"http://www.msn.com/"</item>
+    <item>"MySpace"</item>
+    <item>"http://www.myspace.com/"</item>
+    <item>"Facebook"</item>
+    <item>"http://www.facebook.com/"</item>
+    <item>"Wikipedia"</item>
+    <item>"http://www.wikipedia.org/"</item>
+    <item>"eBay"</item>
+    <item>"http://www.ebay.com/"</item>
+    <item>"CNN"</item>
+    <item>"http://www.cnn.com/"</item>
+    <item>"New York Times"</item>
+    <item>"http://www.nytimes.com/"</item>
+    <item>"ESPN"</item>
+    <item>"http://espn.go.com/"</item>
+    <item>"Amazon"</item>
+    <item>"http://www.amazon.com/"</item>
+    <item>"Weather Channel"</item>
+    <item>"http://www.weather.com/"</item>
+    <item>"BBC"</item>
+    <item>"http://www.bbc.co.uk/"</item>
+  </string-array>
+    <!-- no translation found for permlab_readHistoryBookmarks (2090878935052508686) -->
+    <skip />
+    <!-- no translation found for permdesc_readHistoryBookmarks (3198464990003094365) -->
+    <skip />
+    <!-- no translation found for permlab_writeHistoryBookmarks (3617974487656041765) -->
+    <skip />
+    <!-- no translation found for permdesc_writeHistoryBookmarks (2408364750616892343) -->
+    <skip />
+    <!-- no translation found for query_data_message (2662165772252682312) -->
+    <skip />
+    <!-- no translation found for location_message (3273812190303763599) -->
+    <skip />
+    <!-- no translation found for shortcut_message (8474516749978531587) -->
+    <skip />
+    <!-- no translation found for settings_message (6171686603006325199) -->
+    <skip />
+    <!-- no translation found for filepicker_message (3954806995548322454) -->
+    <skip />
+    <!-- no translation found for image_message (4416921522797991131) -->
+    <skip />
+    <!-- no translation found for settings_title (3579144910187265022) -->
+    <skip />
+    <!-- no translation found for privacy_policy (864201179110197308) -->
+    <skip />
+    <!-- no translation found for permission_button_alwaysdeny (3997759797081359571) -->
+    <skip />
+    <!-- no translation found for permission_button_allow (8433538747157349096) -->
+    <skip />
+    <!-- no translation found for permission_button_deny (8238202164838263939) -->
+    <skip />
+    <!-- no translation found for shortcut_button_alwaysdeny (8677418058335584182) -->
+    <skip />
+    <!-- no translation found for shortcut_button_allow (3106634184087569293) -->
+    <skip />
+    <!-- no translation found for shortcut_button_deny (6054910540900054553) -->
+    <skip />
+    <!-- no translation found for settings_button_allow (447817497759509841) -->
+    <skip />
+    <!-- no translation found for settings_button_deny (602496920123085858) -->
+    <skip />
+    <!-- no translation found for filepicker_button_allow (2849120125810490391) -->
+    <skip />
+    <!-- no translation found for filepicker_button_deny (1302975999145835953) -->
+    <skip />
+    <!-- no translation found for filepicker_path (4680729728498981925) -->
+    <skip />
+    <!-- no translation found for filepicker_no_files_selected (7859426670184432998) -->
+    <skip />
+    <!-- no translation found for filepicker_one_file_selected (1451259953191434851) -->
+    <skip />
+    <!-- no translation found for filepicker_some_files_selected (3859384664191734493) -->
+    <skip />
+    <!-- no translation found for remove (7820112494467011374) -->
+    <skip />
+    <!-- no translation found for local_storage (6703332885937279085) -->
+    <skip />
+    <!-- no translation found for allowed (1599514934221911624) -->
+    <skip />
+    <!-- no translation found for denied (7470209521858372968) -->
+    <skip />
+    <!-- no translation found for unrecognized_dialog_message (687399590684283989) -->
+    <skip />
+    <!-- no translation found for default_button (3901922329454578908) -->
+    <skip />
+</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
new file mode 100644 (file)
index 0000000..b37ede3
--- /dev/null
@@ -0,0 +1,348 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sign_in_to">"登录至 <xliff:g id="HOSTNAME">%s1</xliff:g>“<xliff:g id="REALM">%s2</xliff:g>”"</string>
+    <string name="username">"名称"</string>
+    <string name="password">"密码"</string>
+    <string name="action">"登录"</string>
+    <string name="cancel">"取消"</string>
+    <string name="ok">"确定"</string>
+    <!-- no translation found for matches_found (4019114285322631887) -->
+    <skip />
+    <!-- no translation found for zero (5187607177868389265) -->
+    <skip />
+    <string name="page_info">"页面信息"</string>
+    <string name="page_info_view">"查看页面信息"</string>
+    <string name="page_info_address">"地址:"</string>
+    <string name="ssl_warnings_header">"该网站的安全证书有问题。"</string>
+    <string name="ssl_continue">"继续"</string>
+    <string name="security_warning">"安全警告"</string>
+    <string name="view_certificate">"查看证书"</string>
+    <string name="ssl_untrusted">"该证书并非来自可信的授权机构。"</string>
+    <string name="ssl_mismatch">"网站的名称与证书上的名称不一致。"</string>
+    <string name="ssl_expired">"该证书已过期。"</string>
+    <string name="ssl_not_yet_valid">"该证书尚未生效。"</string>
+    <string name="ssl_certificate">"安全证书"</string>
+    <string name="ssl_certificate_is_valid">"该证书有效。"</string>
+    <string name="issued_to">"发布位置:"</string>
+    <string name="common_name">"常用名称:"</string>
+    <string name="org_name">"组织:"</string>
+    <string name="org_unit">"组织单位:"</string>
+    <string name="issued_by">"发布者:"</string>
+    <string name="validity_period">"有效性:"</string>
+    <string name="issued_on">"发布时间:"</string>
+    <string name="expires_on">"有效期至:"</string>
+    <string name="retrieving_creds_dlg_msg">"正在检索登录详细信息..."</string>
+    <string name="close">"关闭"</string>
+    <string name="close_window">"该窗口会关闭。"</string>
+    <string name="stopping">"正在停止..."</string>
+    <string name="stop">"停止"</string>
+    <string name="reload">"刷新"</string>
+    <string name="back">"返回"</string>
+    <string name="forward">"前进"</string>
+    <string name="save">"确定"</string>
+    <string name="do_not_save">"取消"</string>
+    <string name="location">"位置"</string>
+    <string name="name">"名称"</string>
+    <string name="http">"http://"</string>
+    <!-- no translation found for save_to_bookmarks (4680844117598293907) -->
+    <skip />
+    <string name="edit_bookmark">"编辑书签"</string>
+    <!-- no translation found for create_shortcut_bookmark (9202323987633899835) -->
+    <skip />
+    <string name="open_bookmark">"打开"</string>
+    <string name="remove_bookmark">"删除书签"</string>
+    <string name="remove_history_item">"从历史记录中删除"</string>
+    <string name="bookmark_saved">"保存至书签。"</string>
+    <string name="bookmark_needs_title">"书签必须具有名称。"</string>
+    <string name="bookmark_needs_url">"书签必须具有位置。"</string>
+    <string name="empty_bookmark">"无法创建空书签。"</string>
+    <string name="bookmark_url_not_valid">"网址无效。"</string>
+    <string name="delete_bookmark">"删除"</string>
+    <string name="bookmark_page">"将上次查看过的页面加为书签"</string>
+    <string name="current_page">"当前页面:"</string>
+    <string name="delete_bookmark_warning">"会删除书签“<xliff:g id="BOOKMARK">%s</xliff:g>”。"</string>
+    <string name="open_in_new_window">"在新窗口中打开"</string>
+    <string name="new_window">"新窗口"</string>
+    <string name="goto_dot">"转至网址"</string>
+    <string name="find_dot">"在页面上查找"</string>
+    <string name="homepage">"主页"</string>
+    <string name="view_tabs">"窗口概述"</string>
+    <!-- no translation found for view_tabs_condensed (5803955493821945369) -->
+    <skip />
+    <string name="tab_picker_title">"当前窗口"</string>
+    <string name="tab_picker_view_tab">"查看"</string>
+    <string name="tab_picker_new_tab">"新窗口"</string>
+    <string name="tab_picker_remove_tab">"关闭"</string>
+    <string name="tab_picker_bookmark">"书签"</string>
+    <string name="tab_picker_send_url">"共享链接"</string>
+    <string name="bookmarks">"书签"</string>
+    <string name="shortcut_bookmark">"书签"</string>
+    <string name="history">"历史记录"</string>
+    <string name="menu_view_download">"下载"</string>
+    <string name="menu_bookmark_page">"书签页面"</string>
+    <string name="share_page">"共享页面"</string>
+    <string name="menu_zoom">"缩放"</string>
+    <string name="menu_flip_orientation">"反转方向"</string>
+    <string name="contextmenu_openlink">"打开"</string>
+    <string name="contextmenu_openlink_newwindow">"在新窗口中打开"</string>
+    <string name="contextmenu_bookmark_thislink">"书签链接"</string>
+    <string name="contextmenu_savelink">"保存链接"</string>
+    <string name="contextmenu_sharelink">"共享链接"</string>
+    <string name="contextmenu_copy">"复制"</string>
+    <string name="contextmenu_copylink">"复制链接网址"</string>
+    <string name="contextmenu_download_image">"保存图片"</string>
+    <string name="contextmenu_view_image">"查看图片"</string>
+    <string name="contextmenu_dial_dot">"拔号..."</string>
+    <string name="contextmenu_add_contact">"添加联系人"</string>
+    <string name="contextmenu_send_mail">"发送电子邮件"</string>
+    <string name="contextmenu_map">"地图"</string>
+    <string name="clear">"清除"</string>
+    <string name="replace">"替换"</string>
+    <string name="browser_bookmarks_page_bookmarks_text">"书签"</string>
+    <string name="menu_preferences">"设置"</string>
+    <string name="pref_content_title">"页面内容设置"</string>
+    <string name="pref_content_load_images">"载入图片"</string>
+    <string name="pref_content_load_images_summary">"在网页上显示图片"</string>
+    <string name="pref_content_block_popups">"阻止弹出窗口"</string>
+    <string name="pref_content_javascript">"启用 JavaScript"</string>
+    <string name="pref_content_open_in_background">"在后台打开"</string>
+    <string name="pref_content_open_in_background_summary">"新窗口会在当前窗口后方打开"</string>
+    <string name="pref_content_homepage">"设置主页"</string>
+    <string name="pref_content_autofit">"自动适应页面"</string>
+    <string name="pref_content_autofit_summary">"调整网页格式以适合屏幕大小"</string>
+    <string name="pref_privacy_title">"隐私设置"</string>
+    <string name="pref_privacy_clear_cache">"清除缓存"</string>
+    <string name="pref_privacy_clear_cache_summary">"删除所有缓存的页面内容"</string>
+    <string name="pref_privacy_clear_cache_dlg">"会清除缓存。"</string>
+    <string name="pref_privacy_clear_cookies">"清除所有 Cookie 数据"</string>
+    <string name="pref_privacy_clear_cookies_summary">"清除所有浏览器 Cookie"</string>
+    <string name="pref_privacy_clear_cookies_dlg">"会清除所有 Cookie。"</string>
+    <string name="pref_privacy_clear_history">"清除历史记录"</string>
+    <string name="pref_privacy_clear_history_summary">"清除浏览器导航历史记录"</string>
+    <string name="pref_privacy_clear_history_dlg">"会清除浏览器导航历史记录。"</string>
+    <string name="pref_privacy_clear_form_data">"清除表单数据"</string>
+    <string name="pref_privacy_clear_form_data_summary">"清除所有已保存的表单数据"</string>
+    <string name="pref_privacy_clear_form_data_dlg">"会清除所有保存的表单数据。"</string>
+    <string name="pref_privacy_clear_passwords">"清除密码"</string>
+    <string name="pref_privacy_clear_passwords_summary">"清除所有保存的密码"</string>
+    <string name="pref_privacy_clear_passwords_dlg">"会清除所有保存的密码。"</string>
+    <string name="pref_security_title">"安全设置"</string>
+    <string name="pref_security_remember_passwords">"记住密码"</string>
+    <string name="pref_security_remember_passwords_summary">"保存用于网站的用户名和密码"</string>
+    <string name="pref_security_save_form_data">"记住表单数据"</string>
+    <string name="pref_security_save_form_data_summary">"记住我在表单中键入的数据以供以后使用"</string>
+    <string name="pref_security_show_security_warning">"显示安全警告"</string>
+    <string name="pref_security_show_security_warning_summary">"当网站的安全有问题时显示警告"</string>
+    <string name="pref_security_accept_cookies">"接受 Cookie"</string>
+    <string name="pref_security_accept_cookies_summary">"允许网站保存并读取“Cookie”数据"</string>
+    <!-- no translation found for pref_text_size (3765589440020504007) -->
+    <skip />
+  <string-array name="pref_text_size_choices">
+    <item>"极小"</item>
+    <item>"小"</item>
+    <item>"正常"</item>
+    <item>"大"</item>
+    <item>"极大"</item>
+  </string-array>
+    <string name="pref_text_size_dialogtitle">"文字大小"</string>
+    <string name="pref_extras_title">"高级设置"</string>
+    <string name="pref_extras_gears_enable">"启用 Gears"</string>
+    <string name="pref_extras_gears_enable_summary">"扩展浏览器功能的应用程序"</string>
+    <string name="pref_extras_gears_settings">"Gears 设置"</string>
+    <!-- no translation found for pref_plugin_installed (6387683936112106178) -->
+    <skip />
+    <string name="pref_plugin_installed_empty_list">"没有已安装的插件。"</string>
+    <string name="pref_extras_gears_settings_summary">"扩展浏览器功能的应用程序"</string>
+    <string name="pref_extras_reset_default">"重置为默认值"</string>
+    <string name="pref_extras_reset_default_summary">"清除所有浏览器数据并将所有设置重置为默认值"</string>
+    <string name="pref_extras_reset_default_dlg">"会清除所有浏览器数据并且设置会恢复为默认值。"</string>
+    <string name="pref_extras_reset_default_dlg_title">"重置为默认值"</string>
+    <string name="pref_development_title">"调试"</string>
+    <string name="pref_development_viewport">"使用宽视口"</string>
+    <string name="pref_development_single_column_rendering">"单列呈现"</string>
+    <string name="pref_development_normal_rendering">"正常呈现"</string>
+    <string name="pref_development_trace">"启用跟踪"</string>
+    <string name="pref_development_nav_dump">"启用导航缓存转储"</string>
+    <!-- no translation found for pref_development_search_url (7979283099657732298) -->
+    <skip />
+    <string name="pref_development_uastring">"UAString"</string>
+  <string-array name="pref_development_ua_choices">
+    <item>"Android"</item>
+    <item>"桌面"</item>
+    <item>"iPhone"</item>
+  </string-array>
+  <string-array name="pref_development_ua_values">
+    <item>"0"</item>
+    <item>"1"</item>
+    <item>"2"</item>
+  </string-array>
+    <!-- no translation found for pref_default_text_encoding (2689164865300623884) -->
+    <skip />
+    <!-- no translation found for pref_default_text_encoding_choices:0 (7275223955790513818) -->
+    <!-- no translation found for pref_default_text_encoding_choices:1 (2456597866837587140) -->
+    <!-- no translation found for pref_default_text_encoding_choices:2 (7143715548814380950) -->
+    <!-- no translation found for pref_default_text_encoding_choices:3 (5111312120564516587) -->
+    <!-- no translation found for pref_default_text_encoding_choices:4 (6545734186479713946) -->
+    <!-- no translation found for pref_default_text_encoding_dialogtitle (5508255018084978547) -->
+    <skip />
+    <!-- no translation found for pref_default_text_encoding_default (5272126711231936722) -->
+    <skip />
+    <string name="browserFrameRedirect">"重定向"</string>
+    <string name="browserFrame307Post">"该网页正被重定向。是否将您键入的表单数据重新发送到新位置?"</string>
+    <string name="browserFrameNetworkErrorLabel">"数据连接性问题"</string>
+    <string name="browserFrameFileErrorLabel">"文件有问题"</string>
+    <string name="browserFrameFormResubmitLabel">"确认"</string>
+    <string name="browserFrameFormResubmitMessage">"您尝试查看的页面中包含已经提交的数据(“POSTDATA”)。如果重新发送数据,系统会重复该页面上的表单所执行过的一切操作(如搜索或在线购买)。"</string>
+    <string name="loadSuspendedTitle">"没有网络连接"</string>
+    <string name="loadSuspended">"连接恢复后页面会继续载入。"</string>
+    <string name="clear_history">"清除历史记录"</string>
+    <string name="browser_history">"最近访问过的页面"</string>
+    <string name="empty_history">"浏览器历史记录为空。"</string>
+    <string name="add_new_bookmark">"新建书签"</string>
+    <string name="no_database">"没有数据库!"</string>
+    <string name="search_hint">"键入网址"</string>
+    <string name="search">"搜索"</string>
+    <string name="search_button_text">"转至"</string>
+    <string name="js_dialog_title_prefix">"该页面位于"</string>
+    <string name="js_dialog_title_suffix">"显示:"</string>
+    <string name="js_dialog_title_default">"JavaScript"</string>
+    <string name="js_dialog_before_unload">"是否从该页面导航至它处?"\n\n"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"选择“确定”继续,或选择“取消”留在当前页面。"</string>
+    <string name="attention">"注意"</string>
+    <string name="popup_window_attempt">"该网站正试图打开一个弹出窗口。"</string>
+    <string name="allow">"允许"</string>
+    <string name="block">"阻止"</string>
+    <string name="too_many_windows_dialog_title">"已达到窗口限制"</string>
+    <string name="too_many_windows_dialog_message">"无法打开新窗口,因为您打开的窗口数已达到允许的最高数目。"</string>
+    <string name="too_many_subwindows_dialog_title">"弹出窗口已经打开"</string>
+    <string name="too_many_subwindows_dialog_message">"无法打开新的弹出窗口,因为不管何时一次都只能打开一个。"</string>
+    <string name="download_title">"下载历史记录"</string>
+    <string name="download_unknown_filename">"&lt;未知&gt;"</string>
+    <string name="download_menu_open">"打开"</string>
+    <string name="download_menu_clear">"从列表中清除"</string>
+    <string name="download_menu_cancel">"取消下载"</string>
+    <string name="download_menu_cancel_all">"取消所有下载"</string>
+    <string name="download_menu_clear_all">"清除列表"</string>
+    <string name="download_clear_dlg_title">"清除"</string>
+    <string name="download_clear_dlg_msg">"所有条目都会从列表中清除并会从浏览器缓存中删除。"</string>
+    <string name="download_cancel_dlg_title">"取消下载"</string>
+    <string name="download_cancel_dlg_msg">"所有 <xliff:g id="DOWNLOAD_COUNT">%d</xliff:g> 个下载都会取消并从下载历史记录中清除。"</string>
+    <string name="download_file_error_dlg_title">"空间不足"</string>
+    <string name="download_file_error_dlg_msg">"无法下载<xliff:g id="FILENAME">%s</xliff:g>。"\n"请释放手机中的一些空间并重试。"</string>
+    <string name="download_failed_generic_dlg_title">"下载不成功"</string>
+    <string name="download_no_sdcard_dlg_title">"无 SD 卡"</string>
+    <string name="download_no_sdcard_dlg_msg">"需要 SD 卡才能下载 <xliff:g id="FILENAME">%s</xliff:g>。"</string>
+    <!-- no translation found for download_sdcard_busy_dlg_title (6877712666046917741) -->
+    <skip />
+    <!-- no translation found for download_sdcard_busy_dlg_msg (4579003999083645700) -->
+    <skip />
+    <string name="download_no_application">"无法找到可打开此文件的应用程序。"</string>
+    <string name="retry">"重试"</string>
+    <string name="no_downloads">"下载历史记录为空。"</string>
+    <string name="download_error">"下载不成功。"</string>
+    <string name="download_success">"<xliff:g id="FILE">%s</xliff:g>下载完成。"</string>
+    <string name="download_running">"正在下载..."</string>
+    <string name="download_pending">"正在开始下载..."</string>
+    <string name="download_pending_network">"正在等待数据连接..."</string>
+    <string name="download_running_paused">"正在等待数据连接..."</string>
+    <string name="download_canceled">"下载已取消。"</string>
+    <!-- no translation found for download_not_acceptable (282108828207321357) -->
+    <skip />
+    <string name="download_file_error">"无法完成下载。存储空间不足。"</string>
+    <string name="download_length_required">"无法下载。无法确定该项的大小。"</string>
+    <string name="download_precondition_failed">"下载中断,无法重新开始。"</string>
+    <!-- no translation found for activity_instrumentation_test_runner (8215091309334005029) -->
+    <skip />
+  <string-array name="bookmarks">
+    <item>"Google"</item>
+    <item>"http://www.google.cn/"</item>
+    <item>"Yahoo!"</item>
+    <item>"http://www.yahoo.com/"</item>
+    <item>"MSN"</item>
+    <item>"http://www.msn.com/"</item>
+    <item>"MySpace"</item>
+    <item>"http://www.myspace.com/"</item>
+    <item>"Facebook"</item>
+    <item>"http://www.facebook.com/"</item>
+    <item>"Wikipedia"</item>
+    <item>"http://www.wikipedia.org/"</item>
+    <item>"易趣"</item>
+    <item>"http://www.ebay.com/"</item>
+    <item>"CNN"</item>
+    <item>"http://www.cnn.com/"</item>
+    <item>"纽约时报"</item>
+    <item>"http://www.nytimes.com/"</item>
+    <item>"ESPN"</item>
+    <item>"http://espn.go.com/"</item>
+    <item>"卓越亚马逊"</item>
+    <item>"http://www.amazon.com/"</item>
+    <item>"Weather Channel"</item>
+    <item>"http://www.weather.com/"</item>
+    <item>"BBC"</item>
+    <item>"http://www.bbc.co.uk/"</item>
+  </string-array>
+    <!-- no translation found for permlab_readHistoryBookmarks (2090878935052508686) -->
+    <skip />
+    <!-- no translation found for permdesc_readHistoryBookmarks (3198464990003094365) -->
+    <skip />
+    <!-- no translation found for permlab_writeHistoryBookmarks (3617974487656041765) -->
+    <skip />
+    <!-- no translation found for permdesc_writeHistoryBookmarks (2408364750616892343) -->
+    <skip />
+    <!-- no translation found for query_data_message (2662165772252682312) -->
+    <skip />
+    <!-- no translation found for location_message (3273812190303763599) -->
+    <skip />
+    <!-- no translation found for shortcut_message (8474516749978531587) -->
+    <skip />
+    <!-- no translation found for settings_message (6171686603006325199) -->
+    <skip />
+    <!-- no translation found for filepicker_message (3954806995548322454) -->
+    <skip />
+    <!-- no translation found for image_message (4416921522797991131) -->
+    <skip />
+    <!-- no translation found for settings_title (3579144910187265022) -->
+    <skip />
+    <!-- no translation found for privacy_policy (864201179110197308) -->
+    <skip />
+    <!-- no translation found for permission_button_alwaysdeny (3997759797081359571) -->
+    <skip />
+    <!-- no translation found for permission_button_allow (8433538747157349096) -->
+    <skip />
+    <!-- no translation found for permission_button_deny (8238202164838263939) -->
+    <skip />
+    <!-- no translation found for shortcut_button_alwaysdeny (8677418058335584182) -->
+    <skip />
+    <!-- no translation found for shortcut_button_allow (3106634184087569293) -->
+    <skip />
+    <!-- no translation found for shortcut_button_deny (6054910540900054553) -->
+    <skip />
+    <!-- no translation found for settings_button_allow (447817497759509841) -->
+    <skip />
+    <!-- no translation found for settings_button_deny (602496920123085858) -->
+    <skip />
+    <!-- no translation found for filepicker_button_allow (2849120125810490391) -->
+    <skip />
+    <!-- no translation found for filepicker_button_deny (1302975999145835953) -->
+    <skip />
+    <!-- no translation found for filepicker_path (4680729728498981925) -->
+    <skip />
+    <!-- no translation found for filepicker_no_files_selected (7859426670184432998) -->
+    <skip />
+    <!-- no translation found for filepicker_one_file_selected (1451259953191434851) -->
+    <skip />
+    <!-- no translation found for filepicker_some_files_selected (3859384664191734493) -->
+    <skip />
+    <!-- no translation found for remove (7820112494467011374) -->
+    <skip />
+    <!-- no translation found for local_storage (6703332885937279085) -->
+    <skip />
+    <!-- no translation found for allowed (1599514934221911624) -->
+    <skip />
+    <!-- no translation found for denied (7470209521858372968) -->
+    <skip />
+    <!-- no translation found for unrecognized_dialog_message (687399590684283989) -->
+    <skip />
+    <!-- no translation found for default_button (3901922329454578908) -->
+    <skip />
+</resources>
index 0c22bc8..8d02fe1 100644 (file)
     <color name="white">#ffffffff</color>
     <color name="black">#ff000000</color>
     <color name="gray">#ffbbbbbb</color>
+    <color name="dark_gray">#ff777777</color>
+    <color name="blue">#ff0000ff</color>
     
     <color name="translucent_white">#11ffffff</color>
 
-    <!-- Gears Dialog -->
+    <!-- Gears Dialogs -->
     <color name="permission_border">#f1cc1d</color>
     <color name="permission_background">#faefb8</color>
     <color name="shortcut_border">#e8e8e8</color>
     <color name="shortcut_background">#f8f8f8</color>
+    <color name="icon_selection">#ff7a00</color>
+    <color name="dialog_link">#ff0000ff</color>
 </resources>
 
index 7212135..d4bae20 100644 (file)
         Browser\'s history or bookmarks stored on your phone. Malicious applications 
         can use this to erase or modify your Browser\'s data.</string>
 
-    <!-- Gears Dialog -->
+    <!-- Gears Dialogs -->
     <string name="query_data_message">The Web site below wants to store information on your computer using Gears.</string>
     <string name="location_message">The Web site below wants to access information about your location using Gears.</string>
     <string name="shortcut_message">This Web site wants to create a shortcut on your computer. Do you want to allow this?</string>
     <string name="settings_message">The table below shows the permissions you have granted to each site that has attempted to use Gears.</string>
     <string name="filepicker_message">Gears File Picker</string>
+    <string name="image_message">Selected image</string>
 
     <string name="settings_title">Gears settings</string>
     <string name="privacy_policy">Read the site\'s privacy policy to see how your location will be used.</string>
 
     <string name="filepicker_button_allow">OK</string>
     <string name="filepicker_button_deny">Cancel</string>
+    <string name="filepicker_path">path:</string>
+    <string name="filepicker_no_files_selected">No files selected</string>
+    <string name="filepicker_one_file_selected">One file selected</string>
+    <string name="filepicker_some_files_selected">files selected</string>
 
     <string name="remove">Remove</string>
     <string name="local_storage">Local storage</string>
index 2c159df..c94f0f3 100644 (file)
      limitations under the License.
 -->
 
+<!-- Note:  This defines the UI for the "Go To" UI, which uses the search manager UI, but
+     is actually used to enter Uri's to load and display. -->
+     
 <searchable xmlns:android="http://schemas.android.com/apk/res/android"
     android:icon="@drawable/ic_search_category_browser"
     android:label="@string/search_label"
     android:hint="@string/search_hint"
     android:searchButtonText="@string/search_button_text"
     android:searchMode="queryRewriteFromData"
+    android:inputType="textUri"
     
     android:searchSuggestAuthority="browser"
     android:searchSuggestSelection="url LIKE ?"
index fe27f8d..7c6fa04 100644 (file)
@@ -579,8 +579,9 @@ public class BrowserActivity extends Activity
                 copyBuildInfos();
 
                 // Refresh the plugin list.
-                if (mWebView != null)
-                    mWebView.refreshPlugins(false);
+                if (mTabControl.getCurrentWebView() != null) {
+                    mTabControl.getCurrentWebView().refreshPlugins(false);
+                }
             } catch (IOException e) {
                 Log.e(TAG, "IO Exception: " + e);
             }
@@ -701,11 +702,11 @@ public class BrowserActivity extends Activity
             // This is one of the only places we call attachTabToContentView
             // without animating from the tab picker.
             attachTabToContentView(t);
-            mWebView = t.getWebView();
+            WebView webView = t.getWebView();
             if (extra != null) {
                 int scale = extra.getInt(Browser.INITIAL_ZOOM_LEVEL, 0);
                 if (scale > 0 && scale <= 1000) {
-                    mWebView.setInitialScale(scale);
+                    webView.setInitialScale(scale);
                 }
             }
             // If we are not restoring from an icicle, then there is a high
@@ -721,19 +722,18 @@ public class BrowserActivity extends Activity
             String url = getUrlFromIntent(intent);
             if (url == null || url.length() == 0) {
                 if (mSettings.isLoginInitialized()) {
-                    mWebView.loadUrl(mSettings.getHomePage());
+                    webView.loadUrl(mSettings.getHomePage());
                 } else {
                     waitForCredentials();
                 }
             } else {
-                mWebView.loadUrl(url);
+                webView.loadUrl(url);
             }
         } else {
             // TabControl.restoreState() will create a new tab even if
             // restoring the state fails. Attach it to the view here since we
             // are not animating from the tab picker.
             attachTabToContentView(mTabControl.getCurrentTab());
-            mWebView = mTabControl.getCurrentWebView();
         }
 
         /* enables registration for changes in network status from
@@ -757,17 +757,19 @@ public class BrowserActivity extends Activity
 
     @Override
     protected void onNewIntent(Intent intent) {
+        TabControl.Tab current = mTabControl.getCurrentTab();
         // When a tab is closed on exit, the current tab index is set to -1.
         // Reset before proceed as Browser requires the current tab to be set.
-        if (mTabControl.getCurrentIndex() == -1) {
-            TabControl.Tab current = mTabControl.getTab(0);
+        if (current == null) {
+            // Try to reset the tab in case the index was incorrect.
+            current = mTabControl.getTab(0);
+            if (current == null) {
+                // No tabs at all so just ignore this intent.
+                return;
+            }
             mTabControl.setCurrentTab(current);
             attachTabToContentView(current);
-            mWebView = current.getWebView();
-            resetTitleAndIcon(mWebView);
-        }
-        if (mWebView == null) {
-            return;
+            resetTitleAndIcon(current.getWebView());
         }
         final String action = intent.getAction();
         final int flags = intent.getFlags();
@@ -796,16 +798,15 @@ public class BrowserActivity extends Activity
                     mSettings.toggleDebugSettings();
                     return;
                 }
-                final TabControl.Tab currentTab = mTabControl.getCurrentTab();
                 // If the Window overview is up and we are not in the midst of
                 // an animation, animate away from the Window overview.
                 if (mTabOverview != null && mAnimationCount == 0) {
-                    sendAnimateFromOverview(currentTab, false, url,
+                    sendAnimateFromOverview(current, false, url,
                             TAB_OVERVIEW_DELAY, null);
                 } else {
                     // Get rid of the subwindow if it exists
-                    dismissSubWindow(currentTab);
-                    mWebView.loadUrl(url);
+                    dismissSubWindow(current);
+                    current.getWebView().loadUrl(url);
                 }
             }
         }
@@ -938,16 +939,18 @@ public class BrowserActivity extends Activity
                 boolean gestZ = az > 3.5f && arz > 1.0f && az > arz;
 
                 if ((gestY || gestZ) && !(gestY && gestZ)) {
-                    WebView view = mWebView;
-
-                    if (gestZ) {
-                        if (z < 0) {
-                            view.zoomOut();
+                    WebView view = mTabControl.getCurrentWebView();
+
+                    if (view != null) {
+                        if (gestZ) {
+                            if (z < 0) {
+                                view.zoomOut();
+                            } else {
+                                view.zoomIn();
+                            }
                         } else {
-                            view.zoomIn();
+                            view.flingScroll(0, Math.round(y * 100));
                         }
-                    } else {
-                        view.flingScroll(0, Math.round(y * 100));
                     }
                     mLastGestureTime = now;
                 }
@@ -1132,7 +1135,10 @@ public class BrowserActivity extends Activity
         if ((!mActivityInPause && !mPageStarted) || 
                 (mActivityInPause && mPageStarted)) {
             CookieSyncManager.getInstance().startSync();
-            mWebView.resumeTimers();
+            WebView w = mTabControl.getCurrentWebView();
+            if (w != null) {
+                w.resumeTimers();
+            }
             return true;
         } else {
             return false;
@@ -1142,7 +1148,10 @@ public class BrowserActivity extends Activity
     private boolean pauseWebView() {
         if (mActivityInPause && !mPageStarted) {
             CookieSyncManager.getInstance().stopSync();
-            mWebView.pauseTimers();
+            WebView w = mTabControl.getCurrentWebView();
+            if (w != null) {
+                w.pauseTimers();
+            }
             return true;
         } else {
             return false;
@@ -1188,7 +1197,10 @@ public class BrowserActivity extends Activity
         mHandler.removeMessages(CANCEL_CREDS_REQUEST);
 
         // Load the page
-        mWebView.loadUrl(mSettings.getHomePage());
+        WebView w = mTabControl.getCurrentWebView();
+        if (w != null) {
+            w.loadUrl(mSettings.getHomePage());
+        }
 
         // Update the settings, need to do this last as it can take a moment
         // to persist the settings. In the mean time we could be loading
@@ -1380,8 +1392,11 @@ public class BrowserActivity extends Activity
                 break;
 
             case R.id.homepage_menu_id:
-                dismissSubWindow(mTabControl.getCurrentTab());
-                mWebView.loadUrl(mSettings.getHomePage());
+                TabControl.Tab current = mTabControl.getCurrentTab();
+                if (current != null) {
+                    dismissSubWindow(current);
+                    current.getWebView().loadUrl(mSettings.getHomePage());
+                }
                 break;
 
             case R.id.preferences_menu_id:
@@ -1441,8 +1456,8 @@ public class BrowserActivity extends Activity
             case R.id.flip_orientation_menu_id:
                 if (mSettings.getOrientation() != 
                         ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
-                mSettings.setOrientation(this, 
-                        ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+                    mSettings.setOrientation(this, 
+                            ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                 } else {
                     mSettings.setOrientation(this,
                             ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
@@ -1815,10 +1830,8 @@ public class BrowserActivity extends Activity
         mTabControl.setCurrentTab(tab);
         // Attach the WebView so it will layout.
         attachTabToContentView(tab);
-        // Reset the current WebView.
-        mWebView = tab.getWebView();
         // Set the view to invisibile for now.
-        mWebView.setVisibility(View.INVISIBLE);
+        tab.getWebView().setVisibility(View.INVISIBLE);
         // If there is a sub window, make it invisible too.
         if (tab.getSubWebView() != null) {
             tab.getSubWebViewContainer().setVisibility(View.INVISIBLE);
@@ -1890,14 +1903,14 @@ public class BrowserActivity extends Activity
                     assert msg == null;
                     // just dismiss the subwindow and load the given url.
                     dismissSubWindow(currentTab);
-                    mWebView.loadUrl(url);
+                    currentTab.getWebView().loadUrl(url);
                 }
             } else {
                 // show mTabOverview if it is not there.
                 if (mTabOverview == null) {
                     // We have to delay the animation from the tab picker by the
-                    // length of the tab animation. Add a delay so the tab overview
-                    // can be shown before the second animation begins.
+                    // length of the tab animation. Add a delay so the tab
+                    // overview can be shown before the second animation begins.
                     delay = TAB_ANIMATION_DURATION + TAB_OVERVIEW_DELAY;
                     tabPicker(false, ImageGrid.NEW_TAB, false);
                 }
@@ -1916,7 +1929,7 @@ public class BrowserActivity extends Activity
                 // Get rid of the subwindow if it exists
                 dismissSubWindow(currentTab);
                 // Load the given url.
-                mWebView.loadUrl(url);
+                currentTab.getWebView().loadUrl(url);
             }
         }
     }
@@ -2070,15 +2083,17 @@ public class BrowserActivity extends Activity
                                 // given location is null, set the fade
                                 // parameter to true.
                                 dismissTabOverview(v == null);
+                                TabControl.Tab t =
+                                        mTabControl.getCurrentTab();
+                                WebView w = t.getWebView();
                                 if (url != null) {
                                     // Dismiss the subwindow if one exists.
-                                    dismissSubWindow(
-                                            mTabControl.getCurrentTab());
-                                    mWebView.loadUrl(url);
+                                    dismissSubWindow(t);
+                                    w.loadUrl(url);
                                 }
                                 mMenuState = R.id.MAIN_MENU;
                                 // Resume regular updates.
-                                mWebView.resumeTimers();
+                                w.resumeTimers();
                                 // Dispatch the message after the animation
                                 // completes.
                                 if (msg != null) {
@@ -2118,7 +2133,7 @@ public class BrowserActivity extends Activity
         }
         // Just in case there was a problem with animating away from the tab
         // overview
-        mWebView.setVisibility(View.VISIBLE);
+        mTabControl.getCurrentWebView().setVisibility(View.VISIBLE);
         // Make the sub window container visible.
         if (mTabControl.getCurrentSubWindow() != null) {
             mTabControl.getCurrentTab().getSubWebViewContainer()
@@ -2204,11 +2219,15 @@ public class BrowserActivity extends Activity
      * Reset the title, favicon, and progress.
      */
     private void resetTitleIconAndProgress() {
-        resetTitleAndIcon(mWebView);
-        int progress = mWebView.getProgress();
+        WebView current = mTabControl.getCurrentWebView();
+        if (current == null) {
+            return;
+        }
+        resetTitleAndIcon(current);
+        int progress = current.getProgress();
         mInLoad = (progress != 100);
         updateInLoadMenuItems();
-        mWebChromeClient.onProgressChanged(mWebView, progress);
+        mWebChromeClient.onProgressChanged(current, progress);
     }
 
     // Reset the title and the icon based on the given item.
@@ -2361,6 +2380,11 @@ public class BrowserActivity extends Activity
         if (tab != null) {
             sendAnimateFromOverview(tab, false, null, delay, null);
         } else {
+            // Increment this here so that no other animations can happen in
+            // between the end of the tab picker transition and the beginning
+            // of openTabAndShow. This has a matching decrement in the handler
+            // of OPEN_TAB_AND_SHOW.
+            mAnimationCount++;
             // Send a message to open a new tab.
             mHandler.sendMessageDelayed(
                     mHandler.obtainMessage(OPEN_TAB_AND_SHOW,
@@ -2369,27 +2393,38 @@ public class BrowserActivity extends Activity
     }
 
     private void goBackOnePageOrQuit() {
-        if (mWebView.canGoBack()) {
-            mWebView.goBack();
+        TabControl.Tab current = mTabControl.getCurrentTab();
+        if (current == null) {
+            /*
+             * Instead of finishing the activity, simply push this to the back
+             * of the stack and let ActivityManager to choose the foreground
+             * activity. As BrowserActivity is singleTask, it will be always the
+             * root of the task. So we can use either true or false for
+             * moveTaskToBack().
+             */
+            moveTaskToBack(true);
+        }
+        WebView w = current.getWebView();
+        if (w.canGoBack()) {
+            w.goBack();
         } else {
-            TabControl.Tab self = mTabControl.getCurrentTab();
             // Check to see if we are closing a window that was created by
             // another window. If so, we switch back to that window.
-            TabControl.Tab parent = self.getParentTab();
+            TabControl.Tab parent = current.getParentTab();
             if (parent != null) {
                 switchTabs(mTabControl.getCurrentIndex(),
                         mTabControl.getTabIndex(parent), true);
             } else {
-                if (self.closeOnExit()) {
+                if (current.closeOnExit()) {
                     if (mTabControl.getTabCount() == 1) {
                         finish();
                         return;
                     }
                     // call pauseWebView() now, we won't be able to call it in
-                    // onPause() as the mWebView won't be valid.
+                    // onPause() as the WebView won't be valid.
                     pauseWebView();
-                    removeTabFromContentView(self);
-                    mTabControl.removeTab(self);
+                    removeTabFromContentView(current);
+                    mTabControl.removeTab(current);
                 }
                 /*
                  * Instead of finishing the activity, simply push this to the back
@@ -2547,6 +2582,10 @@ public class BrowserActivity extends Activity
                     break;
 
                 case OPEN_TAB_AND_SHOW:
+                    // Decrement mAnimationCount before openTabAndShow because
+                    // the method relies on the value being 0 to start the next
+                    // animation.
+                    mAnimationCount--;
                     openTabAndShow((String) msg.obj, null, false);
                     break;
 
@@ -3043,7 +3082,7 @@ public class BrowserActivity extends Activity
 
                 new AlertDialog.Builder(BrowserActivity.this)
                     .setTitle(R.string.security_warning)
-                    .setIcon(R.drawable.ic_dialog_alert)
+                    .setIcon(android.R.drawable.ic_dialog_alert)
                     .setView(warningsView)
                     .setPositiveButton(R.string.ssl_continue,
                             new DialogInterface.OnClickListener() {
@@ -3093,9 +3132,11 @@ public class BrowserActivity extends Activity
             boolean reuseHttpAuthUsernamePassword =
                 handler.useHttpAuthUsernamePassword();
 
-            if (reuseHttpAuthUsernamePassword) {
+            if (reuseHttpAuthUsernamePassword &&
+                    (mTabControl.getCurrentWebView() != null)) {
                 String[] credentials =
-                    mWebView.getHttpAuthUsernamePassword(host, realm);
+                        mTabControl.getCurrentWebView()
+                                .getHttpAuthUsernamePassword(host, realm);
                 if (credentials != null && credentials.length == 2) {
                     username = credentials[0];
                     password = credentials[1];
@@ -3121,10 +3162,13 @@ public class BrowserActivity extends Activity
 
         @Override
         public void onUnhandledKeyEvent(WebView view, KeyEvent event) {
+            if (view != mTabControl.getCurrentTopWebView()) {
+                return;
+            }
             if (event.isDown()) {
-                mKeyTracker.doKeyDown(event.getKeyCode(), event);
+                BrowserActivity.this.onKeyDown(event.getKeyCode(), event);
             } else {
-                mKeyTracker.doKeyUp(event.getKeyCode(), event);
+                BrowserActivity.this.onKeyUp(event.getKeyCode(), event);
             }
         }
     };
@@ -3155,9 +3199,9 @@ public class BrowserActivity extends Activity
                 // in during the animation.
                 openTabAndShow(null, msg, false);
                 parent.addChildTab(mTabControl.getCurrentTab());
-                WebView.WebViewTransport transport = 
-                    (WebView.WebViewTransport) msg.obj;
-                transport.setWebView(mWebView);
+                WebView.WebViewTransport transport =
+                        (WebView.WebViewTransport) msg.obj;
+                transport.setWebView(mTabControl.getCurrentWebView());
             }
         }
 
@@ -3173,7 +3217,7 @@ public class BrowserActivity extends Activity
             if (dialog && mTabControl.getCurrentSubWindow() != null) {
                 new AlertDialog.Builder(BrowserActivity.this)
                         .setTitle(R.string.too_many_subwindows_dialog_title)
-                        .setIcon(R.drawable.ic_dialog_alert)
+                        .setIcon(android.R.drawable.ic_dialog_alert)
                         .setMessage(R.string.too_many_subwindows_dialog_message)
                         .setPositiveButton(R.string.ok, null)
                         .show();
@@ -3181,7 +3225,7 @@ public class BrowserActivity extends Activity
             } else if (mTabControl.getTabCount() >= TabControl.MAX_TABS) {
                 new AlertDialog.Builder(BrowserActivity.this)
                         .setTitle(R.string.too_many_windows_dialog_title)
-                        .setIcon(R.drawable.ic_dialog_alert)
+                        .setIcon(android.R.drawable.ic_dialog_alert)
                         .setMessage(R.string.too_many_windows_dialog_message)
                         .setPositiveButton(R.string.ok, null)
                         .show();
@@ -3226,7 +3270,7 @@ public class BrowserActivity extends Activity
             final AlertDialog d =
                     new AlertDialog.Builder(BrowserActivity.this)
                     .setTitle(R.string.attention)
-                    .setIcon(R.drawable.ic_dialog_alert)
+                    .setIcon(android.R.drawable.ic_dialog_alert)
                     .setMessage(R.string.popup_window_attempt)
                     .setPositiveButton(R.string.allow, allowListener)
                     .setNegativeButton(R.string.block, blockListener)
@@ -3543,7 +3587,7 @@ public class BrowserActivity extends Activity
 
             new AlertDialog.Builder(this)
                 .setTitle(title)
-                .setIcon(R.drawable.ic_dialog_alert)
+                .setIcon(android.R.drawable.ic_dialog_alert)
                 .setMessage(msg)
                 .setPositiveButton(R.string.ok, null)
                 .show();
@@ -3658,7 +3702,7 @@ public class BrowserActivity extends Activity
         if (view == null) {
             url = tab.getUrl();
             title = tab.getTitle();
-        }else if (view == mWebView) {
+        } else if (view == mTabControl.getCurrentWebView()) {
              // Use the cached title and url if this is the current WebView
             url = mUrl;
             title = mTitle;
@@ -3682,7 +3726,7 @@ public class BrowserActivity extends Activity
 
         AlertDialog.Builder alertDialogBuilder =
             new AlertDialog.Builder(this)
-            .setTitle(R.string.page_info).setIcon(R.drawable.ic_dialog_info)
+            .setTitle(R.string.page_info).setIcon(android.R.drawable.ic_dialog_info)
             .setView(pageInfoView)
             .setPositiveButton(
                 R.string.ok,
@@ -3763,7 +3807,7 @@ public class BrowserActivity extends Activity
      */
     private void showSSLCertificate(final TabControl.Tab tab) {
         final View certificateView =
-            inflateCertificateView(mWebView.getCertificate());
+                inflateCertificateView(tab.getWebView().getCertificate());
         if (certificateView == null) {
             return;
         }
@@ -4012,7 +4056,7 @@ public class BrowserActivity extends Activity
         mHttpAuthHandler = handler;
         mHttpAuthenticationDialog = new AlertDialog.Builder(this)
                 .setTitle(titleText)
-                .setIcon(R.drawable.ic_dialog_alert)
+                .setIcon(android.R.drawable.ic_dialog_alert)
                 .setView(v)
                 .setPositiveButton(R.string.action,
                         new DialogInterface.OnClickListener() {
@@ -4055,7 +4099,12 @@ public class BrowserActivity extends Activity
     }
 
     public int getProgress() {
-        return mWebView.getProgress();
+        WebView w = mTabControl.getCurrentWebView();
+        if (w != null) {
+            return w.getProgress();
+        } else {
+            return 100;
+        }
     }
 
     /**
@@ -4070,7 +4119,10 @@ public class BrowserActivity extends Activity
     public void setHttpAuthUsernamePassword(String host, String realm,
                                             String username,
                                             String password) {
-        mWebView.setHttpAuthUsernamePassword(host, realm, username, password);
+        WebView w = mTabControl.getCurrentWebView();
+        if (w != null) {
+            w.setHttpAuthUsernamePassword(host, realm, username, password);
+        }
     }
 
     /**
@@ -4092,7 +4144,10 @@ public class BrowserActivity extends Activity
                         .show();
             }
         }
-        mTabControl.getCurrentWebView().setNetworkAvailable(up);
+        WebView w = mTabControl.getCurrentWebView();
+        if (w != null) {
+            w.setNetworkAvailable(up);
+        }
     }
 
     @Override
@@ -4180,14 +4235,9 @@ public class BrowserActivity extends Activity
                 mTabOverview.setCurrentIndex(mTabControl.getTabIndex(current));
             }
 
-            // FIXME: This isn't really right. We don't have a current WebView
-            // since we are switching between tabs and haven't selected a new
-            // one. This just prevents a NPE in case the user hits home from the
-            // tab switcher.
             // Only the current tab ensures its WebView is non-null. This
             // implies that we are reloading the freed tab.
             mTabControl.setCurrentTab(current);
-            mWebView = current.getWebView();
         }
         public void onClick(int index) {
             // Change the tab if necessary.
@@ -4323,10 +4373,14 @@ public class BrowserActivity extends Activity
     }
 
     private void bookmarksPicker() {
+        WebView current = mTabControl.getCurrentWebView();
+        if (current == null) {
+            return;
+        }
         Intent intent = new Intent(this,
                 BrowserBookmarksPage.class);
-        String title = mWebView.getTitle();
-        String url = mWebView.getUrl();
+        String title = current.getTitle();
+        String url = current.getUrl();
         // Just in case the user opens bookmarks before a page finishes loading
         // so the current history item, and therefore the page, is null.
         if (null == url) {
@@ -4506,7 +4560,6 @@ public class BrowserActivity extends Activity
     private int mLockIconType = LOCK_ICON_UNSECURE;
     private int mPrevLockType = LOCK_ICON_UNSECURE;
 
-    private WebView         mWebView;
     private BrowserSettings mSettings;
     private TabControl      mTabControl;
     private ContentResolver mResolver;
index c930dc8..afd0dd2 100644 (file)
@@ -22,6 +22,9 @@ import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.os.Handler;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.style.UnderlineSpan;
 import android.util.Log;
 import android.view.InflateException;
 import android.view.LayoutInflater;
@@ -145,11 +148,14 @@ class GearsBaseDialog {
    */
   void setupButton(int buttonRscID,
                    int rscString,
-                   View.OnClickListener listener) {
+                   View.OnClickListener listener,
+                   boolean isLink,
+                   boolean requestFocus) {
     View view = findViewById(buttonRscID);
     if (view == null) {
       return;
     }
+
     Button button = (Button) view;
 
     if (rscString == 0) {
@@ -158,10 +164,25 @@ class GearsBaseDialog {
       CharSequence text = getString(rscString);
       button.setText(text);
       button.setOnClickListener(listener);
+      if (isLink) {
+        displayAsLink(button);
+      }
+      if (requestFocus) {
+        button.requestFocus();
+      }
     }
   }
 
   /**
+   * Button setup: as the above method, except that 'isLink' and
+   * 'requestFocus' default to false.
+   */
+  void setupButton(int buttonRsc, int rsc,
+                   View.OnClickListener listener) {
+    setupButton(buttonRsc, rsc, listener, false, false);
+  }
+
+  /**
    * Utility method to setup the three dialog buttons.
    */
   void setupButtons(int alwaysDenyRsc, int allowRsc, int denyRsc) {
@@ -170,14 +191,14 @@ class GearsBaseDialog {
                   public void onClick(View v) {
                     mHandler.sendEmptyMessage(ALWAYS_DENY);
                   }
-                });
+                }, true, false);
 
     setupButton(R.id.button_allow, allowRsc,
                 new Button.OnClickListener() {
                   public void onClick(View v) {
                     mHandler.sendEmptyMessage(ALLOW);
                   }
-                });
+                }, false, true);
 
     setupButton(R.id.button_deny, denyRsc,
                 new Button.OnClickListener() {
@@ -188,6 +209,26 @@ class GearsBaseDialog {
   }
 
   /**
+   * Display a button as an HTML link. Remove the background, set the
+   * text color to R.color.dialog_link and draw an underline
+   */
+  void displayAsLink(Button button) {
+    if (button == null) {
+      return;
+    }
+
+    CharSequence text = button.getText();
+    button.setBackgroundDrawable(null);
+    int color = getResources().getColor(R.color.dialog_link);
+    button.setTextColor(color);
+    SpannableString str = new SpannableString(text);
+    str.setSpan(new UnderlineSpan(), 0, str.length(),
+                Spannable.SPAN_INCLUSIVE_INCLUSIVE);
+    button.setText(str);
+    button.setFocusable(false);
+  }
+
+  /**
    * Utility method to set elements' text indicated in
    * the dialogs' arguments.
    */
@@ -332,5 +373,4 @@ class GearsBaseDialog {
     setupDialog();
   }
 
-
 }
index 4a3c0ed..c744a86 100644 (file)
@@ -48,6 +48,7 @@ import java.util.Vector;
 
 import org.json.JSONArray;
 import org.json.JSONException;
+import org.json.JSONObject;
 
 /**
  * Gears FilePicker dialog
@@ -60,14 +61,44 @@ class GearsFilePickerDialog extends GearsBaseDialog
   private static Bitmap mDefaultIcon;
   private static Bitmap mImageIcon;
   private static Bitmap mBackIcon;
+
+  private static String MULTIPLE_FILES = "MULTIPLE_FILES";
+  private static String SINGLE_FILE = "SINGLE_FILE";
+
   private static ImagesLoad mImagesLoader;
   private FilePickerAdapter mAdapter;
+  private String mSelectionMode;
+  private boolean mMultipleSelection;
+  private String mCurrentPath;
+
+  // Disable saving thumbnails until this is refactored to fit into
+  // existing schemes.
+  private static final boolean enableSavedThumbnails = false;
 
   public GearsFilePickerDialog(Activity activity,
                                Handler handler,
                                String arguments) {
     super (activity, handler, arguments);
     mAdapter = new FilePickerAdapter(activity);
+    parseArguments();
+  }
+
+  public void parseArguments() {
+    mSelectionMode = MULTIPLE_FILES;
+    try {
+      JSONObject json = new JSONObject(mDialogArguments);
+
+      if (json.has("mode")) {
+        mSelectionMode = json.getString("mode");
+      }
+    } catch (JSONException e) {
+      Log.e(TAG, "exc: " + e);
+    }
+    if (mSelectionMode.equalsIgnoreCase(SINGLE_FILE)) {
+      mMultipleSelection = false;
+    } else {
+      mMultipleSelection = true;
+    }
   }
 
   public void setup() {
@@ -76,20 +107,55 @@ class GearsFilePickerDialog extends GearsBaseDialog
                  R.string.filepicker_button_allow,
                  R.string.filepicker_button_deny);
     setupDialog();
+
+    TextView textViewPath = (TextView) findViewById(R.id.path_name);
+    if (textViewPath != null) {
+      textViewPath.setText(R.string.filepicker_path);
+    }
+
     GridView view = (GridView) findViewById(R.id.files_list);
     view.setAdapter(mAdapter);
     view.setOnTouchListener(this);
 
+    setSelectionText();
+
     mImagesLoader = new ImagesLoad(mAdapter);
     mImagesLoader.setAdapterView(view);
     Thread thread = new Thread(mImagesLoader);
     thread.start();
   }
 
+  public void setSelectionText() {
+    Vector elements = mAdapter.selectedElements();
+    if (elements == null)
+      return;
+    TextView info = (TextView) findViewById(R.id.selection);
+    int nbElements = elements.size();
+    if (nbElements == 0) {
+      info.setText(R.string.filepicker_no_files_selected);
+    } else if (nbElements == 1) {
+      info.setText(R.string.filepicker_one_file_selected);
+    } else {
+      info.setText(nbElements + " " +
+                   mActivity.getString(
+                       R.string.filepicker_some_files_selected));
+    }
+  }
+
+  public void setCurrentPath(String path) {
+    if (path != null) {
+      mCurrentPath = path;
+      TextView textViewPath = (TextView) findViewById(R.id.current_path);
+      if (textViewPath != null) {
+        textViewPath.setText(path);
+      }
+    }
+  }
+
   public void setupDialog(TextView message, ImageView icon) {
     message.setText(R.string.filepicker_message);
     message.setTextSize(24);
-    icon.setImageResource(R.drawable.gears_icon_48x48);
+    icon.setImageResource(R.drawable.gears_icon_32x32);
   }
 
   public boolean onTouch(View v, MotionEvent event) {
@@ -149,11 +215,13 @@ class GearsFilePickerDialog extends GearsBaseDialog
       Bitmap finalImage = null;
       try {
         String thumbnailPath = getThumbnailPath(path);
-        File thumbnail = new File(thumbnailPath);
-        if (thumbnail.exists()) {
-          finalImage = BitmapFactory.decodeFile(thumbnailPath);
-          if (finalImage != null) {
-            return finalImage;
+        if (enableSavedThumbnails) {
+          File thumbnail = new File(thumbnailPath);
+          if (thumbnail.exists()) {
+            finalImage = BitmapFactory.decodeFile(thumbnailPath);
+            if (finalImage != null) {
+              return finalImage;
+            }
           }
         }
         BitmapFactory.Options options = new BitmapFactory.Options();
@@ -178,12 +246,14 @@ class GearsFilePickerDialog extends GearsBaseDialog
           return null;
         }
         finalImage = Bitmap.createScaledBitmap(originalImage, size, size, true);
-        if (saveImage(thumbnailPath, finalImage)) {
-          if (mDebug) {
-            Log.v(TAG, "Saved thumbnail for file " + path);
+        if (enableSavedThumbnails) {
+          if (saveImage(thumbnailPath, finalImage)) {
+            if (mDebug) {
+              Log.v(TAG, "Saved thumbnail for file " + path);
+            }
+          } else {
+            Log.e(TAG, "Could NOT Save thumbnail for file " + path);
           }
-        } else {
-          Log.e(TAG, "Could NOT Save thumbnail for file " + path);
         }
         originalImage.recycle();
       } catch (java.lang.OutOfMemoryError e) {
@@ -519,8 +589,8 @@ class GearsFilePickerDialog extends GearsBaseDialog
       Uri requests[] = { MediaStore.Images.Media.INTERNAL_CONTENT_URI,
                          MediaStore.Images.Media.EXTERNAL_CONTENT_URI };
 
-      String sdCardPath = Environment.getExternalStorageDirectory().getPath();
-      mRootElement = new FilePickerElement(sdCardPath, "SD Card", this);
+      String startingPath = Environment.getExternalStorageDirectory().getPath();
+      mRootElement = new FilePickerElement(startingPath, "SD Card", this);
       mCurrentElement = mRootElement;
     }
 
@@ -534,6 +604,7 @@ class GearsFilePickerDialog extends GearsBaseDialog
 
     public int getCount() {
       Vector elems = mCurrentElement.getChildren();
+      setCurrentPath(mCurrentElement.getPath());
       return elems.size();
     }
 
@@ -587,18 +658,43 @@ class GearsFilePickerDialog extends GearsBaseDialog
             mCurrentElement = elem;
             mCurrentElement.refresh();
           } else {
-            elem.toggleSelection();
+            if (mMultipleSelection) {
+              elem.toggleSelection();
+            } else {
+              Vector elems = selectedElements();
+              if (elems != null) {
+                if (elems.size() == 0) {
+                  elem.toggleSelection();
+                } else if ((elems.size() == 1)
+                           && elem.isSelected()) {
+                  elem.toggleSelection();
+                }
+              }
+            }
           }
+          setSelectionText();
           notifyDataSetChanged();
         }
       };
-      imageView.setOnClickListener(listener);
       cell.setLayoutParams(new GridView.LayoutParams(96, 96));
+      cell.setOnClickListener(listener);
+      cell.setOnTouchListener(new View.OnTouchListener() {
+        public boolean onTouch(View v, MotionEvent event) {
+          if (event.getAction() == MotionEvent.ACTION_DOWN) {
+            int color = getResources().getColor(R.color.icon_selection);
+            v.setBackgroundColor(color);
+          } else {
+            v.setBackgroundColor(Color.WHITE);
+          }
+          return false;
+        }
+      });
 
-      imageView.setTag(position);
+      cell.setTag(position);
 
       if (elem.isSelected()) {
-        cell.setBackgroundColor(Color.LTGRAY);
+        int color = getResources().getColor(R.color.icon_selection);
+        cell.setBackgroundColor(color);
       } else {
         cell.setBackgroundColor(Color.WHITE);
       }
index dead4f2..56a1d8d 100644 (file)
@@ -166,6 +166,7 @@ class GearsSettingsDialog extends GearsBaseDialog
     if (listView != null) {
       ListView list = (ListView) listView;
       list.setAdapter(new SettingsAdapter(mActivity, mSitesPermissions));
+      list.setScrollBarStyle(android.view.View.SCROLLBARS_OUTSIDE_INSET);
     }
     if (mDebug) {
       printPermissions();
@@ -354,6 +355,7 @@ class GearsSettingsDialog extends GearsBaseDialog
       };
       button.setTag(perms);
       button.setOnClickListener(listener);
+      displayAsLink(button);
     }
 
     public View getView(int position, View convertView, ViewGroup parent) {