Commit a796d935 authored by pkotwicz's avatar pkotwicz Committed by Commit bot

Pass ShortcutHelper.EXTRA_SOURCE when WebAPK is launched from notification

This enables us to keep track of how often WebAPKs are launched from a
notification vs from the home screen.

BUG=623216

Review-Url: https://codereview.chromium.org/2094113002
Cr-Commit-Position: refs/heads/master@{#403307}
parent 2839c842
...@@ -21,7 +21,7 @@ import org.chromium.content_public.browser.LoadUrlParams; ...@@ -21,7 +21,7 @@ import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.content_public.common.Referrer; import org.chromium.content_public.common.Referrer;
import org.chromium.content_public.common.ResourceRequestBody; import org.chromium.content_public.common.ResourceRequestBody;
import org.chromium.ui.base.PageTransition; import org.chromium.ui.base.PageTransition;
import org.chromium.webapk.lib.client.NavigationClient; import org.chromium.webapk.lib.client.WebApkNavigationClient;
import org.chromium.webapk.lib.client.WebApkValidator; import org.chromium.webapk.lib.client.WebApkValidator;
/** /**
...@@ -50,8 +50,13 @@ public class ChromeServiceTabLauncher extends ServiceTabLauncher { ...@@ -50,8 +50,13 @@ public class ChromeServiceTabLauncher extends ServiceTabLauncher {
if (CommandLine.getInstance().hasSwitch(ChromeSwitches.ENABLE_WEBAPK)) { if (CommandLine.getInstance().hasSwitch(ChromeSwitches.ENABLE_WEBAPK)) {
String webApkPackageName = WebApkValidator.queryWebApkPackage(context, url); String webApkPackageName = WebApkValidator.queryWebApkPackage(context, url);
if (webApkPackageName != null) { if (webApkPackageName != null) {
NavigationClient.launchWebApk(context, webApkPackageName, url); Intent intent =
return; WebApkNavigationClient.createLaunchWebApkIntent(webApkPackageName, url);
if (intent != null) {
intent.putExtra(ShortcutHelper.EXTRA_SOURCE, ShortcutSource.NOTIFICATION);
context.startActivity(intent);
return;
}
} }
} }
......
...@@ -8,7 +8,7 @@ import("//chrome/android/webapk/libs/runtime_library_version.gni") ...@@ -8,7 +8,7 @@ import("//chrome/android/webapk/libs/runtime_library_version.gni")
android_library("client_java") { android_library("client_java") {
java_files = [ java_files = [
"src/org/chromium/webapk/lib/client/DexOptimizer.java", "src/org/chromium/webapk/lib/client/DexOptimizer.java",
"src/org/chromium/webapk/lib/client/NavigationClient.java", "src/org/chromium/webapk/lib/client/WebApkNavigationClient.java",
"src/org/chromium/webapk/lib/client/WebApkServiceConnectionManager.java", "src/org/chromium/webapk/lib/client/WebApkServiceConnectionManager.java",
"src/org/chromium/webapk/lib/client/WebApkValidator.java", "src/org/chromium/webapk/lib/client/WebApkValidator.java",
] ]
......
...@@ -4,29 +4,28 @@ ...@@ -4,29 +4,28 @@
package org.chromium.webapk.lib.client; package org.chromium.webapk.lib.client;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
/** /**
* NavigationClient provides an API to launch a WebAPK. * WebApkNavigationClient provides an API to get an intent to launch a WebAPK.
*/ */
public class NavigationClient { public class WebApkNavigationClient {
/** /**
* Launches a WebAPK. * Creates intent to launch a WebAPK.
* @param context Application context.
* @param webApkPackageName Package name of the WebAPK to launch. * @param webApkPackageName Package name of the WebAPK to launch.
* @param url URL to navigate WebAPK to. * @param url URL to navigate WebAPK to.
* @return The intent.
*/ */
public static void launchWebApk(Context context, String webApkPackageName, String url) { public static Intent createLaunchWebApkIntent(String webApkPackageName, String url) {
Intent intent; Intent intent;
try { try {
intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME); intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
} catch (Exception e) { } catch (Exception e) {
return; return null;
} }
intent.setPackage(webApkPackageName); intent.setPackage(webApkPackageName);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent); return intent;
} }
} }
...@@ -32,6 +32,7 @@ public class MainActivity extends Activity { ...@@ -32,6 +32,7 @@ public class MainActivity extends Activity {
private static final String EXTRA_SHORT_NAME = "org.chromium.chrome.browser.webapp_short_name"; private static final String EXTRA_SHORT_NAME = "org.chromium.chrome.browser.webapp_short_name";
private static final String EXTRA_NAME = "org.chromium.chrome.browser.webapp_name"; private static final String EXTRA_NAME = "org.chromium.chrome.browser.webapp_name";
private static final String EXTRA_URL = "org.chromium.chrome.browser.webapp_url"; private static final String EXTRA_URL = "org.chromium.chrome.browser.webapp_url";
private static final String EXTRA_SOURCE = "org.chromium.chrome.browser.webapp_source";
private static final String EXTRA_THEME_COLOR = "org.chromium.chrome.browser.theme_color"; private static final String EXTRA_THEME_COLOR = "org.chromium.chrome.browser.theme_color";
private static final String EXTRA_BACKGROUND_COLOR = private static final String EXTRA_BACKGROUND_COLOR =
"org.chromium.chrome.browser.background_color"; "org.chromium.chrome.browser.background_color";
...@@ -62,11 +63,13 @@ public class MainActivity extends Activity { ...@@ -62,11 +63,13 @@ public class MainActivity extends Activity {
Bundle bundle = appInfo.metaData; Bundle bundle = appInfo.metaData;
String url = bundle.getString(META_DATA_START_URL); String url = bundle.getString(META_DATA_START_URL);
String overrideUrl = getIntent().getDataString(); Intent intent = getIntent();
String overrideUrl = intent.getDataString();
// TODO(pkotwicz): Use same logic as {@code IntentHandler#shouldIgnoreIntent()} // TODO(pkotwicz): Use same logic as {@code IntentHandler#shouldIgnoreIntent()}
if (overrideUrl != null && overrideUrl.startsWith("https:")) { if (overrideUrl != null && overrideUrl.startsWith("https:")) {
url = overrideUrl; url = overrideUrl;
} }
int source = intent.getIntExtra(EXTRA_SOURCE, 0);
String webappId = WebApkConstants.WEBAPK_ID_PREFIX + packageName; String webappId = WebApkConstants.WEBAPK_ID_PREFIX + packageName;
String runtimeHost = bundle.getString(META_DATA_RUNTIME_HOST); String runtimeHost = bundle.getString(META_DATA_RUNTIME_HOST);
...@@ -97,6 +100,7 @@ public class MainActivity extends Activity { ...@@ -97,6 +100,7 @@ public class MainActivity extends Activity {
.putExtra(EXTRA_NAME, name) .putExtra(EXTRA_NAME, name)
.putExtra(EXTRA_URL, url) .putExtra(EXTRA_URL, url)
.putExtra(EXTRA_ICON, encodedIcon) .putExtra(EXTRA_ICON, encodedIcon)
.putExtra(EXTRA_SOURCE, source)
.putExtra(EXTRA_THEME_COLOR, themeColor) .putExtra(EXTRA_THEME_COLOR, themeColor)
.putExtra(EXTRA_BACKGROUND_COLOR, backgroundColor) .putExtra(EXTRA_BACKGROUND_COLOR, backgroundColor)
.putExtra(EXTRA_IS_ICON_GENERATED, isIconGenerated) .putExtra(EXTRA_IS_ICON_GENERATED, isIconGenerated)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment