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

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

Issue 837283003: Start replicating sandbox flags for OOPIF (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/containers/hash_tables.h" 9 #include "base/containers/hash_tables.h"
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 502
503 // The process may (if we're sharing a process with another host that already 503 // The process may (if we're sharing a process with another host that already
504 // initialized it) or may not (we have our own process or the old process 504 // initialized it) or may not (we have our own process or the old process
505 // crashed) have been initialized. Calling Init multiple times will be 505 // crashed) have been initialized. Calling Init multiple times will be
506 // ignored, so this is safe. 506 // ignored, so this is safe.
507 if (!GetProcess()->Init()) 507 if (!GetProcess()->Init())
508 return false; 508 return false;
509 509
510 DCHECK(GetProcess()->HasConnection()); 510 DCHECK(GetProcess()->HasConnection());
511 511
512 Send(new FrameMsg_NewFrame(routing_id_, parent_routing_id, proxy_routing_id)); 512 Send(new FrameMsg_NewFrame(routing_id_, parent_routing_id, proxy_routing_id,
513 frame_tree_node()->current_replication_state()));
513 514
514 // The renderer now has a RenderFrame for this RenderFrameHost. Note that 515 // The renderer now has a RenderFrame for this RenderFrameHost. Note that
515 // this path is only used for out-of-process iframes. Main frame RenderFrames 516 // this path is only used for out-of-process iframes. Main frame RenderFrames
516 // are created with their RenderView, and same-site iframes are created at the 517 // are created with their RenderView, and same-site iframes are created at the
517 // time of OnCreateChildFrame. 518 // time of OnCreateChildFrame.
518 set_render_frame_created(true); 519 set_render_frame_created(true);
519 520
520 return true; 521 return true;
521 } 522 }
522 523
(...skipping 27 matching lines...) Expand all
550 int32 resolved_level = 551 int32 resolved_level =
551 HasWebUIScheme(delegate_->GetMainFrameLastCommittedURL()) ? level : 0; 552 HasWebUIScheme(delegate_->GetMainFrameLastCommittedURL()) ? level : 0;
552 553
553 if (resolved_level >= ::logging::GetMinLogLevel()) { 554 if (resolved_level >= ::logging::GetMinLogLevel()) {
554 logging::LogMessage("CONSOLE", line_no, resolved_level).stream() << "\"" << 555 logging::LogMessage("CONSOLE", line_no, resolved_level).stream() << "\"" <<
555 message << "\", source: " << source_id << " (" << line_no << ")"; 556 message << "\", source: " << source_id << " (" << line_no << ")";
556 } 557 }
557 } 558 }
558 559
559 void RenderFrameHostImpl::OnCreateChildFrame(int new_routing_id, 560 void RenderFrameHostImpl::OnCreateChildFrame(int new_routing_id,
560 const std::string& frame_name) { 561 const std::string& frame_name,
562 SandboxFlags sandbox_flags) {
561 // It is possible that while a new RenderFrameHost was committed, the 563 // It is possible that while a new RenderFrameHost was committed, the
562 // RenderFrame corresponding to this host sent an IPC message to create a 564 // RenderFrame corresponding to this host sent an IPC message to create a
563 // frame and it is delivered after this host is swapped out. 565 // frame and it is delivered after this host is swapped out.
564 // Ignore such messages, as we know this RenderFrameHost is going away. 566 // Ignore such messages, as we know this RenderFrameHost is going away.
565 if (rfh_state_ != RenderFrameHostImpl::STATE_DEFAULT) 567 if (rfh_state_ != RenderFrameHostImpl::STATE_DEFAULT)
566 return; 568 return;
567 569
568 RenderFrameHostImpl* new_frame = frame_tree_->AddFrame( 570 RenderFrameHostImpl* new_frame = frame_tree_->AddFrame(
569 frame_tree_node_, GetProcess()->GetID(), new_routing_id, frame_name); 571 frame_tree_node_, GetProcess()->GetID(), new_routing_id, frame_name);
570 if (!new_frame) 572 if (!new_frame)
571 return; 573 return;
572 574
573 // We know that the RenderFrame has been created in this case, immediately 575 // We know that the RenderFrame has been created in this case, immediately
574 // after the CreateChildFrame IPC was sent. 576 // after the CreateChildFrame IPC was sent.
575 new_frame->set_render_frame_created(true); 577 new_frame->set_render_frame_created(true);
576 578
579 new_frame->frame_tree_node()->set_sandbox_flags(sandbox_flags);
580
577 if (delegate_) 581 if (delegate_)
578 delegate_->RenderFrameCreated(new_frame); 582 delegate_->RenderFrameCreated(new_frame);
579 } 583 }
580 584
581 void RenderFrameHostImpl::OnDetach() { 585 void RenderFrameHostImpl::OnDetach() {
582 frame_tree_->RemoveFrame(frame_tree_node_); 586 frame_tree_->RemoveFrame(frame_tree_node_);
583 } 587 }
584 588
585 void RenderFrameHostImpl::OnFrameFocused() { 589 void RenderFrameHostImpl::OnFrameFocused() {
586 frame_tree_->SetFocusedFrame(frame_tree_node_); 590 frame_tree_->SetFocusedFrame(frame_tree_node_);
(...skipping 1021 matching lines...) Expand 10 before | Expand all | Expand 10 after
1608 void RenderFrameHostImpl::DidUseGeolocationPermission() { 1612 void RenderFrameHostImpl::DidUseGeolocationPermission() {
1609 RenderFrameHost* top_frame = frame_tree_node()->frame_tree()->GetMainFrame(); 1613 RenderFrameHost* top_frame = frame_tree_node()->frame_tree()->GetMainFrame();
1610 GetContentClient()->browser()->RegisterPermissionUsage( 1614 GetContentClient()->browser()->RegisterPermissionUsage(
1611 PERMISSION_GEOLOCATION, 1615 PERMISSION_GEOLOCATION,
1612 delegate_->GetAsWebContents(), 1616 delegate_->GetAsWebContents(),
1613 GetLastCommittedURL().GetOrigin(), 1617 GetLastCommittedURL().GetOrigin(),
1614 top_frame->GetLastCommittedURL().GetOrigin()); 1618 top_frame->GetLastCommittedURL().GetOrigin());
1615 } 1619 }
1616 1620
1617 } // namespace content 1621 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698