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

Side by Side Diff: webkit/plugins/ppapi/resource_creation_impl.cc

Issue 7629017: Add a unified resource tracker shared between the proxy and the impl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address review comments Created 9 years, 4 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 (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "webkit/plugins/ppapi/resource_creation_impl.h" 5 #include "webkit/plugins/ppapi/resource_creation_impl.h"
6 6
7 #include "ppapi/c/pp_size.h" 7 #include "ppapi/c/pp_size.h"
8 #include "ppapi/shared_impl/input_event_impl.h" 8 #include "ppapi/shared_impl/input_event_impl.h"
9 #include "ppapi/shared_impl/var.h" 9 #include "ppapi/shared_impl/var.h"
10 #include "webkit/plugins/ppapi/common.h" 10 #include "webkit/plugins/ppapi/common.h"
(...skipping 21 matching lines...) Expand all
32 #include "webkit/plugins/ppapi/ppb_video_capture_impl.h" 32 #include "webkit/plugins/ppapi/ppb_video_capture_impl.h"
33 #include "webkit/plugins/ppapi/ppb_video_decoder_impl.h" 33 #include "webkit/plugins/ppapi/ppb_video_decoder_impl.h"
34 #include "webkit/plugins/ppapi/ppb_video_layer_impl.h" 34 #include "webkit/plugins/ppapi/ppb_video_layer_impl.h"
35 35
36 using ppapi::InputEventData; 36 using ppapi::InputEventData;
37 using ppapi::StringVar; 37 using ppapi::StringVar;
38 38
39 namespace webkit { 39 namespace webkit {
40 namespace ppapi { 40 namespace ppapi {
41 41
42 namespace {
43
44 // We use two methods for creating resources. When the resource initialization
45 // is simple and can't fail, just do
46 // return ReturnResource(new PPB_Foo_Impl(instance_, ...));
47 // This will set up everything necessary.
48 //
49 // If the resource is more complex, generally the best thing is to write a
50 // static "Create" function on the resource class that returns a PP_Resource
51 // or 0 on failure. That helps keep the resource-specific stuff localized and
52 // this class very simple.
53 PP_Resource ReturnResource(Resource* resource) {
54 // We actually have to keep a ref here since the argument will not be ref'ed
55 // at all if it was just passed in with new (the expected usage). The
56 // returned PP_Resource created by GetReference will hold onto a ref on
57 // behalf of the plugin which will outlive this function. So the end result
58 // will be a Resource with one ref.
59 scoped_refptr<Resource> ref(resource);
60 return resource->GetReference();
61 }
62
63 } // namespace
64
65
66 ResourceCreationImpl::ResourceCreationImpl(PluginInstance* instance) 42 ResourceCreationImpl::ResourceCreationImpl(PluginInstance* instance)
67 : instance_(instance) { 43 : instance_(instance) {
68 } 44 }
69 45
70 ResourceCreationImpl::~ResourceCreationImpl() { 46 ResourceCreationImpl::~ResourceCreationImpl() {
71 } 47 }
72 48
73 ::ppapi::thunk::ResourceCreationAPI* 49 ::ppapi::thunk::ResourceCreationAPI*
74 ResourceCreationImpl::AsResourceCreationAPI() { 50 ResourceCreationImpl::AsResourceCreationAPI() {
75 return this; 51 return this;
(...skipping 11 matching lines...) Expand all
87 PP_Resource ResourceCreationImpl::CreateAudioConfig( 63 PP_Resource ResourceCreationImpl::CreateAudioConfig(
88 PP_Instance instance_id, 64 PP_Instance instance_id,
89 PP_AudioSampleRate sample_rate, 65 PP_AudioSampleRate sample_rate,
90 uint32_t sample_frame_count) { 66 uint32_t sample_frame_count) {
91 return PPB_AudioConfig_Impl::Create(instance_, sample_rate, 67 return PPB_AudioConfig_Impl::Create(instance_, sample_rate,
92 sample_frame_count); 68 sample_frame_count);
93 } 69 }
94 70
95 PP_Resource ResourceCreationImpl::CreateAudioTrusted( 71 PP_Resource ResourceCreationImpl::CreateAudioTrusted(
96 PP_Instance instance_id) { 72 PP_Instance instance_id) {
97 return ReturnResource(new PPB_Audio_Impl(instance_)); 73 return (new PPB_Audio_Impl(instance_))->GetReference();
98 } 74 }
99 75
100 PP_Resource ResourceCreationImpl::CreateBroker(PP_Instance instance) { 76 PP_Resource ResourceCreationImpl::CreateBroker(PP_Instance instance) {
101 return ReturnResource(new PPB_Broker_Impl(instance_)); 77 return (new PPB_Broker_Impl(instance_))->GetReference();
102 } 78 }
103 79
104 PP_Resource ResourceCreationImpl::CreateBuffer(PP_Instance instance, 80 PP_Resource ResourceCreationImpl::CreateBuffer(PP_Instance instance,
105 uint32_t size) { 81 uint32_t size) {
106 return PPB_Buffer_Impl::Create(instance_, size); 82 return PPB_Buffer_Impl::Create(instance_, size);
107 } 83 }
108 84
109 PP_Resource ResourceCreationImpl::CreateContext3D( 85 PP_Resource ResourceCreationImpl::CreateContext3D(
110 PP_Instance instance, 86 PP_Instance instance,
111 PP_Config3D_Dev config, 87 PP_Config3D_Dev config,
(...skipping 17 matching lines...) Expand all
129 return PPB_DirectoryReader_Impl::Create(directory_ref); 105 return PPB_DirectoryReader_Impl::Create(directory_ref);
130 } 106 }
131 107
132 PP_Resource ResourceCreationImpl::CreateFileChooser( 108 PP_Resource ResourceCreationImpl::CreateFileChooser(
133 PP_Instance instance, 109 PP_Instance instance,
134 const PP_FileChooserOptions_Dev* options) { 110 const PP_FileChooserOptions_Dev* options) {
135 return PPB_FileChooser_Impl::Create(instance_, options); 111 return PPB_FileChooser_Impl::Create(instance_, options);
136 } 112 }
137 113
138 PP_Resource ResourceCreationImpl::CreateFileIO(PP_Instance instance) { 114 PP_Resource ResourceCreationImpl::CreateFileIO(PP_Instance instance) {
139 return ReturnResource(new PPB_FileIO_Impl(instance_)); 115 return (new PPB_FileIO_Impl(instance_))->GetReference();
140 } 116 }
141 117
142 PP_Resource ResourceCreationImpl::CreateFileRef(PP_Resource file_system, 118 PP_Resource ResourceCreationImpl::CreateFileRef(PP_Resource file_system,
143 const char* path) { 119 const char* path) {
144 return PPB_FileRef_Impl::Create(file_system, path); 120 return PPB_FileRef_Impl::Create(file_system, path);
145 } 121 }
146 122
147 PP_Resource ResourceCreationImpl::CreateFileSystem( 123 PP_Resource ResourceCreationImpl::CreateFileSystem(
148 PP_Instance instance, 124 PP_Instance instance,
149 PP_FileSystemType type) { 125 PP_FileSystemType type) {
150 return PPB_FileSystem_Impl::Create(instance_, type); 126 return PPB_FileSystem_Impl::Create(instance_, type);
151 } 127 }
152 128
153 PP_Resource ResourceCreationImpl::CreateFlashMenu( 129 PP_Resource ResourceCreationImpl::CreateFlashMenu(
154 PP_Instance instance, 130 PP_Instance instance,
155 const PP_Flash_Menu* menu_data) { 131 const PP_Flash_Menu* menu_data) {
156 return PPB_Flash_Menu_Impl::Create(instance_, menu_data); 132 return PPB_Flash_Menu_Impl::Create(instance_, menu_data);
157 } 133 }
158 134
159 PP_Resource ResourceCreationImpl::CreateFlashNetConnector( 135 PP_Resource ResourceCreationImpl::CreateFlashNetConnector(
160 PP_Instance instance) { 136 PP_Instance instance) {
161 return ReturnResource(new PPB_Flash_NetConnector_Impl(instance_)); 137 return (new PPB_Flash_NetConnector_Impl(instance_))->GetReference();
162 } 138 }
163 139
164 PP_Resource ResourceCreationImpl::CreateFlashTCPSocket( 140 PP_Resource ResourceCreationImpl::CreateFlashTCPSocket(
165 PP_Instance instance) { 141 PP_Instance instance) {
166 // Creating TCP socket resource at the renderer side is not supported. 142 // Creating TCP socket resource at the renderer side is not supported.
167 return 0; 143 return 0;
168 } 144 }
169 145
170 PP_Resource ResourceCreationImpl::CreateFontObject( 146 PP_Resource ResourceCreationImpl::CreateFontObject(
171 PP_Instance pp_instance, 147 PP_Instance pp_instance,
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 return PPB_Surface3D_Impl::Create(instance_, config, attrib_list); 243 return PPB_Surface3D_Impl::Create(instance_, config, attrib_list);
268 } 244 }
269 245
270 PP_Resource ResourceCreationImpl::CreateTransport(PP_Instance instance, 246 PP_Resource ResourceCreationImpl::CreateTransport(PP_Instance instance,
271 const char* name, 247 const char* name,
272 const char* proto) { 248 const char* proto) {
273 return PPB_Transport_Impl::Create(instance_, name, proto); 249 return PPB_Transport_Impl::Create(instance_, name, proto);
274 } 250 }
275 251
276 PP_Resource ResourceCreationImpl::CreateURLLoader(PP_Instance instance) { 252 PP_Resource ResourceCreationImpl::CreateURLLoader(PP_Instance instance) {
277 return ReturnResource(new PPB_URLLoader_Impl(instance_, false)); 253 return (new PPB_URLLoader_Impl(instance_, false))->GetReference();
278 } 254 }
279 255
280 PP_Resource ResourceCreationImpl::CreateURLRequestInfo(PP_Instance instance) { 256 PP_Resource ResourceCreationImpl::CreateURLRequestInfo(PP_Instance instance) {
281 return ReturnResource(new PPB_URLRequestInfo_Impl(instance_)); 257 return (new PPB_URLRequestInfo_Impl(instance_))->GetReference();
282 } 258 }
283 259
284 PP_Resource ResourceCreationImpl::CreateVideoCapture(PP_Instance instance) { 260 PP_Resource ResourceCreationImpl::CreateVideoCapture(PP_Instance instance) {
285 scoped_refptr<PPB_VideoCapture_Impl> video_capture = 261 scoped_refptr<PPB_VideoCapture_Impl> video_capture =
286 new PPB_VideoCapture_Impl(instance_); 262 new PPB_VideoCapture_Impl(instance_);
287 if (!video_capture->Init()) 263 if (!video_capture->Init())
288 return 0; 264 return 0;
289 return ReturnResource(video_capture); 265 return video_capture->GetReference();
290 } 266 }
291 267
292 PP_Resource ResourceCreationImpl::CreateVideoDecoder( 268 PP_Resource ResourceCreationImpl::CreateVideoDecoder(
293 PP_Instance instance, 269 PP_Instance instance,
294 PP_Resource context3d_id, 270 PP_Resource context3d_id,
295 const PP_VideoConfigElement* config) { 271 const PP_VideoConfigElement* config) {
296 return PPB_VideoDecoder_Impl::Create(instance_, context3d_id, config); 272 return PPB_VideoDecoder_Impl::Create(instance_, context3d_id, config);
297 } 273 }
298 274
299 PP_Resource ResourceCreationImpl::CreateVideoLayer(PP_Instance instance, 275 PP_Resource ResourceCreationImpl::CreateVideoLayer(PP_Instance instance,
(...skipping 14 matching lines...) Expand all
314 data.event_modifiers = modifiers; 290 data.event_modifiers = modifiers;
315 data.wheel_delta = *wheel_delta; 291 data.wheel_delta = *wheel_delta;
316 data.wheel_ticks = *wheel_ticks; 292 data.wheel_ticks = *wheel_ticks;
317 data.wheel_scroll_by_page = PP_ToBool(scroll_by_page); 293 data.wheel_scroll_by_page = PP_ToBool(scroll_by_page);
318 294
319 return PPB_InputEvent_Impl::Create(instance_, data); 295 return PPB_InputEvent_Impl::Create(instance_, data);
320 } 296 }
321 297
322 } // namespace ppapi 298 } // namespace ppapi
323 } // namespace webkit 299 } // namespace webkit
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698