Bug 1396556 - Handle Push Notification when app is not running. r?maliu draft
authorNevin Chen <cnevinchen@gmail.com>
Mon, 04 Sep 2017 19:15:32 +0800
changeset 658536 a68a2f24195d877f5b5c2315910bed951cacad3a
parent 658422 2873c5ea2337f2c6347b4c5e5c1d32a22399559c
child 729699 cb3823c2502f13d74b6bc75fdc687ade392e70aa
push id77816
push userbmo:cnevinchen@gmail.com
push dateMon, 04 Sep 2017 11:16:17 +0000
reviewersmaliu
bugs1396556
milestone57.0a1
Bug 1396556 - Handle Push Notification when app is not running. r?maliu MozReview-Commit-ID: H2X18VI0cnW
mobile/android/base/java/org/mozilla/gecko/mma/MmaDelegate.java
--- a/mobile/android/base/java/org/mozilla/gecko/mma/MmaDelegate.java
+++ b/mobile/android/base/java/org/mozilla/gecko/mma/MmaDelegate.java
@@ -87,17 +87,16 @@ public class MmaDelegate {
                         // isGeckoPrefOn needs to be set before mmaHelper.init() cause we need it for isMmaEnabled()
                         isGeckoPrefOn = true;
 
                         // Since user attributes are gathered in Fennec, not in MMA implementation,
                         // we gather the information here then pass to mmaHelper.init()
                         // Note that generateUserAttribute always return a non null HashMap.
                         Map<String, Object> attributes = gatherUserAttributes(activity);
                         mmaHelper.setGcmSenderId(PushManager.getSenderIds());
-                        mmaHelper.setCustomIcon(R.drawable.ic_status_logo);
                         mmaHelper.init(activity, attributes);
 
                         if (!isDefaultBrowser(activity)) {
                             mmaHelper.event(MmaDelegate.LAUNCH_BUT_NOT_DEFAULT_BROWSER);
                         }
                         mmaHelper.event(MmaDelegate.LAUNCH_BROWSER);
                     } else {
                         isGeckoPrefOn = false;
@@ -120,58 +119,59 @@ public class MmaDelegate {
         attributes.put(USER_ATT_DEFAULT_BROWSER, isDefaultBrowser(context));
         attributes.put(USER_ATT_SIGNED_IN, FirefoxAccounts.firefoxAccountsExist(context));
 
         return attributes;
     }
 
 
     public static void track(String event) {
-        if (isMmaEnabled()) {
+        if (applicationContext != null && isMmaEnabled(applicationContext.get())) {
             mmaHelper.event(event);
         }
     }
 
     public static void track(String event, long value) {
-        if (isMmaEnabled()) {
+        if (applicationContext != null && isMmaEnabled(applicationContext.get())) {
             mmaHelper.event(event, value);
         }
     }
 
-    private static boolean isMmaEnabled() {
-        if (applicationContext == null) {
-            return false;
-        }
+    private static boolean isMmaEnabled(Context context) {
 
-        final Context context = applicationContext.get();
         if (context == null) {
             return false;
         }
-
         final boolean healthReport = GeckoPreferences.getBooleanPref(context, GeckoPreferences.PREFS_HEALTHREPORT_UPLOAD_ENABLED, true);
         final boolean inExperiment = SwitchBoard.isInExperiment(context, Experiments.LEANPLUM);
         final Tab selectedTab = Tabs.getInstance().getSelectedTab();
-        // if selected tab is null or private, mma should be disabled.
-        final boolean isInPrivateBrowsing = selectedTab == null || selectedTab.isPrivate();
-        return inExperiment && healthReport && isGeckoPrefOn && !isInPrivateBrowsing;
+
+        // if selected tab is private, mma should be disabled.
+        final boolean isInPrivateBrowsing = selectedTab != null && selectedTab.isPrivate();
+
+        return (inExperiment || isGeckoPrefOn) && healthReport && !isInPrivateBrowsing;
     }
 
 
-    public static boolean isDefaultBrowser(Context context) {
+    private static boolean isDefaultBrowser(Context context) {
         final Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.mozilla.org"));
         final ResolveInfo info = context.getPackageManager().resolveActivity(viewIntent, PackageManager.MATCH_DEFAULT_ONLY);
         if (info == null) {
             // No default is set
             return false;
         }
-
         final String packageName = info.activityInfo.packageName;
         return (TextUtils.equals(packageName, context.getPackageName()));
     }
 
     public static boolean handleGcmMessage(@NonNull Context context, String from, @NonNull Bundle bundle) {
-        return isMmaEnabled() && mmaHelper.handleGcmMessage(context, from, bundle);
+        if (isMmaEnabled(context)) {
+            mmaHelper.setCustomIcon(R.drawable.ic_status_logo);
+            return mmaHelper.handleGcmMessage(context, from, bundle);
+        } else {
+            return false;
+        }
     }
 
     public static String getMmaSenderId() {
         return mmaHelper.getMmaSenderId();
     }
 }