[tbb-commits] [tor-browser/tor-browser-60.1.0esr-8.0-1] Bug 25696 - Design of alpha onboarding for Tor Browser for Android

gk at torproject.org gk at torproject.org
Mon Aug 27 21:09:31 UTC 2018


commit 35f8db1e622e520992486b751ade241c23f33871
Author: Igor Oliveira <igt0 at torproject.org>
Date:   Thu Aug 23 23:11:09 2018 -0300

    Bug 25696 - Design of alpha onboarding for Tor Browser for Android
    
    - Update description copy and background color.
---
 .../firstrun_basepanel_checkable_fragment.xml      |   2 +-
 .../android/app/src/photon/res/values/colors.xml   |   1 +
 .../gecko/firstrun/FirstrunPagerConfig.java        |   1 +
 .../org/mozilla/gecko/firstrun/FirstrunPanel.java  |   2 ++
 .../gecko/firstrun/FirstrunTorPagerConfig.java     |  16 +++++++----
 .../java/org/mozilla/gecko/firstrun/LastPanel.java |   6 ++--
 .../android/base/locales/en-US/android_strings.dtd |  32 +++++++++++++--------
 mobile/android/base/strings.xml.in                 |  10 +++++++
 .../res/drawable-nodpi/figure_security.png         | Bin 0 -> 52021 bytes
 9 files changed, 47 insertions(+), 23 deletions(-)

diff --git a/mobile/android/app/src/main/res/layout/firstrun_basepanel_checkable_fragment.xml b/mobile/android/app/src/main/res/layout/firstrun_basepanel_checkable_fragment.xml
index 6233198982d9..b0083511ae0d 100644
--- a/mobile/android/app/src/main/res/layout/firstrun_basepanel_checkable_fragment.xml
+++ b/mobile/android/app/src/main/res/layout/firstrun_basepanel_checkable_fragment.xml
@@ -13,7 +13,7 @@
     <LinearLayout android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:minHeight="@dimen/firstrun_min_height"
-                  android:background="@android:color/white"
+                  android:background="@color/tor_description_background_text"
                   android:gravity="center_horizontal"
                   android:orientation="vertical">
 
diff --git a/mobile/android/app/src/photon/res/values/colors.xml b/mobile/android/app/src/photon/res/values/colors.xml
index b3522be3c2db..b322a46fe008 100644
--- a/mobile/android/app/src/photon/res/values/colors.xml
+++ b/mobile/android/app/src/photon/res/values/colors.xml
@@ -153,6 +153,7 @@
 
     <color name="tor_tab_inactive_text">#484848</color>
     <color name="tor_tab_active_text">#7D4698</color>
+    <color name="tor_description_background_text">#FAFAFA</color>
     <!-- Restricted profiles palette -->
 
     <color name="restricted_profile_background_gold">#ffffcb51</color>
