| Index: chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java | 
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java | 
| index 2b83f9a2d1f2ce6f76aa48fd35ce776e60182594..a7208347c95551c8d246da4691ff751140199850 100644 | 
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java | 
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/ClearBrowsingDataPreferencesTest.java | 
| @@ -11,6 +11,7 @@ import android.test.suitebuilder.annotation.MediumTest; | 
|  | 
| import org.chromium.base.ThreadUtils; | 
| import org.chromium.chrome.browser.ChromeActivity; | 
| +import org.chromium.chrome.browser.ShortcutHelper; | 
| import org.chromium.chrome.browser.preferences.ButtonPreference; | 
| import org.chromium.chrome.browser.preferences.PrefServiceBridge; | 
| import org.chromium.chrome.browser.preferences.Preferences; | 
| @@ -34,6 +35,21 @@ public class ClearBrowsingDataPreferencesTest | 
|  | 
| private boolean mCallbackCalled; | 
|  | 
| +    private class CallbackCriteria extends Criteria { | 
| +        public CallbackCriteria() { | 
| +            mCallbackCalled = false; | 
| +        } | 
| + | 
| +        @Override | 
| +        public boolean isSatisfied() { | 
| +            if (mCallbackCalled) { | 
| +                mCallbackCalled = false; | 
| +                return true; | 
| +            } | 
| +            return false; | 
| +        } | 
| +    } | 
| + | 
| public ClearBrowsingDataPreferencesTest() { | 
| super(ChromeActivity.class); | 
| } | 
| @@ -48,7 +64,7 @@ public class ClearBrowsingDataPreferencesTest | 
| */ | 
| @MediumTest | 
| public void testClearingSiteDataClearsWebapps() throws Exception { | 
| -        WebappRegistry.registerWebapp(getActivity(), "first", "https://www.google.com"); | 
| +        WebappRegistry.registerWebapp(getActivity(), "first", null); | 
| WebappRegistry.getRegisteredWebappIds(getActivity(), new WebappRegistry.FetchCallback() { | 
| @Override | 
| public void onWebappIdsRetrieved(Set<String> ids) { | 
| @@ -56,13 +72,7 @@ public class ClearBrowsingDataPreferencesTest | 
| mCallbackCalled = true; | 
| } | 
| }); | 
| -        CriteriaHelper.pollUiThread(new Criteria() { | 
| -            @Override | 
| -            public boolean isSatisfied() { | 
| -                return mCallbackCalled; | 
| -            } | 
| -        }); | 
| -        mCallbackCalled = false; | 
| +        CriteriaHelper.pollUiThread(new CallbackCriteria()); | 
|  | 
| setDataTypesToClear(Arrays.asList(DialogOption.CLEAR_COOKIES_AND_SITE_DATA)); | 
| final Preferences preferences = | 
| @@ -95,12 +105,7 @@ public class ClearBrowsingDataPreferencesTest | 
| mCallbackCalled = true; | 
| } | 
| }); | 
| -        CriteriaHelper.pollUiThread(new Criteria() { | 
| -            @Override | 
| -            public boolean isSatisfied() { | 
| -                return mCallbackCalled; | 
| -            } | 
| -        }); | 
| +        CriteriaHelper.pollUiThread(new CallbackCriteria()); | 
| } | 
|  | 
| /** | 
| @@ -109,7 +114,19 @@ public class ClearBrowsingDataPreferencesTest | 
| */ | 
| @MediumTest | 
| public void testClearingHistoryClearsWebappScopesAndLaunchTimes() throws Exception { | 
| -        WebappRegistry.registerWebapp(getActivity(), "first", "https://www.google.com"); | 
| +        WebappRegistry.registerWebapp(getActivity(), "first", | 
| +                new WebappRegistry.FetchWebappDataStorageCallback() { | 
| +                    @Override | 
| +                    public void onWebappDataStorageRetrieved(WebappDataStorage storage) { | 
| +                        storage.updateFromShortcutIntent(ShortcutHelper.createWebappShortcutIntent( | 
| +                                    "id", "action", "url", "scope", "name", "shortName", null, | 
| +                                    ShortcutHelper.WEBAPP_SHORTCUT_VERSION, 0, 0, 0, false)); | 
| +                        mCallbackCalled = true; | 
| +                    } | 
| +                } | 
| +        ); | 
| +        CriteriaHelper.pollUiThread(new CallbackCriteria()); | 
| + | 
| WebappRegistry.getRegisteredWebappIds(getActivity(), new WebappRegistry.FetchCallback() { | 
| @Override | 
| public void onWebappIdsRetrieved(Set<String> ids) { | 
| @@ -117,13 +134,7 @@ public class ClearBrowsingDataPreferencesTest | 
| mCallbackCalled = true; | 
| } | 
| }); | 
| -        CriteriaHelper.pollUiThread(new Criteria() { | 
| -            @Override | 
| -            public boolean isSatisfied() { | 
| -                return mCallbackCalled; | 
| -            } | 
| -        }); | 
| -        mCallbackCalled = false; | 
| +        CriteriaHelper.pollUiThread(new CallbackCriteria()); | 
|  | 
| setDataTypesToClear(Arrays.asList(DialogOption.CLEAR_HISTORY)); | 
| final Preferences preferences = | 
| @@ -157,15 +168,9 @@ public class ClearBrowsingDataPreferencesTest | 
| mCallbackCalled = true; | 
| } | 
| }); | 
| -        CriteriaHelper.pollUiThread(new Criteria() { | 
| -            @Override | 
| -            public boolean isSatisfied() { | 
| -                return mCallbackCalled; | 
| -            } | 
| -        }); | 
| -        mCallbackCalled = false; | 
| +        CriteriaHelper.pollUiThread(new CallbackCriteria()); | 
|  | 
| -        // Scope should be empty. | 
| +        // URL and scope should be empty. | 
| WebappDataStorage.getScope(getActivity(), "first", | 
| new WebappDataStorage.FetchCallback<String>() { | 
| @Override | 
| @@ -175,13 +180,18 @@ public class ClearBrowsingDataPreferencesTest | 
| } | 
| } | 
| ); | 
| -        CriteriaHelper.pollUiThread(new Criteria() { | 
| -            @Override | 
| -            public boolean isSatisfied() { | 
| -                return mCallbackCalled; | 
| -            } | 
| -        }); | 
| -        mCallbackCalled = false; | 
| +        CriteriaHelper.pollUiThread(new CallbackCriteria()); | 
| + | 
| +        WebappDataStorage.getURL(getActivity(), "first", | 
| +                new WebappDataStorage.FetchCallback<String>() { | 
| +                    @Override | 
| +                    public void onDataRetrieved(String readObject) { | 
| +                        assertEquals(readObject, ""); | 
| +                        mCallbackCalled = true; | 
| +                    } | 
| +                } | 
| +        ); | 
| +        CriteriaHelper.pollUiThread(new CallbackCriteria()); | 
|  | 
| // The last used time should be 0. | 
| WebappDataStorage.getLastUsedTime(getActivity(), "first", | 
| @@ -194,12 +204,7 @@ public class ClearBrowsingDataPreferencesTest | 
| } | 
| } | 
| ); | 
| -        CriteriaHelper.pollUiThread(new Criteria() { | 
| -            @Override | 
| -            public boolean isSatisfied() { | 
| -                return mCallbackCalled; | 
| -            } | 
| -        }); | 
| +        CriteriaHelper.pollUiThread(new CallbackCriteria()); | 
| } | 
|  | 
| /** | 
|  |