Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(153)

Unified Diff: ppapi/cpp/private/flash_clipboard.cc

Issue 9212066: Modified the flash cipboard interface to add html clipboard support. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ppapi/cpp/private/flash_clipboard.cc
diff --git a/ppapi/cpp/private/flash_clipboard.cc b/ppapi/cpp/private/flash_clipboard.cc
index 8634eafc8adde463a9fa2be7609ab2a8dfca857d..47731e136ac7d53016250a716f9164ce6c0bbc22 100644
--- a/ppapi/cpp/private/flash_clipboard.cc
+++ b/ppapi/cpp/private/flash_clipboard.cc
@@ -4,9 +4,12 @@
#include "ppapi/cpp/private/flash_clipboard.h"
+#include <vector>
+
#include "ppapi/c/pp_bool.h"
#include "ppapi/c/pp_errors.h"
#include "ppapi/cpp/instance.h"
+#include "ppapi/cpp/logging.h"
#include "ppapi/cpp/module_impl.h"
#include "ppapi/cpp/var.h"
@@ -18,6 +21,10 @@ template <> const char* interface_name<PPB_Flash_Clipboard>() {
return PPB_FLASH_CLIPBOARD_INTERFACE;
}
+template <> const char* interface_name<PPB_Flash_Clipboard_3_0>() {
+ return PPB_FLASH_CLIPBOARD_INTERFACE_3_0;
+}
+
} // namespace
namespace flash {
@@ -40,35 +47,60 @@ bool Clipboard::IsFormatAvailable(Instance* instance,
}
// static
-bool Clipboard::ReadPlainText(Instance* instance,
- PP_Flash_Clipboard_Type clipboard_type,
- std::string* text_out) {
- bool rv = false;
- if (has_interface<PPB_Flash_Clipboard>()) {
- Var v(Var::PassRef(),
- get_interface<PPB_Flash_Clipboard>()->ReadPlainText(
- instance->pp_instance(),
- clipboard_type));
- if (v.is_string()) {
- rv = true;
- *text_out = v.AsString();
+bool Clipboard::ReadData(Instance* instance,
viettrungluu 2012/02/08 22:25:01 nit: Move "Instance* instance," to the next line (
raymes 2012/02/09 00:20:27 Done.
+ PP_Flash_Clipboard_Type clipboard_type,
+ PP_Flash_Clipboard_Format clipboard_format,
+ PP_Var* out) {
+ if (has_interface<PPB_Flash_Clipboard>() ||
viettrungluu 2012/02/08 22:25:01 This function is just wrong. I'd prefer, in any c
raymes 2012/02/09 00:20:27 Umm yes...don't know what I was thinking when I ch
+ (has_interface<PPB_Flash_Clipboard_3_0>() &&
+ clipboard_format == PP_FLASH_CLIPBOARD_FORMAT_PLAINTEXT)) {
+ bool rv = false;
+ if (has_interface<PPB_Flash_Clipboard>()) {
+ *out = get_interface<PPB_Flash_Clipboard>()->ReadData(
+ instance->pp_instance(),
+ clipboard_type,
+ clipboard_format);
}
+ return rv;
+ }
+ else {
+ return false;
}
- return rv;
}
// static
-bool Clipboard::WritePlainText(Instance* instance,
- PP_Flash_Clipboard_Type clipboard_type,
- const std::string& text) {
- bool rv = false;
- if (has_interface<PPB_Flash_Clipboard>()) {
- rv = (get_interface<PPB_Flash_Clipboard>()->WritePlainText(
+bool Clipboard::WriteData(Instance* instance,
+ PP_Flash_Clipboard_Type clipboard_type,
+ const std::vector<PP_Flash_Clipboard_Data_Item>& data_items) {
+ if (has_interface<PPB_Flash_Clipboard>() ||
viettrungluu 2012/02/08 22:25:01 Again, I'd prefer the above completed-separated wa
raymes 2012/02/09 00:20:27 Done.
+ has_interface<PPB_Flash_Clipboard_3_0>()) {
+ bool rv = false;
+ PP_Flash_Clipboard_Data_Item* data_items_array =
+ new PP_Flash_Clipboard_Data_Item[data_items.size()];
+
+ uint32_t data_items_array_size = 0;
+ for (std::vector<PP_Flash_Clipboard_Data_Item>::const_iterator
+ i = data_items.begin(); i != data_items.end(); ++i) {
+ if (has_interface<PPB_Flash_Clipboard_3_0>() &&
+ i->format != PP_FLASH_CLIPBOARD_FORMAT_PLAINTEXT) {
+ continue;
+ }
+
+ data_items_array[data_items_array_size] = *i;
+ ++data_items_array_size;
+ }
+
+ rv = (get_interface<PPB_Flash_Clipboard>()->WriteData(
viettrungluu 2012/02/08 22:25:01 E.g., you'd need to use PPB_Flash_Clipboard_3_0 fo
raymes 2012/02/09 00:20:27 Done.
instance->pp_instance(),
clipboard_type,
- Var(text).pp_var()) == PP_OK);
+ data_items_array_size,
+ data_items_array) == PP_OK);
+ delete[] data_items_array;
+ return rv;
+ }
+ else {
+ return false;
}
- return rv;
}
} // namespace flash

Powered by Google App Engine
This is Rietveld 408576698