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

Side by Side Diff: content/browser/renderer_host/pepper/browser_ppapi_host_impl.cc

Issue 2762513002: Remove keep-alive impulse IPCs from NaCl modules. (Closed)
Patch Set: Rebase Created 3 years, 8 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/renderer_host/pepper/browser_ppapi_host_impl.h" 5 #include "content/browser/renderer_host/pepper/browser_ppapi_host_impl.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/metrics/histogram_macros.h" 8 #include "base/metrics/histogram_macros.h"
9 #include "content/browser/renderer_host/pepper/pepper_message_filter.h" 9 #include "content/browser/renderer_host/pepper/pepper_message_filter.h"
10 #include "content/browser/tracing/trace_message_filter.h" 10 #include "content/browser/tracing/trace_message_filter.h"
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 return it->second->renderer_data.document_url; 130 return it->second->renderer_data.document_url;
131 } 131 }
132 132
133 GURL BrowserPpapiHostImpl::GetPluginURLForInstance(PP_Instance instance) { 133 GURL BrowserPpapiHostImpl::GetPluginURLForInstance(PP_Instance instance) {
134 auto it = instance_map_.find(instance); 134 auto it = instance_map_.find(instance);
135 if (it == instance_map_.end()) 135 if (it == instance_map_.end())
136 return GURL(); 136 return GURL();
137 return it->second->renderer_data.plugin_url; 137 return it->second->renderer_data.plugin_url;
138 } 138 }
139 139
140 void BrowserPpapiHostImpl::SetOnKeepaliveCallback(
141 const BrowserPpapiHost::OnKeepaliveCallback& callback) {
142 on_keepalive_callback_ = callback;
143 }
144
145 bool BrowserPpapiHostImpl::IsPotentiallySecurePluginContext( 140 bool BrowserPpapiHostImpl::IsPotentiallySecurePluginContext(
146 PP_Instance instance) { 141 PP_Instance instance) {
147 auto it = instance_map_.find(instance); 142 auto it = instance_map_.find(instance);
148 if (it == instance_map_.end()) 143 if (it == instance_map_.end())
149 return false; 144 return false;
150 return it->second->renderer_data.is_potentially_secure_plugin_context; 145 return it->second->renderer_data.is_potentially_secure_plugin_context;
151 } 146 }
152 147
153 void BrowserPpapiHostImpl::AddInstance( 148 void BrowserPpapiHostImpl::AddInstance(
154 PP_Instance instance, 149 PP_Instance instance,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 196
202 bool BrowserPpapiHostImpl::HostMessageFilter::OnMessageReceived( 197 bool BrowserPpapiHostImpl::HostMessageFilter::OnMessageReceived(
203 const IPC::Message& msg) { 198 const IPC::Message& msg) {
204 // Don't forward messages if our owner object has been destroyed. 199 // Don't forward messages if our owner object has been destroyed.
205 if (!ppapi_host_) 200 if (!ppapi_host_)
206 return false; 201 return false;
207 202
208 bool handled = true; 203 bool handled = true;
209 IPC_BEGIN_MESSAGE_MAP(BrowserPpapiHostImpl::HostMessageFilter, msg) 204 IPC_BEGIN_MESSAGE_MAP(BrowserPpapiHostImpl::HostMessageFilter, msg)
210 // Add necessary message handlers here. 205 // Add necessary message handlers here.
211 IPC_MESSAGE_HANDLER(PpapiHostMsg_Keepalive, OnKeepalive)
212 IPC_MESSAGE_HANDLER(PpapiHostMsg_LogInterfaceUsage, 206 IPC_MESSAGE_HANDLER(PpapiHostMsg_LogInterfaceUsage,
213 OnHostMsgLogInterfaceUsage) 207 OnHostMsgLogInterfaceUsage)
214 IPC_MESSAGE_UNHANDLED(handled = ppapi_host_->OnMessageReceived(msg)) 208 IPC_MESSAGE_UNHANDLED(handled = ppapi_host_->OnMessageReceived(msg))
215 IPC_END_MESSAGE_MAP() 209 IPC_END_MESSAGE_MAP()
216 return handled; 210 return handled;
217 } 211 }
218 212
219 void BrowserPpapiHostImpl::HostMessageFilter::OnHostDestroyed() { 213 void BrowserPpapiHostImpl::HostMessageFilter::OnHostDestroyed() {
220 DCHECK(ppapi_host_); 214 DCHECK(ppapi_host_);
221 ppapi_host_ = NULL; 215 ppapi_host_ = NULL;
222 browser_ppapi_host_impl_ = NULL; 216 browser_ppapi_host_impl_ = NULL;
223 } 217 }
224 218
225 BrowserPpapiHostImpl::HostMessageFilter::~HostMessageFilter() {} 219 BrowserPpapiHostImpl::HostMessageFilter::~HostMessageFilter() {}
226 220
227 void BrowserPpapiHostImpl::HostMessageFilter::OnKeepalive() {
228 if (browser_ppapi_host_impl_)
229 browser_ppapi_host_impl_->OnKeepalive();
230 }
231
232 void BrowserPpapiHostImpl::HostMessageFilter::OnHostMsgLogInterfaceUsage( 221 void BrowserPpapiHostImpl::HostMessageFilter::OnHostMsgLogInterfaceUsage(
233 int hash) const { 222 int hash) const {
234 UMA_HISTOGRAM_SPARSE_SLOWLY("Pepper.InterfaceUsed", hash); 223 UMA_HISTOGRAM_SPARSE_SLOWLY("Pepper.InterfaceUsed", hash);
235 } 224 }
236 225
237 BrowserPpapiHostImpl::InstanceData::InstanceData( 226 BrowserPpapiHostImpl::InstanceData::InstanceData(
238 const PepperRendererInstanceData& renderer_data) 227 const PepperRendererInstanceData& renderer_data)
239 : renderer_data(renderer_data), is_throttled(false) { 228 : renderer_data(renderer_data), is_throttled(false) {
240 } 229 }
241 230
242 BrowserPpapiHostImpl::InstanceData::~InstanceData() { 231 BrowserPpapiHostImpl::InstanceData::~InstanceData() {
243 } 232 }
244 233
245 void BrowserPpapiHostImpl::OnKeepalive() {
246 // An instance has been active. The on_keepalive_callback_ will be
247 // used to permit the content embedder to handle this, e.g. by tracking
248 // activity and shutting down processes that go idle.
249 //
250 // Currently embedders do not need to distinguish between instances having
251 // different idle state, and thus this implementation handles all instances
252 // for this module together.
253
254 if (on_keepalive_callback_.is_null())
255 return;
256
257 BrowserPpapiHost::OnKeepaliveInstanceData instance_data(instance_map_.size());
258
259 auto instance = instance_map_.begin();
260 int i = 0;
261 while (instance != instance_map_.end()) {
262 instance_data[i].render_process_id =
263 instance->second->renderer_data.render_process_id;
264 instance_data[i].render_frame_id =
265 instance->second->renderer_data.render_frame_id;
266 instance_data[i].document_url =
267 instance->second->renderer_data.document_url;
268 ++instance;
269 ++i;
270 }
271 on_keepalive_callback_.Run(instance_data, profile_data_directory_);
272 }
273
274 } // namespace content 234 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/pepper/browser_ppapi_host_impl.h ('k') | content/public/browser/browser_ppapi_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698