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

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

Issue 130773004: Start moving context menu code to RenderFrame. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 6 years, 10 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/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/cross_process_frame_connector.h" 9 #include "content/browser/frame_host/cross_process_frame_connector.h"
10 #include "content/browser/frame_host/frame_tree.h" 10 #include "content/browser/frame_host/frame_tree.h"
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 return routing_id_; 90 return routing_id_;
91 } 91 }
92 92
93 gfx::NativeView RenderFrameHostImpl::GetNativeView() { 93 gfx::NativeView RenderFrameHostImpl::GetNativeView() {
94 RenderWidgetHostView* view = render_view_host_->GetView(); 94 RenderWidgetHostView* view = render_view_host_->GetView();
95 if (!view) 95 if (!view)
96 return NULL; 96 return NULL;
97 return view->GetNativeView(); 97 return view->GetNativeView();
98 } 98 }
99 99
100 void RenderFrameHostImpl::NotifyContextMenuClosed(
101 const CustomContextMenuContext& context) {
102 Send(new FrameMsg_ContextMenuClosed(routing_id_, context));
103 }
104
105 void RenderFrameHostImpl::ExecuteCustomContextMenuCommand(
106 int action, const CustomContextMenuContext& context) {
107 Send(new FrameMsg_CustomContextMenuAction(routing_id_, context, action));
108 }
109
100 RenderViewHost* RenderFrameHostImpl::GetRenderViewHost() { 110 RenderViewHost* RenderFrameHostImpl::GetRenderViewHost() {
101 return render_view_host_; 111 return render_view_host_;
102 } 112 }
103 113
104 bool RenderFrameHostImpl::Send(IPC::Message* message) { 114 bool RenderFrameHostImpl::Send(IPC::Message* message) {
105 return GetProcess()->Send(message); 115 return GetProcess()->Send(message);
106 } 116 }
107 117
108 bool RenderFrameHostImpl::OnMessageReceived(const IPC::Message &msg) { 118 bool RenderFrameHostImpl::OnMessageReceived(const IPC::Message &msg) {
109 if (delegate_->OnMessageReceived(this, msg)) 119 if (delegate_->OnMessageReceived(this, msg))
110 return true; 120 return true;
111 121
112 if (cross_process_frame_connector_ && 122 if (cross_process_frame_connector_ &&
113 cross_process_frame_connector_->OnMessageReceived(msg)) 123 cross_process_frame_connector_->OnMessageReceived(msg))
114 return true; 124 return true;
115 125
116 bool handled = true; 126 bool handled = true;
117 bool msg_is_ok = true; 127 bool msg_is_ok = true;
118 IPC_BEGIN_MESSAGE_MAP_EX(RenderFrameHostImpl, msg, msg_is_ok) 128 IPC_BEGIN_MESSAGE_MAP_EX(RenderFrameHostImpl, msg, msg_is_ok)
119 IPC_MESSAGE_HANDLER(FrameHostMsg_Detach, OnDetach) 129 IPC_MESSAGE_HANDLER(FrameHostMsg_Detach, OnDetach)
120 IPC_MESSAGE_HANDLER(FrameHostMsg_DidStartProvisionalLoadForFrame, 130 IPC_MESSAGE_HANDLER(FrameHostMsg_DidStartProvisionalLoadForFrame,
121 OnDidStartProvisionalLoadForFrame) 131 OnDidStartProvisionalLoadForFrame)
122 IPC_MESSAGE_HANDLER(FrameHostMsg_DidFailProvisionalLoadWithError, 132 IPC_MESSAGE_HANDLER(FrameHostMsg_DidFailProvisionalLoadWithError,
123 OnDidFailProvisionalLoadWithError) 133 OnDidFailProvisionalLoadWithError)
124 IPC_MESSAGE_HANDLER(FrameHostMsg_DidRedirectProvisionalLoad, 134 IPC_MESSAGE_HANDLER(FrameHostMsg_DidRedirectProvisionalLoad,
125 OnDidRedirectProvisionalLoad) 135 OnDidRedirectProvisionalLoad)
126 IPC_MESSAGE_HANDLER(FrameHostMsg_SwapOut_ACK, OnSwapOutACK) 136 IPC_MESSAGE_HANDLER(FrameHostMsg_SwapOut_ACK, OnSwapOutACK)
137 IPC_MESSAGE_HANDLER(FrameHostMsg_ContextMenu, OnContextMenu)
127 IPC_END_MESSAGE_MAP_EX() 138 IPC_END_MESSAGE_MAP_EX()
128 139
129 if (!msg_is_ok) { 140 if (!msg_is_ok) {
130 // The message had a handler, but its de-serialization failed. 141 // The message had a handler, but its de-serialization failed.
131 // Kill the renderer. 142 // Kill the renderer.
132 RecordAction(base::UserMetricsAction("BadMessageTerminate_RFH")); 143 RecordAction(base::UserMetricsAction("BadMessageTerminate_RFH"));
133 GetProcess()->ReceivedBadMessage(); 144 GetProcess()->ReceivedBadMessage();
134 } 145 }
135 146
136 return handled; 147 return handled;
137 } 148 }
138 149
139 void RenderFrameHostImpl::Init() { 150 void RenderFrameHostImpl::Init() {
140 GetProcess()->ResumeRequestsForView(routing_id()); 151 GetProcess()->ResumeRequestsForView(routing_id_);
141 } 152 }
142 153
143 void RenderFrameHostImpl::OnCreateChildFrame(int new_frame_routing_id, 154 void RenderFrameHostImpl::OnCreateChildFrame(int new_frame_routing_id,
144 int64 parent_frame_id, 155 int64 parent_frame_id,
145 int64 frame_id, 156 int64 frame_id,
146 const std::string& frame_name) { 157 const std::string& frame_name) {
147 RenderFrameHostImpl* new_frame = frame_tree_->AddFrame( 158 RenderFrameHostImpl* new_frame = frame_tree_->AddFrame(
148 new_frame_routing_id, parent_frame_id, frame_id, frame_name); 159 new_frame_routing_id, parent_frame_id, frame_id, frame_name);
149 if (delegate_) 160 if (delegate_)
150 delegate_->RenderFrameCreated(new_frame); 161 delegate_->RenderFrameCreated(new_frame);
(...skipping 20 matching lines...) Expand all
171 void RenderFrameHostImpl::OnDidRedirectProvisionalLoad( 182 void RenderFrameHostImpl::OnDidRedirectProvisionalLoad(
172 int32 page_id, 183 int32 page_id,
173 const GURL& source_url, 184 const GURL& source_url,
174 const GURL& target_url) { 185 const GURL& target_url) {
175 frame_tree_node_->navigator()->DidRedirectProvisionalLoad( 186 frame_tree_node_->navigator()->DidRedirectProvisionalLoad(
176 this, page_id, source_url, target_url); 187 this, page_id, source_url, target_url);
177 } 188 }
178 189
179 void RenderFrameHostImpl::SwapOut() { 190 void RenderFrameHostImpl::SwapOut() {
180 if (render_view_host_->IsRenderViewLive()) { 191 if (render_view_host_->IsRenderViewLive()) {
181 Send(new FrameMsg_SwapOut(routing_id())); 192 Send(new FrameMsg_SwapOut(routing_id_));
182 } else { 193 } else {
183 // Our RenderViewHost doesn't have a live renderer, so just skip the unload 194 // Our RenderViewHost doesn't have a live renderer, so just skip the unload
184 // event. 195 // event.
185 OnSwappedOut(true); 196 OnSwappedOut(true);
186 } 197 }
187 } 198 }
188 199
189 void RenderFrameHostImpl::OnSwapOutACK() { 200 void RenderFrameHostImpl::OnSwapOutACK() {
190 OnSwappedOut(false); 201 OnSwappedOut(false);
191 } 202 }
192 203
193 void RenderFrameHostImpl::OnSwappedOut(bool timed_out) { 204 void RenderFrameHostImpl::OnSwappedOut(bool timed_out) {
194 frame_tree_node_->render_manager()->SwappedOutFrame(this); 205 frame_tree_node_->render_manager()->SwappedOutFrame(this);
195 } 206 }
196 207
208 void RenderFrameHostImpl::OnContextMenu(const ContextMenuParams& params) {
209 // Validate the URLs in |params|. If the renderer can't request the URLs
210 // directly, don't show them in the context menu.
211 ContextMenuParams validated_params(params);
212 RenderProcessHost* process = GetProcess();
213
214 // We don't validate |unfiltered_link_url| so that this field can be used
215 // when users want to copy the original link URL.
216 process->FilterURL(true, &validated_params.link_url);
217 process->FilterURL(true, &validated_params.src_url);
218 process->FilterURL(false, &validated_params.page_url);
219 process->FilterURL(true, &validated_params.frame_url);
220
221 delegate_->ShowContextMenu(this, validated_params);
222 }
223
197 } // namespace content 224 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698