| Index: components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/MinidumpUploadCallableTest.java
|
| diff --git a/components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/MinidumpUploadCallableTest.java b/components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/MinidumpUploadCallableTest.java
|
| index ec0845f62de2c774075f71db004c407308ca10f3..71380bedd57a9b647591e8dc99e4014a1265c242 100644
|
| --- a/components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/MinidumpUploadCallableTest.java
|
| +++ b/components/minidump_uploader/android/javatests/src/org/chromium/components/minidump_uploader/MinidumpUploadCallableTest.java
|
| @@ -38,8 +38,9 @@ public class MinidumpUploadCallableTest extends CrashTestCase {
|
| * minidumps correctly.
|
| */
|
| public static class TestHttpURLConnection extends HttpURLConnection {
|
| - private static final String EXPECTED_CONTENT_TYPE_VALUE =
|
| + static final String DEFAULT_EXPECTED_CONTENT_TYPE =
|
| String.format(MinidumpUploadCallable.CONTENT_TYPE_TMPL, BOUNDARY);
|
| + private final String mExpectedContentType;
|
|
|
| /**
|
| * The value of the "Content-Type" property if the property has been set.
|
| @@ -47,14 +48,19 @@ public class MinidumpUploadCallableTest extends CrashTestCase {
|
| private String mContentTypePropertyValue = "";
|
|
|
| public TestHttpURLConnection(URL url) {
|
| + this(url, DEFAULT_EXPECTED_CONTENT_TYPE);
|
| + }
|
| +
|
| + public TestHttpURLConnection(URL url, String contentType) {
|
| super(url);
|
| + mExpectedContentType = contentType;
|
| assertEquals(MinidumpUploadCallable.CRASH_URL_STRING, url.toString());
|
| }
|
|
|
| @Override
|
| public void disconnect() {
|
| // Check that the "Content-Type" property has been set and the property's value.
|
| - assertEquals(EXPECTED_CONTENT_TYPE_VALUE, mContentTypePropertyValue);
|
| + assertEquals(mExpectedContentType, mContentTypePropertyValue);
|
| }
|
|
|
| @Override
|
| @@ -99,10 +105,16 @@ public class MinidumpUploadCallableTest extends CrashTestCase {
|
| * minidumps correctly.
|
| */
|
| public static class TestHttpURLConnectionFactory implements HttpURLConnectionFactory {
|
| + String mContentType;
|
| +
|
| + public TestHttpURLConnectionFactory() {
|
| + mContentType = TestHttpURLConnection.DEFAULT_EXPECTED_CONTENT_TYPE;
|
| + }
|
| +
|
| @Override
|
| public HttpURLConnection createHttpURLConnection(String url) {
|
| try {
|
| - return new TestHttpURLConnection(new URL(url));
|
| + return new TestHttpURLConnection(new URL(url), mContentType);
|
| } catch (IOException e) {
|
| return null;
|
| }
|
| @@ -402,6 +414,54 @@ public class MinidumpUploadCallableTest extends CrashTestCase {
|
| assertTrue(mExpectedFileAfterUpload.exists());
|
| }
|
|
|
| + // This is a regression test for http://crbug.com/712420
|
| + @SmallTest
|
| + @Feature({"Android-AppBase"})
|
| + public void testCallWithInvalidMinidumpBoundary() throws Exception {
|
| + // Include an invalid character, '[', in the test string.
|
| + setUpMinidumpFile(mTestUpload, "--InvalidBoundaryWithSpecialCharacter--[");
|
| + CrashReportingPermissionManager testPermManager =
|
| + new MockCrashReportingPermissionManager() {
|
| + { mIsEnabledForTests = true; }
|
| + };
|
| + HttpURLConnectionFactory httpURLConnectionFactory = new TestHttpURLConnectionFactory() {
|
| + { mContentType = ""; }
|
| + };
|
| +
|
| + MinidumpUploadCallable minidumpUploadCallable =
|
| + new MockMinidumpUploadCallable(httpURLConnectionFactory, testPermManager);
|
| +
|
| + assertEquals(
|
| + MinidumpUploadCallable.UPLOAD_FAILURE, minidumpUploadCallable.call().intValue());
|
| + assertFalse(mExpectedFileAfterUpload.exists());
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Android-AppBase"})
|
| + public void testCallWithValidMinidumpBoundary() throws Exception {
|
| + // Include all valid characters in the test string.
|
| + final String boundary = "--0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
| + final String expectedContentType =
|
| + String.format(MinidumpUploadCallable.CONTENT_TYPE_TMPL, boundary);
|
| + CrashReportingPermissionManager testPermManager =
|
| + new MockCrashReportingPermissionManager() {
|
| + { mIsEnabledForTests = true; }
|
| + };
|
| + HttpURLConnectionFactory httpURLConnectionFactory = new TestHttpURLConnectionFactory() {
|
| + { mContentType = expectedContentType; }
|
| + };
|
| +
|
| + setUpMinidumpFile(mTestUpload, boundary);
|
| +
|
| + MinidumpUploadCallable minidumpUploadCallable =
|
| + new MockMinidumpUploadCallable(httpURLConnectionFactory, testPermManager);
|
| +
|
| + assertEquals(
|
| + MinidumpUploadCallable.UPLOAD_SUCCESS, minidumpUploadCallable.call().intValue());
|
| + assertTrue(mExpectedFileAfterUpload.exists());
|
| + assertValidUploadLogEntry();
|
| + }
|
| +
|
| @SmallTest
|
| @Feature({"Android-AppBase"})
|
| public void testReceivingErrorCodes() throws Exception {
|
|
|