| Index: chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappDataStorageTest.java | 
| diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappDataStorageTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappDataStorageTest.java | 
| index 2582b402c2045082f77127616de3cee2b3ac21f4..a1baa2b4e239755c1a85c78277611fedd2fe4cda 100644 | 
| --- a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappDataStorageTest.java | 
| +++ b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebappDataStorageTest.java | 
| @@ -22,6 +22,8 @@ import org.junit.runner.RunWith; | 
| import org.robolectric.Robolectric; | 
| import org.robolectric.annotation.Config; | 
|  | 
| +import java.util.concurrent.TimeUnit; | 
| + | 
| /** | 
| * Tests the WebappDataStorage class by ensuring that it persists data to | 
| * SharedPreferences as expected. | 
| @@ -47,6 +49,23 @@ public class WebappDataStorageTest { | 
| } | 
| } | 
|  | 
| +    private static class TestClock extends WebappDataStorage.Clock { | 
| +        private long mCurrentTime; | 
| + | 
| +        public TestClock(long currentTime) { | 
| +            updateTime(currentTime); | 
| +        } | 
| + | 
| +        public void updateTime(long currentTime) { | 
| +            mCurrentTime = currentTime; | 
| +        } | 
| + | 
| +        @Override | 
| +        public long currentTimeMillis() { | 
| +            return mCurrentTime; | 
| +        } | 
| +    } | 
| + | 
| @Before | 
| public void setUp() throws Exception { | 
| mSharedPreferences = Robolectric.application | 
| @@ -149,13 +168,13 @@ public class WebappDataStorageTest { | 
|  | 
| @Test | 
| @Feature({"Webapp"}) | 
| -    public void testURLRetrieval() throws Exception { | 
| +    public void testUrlRetrieval() throws Exception { | 
| final String url = "https://www.google.com"; | 
| mSharedPreferences.edit() | 
| .putString(WebappDataStorage.KEY_URL, url) | 
| .commit(); | 
|  | 
| -        WebappDataStorage.getURL(Robolectric.application, "test", | 
| +        WebappDataStorage.getUrl(Robolectric.application, "test", | 
| new FetchCallback<String>(url)); | 
| BackgroundShadowAsyncTask.runBackgroundTasks(); | 
| Robolectric.runUiThreadTasks(); | 
| @@ -165,6 +184,71 @@ public class WebappDataStorageTest { | 
|  | 
| @Test | 
| @Feature({"Webapp"}) | 
| +    public void testWasLaunchedRecently() throws Exception { | 
| +        final TestClock clock = new TestClock(System.currentTimeMillis()); | 
| +        WebappDataStorage.setClockForTests(clock); | 
| + | 
| +        WebappDataStorage storage = WebappDataStorage.open(Robolectric.application, "test"); | 
| +        storage.updateLastUsedTime(); | 
| +        BackgroundShadowAsyncTask.runBackgroundTasks(); | 
| +        Robolectric.runUiThreadTasks(); | 
| +        assertTrue(!storage.wasLaunchedRecently()); | 
| + | 
| +        long lastUsedTime = mSharedPreferences.getLong(WebappDataStorage.KEY_LAST_USED, | 
| +                WebappDataStorage.LAST_USED_INVALID); | 
| + | 
| +        assertTrue(lastUsedTime != WebappDataStorage.LAST_USED_UNSET); | 
| +        assertTrue(lastUsedTime != WebappDataStorage.LAST_USED_INVALID); | 
| + | 
| +        // Mark as launched, check launched recently. | 
| +        mSharedPreferences.edit() | 
| +                .putBoolean(WebappDataStorage.KEY_LAUNCHED, true) | 
| +                .commit(); | 
| +        assertTrue(storage.wasLaunchedRecently()); | 
| + | 
| +        // Move the last used time one day in the past. | 
| +        mSharedPreferences.edit() | 
| +                .putLong(WebappDataStorage.KEY_LAST_USED, lastUsedTime - TimeUnit.DAYS.toMillis(1L)) | 
| +                .commit(); | 
| +        assertTrue(storage.wasLaunchedRecently()); | 
| + | 
| +        // Move the last used time three days in the past. | 
| +        mSharedPreferences.edit() | 
| +                .putLong(WebappDataStorage.KEY_LAST_USED, lastUsedTime - TimeUnit.DAYS.toMillis(3L)) | 
| +                .commit(); | 
| +        assertTrue(storage.wasLaunchedRecently()); | 
| + | 
| +        // Move the last used time one week in the past. | 
| +        mSharedPreferences.edit() | 
| +                .putLong(WebappDataStorage.KEY_LAST_USED, lastUsedTime - TimeUnit.DAYS.toMillis(7L)) | 
| +                .commit(); | 
| +        assertTrue(storage.wasLaunchedRecently()); | 
| + | 
| +        // Move the last used time just under ten days in the past. | 
| +        mSharedPreferences.edit().putLong(WebappDataStorage.KEY_LAST_USED, | 
| +                lastUsedTime - TimeUnit.DAYS.toMillis(10L) + 1).commit(); | 
| +        assertTrue(storage.wasLaunchedRecently()); | 
| + | 
| +        // Mark as not launched. | 
| +        mSharedPreferences.edit() | 
| +                .putBoolean(WebappDataStorage.KEY_LAUNCHED, false) | 
| +                .commit(); | 
| +        assertTrue(!storage.wasLaunchedRecently()); | 
| + | 
| +        // Mark as launched. | 
| +        mSharedPreferences.edit() | 
| +                .putBoolean(WebappDataStorage.KEY_LAUNCHED, true) | 
| +                .commit(); | 
| +        assertTrue(storage.wasLaunchedRecently()); | 
| + | 
| +        // Move the last used time to exactly ten days in the past. | 
| +        mSharedPreferences.edit().putLong(WebappDataStorage.KEY_LAST_USED, | 
| +                lastUsedTime - TimeUnit.DAYS.toMillis(10L)).commit(); | 
| +        assertTrue(!storage.wasLaunchedRecently()); | 
| +    } | 
| + | 
| +    @Test | 
| +    @Feature({"Webapp"}) | 
| public void testIntentUpdate() throws Exception { | 
| final String id = "id"; | 
| final String action = "action"; | 
|  |