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

Side by Side Diff: mojo/services/clipboard/clipboard_standalone_unittest.cc

Issue 562483002: mojo: Create a basic clipboard. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase to ToT to fix patch apply. Created 6 years, 3 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 (c) 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 "base/at_exit.h"
6 #include "base/bind.h"
7 #include "mojo/services/public/interfaces/clipboard/clipboard.mojom.h"
8 #include "mojo/shell/shell_test_helper.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace {
12
13 void CopyUint64AndEndRunloop(uint64_t* output,
14 base::RunLoop* run_loop,
15 uint64_t input) {
16 *output = input;
17 run_loop->Quit();
18 }
19
20 void CopyStringAndEndRunloop(std::string* output,
21 bool* string_is_null,
22 base::RunLoop* run_loop,
23 const mojo::String& input) {
24 *string_is_null = input.is_null();
25 *output = input.is_null() ? "" : input.To<std::string>();
26 run_loop->Quit();
27 }
28
29 void CopyVectorStringAndEndRunloop(std::vector<std::string>* output,
30 base::RunLoop* run_loop,
31 const mojo::Array<mojo::String>& input) {
32 *output = input.To<std::vector<std::string> >();
33 run_loop->Quit();
34 }
35
36 const char* kUninitialized = "Uninitialized data";
37 const char* kPlainTextData = "Some plain data";
38
39 } // namespace
40
41 namespace mojo {
42 namespace service {
43
44 class ClipboardStandaloneTest : public testing::Test {
45 public:
46 ClipboardStandaloneTest() {}
47 virtual ~ClipboardStandaloneTest() {}
48
49 virtual void SetUp() OVERRIDE {
50 test_helper_.Init();
51
52 test_helper_.application_manager()->ConnectToService(
53 GURL("mojo:mojo_clipboard"), &clipboard_);
54 }
55
56 uint64_t GetSequenceNumber() {
57 base::RunLoop run_loop;
58 uint64_t sequence_num = 999999;
59 clipboard_->GetSequenceNumber(
60 mojo::Clipboard::TYPE_COPY_PASTE,
61 base::Bind(&CopyUint64AndEndRunloop, &sequence_num, &run_loop));
62 run_loop.Run();
63 return sequence_num;
64 }
65
66 std::vector<std::string> GetAvailableFormatMimeTypes() {
67 base::RunLoop run_loop;
68 std::vector<std::string> types;
69 types.push_back(kUninitialized);
70 clipboard_->GetAvailableFormatMimeTypes(
71 mojo::Clipboard::TYPE_COPY_PASTE,
72 base::Bind(&CopyVectorStringAndEndRunloop, &types, &run_loop));
73 run_loop.Run();
74 return types;
75 }
76
77 bool GetDataOfType(const std::string& mime_type, std::string* data) {
78 base::RunLoop run_loop;
79 bool is_null = false;
80 clipboard_->ReadMIMEType(
81 mojo::Clipboard::TYPE_COPY_PASTE,
82 mime_type,
83 base::Bind(&CopyStringAndEndRunloop, data, &is_null, &run_loop));
84 run_loop.Run();
85 return !is_null;
86 }
87
88 protected:
89 base::ShadowingAtExitManager at_exit_;
90 shell::ShellTestHelper test_helper_;
91
92 ClipboardPtr clipboard_;
93
94 DISALLOW_COPY_AND_ASSIGN(ClipboardStandaloneTest);
95 };
96
97 TEST_F(ClipboardStandaloneTest, EmptyClipboardOK) {
98 EXPECT_EQ(0ul, GetSequenceNumber());
99 EXPECT_TRUE(GetAvailableFormatMimeTypes().empty());
100 std::string data;
101 EXPECT_FALSE(GetDataOfType(mojo::Clipboard::MIME_TYPE_TEXT, &data));
102 }
103
104 TEST_F(ClipboardStandaloneTest, CanReadBackText) {
105 std::string data;
106 EXPECT_FALSE(GetDataOfType(mojo::Clipboard::MIME_TYPE_TEXT, &data));
107 EXPECT_EQ(0ul, GetSequenceNumber());
108
109 Array<MimeTypePairPtr> mime_data;
110 MimeTypePairPtr text_data(MimeTypePair::New());
111 text_data->mime_type = mojo::Clipboard::MIME_TYPE_TEXT;
112 text_data->data = kPlainTextData;
113 mime_data.push_back(text_data.Pass());
114 clipboard_->WriteClipboardData(mojo::Clipboard::TYPE_COPY_PASTE,
115 mime_data.Pass());
116 EXPECT_EQ(1ul, GetSequenceNumber());
117
118 EXPECT_TRUE(GetDataOfType(mojo::Clipboard::MIME_TYPE_TEXT, &data));
119 EXPECT_EQ(kPlainTextData, data);
120 }
121
122 } // namespace service
123 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698