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

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: Address Nasko's nit 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 29 matching lines...) Expand all
552 553
553 // LogMessages can be persisted so this shouldn't be logged in incognito mode. 554 // LogMessages can be persisted so this shouldn't be logged in incognito mode.
554 if (resolved_level >= ::logging::GetMinLogLevel() 555 if (resolved_level >= ::logging::GetMinLogLevel()
555 && !GetSiteInstance()->GetBrowserContext()->IsOffTheRecord()) { 556 && !GetSiteInstance()->GetBrowserContext()->IsOffTheRecord()) {
556 logging::LogMessage("CONSOLE", line_no, resolved_level).stream() << "\"" << 557 logging::LogMessage("CONSOLE", line_no, resolved_level).stream() << "\"" <<
557 message << "\", source: " << source_id << " (" << line_no << ")"; 558 message << "\", source: " << source_id << " (" << line_no << ")";
558 } 559 }
559 } 560 }
560 561
561 void RenderFrameHostImpl::OnCreateChildFrame(int new_routing_id, 562 void RenderFrameHostImpl::OnCreateChildFrame(int new_routing_id,
562 const std::string& frame_name) { 563 const std::string& frame_name,
564 SandboxFlags sandbox_flags) {
563 // It is possible that while a new RenderFrameHost was committed, the 565 // It is possible that while a new RenderFrameHost was committed, the
564 // RenderFrame corresponding to this host sent an IPC message to create a 566 // RenderFrame corresponding to this host sent an IPC message to create a
565 // frame and it is delivered after this host is swapped out. 567 // frame and it is delivered after this host is swapped out.
566 // Ignore such messages, as we know this RenderFrameHost is going away. 568 // Ignore such messages, as we know this RenderFrameHost is going away.
567 if (rfh_state_ != RenderFrameHostImpl::STATE_DEFAULT) 569 if (rfh_state_ != RenderFrameHostImpl::STATE_DEFAULT)
568 return; 570 return;
569 571
570 RenderFrameHostImpl* new_frame = frame_tree_->AddFrame( 572 RenderFrameHostImpl* new_frame = frame_tree_->AddFrame(
571 frame_tree_node_, GetProcess()->GetID(), new_routing_id, frame_name); 573 frame_tree_node_, GetProcess()->GetID(), new_routing_id, frame_name);
572 if (!new_frame) 574 if (!new_frame)
573 return; 575 return;
574 576
575 // We know that the RenderFrame has been created in this case, immediately 577 // We know that the RenderFrame has been created in this case, immediately
576 // after the CreateChildFrame IPC was sent. 578 // after the CreateChildFrame IPC was sent.
577 new_frame->set_render_frame_created(true); 579 new_frame->set_render_frame_created(true);
578 580
581 new_frame->frame_tree_node()->set_sandbox_flags(sandbox_flags);
582
579 if (delegate_) 583 if (delegate_)
580 delegate_->RenderFrameCreated(new_frame); 584 delegate_->RenderFrameCreated(new_frame);
581 } 585 }
582 586
583 void RenderFrameHostImpl::OnDetach() { 587 void RenderFrameHostImpl::OnDetach() {
584 frame_tree_->RemoveFrame(frame_tree_node_); 588 frame_tree_->RemoveFrame(frame_tree_node_);
585 } 589 }
586 590
587 void RenderFrameHostImpl::OnFrameFocused() { 591 void RenderFrameHostImpl::OnFrameFocused() {
588 frame_tree_->SetFocusedFrame(frame_tree_node_); 592 frame_tree_->SetFocusedFrame(frame_tree_node_);
(...skipping 1025 matching lines...) Expand 10 before | Expand all | Expand 10 after
1614 void RenderFrameHostImpl::DidUseGeolocationPermission() { 1618 void RenderFrameHostImpl::DidUseGeolocationPermission() {
1615 RenderFrameHost* top_frame = frame_tree_node()->frame_tree()->GetMainFrame(); 1619 RenderFrameHost* top_frame = frame_tree_node()->frame_tree()->GetMainFrame();
1616 GetContentClient()->browser()->RegisterPermissionUsage( 1620 GetContentClient()->browser()->RegisterPermissionUsage(
1617 PERMISSION_GEOLOCATION, 1621 PERMISSION_GEOLOCATION,
1618 delegate_->GetAsWebContents(), 1622 delegate_->GetAsWebContents(),
1619 GetLastCommittedURL().GetOrigin(), 1623 GetLastCommittedURL().GetOrigin(),
1620 top_frame->GetLastCommittedURL().GetOrigin()); 1624 top_frame->GetLastCommittedURL().GetOrigin());
1621 } 1625 }
1622 1626
1623 } // namespace content 1627 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/render_frame_host_impl.h ('k') | content/browser/frame_host/render_frame_host_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698