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

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..343f2ebdecde9732df70ca3ad53928df044e7d0b 100644
--- a/ppapi/cpp/private/flash_clipboard.cc
+++ b/ppapi/cpp/private/flash_clipboard.cc
@@ -7,6 +7,7 @@
#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"
@@ -22,6 +23,43 @@ template <> const char* interface_name<PPB_Flash_Clipboard>() {
namespace flash {
+void ClipboardData::SetPlainText(const std::string& text) {
+ SetTextVar(text, PP_FLASH_CLIPBOARD_FORMAT_PLAINTEXT);
+}
+
+void ClipboardData::SetHTML(const std::string& html) {
+ SetTextVar(html, PP_FLASH_CLIPBOARD_FORMAT_HTML);
+}
+
+void ClipboardData::SetTextVar(const std::string& text,
+ PP_Flash_Clipboard_Format format) {
+ uint32_t index = GetFormatIndex(format);
+ data_items_[index].format = format;
+ data_items_[index].data = Var(text).pp_var();
+}
+
+uint32_t ClipboardData::GetFormatIndex(PP_Flash_Clipboard_Format format) {
+ for (uint32_t i = 0; i < data_item_count_; ++i) {
+ if (data_items_[i].format == format) {
+ return i;
+ }
+ }
+ uint32_t index = data_item_count_;
+ ++data_item_count_;
+ PP_DCHECK(index <= ClipboardData::kMaxFormats);
+ return index;
+}
+
+void ClipboardData::Clear() {
+ data_item_count_ = 0;
+}
+
+PP_Flash_Clipboard_Data_Item const*
+ ClipboardData::GetDataItems(uint32_t* data_item_count_out) const {
+ *data_item_count_out = data_item_count_;
+ return data_items_;
+}
+
// static
bool Clipboard::IsAvailable() {
return has_interface<PPB_Flash_Clipboard>();
@@ -40,15 +78,17 @@ bool Clipboard::IsFormatAvailable(Instance* instance,
}
// static
-bool Clipboard::ReadPlainText(Instance* instance,
- PP_Flash_Clipboard_Type clipboard_type,
- std::string* text_out) {
+bool Clipboard::ReadTextVar(Instance* instance,
+ PP_Flash_Clipboard_Type clipboard_type,
+ PP_Flash_Clipboard_Format clipboard_format,
+ std::string* text_out) {
bool rv = false;
if (has_interface<PPB_Flash_Clipboard>()) {
Var v(Var::PassRef(),
- get_interface<PPB_Flash_Clipboard>()->ReadPlainText(
+ get_interface<PPB_Flash_Clipboard>()->ReadData(
instance->pp_instance(),
- clipboard_type));
+ clipboard_type,
+ clipboard_format));
if (v.is_string()) {
rv = true;
*text_out = v.AsString();
@@ -58,15 +98,39 @@ bool Clipboard::ReadPlainText(Instance* instance,
}
// static
-bool Clipboard::WritePlainText(Instance* instance,
- PP_Flash_Clipboard_Type clipboard_type,
- const std::string& text) {
+bool Clipboard::ReadPlainText(Instance* instance,
+ PP_Flash_Clipboard_Type clipboard_type,
+ std::string* text_out) {
+ return ReadTextVar(instance,
+ clipboard_type,
+ PP_FLASH_CLIPBOARD_FORMAT_PLAINTEXT,
+ text_out);
+}
+
+// static
+bool Clipboard::ReadHTML(Instance* instance,
+ PP_Flash_Clipboard_Type clipboard_type,
+ std::string* html_out) {
+ return ReadTextVar(instance,
+ clipboard_type,
+ PP_FLASH_CLIPBOARD_FORMAT_HTML,
+ html_out);
+}
+
+// static
+bool Clipboard::WriteData(Instance* instance,
+ PP_Flash_Clipboard_Type clipboard_type,
+ const ClipboardData& data) {
bool rv = false;
+ uint32_t data_item_count;
+ PP_Flash_Clipboard_Data_Item const* data_items =
+ data.GetDataItems(&data_item_count);
if (has_interface<PPB_Flash_Clipboard>()) {
- rv = (get_interface<PPB_Flash_Clipboard>()->WritePlainText(
+ rv = (get_interface<PPB_Flash_Clipboard>()->WriteData(
instance->pp_instance(),
clipboard_type,
- Var(text).pp_var()) == PP_OK);
+ data_item_count,
+ data_items) == PP_OK);
}
return rv;
}

Powered by Google App Engine
This is Rietveld 408576698