Chromium Code Reviews| Index: content/renderer/render_frame_impl.cc |
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
| index 80613981ba14dd462bba29538f7a28b4f0fa65ba..790d24e595053a7a0d6c08875e17df4f1e54f597 100644 |
| --- a/content/renderer/render_frame_impl.cc |
| +++ b/content/renderer/render_frame_impl.cc |
| @@ -2625,6 +2625,26 @@ void RenderFrameImpl::didChangeOpener(blink::WebFrame* opener) { |
| // Only a local frame should be able to update another frame's opener. |
| DCHECK(!opener || opener->isWebLocalFrame()); |
| + // Carry over the user agent override flag, if it exists. |
| + blink::WebView* webview = render_view_->webview(); |
|
dcheng
2016/03/31 05:24:18
This doesn't get called at all when creating a new
|
| + if (opener && !pending_navigation_params_.get() && webview && |
| + webview->mainFrame() && webview->mainFrame()->isWebLocalFrame() && |
| + webview->mainFrame()->dataSource()) { |
| + if (webview->mainFrame()->dataSource()->request().url().isEmpty() && |
| + opener->dataSource()) { |
| + DocumentState* old_document_state = |
| + DocumentState::FromDataSource(opener->dataSource()); |
| + InternalDocumentStateData* internal_data = |
| + InternalDocumentStateData::FromDocumentState( |
| + DocumentState::FromDataSource( |
| + webview->mainFrame()->dataSource())); |
| + InternalDocumentStateData* old_internal_data = |
| + InternalDocumentStateData::FromDocumentState(old_document_state); |
| + internal_data->set_is_overriding_user_agent( |
| + old_internal_data->is_overriding_user_agent()); |
| + } |
| + } |
| + |
| int opener_routing_id = opener ? |
| RenderFrameImpl::FromWebFrame(opener->toWebLocalFrame())->GetRoutingID() : |
| MSG_ROUTING_NONE; |