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

Side by Side Diff: components/mus/clipboard/clipboard_unittest.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
« no previous file with comments | « components/mus/clipboard/clipboard_impl.cc ('k') | components/mus/clipboard/test_manifest.json » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <stdint.h>
6 #include <utility>
7
8 #include "base/bind.h"
9 #include "base/macros.h"
10 #include "base/run_loop.h"
11 #include "components/mus/public/interfaces/clipboard.mojom.h"
12 #include "mojo/common/common_type_converters.h"
13 #include "services/shell/public/cpp/shell_connection.h"
14 #include "services/shell/public/cpp/shell_test.h"
15
16 using mojo::Array;
17 using mojo::Map;
18 using mojo::String;
19 using mus::mojom::Clipboard;
20
21 namespace mus {
22 namespace clipboard {
23 namespace {
24
25 const char* kUninitialized = "Uninitialized data";
26 const char* kPlainTextData = "Some plain data";
27 const char* kHtmlData = "<html>data</html>";
28
29 } // namespace
30
31 class ClipboardAppTest : public shell::test::ShellTest {
32 public:
33 ClipboardAppTest() : ShellTest("exe:mus_clipboard_unittests") {}
34 ~ClipboardAppTest() override {}
35
36 // Overridden from shell::test::ShellTest:
37 void SetUp() override {
38 ShellTest::SetUp();
39
40 connector()->ConnectToInterface("mojo:mus", &clipboard_);
41 ASSERT_TRUE(clipboard_);
42 }
43
44 uint64_t GetSequenceNumber() {
45 uint64_t sequence_num = 999999;
46 EXPECT_TRUE(clipboard_->GetSequenceNumber(
47 Clipboard::Type::COPY_PASTE, &sequence_num));
48 return sequence_num;
49 }
50
51 std::vector<std::string> GetAvailableFormatMimeTypes() {
52 uint64_t sequence_num = 999999;
53 Array<String> types;
54 types.push_back(kUninitialized);
55 clipboard_->GetAvailableMimeTypes(
56 Clipboard::Type::COPY_PASTE,
57 &sequence_num, &types);
58 return types.To<std::vector<std::string>>();
59 }
60
61 bool GetDataOfType(const std::string& mime_type, std::string* data) {
62 bool valid = false;
63 Array<uint8_t> raw_data;
64 uint64_t sequence_number = 0;
65 clipboard_->ReadClipboardData(Clipboard::Type::COPY_PASTE, mime_type,
66 &sequence_number, &raw_data);
67 valid = !raw_data.is_null();
68 *data = raw_data.is_null() ? "" : raw_data.To<std::string>();
69 return valid;
70 }
71
72 void SetStringText(const std::string& data) {
73 uint64_t sequence_number;
74 Map<String, Array<uint8_t>> mime_data;
75 mime_data[mojom::kMimeTypeText] = Array<uint8_t>::From(data);
76 clipboard_->WriteClipboardData(Clipboard::Type::COPY_PASTE,
77 std::move(mime_data),
78 &sequence_number);
79 }
80
81 protected:
82 mojom::ClipboardPtr clipboard_;
83
84 DISALLOW_COPY_AND_ASSIGN(ClipboardAppTest);
85 };
86
87 TEST_F(ClipboardAppTest, EmptyClipboardOK) {
88 EXPECT_EQ(0ul, GetSequenceNumber());
89 EXPECT_TRUE(GetAvailableFormatMimeTypes().empty());
90 std::string data;
91 EXPECT_FALSE(GetDataOfType(mojom::kMimeTypeText, &data));
92 }
93
94 TEST_F(ClipboardAppTest, CanReadBackText) {
95 std::string data;
96 EXPECT_EQ(0ul, GetSequenceNumber());
97 EXPECT_FALSE(GetDataOfType(mojom::kMimeTypeText, &data));
98
99 SetStringText(kPlainTextData);
100 EXPECT_EQ(1ul, GetSequenceNumber());
101
102 EXPECT_TRUE(GetDataOfType(mojom::kMimeTypeText, &data));
103 EXPECT_EQ(kPlainTextData, data);
104 }
105
106 TEST_F(ClipboardAppTest, CanSetMultipleDataTypesAtOnce) {
107 Map<String, Array<uint8_t>> mime_data;
108 mime_data[mojom::kMimeTypeText] =
109 Array<uint8_t>::From(std::string(kPlainTextData));
110 mime_data[mojom::kMimeTypeHTML] =
111 Array<uint8_t>::From(std::string(kHtmlData));
112
113 uint64_t sequence_num = 0;
114 clipboard_->WriteClipboardData(Clipboard::Type::COPY_PASTE,
115 std::move(mime_data),
116 &sequence_num);
117 EXPECT_EQ(1ul, sequence_num);
118
119 std::string data;
120 EXPECT_TRUE(GetDataOfType(mojom::kMimeTypeText, &data));
121 EXPECT_EQ(kPlainTextData, data);
122 EXPECT_TRUE(GetDataOfType(mojom::kMimeTypeHTML, &data));
123 EXPECT_EQ(kHtmlData, data);
124 }
125
126 TEST_F(ClipboardAppTest, CanClearClipboardWithZeroArray) {
127 std::string data;
128 SetStringText(kPlainTextData);
129 EXPECT_EQ(1ul, GetSequenceNumber());
130
131 EXPECT_TRUE(GetDataOfType(mojom::kMimeTypeText, &data));
132 EXPECT_EQ(kPlainTextData, data);
133
134 Map<String, Array<uint8_t>> mime_data;
135 uint64_t sequence_num = 0;
136 clipboard_->WriteClipboardData(Clipboard::Type::COPY_PASTE,
137 std::move(mime_data),
138 &sequence_num);
139
140 EXPECT_EQ(2ul, sequence_num);
141 EXPECT_FALSE(GetDataOfType(mojom::kMimeTypeText, &data));
142 }
143
144 } // namespace clipboard
145 } // namespace mus
OLDNEW
« no previous file with comments | « components/mus/clipboard/clipboard_impl.cc ('k') | components/mus/clipboard/test_manifest.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698