Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index ffb0cfe11b9ad53199e9b7b2df660f50df16e9b4..f473a93201e317c57317a83b74a0539b165fa5f1 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -2629,13 +2629,18 @@ void RenderFrameImpl::willSendRequest( |
WebDataSource* data_source = |
provisional_data_source ? provisional_data_source : top_data_source; |
- ui::PageTransition transition_type = ui::PAGE_TRANSITION_LINK; |
DocumentState* document_state = DocumentState::FromDataSource(data_source); |
DCHECK(document_state); |
InternalDocumentStateData* internal_data = |
InternalDocumentStateData::FromDocumentState(document_state); |
NavigationState* navigation_state = document_state->navigation_state(); |
- transition_type = navigation_state->transition_type(); |
+ ui::PageTransition transition_type = navigation_state->transition_type(); |
+ WebDataSource* frame_ds = frame->provisionalDataSource(); |
+ if (frame_ds && frame_ds->isClientRedirect()) { |
+ transition_type = static_cast<ui::PageTransition>( |
+ transition_type | ui::PAGE_TRANSITION_CLIENT_REDIRECT); |
+ CHECK(ui::PageTransitionIsValidType(transition_type)); |
+ } |
GURL request_url(request.url()); |
GURL new_url; |