mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
Bug 1380850 - Track when Focus or Klar get installed; r=mcomella
Added a static broadcast receiver that will inform us as soon as possible of any installed packages. Because mma methods are static, if LeanPlum is enabled, the event will be tracked even if the app was not running when the new package was installed and as per LeanPlum's internal workings the event will be reported to the dashboard when the application resumes. MozReview-Commit-ID: AGNsQn7LuCz *** --HG-- extra : rebase_source : 3d40a9f85036c0495b110409bff86e56f8b7c465
This commit is contained in:
parent
8b7abe6617
commit
5f4a0e0b4c
@ -395,6 +395,15 @@
|
||||
android:name="org.mozilla.gecko.cleanup.FileCleanupService">
|
||||
</service>
|
||||
|
||||
<receiver
|
||||
android:name="org.mozilla.gecko.mma.PackageAddedReceiver"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.PACKAGE_ADDED"/>
|
||||
<data android:scheme="package"/>
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<receiver
|
||||
android:name="org.mozilla.gecko.PackageReplacedReceiver"
|
||||
android:exported="false">
|
||||
|
@ -44,23 +44,26 @@ public class MmaDelegate {
|
||||
public static final String INTERACT_WITH_SEARCH_URL_AREA = "E_Interact_With_Search_URL_Area";
|
||||
public static final String SCREENSHOT = "E_Screenshot";
|
||||
public static final String SAVED_LOGIN_AND_PASSWORD = "E_Saved_Login_And_Password";
|
||||
public static final String LAUNCH_BUT_NOT_DEFAULT_BROWSER = "E_Launch_But_Not_Default_Browser";
|
||||
public static final String LAUNCH_BROWSER = "E_Launch_Browser";
|
||||
public static final String RESUMED_FROM_BACKGROUND = "E_Resumed_From_Background";
|
||||
public static final String NEW_TAB = "E_Opened_New_Tab";
|
||||
public static final String DISMISS_ONBOARDING = "E_Dismiss_Onboarding";
|
||||
public static final String CHANGED_DEFAULT_TO_FENNEC = "E_Changed_Default_To_Fennec";
|
||||
|
||||
public static final String USER_ATT_FOCUS_INSTALLED = "Focus Installed";
|
||||
public static final String USER_ATT_KLAR_INSTALLED = "Klar Installed";
|
||||
public static final String USER_ATT_POCKET_INSTALLED = "Pocket Installed";
|
||||
public static final String USER_ATT_DEFAULT_BROWSER = "Default Browser";
|
||||
public static final String USER_ATT_SIGNED_IN = "Signed In Sync";
|
||||
public static final String USER_ATT_POCKET_TOP_SITES = "Pocket in Top Sites";
|
||||
private static final String LAUNCH_BUT_NOT_DEFAULT_BROWSER = "E_Launch_But_Not_Default_Browser";
|
||||
private static final String LAUNCH_BROWSER = "E_Launch_Browser";
|
||||
private static final String CHANGED_DEFAULT_TO_FENNEC = "E_Changed_Default_To_Fennec";
|
||||
private static final String INSTALLED_FOCUS = "E_Just_Installed_Focus";
|
||||
private static final String INSTALLED_KLAR = "E_Just_Installed_Klar";
|
||||
|
||||
public static final String PACKAGE_NAME_KLAR = "org.mozilla.klar";
|
||||
public static final String PACKAGE_NAME_FOCUS = "org.mozilla.focus";
|
||||
public static final String PACKAGE_NAME_POCKET = "com.ideashower.readitlater.pro";
|
||||
private static final String USER_ATT_FOCUS_INSTALLED = "Focus Installed";
|
||||
private static final String USER_ATT_KLAR_INSTALLED = "Klar Installed";
|
||||
private static final String USER_ATT_POCKET_INSTALLED = "Pocket Installed";
|
||||
private static final String USER_ATT_DEFAULT_BROWSER = "Default Browser";
|
||||
private static final String USER_ATT_SIGNED_IN = "Signed In Sync";
|
||||
private static final String USER_ATT_POCKET_TOP_SITES = "Pocket in Top Sites";
|
||||
|
||||
private static final String PACKAGE_NAME_KLAR = "org.mozilla.klar";
|
||||
private static final String PACKAGE_NAME_FOCUS = "org.mozilla.focus";
|
||||
private static final String PACKAGE_NAME_POCKET = "com.ideashower.readitlater.pro";
|
||||
|
||||
private static final String TAG = "MmaDelegate";
|
||||
|
||||
@ -131,6 +134,20 @@ public class MmaDelegate {
|
||||
sharedPreferences.edit().putBoolean(KEY_ANDROID_PREF_BOOLEAN_FENNEC_IS_DEFAULT, isFennecDefaultBrowser).apply();
|
||||
}
|
||||
|
||||
static void trackJustInstalledPackage(@NonNull final Context context, @NonNull final String packageName,
|
||||
final boolean firstTimeInstall) {
|
||||
if (!isMmaEnabled(context)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (packageName.equals(PACKAGE_NAME_FOCUS) && firstTimeInstall) {
|
||||
// Already know Mma is enabled, safe to call directly and avoid a superfluous check
|
||||
mmaHelper.event(INSTALLED_FOCUS);
|
||||
} else if (packageName.equals(PACKAGE_NAME_KLAR) && firstTimeInstall) {
|
||||
mmaHelper.event(INSTALLED_KLAR);
|
||||
}
|
||||
}
|
||||
|
||||
public static void track(String event) {
|
||||
if (applicationContext != null && isMmaEnabled(applicationContext)) {
|
||||
mmaHelper.event(event);
|
||||
@ -162,7 +179,6 @@ public class MmaDelegate {
|
||||
return inExperiment && healthReport && !isInPrivateBrowsing;
|
||||
}
|
||||
|
||||
|
||||
public 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);
|
||||
|
@ -0,0 +1,43 @@
|
||||
package org.mozilla.gecko.mma;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.Uri;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
|
||||
/**
|
||||
* Used to inform as soon as possible of any applications being installed.
|
||||
*/
|
||||
public class PackageAddedReceiver extends BroadcastReceiver {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
if (intent.getAction() != null && intent.getData() != null) {
|
||||
final String updatedPackage = getInstalledPackageName(intent.getData());
|
||||
try {
|
||||
MmaDelegate.trackJustInstalledPackage(context, updatedPackage,
|
||||
getIfFirstTimeInstall(context, updatedPackage));
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
/* Nothing to do */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Our intent filter uses the "package" scheme
|
||||
// So the intent we receive would be in the form package:org.mozilla.klar
|
||||
private String getInstalledPackageName(@NonNull Uri intentData) {
|
||||
return intentData.getSchemeSpecificPart();
|
||||
}
|
||||
|
||||
private boolean getIfFirstTimeInstall(@NonNull Context context, @NonNull final String packageName)
|
||||
throws PackageManager.NameNotFoundException {
|
||||
|
||||
// The situation of an invalid package name(very unlikely) will be handled by the caller
|
||||
final PackageInfo packageInfo = context.getPackageManager().getPackageInfo(packageName, 0);
|
||||
return packageInfo.firstInstallTime == packageInfo.lastUpdateTime;
|
||||
}
|
||||
}
|
@ -164,6 +164,14 @@ List of current Events related data that is sent:
|
||||
{
|
||||
"event" : "E_Changed_Default_To_Fennec"
|
||||
}
|
||||
* User installed the Focus app
|
||||
{
|
||||
"event" : "E_Just_Installed_Focus"
|
||||
}
|
||||
* User installed the Klar app
|
||||
{
|
||||
"event" : "E_Just_Installed_Klar"
|
||||
}
|
||||
|
||||
Deep Links:
|
||||
Deep links are actions that can point Fennec to open certain pages or load features such as `show bookmark list` or
|
||||
|
Loading…
Reference in New Issue
Block a user