Chromium Code Reviews| Index: content/browser/tab_contents/tab_contents.cc |
| diff --git a/content/browser/tab_contents/tab_contents.cc b/content/browser/tab_contents/tab_contents.cc |
| index 284ea262ceb60729a025007b63b7a9ee33e3a504..f6b57add072e7891c7439094c953df3a8a92ea3e 100644 |
| --- a/content/browser/tab_contents/tab_contents.cc |
| +++ b/content/browser/tab_contents/tab_contents.cc |
| @@ -167,6 +167,10 @@ void MakeNavigateParams(const NavigationEntry& entry, |
| GetNavigationType(controller.browser_context(), entry, reload_type); |
| params->request_time = base::Time::Now(); |
| params->extra_headers = entry.extra_headers(); |
| + params->transferred_request_child_id = |
| + entry.transferred_global_request_id().child_id; |
| + params->transferred_request_request_id = |
| + entry.transferred_global_request_id().request_id; |
| if (delegate) |
| delegate->AddNavigationHeaders(params->url, ¶ms->extra_headers); |
| @@ -576,8 +580,8 @@ TabContents* TabContents::OpenURL(const GURL& url, |
| // For specifying a referrer, use the version of OpenURL taking OpenURLParams. |
| DCHECK(referrer.is_empty()); |
| return OpenURL(OpenURLParams(url, referrer, disposition, transition, |
| - false)); |
| -} |
| + false)); |
| + |
|
Charlie Reis
2011/12/02 22:38:11
Typo?
Matt Perry
2011/12/03 00:14:24
Done.
|
| TabContents* TabContents::OpenURL(const OpenURLParams& params) { |
| if (delegate_) { |
| @@ -1750,6 +1754,17 @@ void TabContents::RequestOpenURL(const GURL& url, |
| const GURL& referrer, |
| WindowOpenDisposition disposition, |
| int64 source_frame_id) { |
| + // Delegate to RequestTransferURL because this is just the generic |
| + // case where |old_request_id| is empty. |
| + RequestTransferURL(url, referrer, disposition, source_frame_id, |
| + GlobalRequestID()); |
| +} |
| + |
| +void TabContents::RequestTransferURL(const GURL& url, |
| + const GURL& referrer, |
| + WindowOpenDisposition disposition, |
| + int64 source_frame_id, |
| + const GlobalRequestID& old_request_id) { |
| TabContents* new_contents = NULL; |
| content::PageTransition transition_type = content::PAGE_TRANSITION_LINK; |
| if (render_manager_.web_ui()) { |
| @@ -1761,13 +1776,17 @@ void TabContents::RequestOpenURL(const GURL& url, |
| // want web sites to see a referrer of "chrome://blah" (and some |
| // chrome: URLs might have search terms or other stuff we don't want to |
| // send to the site), so we send no referrer. |
| - new_contents = OpenURL(url, GURL(), disposition, |
| - render_manager_.web_ui()->link_transition_type()); |
| + OpenURLParams params(url, GURL(), disposition, |
| + render_manager_.web_ui()->link_transition_type(), |
| + false /* is_renderer_initiated */); |
| + params.transferred_global_request_id = old_request_id; |
| + new_contents = OpenURL(params); |
| transition_type = render_manager_.web_ui()->link_transition_type(); |
| } else { |
| - new_contents = OpenURL(OpenURLParams( |
| - url, referrer, disposition, content::PAGE_TRANSITION_LINK, |
| - true /* is_renderer_initiated */)); |
| + OpenURLParams params(url, referrer, disposition, |
| + content::PAGE_TRANSITION_LINK, true /* is_renderer_initiated */); |
| + params.transferred_global_request_id = old_request_id; |
| + new_contents = OpenURL(params); |
| } |
| if (new_contents) { |
| // Notify observers. |