This source file includes following definitions.
- getResubmissions
- setResubmit
- onFormResubmission
- setUp
- tearDown
- testResend
- Feature
- testDontResend
- doReload
package org.chromium.android_webview.test;
import android.os.Message;
import android.test.suitebuilder.annotation.SmallTest;
import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout;
import org.apache.http.util.EncodingUtils;
import org.chromium.android_webview.AwContents;
import org.chromium.base.test.util.DisabledTest;
import org.chromium.base.test.util.Feature;
import org.chromium.content.browser.test.util.TestCallbackHelperContainer;
import org.chromium.net.test.util.TestWebServer;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
public class AwContentsClientOnFormResubmissionTest extends AwTestBase {
private static class TestAwContentsClient
extends org.chromium.android_webview.test.TestAwContentsClient {
private int mResubmissions = 0;
private boolean mResubmit = false;
public int getResubmissions() {
return mResubmissions;
}
public void setResubmit(boolean resubmit) {
mResubmit = resubmit;
}
@Override
public void onFormResubmission(Message dontResend, Message resend) {
mResubmissions++;
if (mResubmit) {
resend.sendToTarget();
} else {
dontResend.sendToTarget();
}
}
}
private static final String LOAD_RESPONSE =
"<html><head><title>Load</title></head><body>HELLO</body></html>";
private static final String RELOAD_RESPONSE =
"<html><head><title>Reload</title></head><body>HELLO</body></html>";
private static final long TIMEOUT = scaleTimeout(3);
private TestWebServer mServer;
private TestAwContentsClient mContentsClient;
private AwContents mAwContents;
@Override
public void setUp() throws Exception {
super.setUp();
mServer = new TestWebServer(false);
mContentsClient = new TestAwContentsClient();
final AwTestContainerView testContainerView =
createAwTestContainerViewOnMainSync(mContentsClient);
mAwContents = testContainerView.getAwContents();
}
@Override
public void tearDown() throws Exception {
mServer.shutdown();
super.tearDown();
}
@DisabledTest
public void testResend() throws Throwable {
mContentsClient.setResubmit(true);
doReload();
assertEquals(1, mContentsClient.getResubmissions());
assertEquals("Reload", getTitleOnUiThread(mAwContents));
}
@SmallTest
@Feature({"AndroidWebView", "Navigation"})
public void testDontResend() throws Throwable {
mContentsClient.setResubmit(false);
doReload();
assertEquals(1, mContentsClient.getResubmissions());
assertEquals("Load", getTitleOnUiThread(mAwContents));
}
protected void doReload() throws Throwable {
String url = mServer.setResponse("/form", LOAD_RESPONSE, null);
String postData = "content=blabla";
byte[] data = EncodingUtils.getBytes(postData, "BASE64");
postUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), url, data);
assertEquals(0, mContentsClient.getResubmissions());
assertEquals("Load", getTitleOnUiThread(mAwContents));
mServer.setResponse("/form", RELOAD_RESPONSE, null);
TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper =
mContentsClient.getOnPageFinishedHelper();
int callCount = onPageFinishedHelper.getCallCount();
getInstrumentation().runOnMainSync(new Runnable() {
@Override
public void run() {
mAwContents.getContentViewCore().reload(true);
}
});
try {
onPageFinishedHelper.waitForCallback(callCount, 1, TIMEOUT, TimeUnit.SECONDS);
} catch (TimeoutException e) {
}
}
}