Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(940)

Unified Diff: content/browser/web_contents/web_contents_impl.cc

Issue 2383573002: [DO NOT COMMIT] Remove chrome::NOTIFICATION_RETARGETING
Patch Set: Rebase on ToT Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/frame_host/render_frame_host_impl.cc ('k') | content/public/browser/web_contents.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/web_contents/web_contents_impl.cc
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index e87e18dcaf6b5cd568197c03a428487ed61f9395..028e0eb54479963bd88d031e6a995a4f6a5b2786 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -575,6 +575,11 @@ WebContentsImpl* WebContentsImpl::CreateWithOpener(
const WebContents::CreateParams& params,
FrameTreeNode* opener) {
TRACE_EVENT0("browser", "WebContentsImpl::CreateWithOpener");
+ LOG(ERROR) << "WCI::CreateWithOpener: "
+ << " source_wc:" << params.source_web_contents
+ << " opener:" << opener
+ << " disposition:" << (int) params.disposition
+ << " context_menu:" << params.created_from_context_menu;
WebContentsImpl* new_contents = new WebContentsImpl(params.browser_context);
FrameTreeNode* new_root = new_contents->GetFrameTree()->root();
@@ -613,6 +618,25 @@ WebContentsImpl* WebContentsImpl::CreateWithOpener(
new_contents->is_subframe_ = true;
}
new_contents->Init(params);
+
+ if (params.source_web_contents &&
+ (params.created_from_context_menu || opener)) {
+ LOG(ERROR) << "WCI::CreateWithOpener: "
+ << " dispatching notification";
+ WebContentsImpl* opener_contents =
+ static_cast<WebContentsImpl*>(params.source_web_contents);
+ RenderFrameHost* opener_rfh = RenderFrameHost::FromID(
+ params.opener_render_process_id, params.opener_render_frame_id);
+ for (auto& observer : opener_contents->observers_) {
+ observer.DidOpenRequestedURL(new_contents,
+ opener_rfh ? opener_rfh
+ : opener_contents->GetMainFrame(),
+ params.target_url,
+ params.referrer,
+ params.disposition, params.transition);
+ }
+ }
+
return new_contents;
}
@@ -2056,6 +2080,13 @@ void WebContentsImpl::CreateNewWindow(
create_params.renderer_initiated_creation =
main_frame_route_id != MSG_ROUTING_NONE;
+ create_params.source_web_contents = this;
+ create_params.target_url = params.target_url;
+ create_params.disposition = params.disposition;
+ create_params.referrer = params.referrer;
+ // TODO(nasko): Check what page transition is needed.
+ create_params.transition = ui::PAGE_TRANSITION_LINK;
+
WebContentsImpl* new_contents = NULL;
if (!is_guest) {
create_params.context = view_->GetNativeView();
@@ -3295,21 +3326,7 @@ void WebContentsImpl::DidStartNavigationToPendingEntry(const GURL& url,
void WebContentsImpl::RequestOpenURL(RenderFrameHostImpl* render_frame_host,
const OpenURLParams& params) {
- // OpenURL can blow away the source RFH. Use the process/frame routing ID as a
- // weak pointer of sorts.
- const int32_t process_id = render_frame_host->GetProcess()->GetID();
- const int32_t frame_id = render_frame_host->GetRoutingID();
-
- WebContents* new_contents = OpenURL(params);
-
- if (new_contents && RenderFrameHost::FromID(process_id, frame_id)) {
- // Notify observers.
- for (auto& observer : observers_) {
- observer.DidOpenRequestedURL(new_contents, render_frame_host, params.url,
- params.referrer, params.disposition,
- params.transition);
- }
- }
+ OpenURL(params);
}
bool WebContentsImpl::ShouldTransferNavigation(bool is_main_frame_navigation) {
« no previous file with comments | « content/browser/frame_host/render_frame_host_impl.cc ('k') | content/public/browser/web_contents.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698