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

Unified Diff: mojo/services/clipboard/clipboard_standalone_impl.cc

Issue 611633002: mojom: Add associative arrays to the mojom language. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase to ToT; fixes clang-format bustage. Created 6 years, 2 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: mojo/services/clipboard/clipboard_standalone_impl.cc
diff --git a/mojo/services/clipboard/clipboard_standalone_impl.cc b/mojo/services/clipboard/clipboard_standalone_impl.cc
index e1c7e2c3114e0d24248d99ae8a6e5204aa26d03e..bcf9025cb344c8fe1ac0723d78088ae0a1e475e3 100644
--- a/mojo/services/clipboard/clipboard_standalone_impl.cc
+++ b/mojo/services/clipboard/clipboard_standalone_impl.cc
@@ -4,9 +4,9 @@
#include "mojo/services/clipboard/clipboard_standalone_impl.h"
-namespace mojo {
+#include <cstring>
-typedef std::vector<uint8_t> ByteVector;
+namespace mojo {
// ClipboardData contains data copied to the Clipboard for a variety of formats.
// It mostly just provides APIs to cleanly access and manipulate this data.
@@ -15,35 +15,28 @@ class ClipboardStandaloneImpl::ClipboardData {
ClipboardData() {}
~ClipboardData() {}
- std::vector<std::string> GetMimeTypes() const {
- std::vector<std::string> types;
- for (std::map<std::string, ByteVector>::const_iterator it =
- data_types_.begin();
- it != data_types_.end();
- ++it) {
- types.push_back(it->first);
+ Array<String> GetMimeTypes() const {
+ Array<String> types(data_types_.size());
+ int i = 0;
+ for (auto it = data_types_.begin(); it != data_types_.end(); ++it, ++i) {
+ types[i] = it.GetKey();
}
- return types;
+ return types.Pass();
}
- void SetData(std::map<std::string, ByteVector>* data) {
- std::swap(data_types_, *data);
+ void SetData(Map<String, Array<uint8_t> > data) {
+ data_types_ = data.Pass();
}
- bool GetData(const std::string& mime_type, ByteVector* data) const {
- std::map<std::string, ByteVector>::const_iterator it =
- data_types_.find(mime_type);
- if (it != data_types_.end()) {
- *data = it->second;
- return true;
- }
-
- return false;
+ void GetData(const String& mime_type, mojo::Array<uint8_t>* data) const {
+ auto it = data_types_.find(mime_type);
+ if (it != data_types_.end())
+ *data = it.GetValue().Clone().Pass();
}
private:
- std::map<std::string, ByteVector> data_types_;
+ Map<String, Array<uint8_t> > data_types_;
DISALLOW_COPY_AND_ASSIGN(ClipboardData);
};
@@ -67,34 +60,23 @@ void ClipboardStandaloneImpl::GetSequenceNumber(
void ClipboardStandaloneImpl::GetAvailableMimeTypes(
Clipboard::Type clipboard_type,
const mojo::Callback<void(mojo::Array<mojo::String>)>& callback) {
- mojo::Array<mojo::String> types = mojo::Array<mojo::String>::From(
- clipboard_state_[clipboard_type]->GetMimeTypes());
- callback.Run(types.Pass());
+ callback.Run(clipboard_state_[clipboard_type]->GetMimeTypes().Pass());
}
void ClipboardStandaloneImpl::ReadMimeType(
Clipboard::Type clipboard_type,
const mojo::String& mime_type,
const mojo::Callback<void(mojo::Array<uint8_t>)>& callback) {
- ByteVector mime_data;
- if (clipboard_state_[clipboard_type]->GetData(
- mime_type.To<std::string>(), &mime_data)) {
- callback.Run(mojo::Array<uint8_t>::From(mime_data).Pass());
- return;
- }
-
- callback.Run(mojo::Array<uint8_t>().Pass());
+ mojo::Array<uint8_t> mime_data;
+ clipboard_state_[clipboard_type]->GetData(mime_type, &mime_data);
+ callback.Run(mime_data.Pass());
}
void ClipboardStandaloneImpl::WriteClipboardData(
Clipboard::Type clipboard_type,
- mojo::Array<MimeTypePairPtr> data) {
- std::map<std::string, ByteVector> mime_data;
- for (size_t i = 0; i < data.size(); ++i)
- mime_data[data[i]->mime_type] = data[i]->data;
-
- sequence_number_[clipboard_type]++;
- clipboard_state_[clipboard_type]->SetData(&mime_data);
+ mojo::Map<mojo::String, mojo::Array<uint8_t> > data) {
+ sequence_number_[clipboard_type]++;
+ clipboard_state_[clipboard_type]->SetData(data.Pass());
}
} // namespace mojo

Powered by Google App Engine
This is Rietveld 408576698