Index: android_webview/javatests/src/org/chromium/android_webview/test/AwContentsTest.java |
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsTest.java |
index 85db017737cce0778a75c286914a82bedb275109..0478a00938e1ab4060b6d023b687440829a14963 100644 |
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsTest.java |
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsTest.java |
@@ -139,6 +139,14 @@ public class AwContentsTest extends AwTestBase { |
new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MENU)); |
} |
+ @SuppressFBWarnings("URF_UNREAD_FIELD") |
+ private static class StrongRefTestAwContentsClient extends TestAwContentsClient { |
+ private AwContents mAwContentsStrongRef; |
+ public void setAwContentsStrongRef(AwContents awContents) { |
+ mAwContentsStrongRef = awContents; |
+ } |
+ } |
+ |
@DisableHardwareAccelerationForTest |
@LargeTest |
@Feature({"AndroidWebView"}) |
@@ -159,7 +167,13 @@ public class AwContentsTest extends AwTestBase { |
}); |
for (int i = 0; i < repetitions; ++i) { |
for (int j = 0; j < concurrentInstances; ++j) { |
- AwTestContainerView view = createAwTestContainerViewOnMainSync(mContentsClient); |
+ final StrongRefTestAwContentsClient client = new StrongRefTestAwContentsClient(); |
+ AwTestContainerView view = createAwTestContainerViewOnMainSync(client); |
+ // Embedding app can hold onto a strong ref to the WebView from either WebViewClient |
+ // or WebChromeClient. That should not prevent WebView from gc-ed. We simulate that |
+ // behavior by making the equivalent change here, have AwContentsClient hold a |
+ // strong ref to the AwContents object. |
+ client.setAwContentsStrongRef(view.getAwContents()); |
loadUrlAsync(view.getAwContents(), "about:blank"); |
} |
assertTrue(AwContents.getNativeInstanceCount() >= concurrentInstances); |