Add `System default` entries in domain settings. https://redmine.stoutner.com/issues/153
authorSoren Stoutner <soren@stoutner.com>
Tue, 11 Jul 2017 18:39:06 +0000 (11:39 -0700)
committerSoren Stoutner <soren@stoutner.com>
Tue, 11 Jul 2017 18:39:06 +0000 (11:39 -0700)
.idea/dictionaries/soren.xml
app/src/main/assets/it/about_licenses.html
app/src/main/java/com/stoutner/privacybrowser/activities/DomainSettingsActivity.java
app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java
app/src/main/java/com/stoutner/privacybrowser/fragments/DomainSettingsFragment.java
app/src/main/java/com/stoutner/privacybrowser/helpers/DomainsDatabaseHelper.java
app/src/main/res/values-es/strings.xml
app/src/main/res/values-it/strings.xml
app/src/main/res/values/strings.xml

index ad8158d..4ee70c2 100644 (file)
@@ -29,6 +29,7 @@
       <w>customuseragent</w>
       <w>deeplinks</w>
       <w>didn</w>
+      <w>displayimages</w>
       <w>displayorder</w>
       <w>dname</w>
       <w>doesn</w>
index 899cd65..efe8d20 100644 (file)
@@ -63,8 +63,9 @@
             Il testo completo della Licenza è riportato di seguito. Copyright delle modifiche © 2016 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>. Le immagini risultanti sono rilasciate sotto
             <a href="https://www.gnu.org/licenses/gpl-3.0.html">Licenza GPLv3+</a>.</p>
         <p><img class="left" src="../en/images/clear_and_exit.png">
-            is derived from ic_exit_to_app, which is part of the <a href="https://material.io/icons/">Android Material icon set</a> and is released under the <a href ="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.
-            The full text of the license is below. Modifications copyright © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>. The resulting image is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.</p>
+            è stata derivata da ic_exit_to_app, che fa parte dell'<a href="https://material.io/icons/">Android Material icon set</a> ed è stata rilasciata sotto <a href="https://www.apache.org/licenses/LICENSE-2.0">Licenza Apache 2.0</a>.
+            Il testo completo della licenza è riportato di seguito. Copyright delle modifiche © 2017 <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.
+            L'immagine risultante è rilasciata sotto <a href="https://www.gnu.org/licenses/gpl-3.0.html">Licenza GPLv3+</a>.</p>
         <p><img class="left" src="../en/images/orbot.png"> orbot è una versione modificata della <a href="https://gitweb.torproject.org/orbot.git/tree/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png">icona di stato del progetto Orbot</a>, il cui copyright
             è 2009-2010 Nathan Freitas, The Guardian Project. E' rilasciata sotto <a href="https://gitweb.torproject.org/orbot.git/tree/LICENSE">3-clause BSD license</a>. Il testo completo della Licenza è riportato di seguito.
             Copyright delle modifiche © 2017<a href="mailto:soren@stoutner.com">Soren Stoutner</a>. L'immagine risultante è rilasciata sotto <a href="https://www.gnu.org/licenses/gpl-3.0.html">Licenza GPLv3+</a>.</p>
