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

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

Issue 104833006: Switch ContentSettingsObserver to be a RenderFrameObserver instead of a RenderViewObserver (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years 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/browser/frame_host/render_frame_host_impl.h" 5 #include "content/browser/frame_host/render_frame_host_impl.h"
6 6
7 #include "base/containers/hash_tables.h" 7 #include "base/containers/hash_tables.h"
8 #include "base/lazy_instance.h" 8 #include "base/lazy_instance.h"
9 #include "content/browser/frame_host/frame_tree.h" 9 #include "content/browser/frame_host/frame_tree.h"
10 #include "content/browser/frame_host/frame_tree_node.h" 10 #include "content/browser/frame_host/frame_tree_node.h"
11 #include "content/browser/frame_host/navigator.h" 11 #include "content/browser/frame_host/navigator.h"
12 #include "content/browser/frame_host/render_frame_host_delegate.h" 12 #include "content/browser/frame_host/render_frame_host_delegate.h"
13 #include "content/browser/renderer_host/render_view_host_impl.h" 13 #include "content/browser/renderer_host/render_view_host_impl.h"
14 #include "content/common/frame_messages.h" 14 #include "content/common/frame_messages.h"
15 #include "content/public/browser/browser_thread.h" 15 #include "content/public/browser/browser_thread.h"
16 #include "content/public/browser/render_process_host.h" 16 #include "content/public/browser/render_process_host.h"
17 #include "content/public/browser/user_metrics.h" 17 #include "content/public/browser/user_metrics.h"
18 #include "url/gurl.h" 18 #include "url/gurl.h"
19 19
20 namespace content { 20 namespace content {
21 21
22 // The (process id, routing id) pair that identifies one RenderFrame. 22 // The (process id, routing id) pair that identifies one RenderFrame.
23 typedef std::pair<int32, int32> RenderFrameHostID; 23 typedef std::pair<int32, int32> RenderFrameHostID;
24 typedef base::hash_map<RenderFrameHostID, RenderFrameHostImpl*> 24 typedef base::hash_map<RenderFrameHostID, RenderFrameHostImpl*>
25 RoutingIDFrameMap; 25 RoutingIDFrameMap;
26 static base::LazyInstance<RoutingIDFrameMap> g_routing_id_frame_map = 26 static base::LazyInstance<RoutingIDFrameMap> g_routing_id_frame_map =
27 LAZY_INSTANCE_INITIALIZER; 27 LAZY_INSTANCE_INITIALIZER;
28 28
29 RenderFrameHost* RenderFrameHost::FromID(int render_process_id,
30 int render_frame_id) {
31 return RenderFrameHostImpl::FromID(render_process_id, render_frame_id);
32 }
33
29 // static 34 // static
30 RenderFrameHostImpl* RenderFrameHostImpl::FromID( 35 RenderFrameHostImpl* RenderFrameHostImpl::FromID(
31 int process_id, int routing_id) { 36 int process_id, int routing_id) {
37 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
32 RoutingIDFrameMap* frames = g_routing_id_frame_map.Pointer(); 38 RoutingIDFrameMap* frames = g_routing_id_frame_map.Pointer();
33 RoutingIDFrameMap::iterator it = frames->find( 39 RoutingIDFrameMap::iterator it = frames->find(
34 RenderFrameHostID(process_id, routing_id)); 40 RenderFrameHostID(process_id, routing_id));
35 return it == frames->end() ? NULL : it->second; 41 return it == frames->end() ? NULL : it->second;
36 } 42 }
37 43
38 RenderFrameHostImpl::RenderFrameHostImpl( 44 RenderFrameHostImpl::RenderFrameHostImpl(
39 RenderViewHostImpl* render_view_host, 45 RenderViewHostImpl* render_view_host,
40 RenderFrameHostDelegate* delegate, 46 RenderFrameHostDelegate* delegate,
41 FrameTree* frame_tree, 47 FrameTree* frame_tree,
(...skipping 13 matching lines...) Expand all
55 } 61 }
56 62
57 RenderFrameHostImpl::~RenderFrameHostImpl() { 63 RenderFrameHostImpl::~RenderFrameHostImpl() {
58 GetProcess()->RemoveRoute(routing_id_); 64 GetProcess()->RemoveRoute(routing_id_);
59 g_routing_id_frame_map.Get().erase( 65 g_routing_id_frame_map.Get().erase(
60 RenderFrameHostID(GetProcess()->GetID(), routing_id_)); 66 RenderFrameHostID(GetProcess()->GetID(), routing_id_));
61 if (delegate_) 67 if (delegate_)
62 delegate_->RenderFrameDeleted(this); 68 delegate_->RenderFrameDeleted(this);
63 } 69 }
64 70
71 RenderProcessHost* RenderFrameHostImpl::GetProcess() {
72 // TODO(nasko): This should return its own process, once we have working
73 // cross-process navigation for subframes.
74 return render_view_host_->GetProcess();
75 }
76
65 int RenderFrameHostImpl::GetRoutingID() { 77 int RenderFrameHostImpl::GetRoutingID() {
66 return routing_id_; 78 return routing_id_;
67 } 79 }
68 80
69 bool RenderFrameHostImpl::Send(IPC::Message* message) { 81 bool RenderFrameHostImpl::Send(IPC::Message* message) {
70 return GetProcess()->Send(message); 82 return GetProcess()->Send(message);
71 } 83 }
72 84
73 bool RenderFrameHostImpl::OnMessageReceived(const IPC::Message &msg) { 85 bool RenderFrameHostImpl::OnMessageReceived(const IPC::Message &msg) {
74 if (delegate_->OnMessageReceived(this, msg)) 86 if (delegate_->OnMessageReceived(this, msg))
(...skipping 14 matching lines...) Expand all
89 GetProcess()->ReceivedBadMessage(); 101 GetProcess()->ReceivedBadMessage();
90 } 102 }
91 103
92 return handled; 104 return handled;
93 } 105 }
94 106
95 void RenderFrameHostImpl::Init() { 107 void RenderFrameHostImpl::Init() {
96 GetProcess()->ResumeRequestsForView(routing_id()); 108 GetProcess()->ResumeRequestsForView(routing_id());
97 } 109 }
98 110
99 RenderProcessHost* RenderFrameHostImpl::GetProcess() const {
100 // TODO(nasko): This should return its own process, once we have working
101 // cross-process navigation for subframes.
102 return render_view_host_->GetProcess();
103 }
104
105 void RenderFrameHostImpl::OnCreateChildFrame(int new_frame_routing_id, 111 void RenderFrameHostImpl::OnCreateChildFrame(int new_frame_routing_id,
106 int64 parent_frame_id, 112 int64 parent_frame_id,
107 int64 frame_id, 113 int64 frame_id,
108 const std::string& frame_name) { 114 const std::string& frame_name) {
109 RenderFrameHostImpl* new_frame = frame_tree_->AddFrame( 115 RenderFrameHostImpl* new_frame = frame_tree_->AddFrame(
110 new_frame_routing_id, parent_frame_id, frame_id, frame_name); 116 new_frame_routing_id, parent_frame_id, frame_id, frame_name);
111 if (delegate_) 117 if (delegate_)
112 delegate_->RenderFrameCreated(new_frame); 118 delegate_->RenderFrameCreated(new_frame);
113 } 119 }
114 120
115 void RenderFrameHostImpl::OnDetach(int64 parent_frame_id, int64 frame_id) { 121 void RenderFrameHostImpl::OnDetach(int64 parent_frame_id, int64 frame_id) {
116 frame_tree_->RemoveFrame(this, parent_frame_id, frame_id); 122 frame_tree_->RemoveFrame(this, parent_frame_id, frame_id);
117 } 123 }
118 124
119 void RenderFrameHostImpl::OnDidStartProvisionalLoadForFrame( 125 void RenderFrameHostImpl::OnDidStartProvisionalLoadForFrame(
120 int64 frame_id, 126 int64 frame_id,
121 int64 parent_frame_id, 127 int64 parent_frame_id,
122 bool is_main_frame, 128 bool is_main_frame,
123 const GURL& url) { 129 const GURL& url) {
124 frame_tree_node_->navigator()->DidStartProvisionalLoad( 130 frame_tree_node_->navigator()->DidStartProvisionalLoad(
125 this, frame_id, parent_frame_id, is_main_frame, url); 131 this, frame_id, parent_frame_id, is_main_frame, url);
126 } 132 }
127 133
128 } // namespace content 134 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698