| 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 "ppapi/c/dev/ppb_file_chooser_dev.h" | 9 #include "ppapi/c/dev/ppb_file_chooser_dev.h" |
| 10 #include "ppapi/c/pp_errors.h" | 10 #include "ppapi/c/pp_errors.h" |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 DISALLOW_COPY_AND_ASSIGN(FileChooser); | 38 DISALLOW_COPY_AND_ASSIGN(FileChooser); |
| 39 }; | 39 }; |
| 40 | 40 |
| 41 FileChooser::FileChooser(const HostResource& resource) | 41 FileChooser::FileChooser(const HostResource& resource) |
| 42 : PluginResource(resource), | 42 : PluginResource(resource), |
| 43 current_show_callback_(PP_MakeCompletionCallback(NULL, NULL)) { | 43 current_show_callback_(PP_MakeCompletionCallback(NULL, NULL)) { |
| 44 } | 44 } |
| 45 | 45 |
| 46 FileChooser::~FileChooser() { | 46 FileChooser::~FileChooser() { |
| 47 // Always need to fire completion callbacks to prevent a leak in the plugin. | 47 // Always need to fire completion callbacks to prevent a leak in the plugin. |
| 48 if (current_show_callback_.func) | 48 if (current_show_callback_.func) { |
| 49 PP_RunCompletionCallback(¤t_show_callback_, PP_ERROR_ABORTED); | 49 // TODO(brettw) the callbacks at this level should be refactored with a |
| 50 // more automatic tracking system like we have in the renderer. |
| 51 MessageLoop::current()->PostTask(FROM_HERE, NewRunnableFunction( |
| 52 current_show_callback_.func, current_show_callback_.user_data, |
| 53 static_cast<int32_t>(PP_ERROR_ABORTED))); |
| 54 } |
| 50 | 55 |
| 51 // Any existing files we haven't transferred ownership to the plugin need | 56 // Any existing files we haven't transferred ownership to the plugin need |
| 52 // to be freed. | 57 // to be freed. |
| 53 PluginResourceTracker* tracker = PluginResourceTracker::GetInstance(); | 58 PluginResourceTracker* tracker = PluginResourceTracker::GetInstance(); |
| 54 while (!file_queue_.empty()) { | 59 while (!file_queue_.empty()) { |
| 55 tracker->ReleaseResource(file_queue_.front()); | 60 tracker->ReleaseResource(file_queue_.front()); |
| 56 file_queue_.pop(); | 61 file_queue_.pop(); |
| 57 } | 62 } |
| 58 } | 63 } |
| 59 | 64 |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 files.push_back(cur_create_info); | 242 files.push_back(cur_create_info); |
| 238 } | 243 } |
| 239 } | 244 } |
| 240 | 245 |
| 241 dispatcher()->Send(new PpapiMsg_PPBFileChooser_ChooseComplete( | 246 dispatcher()->Send(new PpapiMsg_PPBFileChooser_ChooseComplete( |
| 242 INTERFACE_ID_PPB_FILE_CHOOSER, chooser, result, files)); | 247 INTERFACE_ID_PPB_FILE_CHOOSER, chooser, result, files)); |
| 243 } | 248 } |
| 244 | 249 |
| 245 } // namespace proxy | 250 } // namespace proxy |
| 246 } // namespace pp | 251 } // namespace pp |
| OLD | NEW |