Chromium Code Reviews| Index: chrome/browser/extensions/clipboard_extension_helper_chromeos.cc |
| diff --git a/chrome/browser/extensions/clipboard_extension_helper_chromeos.cc b/chrome/browser/extensions/clipboard_extension_helper_chromeos.cc |
| index ed084d6b7035f623824d96e5567d7abc313aff8a..d3d68c9e09042d87cd6f731374affa0447491bb7 100644 |
| --- a/chrome/browser/extensions/clipboard_extension_helper_chromeos.cc |
| +++ b/chrome/browser/extensions/clipboard_extension_helper_chromeos.cc |
| @@ -7,6 +7,8 @@ |
| #include "base/callback_helpers.h" |
| #include "base/macros.h" |
| #include "base/metrics/histogram_macros.h" |
| +#include "base/strings/string_util.h" |
| +#include "base/strings/utf_string_conversions.h" |
| #include "base/synchronization/cancellation_flag.h" |
| #include "chrome/browser/image_decoder.h" |
| #include "content/public/browser/browser_thread.h" |
| @@ -81,6 +83,7 @@ ClipboardExtensionHelper::~ClipboardExtensionHelper() {} |
| void ClipboardExtensionHelper::DecodeAndSaveImageData( |
| const std::vector<char>& data, |
| clipboard::ImageType type, |
| + const AdditionalDataItemList& additional_items, |
| const base::Closure& success_callback, |
| const base::Callback<void(const std::string&)>& error_callback) { |
| DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| @@ -92,6 +95,15 @@ void ClipboardExtensionHelper::DecodeAndSaveImageData( |
| if (clipboard_image_data_decoder_->has_request_pending()) |
| clipboard_image_data_decoder_->Cancel(); |
| + // Cache additonal items. |
| + additonal_items_.clear(); |
| + for (const clipboard::AdditionalDataItem& item : additional_items) { |
| + AdditionalDataItem data_item; |
| + data_item.type = base::ToLowerASCII(item.type); |
| + data_item.data = item.data; |
| + additonal_items_.push_back(data_item); |
| + } |
| + |
| image_save_success_callback_ = success_callback; |
| image_save_error_callback_ = error_callback; |
| clipboard_image_data_decoder_->Start(data, type); |
| @@ -108,6 +120,12 @@ void ClipboardExtensionHelper::OnImageDecoded(const SkBitmap& bitmap) { |
| // Write the decoded image data to clipboard. |
| if (!bitmap.empty() && !bitmap.isNull()) |
| scw.WriteImage(bitmap); |
| + for (const AdditionalDataItem& item : additonal_items_) { |
| + if (item.type == "text/plain") |
| + scw.WriteText(base::UTF8ToUTF16(item.data)); |
| + else if (item.type == "text/html") |
| + scw.WriteHTML(base::UTF8ToUTF16(item.data), std::string("")); |
|
Devlin
2017/04/26 18:20:15
So far this text (item.data) is totally unvalidate
dcheng
2017/04/27 15:42:09
It mirrors what we do for a renderer that calls Da
jennyz
2017/05/16 18:22:03
See dcheng@'s comment.
jennyz
2017/05/16 18:22:03
Done.
|
| + } |
| } |
| base::ResetAndReturn(&image_save_success_callback_).Run(); |
| } |