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

Unified Diff: chrome/browser/extensions/clipboard_extension_helper_chromeos.cc

Issue 2837983002: Modify SetImageData to add additional items along with image data to save on clipboard. (Closed)
Patch Set: Make additional data items parameter optional and address other comments. Created 3 years, 7 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: 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..44c28d79af32e005c11355a99cbaf84feda623bf 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,
+ std::unique_ptr<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,17 @@ void ClipboardExtensionHelper::DecodeAndSaveImageData(
if (clipboard_image_data_decoder_->has_request_pending())
clipboard_image_data_decoder_->Cancel();
+ // Cache additonal items if they are available.
+ if (additional_items) {
+ additonal_items_.clear();
+ for (const clipboard::AdditionalDataItem& item : *additional_items) {
+ clipboard::AdditionalDataItem data_item;
+ data_item.type = item.type;
+ data_item.data = item.data;
+ additonal_items_.push_back(std::move(data_item));
Devlin 2017/05/17 16:08:43 If we're just going to move all of these anyway, w
jennyz 2017/05/18 23:33:48 Done.
+ }
+ }
+
image_save_success_callback_ = success_callback;
image_save_error_callback_ = error_callback;
clipboard_image_data_decoder_->Start(data, type);
@@ -99,7 +113,7 @@ void ClipboardExtensionHelper::DecodeAndSaveImageData(
void ClipboardExtensionHelper::OnImageDecodeFailure() {
base::ResetAndReturn(&image_save_error_callback_)
- .Run("Image data decoding failed");
+ .Run("Image data decoding failed.");
}
void ClipboardExtensionHelper::OnImageDecoded(const SkBitmap& bitmap) {
@@ -108,12 +122,19 @@ void ClipboardExtensionHelper::OnImageDecoded(const SkBitmap& bitmap) {
// Write the decoded image data to clipboard.
if (!bitmap.empty() && !bitmap.isNull())
scw.WriteImage(bitmap);
+
+ for (const clipboard::AdditionalDataItem& item : additonal_items_) {
+ if (item.type == clipboard::DATA_ITEM_TYPE_TEXT_PLAIN)
+ scw.WriteText(base::UTF8ToUTF16(item.data));
+ else if (item.type == clipboard::DATA_ITEM_TYPE_TEXT_HTML)
+ scw.WriteHTML(base::UTF8ToUTF16(item.data), std::string());
+ }
}
base::ResetAndReturn(&image_save_success_callback_).Run();
}
void ClipboardExtensionHelper::OnImageDecodeCancel() {
- base::ResetAndReturn(&image_save_error_callback_).Run("Request canceled");
+ base::ResetAndReturn(&image_save_error_callback_).Run("Request canceled.");
}
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698