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

Side by Side Diff: extensions/renderer/api/serial/data_sender_unittest.cc

Issue 873293006: Revert of Remove Client= from device/serial/data_stream.mojom. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <queue> 5 #include <queue>
6 6
7 #include "device/serial/data_sink_receiver.h" 7 #include "device/serial/data_sink_receiver.h"
8 #include "device/serial/data_stream.mojom.h" 8 #include "device/serial/data_stream.mojom.h"
9 #include "extensions/renderer/api_test_base.h" 9 #include "extensions/renderer/api_test_base.h"
10 #include "gin/dictionary.h"
11 #include "gin/wrappable.h"
12 #include "grit/extensions_renderer_resources.h" 10 #include "grit/extensions_renderer_resources.h"
13 11
14 namespace extensions { 12 namespace extensions {
15 13
16 class DataSenderFactory : public gin::Wrappable<DataSenderFactory> {
17 public:
18 using Callback =
19 base::Callback<void(mojo::InterfaceRequest<device::serial::DataSink>,
20 mojo::InterfacePtr<device::serial::DataSinkClient>)>;
21 static gin::Handle<DataSenderFactory> Create(v8::Isolate* isolate,
22 const Callback& callback) {
23 return gin::CreateHandle(isolate, new DataSenderFactory(callback, isolate));
24 }
25
26 gin::ObjectTemplateBuilder GetObjectTemplateBuilder(
27 v8::Isolate* isolate) override {
28 return Wrappable<DataSenderFactory>::GetObjectTemplateBuilder(isolate)
29 .SetMethod("create", &DataSenderFactory::CreateReceiver);
30 }
31
32 gin::Dictionary CreateReceiver() {
33 mojo::InterfacePtr<device::serial::DataSink> sink;
34 mojo::InterfacePtr<device::serial::DataSinkClient> client;
35 mojo::InterfaceRequest<device::serial::DataSinkClient> client_request =
36 mojo::GetProxy(&client);
37 callback_.Run(mojo::GetProxy(&sink), client.Pass());
38
39 gin::Dictionary result = gin::Dictionary::CreateEmpty(isolate_);
40 result.Set("sink", sink.PassMessagePipe().release());
41 result.Set("client", client_request.PassMessagePipe().release());
42 return result;
43 }
44
45 static gin::WrapperInfo kWrapperInfo;
46
47 private:
48 DataSenderFactory(const Callback& callback, v8::Isolate* isolate)
49 : callback_(callback), isolate_(isolate) {}
50
51 base::Callback<void(mojo::InterfaceRequest<device::serial::DataSink>,
52 mojo::InterfacePtr<device::serial::DataSinkClient>)>
53 callback_;
54 v8::Isolate* isolate_;
55 };
56
57 gin::WrapperInfo DataSenderFactory::kWrapperInfo = {gin::kEmbedderNativeGin};
58
59 // Runs tests defined in extensions/test/data/data_sender_unittest.js 14 // Runs tests defined in extensions/test/data/data_sender_unittest.js
60 class DataSenderTest : public ApiTestBase { 15 class DataSenderTest : public ApiTestBase {
61 public: 16 public:
62 DataSenderTest() {} 17 DataSenderTest() {}
63 18
64 void SetUp() override { 19 void SetUp() override {
65 ApiTestBase::SetUp(); 20 ApiTestBase::SetUp();
66 gin::ModuleRegistry::From(env()->context()->v8_context()) 21 service_provider()->AddService(
67 ->AddBuiltinModule( 22 base::Bind(&DataSenderTest::CreateDataSink, base::Unretained(this)));
68 env()->isolate(), "device/serial/data_sender_test_factory",
69 DataSenderFactory::Create(
70 env()->isolate(), base::Bind(&DataSenderTest::CreateDataSink,
71 base::Unretained(this))).ToV8());
72 } 23 }
73 24
74 void TearDown() override { 25 void TearDown() override {
75 if (receiver_.get()) { 26 if (receiver_.get()) {
76 receiver_->ShutDown(); 27 receiver_->ShutDown();
77 receiver_ = NULL; 28 receiver_ = NULL;
78 } 29 }
79 EXPECT_FALSE(buffer_); 30 EXPECT_FALSE(buffer_);
80 buffer_.reset(); 31 buffer_.reset();
81 ApiTestBase::TearDown(); 32 ApiTestBase::TearDown();
82 } 33 }
83 34
84 std::queue<int32_t> error_to_report_; 35 std::queue<int32_t> error_to_report_;
85 std::queue<std::string> expected_data_; 36 std::queue<std::string> expected_data_;
86 37
87 private: 38 private:
88 void CreateDataSink( 39 void CreateDataSink(
89 mojo::InterfaceRequest<device::serial::DataSink> request, 40 mojo::InterfaceRequest<device::serial::DataSink> request) {
90 mojo::InterfacePtr<device::serial::DataSinkClient> client) { 41 receiver_ = mojo::WeakBindToRequest(
91 receiver_ = new device::DataSinkReceiver( 42 new device::DataSinkReceiver(
92 request.Pass(), client.Pass(), 43 base::Bind(&DataSenderTest::ReadyToReceive, base::Unretained(this)),
93 base::Bind(&DataSenderTest::ReadyToReceive, base::Unretained(this)), 44 base::Bind(&DataSenderTest::OnCancel, base::Unretained(this)),
94 base::Bind(&DataSenderTest::OnCancel, base::Unretained(this)), 45 base::Bind(base::DoNothing)),
95 base::Bind(base::DoNothing)); 46 &request);
96 } 47 }
97 48
98 void ReadyToReceive(scoped_ptr<device::ReadOnlyBuffer> buffer) { 49 void ReadyToReceive(scoped_ptr<device::ReadOnlyBuffer> buffer) {
99 std::string data(buffer->GetData(), buffer->GetSize()); 50 std::string data(buffer->GetData(), buffer->GetSize());
100 if (expected_data_.empty()) { 51 if (expected_data_.empty()) {
101 buffer_ = buffer.Pass(); 52 buffer_ = buffer.Pass();
102 return; 53 return;
103 } 54 }
104 55
105 std::string& expected = expected_data_.front(); 56 std::string& expected = expected_data_.front();
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 177
227 TEST_F(DataSenderTest, SerializeWaitsForCancel) { 178 TEST_F(DataSenderTest, SerializeWaitsForCancel) {
228 RunTest("data_sender_unittest.js", "testSerializeWaitsForCancel"); 179 RunTest("data_sender_unittest.js", "testSerializeWaitsForCancel");
229 } 180 }
230 181
231 TEST_F(DataSenderTest, SerializeAfterClose) { 182 TEST_F(DataSenderTest, SerializeAfterClose) {
232 RunTest("data_sender_unittest.js", "testSerializeAfterClose"); 183 RunTest("data_sender_unittest.js", "testSerializeAfterClose");
233 } 184 }
234 185
235 } // namespace extensions 186 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/renderer/api/serial/data_receiver_unittest.cc ('k') | extensions/renderer/resources/data_receiver.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698