| Index: chrome/android/java_staging/src/org/chromium/chrome/browser/webapps/WebappInfo.java
|
| diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/webapps/WebappInfo.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/webapps/WebappInfo.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..68b90cdbcda8df5ea9e17ac356a9305d7d6ce0eb
|
| --- /dev/null
|
| +++ b/chrome/android/java_staging/src/org/chromium/chrome/browser/webapps/WebappInfo.java
|
| @@ -0,0 +1,147 @@
|
| +// 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.chrome.browser.webapps;
|
| +
|
| +import android.content.Intent;
|
| +import android.graphics.Bitmap;
|
| +import android.graphics.BitmapFactory;
|
| +import android.net.Uri;
|
| +import android.os.Bundle;
|
| +import android.text.TextUtils;
|
| +import android.util.Base64;
|
| +import android.util.Log;
|
| +
|
| +import org.chromium.chrome.browser.ShortcutHelper;
|
| +import org.chromium.content_public.common.ScreenOrientationValues;
|
| +
|
| +import java.io.ByteArrayOutputStream;
|
| +
|
| +/**
|
| + * Stores info about a web app.
|
| + */
|
| +public class WebappInfo {
|
| + private boolean mIsInitialized;
|
| + private String mId;
|
| + private Bitmap mIcon;
|
| + private Uri mUri;
|
| + private String mTitle;
|
| + private int mOrientation;
|
| +
|
| + public static WebappInfo createEmpty() {
|
| + return new WebappInfo();
|
| + }
|
| +
|
| + /**
|
| + * Construct a WebappInfo.
|
| + * @param intent Intent containing info about the app.
|
| + */
|
| + public static WebappInfo create(Intent intent) {
|
| + String id = intent.getStringExtra(ShortcutHelper.EXTRA_ID);
|
| + String icon = intent.getStringExtra(ShortcutHelper.EXTRA_ICON);
|
| + String title = intent.getStringExtra(ShortcutHelper.EXTRA_TITLE);
|
| + String url = intent.getStringExtra(ShortcutHelper.EXTRA_URL);
|
| + int orientation = intent.getIntExtra(
|
| + ShortcutHelper.EXTRA_ORIENTATION, ScreenOrientationValues.DEFAULT);
|
| + return create(id, url, icon, title, orientation);
|
| + }
|
| +
|
| + /**
|
| + * Construct a WebappInfo.
|
| + * @param id ID for the webapp.
|
| + * @param url URL for the webapp.
|
| + * @param icon Icon to show for the webapp.
|
| + * @param title Title of the webapp.
|
| + * @param orientation Orientation of the webapp.
|
| + */
|
| + public static WebappInfo create(String id, String url, String icon, String title,
|
| + int orientation) {
|
| + if (id == null || url == null) {
|
| + Log.e("WebappInfo", "Data passed in was incomplete: " + id + ", " + url);
|
| + return null;
|
| + }
|
| +
|
| + Bitmap favicon = null;
|
| + if (!TextUtils.isEmpty(icon)) {
|
| + byte[] decoded = Base64.decode(icon, Base64.DEFAULT);
|
| + favicon = BitmapFactory.decodeByteArray(decoded, 0, decoded.length);
|
| + }
|
| +
|
| + Uri uri = Uri.parse(url);
|
| + return new WebappInfo(id, uri, favicon, title, orientation);
|
| + }
|
| +
|
| + private WebappInfo(String id, Uri uri, Bitmap icon, String title, int orientation) {
|
| + mIcon = icon;
|
| + mId = id;
|
| + mTitle = title;
|
| + mUri = uri;
|
| + mOrientation = orientation;
|
| + mIsInitialized = mUri != null;
|
| + }
|
| +
|
| + private WebappInfo() {
|
| + }
|
| +
|
| + /**
|
| + * Writes all of the data about the webapp into the given Bundle.
|
| + * @param outState Bundle to write data into.
|
| + */
|
| + void writeToBundle(Bundle outState) {
|
| + if (!mIsInitialized) return;
|
| +
|
| + outState.putString(ShortcutHelper.EXTRA_ID, mId);
|
| + outState.putString(ShortcutHelper.EXTRA_URL, mUri.toString());
|
| + outState.putParcelable(ShortcutHelper.EXTRA_ICON, mIcon);
|
| + outState.putString(ShortcutHelper.EXTRA_TITLE, mTitle);
|
| + outState.putInt(ShortcutHelper.EXTRA_ORIENTATION, mOrientation);
|
| + }
|
| +
|
| + /**
|
| + * Copies all the fields from the given WebappInfo into this instance.
|
| + * @param newInfo Information about the new webapp.
|
| + */
|
| + void copy(WebappInfo newInfo) {
|
| + mIsInitialized = newInfo.mIsInitialized;
|
| + mIcon = newInfo.mIcon;
|
| + mId = newInfo.mId;
|
| + mUri = newInfo.mUri;
|
| + mTitle = newInfo.mTitle;
|
| + mOrientation = newInfo.mOrientation;
|
| + }
|
| +
|
| + public boolean isInitialized() {
|
| + return mIsInitialized;
|
| + }
|
| +
|
| + public String id() {
|
| + return mId;
|
| + }
|
| +
|
| + public Uri uri() {
|
| + return mUri;
|
| + }
|
| +
|
| + public Bitmap icon() {
|
| + return mIcon;
|
| + }
|
| +
|
| + public String title() {
|
| + return mTitle;
|
| + }
|
| +
|
| + public int orientation() {
|
| + return mOrientation;
|
| + }
|
| +
|
| + // This is needed for clients that want to send the icon trough an intent.
|
| + public String getEncodedIcon() {
|
| + if (mIcon == null) return "";
|
| +
|
| + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
| + mIcon.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
|
| + byte[] byteArray = byteArrayOutputStream.toByteArray();
|
| + return Base64.encodeToString(byteArray, Base64.DEFAULT);
|
| + }
|
| +}
|
|
|