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

Side by Side Diff: ppapi/host/ppapi_host.cc

Issue 1649623002: Update ppapi to not use linked_ptr or ScopedVector (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Mark RawVarDataGraph as DISALLOW_COPY_AND_ASSIGN Created 4 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
« no previous file with comments | « ppapi/host/ppapi_host.h ('k') | ppapi/proxy/raw_var_data.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "ppapi/host/ppapi_host.h" 5 #include "ppapi/host/ppapi_host.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <utility>
10
9 #include "base/logging.h" 11 #include "base/logging.h"
10 #include "ppapi/c/pp_errors.h" 12 #include "ppapi/c/pp_errors.h"
11 #include "ppapi/host/host_factory.h" 13 #include "ppapi/host/host_factory.h"
12 #include "ppapi/host/host_message_context.h" 14 #include "ppapi/host/host_message_context.h"
13 #include "ppapi/host/instance_message_filter.h" 15 #include "ppapi/host/instance_message_filter.h"
14 #include "ppapi/host/resource_host.h" 16 #include "ppapi/host/resource_host.h"
15 #include "ppapi/proxy/ppapi_messages.h" 17 #include "ppapi/proxy/ppapi_messages.h"
16 #include "ppapi/proxy/resource_message_params.h" 18 #include "ppapi/proxy/resource_message_params.h"
17 #include "ppapi/proxy/serialized_handle.h" 19 #include "ppapi/proxy/serialized_handle.h"
18 #include "ppapi/shared_impl/host_resource.h" 20 #include "ppapi/shared_impl/host_resource.h"
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 NOTREACHED(); 147 NOTREACHED();
146 return 0; 148 return 0;
147 } 149 }
148 150
149 if (pending_resource_hosts_.size() + resources_.size() 151 if (pending_resource_hosts_.size() + resources_.size()
150 >= kMaxResourcesPerPlugin) { 152 >= kMaxResourcesPerPlugin) {
151 return 0; 153 return 0;
152 } 154 }
153 155
154 int pending_id = next_pending_resource_host_id_++; 156 int pending_id = next_pending_resource_host_id_++;
155 pending_resource_hosts_[pending_id] = 157 pending_resource_hosts_[pending_id] = std::move(resource_host);
156 linked_ptr<ResourceHost>(resource_host.release());
157 return pending_id; 158 return pending_id;
158 } 159 }
159 160
160 void PpapiHost::AddHostFactoryFilter(scoped_ptr<HostFactory> filter) { 161 void PpapiHost::AddHostFactoryFilter(scoped_ptr<HostFactory> filter) {
161 host_factory_filters_.push_back(filter.release()); 162 host_factory_filters_.push_back(std::move(filter));
162 } 163 }
163 164
164 void PpapiHost::AddInstanceMessageFilter( 165 void PpapiHost::AddInstanceMessageFilter(
165 scoped_ptr<InstanceMessageFilter> filter) { 166 scoped_ptr<InstanceMessageFilter> filter) {
166 instance_message_filters_.push_back(filter.release()); 167 instance_message_filters_.push_back(std::move(filter));
167 } 168 }
168 169
169 void PpapiHost::OnHostMsgResourceCall( 170 void PpapiHost::OnHostMsgResourceCall(
170 const proxy::ResourceMessageCallParams& params, 171 const proxy::ResourceMessageCallParams& params,
171 const IPC::Message& nested_msg) { 172 const IPC::Message& nested_msg) {
172 TRACE_EVENT2("ppapi proxy", "PpapiHost::OnHostMsgResourceCall", 173 TRACE_EVENT2("ppapi proxy", "PpapiHost::OnHostMsgResourceCall",
173 "Class", IPC_MESSAGE_ID_CLASS(nested_msg.type()), 174 "Class", IPC_MESSAGE_ID_CLASS(nested_msg.type()),
174 "Line", IPC_MESSAGE_ID_LINE(nested_msg.type())); 175 "Line", IPC_MESSAGE_ID_LINE(nested_msg.type()));
175 HostMessageContext context(params); 176 HostMessageContext context(params);
176 HandleResourceCall(params, nested_msg, &context); 177 HandleResourceCall(params, nested_msg, &context);
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 CreateResourceHost(params.pp_resource(), instance, nested_msg); 239 CreateResourceHost(params.pp_resource(), instance, nested_msg);
239 240
240 if (!resource_host.get()) { 241 if (!resource_host.get()) {
241 NOTREACHED(); 242 NOTREACHED();
242 return; 243 return;
243 } 244 }
244 245
245 // Resource should have been assigned a nonzero PP_Resource. 246 // Resource should have been assigned a nonzero PP_Resource.
246 DCHECK(resource_host->pp_resource()); 247 DCHECK(resource_host->pp_resource());
247 248
248 resources_[params.pp_resource()] = 249 resources_[params.pp_resource()] = std::move(resource_host);
249 linked_ptr<ResourceHost>(resource_host.release());
250 } 250 }
251 251
252 void PpapiHost::OnHostMsgAttachToPendingHost(PP_Resource pp_resource, 252 void PpapiHost::OnHostMsgAttachToPendingHost(PP_Resource pp_resource,
253 int pending_host_id) { 253 int pending_host_id) {
254 PendingHostResourceMap::iterator found = 254 PendingHostResourceMap::iterator found =
255 pending_resource_hosts_.find(pending_host_id); 255 pending_resource_hosts_.find(pending_host_id);
256 if (found == pending_resource_hosts_.end()) { 256 if (found == pending_resource_hosts_.end()) {
257 // Plugin sent a bad ID. 257 // Plugin sent a bad ID.
258 NOTREACHED(); 258 NOTREACHED();
259 return; 259 return;
260 } 260 }
261 found->second->SetPPResourceForPendingHost(pp_resource); 261 found->second->SetPPResourceForPendingHost(pp_resource);
262 resources_[pp_resource] = found->second; 262 resources_[pp_resource] = std::move(found->second);
263 pending_resource_hosts_.erase(found); 263 pending_resource_hosts_.erase(found);
264 } 264 }
265 265
266 void PpapiHost::OnHostMsgResourceDestroyed(PP_Resource resource) { 266 void PpapiHost::OnHostMsgResourceDestroyed(PP_Resource resource) {
267 ResourceMap::iterator found = resources_.find(resource); 267 ResourceMap::iterator found = resources_.find(resource);
268 if (found == resources_.end()) { 268 if (found == resources_.end()) {
269 NOTREACHED(); 269 NOTREACHED();
270 return; 270 return;
271 } 271 }
272 // Invoking the HostResource destructor might result in looking up the 272 // Invoking the HostResource destructor might result in looking up the
273 // PP_Resource in resources_. std::map is not well specified as to whether the 273 // PP_Resource in resources_. std::map is not well specified as to whether the
274 // element will be there or not. Therefore, we delay destruction of the 274 // element will be there or not. Therefore, we delay destruction of the
275 // HostResource until after we've made sure the map no longer contains 275 // HostResource until after we've made sure the map no longer contains
276 // |resource|. 276 // |resource|.
277 linked_ptr<ResourceHost> delete_at_end_of_scope(found->second); 277 scoped_ptr<ResourceHost> delete_at_end_of_scope(std::move(found->second));
278 resources_.erase(found); 278 resources_.erase(found);
279 } 279 }
280 280
281 ResourceHost* PpapiHost::GetResourceHost(PP_Resource resource) const { 281 ResourceHost* PpapiHost::GetResourceHost(PP_Resource resource) const {
282 ResourceMap::const_iterator found = resources_.find(resource); 282 ResourceMap::const_iterator found = resources_.find(resource);
283 return found == resources_.end() ? NULL : found->second.get(); 283 return found == resources_.end() ? NULL : found->second.get();
284 } 284 }
285 285
286 } // namespace host 286 } // namespace host
287 } // namespace ppapi 287 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/host/ppapi_host.h ('k') | ppapi/proxy/raw_var_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698