Index: chrome/android/java/src/org/chromium/chrome/browser/banners/AppData.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/banners/AppData.java b/chrome/android/java/src/org/chromium/chrome/browser/banners/AppData.java |
index 1934563b3bd355cf984d689ad7d4fade3b29ab96..28c94ddab71e3d2580ba577ce8d70178c7eec3eb 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/banners/AppData.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/banners/AppData.java |
@@ -5,7 +5,10 @@ |
package org.chromium.chrome.browser.banners; |
import android.app.PendingIntent; |
+import android.content.Context; |
+import android.content.pm.PackageManager; |
import android.graphics.drawable.Drawable; |
+import android.os.Looper; |
/** |
* Stores information about a particular app. |
@@ -32,6 +35,9 @@ public class AppData { |
private Drawable mIcon; |
private int mInstallState; |
+ // Task that watches the package manager for installation progress. |
+ private InstallerDelegate mInstallTask; |
+ |
/** |
* Creates a new AppData for the given page and package. |
* @param siteUrl URL for the site requesting the banner. |
@@ -44,7 +50,24 @@ public class AppData { |
} |
/** |
- * Returns the title to display for the app. |
+ * Returns the URL of the website requesting the banner. |
+ * @return The URL of the website. |
+ */ |
+ String siteUrl() { |
+ return mSiteUrl; |
+ } |
+ |
+ /** |
+ * Returns the package name of the app. |
+ * @return The String containing the package name. |
+ */ |
+ public String packageName() { |
+ return mPackageName; |
+ } |
+ |
+ /** |
+ * Returns the title to display for the app in the banner. |
+ * @return The String to display. |
*/ |
String title() { |
return mTitle; |
@@ -52,6 +75,7 @@ public class AppData { |
/** |
* Returns the URL where the app icon can be retrieved from. |
+ * @return The URL to grab the icon from. |
*/ |
String imageUrl() { |
return mImageUrl; |
@@ -108,6 +132,14 @@ public class AppData { |
} |
/** |
+ * Returns the task tracking the installation. |
+ * @return The InstallerDelegate that is tracking the app's installation. |
+ */ |
+ InstallerDelegate installTask() { |
+ return mInstallTask; |
+ } |
+ |
+ /** |
* Stores all of the data about the given app after it's been retrieved. |
* @param title App title. |
* @param imageUrl URL where the icon is located. |
@@ -116,8 +148,8 @@ public class AppData { |
* @param detailsIntent Intent to fire to launch the details page for the app |
* @param installIntent Intent to fire to trigger the purchase/install process. |
*/ |
- void setPackageInfo(String title, String imageUrl, float rating, String installButtonText, |
- PendingIntent detailsIntent, PendingIntent installIntent) { |
+ public void setPackageInfo(String title, String imageUrl, float rating, |
+ String installButtonText, PendingIntent detailsIntent, PendingIntent installIntent) { |
mTitle = title; |
mImageUrl = imageUrl; |
mRating = rating; |
@@ -133,4 +165,34 @@ public class AppData { |
void setIcon(Drawable icon) { |
mIcon = icon; |
} |
+ |
+ /** |
+ * Sets the install state. |
+ * @param installState Current state of the installation. |
+ */ |
+ void setInstallState(int installState) { |
+ mInstallState = installState; |
+ } |
+ |
+ /** |
+ * Begins tracking the installation of the package. |
+ * @param context Context to grab the PackageManager from. |
+ * @param observer Observer to notify when the app has finished installing. |
+ */ |
+ void beginTrackingInstallation(Context context, InstallerDelegate.Observer observer) { |
+ PackageManager pm = context.getPackageManager(); |
+ mInstallTask = new InstallerDelegate(Looper.getMainLooper(), pm, observer, mPackageName); |
+ mInstallTask.start(); |
+ mInstallState = AppData.INSTALL_STATE_INSTALLING; |
+ } |
+ |
+ /** |
+ * Clean up any pending operations. |
+ */ |
+ void destroy() { |
+ if (mInstallTask != null) { |
+ mInstallTask.cancel(); |
+ mInstallTask = null; |
+ } |
+ } |
} |