summaryrefslogtreecommitdiffstats
path: root/webkit/plugins/ppapi
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-20 04:53:22 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-20 04:53:22 +0000
commitbab65ef72eb97612599d97a35c6da6f460b0cacc (patch)
treec3a3d01bf47a3c7f8e0a7969e5f59ff509963484 /webkit/plugins/ppapi
parent84a7f535761e3bceeac188cd8cd499e2f8016661 (diff)
downloadchromium_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.cc24
-rw-r--r--webkit/plugins/ppapi/ppb_file_chooser_impl.h9
-rw-r--r--webkit/plugins/ppapi/resource_creation_impl.cc5
-rw-r--r--webkit/plugins/ppapi/resource_creation_impl.h3
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;