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

gk at torproject.org gk at torproject.org
Mon Aug 20 17:11:56 UTC 2018


commit 9c58e200f6eb526a5b337138b994b9eb31af5817
Author: Igor Oliveira <igt0 at torproject.org>
Date:   Mon Aug 6 00:12:26 2018 -0300

    Bug 25696 - Implement alpha onboarding for Tor Browser for Android
    
    - FirstrunTorPagerConfig.java: Create file that sets up all the views
    in the pager.
    
    - FirstrunPager.java: Update code to use the FirstrunTorPagerConfig.
    
    - FirstrunLastPanel.java: Create view that adds a close handler in the
    latest pager view.
---
 .../res/layout/firstrun_animation_container.xml    |  10 +--
 .../firstrun_basepanel_checkable_fragment.xml      |  34 ++++++----
 .../android/app/src/photon/res/values/colors.xml   |   4 +-
 .../android/app/src/photon/res/values/styles.xml   |   7 ++
 .../mozilla/gecko/firstrun/FirstrunLastPanel.java  |  30 +++++++++
 .../org/mozilla/gecko/firstrun/FirstrunPager.java  |  18 ++---
 .../gecko/firstrun/FirstrunTorPagerConfig.java     |  74 +++++++++++++++++++++
 .../java/org/mozilla/gecko/firstrun/LastPanel.java |  11 ++-
 .../android/base/locales/en-US/android_strings.dtd |  20 +++++-
 mobile/android/base/strings.xml.in                 |  22 +++++-
 .../res/drawable-nodpi/figure_experience.png       | Bin 0 -> 44299 bytes
 .../res/drawable-nodpi/figure_network.png          | Bin 0 -> 70302 bytes
 .../torbrowser/res/drawable-nodpi/figure_onion.png | Bin 0 -> 139952 bytes
 .../res/drawable-nodpi/figure_privacy.png          | Bin 0 -> 61696 bytes
 .../res/drawable-nodpi/figure_welcome.png          | Bin 0 -> 83798 bytes
 .../drawable-nodpi/home_tab_menu_strip_tor.9.png   | Bin 0 -> 126 bytes
 16 files changed, 189 insertions(+), 41 deletions(-)

diff --git a/mobile/android/app/src/main/res/layout/firstrun_animation_container.xml b/mobile/android/app/src/main/res/layout/firstrun_animation_container.xml
index 3e7225365c57..dd20466a8e1a 100644
--- a/mobile/android/app/src/main/res/layout/firstrun_animation_container.xml
+++ b/mobile/android/app/src/main/res/layout/firstrun_animation_container.xml
@@ -8,7 +8,7 @@
              xmlns:gecko="http://schemas.android.com/apk/res-auto"
              android:layout_height="match_parent"
              android:layout_width="match_parent"
-             android:background="@color/dark_transparent_overlay">
+             android:background="@android:color/white">
 
     <org.mozilla.gecko.firstrun.FirstrunPager
                     android:id="@+id/firstrun_pager"
@@ -18,12 +18,12 @@
 
         <org.mozilla.gecko.home.TabMenuStrip android:layout_width="match_parent"
                                              android:layout_height="@dimen/tabs_strip_height"
-                                             android:background="@color/firstrun_pager_header"
+                                             android:background="@android:color/white"
                                              android:visibility="visible"
                                              android:layout_gravity="top"
-                                             gecko:strip="@drawable/home_tab_menu_strip"
-                                             gecko:activeTextColor="@color/placeholder_grey"
-                                             gecko:inactiveTextColor="@color/tab_text_color"
+                                             gecko:strip="@drawable/home_tab_menu_strip_tor"
+                                             gecko:activeTextColor="@color/tor_tab_active_text"
+                                             gecko:inactiveTextColor="@color/tor_tab_inactive_text"
                                              gecko:tabsMarginLeft="@dimen/firstrun_tab_strip_content_start" />
 
     </org.mozilla.gecko.firstrun.FirstrunPager>
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 700ab20663ce..6233198982d9 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,31 +13,37 @@
     <LinearLayout android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:minHeight="@dimen/firstrun_min_height"
