Adding referrer information when launching market intent

Bug: 72331091
Change-Id: I75ed764fd9964b58de97c287b8a26d24a0caa3fc
diff --git a/src/com/android/launcher3/InfoDropTarget.java b/src/com/android/launcher3/InfoDropTarget.java
index 289242f..e52fd76 100644
--- a/src/com/android/launcher3/InfoDropTarget.java
+++ b/src/com/android/launcher3/InfoDropTarget.java
@@ -70,7 +70,7 @@
             Rect sourceBounds, Bundle opts) {
         if (info instanceof PromiseAppInfo) {
             PromiseAppInfo promiseAppInfo = (PromiseAppInfo) info;
-            context.startActivity(promiseAppInfo.getMarketIntent());
+            context.startActivity(promiseAppInfo.getMarketIntent(context));
             return null;
         }
         ComponentName componentName = null;
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 32342b2..bd52968 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -1739,7 +1739,7 @@
 
     private void startMarketIntentForPackage(View v, String packageName) {
         ItemInfo item = (ItemInfo) v.getTag();
-        Intent intent = PackageManagerHelper.getMarketIntent(packageName);
+        Intent intent = new PackageManagerHelper(v.getContext()).getMarketIntent(packageName);
         startActivitySafely(v, intent, item);
     }
 
@@ -1804,7 +1804,7 @@
         Intent intent;
         if (item instanceof PromiseAppInfo) {
             PromiseAppInfo promiseAppInfo = (PromiseAppInfo) item;
-            intent = promiseAppInfo.getMarketIntent();
+            intent = promiseAppInfo.getMarketIntent(this);
         } else {
             intent = item.getIntent();
         }
diff --git a/src/com/android/launcher3/PromiseAppInfo.java b/src/com/android/launcher3/PromiseAppInfo.java
index 07515d0..ea9f752 100644
--- a/src/com/android/launcher3/PromiseAppInfo.java
+++ b/src/com/android/launcher3/PromiseAppInfo.java
@@ -16,6 +16,7 @@
 
 package com.android.launcher3;
 
+import android.content.Context;
 import android.content.Intent;
 import android.support.annotation.NonNull;
 
@@ -46,7 +47,7 @@
         return shortcut;
     }
 
-    public Intent getMarketIntent() {
-        return PackageManagerHelper.getMarketIntent(componentName.getPackageName());
+    public Intent getMarketIntent(Context context) {
+        return new PackageManagerHelper(context).getMarketIntent(componentName.getPackageName());
     }
 }
diff --git a/src/com/android/launcher3/popup/SystemShortcut.java b/src/com/android/launcher3/popup/SystemShortcut.java
index 83cbf59..0eb6c7f 100644
--- a/src/com/android/launcher3/popup/SystemShortcut.java
+++ b/src/com/android/launcher3/popup/SystemShortcut.java
@@ -115,8 +115,8 @@
 
         public View.OnClickListener createOnClickListener(Launcher launcher, ItemInfo itemInfo) {
             return view -> {
-                Intent intent = PackageManagerHelper.getMarketIntent(itemInfo
-                        .getTargetComponent().getPackageName());
+                Intent intent = new PackageManagerHelper(view.getContext()).getMarketIntent(
+                        itemInfo.getTargetComponent().getPackageName());
                 launcher.startActivitySafely(view, intent, itemInfo);
                 AbstractFloatingView.closeAllOpenViews(launcher);
             };
diff --git a/src/com/android/launcher3/util/PackageManagerHelper.java b/src/com/android/launcher3/util/PackageManagerHelper.java
index 13034dd..81df153 100644
--- a/src/com/android/launcher3/util/PackageManagerHelper.java
+++ b/src/com/android/launcher3/util/PackageManagerHelper.java
@@ -143,13 +143,15 @@
         return false;
     }
 
-    public static Intent getMarketIntent(String packageName) {
+    public Intent getMarketIntent(String packageName) {
         return new Intent(Intent.ACTION_VIEW)
                 .setData(new Uri.Builder()
                         .scheme("market")
                         .authority("details")
                         .appendQueryParameter("id", packageName)
-                        .build());
+                        .build())
+                .putExtra(Intent.EXTRA_REFERRER, new Uri.Builder().scheme("android-app")
+                        .authority(mContext.getPackageName()).build());
     }
 
     /**