summaryrefslogtreecommitdiffstats
path: root/ppapi
diff options
context:
space:
mode:
authorviettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-14 18:38:47 +0000
committerviettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-14 18:38:47 +0000
commit9748b6404d71065c8e939a85241dbe95ea8b6879 (patch)
tree27405e3a1b643ccbbfd531cc582970a9daff12ab /ppapi
parent8d71797322893a3402cd86723726782bdca31285 (diff)
downloadchromium_src-9748b6404d71065c8e939a85241dbe95ea8b6879.zip
chromium_src-9748b6404d71065c8e939a85241dbe95ea8b6879.tar.gz
chromium_src-9748b6404d71065c8e939a85241dbe95ea8b6879.tar.bz2
Fix Pepper URL Loader callbacks.
(Previously committed r71334, reverted r71400. Added null check pointed out by jam.) Add some tests (for aborting calls). BUG=none TEST=ppapi_tests Review URL: http://codereview.chromium.org/6280005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71463 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r--ppapi/tests/test_file_io.cc5
-rw-r--r--ppapi/tests/test_url_loader.cc73
-rw-r--r--ppapi/tests/test_url_loader.h3
3 files changed, 74 insertions, 7 deletions
diff --git a/ppapi/tests/test_file_io.cc b/ppapi/tests/test_file_io.cc
index 11fe62b..9b12ed6 100644
--- a/ppapi/tests/test_file_io.cc
+++ b/ppapi/tests/test_file_io.cc
@@ -484,5 +484,10 @@ std::string TestFileIO::TestAbortCalls() {
}
}
+ // TODO(viettrungluu): Also test that Close() aborts callbacks.
+ // crbug.com/69457
+
PASS();
}
+
+// TODO(viettrungluu): Test Close(). crbug.com/69457
diff --git a/ppapi/tests/test_url_loader.cc b/ppapi/tests/test_url_loader.cc
index 8b0dfc6..72e6d40 100644
--- a/ppapi/tests/test_url_loader.cc
+++ b/ppapi/tests/test_url_loader.cc
@@ -1,10 +1,11 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ppapi/tests/test_url_loader.h"
#include <stdio.h>
+#include <string.h>
#include <string>
#include "ppapi/c/dev/ppb_file_io_dev.h"
@@ -50,6 +51,7 @@ void TestURLLoader::RunTest() {
RUN_TEST(SameOriginRestriction);
RUN_TEST(StreamToFile);
RUN_TEST(AuditURLRedirect);
+ RUN_TEST(AbortCalls);
}
std::string TestURLLoader::ReadEntireFile(pp::FileIO_Dev* file_io,
@@ -70,13 +72,13 @@ std::string TestURLLoader::ReadEntireFile(pp::FileIO_Dev* file_io,
data->append(buf, rv);
}
- return "";
+ PASS();
}
std::string TestURLLoader::ReadEntireResponseBody(pp::URLLoader* loader,
std::string* body) {
TestCompletionCallback callback;
- char buf[256];
+ char buf[2]; // Small so that multiple reads are needed.
for (;;) {
int32_t rv = loader->ReadResponseBody(buf, sizeof(buf), callback);
@@ -89,7 +91,7 @@ std::string TestURLLoader::ReadEntireResponseBody(pp::URLLoader* loader,
body->append(buf, rv);
}
- return "";
+ PASS();
}
std::string TestURLLoader::LoadAndCompareBody(
@@ -121,7 +123,7 @@ std::string TestURLLoader::LoadAndCompareBody(
if (body != expected_body)
return "URLLoader::ReadResponseBody returned unexpected content";
- return "";
+ PASS();
}
std::string TestURLLoader::TestBasicGET() {
@@ -296,7 +298,66 @@ std::string TestURLLoader::TestAuditURLRedirect() {
if (response_info.GetRedirectURL().AsString() != "www.google.com")
return "Redirect URL should be www.google.com";
- return "";
+ PASS();
+}
+
+std::string TestURLLoader::TestAbortCalls() {
+ pp::URLRequestInfo request;
+ request.SetURL("test_url_loader_data/hello.txt");
+
+ TestCompletionCallback callback;
+ int32_t rv;
+
+ // Abort |Open()|.
+ {
+ callback.reset_run_count();
+ rv = pp::URLLoader(*instance_).Open(request, callback);
+ if (callback.run_count() > 0)
+ return "URLLoader::Open ran callback synchronously.";
+ if (rv == PP_ERROR_WOULDBLOCK) {
+ rv = callback.WaitForResult();
+ if (rv != PP_ERROR_ABORTED)
+ return "URLLoader::Open not aborted.";
+ } else if (rv != PP_OK) {
+ return ReportError("URLLoader::Open", rv);
+ }
+ }
+
+ // Abort |ReadResponseBody()|.
+ {
+ char buf[2] = { 0 };
+ {
+ pp::URLLoader loader(*instance_);
+ rv = loader.Open(request, callback);
+ if (rv == PP_ERROR_WOULDBLOCK)
+ rv = callback.WaitForResult();
+ if (rv != PP_OK)
+ return ReportError("URLLoader::Open", rv);
+
+ callback.reset_run_count();
+ rv = loader.ReadResponseBody(buf, sizeof(buf), callback);
+ } // Destroy |loader|.
+ if (rv == PP_ERROR_WOULDBLOCK) {
+ // Save a copy and make sure |buf| doesn't get written to.
+ char buf_copy[2];
+ memcpy(&buf_copy, &buf, sizeof(buf));
+ rv = callback.WaitForResult();
+ if (rv != PP_ERROR_ABORTED)
+ return "URLLoader::ReadResponseBody not aborted.";
+ if (memcmp(&buf_copy, &buf, sizeof(buf)) != 0)
+ return "URLLoader::ReadResponseBody wrote data after resource "
+ "destruction.";
+ } else if (rv != PP_OK) {
+ return ReportError("URLLoader::ReadResponseBody", rv);
+ }
+ }
+
+ // TODO(viettrungluu): More abort tests (but add basic tests first).
+ // Also test that Close() aborts properly. crbug.com/69457
+
+ PASS();
}
+// TODO(viettrungluu): Add tests for FollowRedirect,
+// Get{Upload,Download}Progress, Close (including abort tests if applicable).
// TODO(darin): Add a test for GrantUniversalAccess.
diff --git a/ppapi/tests/test_url_loader.h b/ppapi/tests/test_url_loader.h
index 447b7e2..0b14bd2 100644
--- a/ppapi/tests/test_url_loader.h
+++ b/ppapi/tests/test_url_loader.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -42,6 +42,7 @@ class TestURLLoader : public TestCase {
std::string TestStreamToFile();
std::string TestSameOriginRestriction();
std::string TestAuditURLRedirect();
+ std::string TestAbortCalls();
const PPB_FileIOTrusted_Dev* file_io_trusted_interface_;
};