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 a41cdb260b8e4372543204bdd996cae5d36ee182..6310ea8e4fc600117761263455604b77916fa35c 100644 |
| --- a/content/renderer/render_frame_impl.cc |
| +++ b/content/renderer/render_frame_impl.cc |
| @@ -29,6 +29,7 @@ |
| #include "base/strings/utf_string_conversions.h" |
| #include "base/thread_task_runner_handle.h" |
| #include "base/time/time.h" |
| +#include "base/trace_event/trace_event_argument.h" |
| #include "build/build_config.h" |
| #include "cc/base/switches.h" |
| #include "components/scheduler/renderer/renderer_scheduler.h" |
| @@ -1064,12 +1065,24 @@ RenderFrameImpl::~RenderFrameImpl() { |
| void RenderFrameImpl::BindToWebFrame(blink::WebLocalFrame* web_frame) { |
| DCHECK(!frame_); |
| + DCHECK(!blame_context_); |
| std::pair<FrameMap::iterator, bool> result = g_frame_map.Get().insert( |
| std::make_pair(web_frame, this)); |
| CHECK(result.second) << "Inserting a duplicate item."; |
| frame_ = web_frame; |
| + |
| + if (frame_->parent()) { |
|
benjhayden
2016/03/21 17:32:56
Maybe move this logic into RenderFrameBlameContext
Sami
2016/03/21 19:16:29
Good idea, done.
|
| + RenderFrameImpl* parent_frame = |
| + RenderFrameImpl::FromWebFrame(frame_->parent()); |
| + blame_context_ = make_scoped_ptr(new RenderFrameBlameContext( |
| + routing_id_, *parent_frame->blame_context_)); |
| + } else { |
| + blame_context_ = make_scoped_ptr(new RenderFrameBlameContext( |
| + routing_id_, *RenderThreadImpl::current()->blame_context())); |
| + } |
| + blame_context_->Initialize(); |
| } |
| void RenderFrameImpl::Initialize() { |
| @@ -2520,6 +2533,11 @@ blink::WebCookieJar* RenderFrameImpl::cookieJar() { |
| return &cookie_jar_; |
| } |
| +blink::BlameContext* RenderFrameImpl::frameBlameContext() { |
| + DCHECK(blame_context_); |
| + return blame_context_.get(); |
| +} |
| + |
| blink::WebServiceWorkerProvider* |
| RenderFrameImpl::createServiceWorkerProvider() { |
| // At this point we should have non-null data source. |
| @@ -3235,6 +3253,9 @@ void RenderFrameImpl::didCommitProvisionalLoad( |
| void RenderFrameImpl::didCreateNewDocument(blink::WebLocalFrame* frame) { |
| DCHECK(!frame_ || frame_ == frame); |
| + blame_context_->set_url(frame_->getSecurityOrigin().toString().utf8()); |
|
benjhayden
2016/03/21 17:32:56
Could you make the RenderFrameBlameContext observe
Sami
2016/03/21 19:16:29
Great idea, no need to add new explicit calls.
|
| + blame_context_->TakeSnapshot(); |
| + |
| FOR_EACH_OBSERVER(RenderFrameObserver, observers_, DidCreateNewDocument()); |
| FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(), |
| DidCreateNewDocument(frame)); |