Index: content/browser/loader/resource_dispatcher_host_browsertest.cc |
diff --git a/content/browser/loader/resource_dispatcher_host_browsertest.cc b/content/browser/loader/resource_dispatcher_host_browsertest.cc |
index 8673c07b086b691b3899b205068658d9ee88f05a..d07f903c3bf3c3fcc989331169d52f474bc120a6 100644 |
--- a/content/browser/loader/resource_dispatcher_host_browsertest.cc |
+++ b/content/browser/loader/resource_dispatcher_host_browsertest.cc |
@@ -10,6 +10,9 @@ |
#include "content/browser/web_contents/web_contents_impl.h" |
#include "content/public/browser/browser_context.h" |
#include "content/public/browser/browser_thread.h" |
+#include "content/public/browser/resource_dispatcher_host.h" |
+#include "content/public/browser/resource_dispatcher_host_delegate.h" |
+#include "content/public/browser/resource_request_info.h" |
#include "content/public/browser/web_contents.h" |
#include "content/public/common/url_constants.h" |
#include "content/public/test/browser_test_utils.h" |
@@ -472,4 +475,49 @@ IN_PROC_BROWSER_TEST_F(ResourceDispatcherHostBrowserTest, CookiePolicy) { |
CheckTitleTest(url, "cookie set"); |
} |
+class PageTransitionResourceDispatcherHostDelegate |
+ : public ResourceDispatcherHostDelegate { |
+ public: |
+ PageTransitionResourceDispatcherHostDelegate(GURL watch_url) |
+ : watch_url_(watch_url) {} |
+ |
+ // ResourceDispatcherHostDelegate implementation: |
+ void RequestBeginning(net::URLRequest* request, |
+ ResourceContext* resource_context, |
+ AppCacheService* appcache_service, |
+ ResourceType resource_type, |
+ ScopedVector<ResourceThrottle>* throttles) override { |
+ if (request->url() == watch_url_) { |
+ const ResourceRequestInfo* info = |
+ ResourceRequestInfo::ForRequest(request); |
+ page_transition_ = info->GetPageTransition(); |
+ } |
+ } |
+ |
+ ui::PageTransition page_transition() { return page_transition_; } |
+ |
+ private: |
+ GURL watch_url_; |
+ ui::PageTransition page_transition_; |
+}; |
+ |
+// Test that ui::PAGE_TRANSITION_CLIENT_REDIRECT is correctly set |
+// when encountering a meta refresh tag. |
+IN_PROC_BROWSER_TEST_F(ResourceDispatcherHostBrowserTest, |
+ PageTransitionClientRedirect) { |
+ ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
+ |
+ PageTransitionResourceDispatcherHostDelegate delegate( |
+ embedded_test_server()->GetURL("/title1.html")); |
+ ResourceDispatcherHost::Get()->SetDelegate(&delegate); |
+ |
+ NavigateToURLBlockUntilNavigationsComplete( |
+ shell(), |
+ embedded_test_server()->GetURL("/client_redirect.html"), |
+ 2); |
+ |
+ EXPECT_TRUE( |
+ delegate.page_transition() & ui::PAGE_TRANSITION_CLIENT_REDIRECT); |
+} |
+ |
} // namespace content |