diff --git a/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPagerConfig.java b/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPagerConfig.java
index ad6eae5b6e98..09a347699a31 100644
--- a/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPagerConfig.java
+++ b/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPagerConfig.java
@@ -23,6 +23,7 @@ public class FirstrunPagerConfig {
     public static final String KEY_IMAGE = "imageRes";
     public static final String KEY_TEXT = "textRes";
     public static final String KEY_SUBTEXT = "subtextRes";
+    public static final String KEY_CTATEXT = "ctatextRes";
 
    public static List<FirstrunPanelConfig> getDefault(Context context) {
         final List<FirstrunPanelConfig> panels = new LinkedList<>();
diff --git a/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPanel.java b/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPanel.java
index 13a2994fb2c1..f7d5745229a3 100644
--- a/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPanel.java
+++ b/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPanel.java
@@ -35,10 +35,12 @@ public class FirstrunPanel extends Fragment {
             final int imageRes = args.getInt(FirstrunPagerConfig.KEY_IMAGE);
             final int textRes = args.getInt(FirstrunPagerConfig.KEY_TEXT);
             final int subtextRes = args.getInt(FirstrunPagerConfig.KEY_SUBTEXT);
+            final int ctatextRes = args.getInt(FirstrunPagerConfig.KEY_CTATEXT);
 
             ((ImageView) root.findViewById(R.id.firstrun_image)).setImageResource(imageRes);
             ((TextView) root.findViewById(R.id.firstrun_text)).setText(textRes);
             ((TextView) root.findViewById(R.id.firstrun_subtext)).setText(subtextRes);
+            ((TextView) root.findViewById(R.id.firstrun_link)).setText(ctatextRes);
         }
 
         root.findViewById(R.id.firstrun_link).setOnClickListener(new View.OnClickListener() {
diff --git a/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunTorPagerConfig.java b/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunTorPagerConfig.java
index 40b72e705784..f70f2df3335a 100644
--- a/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunTorPagerConfig.java
+++ b/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunTorPagerConfig.java
@@ -23,12 +23,14 @@ public class FirstrunTorPagerConfig {
     public static final String KEY_IMAGE = "imageRes";
     public static final String KEY_TEXT = "textRes";
     public static final String KEY_SUBTEXT = "subtextRes";
+    public static final String KEY_CTATEXT = "ctatextRes";
 
     public static List<FirstrunTorPanelConfig> getDefault(Context context) {
        final List<FirstrunTorPanelConfig> panels = new LinkedList<>();
        panels.add(SimplePanelConfigs.welcomeTorPanelConfig);
        panels.add(SimplePanelConfigs.privacyPanelConfig);
        panels.add(SimplePanelConfigs.torNetworkPanelConfig);
+       panels.add(SimplePanelConfigs.secSettingsPanelConfig);
        panels.add(SimplePanelConfigs.tipsPanelConfig);
        panels.add(SimplePanelConfigs.onionServicesPanelConfig);
 
@@ -41,7 +43,7 @@ public class FirstrunTorPagerConfig {
         private int titleRes;
         private Bundle args;
 
-        public FirstrunTorPanelConfig(String classname, int titleRes, int imageRes, int textRes, int subtextRes) {
+        public FirstrunTorPanelConfig(String classname, int titleRes, int imageRes, int textRes, int subtextRes, int ctatextRes) {
             this.classname = classname;
             this.titleRes = titleRes;
 
@@ -49,6 +51,7 @@ public class FirstrunTorPagerConfig {
             this.args.putInt(KEY_IMAGE, imageRes);
             this.args.putInt(KEY_TEXT, textRes);
             this.args.putInt(KEY_SUBTEXT, subtextRes);
+            this.args.putInt(KEY_CTATEXT, ctatextRes);
         }
 
         public String getClassname() {
@@ -65,10 +68,11 @@ public class FirstrunTorPagerConfig {
     }
 
     private static class SimplePanelConfigs {
-        public static final FirstrunTorPanelConfig welcomeTorPanelConfig = new FirstrunTorPanelConfig(FirstrunPanel.class.getName(), R.string.firstrun_welcome_tab_title, R.drawable.figure_welcome, R.string.firstrun_welcome_title, R.string.firstrun_welcome_message);
-        public static final FirstrunTorPanelConfig privacyPanelConfig = new FirstrunTorPanelConfig(FirstrunPanel.class.getName(), R.string.firstrun_privacy_tab_title, R.drawable.figure_privacy, R.string.firstrun_privacy_title, R.string.firstrun_privacy_message);
-        public static final FirstrunTorPanelConfig torNetworkPanelConfig = new FirstrunTorPanelConfig(FirstrunPanel.class.getName(), R.string.firstrun_tornetwork_tab_title, R.drawable.figure_network, R.string.firstrun_tornetwork_title, R.string.firstrun_tornetwork_message);
-        public static final FirstrunTorPanelConfig tipsPanelConfig = new FirstrunTorPanelConfig(FirstrunPanel.class.getName(), R.string.firstrun_tips_tab_title, R.drawable.figure_experience, R.string.firstrun_tips_title, R.string.firstrun_tips_message);
-        public static final FirstrunTorPanelConfig onionServicesPanelConfig = new FirstrunTorPanelConfig(LastPanel.class.getName(), R.string.firstrun_onionservices_tab_title, R.drawable.figure_onion, R.string.firstrun_onionservices_title, R.string.firstrun_onionservices_message);
+        public static final FirstrunTorPanelConfig welcomeTorPanelConfig = new FirstrunTorPanelConfig(FirstrunPanel.class.getName(), R.string.firstrun_welcome_tab_title, R.drawable.figure_welcome, R.string.firstrun_welcome_title, R.string.firstrun_welcome_message, R.string.firstrun_welcome_next);
+        public static final FirstrunTorPanelConfig privacyPanelConfig = new FirstrunTorPanelConfig(FirstrunPanel.class.getName(), R.string.firstrun_privacy_tab_title, R.drawable.figure_privacy, R.string.firstrun_privacy_title, R.string.firstrun_privacy_message, R.string.firstrun_privacy_next);
+        public static final FirstrunTorPanelConfig torNetworkPanelConfig = new FirstrunTorPanelConfig(FirstrunPanel.class.getName(), R.string.firstrun_tornetwork_tab_title, R.drawable.figure_network, R.string.firstrun_tornetwork_title, R.string.firstrun_tornetwork_message, R.string.firstrun_tornetwork_next);
+        public static final FirstrunTorPanelConfig secSettingsPanelConfig = new FirstrunTorPanelConfig(FirstrunPanel.class.getName(), R.string.firstrun_secsettings_tab_title, R.drawable.figure_security, R.string.firstrun_secsettings_title, R.string.firstrun_secsettings_message, R.string.firstrun_secsettings_next);
+        public static final FirstrunTorPanelConfig tipsPanelConfig = new FirstrunTorPanelConfig(FirstrunPanel.class.getName(), R.string.firstrun_tips_tab_title, R.drawable.figure_experience, R.string.firstrun_tips_title, R.string.firstrun_tips_message, R.string.firstrun_tips_next);
+        public static final FirstrunTorPanelConfig onionServicesPanelConfig = new FirstrunTorPanelConfig(LastPanel.class.getName(), R.string.firstrun_onionservices_tab_title, R.drawable.figure_onion, R.string.firstrun_onionservices_title, R.string.firstrun_onionservices_message, R.string.firstrun_onionservices_next);
     }
 }
diff --git a/mobile/android/base/java/org/mozilla/gecko/firstrun/LastPanel.java b/mobile/android/base/java/org/mozilla/gecko/firstrun/LastPanel.java
index c4e4aa0dd96a..d68719fe7658 100644
--- a/mobile/android/base/java/org/mozilla/gecko/firstrun/LastPanel.java
+++ b/mobile/android/base/java/org/mozilla/gecko/firstrun/LastPanel.java
@@ -24,16 +24,14 @@ public class LastPanel extends FirstrunPanel {
             final int imageRes = args.getInt(FirstrunPagerConfig.KEY_IMAGE);
             final int textRes = args.getInt(FirstrunPagerConfig.KEY_TEXT);
             final int subtextRes = args.getInt(FirstrunPagerConfig.KEY_SUBTEXT);
+            final int ctatextRes = args.getInt(FirstrunPagerConfig.KEY_CTATEXT);
 
             ((ImageView) root.findViewById(R.id.firstrun_image)).setImageResource(imageRes);
             ((TextView) root.findViewById(R.id.firstrun_text)).setText(textRes);
             ((TextView) root.findViewById(R.id.firstrun_subtext)).setText(subtextRes);
+            ((TextView) root.findViewById(R.id.firstrun_link)).setText(ctatextRes);
         }
 
-        TextView nextLink = (TextView) root.findViewById(R.id.firstrun_link);
-        nextLink.setText(R.string.firstrun_welcome_button_browser);
-        nextLink.setGravity(Gravity.CENTER);
-
         root.findViewById(R.id.firstrun_link).setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
diff --git a/mobile/android/base/locales/en-US/android_strings.dtd b/mobile/android/base/locales/en-US/android_strings.dtd
index b9181bb82e1b..d7cded48fda4 100644
--- a/mobile/android/base/locales/en-US/android_strings.dtd
+++ b/mobile/android/base/locales/en-US/android_strings.dtd
@@ -45,21 +45,29 @@
 
 <!-- Location note: Tor First run messages -->
 <!ENTITY firstrun_welcome_tab_title "Welcome">
-<!ENTITY firstrun_welcome_title "You\'re ready">
-<!ENTITY firstrun_welcome_message "Tor Browser for Android offers the highest standard of privacy and security while browsing the web. You are now protected against tracking, surveillance, and censorship. Here\'s a quick onboarding about how it works.">
+<!ENTITY firstrun_welcome_title "You\'re ready.">
+<!ENTITY firstrun_welcome_message "Tor Browser offers the highest standard of privacy and security while browsing the web. You\'re now protected against tracking, surveillance, and censorship. This quick onboarding will show you how.">
+<!ENTITY firstrun_welcome_next "Start now">
 <!ENTITY firstrun_privacy_tab_title "Privacy">
-<!ENTITY firstrun_privacy_title "Snub trackers and snoopers">
-<!ENTITY firstrun_privacy_message "Tor Browser isolates each domain you visit. That means trackers and advertisers can’t follow you. And any information stored, such as isolated cookies or your browsing history, is deleted after your session. These modifications ensure your privacy is protected while you\'re browsing. Click \'Tor Network\' to learn how we protect you on the network level.">
+<!ENTITY firstrun_privacy_title "Snub trackers and snoopers.">
+<!ENTITY firstrun_privacy_message "Tor Browser isolates cookies and deletes your browser history after your session. These modifications ensure your privacy and security are protected in the browser. Click ‘Tor Network’ to learn how we protect you on the network level.">
+<!ENTITY firstrun_privacy_next "Go to Tor Network">
 <!ENTITY firstrun_tornetwork_tab_title "Tor Network">
-<!ENTITY firstrun_tornetwork_title "Travel a decentralized network">
-<!ENTITY firstrun_tornetwork_message "Tor Browser for Android routes your connection over the Tor network. Tor is a network of servers, we call them relays, run by thousands of volunteers all around the world. This way, there\'s no single point of failure and no centralized entity you need to trust in order to enjoy the internet, unlike when you use a VPN. For each domain you access, a new circuit through the network is created for you.">
+<!ENTITY firstrun_tornetwork_title "Travel a decentralized network.">
+<!ENTITY firstrun_tornetwork_message "Tor Browser connects you to the Tor network run by thousands of volunteers around the world. Unlike a VPN, there\'s no one point of failure or centralized entity you need to trust in order to enjoy the internet privately.">
+<!ENTITY firstrun_tornetwork_next "Next">
+<!ENTITY firstrun_secsettings_tab_title "Security">
+<!ENTITY firstrun_secsettings_title "Choose your experience.">
+<!ENTITY firstrun_secsettings_message "We also provide you with additional settings for bumping up your browser security. Our Security Settings allow you to block elements that could be used to attack your computer.">
+<!ENTITY firstrun_secsettings_next "Next">
 <!ENTITY firstrun_tips_tab_title "Tips">
-<!ENTITY firstrun_tips_title "Experience Tips">
-<!ENTITY firstrun_tips_message "With all the security and privacy features provided by the Tor Browser and the Tor network, your experience while browsing the internet will be a little bit different.  Since your connection is going through 3 relays around the world, things may run a bit slower than you\'re used to. Sometimes sites will ask you to prove you are a human, not a robot, and depending on your security options, some things might not work or load. Our goal is to always provide the best experience for our users while not lowering the bar on providing real privacy.">
-<!ENTITY firstrun_onionservices_tab_title "Onion Services">
-<!ENTITY firstrun_onionservices_title "Onion Services">
-<!ENTITY firstrun_onionservices_message "For enhanced privacy and security, sites ending in .onion are configured using the Tor network. Onion services provide extra protections to publishers and
-visitors, including added safeguards against censorship. The same way Tor Browser for Android allows you to browse the web with a high degree of privacy onion services allow people to provide content and services privately. You can access .onion sites using Tor Browser for Android.">
+<!ENTITY firstrun_tips_title "Experience Tips.">
+<!ENTITY firstrun_tips_message "With all the security and privacy features provided by Tor, your experience while browsing the internet may be a little different. Things may be a bit slower and depending on your security level, some elements may not work or load. You may also be asked to prove you are a human and not a robot.">
+<!ENTITY firstrun_tips_next "Next">
+<!ENTITY firstrun_onionservices_tab_title "Onions">
+<!ENTITY firstrun_onionservices_title "Onion Services.">
+<!ENTITY firstrun_onionservices_message "Onion services are sites that end with a .onion that provide extra protections to publishers and visitors, including added safeguards against censorship. Onion services allow anyone to provide content and services anonymously.">
+<!ENTITY firstrun_onionservices_next "Go to explore">
 
 <!ENTITY  onboard_start_restricted1 "Stay safe and in control with this simplified version of &brandShortName;.">
 
diff --git a/mobile/android/base/strings.xml.in b/mobile/android/base/strings.xml.in
index abf51ae53db6..cfc7b5a137f8 100644
--- a/mobile/android/base/strings.xml.in
+++ b/mobile/android/base/strings.xml.in
@@ -54,22 +54,32 @@
   <string name="firstrun_welcome_tab_title">&firstrun_welcome_tab_title;</string>
   <string name="firstrun_welcome_title">&firstrun_welcome_title;</string>
   <string name="firstrun_welcome_message">&firstrun_welcome_message;</string>
+  <string name="firstrun_welcome_next">&firstrun_welcome_next;</string>
 
   <string name="firstrun_privacy_tab_title">&firstrun_privacy_tab_title;</string>
   <string name="firstrun_privacy_title">&firstrun_privacy_title;</string>
   <string name="firstrun_privacy_message">&firstrun_privacy_message;</string>
+  <string name="firstrun_privacy_next">&firstrun_privacy_next;</string>
 
   <string name="firstrun_tornetwork_tab_title">&firstrun_tornetwork_tab_title;</string>
   <string name="firstrun_tornetwork_title">&firstrun_tornetwork_title;</string>
   <string name="firstrun_tornetwork_message">&firstrun_tornetwork_message;</string>
+  <string name="firstrun_tornetwork_next">&firstrun_tornetwork_next;</string>
+
+  <string name="firstrun_secsettings_tab_title">&firstrun_secsettings_tab_title;</string>
+  <string name="firstrun_secsettings_title">&firstrun_secsettings_title;</string>
+  <string name="firstrun_secsettings_message">&firstrun_secsettings_message;</string>
+  <string name="firstrun_secsettings_next">&firstrun_secsettings_next;</string>
 
   <string name="firstrun_tips_tab_title">&firstrun_tips_tab_title;</string>
   <string name="firstrun_tips_title">&firstrun_tips_title;</string>
   <string name="firstrun_tips_message">&firstrun_tips_message;</string>
+  <string name="firstrun_tips_next">&firstrun_tips_next;</string>
 
   <string name="firstrun_onionservices_tab_title">&firstrun_onionservices_tab_title;</string>
   <string name="firstrun_onionservices_title">&firstrun_onionservices_title;</string>
   <string name="firstrun_onionservices_message">&firstrun_onionservices_message;</string>
+  <string name="firstrun_onionservices_next">&firstrun_onionservices_next;</string>
 
   <string name="bookmarks_title">&bookmarks_title;</string>
   <string name="history_title">&history_title;</string>
diff --git a/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_security.png b/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_security.png
new file mode 100644
index 000000000000..0a0d47f75370
Binary files /dev/null and b/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_security.png differ



More information about the tbb-commits mailing list