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 7be92341f2d0..dfbaf99b0076 100644
--- a/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPager.java
+++ b/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPager.java
@@ -109,6 +109,9 @@ public class FirstrunPager extends ViewPager {
});
animateLoad();
+
+ // Record telemetry for first onboarding panel, for baseline.
+ Telemetry.sendUIEvent(TelemetryContract.Event.SHOW, TelemetryContract.Method.PANEL, "onboarding.0");
}
public void cleanup() {
@@ -155,7 +158,8 @@ public class FirstrunPager extends ViewPager {
public Fragment getItem(int i) {
Fragment fragment = this.fragments[i];
if (fragment == null) {
- fragment = Fragment.instantiate(context, panels.get(i).getClassname());
+ FirstrunPagerConfig.FirstrunPanelConfig 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/FirstrunPagerConfig.java b/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPagerConfig.java
index 801451367814..88dbe2bc4eca 100644
--- a/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPagerConfig.java
+++ b/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPagerConfig.java
@@ -6,9 +6,11 @@
package org.mozilla.gecko.firstrun;
import android.content.Context;
+import android.os.Bundle;
import android.util.Log;
import com.keepsafe.switchboard.SwitchBoard;
import org.mozilla.gecko.AppConstants;
+import org.mozilla.gecko.R;
import org.mozilla.gecko.Telemetry;
import org.mozilla.gecko.TelemetryContract;
@@ -17,6 +19,11 @@ import java.util.List;
public class FirstrunPagerConfig {
public static final String LOGTAG = "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 ONBOARDING_A = "onboarding-a";
public static final String ONBOARDING_B = "onboarding-b";
public static final String ONBOARDING_C = "onboarding-c";
@@ -28,7 +35,10 @@ public class FirstrunPagerConfig {
panels.add(new FirstrunPanelConfig(WelcomePanel.class.getName(), WelcomePanel.TITLE_RES));
Telemetry.startUISession(TelemetryContract.Session.EXPERIMENT, ONBOARDING_A);
} else if (isInExperimentLocal(context, ONBOARDING_B)) {
- // TODO: Add new static onboarding flow.
+ panels.add(SimplePanelConfigs.urlbarPanelConfig);
+ panels.add(SimplePanelConfigs.bookmarksPanelConfig);
+ panels.add(SimplePanelConfigs.syncPanelConfig);
+ panels.add(new FirstrunPanelConfig(SyncPanel.class.getName(), SyncPanel.TITLE_RES));
Telemetry.startUISession(TelemetryContract.Session.EXPERIMENT, ONBOARDING_B);
} else if (isInExperimentLocal(context, ONBOARDING_C)) {
// TODO: Add new interactive onboarding flow.
@@ -65,12 +75,29 @@ public class FirstrunPagerConfig {
}
public static class FirstrunPanelConfig {
+
private String classname;
private int titleRes;
+ private Bundle args;
public FirstrunPanelConfig(String resource, int titleRes) {
- this.classname= resource;
+ this(resource, titleRes, -1, -1, -1, true);
+ }
+
+ public FirstrunPanelConfig(String classname, int titleRes, int imageRes, int textRes, int subtextRes) {
+ this(classname, titleRes, imageRes, textRes, subtextRes, false);
+ }
+
+ private FirstrunPanelConfig(String classname, int titleRes, int imageRes, int textRes, int subtextRes, boolean isCustom) {
+ this.classname = classname;
this.titleRes = titleRes;
+
+ if (!isCustom) {
+ 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() {
@@ -81,5 +108,14 @@ public class FirstrunPagerConfig {
return this.titleRes;
}
+ public Bundle getArgs() {
+ return args;
+ }
+ }
+
+ protected static class SimplePanelConfigs {
+ public static final FirstrunPanelConfig urlbarPanelConfig = new FirstrunPanelConfig(FirstrunPanel.class.getName(), R.string.firstrun_panel_title_welcome, R.drawable.firstrun_urlbar, R.string.firstrun_urlbar_message, R.string.firstrun_urlbar_subtext);
+ public static final FirstrunPanelConfig bookmarksPanelConfig = new FirstrunPanelConfig(FirstrunPanel.class.getName(), R.string.firstrun_bookmarks_title, R.drawable.firstrun_bookmarks, R.string.firstrun_bookmarks_message, R.string.firstrun_bookmarks_subtext);
+ public static final FirstrunPanelConfig syncPanelConfig = new FirstrunPanelConfig(FirstrunPanel.class.getName(), R.string.firstrun_sync_title, R.drawable.firstrun_sync, R.string.firstrun_sync_message, R.string.firstrun_sync_subtext);
}
}
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 2f4e7acb63db..e7a9a13a80be 100644
--- a/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPanel.java
+++ b/mobile/android/base/java/org/mozilla/gecko/firstrun/FirstrunPanel.java
@@ -5,7 +5,16 @@
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 android.widget.ImageView;
+import android.widget.TextView;
+import org.mozilla.gecko.R;
+import org.mozilla.gecko.Telemetry;
+import org.mozilla.gecko.TelemetryContract;
/**
* Base class for our first run pages. We call these FirstrunPanel for consistency
@@ -18,6 +27,31 @@ public class FirstrunPanel extends Fragment {
public static final int TITLE_RES = -1;
protected boolean showBrowserHint = true;
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstance) {
+ final ViewGroup root = (ViewGroup) inflater.inflate(R.layout.firstrun_basepanel_fragment, container, false);
+ Bundle args = getArguments();
+ if (args != null) {
+ final int imageRes = args.getInt(FirstrunPagerConfig.KEY_IMAGE);
+ final int textRes = args.getInt(FirstrunPagerConfig.KEY_TEXT);
+ final int subtextRes = args.getInt(FirstrunPagerConfig.KEY_SUBTEXT);
+
+ ((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);
+ }
+
+ 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");
+ pagerNavigation.next();
+ }
+ });
+
+ return root;
+ }
+
public interface PagerNavigation {
void next();
void finish();
diff --git a/mobile/android/base/locales/en-US/android_strings.dtd b/mobile/android/base/locales/en-US/android_strings.dtd
index 36e0e9067360..e0d5e19ce8f7 100644
--- a/mobile/android/base/locales/en-US/android_strings.dtd
+++ b/mobile/android/base/locales/en-US/android_strings.dtd
@@ -9,7 +9,17 @@
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mobile/android/base/resources/drawable-nodpi/firstrun_background_devices.png b/mobile/android/base/resources/drawable-nodpi/firstrun_background_devices.png
deleted file mode 100644
index 6cffbae14f13..000000000000
Binary files a/mobile/android/base/resources/drawable-nodpi/firstrun_background_devices.png and /dev/null differ
diff --git a/mobile/android/base/resources/drawable-nodpi/firstrun_bookmarks.png b/mobile/android/base/resources/drawable-nodpi/firstrun_bookmarks.png
new file mode 100644
index 000000000000..ecab8a84e5ee
Binary files /dev/null and b/mobile/android/base/resources/drawable-nodpi/firstrun_bookmarks.png differ
diff --git a/mobile/android/base/resources/drawable-nodpi/firstrun_signin.png b/mobile/android/base/resources/drawable-nodpi/firstrun_signin.png
new file mode 100644
index 000000000000..104d2a84e8cc
Binary files /dev/null and b/mobile/android/base/resources/drawable-nodpi/firstrun_signin.png differ
diff --git a/mobile/android/base/resources/drawable-nodpi/firstrun_sync.png b/mobile/android/base/resources/drawable-nodpi/firstrun_sync.png
new file mode 100644
index 000000000000..ac6707a60e8d
Binary files /dev/null and b/mobile/android/base/resources/drawable-nodpi/firstrun_sync.png differ
diff --git a/mobile/android/base/resources/drawable-nodpi/firstrun_urlbar.png b/mobile/android/base/resources/drawable-nodpi/firstrun_urlbar.png
new file mode 100644
index 000000000000..72561436bcad
Binary files /dev/null and b/mobile/android/base/resources/drawable-nodpi/firstrun_urlbar.png differ
diff --git a/mobile/android/base/resources/layout/firstrun_animation_container.xml b/mobile/android/base/resources/layout/firstrun_animation_container.xml
index 555dd5cd46ea..2c7a411ad0c4 100644
--- a/mobile/android/base/resources/layout/firstrun_animation_container.xml
+++ b/mobile/android/base/resources/layout/firstrun_animation_container.xml
@@ -14,17 +14,16 @@
android:id="@+id/firstrun_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/firstrun_pager_background">
+ android:background="@android:color/white">
+ gecko:activeTextColor="@color/placeholder_grey"
+ gecko:inactiveTextColor="@color/tab_text_color" />
diff --git a/mobile/android/base/resources/layout/firstrun_basepanel_fragment.xml b/mobile/android/base/resources/layout/firstrun_basepanel_fragment.xml
new file mode 100644
index 000000000000..ccff7a3ad70a
--- /dev/null
+++ b/mobile/android/base/resources/layout/firstrun_basepanel_fragment.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mobile/android/base/resources/layout/firstrun_sync_fragment.xml b/mobile/android/base/resources/layout/firstrun_sync_fragment.xml
index 3fc5b667dedb..cb4f1e61183d 100644
--- a/mobile/android/base/resources/layout/firstrun_sync_fragment.xml
+++ b/mobile/android/base/resources/layout/firstrun_sync_fragment.xml
@@ -13,52 +13,41 @@
-
-
-
-
-
+
-
-
+ android:text="@string/firstrun_signin_message"/>
+ android:text="@string/firstrun_signin_button"/>
+
+
diff --git a/mobile/android/base/resources/layout/firstrun_welcome_fragment.xml b/mobile/android/base/resources/layout/firstrun_welcome_fragment.xml
index 2eb9ee60ca1a..c7c1f803c01e 100644
--- a/mobile/android/base/resources/layout/firstrun_welcome_fragment.xml
+++ b/mobile/android/base/resources/layout/firstrun_welcome_fragment.xml
@@ -53,7 +53,7 @@
style="@style/Widget.Firstrun.Button"
android:background="@drawable/button_background_action_orange_round"
android:layout_gravity="center"
- android:text="@string/firstrun_welcome_button_account"/>
+ android:text="@string/firstrun_signin_button"/>
#99000000
-
- #1193CB
- #16A3DF
+
+ #E8E8E8
#16A3DF
diff --git a/mobile/android/base/resources/values/dimens.xml b/mobile/android/base/resources/values/dimens.xml
index cce7873a57fc..bed2b26dab8e 100644
--- a/mobile/android/base/resources/values/dimens.xml
+++ b/mobile/android/base/resources/values/dimens.xml
@@ -61,7 +61,7 @@
300dp
180dp
48dp
- 200dp
+ 180dp
260dp
148dp
diff --git a/mobile/android/base/strings.xml.in b/mobile/android/base/strings.xml.in
index e0538b75e1ea..41ff4c9f7805 100644
--- a/mobile/android/base/strings.xml.in
+++ b/mobile/android/base/strings.xml.in
@@ -37,11 +37,20 @@
&no_space_to_start_error;
&error_loading_file;
-
&firstrun_panel_title_welcome;
&onboard_start_message3;
&onboard_start_subtext3;
- &onboard_start_button_account;
+
+ &firstrun_urlbar_message;
+ &firstrun_urlbar_subtext;
+ &firstrun_bookmarks_title;
+ &firstrun_bookmarks_message;
+ &firstrun_bookmarks_subtext;
+ &firstrun_sync_title;
+ &firstrun_sync_message;
+ &firstrun_sync_subtext;
+ &firstrun_signin_message;
+ &firstrun_signin_button;
&onboard_start_button_browser;
&firstrun_button_next;