summaryrefslogtreecommitdiffstats
path: root/ppapi/cpp
diff options
context:
space:
mode:
authorviettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-13 22:29:30 +0000
committerviettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-13 22:29:30 +0000
commit6a48559060bdafd22cf2a94bf39b8514bafa400a (patch)
treee78ac37323a1886511f8d8a57da1ec39d42765ea /ppapi/cpp
parent2650164251ab77ea9a348952e16323d493eee039 (diff)
downloadchromium_src-6a48559060bdafd22cf2a94bf39b8514bafa400a.zip
chromium_src-6a48559060bdafd22cf2a94bf39b8514bafa400a.tar.gz
chromium_src-6a48559060bdafd22cf2a94bf39b8514bafa400a.tar.bz2
Pepper: Add a C++ wrapper for the trusted file chooser.
This makes it easy (for trusted Pepper plugins) to opt for showing a file chooser while avoiding the user-gesture check. BUG=none TEST=none Review URL: http://codereview.chromium.org/8275013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105392 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/cpp')
-rw-r--r--ppapi/cpp/dev/file_chooser_dev.h6
-rw-r--r--ppapi/cpp/trusted/file_chooser_trusted.cc53
-rw-r--r--ppapi/cpp/trusted/file_chooser_trusted.h38
3 files changed, 94 insertions, 3 deletions
diff --git a/ppapi/cpp/dev/file_chooser_dev.h b/ppapi/cpp/dev/file_chooser_dev.h
index 6bbe0c5..ec0a6d5 100644
--- a/ppapi/cpp/dev/file_chooser_dev.h
+++ b/ppapi/cpp/dev/file_chooser_dev.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -55,7 +55,7 @@ class FileChooser_Dev : public Resource {
///
/// @return PP_OK_COMPLETIONPENDING if request to show the dialog was
/// successful, another error code from pp_errors.h on failure.
- int32_t Show(const CompletionCallback& cc);
+ virtual int32_t Show(const CompletionCallback& cc);
/// 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
@@ -65,7 +65,7 @@ class FileChooser_Dev : public Resource {
/// 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.
- FileRef GetNextChosenFile() const;
+ virtual FileRef GetNextChosenFile() const;
};
} // namespace pp
diff --git a/ppapi/cpp/trusted/file_chooser_trusted.cc b/ppapi/cpp/trusted/file_chooser_trusted.cc
new file mode 100644
index 0000000..d0c6c50
--- /dev/null
+++ b/ppapi/cpp/trusted/file_chooser_trusted.cc
@@ -0,0 +1,53 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ppapi/cpp/trusted/file_chooser_trusted.h"
+
+#include "ppapi/c/pp_bool.h"
+#include "ppapi/cpp/completion_callback.h"
+#include "ppapi/c/pp_errors.h"
+#include "ppapi/cpp/module_impl.h"
+#include "ppapi/cpp/var.h"
+#include "ppapi/c/trusted/ppb_file_chooser_trusted.h"
+
+namespace pp {
+
+namespace {
+
+template <> const char* interface_name<PPB_FileChooserTrusted>() {
+ return PPB_FILECHOOSER_TRUSTED_INTERFACE;
+}
+
+} // namespace
+
+FileChooser_Trusted::FileChooser_Trusted() : save_as_(false) {
+}
+
+FileChooser_Trusted::FileChooser_Trusted(const Instance* instance,
+ PP_FileChooserMode_Dev mode,
+ const Var& accept_mime_types,
+ bool save_as,
+ const std::string& suggested_file_name)
+ : FileChooser_Dev(instance, mode, accept_mime_types),
+ save_as_(save_as),
+ suggested_file_name_(suggested_file_name) {
+}
+
+FileChooser_Trusted::FileChooser_Trusted(const FileChooser_Trusted& other)
+ : FileChooser_Dev(other),
+ save_as_(other.save_as_),
+ suggested_file_name_(other.suggested_file_name_) {
+}
+
+int32_t FileChooser_Trusted::Show(const CompletionCallback& cc) {
+ if (!has_interface<PPB_FileChooserTrusted>())
+ return cc.MayForce(PP_ERROR_NOINTERFACE);
+ return get_interface<PPB_FileChooserTrusted>()->ShowWithoutUserGesture(
+ pp_resource(),
+ PP_FromBool(save_as_),
+ Var(suggested_file_name_).pp_var(),
+ cc.pp_completion_callback());
+}
+
+} // namespace pp
diff --git a/ppapi/cpp/trusted/file_chooser_trusted.h b/ppapi/cpp/trusted/file_chooser_trusted.h
new file mode 100644
index 0000000..a0227ef
--- /dev/null
+++ b/ppapi/cpp/trusted/file_chooser_trusted.h
@@ -0,0 +1,38 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef PPAPI_CPP_TRUSTED_FILE_CHOOSER_TRUSTED_H_
+#define PPAPI_CPP_TRUSTED_FILE_CHOOSER_TRUSTED_H_
+
+#include <string>
+
+#include "ppapi/cpp/dev/file_chooser_dev.h"
+
+namespace pp {
+
+class FileChooser_Trusted : public FileChooser_Dev {
+ public:
+ /// Creates an is_null() FileChooser_Trusted object.
+ FileChooser_Trusted();
+
+ FileChooser_Trusted(const Instance* instance,
+ PP_FileChooserMode_Dev mode,
+ const Var& accept_mime_types,
+ bool save_as,
+ const std::string& suggested_file_name);
+
+ FileChooser_Trusted(const FileChooser_Trusted& other);
+
+ // Overrides of method in superclass. This shows without requiring a user
+ // gesture (and can also show save dialogs).
+ virtual int32_t Show(const CompletionCallback& cc);
+
+ private:
+ const bool save_as_;
+ const std::string suggested_file_name_;
+};
+
+} // namespace pp
+
+#endif // PPAPI_CPP_TRUSTED_FILE_CHOOSER_TRUSTED_H_