summaryrefslogtreecommitdiffstats
path: root/chromium/content/renderer/resource_fetcher_browsertest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/renderer/resource_fetcher_browsertest.cc')
-rw-r--r--chromium/content/renderer/resource_fetcher_browsertest.cc149
1 files changed, 123 insertions, 26 deletions
diff --git a/chromium/content/renderer/resource_fetcher_browsertest.cc b/chromium/content/renderer/resource_fetcher_browsertest.cc
index a9498cb0823..2919f58f1e7 100644
--- a/chromium/content/renderer/resource_fetcher_browsertest.cc
+++ b/chromium/content/renderer/resource_fetcher_browsertest.cc
@@ -13,10 +13,10 @@
#include "content/public/common/content_switches.h"
#include "content/public/common/url_constants.h"
#include "content/public/renderer/render_view.h"
+#include "content/public/test/content_browser_test.h"
+#include "content/public/test/content_browser_test_utils.h"
#include "content/public/test/test_utils.h"
#include "content/shell/browser/shell.h"
-#include "content/test/content_browser_test.h"
-#include "content/test/content_browser_test_utils.h"
#include "third_party/WebKit/public/platform/WebURLResponse.h"
#include "third_party/WebKit/public/web/WebFrame.h"
#include "third_party/WebKit/public/web/WebView.h"
@@ -25,6 +25,13 @@ using blink::WebFrame;
using blink::WebURLRequest;
using blink::WebURLResponse;
+namespace {
+
+// The first RenderFrame is routing ID 1, and the first RenderView is 2.
+const int kRenderViewRoutingId = 2;
+
+}
+
namespace content {
static const int kMaxWaitTimeMs = 5000;
@@ -126,24 +133,25 @@ class ResourceFetcherTests : public ContentBrowserTest {
public:
virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
command_line->AppendSwitch(switches::kSingleProcess);
-#if defined(OS_WIN) && defined(USE_AURA)
+#if defined(OS_WIN)
// Don't want to try to create a GPU process.
- command_line->AppendSwitch(switches::kDisableAcceleratedCompositing);
+ command_line->AppendSwitch(switches::kDisableGpu);
#endif
}
RenderView* GetRenderView() {
// We could have the test on the UI thread get the WebContent's routing ID,
// but we know this will be the first RV so skip that and just hardcode it.
- return RenderView::FromRoutingID(1);
+ return RenderView::FromRoutingID(kRenderViewRoutingId);
}
void ResourceFetcherDownloadOnRenderer(const GURL& url) {
WebFrame* frame = GetRenderView()->GetWebView()->mainFrame();
scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate);
- scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(
- url, frame, WebURLRequest::TargetIsMainFrame, delegate->NewCallback()));
+ scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url));
+ fetcher->Start(frame, WebURLRequest::TargetIsMainFrame,
+ delegate->NewCallback());
delegate->WaitForResponse();
@@ -157,8 +165,9 @@ class ResourceFetcherTests : public ContentBrowserTest {
WebFrame* frame = GetRenderView()->GetWebView()->mainFrame();
scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate);
- scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(
- url, frame, WebURLRequest::TargetIsMainFrame, delegate->NewCallback()));
+ scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url));
+ fetcher->Start(frame, WebURLRequest::TargetIsMainFrame,
+ delegate->NewCallback());
delegate->WaitForResponse();
@@ -173,8 +182,9 @@ class ResourceFetcherTests : public ContentBrowserTest {
// Try to fetch a page on a site that doesn't exist.
GURL url("http://localhost:1339/doesnotexist");
scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate);
- scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(
- url, frame, WebURLRequest::TargetIsMainFrame, delegate->NewCallback()));
+ scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url));
+ fetcher->Start(frame, WebURLRequest::TargetIsMainFrame,
+ delegate->NewCallback());
delegate->WaitForResponse();
@@ -190,9 +200,9 @@ class ResourceFetcherTests : public ContentBrowserTest {
WebFrame* frame = GetRenderView()->GetWebView()->mainFrame();
scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate);
- scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(
- url, frame, WebURLRequest::TargetIsMainFrame,
- delegate->NewCallback()));
+ scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url));
+ fetcher->Start(frame, WebURLRequest::TargetIsMainFrame,
+ delegate->NewCallback());
fetcher->SetTimeout(base::TimeDelta());
delegate->WaitForResponse();
@@ -209,22 +219,76 @@ class ResourceFetcherTests : public ContentBrowserTest {
WebFrame* frame = GetRenderView()->GetWebView()->mainFrame();
scoped_ptr<EvilFetcherDelegate> delegate(new EvilFetcherDelegate);
- scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(
- url, frame, WebURLRequest::TargetIsMainFrame,
- delegate->NewCallback()));
+ scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url));
+ fetcher->Start(frame, WebURLRequest::TargetIsMainFrame,
+ delegate->NewCallback());
fetcher->SetTimeout(base::TimeDelta());
delegate->SetFetcher(fetcher.release());
delegate->WaitForResponse();
EXPECT_FALSE(delegate->timed_out());
}
+
+ void ResourceFetcherPost(const GURL& url) {
+ const char* kBody = "Really nifty POST body!";
+
+ WebFrame* frame = GetRenderView()->GetWebView()->mainFrame();
+
+ scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate);
+ scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url));
+ fetcher->SetMethod("POST");
+ fetcher->SetBody(kBody);
+ fetcher->Start(frame, WebURLRequest::TargetIsMainFrame,
+ delegate->NewCallback());
+
+ delegate->WaitForResponse();
+ ASSERT_TRUE(delegate->completed());
+ EXPECT_EQ(delegate->response().httpStatusCode(), 200);
+ EXPECT_EQ(kBody, delegate->data());
+ }
+
+ void ResourceFetcherSetHeader(const GURL& url) {
+ const char* kHeader = "Rather boring header.";
+
+ WebFrame* frame = GetRenderView()->GetWebView()->mainFrame();
+
+ scoped_ptr<FetcherDelegate> delegate(new FetcherDelegate);
+ scoped_ptr<ResourceFetcher> fetcher(ResourceFetcher::Create(url));
+ fetcher->SetHeader("header", kHeader);
+ fetcher->Start(frame, WebURLRequest::TargetIsMainFrame,
+ delegate->NewCallback());
+
+ delegate->WaitForResponse();
+ ASSERT_TRUE(delegate->completed());
+ EXPECT_EQ(delegate->response().httpStatusCode(), 200);
+ EXPECT_EQ(kHeader, delegate->data());
+ }
};
+#if defined(OS_ANDROID)
+// Disable (http://crbug.com/248796).
+#define MAYBE_ResourceFetcher404 DISABLED_ResourceFetcher404
+#define MAYBE_ResourceFetcherDeletedInCallback \
+ DISABLED_ResourceFetcherDeletedInCallback
+#define MAYBE_ResourceFetcherTimeout DISABLED_ResourceFetcherTimeout
+#define MAYBE_ResourceFetcherDownload DISABLED_ResourceFetcherDownload
+// Disable (http://crbug.com/341142).
+#define MAYBE_ResourceFetcherPost DISABLED_ResourceFetcherPost
+#define MAYBE_ResourceFetcherSetHeader DISABLED_ResourceFetcherSetHeader
+#else
+#define MAYBE_ResourceFetcher404 ResourceFetcher404
+#define MAYBE_ResourceFetcherDeletedInCallback ResourceFetcherDeletedInCallback
+#define MAYBE_ResourceFetcherTimeout ResourceFetcherTimeout
+#define MAYBE_ResourceFetcherDownload ResourceFetcherDownload
+#define MAYBE_ResourceFetcherPost ResourceFetcherPost
+#define MAYBE_ResourceFetcherSetHeader ResourceFetcherSetHeader
+#endif
+
// Test a fetch from the test server.
// If this flakes, use http://crbug.com/51622.
-IN_PROC_BROWSER_TEST_F(ResourceFetcherTests, ResourceFetcherDownload) {
+IN_PROC_BROWSER_TEST_F(ResourceFetcherTests, MAYBE_ResourceFetcherDownload) {
// Need to spin up the renderer.
- NavigateToURL(shell(), GURL(kAboutBlankURL));
+ NavigateToURL(shell(), GURL(url::kAboutBlankURL));
ASSERT_TRUE(test_server()->Start());
GURL url(test_server()->GetURL("files/simple_page.html"));
@@ -234,9 +298,9 @@ IN_PROC_BROWSER_TEST_F(ResourceFetcherTests, ResourceFetcherDownload) {
base::Unretained(this), url));
}
-IN_PROC_BROWSER_TEST_F(ResourceFetcherTests, ResourceFetcher404) {
+IN_PROC_BROWSER_TEST_F(ResourceFetcherTests, MAYBE_ResourceFetcher404) {
// Need to spin up the renderer.
- NavigateToURL(shell(), GURL(kAboutBlankURL));
+ NavigateToURL(shell(), GURL(url::kAboutBlankURL));
// Test 404 response.
ASSERT_TRUE(test_server()->Start());
@@ -250,16 +314,16 @@ IN_PROC_BROWSER_TEST_F(ResourceFetcherTests, ResourceFetcher404) {
// If this flakes, use http://crbug.com/51622.
IN_PROC_BROWSER_TEST_F(ResourceFetcherTests, ResourceFetcherDidFail) {
// Need to spin up the renderer.
- NavigateToURL(shell(), GURL(kAboutBlankURL));
+ NavigateToURL(shell(), GURL(url::kAboutBlankURL));
PostTaskToInProcessRendererAndWait(
base::Bind(&ResourceFetcherTests::ResourceFetcherDidFailOnRenderer,
base::Unretained(this)));
}
-IN_PROC_BROWSER_TEST_F(ResourceFetcherTests, ResourceFetcherTimeout) {
+IN_PROC_BROWSER_TEST_F(ResourceFetcherTests, MAYBE_ResourceFetcherTimeout) {
// Need to spin up the renderer.
- NavigateToURL(shell(), GURL(kAboutBlankURL));
+ NavigateToURL(shell(), GURL(url::kAboutBlankURL));
// Grab a page that takes at least 1 sec to respond, but set the fetcher to
// timeout in 0 sec.
@@ -271,9 +335,10 @@ IN_PROC_BROWSER_TEST_F(ResourceFetcherTests, ResourceFetcherTimeout) {
base::Unretained(this), url));
}
-IN_PROC_BROWSER_TEST_F(ResourceFetcherTests, ResourceFetcherDeletedInCallback) {
+IN_PROC_BROWSER_TEST_F(ResourceFetcherTests,
+ MAYBE_ResourceFetcherDeletedInCallback) {
// Need to spin up the renderer.
- NavigateToURL(shell(), GURL(kAboutBlankURL));
+ NavigateToURL(shell(), GURL(url::kAboutBlankURL));
// Grab a page that takes at least 1 sec to respond, but set the fetcher to
// timeout in 0 sec.
@@ -286,4 +351,36 @@ IN_PROC_BROWSER_TEST_F(ResourceFetcherTests, ResourceFetcherDeletedInCallback) {
base::Unretained(this), url));
}
+
+
+// Test that ResourceFetchers can handle POSTs.
+IN_PROC_BROWSER_TEST_F(ResourceFetcherTests, MAYBE_ResourceFetcherPost) {
+ // Need to spin up the renderer.
+ NavigateToURL(shell(), GURL(url::kAboutBlankURL));
+
+ // Grab a page that echos the POST body.
+ ASSERT_TRUE(test_server()->Start());
+ GURL url(test_server()->GetURL("echo"));
+
+ PostTaskToInProcessRendererAndWait(
+ base::Bind(
+ &ResourceFetcherTests::ResourceFetcherPost,
+ base::Unretained(this), url));
+}
+
+// Test that ResourceFetchers can set headers.
+IN_PROC_BROWSER_TEST_F(ResourceFetcherTests, MAYBE_ResourceFetcherSetHeader) {
+ // Need to spin up the renderer.
+ NavigateToURL(shell(), GURL(url::kAboutBlankURL));
+
+ // Grab a page that echos the POST body.
+ ASSERT_TRUE(test_server()->Start());
+ GURL url(test_server()->GetURL("echoheader?header"));
+
+ PostTaskToInProcessRendererAndWait(
+ base::Bind(
+ &ResourceFetcherTests::ResourceFetcherSetHeader,
+ base::Unretained(this), url));
+}
+
} // namespace content