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

Side by Side Diff: third_party/WebKit/Source/modules/presentation/PresentationReceiverTest.cpp

Issue 2340433003: [Presentation API] 1-UA: notify receiver page when receiver connection becomes available (blink sid… (Closed)
Patch Set: resolve code review comments from dcheng Created 4 years, 2 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "modules/presentation/PresentationReceiver.h" 5 #include "modules/presentation/PresentationReceiver.h"
6 6
7 #include "bindings/core/v8/ScriptPromiseResolver.h" 7 #include "bindings/core/v8/ScriptPromiseResolver.h"
8 #include "bindings/core/v8/V8BindingForTesting.h" 8 #include "bindings/core/v8/V8BindingForTesting.h"
9 #include "core/frame/LocalFrame.h" 9 #include "core/frame/LocalFrame.h"
10 #include "core/testing/DummyPageHolder.h" 10 #include "core/testing/DummyPageHolder.h"
11 #include "modules/presentation/PresentationConnectionList.h" 11 #include "modules/presentation/PresentationConnectionList.h"
12 #include "platform/testing/URLTestHelpers.h" 12 #include "platform/testing/URLTestHelpers.h"
13 #include "public/platform/modules/presentation/WebPresentationClient.h"
13 #include "public/platform/modules/presentation/WebPresentationConnectionClient.h " 14 #include "public/platform/modules/presentation/WebPresentationConnectionClient.h "
14 #include "testing/gmock/include/gmock/gmock.h" 15 #include "testing/gmock/include/gmock/gmock.h"
15 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
16 #include <v8.h> 17 #include <v8.h>
17 18
18 namespace blink { 19 namespace blink {
19 20
20 class MockEventListener : public EventListener { 21 class MockEventListener : public EventListener {
21 public: 22 public:
22 MockEventListener() 23 MockEventListener()
23 : EventListener(CPPEventListenerType) 24 : EventListener(CPPEventListenerType)
24 { 25 {
25 } 26 }
26 27
27 bool operator==(const EventListener& other) const final 28 bool operator==(const EventListener& other) const final
28 { 29 {
29 return this == &other; 30 return this == &other;
30 } 31 }
31 32
32 MOCK_METHOD2(handleEvent, void(ExecutionContext* executionContext, Event*)); 33 MOCK_METHOD2(handleEvent, void(ExecutionContext* executionContext, Event*));
33 }; 34 };
34 35
36 class MockWebPresentationClient : public WebPresentationClient {
37 public:
38 MOCK_METHOD1(setController,
39 void(WebPresentationController*));
40
41 MOCK_METHOD1(setReceiver,
42 void(WebPresentationReceiver*));
43
44 MOCK_METHOD2(startSession,
45 void(const WebVector<WebURL>& presentationUrls, WebPresentationConnectio nClientCallbacks*));
46
47 MOCK_METHOD3(joinSession,
48 void(const WebVector<WebURL>& presentationUrls, const WebString& present ationId, WebPresentationConnectionClientCallbacks*));
49
50 MOCK_METHOD3(sendString,
51 void(const WebURL& presentationUrl, const WebString& presentationId, con st WebString& message));
52
53 MOCK_METHOD4(sendArrayBuffer,
54 void(const WebURL& presentationUrl, const WebString& presentationId, con st uint8_t* data, size_t length));
55
56 MOCK_METHOD4(sendBlobData,
57 void(const WebURL& presentationUrl, const WebString& presentationId, con st uint8_t* data, size_t length));
58
59 MOCK_METHOD2(closeSession,
60 void(const WebURL& presentationUrl, const WebString& presentationId));
61
62 MOCK_METHOD2(terminateSession,
63 void(const WebURL& presentationUrl, const WebString& presentationId));
64
65 MOCK_METHOD2(getAvailability,
66 void(const WebURL& availabilityUrl, WebPresentationAvailabilityCallbacks *));
67
68 MOCK_METHOD1(startListening,
69 void(WebPresentationAvailabilityObserver*));
70
71 MOCK_METHOD1(stopListening,
72 void(WebPresentationAvailabilityObserver*));
73
74 MOCK_METHOD1(setDefaultPresentationUrls,
75 void(const WebVector<WebURL>&));
76 };
77
35 class TestWebPresentationConnectionClient : public WebPresentationConnectionClie nt { 78 class TestWebPresentationConnectionClient : public WebPresentationConnectionClie nt {
36 public: 79 public:
37 WebString getId() override { return WebString::fromUTF8("id"); } 80 WebString getId() override { return WebString::fromUTF8("id"); }
38 WebURL getUrl() override { return URLTestHelpers::toKURL("http://www.example .com"); } 81 WebURL getUrl() override { return URLTestHelpers::toKURL("http://www.example .com"); }
39 }; 82 };
40 83
41 class PresentationReceiverTest : public ::testing::Test { 84 class PresentationReceiverTest : public ::testing::Test {
42 public: 85 public:
43 void addConnectionavailableEventListener( 86 void addConnectionavailableEventListener(
44 EventListener*, const PresentationReceiver*); 87 EventListener*, const PresentationReceiver*);
(...skipping 22 matching lines...) Expand all
67 const PresentationReceiver* receiver) 110 const PresentationReceiver* receiver)
68 { 111 {
69 EXPECT_EQ(expectedSize, receiver->m_connectionList->m_connections.size()); 112 EXPECT_EQ(expectedSize, receiver->m_connectionList->m_connections.size());
70 } 113 }
71 114
72 using ::testing::StrictMock; 115 using ::testing::StrictMock;
73 116
74 TEST_F(PresentationReceiverTest, NoConnectionUnresolvedConnectionList) 117 TEST_F(PresentationReceiverTest, NoConnectionUnresolvedConnectionList)
75 { 118 {
76 V8TestingScope scope; 119 V8TestingScope scope;
77 auto receiver = new PresentationReceiver(&scope.frame()); 120 auto receiver = new PresentationReceiver(&scope.frame(), nullptr);
78 121
79 auto eventHandler = new StrictMock<MockEventListener>(); 122 auto eventHandler = new StrictMock<MockEventListener>();
80 addConnectionavailableEventListener(eventHandler, receiver); 123 addConnectionavailableEventListener(eventHandler, receiver);
81 EXPECT_CALL(*eventHandler, handleEvent(testing::_, testing::_)).Times(0); 124 EXPECT_CALL(*eventHandler, handleEvent(testing::_, testing::_)).Times(0);
82 125
83 receiver->connectionList(scope.getScriptState()); 126 receiver->connectionList(scope.getScriptState());
84 127
85 verifyConnectionListPropertyState(ScriptPromisePropertyBase::Pending, receiv er); 128 verifyConnectionListPropertyState(ScriptPromisePropertyBase::Pending, receiv er);
86 verifyConnectionListSize(0, receiver); 129 verifyConnectionListSize(0, receiver);
87 } 130 }
88 131
89 TEST_F(PresentationReceiverTest, OneConnectionResolvedConnectionListNoEvent) 132 TEST_F(PresentationReceiverTest, OneConnectionResolvedConnectionListNoEvent)
90 { 133 {
91 V8TestingScope scope; 134 V8TestingScope scope;
92 auto receiver = new PresentationReceiver(&scope.frame()); 135 auto receiver = new PresentationReceiver(&scope.frame(), nullptr);
93 136
94 auto eventHandler = new StrictMock<MockEventListener>(); 137 auto eventHandler = new StrictMock<MockEventListener>();
95 addConnectionavailableEventListener(eventHandler, receiver); 138 addConnectionavailableEventListener(eventHandler, receiver);
96 EXPECT_CALL(*eventHandler, handleEvent(testing::_, testing::_)).Times(0); 139 EXPECT_CALL(*eventHandler, handleEvent(testing::_, testing::_)).Times(0);
97 140
98 receiver->connectionList(scope.getScriptState()); 141 receiver->connectionList(scope.getScriptState());
99 142
100 // Receive first connection. 143 // Receive first connection.
101 auto connectionClient = new TestWebPresentationConnectionClient(); 144 auto connectionClient = new TestWebPresentationConnectionClient();
102 receiver->onConnectionReceived(connectionClient); 145 receiver->onReceiverConnectionAvailable(connectionClient);
103 146
104 verifyConnectionListPropertyState(ScriptPromisePropertyBase::Resolved, recei ver); 147 verifyConnectionListPropertyState(ScriptPromisePropertyBase::Resolved, recei ver);
105 verifyConnectionListSize(1, receiver); 148 verifyConnectionListSize(1, receiver);
106 } 149 }
107 150
108 TEST_F(PresentationReceiverTest, TwoConnectionsFireOnconnectionavailableEvent) 151 TEST_F(PresentationReceiverTest, TwoConnectionsFireOnconnectionavailableEvent)
109 { 152 {
110 V8TestingScope scope; 153 V8TestingScope scope;
111 auto receiver = new PresentationReceiver(&scope.frame()); 154 auto receiver = new PresentationReceiver(&scope.frame(), nullptr);
112 155
113 StrictMock<MockEventListener>* eventHandler = new StrictMock<MockEventListen er>(); 156 StrictMock<MockEventListener>* eventHandler = new StrictMock<MockEventListen er>();
114 addConnectionavailableEventListener(eventHandler, receiver); 157 addConnectionavailableEventListener(eventHandler, receiver);
115 EXPECT_CALL(*eventHandler, handleEvent(testing::_, testing::_)).Times(1); 158 EXPECT_CALL(*eventHandler, handleEvent(testing::_, testing::_)).Times(1);
116 159
117 receiver->connectionList(scope.getScriptState()); 160 receiver->connectionList(scope.getScriptState());
118 // Receive first connection. 161 // Receive first connection.
119 auto connectionClient1 = new TestWebPresentationConnectionClient(); 162 auto connectionClient1 = new TestWebPresentationConnectionClient();
120 receiver->onConnectionReceived(connectionClient1); 163 receiver->onReceiverConnectionAvailable(connectionClient1);
121 164
122 // Receive second connection. 165 // Receive second connection.
123 auto connectionClient2 = new TestWebPresentationConnectionClient(); 166 auto connectionClient2 = new TestWebPresentationConnectionClient();
124 receiver->onConnectionReceived(connectionClient2); 167 receiver->onReceiverConnectionAvailable(connectionClient2);
125 168
126 verifyConnectionListSize(2, receiver); 169 verifyConnectionListSize(2, receiver);
127 } 170 }
128 171
129 TEST_F(PresentationReceiverTest, TwoConnectionsNoEvent) 172 TEST_F(PresentationReceiverTest, TwoConnectionsNoEvent)
130 { 173 {
131 V8TestingScope scope; 174 V8TestingScope scope;
132 auto receiver = new PresentationReceiver(&scope.frame()); 175 auto receiver = new PresentationReceiver(&scope.frame(), nullptr);
133 176
134 StrictMock<MockEventListener>* eventHandler = new StrictMock<MockEventListen er>(); 177 StrictMock<MockEventListener>* eventHandler = new StrictMock<MockEventListen er>();
135 addConnectionavailableEventListener(eventHandler, receiver); 178 addConnectionavailableEventListener(eventHandler, receiver);
136 EXPECT_CALL(*eventHandler, handleEvent(testing::_, testing::_)).Times(0); 179 EXPECT_CALL(*eventHandler, handleEvent(testing::_, testing::_)).Times(0);
137 180
138 // Receive first connection. 181 // Receive first connection.
139 auto connectionClient1 = new TestWebPresentationConnectionClient(); 182 auto connectionClient1 = new TestWebPresentationConnectionClient();
140 receiver->onConnectionReceived(connectionClient1); 183 receiver->onReceiverConnectionAvailable(connectionClient1);
141 184
142 // Receive second connection. 185 // Receive second connection.
143 auto connectionClient2 = new TestWebPresentationConnectionClient(); 186 auto connectionClient2 = new TestWebPresentationConnectionClient();
144 receiver->onConnectionReceived(connectionClient2); 187 receiver->onReceiverConnectionAvailable(connectionClient2);
145 188
146 receiver->connectionList(scope.getScriptState()); 189 receiver->connectionList(scope.getScriptState());
147 verifyConnectionListPropertyState(ScriptPromisePropertyBase::Resolved, recei ver); 190 verifyConnectionListPropertyState(ScriptPromisePropertyBase::Resolved, recei ver);
148 verifyConnectionListSize(2, receiver); 191 verifyConnectionListSize(2, receiver);
149 } 192 }
150 193
194 TEST_F(PresentationReceiverTest, CreateReceiver)
195 {
196 MockWebPresentationClient client;
197 EXPECT_CALL(client, setReceiver(testing::_));
198
199 V8TestingScope scope;
200 new PresentationReceiver(&scope.frame(), &client);
201 }
202
151 } // namespace blink 203 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/modules/presentation/PresentationReceiver.cpp ('k') | third_party/WebKit/Source/platform/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698