| Index: extensions/browser/guest_view/web_view/web_view_apitest.cc
|
| diff --git a/extensions/browser/guest_view/web_view/web_view_apitest.cc b/extensions/browser/guest_view/web_view/web_view_apitest.cc
|
| index 6dfe43303937aa244016bb3386f94d2a1b289550..95d49ce692482137647b60546813a8757bed4742 100644
|
| --- a/extensions/browser/guest_view/web_view/web_view_apitest.cc
|
| +++ b/extensions/browser/guest_view/web_view/web_view_apitest.cc
|
| @@ -34,6 +34,7 @@ namespace {
|
| const char kEmptyResponsePath[] = "/close-socket";
|
| const char kRedirectResponsePath[] = "/server-redirect";
|
| const char kRedirectResponseFullPath[] = "/guest_redirect.html";
|
| +const char kUserAgentRedirectResponsePath[] = "/detect-user-agent";
|
| const char kTestDataDirectory[] = "testDataDirectory";
|
| const char kTestServerPort[] = "testServer.port";
|
| const char kTestWebSocketPort[] = "testWebSocketPort";
|
| @@ -45,6 +46,28 @@ class EmptyHttpResponse : public net::test_server::HttpResponse {
|
| }
|
| };
|
|
|
| +// Handles |request| by serving a redirect response if the |User-Agent| is
|
| +// foobar.
|
| +static scoped_ptr<net::test_server::HttpResponse> UserAgentResponseHandler(
|
| + const std::string& path,
|
| + const GURL& redirect_target,
|
| + const net::test_server::HttpRequest& request) {
|
| + if (!StartsWithASCII(path, request.relative_url, true))
|
| + return scoped_ptr<net::test_server::HttpResponse>();
|
| +
|
| + std::map<std::string, std::string>::const_iterator it =
|
| + request.headers.find("User-Agent");
|
| + EXPECT_TRUE(it != request.headers.end());
|
| + if (!StartsWithASCII("foobar", it->second, true))
|
| + return scoped_ptr<net::test_server::HttpResponse>();
|
| +
|
| + scoped_ptr<net::test_server::BasicHttpResponse> http_response(
|
| + new net::test_server::BasicHttpResponse);
|
| + http_response->set_code(net::HTTP_MOVED_PERMANENTLY);
|
| + http_response->AddCustomHeader("Location", redirect_target.spec());
|
| + return http_response.PassAs<net::test_server::HttpResponse>();
|
| +}
|
| +
|
| // Handles |request| by serving a redirect response.
|
| scoped_ptr<net::test_server::HttpResponse> RedirectResponseHandler(
|
| const std::string& path,
|
| @@ -145,6 +168,12 @@ void WebViewAPITest::StartTestServer() {
|
|
|
| embedded_test_server()->RegisterRequestHandler(
|
| base::Bind(&EmptyResponseHandler, kEmptyResponsePath));
|
| +
|
| + embedded_test_server()->RegisterRequestHandler(
|
| + base::Bind(
|
| + &UserAgentResponseHandler,
|
| + kUserAgentRedirectResponsePath,
|
| + embedded_test_server()->GetURL(kRedirectResponseFullPath)));
|
| }
|
|
|
| void WebViewAPITest::StopTestServer() {
|
| @@ -448,6 +477,12 @@ IN_PROC_BROWSER_TEST_F(WebViewAPITest, TestWebRequestAPI) {
|
| StopTestServer();
|
| }
|
|
|
| +IN_PROC_BROWSER_TEST_F(WebViewAPITest, TestWebRequestAPIWithHeaders) {
|
| + StartTestServer();
|
| + RunTest("testWebRequestAPIWithHeaders", "web_view/apitest");
|
| + StopTestServer();
|
| +}
|
| +
|
| // Tests the existence of WebRequest API event objects on the request
|
| // object, on the webview element, and hanging directly off webview.
|
| IN_PROC_BROWSER_TEST_F(WebViewAPITest, TestWebRequestAPIExistence) {
|
|
|