Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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.Intent; | 7 import android.content.Intent; |
| 8 import android.graphics.Bitmap; | 8 import android.graphics.Bitmap; |
| 9 import android.net.Uri; | 9 import android.net.Uri; |
| 10 import android.util.Log; | 10 import android.util.Log; |
| 11 | 11 |
| 12 import org.chromium.chrome.browser.ShortcutHelper; | 12 import org.chromium.chrome.browser.ShortcutHelper; |
| 13 import org.chromium.chrome.browser.ShortcutSource; | 13 import org.chromium.chrome.browser.ShortcutSource; |
| 14 import org.chromium.chrome.browser.util.IntentUtils; | 14 import org.chromium.chrome.browser.util.IntentUtils; |
| 15 import org.chromium.content_public.common.ScreenOrientationValues; | 15 import org.chromium.content_public.common.ScreenOrientationValues; |
| 16 | 16 |
| 17 /** | 17 /** |
| 18 * Stores info about a web app. | 18 * Stores info about a web app. |
| 19 */ | 19 */ |
| 20 public class WebappInfo { | 20 public class WebappInfo { |
| 21 private boolean mIsInitialized; | 21 private boolean mIsInitialized; |
| 22 private String mId; | 22 private String mId; |
| 23 private String mEncodedIcon; | 23 private String mEncodedIcon; |
| 24 private Bitmap mDecodedIcon; | 24 private Bitmap mDecodedIcon; |
| 25 private Uri mUri; | 25 private Uri mUri; |
| 26 private Uri mScope; | |
|
pkotwicz
2016/05/18 23:00:17
I don't think that this member is needed at all. I
Xi Han
2016/05/19 18:31:49
Since WebAPK will have two scopes, the "launch sco
| |
| 26 private String mName; | 27 private String mName; |
| 27 private String mShortName; | 28 private String mShortName; |
| 28 private int mOrientation; | 29 private int mOrientation; |
| 29 private int mSource; | 30 private int mSource; |
| 30 private long mThemeColor; | 31 private long mThemeColor; |
| 31 private long mBackgroundColor; | 32 private long mBackgroundColor; |
| 32 private boolean mIsIconGenerated; | 33 private boolean mIsIconGenerated; |
| 34 private String mPackageName; | |
| 33 | 35 |
| 34 public static WebappInfo createEmpty() { | 36 public static WebappInfo createEmpty() { |
| 35 return new WebappInfo(); | 37 return new WebappInfo(); |
| 36 } | 38 } |
| 37 | 39 |
| 40 public static String scopeFromIntent(Intent intent) { | |
| 41 String scope = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXT RA_SCOPE); | |
| 42 return scope == null ? "" : scope; | |
| 43 } | |
| 44 | |
| 38 private static String titleFromIntent(Intent intent) { | 45 private static String titleFromIntent(Intent intent) { |
| 39 // The reference to title has been kept for reasons of backward compatib ility. For intents | 46 // The reference to title has been kept for reasons of backward compatib ility. For intents |
| 40 // and shortcuts which were created before we utilized the concept of na me and shortName, | 47 // and shortcuts which were created before we utilized the concept of na me and shortName, |
| 41 // we set the name and shortName to be the title. | 48 // we set the name and shortName to be the title. |
| 42 String title = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXT RA_TITLE); | 49 String title = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXT RA_TITLE); |
| 43 return title == null ? "" : title; | 50 return title == null ? "" : title; |
| 44 } | 51 } |
| 45 | 52 |
| 46 public static String nameFromIntent(Intent intent) { | 53 public static String nameFromIntent(Intent intent) { |
| 47 String name = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXTR A_NAME); | 54 String name = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXTR A_NAME); |
| 48 return name == null ? titleFromIntent(intent) : name; | 55 return name == null ? titleFromIntent(intent) : name; |
| 49 } | 56 } |
| 50 | 57 |
| 51 public static String shortNameFromIntent(Intent intent) { | 58 public static String shortNameFromIntent(Intent intent) { |
| 52 String shortName = IntentUtils.safeGetStringExtra(intent, ShortcutHelper .EXTRA_SHORT_NAME); | 59 String shortName = IntentUtils.safeGetStringExtra(intent, ShortcutHelper .EXTRA_SHORT_NAME); |
| 53 return shortName == null ? titleFromIntent(intent) : shortName; | 60 return shortName == null ? titleFromIntent(intent) : shortName; |
| 54 } | 61 } |
| 55 | 62 |
| 63 public static String packageNameFromIntent(Intent intent) { | |
| 64 String packageName = IntentUtils.safeGetStringExtra( | |
| 65 intent, ShortcutHelper.EXTRA_WEBAPK_PACKAGE_NAME); | |
| 66 return packageName == null ? "" : packageName; | |
| 67 } | |
| 68 | |
| 56 /** | 69 /** |
| 57 * Construct a WebappInfo. | 70 * Construct a WebappInfo. |
| 58 * @param intent Intent containing info about the app. | 71 * @param intent Intent containing info about the app. |
| 59 */ | 72 */ |
| 60 public static WebappInfo create(Intent intent) { | 73 public static WebappInfo create(Intent intent) { |
| 61 String id = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXTRA_ ID); | 74 String id = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXTRA_ ID); |
| 62 String icon = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXTR A_ICON); | 75 String icon = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXTR A_ICON); |
| 63 String url = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXTRA _URL); | 76 String url = IntentUtils.safeGetStringExtra(intent, ShortcutHelper.EXTRA _URL); |
| 77 String scope = scopeFromIntent(intent); | |
| 64 int orientation = IntentUtils.safeGetIntExtra(intent, | 78 int orientation = IntentUtils.safeGetIntExtra(intent, |
| 65 ShortcutHelper.EXTRA_ORIENTATION, ScreenOrientationValues.DEFAUL T); | 79 ShortcutHelper.EXTRA_ORIENTATION, ScreenOrientationValues.DEFAUL T); |
| 66 int source = IntentUtils.safeGetIntExtra(intent, | 80 int source = IntentUtils.safeGetIntExtra(intent, |
| 67 ShortcutHelper.EXTRA_SOURCE, ShortcutSource.UNKNOWN); | 81 ShortcutHelper.EXTRA_SOURCE, ShortcutSource.UNKNOWN); |
| 68 long themeColor = IntentUtils.safeGetLongExtra(intent, | 82 long themeColor = IntentUtils.safeGetLongExtra(intent, |
| 69 ShortcutHelper.EXTRA_THEME_COLOR, | 83 ShortcutHelper.EXTRA_THEME_COLOR, |
| 70 ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING); | 84 ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING); |
| 71 long backgroundColor = IntentUtils.safeGetLongExtra(intent, | 85 long backgroundColor = IntentUtils.safeGetLongExtra(intent, |
| 72 ShortcutHelper.EXTRA_BACKGROUND_COLOR, | 86 ShortcutHelper.EXTRA_BACKGROUND_COLOR, |
| 73 ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING); | 87 ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING); |
| 74 boolean isIconGenerated = IntentUtils.safeGetBooleanExtra(intent, | 88 boolean isIconGenerated = IntentUtils.safeGetBooleanExtra(intent, |
| 75 ShortcutHelper.EXTRA_IS_ICON_GENERATED, false); | 89 ShortcutHelper.EXTRA_IS_ICON_GENERATED, false); |
| 76 | 90 |
| 77 String name = nameFromIntent(intent); | 91 String name = nameFromIntent(intent); |
| 78 String shortName = shortNameFromIntent(intent); | 92 String shortName = shortNameFromIntent(intent); |
| 93 String packageName = packageNameFromIntent(intent); | |
| 79 | 94 |
| 80 return create(id, url, icon, name, shortName, orientation, source, | 95 return create(id, url, scope, icon, name, shortName, orientation, source , |
| 81 themeColor, backgroundColor, isIconGenerated); | 96 themeColor, backgroundColor, isIconGenerated, packageName); |
| 82 } | 97 } |
| 83 | 98 |
| 84 /** | 99 /** |
| 85 * Construct a WebappInfo. | 100 * Construct a WebappInfo. |
| 86 * @param id ID for the webapp. | 101 * @param id ID for the webapp. |
| 87 * @param url URL for the webapp. | 102 * @param url URL for the webapp. |
| 103 * @param scope Scope of URLs that the WebAPK can navigate to. | |
| 88 * @param icon Icon to show for the webapp. | 104 * @param icon Icon to show for the webapp. |
| 89 * @param name Name of the webapp. | 105 * @param name Name of the webapp. |
| 90 * @param shortName The short name of the webapp. | 106 * @param shortName The short name of the webapp. |
| 91 * @param orientation Orientation of the webapp. | 107 * @param orientation Orientation of the webapp. |
| 92 * @param source Source where the webapp was added from. | 108 * @param source Source where the webapp was added from. |
| 93 * @param themeColor The theme color of the webapp. | 109 * @param themeColor The theme color of the webapp. |
| 94 * @param isIconGenerated Whether the |icon| was generated by Chromium. | 110 * @param isIconGenerated Whether the |icon| was generated by Chromium. |
| 111 * @param packageName The package name of the WebAPK that intents to start t he WebApp | |
| 112 * activity. | |
| 95 */ | 113 */ |
| 96 public static WebappInfo create(String id, String url, String icon, String n ame, | 114 public static WebappInfo create(String id, String url, String scope, String icon, String name, |
| 97 String shortName, int orientation, int source, long themeColor, | 115 String shortName, int orientation, int source, long themeColor, long backgroundColor, |
| 98 long backgroundColor, boolean isIconGenerated) { | 116 boolean isIconGenerated, String packageName) { |
| 99 if (id == null || url == null) { | 117 if (id == null || url == null) { |
| 100 Log.e("WebappInfo", "Data passed in was incomplete: " + id + ", " + url); | 118 Log.e("WebappInfo", "Data passed in was incomplete: " + id + ", " + url); |
| 101 return null; | 119 return null; |
| 102 } | 120 } |
| 103 | 121 |
| 104 Uri uri = Uri.parse(url); | 122 Uri uri = Uri.parse(url); |
| 105 return new WebappInfo(id, uri, icon, name, shortName, orientation, sourc e, | 123 Uri scope_uri = scope == null ? Uri.parse("") : Uri.parse(scope); |
| 106 themeColor, backgroundColor, isIconGenerated); | 124 return new WebappInfo(id, uri, scope_uri, icon, name, shortName, orienta tion, source, |
| 125 themeColor, backgroundColor, isIconGenerated, packageName); | |
| 107 } | 126 } |
| 108 | 127 |
| 109 private WebappInfo(String id, Uri uri, String encodedIcon, String name, | 128 private WebappInfo(String id, Uri uri, Uri scope, String encodedIcon, String name, |
| 110 String shortName, int orientation, int source, long themeColor, | 129 String shortName, int orientation, int source, long themeColor, long backgroundColor, |
| 111 long backgroundColor, boolean isIconGenerated) { | 130 boolean isIconGenerated, String packageName) { |
| 112 mEncodedIcon = encodedIcon; | 131 mEncodedIcon = encodedIcon; |
| 113 mId = id; | 132 mId = id; |
| 114 mName = name; | 133 mName = name; |
| 115 mShortName = shortName; | 134 mShortName = shortName; |
| 116 mUri = uri; | 135 mUri = uri; |
| 136 mScope = scope; | |
| 117 mOrientation = orientation; | 137 mOrientation = orientation; |
| 118 mSource = source; | 138 mSource = source; |
| 119 mThemeColor = themeColor; | 139 mThemeColor = themeColor; |
| 120 mBackgroundColor = backgroundColor; | 140 mBackgroundColor = backgroundColor; |
| 121 mIsIconGenerated = isIconGenerated; | 141 mIsIconGenerated = isIconGenerated; |
| 122 mIsInitialized = mUri != null; | 142 mIsInitialized = mUri != null; |
| 143 mPackageName = packageName; | |
| 123 } | 144 } |
| 124 | 145 |
| 125 private WebappInfo() { | 146 private WebappInfo() { |
| 126 } | 147 } |
| 127 | 148 |
| 128 /** | |
| 129 * Copies all the fields from the given WebappInfo into this instance. | |
| 130 * @param newInfo Information about the new webapp. | |
| 131 */ | |
| 132 void copy(WebappInfo newInfo) { | |
| 133 mIsInitialized = newInfo.mIsInitialized; | |
| 134 mEncodedIcon = newInfo.mEncodedIcon; | |
| 135 mDecodedIcon = newInfo.mDecodedIcon; | |
| 136 mId = newInfo.mId; | |
| 137 mUri = newInfo.mUri; | |
| 138 mName = newInfo.mName; | |
| 139 mShortName = newInfo.mShortName; | |
| 140 mOrientation = newInfo.mOrientation; | |
| 141 mSource = newInfo.mSource; | |
| 142 mThemeColor = newInfo.mThemeColor; | |
| 143 mBackgroundColor = newInfo.mBackgroundColor; | |
| 144 mIsIconGenerated = newInfo.mIsIconGenerated; | |
| 145 } | |
| 146 | |
| 147 public boolean isInitialized() { | 149 public boolean isInitialized() { |
| 148 return mIsInitialized; | 150 return mIsInitialized; |
| 149 } | 151 } |
| 150 | 152 |
| 151 public String id() { | 153 public String id() { |
| 152 return mId; | 154 return mId; |
| 153 } | 155 } |
| 154 | 156 |
| 155 public Uri uri() { | 157 public Uri uri() { |
| 156 return mUri; | 158 return mUri; |
| 157 } | 159 } |
| 158 | 160 |
| 161 public Uri scope() { | |
| 162 return mScope; | |
| 163 } | |
| 164 | |
| 159 public String name() { | 165 public String name() { |
| 160 return mName; | 166 return mName; |
| 161 } | 167 } |
| 162 | 168 |
| 163 public String shortName() { | 169 public String shortName() { |
| 164 return mShortName; | 170 return mShortName; |
| 165 } | 171 } |
| 166 | 172 |
|
pkotwicz
2016/05/18 23:00:17
Can we rename this function to getWebApkPackage()
Xi Han
2016/05/19 18:31:50
Change to WebApkPackageName.
| |
| 173 public String packageName() { | |
| 174 return mPackageName; | |
| 175 } | |
| 176 | |
| 167 public int orientation() { | 177 public int orientation() { |
| 168 return mOrientation; | 178 return mOrientation; |
| 169 } | 179 } |
| 170 | 180 |
| 171 public int source() { | 181 public int source() { |
| 172 return mSource; | 182 return mSource; |
| 173 } | 183 } |
| 174 | 184 |
| 175 /** | 185 /** |
| 176 * Theme color is actually a 32 bit unsigned integer which encodes a color | 186 * Theme color is actually a 32 bit unsigned integer which encodes a color |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 236 return mIsIconGenerated; | 246 return mIsIconGenerated; |
| 237 } | 247 } |
| 238 | 248 |
| 239 /** | 249 /** |
| 240 * Sets extras on an Intent that will launch a WebappActivity. | 250 * Sets extras on an Intent that will launch a WebappActivity. |
| 241 * @param intent Intent that will be used to launch a WebappActivity. | 251 * @param intent Intent that will be used to launch a WebappActivity. |
| 242 */ | 252 */ |
| 243 public void setWebappIntentExtras(Intent intent) { | 253 public void setWebappIntentExtras(Intent intent) { |
| 244 intent.putExtra(ShortcutHelper.EXTRA_ID, id()); | 254 intent.putExtra(ShortcutHelper.EXTRA_ID, id()); |
| 245 intent.putExtra(ShortcutHelper.EXTRA_URL, uri().toString()); | 255 intent.putExtra(ShortcutHelper.EXTRA_URL, uri().toString()); |
| 246 intent.putExtra(ShortcutHelper.EXTRA_SCOPE, | 256 intent.putExtra(ShortcutHelper.EXTRA_SCOPE, scope().toString()); |
| 247 ShortcutHelper.getScopeFromUrl(uri().toString())); | |
| 248 intent.putExtra(ShortcutHelper.EXTRA_ICON, encodedIcon()); | 257 intent.putExtra(ShortcutHelper.EXTRA_ICON, encodedIcon()); |
| 249 intent.putExtra(ShortcutHelper.EXTRA_VERSION, ShortcutHelper.WEBAPP_SHOR TCUT_VERSION); | 258 intent.putExtra(ShortcutHelper.EXTRA_VERSION, ShortcutHelper.WEBAPP_SHOR TCUT_VERSION); |
| 250 intent.putExtra(ShortcutHelper.EXTRA_NAME, name()); | 259 intent.putExtra(ShortcutHelper.EXTRA_NAME, name()); |
| 251 intent.putExtra(ShortcutHelper.EXTRA_SHORT_NAME, shortName()); | 260 intent.putExtra(ShortcutHelper.EXTRA_SHORT_NAME, shortName()); |
| 252 intent.putExtra(ShortcutHelper.EXTRA_ORIENTATION, orientation()); | 261 intent.putExtra(ShortcutHelper.EXTRA_ORIENTATION, orientation()); |
| 253 intent.putExtra(ShortcutHelper.EXTRA_SOURCE, source()); | 262 intent.putExtra(ShortcutHelper.EXTRA_SOURCE, source()); |
| 254 intent.putExtra(ShortcutHelper.EXTRA_THEME_COLOR, themeColor()); | 263 intent.putExtra(ShortcutHelper.EXTRA_THEME_COLOR, themeColor()); |
| 255 intent.putExtra(ShortcutHelper.EXTRA_BACKGROUND_COLOR, backgroundColor() ); | 264 intent.putExtra(ShortcutHelper.EXTRA_BACKGROUND_COLOR, backgroundColor() ); |
| 256 intent.putExtra(ShortcutHelper.EXTRA_IS_ICON_GENERATED, isIconGenerated( )); | 265 intent.putExtra(ShortcutHelper.EXTRA_IS_ICON_GENERATED, isIconGenerated( )); |
| 266 intent.putExtra(ShortcutHelper.EXTRA_WEBAPK_PACKAGE_NAME, packageName()) ; | |
| 257 } | 267 } |
| 258 | 268 |
| 259 /** | 269 /** |
| 260 * Returns true if the WebappInfo was created for an Intent fired from a lau ncher shortcut (as | 270 * Returns true if the WebappInfo was created for an Intent fired from a lau ncher shortcut (as |
| 261 * opposed to an intent from a push notification or other internal source). | 271 * opposed to an intent from a push notification or other internal source). |
| 262 */ | 272 */ |
| 263 public boolean isLaunchedFromHomescreen() { | 273 public boolean isLaunchedFromHomescreen() { |
| 264 return source() != ShortcutSource.NOTIFICATION; | 274 return source() != ShortcutSource.NOTIFICATION; |
| 265 } | 275 } |
| 266 } | 276 } |
| OLD | NEW |