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

Side by Side Diff: content/browser/frame_host/render_frame_host_impl.cc

Issue 2758993002: Move the functions which block, resume and cancel requests for a frame route id out of ResourceDisp… (Closed)
Patch Set: Remove DCHECK for RDHI on the same lines as the old code Created 3 years, 9 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
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/browser/frame_host/render_frame_host_impl.h" 5 #include "content/browser/frame_host/render_frame_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 244
245 DISALLOW_COPY_AND_ASSIGN(RemoterFactoryImpl); 245 DISALLOW_COPY_AND_ASSIGN(RemoterFactoryImpl);
246 }; 246 };
247 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) 247 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING)
248 248
249 template <typename Interface> 249 template <typename Interface>
250 void IgnoreInterfaceRequest(mojo::InterfaceRequest<Interface> request) { 250 void IgnoreInterfaceRequest(mojo::InterfaceRequest<Interface> request) {
251 // Intentionally ignore the interface request. 251 // Intentionally ignore the interface request.
252 } 252 }
253 253
254 // The following functions simplify code paths where the UI thread notifies the
255 // ResourceDispatcherHostImpl of information pertaining to loading behavior of
256 // frame hosts.
257 void NotifyRouteChangesOnIO(
258 base::Callback<void(ResourceDispatcherHostImpl*,
259 const GlobalFrameRoutingId&)> frame_callback,
260 std::unique_ptr<std::set<GlobalFrameRoutingId>> routing_ids) {
261 DCHECK_CURRENTLY_ON(BrowserThread::IO);
262 ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get();
263 if (!rdh)
264 return;
265 for (const auto& routing_id : *routing_ids)
266 frame_callback.Run(rdh, routing_id);
267 }
268
269 void NotifyForEachFrameFromUI(
270 RenderFrameHost* root_frame_host,
271 base::Callback<void(ResourceDispatcherHostImpl*,
272 const GlobalFrameRoutingId&)> frame_callback) {
273 DCHECK_CURRENTLY_ON(BrowserThread::UI);
274
275 FrameTree* frame_tree = static_cast<RenderFrameHostImpl*>(root_frame_host)
276 ->frame_tree_node()
277 ->frame_tree();
278 DCHECK_EQ(root_frame_host, frame_tree->GetMainFrame());
279
280 std::unique_ptr<std::set<GlobalFrameRoutingId>> routing_ids(
281 new std::set<GlobalFrameRoutingId>());
282 for (FrameTreeNode* node : frame_tree->Nodes()) {
283 RenderFrameHostImpl* frame_host = node->current_frame_host();
284 RenderFrameHostImpl* pending_frame_host =
285 IsBrowserSideNavigationEnabled()
286 ? node->render_manager()->speculative_frame_host()
287 : node->render_manager()->pending_frame_host();
288 if (frame_host)
289 routing_ids->insert(frame_host->GetGlobalFrameRoutingId());
290 if (pending_frame_host)
291 routing_ids->insert(pending_frame_host->GetGlobalFrameRoutingId());
292 }
293 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
294 base::Bind(&NotifyRouteChangesOnIO, frame_callback,
295 base::Passed(std::move(routing_ids))));
296 }
297
254 } // namespace 298 } // namespace
255 299
256 // static 300 // static
257 RenderFrameHost* RenderFrameHost::FromID(int render_process_id, 301 RenderFrameHost* RenderFrameHost::FromID(int render_process_id,
258 int render_frame_id) { 302 int render_frame_id) {
259 return RenderFrameHostImpl::FromID(render_process_id, render_frame_id); 303 return RenderFrameHostImpl::FromID(render_process_id, render_frame_id);
260 } 304 }
261 305
262 #if defined(OS_ANDROID) 306 #if defined(OS_ANDROID)
263 // static 307 // static
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 347
304 // static 348 // static
305 RenderFrameHostImpl* RenderFrameHostImpl::FromAXTreeID( 349 RenderFrameHostImpl* RenderFrameHostImpl::FromAXTreeID(
306 ui::AXTreeIDRegistry::AXTreeID ax_tree_id) { 350 ui::AXTreeIDRegistry::AXTreeID ax_tree_id) {
307 DCHECK_CURRENTLY_ON(BrowserThread::UI); 351 DCHECK_CURRENTLY_ON(BrowserThread::UI);
308 ui::AXTreeIDRegistry::FrameID frame_id = 352 ui::AXTreeIDRegistry::FrameID frame_id =
309 ui::AXTreeIDRegistry::GetInstance()->GetFrameID(ax_tree_id); 353 ui::AXTreeIDRegistry::GetInstance()->GetFrameID(ax_tree_id);
310 return RenderFrameHostImpl::FromID(frame_id.first, frame_id.second); 354 return RenderFrameHostImpl::FromID(frame_id.first, frame_id.second);
311 } 355 }
312 356
357 // static
358 void RenderFrameHost::BlockRequestsForFrame(RenderFrameHost* root_frame_host) {
359 DCHECK_CURRENTLY_ON(BrowserThread::UI);
360 NotifyForEachFrameFromUI(
361 root_frame_host,
362 base::Bind(&ResourceDispatcherHostImpl::BlockRequestsForRoute));
363 }
364
365 // static
366 void RenderFrameHost::ResumeBlockedRequestsForFrame(
367 RenderFrameHost* root_frame_host) {
368 NotifyForEachFrameFromUI(
369 root_frame_host,
370 base::Bind(&ResourceDispatcherHostImpl::ResumeBlockedRequestsForRoute));
371 }
372
373 // static
374 void RenderFrameHost::CancelBlockedRequestsForFrame(
375 RenderFrameHost* root_frame_host) {
376 DCHECK_CURRENTLY_ON(BrowserThread::UI);
377 NotifyForEachFrameFromUI(
378 root_frame_host,
379 base::Bind(&ResourceDispatcherHostImpl::CancelBlockedRequestsForRoute));
380 }
381
313 RenderFrameHostImpl::RenderFrameHostImpl(SiteInstance* site_instance, 382 RenderFrameHostImpl::RenderFrameHostImpl(SiteInstance* site_instance,
314 RenderViewHostImpl* render_view_host, 383 RenderViewHostImpl* render_view_host,
315 RenderFrameHostDelegate* delegate, 384 RenderFrameHostDelegate* delegate,
316 RenderWidgetHostDelegate* rwh_delegate, 385 RenderWidgetHostDelegate* rwh_delegate,
317 FrameTree* frame_tree, 386 FrameTree* frame_tree,
318 FrameTreeNode* frame_tree_node, 387 FrameTreeNode* frame_tree_node,
319 int32_t routing_id, 388 int32_t routing_id,
320 int32_t widget_routing_id, 389 int32_t widget_routing_id,
321 bool hidden, 390 bool hidden,
322 bool renderer_initiated_creation) 391 bool renderer_initiated_creation)
(...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after
960 render_widget_host_->InitForFrame(); 1029 render_widget_host_->InitForFrame();
961 1030
962 if (enabled_bindings_ && created) { 1031 if (enabled_bindings_ && created) {
963 if (!frame_bindings_control_) 1032 if (!frame_bindings_control_)
964 GetRemoteAssociatedInterfaces()->GetInterface(&frame_bindings_control_); 1033 GetRemoteAssociatedInterfaces()->GetInterface(&frame_bindings_control_);
965 frame_bindings_control_->AllowBindings(enabled_bindings_); 1034 frame_bindings_control_->AllowBindings(enabled_bindings_);
966 } 1035 }
967 } 1036 }
968 1037
969 void RenderFrameHostImpl::Init() { 1038 void RenderFrameHostImpl::Init() {
970 ResourceDispatcherHost::ResumeBlockedRequestsForFrameFromUI(this); 1039 ResumeBlockedRequestsForFrame(this);
971 if (!waiting_for_init_) 1040 if (!waiting_for_init_)
972 return; 1041 return;
973 1042
974 waiting_for_init_ = false; 1043 waiting_for_init_ = false;
975 if (pendinging_navigate_) { 1044 if (pendinging_navigate_) {
976 frame_tree_node()->navigator()->OnBeginNavigation( 1045 frame_tree_node()->navigator()->OnBeginNavigation(
977 frame_tree_node(), pendinging_navigate_->first, 1046 frame_tree_node(), pendinging_navigate_->first,
978 pendinging_navigate_->second); 1047 pendinging_navigate_->second);
979 pendinging_navigate_.reset(); 1048 pendinging_navigate_.reset();
980 } 1049 }
(...skipping 2517 matching lines...) Expand 10 before | Expand all | Expand 10 after
3498 GetUserData(kRenderFrameHostAndroidKey)); 3567 GetUserData(kRenderFrameHostAndroidKey));
3499 if (!render_frame_host_android) { 3568 if (!render_frame_host_android) {
3500 render_frame_host_android = new RenderFrameHostAndroid(this); 3569 render_frame_host_android = new RenderFrameHostAndroid(this);
3501 SetUserData(kRenderFrameHostAndroidKey, render_frame_host_android); 3570 SetUserData(kRenderFrameHostAndroidKey, render_frame_host_android);
3502 } 3571 }
3503 return render_frame_host_android->GetJavaObject(); 3572 return render_frame_host_android->GetJavaObject();
3504 } 3573 }
3505 #endif 3574 #endif
3506 3575
3507 } // namespace content 3576 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698