Index: content/browser/transition_browsertest.cc |
diff --git a/content/browser/transition_browsertest.cc b/content/browser/transition_browsertest.cc |
index d3287f0666212f55ee6baf77e37c580eafa2c1ca..147e771cd7f448ef983846b4bdc3f19b7beb2d71 100644 |
--- a/content/browser/transition_browsertest.cc |
+++ b/content/browser/transition_browsertest.cc |
@@ -43,7 +43,8 @@ class TransitionBrowserTestObserver |
: WebContentsObserver(web_contents), |
request_(NULL), |
did_defer_response_(false), |
- is_transition_request_(false) { |
+ is_transition_request_(false), |
+ did_clear_data_(false) { |
} |
void RequestBeginning(net::URLRequest* request, |
@@ -79,16 +80,31 @@ class TransitionBrowserTestObserver |
did_defer_response_ = info->cross_site_handler()->did_defer_for_testing(); |
} |
+ void RequestComplete(net::URLRequest* url_request) override { |
+ if (is_transition_request_) { |
+ ResourceRequestInfoImpl* info = |
+ ResourceRequestInfoImpl::ForRequest(request_); |
+ TransitionLayerData transition_data; |
+ did_clear_data_ = !TransitionRequestManager::GetInstance( |
+ )->HasPendingTransitionRequest(info->GetChildID(), |
+ info->GetRenderFrameID(), |
+ request_->url(), |
+ &transition_data); |
+ } |
+ } |
+ |
void set_pending_transition_request(bool is_transition_request) { |
is_transition_request_ = is_transition_request; |
} |
bool did_defer_response() const { return did_defer_response_; } |
+ bool did_clear_data() const { return did_clear_data_; } |
private: |
net::URLRequest* request_; |
bool did_defer_response_; |
bool is_transition_request_; |
+ bool did_clear_data_; |
}; |
// This tests that normal navigations don't defer at first response. |
@@ -156,4 +172,20 @@ IN_PROC_BROWSER_TEST_F(TransitionBrowserTest, |
EXPECT_EQ(outgoing_process_id, transition_process_id); |
} |
+// This tests that the transition data is cleared after the transition. |
+IN_PROC_BROWSER_TEST_F(TransitionBrowserTest, |
+ TransitionNavigationDataIsCleared) { |
+ ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
+ scoped_ptr<TransitionBrowserTestObserver> observer( |
+ new TransitionBrowserTestObserver(shell()->web_contents())); |
+ |
+ ResourceDispatcherHost::Get()->SetDelegate(observer.get()); |
+ observer->set_pending_transition_request(true); |
+ |
+ NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html")); |
+ WaitForLoadStop(shell()->web_contents()); |
+ |
+ EXPECT_TRUE(observer->did_clear_data()); |
+} |
+ |
} // namespace content |