Bug 1246238 - Show helper UI first time a reader view page is bookmarked r=sebastian
authorAndrzej Hunt <ahunt@mozilla.com>
Wed, 20 Apr 2016 21:27:30 +0200
changeset 332387 f9177e655c8c7c3250087d71c0b6fed5e335e1b5
parent 332386 d0bed027367312449a35fb4f3a50b68a250545d9
child 332388 2df96c0510daa5f604256647090dba70d7670e40
push id6048
push userkmoir@mozilla.com
push dateMon, 06 Jun 2016 19:02:08 +0000
treeherdermozilla-beta@46d72a56c57d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerssebastian
bugs1246238
milestone48.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1246238 - Show helper UI first time a reader view page is bookmarked r=sebastian MozReview-Commit-ID: JeHr7eZTKc
mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
mobile/android/base/java/org/mozilla/gecko/promotion/SimpleHelperUI.java
mobile/android/base/locales/en-US/android_strings.dtd
mobile/android/base/resources/drawable-hdpi/helper_first_readerview_bookmark.png
mobile/android/base/resources/drawable-xhdpi/helper_first_readerview_bookmark.png
mobile/android/base/resources/drawable-xxhdpi/helper_first_readerview_bookmark.png
mobile/android/base/strings.xml.in
--- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
+++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
@@ -53,16 +53,17 @@ import org.mozilla.gecko.menu.GeckoMenu;
 import org.mozilla.gecko.menu.GeckoMenuItem;
 import org.mozilla.gecko.mozglue.ContextUtils;
 import org.mozilla.gecko.mozglue.ContextUtils.SafeIntent;
 import org.mozilla.gecko.overlays.ui.ShareDialog;
 import org.mozilla.gecko.permissions.Permissions;
 import org.mozilla.gecko.preferences.ClearOnShutdownPref;
 import org.mozilla.gecko.preferences.GeckoPreferences;
 import org.mozilla.gecko.promotion.AddToHomeScreenPromotion;
+import org.mozilla.gecko.promotion.SimpleHelperUI;
 import org.mozilla.gecko.prompts.Prompt;
 import org.mozilla.gecko.prompts.PromptListItem;
 import org.mozilla.gecko.reader.SavedReaderViewHelper;
 import org.mozilla.gecko.reader.ReaderModeUtils;
 import org.mozilla.gecko.reader.ReadingListHelper;
 import org.mozilla.gecko.restrictions.Restrictable;
 import org.mozilla.gecko.restrictions.RestrictedProfileConfiguration;
 import org.mozilla.gecko.restrictions.Restrictions;
@@ -205,16 +206,19 @@ public class BrowserApp extends GeckoApp
 
     private static final String STATE_ABOUT_HOME_TOP_PADDING = "abouthome_top_padding";
 
     private static final String BROWSER_SEARCH_TAG = "browser_search";
 
     // Request ID for startActivityForResult.
     private static final int ACTIVITY_REQUEST_PREFERENCES = 1001;
     private static final int ACTIVITY_REQUEST_TAB_QUEUE = 2001;
+    private static final int ACTIVITY_REQUEST_FIRST_READERVIEW_BOOKMARK = 3001;
+    private static final int ACTIVITY_RESULT_FIRST_READERVIEW_BOOKMARKS_GOTO_BOOKMARKS = 3002;
+    private static final int ACTIVITY_RESULT_FIRST_READERVIEW_BOOKMARKS_IGNORE = 3003;
 
     public static final String ACTION_VIEW_MULTIPLE = AppConstants.ANDROID_PACKAGE_NAME + ".action.VIEW_MULTIPLE";
 
     @RobocopTarget
     public static final String EXTRA_SKIP_STARTPANE = "skipstartpane";
     private static final String EOL_NOTIFIED = "eol_notified";
 
     private BrowserSearch mBrowserSearch;
@@ -366,17 +370,36 @@ public class BrowserApp extends GeckoApp
             case BOOKMARK_ADDED:
                 // We always show the special offline snackbar whenever we bookmark a reader page.
                 // It's possible that the page is already stored offline, however this is highly
                 // unlikely, and even so it is probably nicer to show the same offline notification
                 // every time we bookmark an about:reader page.
                 if (!AboutPages.isAboutReader(tab.getURL())) {
                     showBookmarkAddedSnackbar();
                 } else {
-                    showReaderModeBookmarkAddedSnackbar();
+                    final SharedPreferences prefs = GeckoSharedPrefs.forProfile(this);
+
+                    final boolean hasFirstReaderViewPromptBeenShownBefore = prefs.getBoolean(SimpleHelperUI.PREF_FIRST_RVBP_SHOWN, false);
+
+                    if (hasFirstReaderViewPromptBeenShownBefore) {
+                        showReaderModeBookmarkAddedSnackbar();
+                    } else {
+                        SimpleHelperUI.show(this,
+                                SimpleHelperUI.FIRST_RVBP_SHOWN_TELEMETRYEXTRA,
+                                ACTIVITY_REQUEST_FIRST_READERVIEW_BOOKMARK,
+                                R.string.helper_first_offline_bookmark_title, R.string.helper_first_offline_bookmark_message,
+                                R.drawable.helper_first_readerview_bookmark, R.string.helper_first_offline_bookmark_button,
+                                ACTIVITY_RESULT_FIRST_READERVIEW_BOOKMARKS_GOTO_BOOKMARKS,
+                                ACTIVITY_RESULT_FIRST_READERVIEW_BOOKMARKS_IGNORE);
+
+                        GeckoSharedPrefs.forProfile(this)
+                                .edit()
+                                .putBoolean(SimpleHelperUI.PREF_FIRST_RVBP_SHOWN, true)
+                                .apply();
+                    }
                 }
                 break;
             case BOOKMARK_REMOVED:
                 showBookmarkRemovedSnackbar();
                 break;
 
             case UNSELECTED:
                 // We receive UNSELECTED immediately after the SELECTED listeners run
