diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-20 04:53:22 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-20 04:53:22 +0000 |
commit | bab65ef72eb97612599d97a35c6da6f460b0cacc (patch) | |
tree | c3a3d01bf47a3c7f8e0a7969e5f59ff509963484 /webkit/plugins/ppapi | |
parent | 84a7f535761e3bceeac188cd8cd499e2f8016661 (diff) | |
download | chromium_src-bab65ef72eb97612599d97a35c6da6f460b0cacc.zip chromium_src-bab65ef72eb97612599d97a35c6da6f460b0cacc.tar.gz chromium_src-bab65ef72eb97612599d97a35c6da6f460b0cacc.tar.bz2 |
Cleanup in the file chooser API.
This revs the file chooser interface to no longer pass a separate options structure. This structure was weird because it only had two members, and didn't have ownership of the string which is potentially dangerous. The new interface is a bit easier to call.
I changed the string to take a Var, and the C++ layer now takes an Instance*
rather than an Instance& which is consistent with the other interfaces. I
updated the example.
TEST=manual
BUG=
Review URL: http://codereview.chromium.org/7660017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97558 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/plugins/ppapi')
-rw-r--r-- | webkit/plugins/ppapi/ppb_file_chooser_impl.cc | 24 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppb_file_chooser_impl.h | 9 | ||||
-rw-r--r-- | webkit/plugins/ppapi/resource_creation_impl.cc | 5 | ||||
-rw-r--r-- | webkit/plugins/ppapi/resource_creation_impl.h | 3 |
4 files changed, 25 insertions, 16 deletions
diff --git a/webkit/plugins/ppapi/ppb_file_chooser_impl.cc b/webkit/plugins/ppapi/ppb_file_chooser_impl.cc index 88ef8c4..14f4784 100644 --- a/webkit/plugins/ppapi/ppb_file_chooser_impl.cc +++ b/webkit/plugins/ppapi/ppb_file_chooser_impl.cc @@ -11,6 +11,7 @@ #include "base/sys_string_conversions.h" #include "ppapi/c/pp_completion_callback.h" #include "ppapi/c/pp_errors.h" +#include "ppapi/shared_impl/var.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebCString.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserCompletion.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserParams.h" @@ -25,6 +26,7 @@ #include "webkit/plugins/ppapi/resource_tracker.h" #include "webkit/glue/webkit_glue.h" +using ppapi::StringVar; using ppapi::thunk::PPB_FileChooser_API; using WebKit::WebCString; using WebKit::WebFileChooserCompletion; @@ -62,12 +64,14 @@ class FileChooserCompletionImpl : public WebFileChooserCompletion { PPB_FileChooser_Impl::PPB_FileChooser_Impl( PluginInstance* instance, - const PP_FileChooserOptions_Dev* options) + PP_FileChooserMode_Dev mode, + const PP_Var& accept_mime_types) : Resource(instance), - mode_(options->mode), - accept_mime_types_(options->accept_mime_types ? - options->accept_mime_types : ""), + mode_(mode), next_chosen_file_index_(0) { + scoped_refptr<StringVar> accept = StringVar::FromPPVar(accept_mime_types); + if (accept) + accept_mime_types_ = accept->value(); } PPB_FileChooser_Impl::~PPB_FileChooser_Impl() { @@ -76,11 +80,13 @@ PPB_FileChooser_Impl::~PPB_FileChooser_Impl() { // static PP_Resource PPB_FileChooser_Impl::Create( PluginInstance* instance, - const PP_FileChooserOptions_Dev* options) { - if ((options->mode != PP_FILECHOOSERMODE_OPEN) && - (options->mode != PP_FILECHOOSERMODE_OPENMULTIPLE)) + PP_FileChooserMode_Dev mode, + const PP_Var& accept_mime_types) { + if (mode != PP_FILECHOOSERMODE_OPEN && + mode != PP_FILECHOOSERMODE_OPENMULTIPLE) return 0; - return (new PPB_FileChooser_Impl(instance, options))->GetReference(); + return (new PPB_FileChooser_Impl(instance, mode, + accept_mime_types))->GetReference(); } PPB_FileChooser_Impl* PPB_FileChooser_Impl::AsPPB_FileChooser_Impl() { @@ -137,7 +143,7 @@ void PPB_FileChooser_Impl::RunCallback(int32_t result) { callback->Run(result); // Will complete abortively if necessary. } -int32_t PPB_FileChooser_Impl::Show(PP_CompletionCallback callback) { +int32_t PPB_FileChooser_Impl::Show(const PP_CompletionCallback& callback) { int32_t rv = ValidateCallback(callback); if (rv != PP_OK) return rv; diff --git a/webkit/plugins/ppapi/ppb_file_chooser_impl.h b/webkit/plugins/ppapi/ppb_file_chooser_impl.h index 796ddd1..88813d8 100644 --- a/webkit/plugins/ppapi/ppb_file_chooser_impl.h +++ b/webkit/plugins/ppapi/ppb_file_chooser_impl.h @@ -9,7 +9,6 @@ #include <vector> #include "base/memory/ref_counted.h" -#include "ppapi/c/dev/ppb_file_chooser_dev.h" #include "ppapi/thunk/ppb_file_chooser_api.h" #include "webkit/plugins/ppapi/resource.h" @@ -26,11 +25,13 @@ class PPB_FileChooser_Impl : public Resource, public ::ppapi::thunk::PPB_FileChooser_API { public: PPB_FileChooser_Impl(PluginInstance* instance, - const PP_FileChooserOptions_Dev* options); + PP_FileChooserMode_Dev mode, + const PP_Var& accept_mime_types); virtual ~PPB_FileChooser_Impl(); static PP_Resource Create(PluginInstance* instance, - const PP_FileChooserOptions_Dev* options); + PP_FileChooserMode_Dev mode, + const PP_Var& accept_mime_types); // Resource overrides. virtual PPB_FileChooser_Impl* AsPPB_FileChooser_Impl(); @@ -53,7 +54,7 @@ class PPB_FileChooser_Impl : public Resource, void RunCallback(int32_t result); // PPB_FileChooser_API implementation. - virtual int32_t Show(PP_CompletionCallback callback) OVERRIDE; + virtual int32_t Show(const PP_CompletionCallback& callback) OVERRIDE; virtual PP_Resource GetNextChosenFile() OVERRIDE; private: diff --git a/webkit/plugins/ppapi/resource_creation_impl.cc b/webkit/plugins/ppapi/resource_creation_impl.cc index 720f8a4..0aafe50 100644 --- a/webkit/plugins/ppapi/resource_creation_impl.cc +++ b/webkit/plugins/ppapi/resource_creation_impl.cc @@ -107,8 +107,9 @@ PP_Resource ResourceCreationImpl::CreateDirectoryReader( PP_Resource ResourceCreationImpl::CreateFileChooser( PP_Instance instance, - const PP_FileChooserOptions_Dev* options) { - return PPB_FileChooser_Impl::Create(instance_, options); + PP_FileChooserMode_Dev mode, + const PP_Var& accept_mime_types) { + return PPB_FileChooser_Impl::Create(instance_, mode, accept_mime_types); } PP_Resource ResourceCreationImpl::CreateFileIO(PP_Instance instance) { diff --git a/webkit/plugins/ppapi/resource_creation_impl.h b/webkit/plugins/ppapi/resource_creation_impl.h index 417a949..1b29cb5 100644 --- a/webkit/plugins/ppapi/resource_creation_impl.h +++ b/webkit/plugins/ppapi/resource_creation_impl.h @@ -47,7 +47,8 @@ class ResourceCreationImpl : public ::ppapi::FunctionGroupBase, virtual PP_Resource CreateDirectoryReader(PP_Resource directory_ref) OVERRIDE; virtual PP_Resource CreateFileChooser( PP_Instance instance, - const PP_FileChooserOptions_Dev* options) OVERRIDE; + PP_FileChooserMode_Dev mode, + const PP_Var& accept_mime_types) OVERRIDE; virtual PP_Resource CreateFileIO(PP_Instance instance) OVERRIDE; virtual PP_Resource CreateFileRef(PP_Resource file_system, const char* path) OVERRIDE; |