文件名:content/browser/renderer_host/render_view_host_impl.cc
函数:
RenderViewHostImpl::RenderViewHostImpl(
FrameTree* frame_tree,
SiteInstanceGroup* group,
const StoragePartitionConfig& storage_partition_config,
std::unique_ptr<RenderWidgetHostImpl> widget,
RenderViewHostDelegate* delegate,
int32_t routing_id,
int32_t main_frame_routing_id,
bool has_initialized_audio_host,
scoped_refptr<BrowsingContextState> main_browsing_context_state,
CreateRenderViewHostCase create_case)
: render_widget_host_(std::move(widget)),
delegate_(delegate),
render_view_host_map_id_(frame_tree->GetRenderViewHostMapId(group)),
site_instance_group_(group->GetWeakPtrToAllowDangling()),
storage_partition_config_(storage_partition_config),
routing_id_(routing_id),
main_frame_routing_id_(main_frame_routing_id),
frame_tree_(frame_tree),
main_browsing_context_state_(
main_browsing_context_state
? std::make_optional(main_browsing_context_state->GetSafeRef())
: std::nullopt),
is_speculative_(create_case == CreateRenderViewHostCase::kSpeculative) {
TRACE_EVENT("navigation", "RenderViewHostImpl::RenderViewHostImpl",
ChromeTrackEvent::kRenderViewHost, *this);
TRACE_EVENT_BEGIN("navigation", "RenderViewHost",
perfetto::Track::FromPointer(this),
"render_view_host_when_created", this);
DCHECK(delegate_);
DCHECK_NE(GetRoutingID(), render_widget_host_->GetRoutingID());
PerProcessRenderViewHostSet::GetOrCreateForProcess(GetProcess())