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

Side by Side Diff: content/renderer/render_frame_impl.cc

Issue 138333006: Now that RenderFrame is 1:1 with WebFrame, add the associated getters and start cleaning up assumpt… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 6 years, 11 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/render_frame_impl.h" 5 #include "content/renderer/render_frame_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 RenderFrameImpl* RenderFrameImpl::Create(RenderViewImpl* render_view, 108 RenderFrameImpl* RenderFrameImpl::Create(RenderViewImpl* render_view,
109 int32 routing_id) { 109 int32 routing_id) {
110 DCHECK(routing_id != MSG_ROUTING_NONE); 110 DCHECK(routing_id != MSG_ROUTING_NONE);
111 111
112 if (g_create_render_frame_impl) 112 if (g_create_render_frame_impl)
113 return g_create_render_frame_impl(render_view, routing_id); 113 return g_create_render_frame_impl(render_view, routing_id);
114 else 114 else
115 return new RenderFrameImpl(render_view, routing_id); 115 return new RenderFrameImpl(render_view, routing_id);
116 } 116 }
117 117
118 RenderFrameImpl* RenderFrameImpl::FindByWebFrame(blink::WebFrame* web_frame) { 118 // static
119 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kSitePerProcess)) { 119 RenderFrame* RenderFrame::FromWebFrame(blink::WebFrame* web_frame) {
120 FrameMap::iterator iter = g_frame_map.Get().find(web_frame); 120 return RenderFrameImpl::FromWebFrame(web_frame);
121 if (iter != g_frame_map.Get().end()) 121 }
122 return iter->second;
123 }
124 122
123 RenderFrameImpl* RenderFrameImpl::FromWebFrame(blink::WebFrame* web_frame) {
124 FrameMap::iterator iter = g_frame_map.Get().find(web_frame);
125 if (iter != g_frame_map.Get().end())
126 return iter->second;
125 return NULL; 127 return NULL;
126 } 128 }
127 129
128 // static 130 // static
129 void RenderFrameImpl::InstallCreateHook( 131 void RenderFrameImpl::InstallCreateHook(
130 RenderFrameImpl* (*create_render_frame_impl)(RenderViewImpl*, int32)) { 132 RenderFrameImpl* (*create_render_frame_impl)(RenderViewImpl*, int32)) {
131 CHECK(!g_create_render_frame_impl); 133 CHECK(!g_create_render_frame_impl);
132 g_create_render_frame_impl = create_render_frame_impl; 134 g_create_render_frame_impl = create_render_frame_impl;
133 } 135 }
134 136
135 // RenderFrameImpl ---------------------------------------------------------- 137 // RenderFrameImpl ----------------------------------------------------------
136 RenderFrameImpl::RenderFrameImpl(RenderViewImpl* render_view, int routing_id) 138 RenderFrameImpl::RenderFrameImpl(RenderViewImpl* render_view, int routing_id)
137 : frame_(NULL), 139 : frame_(NULL),
138 render_view_(render_view), 140 render_view_(render_view),
139 routing_id_(routing_id), 141 routing_id_(routing_id),
140 is_swapped_out_(false), 142 is_swapped_out_(false),
141 is_detaching_(false), 143 is_detaching_(false),
142 cookie_jar_(this) { 144 cookie_jar_(this) {
143 RenderThread::Get()->AddRoute(routing_id_, this); 145 RenderThread::Get()->AddRoute(routing_id_, this);
144 #if defined(ENABLE_PLUGINS)
145 new PepperBrowserConnection(this);
146 #endif
147 new SharedWorkerRepository(this);
148
149 GetContentClient()->renderer()->RenderFrameCreated(this);
150 } 146 }
151 147
152 RenderFrameImpl::~RenderFrameImpl() { 148 RenderFrameImpl::~RenderFrameImpl() {
153 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, RenderFrameGone()); 149 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, RenderFrameGone());
154 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnDestruct()); 150 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnDestruct());
155 RenderThread::Get()->RemoveRoute(routing_id_); 151 RenderThread::Get()->RemoveRoute(routing_id_);
156 } 152 }
157 153
158 // TODO(nasko): Overload the delete operator to overwrite the freed 154 // TODO(nasko): Overload the delete operator to overwrite the freed
159 // RenderFrameImpl object and help detect potential use-after-free bug. 155 // RenderFrameImpl object and help detect potential use-after-free bug.
160 // See https://crbug.com/245126#c34. 156 // See https://crbug.com/245126#c34.
161 void RenderFrameImpl::operator delete(void* ptr) { 157 void RenderFrameImpl::operator delete(void* ptr) {
162 memset(ptr, 0xAF, sizeof(RenderFrameImpl)); 158 memset(ptr, 0xAF, sizeof(RenderFrameImpl));
163 } 159 }
164 160
165 void RenderFrameImpl::MainWebFrameCreated(blink::WebFrame* frame) {
166 std::pair<FrameMap::iterator, bool> result = g_frame_map.Get().insert(
167 std::make_pair(frame, this));
168 CHECK(result.second) << "Inserting a duplicate item.";
169
170 FOR_EACH_OBSERVER(RenderFrameObserver, observers_,
171 WebFrameCreated(frame));
172 }
173
174 void RenderFrameImpl::SetWebFrame(blink::WebFrame* web_frame) { 161 void RenderFrameImpl::SetWebFrame(blink::WebFrame* web_frame) {
175 DCHECK(!frame_); 162 DCHECK(!frame_);
176 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kSitePerProcess)) 163
177 frame_ = web_frame; 164 std::pair<FrameMap::iterator, bool> result = g_frame_map.Get().insert(
165 std::make_pair(web_frame, this));
166 CHECK(result.second) << "Inserting a duplicate item.";
167
168 frame_ = web_frame;
169
170 #if defined(ENABLE_PLUGINS)
171 new PepperBrowserConnection(this);
172 #endif
173 new SharedWorkerRepository(this);
174
175 // We delay calling this until we have the WebFrame so that any observer or
176 // embedder can call GetWebFrame on any RenderFrame.
177 GetContentClient()->renderer()->RenderFrameCreated(this);
178 } 178 }
179 179
180 RenderWidget* RenderFrameImpl::GetRenderWidget() { 180 RenderWidget* RenderFrameImpl::GetRenderWidget() {
181 return render_view_; 181 return render_view_;
182 } 182 }
183 183
184 #if defined(ENABLE_PLUGINS) 184 #if defined(ENABLE_PLUGINS)
185 void RenderFrameImpl::PepperPluginCreated(RendererPpapiHost* host) { 185 void RenderFrameImpl::PepperPluginCreated(RendererPpapiHost* host) {
186 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, 186 FOR_EACH_OBSERVER(RenderFrameObserver, observers_,
187 DidCreatePepperPlugin(host)); 187 DidCreatePepperPlugin(host));
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 } 433 }
434 434
435 RenderView* RenderFrameImpl::GetRenderView() { 435 RenderView* RenderFrameImpl::GetRenderView() {
436 return render_view_; 436 return render_view_;
437 } 437 }
438 438
439 int RenderFrameImpl::GetRoutingID() { 439 int RenderFrameImpl::GetRoutingID() {
440 return routing_id_; 440 return routing_id_;
441 } 441 }
442 442
443 blink::WebFrame* RenderFrameImpl::GetWebFrame() {
444 DCHECK(frame_);
445 return frame_;
446 }
447
443 WebPreferences& RenderFrameImpl::GetWebkitPreferences() { 448 WebPreferences& RenderFrameImpl::GetWebkitPreferences() {
444 return render_view_->GetWebkitPreferences(); 449 return render_view_->GetWebkitPreferences();
445 } 450 }
446 451
447 int RenderFrameImpl::ShowContextMenu(ContextMenuClient* client, 452 int RenderFrameImpl::ShowContextMenu(ContextMenuClient* client,
448 const ContextMenuParams& params) { 453 const ContextMenuParams& params) {
449 return render_view_->ShowContextMenu(client, params); 454 return render_view_->ShowContextMenu(client, params);
450 } 455 }
451 456
452 void RenderFrameImpl::CancelContextMenu(int request_id) { 457 void RenderFrameImpl::CancelContextMenu(int request_id) {
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
580 RenderFrameImpl* child_render_frame = RenderFrameImpl::Create(render_view_, 585 RenderFrameImpl* child_render_frame = RenderFrameImpl::Create(render_view_,
581 routing_id); 586 routing_id);
582 // TODO(nasko): Over-conservative check for debugging. 587 // TODO(nasko): Over-conservative check for debugging.
583 CHECK(child_render_frame); 588 CHECK(child_render_frame);
584 blink::WebFrame* web_frame = WebFrame::create(child_render_frame, 589 blink::WebFrame* web_frame = WebFrame::create(child_render_frame,
585 child_frame_identifier); 590 child_frame_identifier);
586 // TODO(nasko): Over-conservative check for debugging. 591 // TODO(nasko): Over-conservative check for debugging.
587 CHECK(web_frame); 592 CHECK(web_frame);
588 child_render_frame->SetWebFrame(web_frame); 593 child_render_frame->SetWebFrame(web_frame);
589 594
590 std::pair<FrameMap::iterator, bool> result = g_frame_map.Get().insert(
591 std::make_pair(web_frame, child_render_frame));
592 CHECK(result.second) << "Inserting a duplicate item.";
593
594 FOR_EACH_OBSERVER(RenderFrameObserver, observers_,
595 WebFrameCreated(web_frame));
596 return web_frame; 595 return web_frame;
597 } 596 }
598 597
599 void RenderFrameImpl::didDisownOpener(blink::WebFrame* frame) { 598 void RenderFrameImpl::didDisownOpener(blink::WebFrame* frame) {
600 render_view_->didDisownOpener(frame); 599 render_view_->didDisownOpener(frame);
601 } 600 }
602 601
603 void RenderFrameImpl::frameDetached(blink::WebFrame* frame) { 602 void RenderFrameImpl::frameDetached(blink::WebFrame* frame) {
604 // NOTE: This function is called on the frame that is being detached and not 603 // NOTE: This function is called on the frame that is being detached and not
605 // the parent frame. This is different from createChildFrame() which is 604 // the parent frame. This is different from createChildFrame() which is
(...skipping 828 matching lines...) Expand 10 before | Expand all | Expand 10 after
1434 void RenderFrameImpl::AddObserver(RenderFrameObserver* observer) { 1433 void RenderFrameImpl::AddObserver(RenderFrameObserver* observer) {
1435 observers_.AddObserver(observer); 1434 observers_.AddObserver(observer);
1436 } 1435 }
1437 1436
1438 void RenderFrameImpl::RemoveObserver(RenderFrameObserver* observer) { 1437 void RenderFrameImpl::RemoveObserver(RenderFrameObserver* observer) {
1439 observer->RenderFrameGone(); 1438 observer->RenderFrameGone();
1440 observers_.RemoveObserver(observer); 1439 observers_.RemoveObserver(observer);
1441 } 1440 }
1442 1441
1443 } // namespace content 1442 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698