-                  android:background="@color/about_page_header_grey"
+                  android:background="@android:color/white"
                   android:gravity="center_horizontal"
                   android:orientation="vertical">
 
-        <ImageView android:id="@+id/firstrun_image"
-                   android:layout_width="wrap_content"
-                   android:layout_height="@dimen/firstrun_background_height"
-                   android:layout_marginTop="30dp"
-                   android:layout_marginBottom="18dp"
-                   android:scaleType="fitCenter"
-                   android:layout_gravity="center"
-                   android:adjustViewBounds="true"/>
+        <LinearLayout android:layout_width="match_parent"
+                      android:layout_height="@dimen/firstrun_background_height"
+                      android:background="@android:color/white"
+                      android:gravity="center"
+	              android:layout_gravity="center">
+
+            <ImageView android:id="@+id/firstrun_image"
+                       android:layout_width="wrap_content"
+                       android:layout_height="match_parent"
+                       android:scaleType="fitCenter"
+                       android:layout_gravity="center"
+                       android:adjustViewBounds="true"/>
+        </LinearLayout>
 
         <TextView android:id="@+id/firstrun_text"
                   android:layout_width="@dimen/firstrun_content_width"
                   android:layout_height="wrap_content"
-                  android:gravity="center"
+                  android:gravity="left"
                   android:textAppearance="@style/TextAppearance.FirstrunLight.Main"/>
 
         <TextView android:id="@+id/firstrun_subtext"
                   android:layout_width="@dimen/firstrun_content_width"
                   android:layout_height="wrap_content"
                   android:paddingTop="20dp"
-                  android:gravity="center"
-                  android:textAppearance="@style/TextAppearance.FirstrunRegular.Body"/>
+                  android:gravity="left"
+                  android:lineSpacingExtra="5dp"
+                  android:textAppearance="@style/TextAppearance.FirstrunTorRegular.Body"/>
 
         <android.support.v7.widget.SwitchCompat
                   android:id="@+id/firstrun_switch"
@@ -47,10 +53,10 @@
                   android:visibility="invisible"/>
 
         <TextView android:id="@+id/firstrun_link"
-                  android:layout_width="wrap_content"
+                  android:layout_width="@dimen/firstrun_content_width"
                   android:layout_height="wrap_content"
                   android:layout_marginBottom="30dp"
-                  android:gravity="center"
+                  android:gravity="left"
                   android:textAppearance="@style/TextAppearance.Link"
                   android:textAllCaps="true"
                   android:text="@string/firstrun_button_next"/>
diff --git a/mobile/android/app/src/photon/res/values/colors.xml b/mobile/android/app/src/photon/res/values/colors.xml
index 73478f47bf4a..b3522be3c2db 100644
--- a/mobile/android/app/src/photon/res/values/colors.xml
+++ b/mobile/android/app/src/photon/res/values/colors.xml
@@ -130,7 +130,7 @@
     <color name="private_browsing_purple">#CF68FF</color>
 
     <!-- On boarding -->
-    <color name="ob_click">#0A84FF</color>
+    <color name="ob_click">#7D4698</color>
     <color name="ob_press">#003EAA</color>
     <color name="ob_title">#212121</color>
     <color name="ob_subtitle">#737373</color>
@@ -151,6 +151,8 @@
 
     <color name="url_bar_shadow_private">#272727</color>
 
+    <color name="tor_tab_inactive_text">#484848</color>
+    <color name="tor_tab_active_text">#7D4698</color>
     <!-- Restricted profiles palette -->
 
     <color name="restricted_profile_background_gold">#ffffcb51</color>
