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

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

Issue 2119963002: Move mus to //services/ui (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 5 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/common/common_type_converters.h"
12 #include "mojo/public/cpp/bindings/array.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() : sequence_number_(0) {}
27 ~ClipboardData() {}
28
29 uint64_t sequence_number() const {
30 return sequence_number_;
31 }
32
33 Array<String> GetMimeTypes() const {
34 Array<String> types(data_types_.size());
35 int i = 0;
36 for (auto it = data_types_.begin(); it != data_types_.end(); ++it, ++i)
37 types[i] = it->first;
38
39 return types;
40 }
41
42 void SetData(Map<String, Array<uint8_t>> data) {
43 sequence_number_++;
44 data_types_ = std::move(data);
45 }
46
47 void GetData(const String& mime_type, Array<uint8_t>* data) const {
48 auto it = data_types_.find(mime_type);
49 if (it != data_types_.end())
50 *data = it->second.Clone();
51 }
52
53 private:
54 uint64_t sequence_number_;
55 Map<String, Array<uint8_t>> data_types_;
56
57 DISALLOW_COPY_AND_ASSIGN(ClipboardData);
58 };
59
60 ClipboardImpl::ClipboardImpl() {
61 for (int i = 0; i < kNumClipboards; ++i)
62 clipboard_state_[i].reset(new ClipboardData);
63 }
64
65 ClipboardImpl::~ClipboardImpl() {
66 }
67
68 void ClipboardImpl::AddBinding(mojom::ClipboardRequest request) {
69 bindings_.AddBinding(this, std::move(request));
70 }
71
72 void ClipboardImpl::GetSequenceNumber(
73 Clipboard::Type clipboard_type,
74 const GetSequenceNumberCallback& callback) {
75 callback.Run(
76 clipboard_state_[static_cast<int>(clipboard_type)]->sequence_number());
77 }
78
79 void ClipboardImpl::GetAvailableMimeTypes(
80 Clipboard::Type clipboard_type,
81 const GetAvailableMimeTypesCallback& callback) {
82 int clipboard_num = static_cast<int>(clipboard_type);
83 callback.Run(clipboard_state_[clipboard_num]->sequence_number(),
84 clipboard_state_[clipboard_num]->GetMimeTypes());
85 }
86
87 void ClipboardImpl::ReadClipboardData(
88 Clipboard::Type clipboard_type,
89 const String& mime_type,
90 const ReadClipboardDataCallback& callback) {
91 int clipboard_num = static_cast<int>(clipboard_type);
92 Array<uint8_t> mime_data(nullptr);
93 uint64_t sequence = clipboard_state_[clipboard_num]->sequence_number();
94 clipboard_state_[clipboard_num]->GetData(mime_type, &mime_data);
95 callback.Run(sequence, std::move(mime_data));
96 }
97
98 void ClipboardImpl::WriteClipboardData(
99 Clipboard::Type clipboard_type,
100 Map<String, Array<uint8_t>> data,
101 const WriteClipboardDataCallback& callback) {
102 int clipboard_num = static_cast<int>(clipboard_type);
103 clipboard_state_[clipboard_num]->SetData(std::move(data));
104 callback.Run(clipboard_state_[clipboard_num]->sequence_number());
105 }
106
107 } // namespace clipboard
108 } // namespace mus
OLDNEW
« no previous file with comments | « components/mus/clipboard/clipboard_impl.h ('k') | components/mus/clipboard/clipboard_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698