Commit 70d499be authored by Lukasz Anforowicz's avatar Lukasz Anforowicz Committed by Commit Bot

Use FillNavigateParamsFromOpenURLParams from more places.

This CL coverts two places that used to manually populate NavigateParams
from OpenURLParams, to instead rely on
FillNavigateParamsFromOpenURLParams (which correctly propagates all
relevant pieces of data from OpenURLParams, unlike the old, manual
propagation which would only copy a handful of properties).

This CL also augments FillNavigateParamsFromOpenURLParams to
cover 2 additional fields of NavigateParams: initiating_profile
and source_contents.

Bug: 1007041
Change-Id: I4b30d18699ce41bc188801ea80aeff549b26f573
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1854209
Commit-Queue: Łukasz Anforowicz <lukasza@chromium.org>
Reviewed-by: default avatarPeter Kasting <pkasting@chromium.org>
Reviewed-by: default avatarAlex Moshchuk <alexmos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#705356}
parent 87ccc994
......@@ -6,6 +6,7 @@
#include <memory>
#include <utility>
#include <vector>
#include "base/bind.h"
#include "base/macros.h"
......@@ -69,10 +70,12 @@ bool disable_external_open_for_testing_ = false;
content::WebContents* OpenURLFromTabInternal(
content::BrowserContext* context,
const content::OpenURLParams& params) {
NavigateParams new_tab_params(static_cast<Browser*>(nullptr), params.url,
params.transition);
new_tab_params.FillNavigateParamsFromOpenURLParams(params);
// Force all links to open in a new tab, even if they were trying to open a
// window.
NavigateParams new_tab_params(static_cast<Browser*>(NULL), params.url,
params.transition);
if (params.disposition == WindowOpenDisposition::NEW_BACKGROUND_TAB) {
new_tab_params.disposition = WindowOpenDisposition::NEW_BACKGROUND_TAB;
} else {
......@@ -143,6 +146,7 @@ class ChromeAppDelegate::NewWindowContentsDelegate
private:
std::vector<std::unique_ptr<content::WebContents>> owned_contents_;
DISALLOW_COPY_AND_ASSIGN(NewWindowContentsDelegate);
};
......
......@@ -4,9 +4,13 @@
#include "chrome/browser/ui/browser_navigator_params.h"
#include <utility>
#include "build/build_config.h"
#include "chrome/browser/profiles/profile.h"
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/page_navigator.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#if !defined(OS_ANDROID)
......@@ -50,6 +54,13 @@ void NavigateParams::FillNavigateParamsFromOpenURLParams(
this->referrer = params.referrer;
this->reload_type = params.reload_type;
this->source_site_instance = params.source_site_instance;
if (params.source_site_instance) {
this->initiating_profile =
static_cast<Profile*>(params.source_site_instance->GetBrowserContext());
}
this->source_contents = content::WebContents::FromRenderFrameHost(
content::RenderFrameHost::FromID(params.source_render_process_id,
params.source_render_frame_id));
this->frame_tree_node_id = params.frame_tree_node_id;
this->redirect_chain = params.redirect_chain;
this->extra_headers = params.extra_headers;
......@@ -64,4 +75,26 @@ void NavigateParams::FillNavigateParamsFromOpenURLParams(
this->user_gesture = params.user_gesture;
this->blob_url_loader_factory = params.blob_url_loader_factory;
this->href_translate = params.href_translate;
// Implementation notes:
// The following NavigateParams don't have an equivalent in OpenURLParams:
// browser
// contents_to_insert
// created_with_opener
// extension_app_id
// frame_name
// group
// input_start
// navigated_or_inserted_contents
// opener
// path_behavior
// switch_to_singleton_tab
// tabstrip_add_types
// tabstrip_index
// was_activated
// window_action
// window_bounds
//
// The following OpenURLParams don't have an equivalent in NavigateParams:
// triggering_event_info
}
......@@ -5,6 +5,7 @@
#ifndef CHROME_BROWSER_UI_BROWSER_NAVIGATOR_PARAMS_H_
#define CHROME_BROWSER_UI_BROWSER_NAVIGATOR_PARAMS_H_
#include <memory>
#include <string>
#include <vector>
......
......@@ -4,6 +4,8 @@
#include "chrome/browser/ui/webui/chrome_web_contents_handler.h"
#include <utility>
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_finder.h"
......@@ -46,7 +48,7 @@ WebContents* ChromeWebContentsHandler::OpenURLFromTab(
new Browser(Browser::CreateParams(Browser::TYPE_NORMAL, profile, true));
}
NavigateParams nav_params(browser, params.url, params.transition);
nav_params.referrer = params.referrer;
nav_params.FillNavigateParamsFromOpenURLParams(params);
if (source && source->IsCrashed() &&
params.disposition == WindowOpenDisposition::CURRENT_TAB &&
ui::PageTransitionCoreTypeIs(params.transition,
......@@ -56,7 +58,6 @@ WebContents* ChromeWebContentsHandler::OpenURLFromTab(
nav_params.disposition = params.disposition;
}
nav_params.window_action = NavigateParams::SHOW_WINDOW;
nav_params.user_gesture = true;
Navigate(&nav_params);
// Close the browser if chrome::Navigate created a new one.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment