OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser.webapps; | 5 package org.chromium.chrome.browser.webapps; |
6 | 6 |
7 import android.content.Context; | 7 import android.content.Context; |
8 import android.content.Intent; | 8 import android.content.Intent; |
9 import android.content.pm.PackageManager; | 9 import android.content.pm.PackageManager; |
10 import android.net.Uri; | 10 import android.net.Uri; |
11 import android.os.Build; | 11 import android.os.Build; |
12 import android.os.Looper; | 12 import android.os.Looper; |
13 | 13 |
14 import org.chromium.base.ApplicationState; | 14 import org.chromium.base.ApplicationState; |
15 import org.chromium.base.ApplicationStatus; | 15 import org.chromium.base.ApplicationStatus; |
16 import org.chromium.base.Callback; | 16 import org.chromium.base.Callback; |
17 import org.chromium.base.ContentUriUtils; | 17 import org.chromium.base.ContentUriUtils; |
18 import org.chromium.base.ContextUtils; | 18 import org.chromium.base.ContextUtils; |
19 import org.chromium.base.annotations.CalledByNative; | 19 import org.chromium.base.annotations.CalledByNative; |
20 import org.chromium.chrome.browser.AppHooks; | 20 import org.chromium.chrome.browser.AppHooks; |
21 import org.chromium.chrome.browser.ShortcutHelper; | 21 import org.chromium.chrome.browser.ShortcutHelper; |
22 import org.chromium.chrome.browser.banners.InstallerDelegate; | 22 import org.chromium.chrome.browser.banners.InstallerDelegate; |
| 23 import org.chromium.chrome.browser.metrics.WebApkUma; |
23 import org.chromium.chrome.browser.util.IntentUtils; | 24 import org.chromium.chrome.browser.util.IntentUtils; |
24 | 25 |
25 import java.io.File; | 26 import java.io.File; |
26 | 27 |
27 /** | 28 /** |
28 * Java counterpart to webapk_installer.h | 29 * Java counterpart to webapk_installer.h |
29 * Contains functionality to install / update WebAPKs. | 30 * Contains functionality to install / update WebAPKs. |
30 * This Java object is created by and owned by the native WebApkInstaller. | 31 * This Java object is created by and owned by the native WebApkInstaller. |
31 */ | 32 */ |
32 public class WebApkInstaller { | 33 public class WebApkInstaller { |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 * Installs a WebAPK from Google Play and monitors the installation. | 101 * Installs a WebAPK from Google Play and monitors the installation. |
101 * @param packageName The package name of the WebAPK to install. | 102 * @param packageName The package name of the WebAPK to install. |
102 * @param version The version of WebAPK to install. | 103 * @param version The version of WebAPK to install. |
103 * @param title The title of the WebAPK to display during installation. | 104 * @param title The title of the WebAPK to display during installation. |
104 * @param token The token from WebAPK Server. | 105 * @param token The token from WebAPK Server. |
105 * @param url The start URL of the WebAPK to install. | 106 * @param url The start URL of the WebAPK to install. |
106 */ | 107 */ |
107 @CalledByNative | 108 @CalledByNative |
108 private void installWebApkFromGooglePlayAsync( | 109 private void installWebApkFromGooglePlayAsync( |
109 String packageName, int version, String title, String token, String
url) { | 110 String packageName, int version, String title, String token, String
url) { |
110 if (mGooglePlayWebApkInstallDelegate == null) { | |
111 notify(WebApkInstallResult.FAILURE); | |
112 return; | |
113 } | |
114 | |
115 // Check whether the WebAPK package is already installed. The WebAPK may
have been installed | 111 // Check whether the WebAPK package is already installed. The WebAPK may
have been installed |
116 // by another Chrome version (e.g. Chrome Dev). We have to do this check
because the Play | 112 // by another Chrome version (e.g. Chrome Dev). We have to do this check
because the Play |
117 // install API fails silently if the package is already installed. | 113 // install API fails silently if the package is already installed. |
118 if (isWebApkInstalled(packageName)) { | 114 if (isWebApkInstalled(packageName)) { |
119 notify(WebApkInstallResult.SUCCESS); | 115 notify(WebApkInstallResult.SUCCESS); |
120 return; | 116 return; |
121 } | 117 } |
122 | 118 |
| 119 if (mGooglePlayWebApkInstallDelegate == null) { |
| 120 notify(WebApkInstallResult.FAILURE); |
| 121 WebApkUma.recordGooglePlayInstallResult( |
| 122 WebApkUma.GOOGLE_PLAY_INSTALL_FAILED_NO_DELEGATE); |
| 123 return; |
| 124 } |
| 125 |
123 Callback<Integer> callback = new Callback<Integer>() { | 126 Callback<Integer> callback = new Callback<Integer>() { |
124 @Override | 127 @Override |
125 public void onResult(Integer result) { | 128 public void onResult(Integer result) { |
126 WebApkInstaller.this.notify(result); | 129 WebApkInstaller.this.notify(result); |
127 } | 130 } |
128 }; | 131 }; |
129 mGooglePlayWebApkInstallDelegate.installAsync( | 132 mGooglePlayWebApkInstallDelegate.installAsync( |
130 packageName, version, title, token, url, callback); | 133 packageName, version, title, token, url, callback); |
131 } | 134 } |
132 | 135 |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 } | 248 } |
246 | 249 |
247 private boolean isWebApkInstalled(String packageName) { | 250 private boolean isWebApkInstalled(String packageName) { |
248 PackageManager packageManager = ContextUtils.getApplicationContext().get
PackageManager(); | 251 PackageManager packageManager = ContextUtils.getApplicationContext().get
PackageManager(); |
249 return InstallerDelegate.isInstalled(packageManager, packageName); | 252 return InstallerDelegate.isInstalled(packageManager, packageName); |
250 } | 253 } |
251 | 254 |
252 private native void nativeOnInstallFinished( | 255 private native void nativeOnInstallFinished( |
253 long nativeWebApkInstaller, @WebApkInstallResult.WebApkInstallResult
Enum int result); | 256 long nativeWebApkInstaller, @WebApkInstallResult.WebApkInstallResult
Enum int result); |
254 } | 257 } |
OLD | NEW |