index 17529eb..c4b6581 100644 (file)
@@ -134,8 +134,8 @@ public class DomainSettingsActivity extends AppCompatActivity {
                 int displayWebpageImagesInt = displayWebpageImagesSpinner.getSelectedItemPosition();
 
                 // Get the data for the `Spinners` from the entry values string arrays.
-                String userAgentString = getResources().getStringArray(R.array.user_agent_entry_values)[userAgentPositionInt];
-                int fontSizeInt = Integer.parseInt(getResources().getStringArray(R.array.default_font_size_entry_values)[fontSizePositionInt]);
+                String userAgentString = getResources().getStringArray(R.array.domain_settings_user_agent_entry_values)[userAgentPositionInt];
+                int fontSizeInt = Integer.parseInt(getResources().getStringArray(R.array.domain_settings_font_size_entry_values)[fontSizePositionInt]);
 
                 // Check to see if we are using a custom user agent.
                 if (userAgentString.equals("Custom user agent")) {
index 36650cd..f1110c5 100644 (file)
@@ -2445,6 +2445,11 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
             // Get a handle for the shared preference.  `this` references the current context.
             SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
 
+            // Store the default font size and user agent information.
+            String defaultFontSizeString = sharedPreferences.getString("default_font_size", "100");
+            String defaultUserAgentString = sharedPreferences.getString("user_agent", "PrivacyBrowser/1.0");
+            String defaultCustomUserAgentString = sharedPreferences.getString("custom_user_agent", "PrivacyBrowser/1.0");
+
             if (domainSettingsApplied) {  // The url we are loading has custom domain settings.
                 // Get a cursor for the current host and move it to the first position.
                 Cursor currentHostDomainSettingsCursor = domainsDatabaseHelper.getCursorForDomainName(domainNameInDatabase);
@@ -2468,7 +2473,13 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
                 cookieManager.setAcceptCookie(firstPartyCookiesEnabled);
                 mainWebView.getSettings().setDomStorageEnabled(domStorageEnabled);
                 mainWebView.getSettings().setSaveFormData(saveFormDataEnabled);
-                mainWebView.getSettings().setTextZoom(fontSize);
+
+                // Apply the font size.
+                if (fontSize == 0) {  // Apply the default font size.
+                    mainWebView.getSettings().setTextZoom(Integer.valueOf(defaultFontSizeString));
+                } else {  // Apply the specified font size.
+                    mainWebView.getSettings().setTextZoom(fontSize);
+                }
 
                 // Set third-party cookies status if API >= 21.
                 if (Build.VERSION.SDK_INT >= 21) {
@@ -2477,12 +2488,34 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
 
                 // Only set the user agent if the webpage is not currently loading.  Otherwise, changing the user agent on redirects can cause the original website to reload.  <https://redmine.stoutner.com/issues/160>
                 if (!urlIsLoading) {
-                    if (userAgentString.equals("WebView default user agent")) {
-                        // Set the user agent to `""`, which uses the default value.
-                        mainWebView.getSettings().setUserAgentString("");
-                    } else {
-                        // Use the selected user agent.
-                        mainWebView.getSettings().setUserAgentString(userAgentString);
+                    switch (userAgentString) {
+                        case "System default user agent":
+                            // Set the user agent according to the system default.
+                            switch (defaultUserAgentString) {
+                                case "WebView default user agent":
+                                    // Set the user agent to `""`, which uses the default value.
+                                    mainWebView.getSettings().setUserAgentString("");
+                                    break;
+
+                                case "Custom user agent":
+                                    // Set the custom user agent.
+                                    mainWebView.getSettings().setUserAgentString(defaultCustomUserAgentString);
+                                    break;
+
+                                default:
+                                    // Use the selected user agent.
+                                    mainWebView.getSettings().setUserAgentString(defaultUserAgentString);
+                            }
+                            break;
+
+                        case "WebView default user agent":
+                            // Set the user agent to `""`, which uses the default value.
+                            mainWebView.getSettings().setUserAgentString("");
+                            break;
+
+                        default:
+                            // Use the selected user agent.
+                            mainWebView.getSettings().setUserAgentString(userAgentString);
                     }
                 }
 
@@ -2499,9 +2532,6 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
                 thirdPartyCookiesEnabled = sharedPreferences.getBoolean("third_party_cookies_enabled", false);
                 domStorageEnabled = sharedPreferences.getBoolean("dom_storage_enabled", false);
                 saveFormDataEnabled = sharedPreferences.getBoolean("save_form_data_enabled", false);
-                String userAgentString = sharedPreferences.getString("user_agent", "PrivacyBrowser/1.0");
-                String customUserAgentString = sharedPreferences.getString("custom_user_agent", "PrivacyBrowser/1.0");
-                String defaultFontSizeString = sharedPreferences.getString("default_font_size", "100");
 
                 // Apply the default settings.
                 mainWebView.getSettings().setJavaScriptEnabled(javaScriptEnabled);
@@ -2517,7 +2547,7 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
 
                 // Only set the user agent if the webpage is not currently loading.  Otherwise, changing the user agent on redirects can cause the original website to reload.  <https://redmine.stoutner.com/issues/160>
                 if (!urlIsLoading) {
-                    switch (userAgentString) {
+                    switch (defaultUserAgentString) {
                         case "WebView default user agent":
                             // Set the user agent to `""`, which uses the default value.
                             mainWebView.getSettings().setUserAgentString("");
@@ -2525,13 +2555,12 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
 
                         case "Custom user agent":
                             // Set the custom user agent.
-                            mainWebView.getSettings().setUserAgentString(customUserAgentString);
+                            mainWebView.getSettings().setUserAgentString(defaultCustomUserAgentString);
                             break;
 
                         default:
                             // Use the selected user agent.
-                            mainWebView.getSettings().setUserAgentString(userAgentString);
-                            break;
+                            mainWebView.getSettings().setUserAgentString(defaultUserAgentString);
                     }
                 }
 
index 8581f40..dbd8bb9 100644 (file)
@@ -21,10 +21,12 @@ package com.stoutner.privacybrowser.fragments;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
+import android.content.SharedPreferences;
 import android.database.Cursor;
 import android.os.Build;
 import android.os.Bundle;
 // We have to use `android.support.v4.app.Fragment` until minimum API >= 23.  Otherwise we cannot call `getContext()`.
+import android.preference.PreferenceManager;
 import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -109,10 +111,10 @@ public class DomainSettingsFragment extends Fragment {
         int displayImagesInt = domainCursor.getInt(domainCursor.getColumnIndex(DomainsDatabaseHelper.DISPLAY_IMAGES));
 
         // Create `ArrayAdapters` for the `Spinners`and their `entry values`.
-        ArrayAdapter<CharSequence> userAgentArrayAdapter = ArrayAdapter.createFromResource(context, R.array.user_agent_entries, R.layout.spinner_item);
-        final ArrayAdapter<CharSequence> userAgentEntryValuesArrayAdapter = ArrayAdapter.createFromResource(context, R.array.user_agent_entry_values, R.layout.spinner_item);
-        ArrayAdapter<CharSequence> fontSizeArrayAdapter = ArrayAdapter.createFromResource(context, R.array.default_font_size_entries, R.layout.spinner_item);
-        ArrayAdapter<CharSequence> fontSizeEntryValuesArrayAdapter = ArrayAdapter.createFromResource(context, R.array.default_font_size_entry_values, R.layout.spinner_item);
+        ArrayAdapter<CharSequence> userAgentArrayAdapter = ArrayAdapter.createFromResource(context, R.array.domain_settings_user_agent_entries, R.layout.spinner_item);
+        final ArrayAdapter<CharSequence> userAgentEntryValuesArrayAdapter = ArrayAdapter.createFromResource(context, R.array.domain_settings_user_agent_entry_values, R.layout.spinner_item);
+        ArrayAdapter<CharSequence> fontSizeArrayAdapter = ArrayAdapter.createFromResource(context, R.array.domain_settings_font_size_entries, R.layout.spinner_item);
+        ArrayAdapter<CharSequence> fontSizeEntryValuesArrayAdapter = ArrayAdapter.createFromResource(context, R.array.domain_settings_font_size_entry_values, R.layout.spinner_item);
         final ArrayAdapter<CharSequence> displayImagesArrayAdapter = ArrayAdapter.createFromResource(context, R.array.display_website_images_array, R.layout.spinner_item);
 
         // Set the `DropDownViewResource` on the `Spinners`.
@@ -251,6 +253,13 @@ public class DomainSettingsFragment extends Fragment {
         WebView bareWebView = (WebView) bareWebViewLayout.findViewById(R.id.bare_webview);
         final String webViewDefaultUserAgentString = bareWebView.getSettings().getUserAgentString();
 
+        // Get a handle for the shared preference.  `this` references the current context.
+        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
+
+        // Store the default user agent string values.
+        final String defaultUserAgentString = sharedPreferences.getString("user_agent", "PrivacyBrowser/1.0");
+        final String defaultCustomUserAgentString = sharedPreferences.getString("custom_user_agent", "PrivacyBrowser/1.0");
+
         // Get the position of the user agent in `userAgentEntryValuesArrayAdapter`.
         int userAgentArrayPosition = userAgentEntryValuesArrayAdapter.getPosition(currentUserAgentString);
 
@@ -265,26 +274,46 @@ public class DomainSettingsFragment extends Fragment {
             // Show `customUserAgentEditText` and set `userAgentString` as the text.
             customUserAgentEditText.setVisibility(View.VISIBLE);
             customUserAgentEditText.setText(currentUserAgentString);
-        } else if (currentUserAgentString.equals("WebView default user agent")) {  // We are using the `WebView` default user agent.
+        } else{  // We are using one of the preset user agents.
             // Set the `userAgentSpinner` selection.
             userAgentSpinner.setSelection(userAgentArrayPosition);
 
-            // Show `userAgentTextView` and set the text.
+            // Show `userAgentTextView`.
             userAgentTextView.setVisibility(View.VISIBLE);
-            userAgentTextView.setText(webViewDefaultUserAgentString);
 
             // Hide `customUserAgentEditText`.
             customUserAgentEditText.setVisibility(View.GONE);
-        } else {  // We are using a standard user agent.
-            // Set the `userAgentSpinner` selection.
-            userAgentSpinner.setSelection(userAgentArrayPosition);
 
-            // Show `userAgentTextView` and set the text.
-            userAgentTextView.setVisibility(View.VISIBLE);
-            userAgentTextView.setText(currentUserAgentString);
+            // Set the user agent text.
+            switch (currentUserAgentString) {
+                case "System default user agent":
+                    // Display the user agent text string.
+                    switch (defaultUserAgentString) {
+                        case "WebView default user agent":
+                            // Display the `WebView` default user agent.
+                            userAgentTextView.setText(webViewDefaultUserAgentString);
+                            break;
+
+                        case "Custom user agent":
+                            // Display the custom user agent.
+                            userAgentTextView.setText(defaultCustomUserAgentString);
+                            break;
+
+                        default:
+                            // Display the text from `defaultUserAgentString`.
+                            userAgentTextView.setText(defaultUserAgentString);
+                    }
+                    break;
 
-            // Hide `customUserAgentEditText`.
-            customUserAgentEditText.setVisibility(View.GONE);
+                case "WebView default user agent":
+                    // Display the `WebView` default user agent.
+                    userAgentTextView.setText(webViewDefaultUserAgentString);
+                    break;
+
+                default:
+                    // Display the text from `currentUserAgentString`.
+                    userAgentTextView.setText(currentUserAgentString);
+            }
         }
 
         // Set the selected font size.
@@ -475,17 +504,33 @@ public class DomainSettingsFragment extends Fragment {
             @Override
             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                 // Store the new user agent string.
-                String newUserAgentString = getResources().getStringArray(R.array.user_agent_entry_values)[position];
+                String newUserAgentString = getResources().getStringArray(R.array.domain_settings_user_agent_entry_values)[position];
 
                 // Set the new user agent.
                 switch (newUserAgentString) {
-                    case "Custom user agent":
-                        // Hide `userAgentTextView`.
-                        userAgentTextView.setVisibility(View.GONE);
+                    case "System default user agent":
+                        // Show `userAgentTextView`.
+                        userAgentTextView.setVisibility(View.VISIBLE);
 
-                        // Show `customUserAgentEditText` and set `userAgentString` as the text.
-                        customUserAgentEditText.setVisibility(View.VISIBLE);
-                        customUserAgentEditText.setText(currentUserAgentString);
+                        // Hide `customUserAgentEditText`.
+                        customUserAgentEditText.setVisibility(View.GONE);
+
+                        // Set the user text.
+                        switch (defaultUserAgentString) {
+                            case "WebView default user agent":
+                                // Display the `WebView` default user agent.
+                                userAgentTextView.setText(webViewDefaultUserAgentString);
+                                break;
+
+                            case "Custom user agent":
+                                // Display the custom user agent.
+                                userAgentTextView.setText(defaultCustomUserAgentString);
+                                break;
+
+                            default:
+                                // Display the text from `defaultUserAgentString`.
+                                userAgentTextView.setText(defaultUserAgentString);
+                        }
                         break;
 
                     case "WebView default user agent":
@@ -497,14 +542,22 @@ public class DomainSettingsFragment extends Fragment {
                         customUserAgentEditText.setVisibility(View.GONE);
                         break;
 
+                    case "Custom user agent":
+                        // Hide `userAgentTextView`.
+                        userAgentTextView.setVisibility(View.GONE);
+
+                        // Show `customUserAgentEditText` and set `userAgentString` as the text.
+                        customUserAgentEditText.setVisibility(View.VISIBLE);
+                        customUserAgentEditText.setText(currentUserAgentString);
+                        break;
+
                     default:
                         // Show `userAgentTextView` and set the text.
                         userAgentTextView.setVisibility(View.VISIBLE);
-                        userAgentTextView.setText(getResources().getStringArray(R.array.user_agent_entry_values)[position]);
+                        userAgentTextView.setText(newUserAgentString);
 
                         // Hide `customUserAgentEditText`.
                         customUserAgentEditText.setVisibility(View.GONE);
-                        break;
                 }
             }
 
index f6bd47a..86a1ed1 100644 (file)
@@ -142,8 +142,8 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper {
         domainContentValues.put(ENABLE_THIRD_PARTY_COOKIES, false);
         domainContentValues.put(ENABLE_DOM_STORAGE, false);
         domainContentValues.put(ENABLE_FORM_DATA, false);
-        domainContentValues.put(USER_AGENT, "PrivacyBrowser/1.0");
-        domainContentValues.put(FONT_SIZE, "100");
+        domainContentValues.put(USER_AGENT, "System default user agent");
+        domainContentValues.put(FONT_SIZE, 0);
         domainContentValues.put(DISPLAY_IMAGES, 0);
 
         // Get a writable database handle.
index ed5790d..9a3e922 100644 (file)
@@ -60,7 +60,7 @@
     <!-- View SSL Certificate. -->
     <string name="view_ssl_certificate">Ver certificado SSL</string>
     <string name="unencrypted_website">Web sin cifrar</string>
-    <string name="no_ssl_certificate">La comunicación con esta web no está cifrada por un certificado SSL.</string>
+    <string name="no_ssl_certificate">La comunicación con esta página web no está cifrada. Esto permite a terceras partes interceptar información, rastrear su navegación e inyectar contenido malicioso.</string>
     <string name="ssl_certificate">Certificado SSL</string>
     <string name="close">Cerrar</string>
     <string name="issued_to">Emitido a</string>
             <item>Safari 10.0.2 en macOS 10.12.2</item>
             <item>Personalizado</item>
         </string-array>
+            <string-array name="domain_settings_user_agent_entries">
+                <item>Por defecto del sistema</item>
+                <item>Navegador Privado 1.0</item>
+                <item>WebView por defecto</item>
+                <item>Firefox 50 en Android 7.1.1</item>
+                <item>Chrome 55 en Android 7.1.1</item>
+                <item>Safari 10 en iOS 10.2.1</item>
+                <item>Firefox 45 en Linux</item>
+                <item>Chromium 55 en Linux</item>
+                <item>Konqueror 4.14.26 en Linux</item>
+                <item>Firefox 50 en Windows 10</item>
+                <item>Chrome 55 en Windows 10</item>
+                <item>Edge 14 en Windows 10</item>
+                <item>Internet Explorer 11 en Windows 10</item>
+                <item>Safari 10.0.2 en macOS 10.12.2</item>
+                <item>Personalizado</item>
+            </string-array>
         <string name="custom_user_agent">Agente de usuario personalizado</string>
         <string name="block_ads">Bloquear anuncios</string>
         <string name="block_ads_summary">Usar la lista de servidores de anuncios de pgl.yoyo.org para bloquear anuncios.</string>
             <item>175%</item>
             <item>200%</item>
         </string-array>
+            <string-array name="domain_settings_font_size_entries">
+                <item>Por defecto del sistema</item>
+                <item>25%</item>
+                <item>50%</item>
+                <item>75%</item>
+                <item>100%</item>
+                <item>125%</item>
+                <item>150%</item>
+                <item>175%</item>
+                <item>200%</item>
+            </string-array>
         <string name="swipe_to_refresh_enabled">Deslizar para actualizar</string>
         <string name="swipe_to_refresh_enabled_summary">Algunas webs no funcionan bien si la opción deslizar para actualizar está habilitada.</string>
         <string name="display_additional_app_bar_icons">Mostrar iconos adicionales en la barra de aplicación</string>
index 6ae6b91..a2a5617 100644 (file)
@@ -62,7 +62,7 @@
     <!-- View SSL Certificate. -->
     <string name="view_ssl_certificate">Visualizza il certificato SSL</string>
     <string name="unencrypted_website">Sito non criptato</string>
-    <string name="no_ssl_certificate">La comunicazione con il sito non è criptata attraverso un certificato SSL.</string>
+    <string name="no_ssl_certificate">La comunicazione con questo sito web non è criptata. Questo consente a terze parti la possibilità di intercettare le informazioni scambiate, di tracciare la navigazione e di inviare contenuto maligno.</string>
     <string name="ssl_certificate">Certificato SSL</string>
     <string name="close">Chiudi</string>
     <string name="issued_to">Emesso a</string>
             <item>Safari 10.0.2 su macOS 10.12.2</item>
             <item>Personalizzato</item>
         </string-array>
+            <string-array name="domain_settings_user_agent_entries">
+                <item>Impostazioni di default</item>
+                <item>Privacy Browser 1.0</item>
+                <item>WebView Default</item>
+                <item>Firefox 50 su Android 7.1.1</item>
+                <item>Chrome 55 su Android 7.1.1</item>
+                <item>Safari 10 su iOS 10.2.1</item>
+                <item>Firefox 45 su Linux</item>
+                <item>Chromium 55 su Linux</item>
+                <item>Konqueror 4.14.26 su Linux</item>
+                <item>Firefox 50 su Windows 10</item>
+                <item>Chrome 55 su Windows 10</item>
+                <item>Edge 14 su Windows 10</item>
+                <item>Internet Explorer 11 su Windows 10</item>
+                <item>Safari 10.0.2 su macOS 10.12.2</item>
+                <item>Personalizzato</item>
+            </string-array>
         <string name="custom_user_agent">User agent personalizzato</string>
         <string name="block_ads">Blocca annunci</string>
         <string name="block_ads_summary">Per bloccare gli annunci utilizza la lista dei server di pgl.yoyo.org.</string>
             <item>175%</item>
             <item>200%</item>
         </string-array>
+            <string-array name="domain_settings_font_size_entries">
+                <item>Impostazioni di default</item>
+                <item>25%</item>
+                <item>50%</item>
+                <item>75%</item>
+                <item>100%</item>
+                <item>125%</item>
+                <item>150%</item>
+                <item>175%</item>
+                <item>200%</item>
+            </string-array>
         <string name="swipe_to_refresh_enabled">Swipe per aggiornare</string>
         <string name="swipe_to_refresh_enabled_summary">Alcuni siti non funzionano correttamente se questa opzione è abilitata.</string>
         <string name="display_additional_app_bar_icons">Mostra icone addizionali nella barra dell\'applicazione</string>
index 386e9c9..359cc97 100644 (file)
             <item>Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko</item>
             <item>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/602.3.12 (KHTML, like Gecko) Version/10.0.2 Safari/602.3.12</item>
             <item>Custom user agent</item>  <!-- This item must not be translated into other languages because it is referenced in code.  It is never displayed on the screen. -->
+        </string-array>
+            <string-array name="domain_settings_user_agent_entries">
+                <item>System default</item>
+                <item>Privacy Browser 1.0</item>
+                <item>WebView Default</item>
+                <item>Firefox 50 on Android 7.1.1</item>
+                <item>Chrome 55 on Android 7.1.1</item>
+                <item>Safari 10 on iOS 10.2.1</item>
+                <item>Firefox 45 on Linux</item>
+                <item>Chromium 55 on Linux</item>
+                <item>Konqueror 4.14.26 on Linux</item>
+                <item>Firefox 50 on Windows 10</item>
+                <item>Chrome 55 on Windows 10</item>
+                <item>Edge 14 on Windows 10</item>
+                <item>Internet Explorer 11 on Windows 10</item>
+                <item>Safari 10.0.2 on macOS 10.12.2</item>
+                <item>Custom</item>
+            </string-array>
+            <string-array name="domain_settings_user_agent_entry_values" translatable="false">  <!-- None of the items in this `string-array` should be translated. -->
+                <item>System default user agent</item>  <!-- This item must not be translated into other languages because it is referenced in code.  It is never displayed on the screen. -->
+                <item>PrivacyBrowser/1.0</item>
+                <item>WebView default user agent</item>  <!-- This item must not be translated into other languages because it is referenced in code.  It is never displayed on the screen. -->
+                <item>Mozilla/5.0 (Android 7.1.1; Mobile; rv:50.0) Gecko/50.0 Firefox/50.0</item>
+                <item>Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6P Build/N4F26I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.91 Mobile Safari/537.36</item>
+                <item>Mozilla/5.0 (iPhone; CPU iPhone OS 10_2_1 like Mac OS X) AppleWebKit/602.4.6 (KHTML, like Gecko) Version/10.0 Mobile/14D27 Safari/602.1</item>
+                <item>Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0</item>
+                <item>Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36</item>
+                <item>Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) konqueror/4.14.26 Safari/534.34</item>
+                <item>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0</item>
+                <item>Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36</item>
+                <item>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393</item>
+                <item>Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko</item>
+                <item>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/602.3.12 (KHTML, like Gecko) Version/10.0.2 Safari/602.3.12</item>
+                <item>Custom user agent</item>  <!-- This item must not be translated into other languages because it is referenced in code.  It is never displayed on the screen. -->
         </string-array>
         <string name="custom_user_agent">Custom user agent</string>
         <string name="block_ads">Block ads</string>
             <item>175</item>
             <item>200</item>
         </string-array>
+            <string-array name="domain_settings_font_size_entries">
+                <item>System default</item>
+                <item>25%</item>
+                <item>50%</item>
+                <item>75%</item>
+                <item>100%</item>
+                <item>125%</item>
+                <item>150%</item>
+                <item>175%</item>
+                <item>200%</item>
+            </string-array>
+            <string-array name="domain_settings_font_size_entry_values" translatable="false">  <!-- None of the items in this `string-array` should be translated. -->
+                <item>0</item>
+                <item>25</item>
+                <item>50</item>
+                <item>75</item>
+                <item>100</item>
+                <item>125</item>
+                <item>150</item>
+                <item>175</item>
+                <item>200</item>
+            </string-array>
         <string name="swipe_to_refresh_enabled">Swipe to refresh</string>
         <string name="swipe_to_refresh_enabled_summary">Some websites don’t work well if swipe to refresh is enabled.</string>
         <string name="display_additional_app_bar_icons">Display additional app bar icons</string>