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

Side by Side Diff: components/mus/clipboard/clipboard_impl.cc

Issue 1978763003: Readd the clipboard service and get it compiling again. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Of course mus tests would need the x server... Created 4 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/mus/clipboard/clipboard_impl.h"
6
7 #include <string.h>
8 #include <utility>
9
10 #include "base/macros.h"
11 #include "mojo/public/cpp/bindings/array.h"
12 #include "mojo/public/cpp/bindings/callback.h"
13 #include "mojo/public/cpp/bindings/string.h"
14
15 using mojo::Array;
16 using mojo::Map;
17 using mojo::String;
18
19 namespace mus {
20 namespace clipboard {
21
22 // ClipboardData contains data copied to the Clipboard for a variety of formats.
23 // It mostly just provides APIs to cleanly access and manipulate this data.
24 class ClipboardImpl::ClipboardData {
25 public:
26 ClipboardData() {}
27 ~ClipboardData() {}
28
29 Array<String> GetMimeTypes() const {
30 Array<String> types(data_types_.size());
31 int i = 0;
32 for (auto it = data_types_.begin(); it != data_types_.end(); ++it, ++i)
33 types[i] = it->first;
34
35 return types;
36 }
37
38 void SetData(Map<String, Array<uint8_t>> data) {
39 data_types_ = std::move(data);
40 }
41
42 void GetData(const String& mime_type, Array<uint8_t>* data) const {
43 auto it = data_types_.find(mime_type);
44 if (it != data_types_.end())
45 *data = it->second.Clone();
46 }
47
48 private:
49 Map<String, Array<uint8_t>> data_types_;
50
51 DISALLOW_COPY_AND_ASSIGN(ClipboardData);
52 };
53
54 ClipboardImpl::ClipboardImpl() {
55 for (int i = 0; i < kNumClipboards; ++i) {
56 sequence_number_[i] = 0;
57 clipboard_state_[i].reset(new ClipboardData);
58 }
59 }
60
61 ClipboardImpl::~ClipboardImpl() {
62 }
63
64 void ClipboardImpl::AddBinding(mojom::ClipboardRequest request) {
65 bindings_.AddBinding(this, std::move(request));
66 }
67
68 void ClipboardImpl::GetSequenceNumber(
69 Clipboard::Type clipboard_type,
70 const GetSequenceNumberCallback& callback) {
71 callback.Run(sequence_number_[static_cast<int>(clipboard_type)]);
72 }
73
74 void ClipboardImpl::GetAvailableMimeTypes(
75 Clipboard::Type clipboard_type,
76 const GetAvailableMimeTypesCallback& callback) {
77 int clipboard_num = static_cast<int>(clipboard_type);
78 callback.Run(sequence_number_[clipboard_num],
79 clipboard_state_[clipboard_num]->GetMimeTypes());
80 }
81
82 void ClipboardImpl::ReadMimeType(
83 uint64_t sequence,
84 Clipboard::Type clipboard_type,
85 const String& mime_type,
86 const ReadMimeTypeCallback& callback) {
87 int clipboard_num = static_cast<int>(clipboard_type);
88 Array<uint8_t> mime_data(nullptr);
89 bool valid_sequence_number = sequence_number_[clipboard_num] == sequence;
90
91 if (valid_sequence_number)
92 clipboard_state_[clipboard_num]->GetData(mime_type, &mime_data);
93
94 callback.Run(valid_sequence_number, std::move(mime_data));
95 }
96
97 void ClipboardImpl::WriteClipboardData(
98 Clipboard::Type clipboard_type,
99 Map<String, Array<uint8_t>> data,
100 const WriteClipboardDataCallback& callback) {
101 int clipboard_num = static_cast<int>(clipboard_type);
102 sequence_number_[clipboard_num]++;
103 clipboard_state_[clipboard_num]->SetData(std::move(data));
104 callback.Run(sequence_number_[clipboard_num]);
105 }
106
107 } // namespace clipboard
108 } // namespace mus
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698