Bug 1396556 - Handle Push Notification when app is not running. r?maliu
MozReview-Commit-ID: H2X18VI0cnW
--- 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();
}
}