Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(229)

Side by Side Diff: chrome/android/javatests/src/org/chromium/chrome/browser/webapps/AddToHomescreenManagerTest.java

Issue 2689993002: Refactor the INSTALL_SHORTCUT broadcast code into ChromeShortcutManager (Closed)
Patch Set: Change according to review comments. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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.app.Activity; 7 import android.app.Activity;
8 import android.content.Context;
9 import android.content.Intent; 8 import android.content.Intent;
10 import android.graphics.Bitmap; 9 import android.graphics.Bitmap;
11 import android.support.test.filters.SmallTest; 10 import android.support.test.filters.SmallTest;
12 11
13 import org.chromium.base.ThreadUtils; 12 import org.chromium.base.ThreadUtils;
14 import org.chromium.base.test.util.CommandLineFlags; 13 import org.chromium.base.test.util.CommandLineFlags;
15 import org.chromium.base.test.util.Feature; 14 import org.chromium.base.test.util.Feature;
16 import org.chromium.base.test.util.Restriction; 15 import org.chromium.base.test.util.Restriction;
17 import org.chromium.base.test.util.RetryOnFailure; 16 import org.chromium.base.test.util.RetryOnFailure;
18 import org.chromium.base.test.util.UrlUtils; 17 import org.chromium.base.test.util.UrlUtils;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 + "</head><body>Webapp capable</body></html>"); 68 + "</head><body>Webapp capable</body></html>");
70 69
71 private static final String MANIFEST_PATH = "/chrome/test/data/banners/manif est_test_page.html"; 70 private static final String MANIFEST_PATH = "/chrome/test/data/banners/manif est_test_page.html";
72 private static final String MANIFEST_TITLE = "Web app banner test page"; 71 private static final String MANIFEST_TITLE = "Web app banner test page";
73 72
74 private static final String EVENT_WEBAPP_PATH = 73 private static final String EVENT_WEBAPP_PATH =
75 "/chrome/test/data/banners/appinstalled_test_page.html"; 74 "/chrome/test/data/banners/appinstalled_test_page.html";
76 private static final String EVENT_WEBAPP_TITLE = "appinstalled event test pa ge"; 75 private static final String EVENT_WEBAPP_TITLE = "appinstalled event test pa ge";
77 76
78 private static class TestShortcutHelperDelegate extends ShortcutHelper.Deleg ate { 77 private static class TestShortcutHelperDelegate extends ShortcutHelper.Deleg ate {
79 public Intent mBroadcastedIntent; 78 public String mRequestedShortcutTitle;
79 public Intent mRequestedShortcutIntent;
80 80
81 @Override 81 @Override
82 public void sendBroadcast(Context context, Intent intent) { 82 public void addShortcutToHomescreen(String title, Bitmap icon, Intent sh ortcutIntent) {
83 mBroadcastedIntent = intent; 83 mRequestedShortcutTitle = title;
84 mRequestedShortcutIntent = shortcutIntent;
84 } 85 }
85 86
86 @Override 87 @Override
87 public String getFullscreenAction() { 88 public String getFullscreenAction() {
88 return WEBAPP_ACTION_NAME; 89 return WEBAPP_ACTION_NAME;
89 } 90 }
90 91
91 public void clearBroadcastedIntent() { 92 public void clearRequestedShortcutData() {
92 mBroadcastedIntent = null; 93 mRequestedShortcutTitle = null;
94 mRequestedShortcutIntent = null;
93 } 95 }
94 } 96 }
95 97
96 private static class TestDataStorageFactory extends WebappDataStorage.Factor y { 98 private static class TestDataStorageFactory extends WebappDataStorage.Factor y {
97 public String mSplashImage; 99 public String mSplashImage;
98 100
99 @Override 101 @Override
100 public WebappDataStorage create(final String webappId) { 102 public WebappDataStorage create(final String webappId) {
101 return new WebappDataStorageWrapper(webappId); 103 return new WebappDataStorageWrapper(webappId);
102 } 104 }
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 mActivity = getActivity(); 172 mActivity = getActivity();
171 mTab = mActivity.getActivityTab(); 173 mTab = mActivity.getActivityTab();
172 } 174 }
173 175
174 @SmallTest 176 @SmallTest
175 @Feature("{Webapp}") 177 @Feature("{Webapp}")
176 public void testAddWebappShortcuts() throws Exception { 178 public void testAddWebappShortcuts() throws Exception {
177 // Add a webapp shortcut and make sure the intent's parameters make sens e. 179 // Add a webapp shortcut and make sure the intent's parameters make sens e.
178 loadUrl(WEBAPP_HTML, WEBAPP_TITLE); 180 loadUrl(WEBAPP_HTML, WEBAPP_TITLE);
179 addShortcutToTab(mTab, ""); 181 addShortcutToTab(mTab, "");
180 Intent firedIntent = mShortcutHelperDelegate.mBroadcastedIntent; 182 assertEquals(WEBAPP_TITLE, mShortcutHelperDelegate.mRequestedShortcutTit le);
181 assertEquals(WEBAPP_TITLE, firedIntent.getStringExtra(Intent.EXTRA_SHORT CUT_NAME));
182 183
183 Intent launchIntent = firedIntent.getParcelableExtra(Intent.EXTRA_SHORTC UT_INTENT); 184 Intent launchIntent = mShortcutHelperDelegate.mRequestedShortcutIntent;
184 assertEquals(WEBAPP_HTML, launchIntent.getStringExtra(ShortcutHelper.EXT RA_URL)); 185 assertEquals(WEBAPP_HTML, launchIntent.getStringExtra(ShortcutHelper.EXT RA_URL));
185 assertEquals(WEBAPP_ACTION_NAME, launchIntent.getAction()); 186 assertEquals(WEBAPP_ACTION_NAME, launchIntent.getAction());
186 assertEquals(mActivity.getPackageName(), launchIntent.getPackage()); 187 assertEquals(mActivity.getPackageName(), launchIntent.getPackage());
187 188
188 // Add a second shortcut and make sure it matches the second webapp's pa rameters. 189 // Add a second shortcut and make sure it matches the second webapp's pa rameters.
189 mShortcutHelperDelegate.clearBroadcastedIntent(); 190 mShortcutHelperDelegate.clearRequestedShortcutData();
190 loadUrl(SECOND_WEBAPP_HTML, SECOND_WEBAPP_TITLE); 191 loadUrl(SECOND_WEBAPP_HTML, SECOND_WEBAPP_TITLE);
191 addShortcutToTab(mTab, ""); 192 addShortcutToTab(mTab, "");
192 Intent newFiredIntent = mShortcutHelperDelegate.mBroadcastedIntent; 193 assertEquals(SECOND_WEBAPP_TITLE, mShortcutHelperDelegate.mRequestedShor tcutTitle);
193 assertEquals(SECOND_WEBAPP_TITLE,
194 newFiredIntent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME));
195 194
196 Intent newLaunchIntent = newFiredIntent.getParcelableExtra(Intent.EXTRA_ SHORTCUT_INTENT); 195 Intent newLaunchIntent = mShortcutHelperDelegate.mRequestedShortcutInten t;
197 assertEquals(SECOND_WEBAPP_HTML, newLaunchIntent.getStringExtra(Shortcut Helper.EXTRA_URL)); 196 assertEquals(SECOND_WEBAPP_HTML, newLaunchIntent.getStringExtra(Shortcut Helper.EXTRA_URL));
198 assertEquals(WEBAPP_ACTION_NAME, newLaunchIntent.getAction()); 197 assertEquals(WEBAPP_ACTION_NAME, newLaunchIntent.getAction());
199 assertEquals(mActivity.getPackageName(), newLaunchIntent.getPackage()); 198 assertEquals(mActivity.getPackageName(), newLaunchIntent.getPackage());
200 } 199 }
201 200
202 @SmallTest 201 @SmallTest
203 @Feature("{Webapp}") 202 @Feature("{Webapp}")
204 public void testAddBookmarkShortcut() throws Exception { 203 public void testAddBookmarkShortcut() throws Exception {
205 loadUrl(NORMAL_HTML, NORMAL_TITLE); 204 loadUrl(NORMAL_HTML, NORMAL_TITLE);
206 addShortcutToTab(mTab, ""); 205 addShortcutToTab(mTab, "");
207 206
208 // Make sure the intent's parameters make sense. 207 // Make sure the intent's parameters make sense.
209 Intent firedIntent = mShortcutHelperDelegate.mBroadcastedIntent; 208 assertEquals(NORMAL_TITLE, mShortcutHelperDelegate.mRequestedShortcutTit le);
210 assertEquals(NORMAL_TITLE, firedIntent.getStringExtra(Intent.EXTRA_SHORT CUT_NAME));
211 209
212 Intent launchIntent = firedIntent.getParcelableExtra(Intent.EXTRA_SHORTC UT_INTENT); 210 Intent launchIntent = mShortcutHelperDelegate.mRequestedShortcutIntent;
213 assertEquals(mActivity.getPackageName(), launchIntent.getPackage()); 211 assertEquals(mActivity.getPackageName(), launchIntent.getPackage());
214 assertEquals(Intent.ACTION_VIEW, launchIntent.getAction()); 212 assertEquals(Intent.ACTION_VIEW, launchIntent.getAction());
215 assertEquals(NORMAL_HTML, launchIntent.getDataString()); 213 assertEquals(NORMAL_HTML, launchIntent.getDataString());
216 } 214 }
217 215
218 @SmallTest 216 @SmallTest
219 @Feature("{Webapp}") 217 @Feature("{Webapp}")
220 public void testAddWebappShortcutsWithoutTitleEdit() throws Exception { 218 public void testAddWebappShortcutsWithoutTitleEdit() throws Exception {
221 // Add a webapp shortcut using the page's title. 219 // Add a webapp shortcut using the page's title.
222 loadUrl(WEBAPP_HTML, WEBAPP_TITLE); 220 loadUrl(WEBAPP_HTML, WEBAPP_TITLE);
223 addShortcutToTab(mTab, ""); 221 addShortcutToTab(mTab, "");
224 Intent firedIntent = mShortcutHelperDelegate.mBroadcastedIntent; 222 assertEquals(WEBAPP_TITLE, mShortcutHelperDelegate.mRequestedShortcutTit le);
225 assertEquals(WEBAPP_TITLE, firedIntent.getStringExtra(Intent.EXTRA_SHORT CUT_NAME));
226 } 223 }
227 224
228 @SmallTest 225 @SmallTest
229 @Feature("{Webapp}") 226 @Feature("{Webapp}")
230 public void testAddWebappShortcutsWithTitleEdit() throws Exception { 227 public void testAddWebappShortcutsWithTitleEdit() throws Exception {
231 // Add a webapp shortcut with a custom title. 228 // Add a webapp shortcut with a custom title.
232 loadUrl(WEBAPP_HTML, WEBAPP_TITLE); 229 loadUrl(WEBAPP_HTML, WEBAPP_TITLE);
233 addShortcutToTab(mTab, EDITED_WEBAPP_TITLE); 230 addShortcutToTab(mTab, EDITED_WEBAPP_TITLE);
234 Intent firedIntent = mShortcutHelperDelegate.mBroadcastedIntent; 231 assertEquals(EDITED_WEBAPP_TITLE, mShortcutHelperDelegate.mRequestedShor tcutTitle);
235 assertEquals(EDITED_WEBAPP_TITLE, firedIntent.getStringExtra(Intent.EXTR A_SHORTCUT_NAME));
236 } 232 }
237 233
238 @SmallTest 234 @SmallTest
239 @Feature("{Webapp}") 235 @Feature("{Webapp}")
240 public void testAddWebappShortcutsWithApplicationName() throws Exception { 236 public void testAddWebappShortcutsWithApplicationName() throws Exception {
241 loadUrl(META_APP_NAME_HTML, META_APP_NAME_PAGE_TITLE); 237 loadUrl(META_APP_NAME_HTML, META_APP_NAME_PAGE_TITLE);
242 addShortcutToTab(mTab, ""); 238 addShortcutToTab(mTab, "");
243 Intent firedIntent = mShortcutHelperDelegate.mBroadcastedIntent; 239 assertEquals(META_APP_NAME_TITLE, mShortcutHelperDelegate.mRequestedShor tcutTitle);
244 assertEquals(META_APP_NAME_TITLE, firedIntent.getStringExtra(Intent.EXTR A_SHORTCUT_NAME));
245 } 240 }
246 241
247 @SmallTest 242 @SmallTest
248 @Feature("{Webapp}") 243 @Feature("{Webapp}")
249 @Restriction(Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE) 244 @Restriction(Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE)
250 @CommandLineFlags.Add(ContentSwitches.DISABLE_POPUP_BLOCKING) 245 @CommandLineFlags.Add(ContentSwitches.DISABLE_POPUP_BLOCKING)
251 public void testAddWebappShortcutWithEmptyPage() throws Exception { 246 public void testAddWebappShortcutWithEmptyPage() throws Exception {
252 Tab spawnedPopup = spawnPopupInBackground(""); 247 Tab spawnedPopup = spawnPopupInBackground("");
253 addShortcutToTab(spawnedPopup, ""); 248 addShortcutToTab(spawnedPopup, "");
254 } 249 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 302
308 private void addShortcutToTab(Tab tab, String title) throws Exception { 303 private void addShortcutToTab(Tab tab, String title) throws Exception {
309 // Add the shortcut. 304 // Add the shortcut.
310 TestAddToHomescreenManager manager = new TestAddToHomescreenManager(mAct ivity, tab, title); 305 TestAddToHomescreenManager manager = new TestAddToHomescreenManager(mAct ivity, tab, title);
311 startManagerOnUiThread(manager); 306 startManagerOnUiThread(manager);
312 307
313 // Make sure that the shortcut was added. 308 // Make sure that the shortcut was added.
314 CriteriaHelper.pollUiThread(new Criteria() { 309 CriteriaHelper.pollUiThread(new Criteria() {
315 @Override 310 @Override
316 public boolean isSatisfied() { 311 public boolean isSatisfied() {
317 return mShortcutHelperDelegate.mBroadcastedIntent != null; 312 return mShortcutHelperDelegate.mRequestedShortcutIntent != null;
318 } 313 }
319 }); 314 });
320 315
321 destroyManagerOnUiThread(manager); 316 destroyManagerOnUiThread(manager);
322 } 317 }
323 318
324 private void startManagerOnUiThread(final AddToHomescreenManager manager) { 319 private void startManagerOnUiThread(final AddToHomescreenManager manager) {
325 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 320 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
326 @Override 321 @Override
327 public void run() { 322 public void run() {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 public Integer call() { 354 public Integer call() {
360 return getActivity().getTabModelSelector().getModel(false).getCo unt(); 355 return getActivity().getTabModelSelector().getModel(false).getCo unt();
361 } 356 }
362 })); 357 }));
363 358
364 TabModel tabModel = getActivity().getTabModelSelector().getModel(false); 359 TabModel tabModel = getActivity().getTabModelSelector().getModel(false);
365 assertEquals(0, tabModel.indexOf(mTab)); 360 assertEquals(0, tabModel.indexOf(mTab));
366 return getActivity().getTabModelSelector().getModel(false).getTabAt(1); 361 return getActivity().getTabModelSelector().getModel(false).getTabAt(1);
367 } 362 }
368 } 363 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698