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

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

Issue 889283002: Remove Client= from device/serial/data_stream.mojom. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: This time without racing message pipes 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_source_sender.h" 7 #include "device/serial/data_source_sender.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"
10 #include "grit/extensions_renderer_resources.h" 12 #include "grit/extensions_renderer_resources.h"
11 13
12 namespace extensions { 14 namespace extensions {
13 15
16 class DataReceiverFactory : public gin::Wrappable<DataReceiverFactory> {
17 public:
18 using Callback = base::Callback<void(
19 mojo::InterfaceRequest<device::serial::DataSource>,
20 mojo::InterfacePtr<device::serial::DataSourceClient>)>;
21 static gin::Handle<DataReceiverFactory> Create(v8::Isolate* isolate,
22 const Callback& callback) {
23 return gin::CreateHandle(isolate,
24 new DataReceiverFactory(callback, isolate));
25 }
26
27 gin::ObjectTemplateBuilder GetObjectTemplateBuilder(
28 v8::Isolate* isolate) override {
29 return Wrappable<DataReceiverFactory>::GetObjectTemplateBuilder(isolate)
30 .SetMethod("create", &DataReceiverFactory::CreateReceiver);
31 }
32
33 gin::Dictionary CreateReceiver() {
34 mojo::InterfacePtr<device::serial::DataSource> sink;
35 mojo::InterfacePtr<device::serial::DataSourceClient> client;
36 mojo::InterfaceRequest<device::serial::DataSourceClient> client_request =
37 mojo::GetProxy(&client);
38 callback_.Run(mojo::GetProxy(&sink), client.Pass());
39
40 gin::Dictionary result = gin::Dictionary::CreateEmpty(isolate_);
41 result.Set("source", sink.PassMessagePipe().release());
42 result.Set("client", client_request.PassMessagePipe().release());
43 return result;
44 }
45
46 static gin::WrapperInfo kWrapperInfo;
47
48 private:
49 DataReceiverFactory(const Callback& callback, v8::Isolate* isolate)
50 : callback_(callback), isolate_(isolate) {}
51
52 base::Callback<void(mojo::InterfaceRequest<device::serial::DataSource>,
53 mojo::InterfacePtr<device::serial::DataSourceClient>)>
54 callback_;
55 v8::Isolate* isolate_;
56 };
57
58 gin::WrapperInfo DataReceiverFactory::kWrapperInfo = {gin::kEmbedderNativeGin};
59
14 // Runs tests defined in extensions/test/data/data_receiver_unittest.js 60 // Runs tests defined in extensions/test/data/data_receiver_unittest.js
15 class DataReceiverTest : public ApiTestBase { 61 class DataReceiverTest : public ApiTestBase {
16 public: 62 public:
17 DataReceiverTest() {} 63 DataReceiverTest() {}
18 64
19 void SetUp() override { 65 void SetUp() override {
20 ApiTestBase::SetUp(); 66 ApiTestBase::SetUp();
21 service_provider()->AddService(base::Bind( 67 gin::ModuleRegistry::From(env()->context()->v8_context())
22 &DataReceiverTest::CreateDataSource, base::Unretained(this))); 68 ->AddBuiltinModule(env()->isolate(),
69 "device/serial/data_receiver_test_factory",
70 DataReceiverFactory::Create(
71 env()->isolate(),
72 base::Bind(&DataReceiverTest::CreateDataSource,
73 base::Unretained(this))).ToV8());
23 } 74 }
24 75
25 void TearDown() override { 76 void TearDown() override {
26 if (sender_.get()) { 77 if (sender_.get()) {
27 sender_->ShutDown(); 78 sender_->ShutDown();
28 sender_ = NULL; 79 sender_ = NULL;
29 } 80 }
30 ApiTestBase::TearDown(); 81 ApiTestBase::TearDown();
31 } 82 }
32 83
33 std::queue<int32_t> error_to_send_; 84 std::queue<int32_t> error_to_send_;
34 std::queue<std::string> data_to_send_; 85 std::queue<std::string> data_to_send_;
35 86
36 private: 87 private:
37 void CreateDataSource( 88 void CreateDataSource(
38 mojo::InterfaceRequest<device::serial::DataSource> request) { 89 mojo::InterfaceRequest<device::serial::DataSource> request,
39 sender_ = mojo::WeakBindToRequest( 90 mojo::InterfacePtr<device::serial::DataSourceClient> client) {
40 new device::DataSourceSender( 91 sender_ = new device::DataSourceSender(
41 base::Bind(&DataReceiverTest::ReadyToSend, base::Unretained(this)), 92 request.Pass(), client.Pass(),
42 base::Bind(base::DoNothing)), 93 base::Bind(&DataReceiverTest::ReadyToSend, base::Unretained(this)),
43 &request); 94 base::Bind(base::DoNothing));
44 } 95 }
45 96
46 void ReadyToSend(scoped_ptr<device::WritableBuffer> buffer) { 97 void ReadyToSend(scoped_ptr<device::WritableBuffer> buffer) {
47 if (data_to_send_.empty() && error_to_send_.empty()) 98 if (data_to_send_.empty() && error_to_send_.empty())
48 return; 99 return;
49 100
50 std::string data; 101 std::string data;
51 int32_t error = 0; 102 int32_t error = 0;
52 if (!data_to_send_.empty()) { 103 if (!data_to_send_.empty()) {
53 data = data_to_send_.front(); 104 data = data_to_send_.front();
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 data_to_send_.push("a"); 170 data_to_send_.push("a");
120 RunTest("data_receiver_unittest.js", "testSerializeDuringReceive"); 171 RunTest("data_receiver_unittest.js", "testSerializeDuringReceive");
121 } 172 }
122 173
123 TEST_F(DataReceiverTest, SerializeAfterClose) { 174 TEST_F(DataReceiverTest, SerializeAfterClose) {
124 data_to_send_.push("a"); 175 data_to_send_.push("a");
125 RunTest("data_receiver_unittest.js", "testSerializeAfterClose"); 176 RunTest("data_receiver_unittest.js", "testSerializeAfterClose");
126 } 177 }
127 178
128 } // namespace extensions 179 } // namespace extensions
OLDNEW
« no previous file with comments | « device/serial/serial_service_unittest.cc ('k') | extensions/renderer/api/serial/data_sender_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698