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

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

Issue 1864293002: Convert //ppapi to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: more nullptr Created 4 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
« no previous file with comments | « ppapi/host/ppapi_host.h ('k') | ppapi/nacl_irt/irt_pnacl_translator_compile.cc » ('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> 9 #include <utility>
10 10
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 "Line", IPC_MESSAGE_ID_LINE(msg.type())); 119 "Line", IPC_MESSAGE_ID_LINE(msg.type()));
120 DCHECK(resource); // If this fails, host is probably pending. 120 DCHECK(resource); // If this fails, host is probably pending.
121 proxy::ResourceMessageReplyParams params(resource, 0); 121 proxy::ResourceMessageReplyParams params(resource, 0);
122 for (std::vector<SerializedHandle>::const_iterator it = handles.begin(); 122 for (std::vector<SerializedHandle>::const_iterator it = handles.begin();
123 it != handles.end(); ++it) { 123 it != handles.end(); ++it) {
124 params.AppendHandle(*it); 124 params.AppendHandle(*it);
125 } 125 }
126 Send(new PpapiPluginMsg_ResourceReply(params, msg)); 126 Send(new PpapiPluginMsg_ResourceReply(params, msg));
127 } 127 }
128 128
129 scoped_ptr<ResourceHost> PpapiHost::CreateResourceHost( 129 std::unique_ptr<ResourceHost> PpapiHost::CreateResourceHost(
130 PP_Resource resource, 130 PP_Resource resource,
131 PP_Instance instance, 131 PP_Instance instance,
132 const IPC::Message& nested_msg) { 132 const IPC::Message& nested_msg) {
133 scoped_ptr<ResourceHost> resource_host; 133 std::unique_ptr<ResourceHost> resource_host;
134 DCHECK(!host_factory_filters_.empty()); // Caller forgot to add a factory. 134 DCHECK(!host_factory_filters_.empty()); // Caller forgot to add a factory.
135 for (size_t i = 0; i < host_factory_filters_.size(); i++) { 135 for (size_t i = 0; i < host_factory_filters_.size(); i++) {
136 resource_host = host_factory_filters_[i]->CreateResourceHost( 136 resource_host = host_factory_filters_[i]->CreateResourceHost(
137 this, resource, instance, nested_msg); 137 this, resource, instance, nested_msg);
138 if (resource_host.get()) 138 if (resource_host.get())
139 break; 139 break;
140 } 140 }
141 return resource_host; 141 return resource_host;
142 } 142 }
143 143
144 int PpapiHost::AddPendingResourceHost(scoped_ptr<ResourceHost> resource_host) { 144 int PpapiHost::AddPendingResourceHost(
145 std::unique_ptr<ResourceHost> resource_host) {
145 // The resource ID should not be assigned. 146 // The resource ID should not be assigned.
146 if (!resource_host.get() || resource_host->pp_resource() != 0) { 147 if (!resource_host.get() || resource_host->pp_resource() != 0) {
147 NOTREACHED(); 148 NOTREACHED();
148 return 0; 149 return 0;
149 } 150 }
150 151
151 if (pending_resource_hosts_.size() + resources_.size() 152 if (pending_resource_hosts_.size() + resources_.size()
152 >= kMaxResourcesPerPlugin) { 153 >= kMaxResourcesPerPlugin) {
153 return 0; 154 return 0;
154 } 155 }
155 156
156 int pending_id = next_pending_resource_host_id_++; 157 int pending_id = next_pending_resource_host_id_++;
157 pending_resource_hosts_[pending_id] = std::move(resource_host); 158 pending_resource_hosts_[pending_id] = std::move(resource_host);
158 return pending_id; 159 return pending_id;
159 } 160 }
160 161
161 void PpapiHost::AddHostFactoryFilter(scoped_ptr<HostFactory> filter) { 162 void PpapiHost::AddHostFactoryFilter(std::unique_ptr<HostFactory> filter) {
162 host_factory_filters_.push_back(std::move(filter)); 163 host_factory_filters_.push_back(std::move(filter));
163 } 164 }
164 165
165 void PpapiHost::AddInstanceMessageFilter( 166 void PpapiHost::AddInstanceMessageFilter(
166 scoped_ptr<InstanceMessageFilter> filter) { 167 std::unique_ptr<InstanceMessageFilter> filter) {
167 instance_message_filters_.push_back(std::move(filter)); 168 instance_message_filters_.push_back(std::move(filter));
168 } 169 }
169 170
170 void PpapiHost::OnHostMsgResourceCall( 171 void PpapiHost::OnHostMsgResourceCall(
171 const proxy::ResourceMessageCallParams& params, 172 const proxy::ResourceMessageCallParams& params,
172 const IPC::Message& nested_msg) { 173 const IPC::Message& nested_msg) {
173 TRACE_EVENT2("ppapi proxy", "PpapiHost::OnHostMsgResourceCall", 174 TRACE_EVENT2("ppapi proxy", "PpapiHost::OnHostMsgResourceCall",
174 "Class", IPC_MESSAGE_ID_CLASS(nested_msg.type()), 175 "Class", IPC_MESSAGE_ID_CLASS(nested_msg.type()),
175 "Line", IPC_MESSAGE_ID_LINE(nested_msg.type())); 176 "Line", IPC_MESSAGE_ID_LINE(nested_msg.type()));
176 HostMessageContext context(params); 177 HostMessageContext context(params);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 TRACE_EVENT2("ppapi proxy", "PpapiHost::OnHostMsgResourceCreated", 229 TRACE_EVENT2("ppapi proxy", "PpapiHost::OnHostMsgResourceCreated",
229 "Class", IPC_MESSAGE_ID_CLASS(nested_msg.type()), 230 "Class", IPC_MESSAGE_ID_CLASS(nested_msg.type()),
230 "Line", IPC_MESSAGE_ID_LINE(nested_msg.type())); 231 "Line", IPC_MESSAGE_ID_LINE(nested_msg.type()));
231 232
232 if (pending_resource_hosts_.size() + resources_.size() 233 if (pending_resource_hosts_.size() + resources_.size()
233 >= kMaxResourcesPerPlugin) { 234 >= kMaxResourcesPerPlugin) {
234 return; 235 return;
235 } 236 }
236 237
237 // Run through all filters until one grabs this message. 238 // Run through all filters until one grabs this message.
238 scoped_ptr<ResourceHost> resource_host = 239 std::unique_ptr<ResourceHost> resource_host =
239 CreateResourceHost(params.pp_resource(), instance, nested_msg); 240 CreateResourceHost(params.pp_resource(), instance, nested_msg);
240 241
241 if (!resource_host.get()) { 242 if (!resource_host.get()) {
242 NOTREACHED(); 243 NOTREACHED();
243 return; 244 return;
244 } 245 }
245 246
246 // Resource should have been assigned a nonzero PP_Resource. 247 // Resource should have been assigned a nonzero PP_Resource.
247 DCHECK(resource_host->pp_resource()); 248 DCHECK(resource_host->pp_resource());
248 249
(...skipping 18 matching lines...) Expand all
267 ResourceMap::iterator found = resources_.find(resource); 268 ResourceMap::iterator found = resources_.find(resource);
268 if (found == resources_.end()) { 269 if (found == resources_.end()) {
269 NOTREACHED(); 270 NOTREACHED();
270 return; 271 return;
271 } 272 }
272 // Invoking the HostResource destructor might result in looking up the 273 // 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 274 // 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 275 // 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 276 // HostResource until after we've made sure the map no longer contains
276 // |resource|. 277 // |resource|.
277 scoped_ptr<ResourceHost> delete_at_end_of_scope(std::move(found->second)); 278 std::unique_ptr<ResourceHost> delete_at_end_of_scope(
279 std::move(found->second));
278 resources_.erase(found); 280 resources_.erase(found);
279 } 281 }
280 282
281 ResourceHost* PpapiHost::GetResourceHost(PP_Resource resource) const { 283 ResourceHost* PpapiHost::GetResourceHost(PP_Resource resource) const {
282 ResourceMap::const_iterator found = resources_.find(resource); 284 ResourceMap::const_iterator found = resources_.find(resource);
283 return found == resources_.end() ? NULL : found->second.get(); 285 return found == resources_.end() ? NULL : found->second.get();
284 } 286 }
285 287
286 } // namespace host 288 } // namespace host
287 } // namespace ppapi 289 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/host/ppapi_host.h ('k') | ppapi/nacl_irt/irt_pnacl_translator_compile.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698