| Index: ppapi/cpp/dev/file_chooser_dev.h
|
| diff --git a/ppapi/cpp/dev/file_chooser_dev.h b/ppapi/cpp/dev/file_chooser_dev.h
|
| index c2abc703073e71da43b57e9ee424d4272f8a64c9..b588ac85a379ebff01d2109f764b50c6c3e64a5f 100644
|
| --- a/ppapi/cpp/dev/file_chooser_dev.h
|
| +++ b/ppapi/cpp/dev/file_chooser_dev.h
|
| @@ -5,7 +5,11 @@
|
| #ifndef PPAPI_CPP_DEV_FILE_CHOOSER_DEV_H_
|
| #define PPAPI_CPP_DEV_FILE_CHOOSER_DEV_H_
|
|
|
| +#include <vector>
|
| +
|
| #include "ppapi/c/dev/ppb_file_chooser_dev.h"
|
| +#include "ppapi/cpp/completion_callback.h"
|
| +#include "ppapi/cpp/file_ref.h"
|
| #include "ppapi/cpp/resource.h"
|
|
|
| namespace pp {
|
| @@ -49,23 +53,47 @@ class FileChooser_Dev : public Resource {
|
| FileChooser_Dev(const FileChooser_Dev& other);
|
|
|
| /// This function displays a previously created file chooser resource as a
|
| - /// dialog box, prompting the user to choose a file or files. The callback is
|
| - /// called with PP_OK on successful completion with a file (or files) selected
|
| - /// or PP_ERROR_USERCANCEL if the user selected no file.
|
| + /// dialog box, prompting the user to choose a file or files. This function
|
| + /// must be called in response to a user gesture, such as a mouse click or
|
| + /// touch event. The callback is called with PP_OK on successful completion
|
| + /// with a file (or files) selected, PP_ERROR_USERCANCEL if the user selected
|
| + /// no file, or another error code from pp_errors.h on failure.
|
| + ///
|
| + /// @param callback The completion callback that will be executed. On success,
|
| + /// the selected files will be passed to the given function.
|
| + ///
|
| + /// Normally you would use a CompletionCallbackFactory to allow callbacks to
|
| + /// be bound to your class. See completion_callback_factory.h for more
|
| + /// discussion on how to use this. Your callback will generally look like:
|
| + ///
|
| + /// @code
|
| + /// void OnFilesSelected(int32_t result,
|
| + /// const std::vector<pp::FileRef>& files) {
|
| + /// if (result == PP_OK)
|
| + /// // use files...
|
| + /// }
|
| + /// @endcode
|
| ///
|
| /// @return PP_OK_COMPLETIONPENDING if request to show the dialog was
|
| /// successful, another error code from pp_errors.h on failure.
|
| - virtual int32_t Show(const CompletionCallback& cc);
|
| + virtual int32_t Show(
|
| + const CompletionCallbackWithOutput< std::vector<FileRef> >& callback);
|
| +
|
| + protected:
|
| + // Heap-allocated data passed to the CallbackConverter for backwards compat.
|
| + struct ChooseCallbackData0_5 {
|
| + PP_Resource file_chooser;
|
| + PP_ArrayOutput output;
|
| + PP_CompletionCallback original_callback;
|
| + };
|
|
|
| - /// After a successful completion callback call from Show, this method may be
|
| - /// used to query the chosen files. It should be called in a loop until it
|
| - /// returns an is_null() FileRef. Depending on the PP_ChooseFileMode
|
| - /// requested when the FileChooser was created, the file refs will either
|
| - /// be readable or writable. Their file system type will be
|
| - /// PP_FileSystemType_External. If the user chose no files or cancelled the
|
| - /// dialog, then this method will simply return an is_null() FileRef the
|
| - /// first time it is called.
|
| - virtual FileRef GetNextChosenFile() const;
|
| + // Provide backwards-compatability for older versions. Converts the old-style
|
| + // 0.5 "iterator" interface to the new-style 0.6 "array output" interface that
|
| + // the caller is expecting.
|
| + //
|
| + // This takes a heap-allocated ChooseCallbackData0_5 struct passed as the
|
| + // user data and deletes it when the call completes.
|
| + static void CallbackConverter(void* user_data, int32_t result);
|
| };
|
|
|
| } // namespace pp
|
|
|