@@ -2646,16 +2669,24 @@ public class BrowserApp extends GeckoApp
                     }
                 });
                 break;
 
             case ACTIVITY_REQUEST_TAB_QUEUE:
                 TabQueueHelper.processTabQueuePromptResponse(resultCode, this);
                 break;
 
+            case ACTIVITY_REQUEST_FIRST_READERVIEW_BOOKMARK:
+                if (resultCode == ACTIVITY_RESULT_FIRST_READERVIEW_BOOKMARKS_GOTO_BOOKMARKS) {
+                    openUrlAndStopEditing("about:home?panel=" + HomeConfig.getIdForBuiltinPanelType(PanelType.BOOKMARKS));
+                } else if (resultCode == ACTIVITY_RESULT_FIRST_READERVIEW_BOOKMARKS_IGNORE){
+                    showReaderModeBookmarkAddedSnackbar();
+                }
+                break;
+
             default:
                 super.onActivityResult(requestCode, resultCode, data);
         }
     }
 
     private void showFirstrunPager() {
         if (mFirstrunAnimationContainer == null) {
             final ViewStub firstrunPagerStub = (ViewStub) findViewById(R.id.firstrun_pager_stub);
--- a/mobile/android/base/java/org/mozilla/gecko/promotion/SimpleHelperUI.java
+++ b/mobile/android/base/java/org/mozilla/gecko/promotion/SimpleHelperUI.java
@@ -26,16 +26,19 @@ import org.mozilla.gecko.Telemetry;
 import org.mozilla.gecko.TelemetryContract;
 
 /**
  * Generic HelperUI (prompt) that can be populated with an image, title, message and action button.
  * See show() for usage. This is run as an Activity, results must be handled in the parent Activities
  * onActivityResult().
  */
 public class SimpleHelperUI extends Locales.LocaleAwareActivity {
+    public static final String PREF_FIRST_RVBP_SHOWN = "first_reader_view_bookmark_prompt_shown";
+    public static final String FIRST_RVBP_SHOWN_TELEMETRYEXTRA = "first_readerview_bookmark_prompt";
+
     private View containerView;
 
     private boolean isAnimating;
 
     private String mTelemetryExtra;
 
     private static final String EXTRA_TELEMETRYEXTRA = "telemetryextra";
     private static final String EXTRA_TITLE = "title";
--- a/mobile/android/base/locales/en-US/android_strings.dtd
+++ b/mobile/android/base/locales/en-US/android_strings.dtd
@@ -769,8 +769,12 @@ just addresses the organization to follo
 <!ENTITY eol_notification_summary "Tap to learn more">
 
 <!-- LOCALIZATION NOTE (whatsnew_notification_title, whatsnew_notification_summary): These strings
      are used for a system notification that's shown to users after the app updates. -->
 <!ENTITY whatsnew_notification_title "&brandShortName; is up to date">
 <!ENTITY whatsnew_notification_summary "Find out what\'s new in this version">
 
 <!ENTITY promotion_add_to_homescreen "Add to home screen">
+
+<!ENTITY helper_first_offline_bookmark_title "Read offline">
+<!ENTITY helper_first_offline_bookmark_message "Find your Reader View items in Bookmarks, even offline.">
+<!ENTITY helper_first_offline_bookmark_button "Go to Bookmarks">
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b4783cbd5c56fca5024f1a1393e6838c8e4610f6
GIT binary patch
literal 2872
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
W&_q+R#8cD&0000<MNUMnLSTZ7`%(!2
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3b2579bde88e29a2d62f90a7cb49b06408d39d28
GIT binary patch
literal 3960
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
Sp(auQ0000<MNUMnLSTYwHjv5y
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6fe2e0004d1fa10c2efd7bfddd9fb817c5d9012e
GIT binary patch
literal 6046
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
be>Z=Af6cF35-oJ`IKZW*q@`G?U>*2B?aE!6
--- a/mobile/android/base/strings.xml.in
+++ b/mobile/android/base/strings.xml.in
@@ -601,9 +601,14 @@
   <string name="eol_notification_url">https://support.mozilla.org/1/mobile/&formatS1;/&formatS2;/&formatS3;/unsupported-version</string>
 
   <string name="whatsnew_notification_title">&whatsnew_notification_title;</string>
   <string name="whatsnew_notification_summary">&whatsnew_notification_summary;</string>
   <!-- https://support.mozilla.org/1/mobile/%VERSION%/%OS%/%LOCALE%/new-android -->
   <string name="whatsnew_notification_url">https://support.mozilla.org/1/mobile/&formatS1;/&formatS2;/&formatS3;/new-android</string>
 
   <string name="promotion_add_to_homescreen">&promotion_add_to_homescreen;</string>
+
+  <string name="helper_first_offline_bookmark_title">&helper_first_offline_bookmark_title;</string>
+  <string name="helper_first_offline_bookmark_message">&helper_first_offline_bookmark_message;</string>
+  <string name="helper_first_offline_bookmark_button">&helper_first_offline_bookmark_button;</string>
+
 </resources>