OLD | NEW |
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 "ppapi/proxy/ppb_file_chooser_proxy.h" | 5 #include "ppapi/proxy/ppb_file_chooser_proxy.h" |
6 | 6 |
7 #include <queue> | 7 #include <queue> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "ppapi/c/dev/ppb_file_chooser_dev.h" | 10 #include "ppapi/c/dev/ppb_file_chooser_dev.h" |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 const PP_CompletionCallback& callback) { | 117 const PP_CompletionCallback& callback) { |
118 if (!callback.func) | 118 if (!callback.func) |
119 return PP_ERROR_BLOCKS_MAIN_THREAD; | 119 return PP_ERROR_BLOCKS_MAIN_THREAD; |
120 | 120 |
121 if (current_show_callback_.func) | 121 if (current_show_callback_.func) |
122 return PP_ERROR_INPROGRESS; // Can't show more than once. | 122 return PP_ERROR_INPROGRESS; // Can't show more than once. |
123 | 123 |
124 current_show_callback_ = callback; | 124 current_show_callback_ = callback; |
125 PluginDispatcher::GetForResource(this)->Send( | 125 PluginDispatcher::GetForResource(this)->Send( |
126 new PpapiHostMsg_PPBFileChooser_Show( | 126 new PpapiHostMsg_PPBFileChooser_Show( |
127 INTERFACE_ID_PPB_FILE_CHOOSER, | 127 API_ID_PPB_FILE_CHOOSER, |
128 host_resource(), | 128 host_resource(), |
129 save_as, | 129 save_as, |
130 suggested_file_name ? suggested_file_name : "", | 130 suggested_file_name ? suggested_file_name : "", |
131 require_user_gesture)); | 131 require_user_gesture)); |
132 return PP_OK_COMPLETIONPENDING; | 132 return PP_OK_COMPLETIONPENDING; |
133 } | 133 } |
134 | 134 |
135 PP_Resource FileChooser::GetNextChosenFile() { | 135 PP_Resource FileChooser::GetNextChosenFile() { |
136 if (file_queue_.empty()) | 136 if (file_queue_.empty()) |
137 return 0; | 137 return 0; |
(...skipping 28 matching lines...) Expand all Loading... |
166 } | 166 } |
167 | 167 |
168 PPB_FileChooser_Proxy::~PPB_FileChooser_Proxy() { | 168 PPB_FileChooser_Proxy::~PPB_FileChooser_Proxy() { |
169 } | 169 } |
170 | 170 |
171 // static | 171 // static |
172 const InterfaceProxy::Info* PPB_FileChooser_Proxy::GetTrustedInfo() { | 172 const InterfaceProxy::Info* PPB_FileChooser_Proxy::GetTrustedInfo() { |
173 static const Info info = { | 173 static const Info info = { |
174 thunk::GetPPB_FileChooser_Trusted_Thunk(), | 174 thunk::GetPPB_FileChooser_Trusted_Thunk(), |
175 PPB_FILECHOOSER_TRUSTED_INTERFACE, | 175 PPB_FILECHOOSER_TRUSTED_INTERFACE, |
176 INTERFACE_ID_NONE, // FILE_CHOOSER is the canonical one. | 176 API_ID_NONE, // FILE_CHOOSER is the canonical one. |
177 false, | 177 false, |
178 &CreateFileChooserProxy | 178 &CreateFileChooserProxy |
179 }; | 179 }; |
180 return &info; | 180 return &info; |
181 } | 181 } |
182 | 182 |
183 // static | 183 // static |
184 PP_Resource PPB_FileChooser_Proxy::CreateProxyResource( | 184 PP_Resource PPB_FileChooser_Proxy::CreateProxyResource( |
185 PP_Instance instance, | 185 PP_Instance instance, |
186 PP_FileChooserMode_Dev mode, | 186 PP_FileChooserMode_Dev mode, |
187 const char* accept_mime_types) { | 187 const char* accept_mime_types) { |
188 Dispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); | 188 Dispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); |
189 if (!dispatcher) | 189 if (!dispatcher) |
190 return 0; | 190 return 0; |
191 | 191 |
192 HostResource result; | 192 HostResource result; |
193 dispatcher->Send(new PpapiHostMsg_PPBFileChooser_Create( | 193 dispatcher->Send(new PpapiHostMsg_PPBFileChooser_Create( |
194 INTERFACE_ID_PPB_FILE_CHOOSER, instance, | 194 API_ID_PPB_FILE_CHOOSER, instance, |
195 mode, | 195 mode, |
196 accept_mime_types ? accept_mime_types : "", | 196 accept_mime_types ? accept_mime_types : "", |
197 &result)); | 197 &result)); |
198 | 198 |
199 if (result.is_null()) | 199 if (result.is_null()) |
200 return 0; | 200 return 0; |
201 return (new FileChooser(result))->GetReference(); | 201 return (new FileChooser(result))->GetReference(); |
202 } | 202 } |
203 | 203 |
204 bool PPB_FileChooser_Proxy::OnMessageReceived(const IPC::Message& msg) { | 204 bool PPB_FileChooser_Proxy::OnMessageReceived(const IPC::Message& msg) { |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 } | 261 } |
262 } | 262 } |
263 | 263 |
264 void PPB_FileChooser_Proxy::OnShowCallback(int32_t result, | 264 void PPB_FileChooser_Proxy::OnShowCallback(int32_t result, |
265 const HostResource& chooser) { | 265 const HostResource& chooser) { |
266 EnterHostFromHostResource<PPB_FileChooser_API> enter(chooser); | 266 EnterHostFromHostResource<PPB_FileChooser_API> enter(chooser); |
267 | 267 |
268 std::vector<PPB_FileRef_CreateInfo> files; | 268 std::vector<PPB_FileRef_CreateInfo> files; |
269 if (enter.succeeded() && result == PP_OK) { | 269 if (enter.succeeded() && result == PP_OK) { |
270 PPB_FileRef_Proxy* file_ref_proxy = static_cast<PPB_FileRef_Proxy*>( | 270 PPB_FileRef_Proxy* file_ref_proxy = static_cast<PPB_FileRef_Proxy*>( |
271 dispatcher()->GetInterfaceProxy(INTERFACE_ID_PPB_FILE_REF)); | 271 dispatcher()->GetInterfaceProxy(API_ID_PPB_FILE_REF)); |
272 | 272 |
273 // Convert the returned files to the serialized info. | 273 // Convert the returned files to the serialized info. |
274 while (PP_Resource cur_file_resource = | 274 while (PP_Resource cur_file_resource = |
275 enter.object()->GetNextChosenFile()) { | 275 enter.object()->GetNextChosenFile()) { |
276 PPB_FileRef_CreateInfo cur_create_info; | 276 PPB_FileRef_CreateInfo cur_create_info; |
277 file_ref_proxy->SerializeFileRef(cur_file_resource, &cur_create_info); | 277 file_ref_proxy->SerializeFileRef(cur_file_resource, &cur_create_info); |
278 files.push_back(cur_create_info); | 278 files.push_back(cur_create_info); |
279 } | 279 } |
280 } | 280 } |
281 | 281 |
282 dispatcher()->Send(new PpapiMsg_PPBFileChooser_ChooseComplete( | 282 dispatcher()->Send(new PpapiMsg_PPBFileChooser_ChooseComplete( |
283 INTERFACE_ID_PPB_FILE_CHOOSER, chooser, result, files)); | 283 API_ID_PPB_FILE_CHOOSER, chooser, result, files)); |
284 } | 284 } |
285 | 285 |
286 } // namespace proxy | 286 } // namespace proxy |
287 } // namespace ppapi | 287 } // namespace ppapi |
OLD | NEW |