Index: chrome/browser/apps/web_view_browsertest.cc |
diff --git a/chrome/browser/apps/web_view_browsertest.cc b/chrome/browser/apps/web_view_browsertest.cc |
index 87f9fcdb59a8dab5612259873fddf0800757d77c..ed11fef02ea71cc5cf67d05d9ae9933b4f1e07ae 100644 |
--- a/chrome/browser/apps/web_view_browsertest.cc |
+++ b/chrome/browser/apps/web_view_browsertest.cc |
@@ -69,6 +69,7 @@ using ui::MenuModel; |
namespace { |
const char kEmptyResponsePath[] = "/close-socket"; |
const char kRedirectResponsePath[] = "/server-redirect"; |
+const char kUserAgentRedirectResponsePath[] = "/detect-user-agent"; |
const char kRedirectResponseFullPath[] = |
"/extensions/platform_apps/web_view/shim/guest_redirect.html"; |
@@ -470,6 +471,28 @@ class WebViewTest : public extensions::PlatformAppBrowserTest { |
} |
} |
+ // 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. |
static scoped_ptr<net::test_server::HttpResponse> RedirectResponseHandler( |
const std::string& path, |
@@ -537,6 +560,12 @@ class WebViewTest : public extensions::PlatformAppBrowserTest { |
embedded_test_server()->RegisterRequestHandler( |
base::Bind(&WebViewTest::EmptyResponseHandler, kEmptyResponsePath)); |
+ |
+ embedded_test_server()->RegisterRequestHandler( |
lfg
2014/10/08 17:23:31
The request handler should be defined in web_view_
Fady Samuel
2014/10/08 19:18:50
Done.
|
+ base::Bind( |
+ &WebViewTest::UserAgentResponseHandler, |
+ kUserAgentRedirectResponsePath, |
+ embedded_test_server()->GetURL(kRedirectResponseFullPath))); |
} |
LoadAndLaunchPlatformApp(app_location.c_str(), "Launched"); |
@@ -1028,6 +1057,12 @@ IN_PROC_BROWSER_TEST_F(WebViewTest, Shim_TestWebRequestAPI) { |
TestHelper("testWebRequestAPI", "web_view/shim", NEEDS_TEST_SERVER); |
} |
+IN_PROC_BROWSER_TEST_F(WebViewTest, Shim_TestWebRequestAPIWithHeaders) { |
+ TestHelper("testWebRequestAPIWithHeaders", |
+ "web_view/shim", |
+ NEEDS_TEST_SERVER); |
+} |
+ |
IN_PROC_BROWSER_TEST_F(WebViewTest, Shim_TestWebRequestAPIGoogleProperty) { |
TestHelper("testWebRequestAPIGoogleProperty", |
"web_view/shim", |