| Index: webkit/plugins/ppapi/ppb_file_chooser_impl.cc
|
| ===================================================================
|
| --- webkit/plugins/ppapi/ppb_file_chooser_impl.cc (revision 87260)
|
| +++ webkit/plugins/ppapi/ppb_file_chooser_impl.cc (working copy)
|
| @@ -25,6 +25,7 @@
|
| #include "webkit/plugins/ppapi/resource_tracker.h"
|
| #include "webkit/glue/webkit_glue.h"
|
|
|
| +using ppapi::thunk::PPB_FileChooser_API;
|
| using WebKit::WebCString;
|
| using WebKit::WebFileChooserCompletion;
|
| using WebKit::WebFileChooserParams;
|
| @@ -36,53 +37,6 @@
|
|
|
| namespace {
|
|
|
| -PP_Resource Create(PP_Instance instance_id,
|
| - const PP_FileChooserOptions_Dev* options) {
|
| - PluginInstance* instance = ResourceTracker::Get()->GetInstance(instance_id);
|
| - if (!instance)
|
| - return 0;
|
| -
|
| - if ((options->mode != PP_FILECHOOSERMODE_OPEN) &&
|
| - (options->mode != PP_FILECHOOSERMODE_OPENMULTIPLE))
|
| - return 0;
|
| -
|
| - PPB_FileChooser_Impl* chooser = new PPB_FileChooser_Impl(instance, options);
|
| - return chooser->GetReference();
|
| -}
|
| -
|
| -PP_Bool IsFileChooser(PP_Resource resource) {
|
| - return BoolToPPBool(!!Resource::GetAs<PPB_FileChooser_Impl>(resource));
|
| -}
|
| -
|
| -int32_t Show(PP_Resource chooser_id, PP_CompletionCallback callback) {
|
| - scoped_refptr<PPB_FileChooser_Impl> chooser(
|
| - Resource::GetAs<PPB_FileChooser_Impl>(chooser_id));
|
| - if (!chooser)
|
| - return PP_ERROR_BADRESOURCE;
|
| -
|
| - return chooser->Show(callback);
|
| -}
|
| -
|
| -PP_Resource GetNextChosenFile(PP_Resource chooser_id) {
|
| - scoped_refptr<PPB_FileChooser_Impl> chooser(
|
| - Resource::GetAs<PPB_FileChooser_Impl>(chooser_id));
|
| - if (!chooser)
|
| - return 0;
|
| -
|
| - scoped_refptr<PPB_FileRef_Impl> file_ref(chooser->GetNextChosenFile());
|
| - if (!file_ref)
|
| - return 0;
|
| -
|
| - return file_ref->GetReference();
|
| -}
|
| -
|
| -const PPB_FileChooser_Dev ppb_filechooser = {
|
| - &Create,
|
| - &IsFileChooser,
|
| - &Show,
|
| - &GetNextChosenFile
|
| -};
|
| -
|
| class FileChooserCompletionImpl : public WebFileChooserCompletion {
|
| public:
|
| FileChooserCompletionImpl(PPB_FileChooser_Impl* file_chooser)
|
| @@ -120,14 +74,29 @@
|
| }
|
|
|
| // static
|
| -const PPB_FileChooser_Dev* PPB_FileChooser_Impl::GetInterface() {
|
| - return &ppb_filechooser;
|
| +PP_Resource PPB_FileChooser_Impl::Create(
|
| + PP_Instance pp_instance,
|
| + const PP_FileChooserOptions_Dev* options) {
|
| + PluginInstance* instance = ResourceTracker::Get()->GetInstance(pp_instance);
|
| + if (!instance)
|
| + return 0;
|
| +
|
| + if ((options->mode != PP_FILECHOOSERMODE_OPEN) &&
|
| + (options->mode != PP_FILECHOOSERMODE_OPENMULTIPLE))
|
| + return 0;
|
| +
|
| + PPB_FileChooser_Impl* chooser = new PPB_FileChooser_Impl(instance, options);
|
| + return chooser->GetReference();
|
| }
|
|
|
| PPB_FileChooser_Impl* PPB_FileChooser_Impl::AsPPB_FileChooser_Impl() {
|
| return this;
|
| }
|
|
|
| +PPB_FileChooser_API* PPB_FileChooser_Impl::AsPPB_FileChooser_API() {
|
| + return this;
|
| +}
|
| +
|
| void PPB_FileChooser_Impl::StoreChosenFiles(
|
| const std::vector<std::string>& files) {
|
| chosen_files_.clear();
|
| @@ -176,7 +145,7 @@
|
| callback->Run(result); // Will complete abortively if necessary.
|
| }
|
|
|
| -int32_t PPB_FileChooser_Impl::Show(const PP_CompletionCallback& callback) {
|
| +int32_t PPB_FileChooser_Impl::Show(PP_CompletionCallback callback) {
|
| int32_t rv = ValidateCallback(callback);
|
| if (rv != PP_OK)
|
| return rv;
|
| @@ -197,11 +166,11 @@
|
| return PP_OK_COMPLETIONPENDING;
|
| }
|
|
|
| -scoped_refptr<PPB_FileRef_Impl> PPB_FileChooser_Impl::GetNextChosenFile() {
|
| +PP_Resource PPB_FileChooser_Impl::GetNextChosenFile() {
|
| if (next_chosen_file_index_ >= chosen_files_.size())
|
| - return NULL;
|
| + return 0;
|
|
|
| - return chosen_files_[next_chosen_file_index_++];
|
| + return chosen_files_[next_chosen_file_index_++]->GetReference();
|
| }
|
|
|
| } // namespace ppapi
|
|
|