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

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: ;_; 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 base::RunLoop* run_loop,
22 const mojo::String& input) {
23 *output = input.To<std::string>();
24 run_loop->Quit();
25 }
26
27 void CopyVectorStringAndEndRunloop(std::vector<std::string>* output,
28 base::RunLoop* run_loop,
29 const mojo::Array<mojo::String>& input) {
30 *output = input.To<std::vector<std::string> >();
31 run_loop->Quit();
32 }
33
34 const char* kUninitialized = "Uninitialized data";
35 const char* kPlainTextData = "Some plain data";
36
37 } // namespace
38
39 namespace mojo {
40 namespace service {
41
42 class ClipboardStandaloneTest : public testing::Test {
43 public:
44 ClipboardStandaloneTest() {}
45 virtual ~ClipboardStandaloneTest() {}
46
47 virtual void SetUp() OVERRIDE {
48 test_helper_.Init();
49
50 test_helper_.application_manager()->ConnectToService(
51 GURL("mojo:mojo_clipboard"), &clipboard_);
52 }
53
54 uint64_t GetSequenceNumber() {
55 base::RunLoop run_loop;
56 uint64_t sequence_num = 999999;
57 clipboard_->GetSequenceNumber(
58 mojo::Clipboard::TYPE_COPY_PASTE,
59 base::Bind(&CopyUint64AndEndRunloop, &sequence_num, &run_loop));
60 run_loop.Run();
61 return sequence_num;
62 }
63
64 std::vector<std::string> GetAvailableFormatMimeTypes() {
65 base::RunLoop run_loop;
66 std::vector<std::string> types;
67 types.push_back(kUninitialized);
68 clipboard_->GetAvailableFormatMimeTypes(
69 mojo::Clipboard::TYPE_COPY_PASTE,
70 base::Bind(&CopyVectorStringAndEndRunloop, &types, &run_loop));
71 run_loop.Run();
72 return types;
73 }
74
75 std::string GetPlainTextData() {
76 base::RunLoop run_loop;
77 std::string text_data(kUninitialized);
78 clipboard_->ReadPlainText(
79 mojo::Clipboard::TYPE_COPY_PASTE,
80 base::Bind(&CopyStringAndEndRunloop, &text_data, &run_loop));
81 run_loop.Run();
82 return text_data;
83 }
84
85 protected:
86 base::ShadowingAtExitManager at_exit_;
87 shell::ShellTestHelper test_helper_;
88
89 ClipboardPtr clipboard_;
90
91 DISALLOW_COPY_AND_ASSIGN(ClipboardStandaloneTest);
92 };
93
94 TEST_F(ClipboardStandaloneTest, EmptyClipboardOK) {
95 EXPECT_EQ(0ul, GetSequenceNumber());
96 EXPECT_TRUE(GetAvailableFormatMimeTypes().empty());
97 EXPECT_TRUE(GetPlainTextData().empty());
98 }
99
100 TEST_F(ClipboardStandaloneTest, CanReadBackText) {
101 EXPECT_TRUE(GetPlainTextData().empty());
102
103 EXPECT_EQ(0ul, GetSequenceNumber());
104 clipboard_->QueueWritePlainText(mojo::Clipboard::TYPE_COPY_PASTE,
105 kPlainTextData);
106 EXPECT_EQ(0ul, GetSequenceNumber());
107 clipboard_->WriteQueuedData(mojo::Clipboard::TYPE_COPY_PASTE);
108 EXPECT_EQ(1ul, GetSequenceNumber());
109
110 EXPECT_EQ(kPlainTextData, GetPlainTextData());
111 }
112
113 } // namespace service
114 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698