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

Side by Side Diff: components/clipboard/clipboard_standalone_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: Add OWNERS to the interfaces directory. 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 2014 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/clipboard/clipboard_standalone_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 clipboard {
20
21 // ClipboardData contains data copied to the Clipboard for a variety of formats.
22 // It mostly just provides APIs to cleanly access and manipulate this data.
23 class ClipboardStandaloneImpl::ClipboardData {
24 public:
25 ClipboardData() {}
26 ~ClipboardData() {}
27
28 Array<String> GetMimeTypes() const {
29 Array<String> types(data_types_.size());
30 int i = 0;
31 for (auto it = data_types_.begin(); it != data_types_.end(); ++it, ++i)
32 types[i] = it->first;
33
34 return types;
35 }
36
37 void SetData(Map<String, Array<uint8_t>> data) {
38 data_types_ = std::move(data);
39 }
40
41 void GetData(const String& mime_type, Array<uint8_t>* data) const {
42 auto it = data_types_.find(mime_type);
43 if (it != data_types_.end())
44 *data = it->second.Clone();
45 }
46
47 private:
48 Map<String, Array<uint8_t>> data_types_;
49
50 DISALLOW_COPY_AND_ASSIGN(ClipboardData);
51 };
52
53 ClipboardStandaloneImpl::ClipboardStandaloneImpl(
54 mojo::InterfaceRequest<mojo::Clipboard> request)
55 : binding_(this, std::move(request)) {
56 for (int i = 0; i < kNumClipboards; ++i) {
57 sequence_number_[i] = 0;
58 clipboard_state_[i].reset(new ClipboardData);
59 }
60 }
61
62 ClipboardStandaloneImpl::~ClipboardStandaloneImpl() {
63 }
64
65 void ClipboardStandaloneImpl::GetSequenceNumber(
66 Clipboard::Type clipboard_type,
67 const mojo::Callback<void(uint64_t)>& callback) {
68 callback.Run(sequence_number_[static_cast<int>(clipboard_type)]);
69 }
70
71 void ClipboardStandaloneImpl::GetAvailableMimeTypes(
72 Clipboard::Type clipboard_type,
73 const mojo::Callback<void(Array<String>)>& callback) {
74 callback.Run(
75 clipboard_state_[static_cast<int>(clipboard_type)]->GetMimeTypes());
76 }
77
78 void ClipboardStandaloneImpl::ReadMimeType(
79 Clipboard::Type clipboard_type,
80 const String& mime_type,
81 const mojo::Callback<void(Array<uint8_t>)>& callback) {
82 Array<uint8_t> mime_data(nullptr);
83 clipboard_state_[static_cast<int>(clipboard_type)]->GetData(mime_type,
84 &mime_data);
85 callback.Run(std::move(mime_data));
86 }
87
88 void ClipboardStandaloneImpl::WriteClipboardData(
89 Clipboard::Type clipboard_type,
90 Map<String, Array<uint8_t>> data) {
91 sequence_number_[static_cast<int>(clipboard_type)]++;
92 clipboard_state_[static_cast<int>(clipboard_type)]->SetData(std::move(data));
93 }
94
95 } // namespace clipboard
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698