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.app.Activity; | 7 import android.app.Activity; |
8 import android.content.Context; | 8 import android.content.Context; |
9 import android.content.Intent; | 9 import android.content.Intent; |
10 import android.graphics.Bitmap; | 10 import android.graphics.Bitmap; |
11 import android.test.suitebuilder.annotation.SmallTest; | 11 import android.test.suitebuilder.annotation.SmallTest; |
12 | 12 |
13 import org.chromium.base.ThreadUtils; | 13 import org.chromium.base.ThreadUtils; |
14 import org.chromium.base.test.util.CommandLineFlags; | 14 import org.chromium.base.test.util.CommandLineFlags; |
15 import org.chromium.base.test.util.Feature; | 15 import org.chromium.base.test.util.Feature; |
16 import org.chromium.base.test.util.Restriction; | 16 import org.chromium.base.test.util.Restriction; |
17 import org.chromium.base.test.util.RetryOnFailure; | 17 import org.chromium.base.test.util.RetryOnFailure; |
18 import org.chromium.base.test.util.UrlUtils; | 18 import org.chromium.base.test.util.UrlUtils; |
19 import org.chromium.chrome.R; | 19 import org.chromium.chrome.R; |
20 import org.chromium.chrome.browser.ChromeActivity; | 20 import org.chromium.chrome.browser.ChromeActivity; |
21 import org.chromium.chrome.browser.ShortcutHelper; | 21 import org.chromium.chrome.browser.ShortcutHelper; |
22 import org.chromium.chrome.browser.tab.Tab; | 22 import org.chromium.chrome.browser.tab.Tab; |
23 import org.chromium.chrome.browser.tabmodel.TabModel; | 23 import org.chromium.chrome.browser.tabmodel.TabModel; |
24 import org.chromium.chrome.test.ChromeActivityTestCaseBase; | 24 import org.chromium.chrome.test.ChromeActivityTestCaseBase; |
25 import org.chromium.chrome.test.util.browser.TabLoadObserver; | 25 import org.chromium.chrome.test.util.browser.TabLoadObserver; |
| 26 import org.chromium.chrome.test.util.browser.TabTitleObserver; |
26 import org.chromium.content.browser.test.util.Criteria; | 27 import org.chromium.content.browser.test.util.Criteria; |
27 import org.chromium.content.browser.test.util.CriteriaHelper; | 28 import org.chromium.content.browser.test.util.CriteriaHelper; |
28 import org.chromium.content.common.ContentSwitches; | 29 import org.chromium.content.common.ContentSwitches; |
29 import org.chromium.net.test.EmbeddedTestServer; | 30 import org.chromium.net.test.EmbeddedTestServer; |
30 | 31 |
31 import java.util.concurrent.Callable; | 32 import java.util.concurrent.Callable; |
32 | 33 |
33 /** | 34 /** |
34 * Tests org.chromium.chrome.browser.webapps.AddToHomescreenManager and its C++
counterpart. | 35 * Tests org.chromium.chrome.browser.webapps.AddToHomescreenManager and its C++
counterpart. |
35 */ | 36 */ |
(...skipping 27 matching lines...) Expand all Loading... |
63 private static final String META_APP_NAME_HTML = UrlUtils.encodeHtmlDataUri( | 64 private static final String META_APP_NAME_HTML = UrlUtils.encodeHtmlDataUri( |
64 "<html><head>" | 65 "<html><head>" |
65 + "<meta name=\"mobile-web-app-capable\" content=\"yes\" />" | 66 + "<meta name=\"mobile-web-app-capable\" content=\"yes\" />" |
66 + "<meta name=\"application-name\" content=\"" + META_APP_NAME_TITLE
+ "\">" | 67 + "<meta name=\"application-name\" content=\"" + META_APP_NAME_TITLE
+ "\">" |
67 + "<title>" + META_APP_NAME_PAGE_TITLE + "</title>" | 68 + "<title>" + META_APP_NAME_PAGE_TITLE + "</title>" |
68 + "</head><body>Webapp capable</body></html>"); | 69 + "</head><body>Webapp capable</body></html>"); |
69 | 70 |
70 private static final String MANIFEST_PATH = "/chrome/test/data/banners/manif
est_test_page.html"; | 71 private static final String MANIFEST_PATH = "/chrome/test/data/banners/manif
est_test_page.html"; |
71 private static final String MANIFEST_TITLE = "Web app banner test page"; | 72 private static final String MANIFEST_TITLE = "Web app banner test page"; |
72 | 73 |
| 74 private static final String EVENT_WEBAPP_PATH = |
| 75 "/chrome/test/data/banners/appinstalled_test_page.html"; |
| 76 private static final String EVENT_WEBAPP_TITLE = "appinstalled event test pa
ge"; |
| 77 |
73 private static class TestShortcutHelperDelegate extends ShortcutHelper.Deleg
ate { | 78 private static class TestShortcutHelperDelegate extends ShortcutHelper.Deleg
ate { |
74 public Intent mBroadcastedIntent; | 79 public Intent mBroadcastedIntent; |
75 | 80 |
76 @Override | 81 @Override |
77 public void sendBroadcast(Context context, Intent intent) { | 82 public void sendBroadcast(Context context, Intent intent) { |
78 mBroadcastedIntent = intent; | 83 mBroadcastedIntent = intent; |
79 } | 84 } |
80 | 85 |
81 @Override | 86 @Override |
82 public String getFullscreenAction() { | 87 public String getFullscreenAction() { |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 R.dimen.webapp_splash_image_size_ideal); | 277 R.dimen.webapp_splash_image_size_ideal); |
273 Bitmap splashImage = | 278 Bitmap splashImage = |
274 ShortcutHelper.decodeBitmapFromString(dataStorageFactory.mSp
lashImage); | 279 ShortcutHelper.decodeBitmapFromString(dataStorageFactory.mSp
lashImage); |
275 assertEquals(idealSize, splashImage.getWidth()); | 280 assertEquals(idealSize, splashImage.getWidth()); |
276 assertEquals(idealSize, splashImage.getHeight()); | 281 assertEquals(idealSize, splashImage.getHeight()); |
277 } finally { | 282 } finally { |
278 mTestServer.stopAndDestroyServer(); | 283 mTestServer.stopAndDestroyServer(); |
279 } | 284 } |
280 } | 285 } |
281 | 286 |
| 287 /** Tests that the appinstalled event is fired when an app is installed. |
| 288 */ |
| 289 @SmallTest |
| 290 @Feature("{Webapp}") |
| 291 public void testAddWebappShortcutAppInstalledEvent() throws Exception { |
| 292 try { |
| 293 loadUrl(mTestServer.getURL(EVENT_WEBAPP_PATH), EVENT_WEBAPP_TITLE); |
| 294 addShortcutToTab(mTab, ""); |
| 295 |
| 296 // Wait for the tab title to change. This will happen (due to the Ja
vaScript that runs |
| 297 // in the page) once the appinstalled event has been fired. |
| 298 new TabTitleObserver(mTab, "Got appinstalled").waitForTitleUpdate(3)
; |
| 299 } finally { |
| 300 mTestServer.stopAndDestroyServer(); |
| 301 } |
| 302 } |
| 303 |
282 private void loadUrl(String url, String expectedPageTitle) throws Exception
{ | 304 private void loadUrl(String url, String expectedPageTitle) throws Exception
{ |
283 new TabLoadObserver(mTab, expectedPageTitle, null).fullyLoadUrl(url); | 305 new TabLoadObserver(mTab, expectedPageTitle, null).fullyLoadUrl(url); |
284 } | 306 } |
285 | 307 |
286 private void addShortcutToTab(Tab tab, String title) throws Exception { | 308 private void addShortcutToTab(Tab tab, String title) throws Exception { |
287 // Add the shortcut. | 309 // Add the shortcut. |
288 TestAddToHomescreenManager manager = new TestAddToHomescreenManager(mAct
ivity, tab, title); | 310 TestAddToHomescreenManager manager = new TestAddToHomescreenManager(mAct
ivity, tab, title); |
289 startManagerOnUiThread(manager); | 311 startManagerOnUiThread(manager); |
290 | 312 |
291 // Make sure that the shortcut was added. | 313 // Make sure that the shortcut was added. |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
337 public Integer call() { | 359 public Integer call() { |
338 return getActivity().getTabModelSelector().getModel(false).getCo
unt(); | 360 return getActivity().getTabModelSelector().getModel(false).getCo
unt(); |
339 } | 361 } |
340 })); | 362 })); |
341 | 363 |
342 TabModel tabModel = getActivity().getTabModelSelector().getModel(false); | 364 TabModel tabModel = getActivity().getTabModelSelector().getModel(false); |
343 assertEquals(0, tabModel.indexOf(mTab)); | 365 assertEquals(0, tabModel.indexOf(mTab)); |
344 return getActivity().getTabModelSelector().getModel(false).getTabAt(1); | 366 return getActivity().getTabModelSelector().getModel(false).getTabAt(1); |
345 } | 367 } |
346 } | 368 } |
OLD | NEW |