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

Side by Side Diff: services/js/echo_apptest.cc

Issue 1954073003: Convert //services/js/echo_apptest.cc to use SynchronousInterfacePtr. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 7 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 | « services/js/BUILD.gn ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "mojo/public/cpp/application/connect.h" 5 #include "mojo/public/cpp/application/connect.h"
6 #include "services/js/test/echo_service.mojom.h" 6 #include "mojo/public/cpp/bindings/synchronous_interface_ptr.h"
7 #include "services/js/test/echo_service.mojom-sync.h"
7 #include "services/js/test/js_application_test_base.h" 8 #include "services/js/test/js_application_test_base.h"
8 9
9 using mojo::String; 10 using mojo::String;
10 11
11 namespace js { 12 namespace js {
12 namespace { 13 namespace {
13 14
14 class JSEchoTest : public test::JSApplicationTestBase { 15 class JSEchoTest : public test::JSApplicationTestBase {
15 public: 16 public:
16 JSEchoTest() : JSApplicationTestBase() {} 17 JSEchoTest() : JSApplicationTestBase() {}
17 ~JSEchoTest() override {} 18 ~JSEchoTest() override {}
18 19
19 protected: 20 protected:
20 // ApplicationTestBase: 21 // ApplicationTestBase:
21 void SetUp() override { 22 void SetUp() override {
22 ApplicationTestBase::SetUp(); 23 ApplicationTestBase::SetUp();
23 const std::string& url = JSAppURL("echo.js"); 24 const std::string& url = JSAppURL("echo.js");
24 mojo::ConnectToService(application_impl()->shell(), url, 25 mojo::ConnectToService(application_impl()->shell(), url,
25 GetProxy(&echo_service_)); 26 GetSynchronousProxy(&echo_service_));
26 } 27 }
27 28
28 mojo::EchoServicePtr echo_service_; 29 mojo::SynchronousInterfacePtr<mojo::EchoService> echo_service_;
29 30
30 private: 31 private:
31 MOJO_DISALLOW_COPY_AND_ASSIGN(JSEchoTest); 32 MOJO_DISALLOW_COPY_AND_ASSIGN(JSEchoTest);
32 }; 33 };
33 34
34 class JSServiceProviderEchoTest : public test::JSApplicationTestBase { 35 class JSServiceProviderEchoTest : public test::JSApplicationTestBase {
35 public: 36 public:
36 JSServiceProviderEchoTest() : JSApplicationTestBase() {} 37 JSServiceProviderEchoTest() : JSApplicationTestBase() {}
37 ~JSServiceProviderEchoTest() override {} 38 ~JSServiceProviderEchoTest() override {}
38 39
39 protected: 40 protected:
40 // ApplicationTestBase: 41 // ApplicationTestBase:
41 void SetUp() override { 42 void SetUp() override {
42 ApplicationTestBase::SetUp(); 43 ApplicationTestBase::SetUp();
43 const std::string& url = JSAppURL("echo.js"); 44 const std::string& url = JSAppURL("echo.js");
44 application_impl()->shell()->ConnectToApplication( 45 application_impl()->shell()->ConnectToApplication(
45 url, GetProxy(&echo_service_provider_), nullptr); 46 url, GetProxy(&echo_service_provider_), nullptr);
46 } 47 }
47 48
48 mojo::ServiceProviderPtr echo_service_provider_; 49 mojo::ServiceProviderPtr echo_service_provider_;
49 50
50 private: 51 private:
51 MOJO_DISALLOW_COPY_AND_ASSIGN(JSServiceProviderEchoTest); 52 MOJO_DISALLOW_COPY_AND_ASSIGN(JSServiceProviderEchoTest);
52 }; 53 };
53 54
54 struct EchoStringCallback {
55 explicit EchoStringCallback(String *s) : echo_value(s) {}
56 void Run(const String& value) const {
57 *echo_value = value;
58 }
59 String *echo_value;
60 };
61
62 struct ShareEchoServiceCallback {
63 explicit ShareEchoServiceCallback(bool *b) : value(b) {}
64 void Run(bool callback_value) const {
65 *value = callback_value;
66 }
67 bool *value;
68 };
69
70 TEST_F(JSEchoTest, EchoString) { 55 TEST_F(JSEchoTest, EchoString) {
71 String foo; 56 String foo;
72 EchoStringCallback callback(&foo); 57 EXPECT_TRUE(echo_service_->EchoString("foo", &foo));
73 echo_service_->EchoString("foo", callback);
74 EXPECT_TRUE(echo_service_.WaitForIncomingResponse());
75 EXPECT_EQ("foo", foo); 58 EXPECT_EQ("foo", foo);
76 echo_service_->Quit(); 59 echo_service_->Quit();
77 } 60 }
78 61
79 TEST_F(JSEchoTest, EchoEmptyString) { 62 TEST_F(JSEchoTest, EchoEmptyString) {
80 String empty; 63 String empty;
81 EchoStringCallback callback(&empty); 64 EXPECT_TRUE(echo_service_->EchoString("", &empty));
82 echo_service_->EchoString("", callback);
83 EXPECT_TRUE(echo_service_.WaitForIncomingResponse());
84 EXPECT_EQ("", empty); 65 EXPECT_EQ("", empty);
85 echo_service_->Quit(); 66 echo_service_->Quit();
86 } 67 }
87 68
88 TEST_F(JSEchoTest, EchoNullString) { 69 TEST_F(JSEchoTest, EchoNullString) {
89 String null; 70 String null;
90 EchoStringCallback callback(&null); 71 EXPECT_TRUE(echo_service_->EchoString(nullptr, &null));
91 echo_service_->EchoString(nullptr, callback);
92 EXPECT_TRUE(echo_service_.WaitForIncomingResponse());
93 EXPECT_TRUE(null.is_null()); 72 EXPECT_TRUE(null.is_null());
94 echo_service_->Quit(); 73 echo_service_->Quit();
95 } 74 }
96 75
97 // Verify that a JS app's ServiceProvider can request and provide services. 76 // Verify that a JS app's ServiceProvider can request and provide services.
98 // This test exercises the same code paths as examples/js/share_echo.js. 77 // This test exercises the same code paths as examples/js/share_echo.js.
99 TEST_F(JSEchoTest, ShareEchoService) { 78 TEST_F(JSEchoTest, ShareEchoService) {
100 bool returned_value; 79 bool returned_value = false;
101 ShareEchoServiceCallback callback(&returned_value); 80 EXPECT_TRUE(echo_service_->ShareEchoService(&returned_value));
102 echo_service_->ShareEchoService(callback);
103 EXPECT_TRUE(echo_service_.WaitForIncomingResponse());
104 EXPECT_TRUE(returned_value); 81 EXPECT_TRUE(returned_value);
105 echo_service_->Quit(); 82 echo_service_->Quit();
106 } 83 }
107 84
108 // Verify that connecting via the echo service application's ServiceProvider
109 // behaves the same as connecting to the echo service directly.
110 TEST_F(JSServiceProviderEchoTest, UseApplicationServiceProvider) {
111 mojo::EchoServicePtr echo_service;
112 mojo::MessagePipe pipe;
113 echo_service.Bind(
114 mojo::InterfaceHandle<mojo::EchoService>(pipe.handle0.Pass(), 0u));
115 echo_service_provider_->ConnectToService(
116 mojo::EchoService::Name_, pipe.handle1.Pass());
117 String foo;
118 EchoStringCallback callback(&foo);
119 echo_service->EchoString("foo", callback);
120 EXPECT_TRUE(echo_service.WaitForIncomingResponse());
121 EXPECT_EQ("foo", foo);
122 echo_service->Quit();
123 }
124
125 } // namespace 85 } // namespace
126 } // namespace js 86 } // namespace js
OLDNEW
« no previous file with comments | « services/js/BUILD.gn ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698