diff --git a/mobile/android/app/src/photon/res/values/styles.xml b/mobile/android/app/src/photon/res/values/styles.xml
index 49e01ee1caee..3330430b22d7 100644
--- a/mobile/android/app/src/photon/res/values/styles.xml
+++ b/mobile/android/app/src/photon/res/values/styles.xml
@@ -729,6 +729,7 @@
 
     <style name="TextAppearance.FirstrunLight"/>
     <style name="TextAppearance.FirstrunRegular"/>
+    <style name="TextAppearance.FirstrunTorRegular"/>
 
     <style name="TextAppearance.FirstrunLight.Main">
         <item name="android:textSize">20sp</item>
@@ -741,6 +742,12 @@
         <item name="android:lineSpacingMultiplier">1.25</item>
     </style>
 
+    <style name="TextAppearance.FirstrunTorRegular.Body">
+      <item name="android:textSize">16sp</item>
+      <item name="android:textColor">@color/ob_subtitle</item>
+      <item name="android:lineSpacingMultiplier">2</item>
+    </style>
+
     <style name="TextAppearance.Link">
         <item name="android:textSize">16sp</item>
         <item name="android:textColor">@color/ob_click</item>
diff --git a/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunLastPanel.java b/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunLastPanel.java
new file mode 100644
index 000000000000..37ccda25d328
--- /dev/null
+++ b/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunLastPanel.java
@@ -0,0 +1,30 @@
+/* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*-
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.mozilla.gecko.firstrun;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import org.mozilla.gecko.R;
+
+public class FirstrunLastPanel extends FirstrunPanel {
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstance) {
+        final ViewGroup root = (ViewGroup) super.onCreateView(inflater, container, savedInstance);
+
+        root.findViewById(R.id.firstrun_link).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                close();
+            }
+        });
+
+        return root;
+    }
+}
diff --git a/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPager.java b/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPager.java
index 044fe41850d5..48152c60870f 100644
--- a/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPager.java
+++ b/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPager.java
@@ -64,15 +64,7 @@ public class FirstrunPager extends RtlViewPager {
     }
 
     public void load(Context appContext, FragmentManager fm, final FirstrunAnimationContainer.OnFinishListener onFinishListener) {
-        final List<FirstrunPagerConfig.FirstrunPanelConfig> panels;
-
-        if (Restrictions.isRestrictedProfile(context)) {
-            panels = FirstrunPagerConfig.getRestricted();
-        } else if (FirefoxAccounts.firefoxAccountsExist(context)) {
-            panels = FirstrunPagerConfig.forFxAUser(appContext);
-        } else {
-            panels = FirstrunPagerConfig.getDefault(appContext);
-        }
+        final List<FirstrunTorPagerConfig.FirstrunTorPanelConfig> panels = FirstrunTorPagerConfig.getDefault(appContext);
 
         setAdapter(new ViewPagerAdapter(fm, panels));
         this.pagerNavigation = new FirstrunPanel.PagerNavigation() {
@@ -136,14 +128,14 @@ public class FirstrunPager extends RtlViewPager {
     }
 
     protected class ViewPagerAdapter extends FragmentPagerAdapter {
-        private final List<FirstrunPagerConfig.FirstrunPanelConfig> panels;
+        private final List<FirstrunTorPagerConfig.FirstrunTorPanelConfig> panels;
         private final Fragment[] fragments;
 
-        public ViewPagerAdapter(FragmentManager fm, List<FirstrunPagerConfig.FirstrunPanelConfig> panels) {
+        public ViewPagerAdapter(FragmentManager fm, List<FirstrunTorPagerConfig.FirstrunTorPanelConfig> panels) {
             super(fm);
             this.panels = panels;
             this.fragments = new Fragment[panels.size()];
-            for (FirstrunPagerConfig.FirstrunPanelConfig panel : panels) {
+            for (FirstrunTorPagerConfig.FirstrunTorPanelConfig panel : panels) {
                 mDecor.onAddPagerView(context.getString(panel.getTitleRes()));
             }
 
@@ -156,7 +148,7 @@ public class FirstrunPager extends RtlViewPager {
         public Fragment getItem(int i) {
             Fragment fragment = this.fragments[i];
             if (fragment == null) {
-                FirstrunPagerConfig.FirstrunPanelConfig panelConfig = panels.get(i);
+                FirstrunTorPagerConfig.FirstrunTorPanelConfig panelConfig = panels.get(i);
                 fragment = Fragment.instantiate(context, panelConfig.getClassname(), panelConfig.getArgs());
                 ((FirstrunPanel) fragment).setPagerNavigation(pagerNavigation);
                 fragments[i] = fragment;
diff --git a/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunTorPagerConfig.java b/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunTorPagerConfig.java
new file mode 100644
index 000000000000..40b72e705784
--- /dev/null
+++ b/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunTorPagerConfig.java
@@ -0,0 +1,74 @@
+/* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*-
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.mozilla.gecko.firstrun;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.util.Log;
+import org.mozilla.gecko.GeckoSharedPrefs;
+import org.mozilla.gecko.R;
+import org.mozilla.gecko.Telemetry;
+import org.mozilla.gecko.TelemetryContract;
+import org.mozilla.gecko.Experiments;
+
+import java.util.LinkedList;
+import java.util.List;
+
+public class FirstrunTorPagerConfig {
+    public static final String LOGTAG = "FirstrunPagerConfigTor";
+
+    public static final String KEY_IMAGE = "imageRes";
+    public static final String KEY_TEXT = "textRes";
+    public static final String KEY_SUBTEXT = "subtextRes";
+
+    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.tipsPanelConfig);
+       panels.add(SimplePanelConfigs.onionServicesPanelConfig);
+
+       return panels;
+    }
+
+    public static class FirstrunTorPanelConfig {
+
+        private String classname;
+        private int titleRes;
+        private Bundle args;
+
+        public FirstrunTorPanelConfig(String classname, int titleRes, int imageRes, int textRes, int subtextRes) {
+            this.classname = classname;
+            this.titleRes = titleRes;
+
+            this.args = new Bundle();
+            this.args.putInt(KEY_IMAGE, imageRes);
+            this.args.putInt(KEY_TEXT, textRes);
+            this.args.putInt(KEY_SUBTEXT, subtextRes);
+        }
+
+        public String getClassname() {
+            return this.classname;
+        }
+
+        public int getTitleRes() {
+            return this.titleRes;
+        }
+
+        public Bundle getArgs() {
+            return args;
+        }
+    }
+
+    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);
+    }
+}
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 d100c49b3480..c4e4aa0dd96a 100644
--- a/mobile/android/base/java/org/mozilla/gecko/firstrun/LastPanel.java
+++ b/mobile/android/base/java/org/mozilla/gecko/firstrun/LastPanel.java
@@ -6,6 +6,7 @@
 package org.mozilla.gecko.firstrun;
 
 import android.os.Bundle;
+import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -13,8 +14,6 @@ import android.widget.ImageView;
 import android.widget.TextView;
 
 import org.mozilla.gecko.R;
-import org.mozilla.gecko.Telemetry;
-import org.mozilla.gecko.TelemetryContract;
 
 public class LastPanel extends FirstrunPanel {
     @Override
@@ -29,19 +28,19 @@ public class LastPanel extends FirstrunPanel {
             ((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(R.string.firstrun_welcome_button_browser);
-
         }
 
+        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) {
-                Telemetry.sendUIEvent(TelemetryContract.Event.ACTION, TelemetryContract.Method.BUTTON, "firstrun-next");
                 close();
             }
         });
 
-
         return root;
     }
 }
diff --git a/mobile/android/base/locales/en-US/android_strings.dtd b/mobile/android/base/locales/en-US/android_strings.dtd
index b4e2296268c1..b9181bb82e1b 100644
--- a/mobile/android/base/locales/en-US/android_strings.dtd
+++ b/mobile/android/base/locales/en-US/android_strings.dtd
@@ -6,7 +6,7 @@
 <!ENTITY firstrun_urlbar_message2 "Thanks for choosing &brandShortName;">
 <!ENTITY firstrun_urlbar_subtext2 "A modern mobile browser from The Tor Project, the non-profit committed to a free and open web.">
 <!ENTITY firstrun_panel_title_privacy "Privacy">
-<!ENTITY firstrun_privacy_message "Browse like no one\'s watching">
+<!--!ENTITY firstrun_privacy_message "Browse like no one\'s watching"-->
 <!ENTITY firstrun_privacy_subtext "Private Browsing with Tracking Protection blocks trackers while you browse and won’t remember your history when you finish browsing.">
 <!ENTITY firstrun_panel_title_customize "Customize">
 <!ENTITY firstrun_customize_message "Make &brandShortName; your own.">
@@ -43,6 +43,24 @@
 <!ENTITY firstrun_account_title "You">
 <!ENTITY firstrun_account_message "Have &brandShortName; on another device?">
 
+<!-- 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_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_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_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  onboard_start_restricted1 "Stay safe and in control with this simplified version of &brandShortName;.">
 
 <!-- Localization note: These are used as the titles of different pages on the home screen.
diff --git a/mobile/android/base/strings.xml.in b/mobile/android/base/strings.xml.in
index cf43a3b4c78b..abf51ae53db6 100644
--- a/mobile/android/base/strings.xml.in
+++ b/mobile/android/base/strings.xml.in
@@ -32,7 +32,7 @@
   <string name="firstrun_urlbar_message">&firstrun_urlbar_message2;</string>
   <string name="firstrun_urlbar_subtext">&firstrun_urlbar_subtext2;</string>
   <string name="firstrun_panel_title_privacy">&firstrun_panel_title_privacy;</string>
-  <string name="firstrun_privacy_message">&firstrun_privacy_message;</string>
+  <!--string name="firstrun_privacy_message">&firstrun_privacy_message;</string-->
   <string name="firstrun_privacy_subtext">&firstrun_privacy_subtext;</string>
   <string name="firstrun_panel_title_customize">&firstrun_panel_title_customize;</string>
   <string name="firstrun_customize_message">&firstrun_customize_message;</string>
@@ -51,6 +51,26 @@
 
   <string name="firstrun_welcome_restricted">&onboard_start_restricted1;</string>
 
+  <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_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_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_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_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="bookmarks_title">&bookmarks_title;</string>
   <string name="history_title">&history_title;</string>
 
diff --git a/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_experience.png b/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_experience.png
new file mode 100644
index 000000000000..2eeeb1ccbd7d
Binary files /dev/null and b/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_experience.png differ
diff --git a/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_network.png b/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_network.png
new file mode 100644
index 000000000000..62bf5e2d144d
Binary files /dev/null and b/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_network.png differ
diff --git a/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_onion.png b/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_onion.png
new file mode 100644
index 000000000000..cbd8236f82e9
Binary files /dev/null and b/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_onion.png differ
diff --git a/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_privacy.png b/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_privacy.png
new file mode 100644
index 000000000000..d9d56229aa8a
Binary files /dev/null and b/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_privacy.png differ
diff --git a/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_welcome.png b/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_welcome.png
new file mode 100644
index 000000000000..274dea5c31a6
Binary files /dev/null and b/mobile/android/branding/torbrowser/res/drawable-nodpi/figure_welcome.png differ
diff --git a/mobile/android/branding/torbrowser/res/drawable-nodpi/home_tab_menu_strip_tor.9.png b/mobile/android/branding/torbrowser/res/drawable-nodpi/home_tab_menu_strip_tor.9.png
new file mode 100644
index 000000000000..a92420d11b8e
Binary files /dev/null and b/mobile/android/branding/torbrowser/res/drawable-nodpi/home_tab_menu_strip_tor.9.png differ



More information about the tor-commits mailing list