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

Unified Diff: android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientCallbackHelperTest.java

Issue 2292393002: aw: Cancel pending callbacks after native destroy (Closed)
Patch Set: Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « android_webview/java/src/org/chromium/android_webview/AwContentsClientCallbackHelper.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientCallbackHelperTest.java
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientCallbackHelperTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientCallbackHelperTest.java
index 5f46993f8967667fabaade9f3d35af3101bcfa21..7dd5560aeb733b2fbc04b5da3446c60373528928 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientCallbackHelperTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientCallbackHelperTest.java
@@ -15,6 +15,7 @@ import org.chromium.android_webview.test.TestAwContentsClient.OnDownloadStartHel
import org.chromium.android_webview.test.TestAwContentsClient.OnReceivedLoginRequestHelper;
import org.chromium.android_webview.test.TestAwContentsClient.PictureListenerHelper;
import org.chromium.base.test.util.Feature;
+import org.chromium.base.test.util.parameter.ParameterizedTest;
import org.chromium.content.browser.test.util.CallbackHelper;
import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageStartedHelper;
import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnReceivedErrorHelper;
@@ -24,6 +25,7 @@ import java.util.concurrent.Callable;
/**
* Test suite for AwContentsClientCallbackHelper.
*/
+@ParameterizedTest.Set // These are unit tests. No need to repeat for multiprocess.
public class AwContentsClientCallbackHelperTest extends AwTestBase {
/**
* Callback helper for OnLoadedResource.
@@ -65,6 +67,26 @@ public class AwContentsClientCallbackHelperTest extends AwTestBase {
}
}
+ private static class TestCancelCallbackPoller
+ implements AwContentsClientCallbackHelper.CancelCallbackPoller {
+ private boolean mCancelled;
+ private final CallbackHelper mCallbackHelper = new CallbackHelper();
+
+ public void setCancelled() {
+ mCancelled = true;
+ }
+
+ public CallbackHelper getCallbackHelper() {
+ return mCallbackHelper;
+ }
+
+ @Override
+ public boolean cancelAllCallbacks() {
+ mCallbackHelper.notifyCalled();
+ return mCancelled;
+ }
+ }
+
static final int PICTURE_TIMEOUT = 5000;
static final String TEST_URL = "www.example.com";
static final String REALM = "www.example.com";
@@ -82,6 +104,7 @@ public class AwContentsClientCallbackHelperTest extends AwTestBase {
private TestAwContentsClient mContentsClient;
private AwContentsClientCallbackHelper mClientHelper;
+ private TestCancelCallbackPoller mCancelCallbackPoller;
private Looper mLooper;
@Override
@@ -90,6 +113,8 @@ public class AwContentsClientCallbackHelperTest extends AwTestBase {
mLooper = Looper.getMainLooper();
mContentsClient = new TestAwContentsClient();
mClientHelper = new AwContentsClientCallbackHelper(mLooper, mContentsClient);
+ mCancelCallbackPoller = new TestCancelCallbackPoller();
+ mClientHelper.setCancelCallbackPoller(mCancelCallbackPoller);
}
@Feature({"AndroidWebView"})
@@ -226,4 +251,31 @@ public class AwContentsClientCallbackHelperTest extends AwTestBase {
assertEquals(OLD_SCALE, scaleChangedHelper.getOldScale());
assertEquals(NEW_SCALE, scaleChangedHelper.getNewScale());
}
+
+ @Feature({"AndroidWebView"})
+ @SmallTest
+ public void testCancelCallbackPoller() throws Exception {
+ mCancelCallbackPoller.setCancelled();
+ CallbackHelper cancelCallbackPollerHelper = mCancelCallbackPoller.getCallbackHelper();
+ OnPageStartedHelper pageStartedHelper = mContentsClient.getOnPageStartedHelper();
+
+ int pollCount = pageStartedHelper.getCallCount();
+ int onPageStartedCount = pageStartedHelper.getCallCount();
+ // Post two callbacks.
+ mClientHelper.postOnPageStarted(TEST_URL);
+ mClientHelper.postOnPageStarted(TEST_URL);
+
+ // Wait for at least one poll.
+ cancelCallbackPollerHelper.waitForCallback(pollCount);
+
+ // Flush main queue.
+ getInstrumentation().runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ }
+ });
+
+ // Neither callback should actually happen.
+ assertEquals(onPageStartedCount, pageStartedHelper.getCallCount());
+ }
}
« no previous file with comments | « android_webview/java/src/org/chromium/android_webview/AwContentsClientCallbackHelper.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698