Index: chrome/android/webapk/libs/runtime_library/src/org/chromium/webapk/lib/runtime_library/HostBrowserLauncher.java |
diff --git a/chrome/android/webapk/libs/runtime_library/src/org/chromium/webapk/lib/runtime_library/HostBrowserLauncher.java b/chrome/android/webapk/libs/runtime_library/src/org/chromium/webapk/lib/runtime_library/HostBrowserLauncher.java |
deleted file mode 100644 |
index eeec4fa26798cdfaa3d119e9bc6dda6e8b46a55c..0000000000000000000000000000000000000000 |
--- a/chrome/android/webapk/libs/runtime_library/src/org/chromium/webapk/lib/runtime_library/HostBrowserLauncher.java |
+++ /dev/null |
@@ -1,146 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-package org.chromium.webapk.lib.runtime_library; |
- |
-import android.content.ActivityNotFoundException; |
-import android.content.ComponentName; |
-import android.content.Context; |
-import android.content.Intent; |
-import android.content.pm.ApplicationInfo; |
-import android.content.pm.PackageManager; |
-import android.content.pm.PackageManager.NameNotFoundException; |
-import android.graphics.Bitmap; |
-import android.graphics.BitmapFactory; |
-import android.os.Bundle; |
-import android.text.TextUtils; |
-import android.util.Base64; |
-import android.util.Log; |
- |
-import org.chromium.webapk.lib.common.WebApkConstants; |
-import org.chromium.webapk.lib.common.WebApkMetaDataKeys; |
- |
-import java.io.ByteArrayOutputStream; |
- |
-/** |
- * Launches Chrome in WebAPK mode. |
- */ |
-public class HostBrowserLauncher { |
- |
- // This value is equal to kInvalidOrMissingColor in the C++ content::Manifest struct. |
- private static final long MANIFEST_COLOR_INVALID_OR_MISSING = ((long) Integer.MAX_VALUE) + 1; |
- |
- /** |
- * Key for passing app icon id in Bundle to {@link #launch()}. |
- */ |
- private static final String KEY_APP_ICON_ID = "app_icon_id"; |
- |
- private static final String TAG = "cr_HostBrowserLauncher"; |
- |
- /** |
- * Launches Chrome in WebAPK mode. |
- * @param context Application context. |
- * @param intent Intent used to launch WebAPK. |
- * @param bundle Contains extra parameters. |
- */ |
- public void launch(Context context, Intent intent, Bundle bundle) { |
- int appIconId = bundle.getInt(KEY_APP_ICON_ID); |
- |
- String packageName = context.getPackageName(); |
- ApplicationInfo appInfo; |
- try { |
- appInfo = context.getPackageManager().getApplicationInfo( |
- packageName, PackageManager.GET_META_DATA); |
- } catch (NameNotFoundException e) { |
- return; |
- } |
- |
- Bundle metaBundle = appInfo.metaData; |
- String url = metaBundle.getString(WebApkMetaDataKeys.START_URL); |
- |
- String overrideUrl = intent.getDataString(); |
- // TODO(pkotwicz): Use same logic as {@code IntentHandler#shouldIgnoreIntent()} |
- if (overrideUrl != null && overrideUrl.startsWith("https:")) { |
- url = overrideUrl; |
- } |
- String scope = metaBundle.getString(WebApkMetaDataKeys.SCOPE); |
- int source = intent.getIntExtra(WebApkConstants.EXTRA_SOURCE, 0); |
- |
- String webappId = WebApkConstants.WEBAPK_ID_PREFIX + packageName; |
- String runtimeHost = metaBundle.getString(WebApkMetaDataKeys.RUNTIME_HOST); |
- String shortName = (String) context.getPackageManager().getApplicationLabel(appInfo); |
- // TODO(hanxi): find a neat solution to avoid encode/decode each time launch the |
- // activity. |
- Bitmap icon = BitmapFactory.decodeResource(context.getResources(), appIconId); |
- String encodedIcon = encodeBitmapAsString(icon); |
- String name = metaBundle.getString(WebApkMetaDataKeys.NAME); |
- String displayMode = metaBundle.getString(WebApkMetaDataKeys.DISPLAY_MODE); |
- String orientation = metaBundle.getString(WebApkMetaDataKeys.ORIENTATION); |
- long themeColor = getColorFromBundle(metaBundle, WebApkMetaDataKeys.THEME_COLOR); |
- long backgroundColor = getColorFromBundle(metaBundle, WebApkMetaDataKeys.BACKGROUND_COLOR); |
- boolean isIconGenerated = |
- TextUtils.isEmpty(metaBundle.getString(WebApkMetaDataKeys.ICON_URL)); |
- Log.v(TAG, "Url of the WebAPK: " + url); |
- Log.v(TAG, "WebappId of the WebAPK: " + webappId); |
- Log.v(TAG, "Name of the WebAPK:" + name); |
- Log.v(TAG, "Package name of the WebAPK:" + packageName); |
- |
- Intent newIntent = new Intent(); |
- newIntent.setComponent(new ComponentName( |
- runtimeHost, "org.chromium.chrome.browser.webapps.WebappLauncherActivity")); |
- |
- // Chrome expects the ShortcutHelper.EXTRA_DISPLAY_MODE and |
- // ShortcutHelper.EXTRA_ORIENTATION extras to be enum values. We send string extras for |
- // the display mode and orientation so have to use different keys. |
- newIntent.putExtra(WebApkConstants.EXTRA_ID, webappId) |
- .putExtra(WebApkConstants.EXTRA_SHORT_NAME, shortName) |
- .putExtra(WebApkConstants.EXTRA_NAME, name) |
- .putExtra(WebApkConstants.EXTRA_URL, url) |
- .putExtra(WebApkConstants.EXTRA_SCOPE, scope) |
- .putExtra(WebApkConstants.EXTRA_ICON, encodedIcon) |
- .putExtra(WebApkConstants.EXTRA_SOURCE, source) |
- .putExtra(WebApkConstants.EXTRA_THEME_COLOR, themeColor) |
- .putExtra(WebApkConstants.EXTRA_BACKGROUND_COLOR, backgroundColor) |
- .putExtra(WebApkConstants.EXTRA_IS_ICON_GENERATED, isIconGenerated) |
- .putExtra(WebApkConstants.EXTRA_WEBAPK_PACKAGE_NAME, packageName) |
- .putExtra(WebApkConstants.EXTRA_WEBAPK_DISPLAY_MODE, displayMode) |
- .putExtra(WebApkConstants.EXTRA_WEBAPK_ORIENTATION, orientation); |
- |
- try { |
- context.startActivity(newIntent); |
- } catch (ActivityNotFoundException e) { |
- e.printStackTrace(); |
- } |
- } |
- |
- /** |
- * Compresses a bitmap into a PNG and converts into a Base64 encoded string. |
- * The encoded string can be decoded using {@link decodeBitmapFromString(String)}. |
- * @param bitmap The Bitmap to compress and encode. |
- * @return the String encoding the Bitmap. |
- */ |
- private static String encodeBitmapAsString(Bitmap bitmap) { |
- if (bitmap == null) return ""; |
- ByteArrayOutputStream output = new ByteArrayOutputStream(); |
- bitmap.compress(Bitmap.CompressFormat.PNG, 100, output); |
- return Base64.encodeToString(output.toByteArray(), Base64.DEFAULT); |
- } |
- |
- /** |
- * Gets the long value of a color from a Bundle. The long should be terminated with 'L'. This |
- * function is more reliable than Bundle#getLong() which returns 0 if the value is below |
- * Float.MAX_VALUE. Returns {@link MANIFEST_COLOR_INVALID_OR_MISSING} when the color is missing. |
- */ |
- private static long getColorFromBundle(Bundle bundle, String key) { |
- String value = bundle.getString(key); |
- if (value == null || !value.endsWith("L")) { |
- return MANIFEST_COLOR_INVALID_OR_MISSING; |
- } |
- try { |
- return Long.parseLong(value.substring(0, value.length() - 1)); |
- } catch (NumberFormatException e) { |
- } |
- return 0; |
- } |
-} |