| OLD | NEW |
| 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 <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "bindings/core/v8/ScriptPromiseResolver.h" | 9 #include "bindings/core/v8/ScriptPromiseResolver.h" |
| 10 #include "bindings/core/v8/V8BindingForTesting.h" | 10 #include "bindings/core/v8/V8BindingForTesting.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 MockEventListener() : EventListener(CPPEventListenerType) {} | 27 MockEventListener() : EventListener(CPPEventListenerType) {} |
| 28 | 28 |
| 29 bool operator==(const EventListener& other) const final { | 29 bool operator==(const EventListener& other) const final { |
| 30 return this == &other; | 30 return this == &other; |
| 31 } | 31 } |
| 32 | 32 |
| 33 MOCK_METHOD2(handleEvent, void(ExecutionContext* executionContext, Event*)); | 33 MOCK_METHOD2(handleEvent, void(ExecutionContext* executionContext, Event*)); |
| 34 }; | 34 }; |
| 35 | 35 |
| 36 class MockWebPresentationClient : public WebPresentationClient { | 36 class MockWebPresentationClient : public WebPresentationClient { |
| 37 void startSession( | 37 void startPresentation( |
| 38 const WebVector<WebURL>& presentationUrls, | 38 const WebVector<WebURL>& presentationUrls, |
| 39 std::unique_ptr<WebPresentationConnectionCallbacks> callbacks) override { | 39 std::unique_ptr<WebPresentationConnectionCallbacks> callbacks) override { |
| 40 return startSession_(presentationUrls, callbacks); | 40 return startPresentation_(presentationUrls, callbacks); |
| 41 } | 41 } |
| 42 void joinSession( | 42 void reconnectPresentation( |
| 43 const WebVector<WebURL>& presentationUrls, | 43 const WebVector<WebURL>& presentationUrls, |
| 44 const WebString& presentationId, | 44 const WebString& presentationId, |
| 45 std::unique_ptr<WebPresentationConnectionCallbacks> callbacks) override { | 45 std::unique_ptr<WebPresentationConnectionCallbacks> callbacks) override { |
| 46 return joinSession_(presentationUrls, presentationId, callbacks); | 46 return reconnectPresentation_(presentationUrls, presentationId, callbacks); |
| 47 } | 47 } |
| 48 | 48 |
| 49 void getAvailability(const WebVector<WebURL>& availabilityURLs, | 49 void getAvailability(const WebVector<WebURL>& availabilityURLs, |
| 50 std::unique_ptr<WebPresentationAvailabilityCallbacks> | 50 std::unique_ptr<WebPresentationAvailabilityCallbacks> |
| 51 callbacks) override { | 51 callbacks) override { |
| 52 return getAvailability_(availabilityURLs, callbacks); | 52 return getAvailability_(availabilityURLs, callbacks); |
| 53 } | 53 } |
| 54 | 54 |
| 55 public: | 55 public: |
| 56 MOCK_METHOD1(setController, void(WebPresentationController*)); | 56 MOCK_METHOD1(setController, void(WebPresentationController*)); |
| 57 | 57 |
| 58 MOCK_METHOD1(setReceiver, void(WebPresentationReceiver*)); | 58 MOCK_METHOD1(setReceiver, void(WebPresentationReceiver*)); |
| 59 | 59 |
| 60 MOCK_METHOD2(startSession_, | 60 MOCK_METHOD2(startPresentation_, |
| 61 void(const WebVector<WebURL>& presentationUrls, | 61 void(const WebVector<WebURL>& presentationUrls, |
| 62 std::unique_ptr<WebPresentationConnectionCallbacks>&)); | 62 std::unique_ptr<WebPresentationConnectionCallbacks>&)); |
| 63 | 63 |
| 64 MOCK_METHOD3(joinSession_, | 64 MOCK_METHOD3(reconnectPresentation_, |
| 65 void(const WebVector<WebURL>& presentationUrls, | 65 void(const WebVector<WebURL>& presentationUrls, |
| 66 const WebString& presentationId, | 66 const WebString& presentationId, |
| 67 std::unique_ptr<WebPresentationConnectionCallbacks>&)); | 67 std::unique_ptr<WebPresentationConnectionCallbacks>&)); |
| 68 | 68 |
| 69 MOCK_METHOD4(sendString, | 69 MOCK_METHOD4(sendString, |
| 70 void(const WebURL& presentationUrl, | 70 void(const WebURL& presentationUrl, |
| 71 const WebString& presentationId, | 71 const WebString& presentationId, |
| 72 const WebString& message, | 72 const WebString& message, |
| 73 const WebPresentationConnectionProxy* proxy)); | 73 const WebPresentationConnectionProxy* proxy)); |
| 74 | 74 |
| 75 MOCK_METHOD5(sendArrayBuffer, | 75 MOCK_METHOD5(sendArrayBuffer, |
| 76 void(const WebURL& presentationUrl, | 76 void(const WebURL& presentationUrl, |
| 77 const WebString& presentationId, | 77 const WebString& presentationId, |
| 78 const uint8_t* data, | 78 const uint8_t* data, |
| 79 size_t length, | 79 size_t length, |
| 80 const WebPresentationConnectionProxy* proxy)); | 80 const WebPresentationConnectionProxy* proxy)); |
| 81 | 81 |
| 82 MOCK_METHOD5(sendBlobData, | 82 MOCK_METHOD5(sendBlobData, |
| 83 void(const WebURL& presentationUrl, | 83 void(const WebURL& presentationUrl, |
| 84 const WebString& presentationId, | 84 const WebString& presentationId, |
| 85 const uint8_t* data, | 85 const uint8_t* data, |
| 86 size_t length, | 86 size_t length, |
| 87 const WebPresentationConnectionProxy* proxy)); | 87 const WebPresentationConnectionProxy* proxy)); |
| 88 | 88 |
| 89 MOCK_METHOD3(closeSession, | 89 MOCK_METHOD3(closeConnection, |
| 90 void(const WebURL& presentationUrl, | 90 void(const WebURL& presentationUrl, |
| 91 const WebString& presentationId, | 91 const WebString& presentationId, |
| 92 const WebPresentationConnectionProxy*)); | 92 const WebPresentationConnectionProxy*)); |
| 93 | 93 |
| 94 MOCK_METHOD2(terminateConnection, | 94 MOCK_METHOD2(terminatePresentation, |
| 95 void(const WebURL& presentationUrl, | 95 void(const WebURL& presentationUrl, |
| 96 const WebString& presentationId)); | 96 const WebString& presentationId)); |
| 97 | 97 |
| 98 MOCK_METHOD2(getAvailability_, | 98 MOCK_METHOD2(getAvailability_, |
| 99 void(const WebVector<WebURL>& availabilityUrls, | 99 void(const WebVector<WebURL>& availabilityUrls, |
| 100 std::unique_ptr<WebPresentationAvailabilityCallbacks>&)); | 100 std::unique_ptr<WebPresentationAvailabilityCallbacks>&)); |
| 101 | 101 |
| 102 MOCK_METHOD1(startListening, void(WebPresentationAvailabilityObserver*)); | 102 MOCK_METHOD1(startListening, void(WebPresentationAvailabilityObserver*)); |
| 103 | 103 |
| 104 MOCK_METHOD1(stopListening, void(WebPresentationAvailabilityObserver*)); | 104 MOCK_METHOD1(stopListening, void(WebPresentationAvailabilityObserver*)); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 auto receiver = new PresentationReceiver(&scope.frame(), nullptr); | 157 auto receiver = new PresentationReceiver(&scope.frame(), nullptr); |
| 158 | 158 |
| 159 auto eventHandler = new StrictMock<MockEventListener>(); | 159 auto eventHandler = new StrictMock<MockEventListener>(); |
| 160 addConnectionavailableEventListener(eventHandler, receiver); | 160 addConnectionavailableEventListener(eventHandler, receiver); |
| 161 EXPECT_CALL(*eventHandler, handleEvent(testing::_, testing::_)).Times(0); | 161 EXPECT_CALL(*eventHandler, handleEvent(testing::_, testing::_)).Times(0); |
| 162 | 162 |
| 163 receiver->connectionList(scope.getScriptState()); | 163 receiver->connectionList(scope.getScriptState()); |
| 164 | 164 |
| 165 // Receive first connection. | 165 // Receive first connection. |
| 166 receiver->onReceiverConnectionAvailable( | 166 receiver->onReceiverConnectionAvailable( |
| 167 WebPresentationSessionInfo(KURL(KURL(), "http://example.com"), "id")); | 167 WebPresentationInfo(KURL(KURL(), "http://example.com"), "id")); |
| 168 | 168 |
| 169 verifyConnectionListPropertyState(ScriptPromisePropertyBase::Resolved, | 169 verifyConnectionListPropertyState(ScriptPromisePropertyBase::Resolved, |
| 170 receiver); | 170 receiver); |
| 171 verifyConnectionListSize(1, receiver); | 171 verifyConnectionListSize(1, receiver); |
| 172 } | 172 } |
| 173 | 173 |
| 174 TEST_F(PresentationReceiverTest, TwoConnectionsFireOnconnectionavailableEvent) { | 174 TEST_F(PresentationReceiverTest, TwoConnectionsFireOnconnectionavailableEvent) { |
| 175 V8TestingScope scope; | 175 V8TestingScope scope; |
| 176 auto receiver = new PresentationReceiver(&scope.frame(), nullptr); | 176 auto receiver = new PresentationReceiver(&scope.frame(), nullptr); |
| 177 | 177 |
| 178 StrictMock<MockEventListener>* eventHandler = | 178 StrictMock<MockEventListener>* eventHandler = |
| 179 new StrictMock<MockEventListener>(); | 179 new StrictMock<MockEventListener>(); |
| 180 addConnectionavailableEventListener(eventHandler, receiver); | 180 addConnectionavailableEventListener(eventHandler, receiver); |
| 181 EXPECT_CALL(*eventHandler, handleEvent(testing::_, testing::_)).Times(1); | 181 EXPECT_CALL(*eventHandler, handleEvent(testing::_, testing::_)).Times(1); |
| 182 | 182 |
| 183 receiver->connectionList(scope.getScriptState()); | 183 receiver->connectionList(scope.getScriptState()); |
| 184 | 184 |
| 185 WebPresentationSessionInfo sessionInfo(KURL(KURL(), "http://example.com"), | 185 WebPresentationInfo presentationInfo(KURL(KURL(), "http://example.com"), |
| 186 "id"); | 186 "id"); |
| 187 // Receive first connection. | 187 // Receive first connection. |
| 188 receiver->onReceiverConnectionAvailable(sessionInfo); | 188 receiver->onReceiverConnectionAvailable(presentationInfo); |
| 189 // Receive second connection. | 189 // Receive second connection. |
| 190 receiver->onReceiverConnectionAvailable(sessionInfo); | 190 receiver->onReceiverConnectionAvailable(presentationInfo); |
| 191 | 191 |
| 192 verifyConnectionListSize(2, receiver); | 192 verifyConnectionListSize(2, receiver); |
| 193 } | 193 } |
| 194 | 194 |
| 195 TEST_F(PresentationReceiverTest, TwoConnectionsNoEvent) { | 195 TEST_F(PresentationReceiverTest, TwoConnectionsNoEvent) { |
| 196 V8TestingScope scope; | 196 V8TestingScope scope; |
| 197 auto receiver = new PresentationReceiver(&scope.frame(), nullptr); | 197 auto receiver = new PresentationReceiver(&scope.frame(), nullptr); |
| 198 | 198 |
| 199 StrictMock<MockEventListener>* eventHandler = | 199 StrictMock<MockEventListener>* eventHandler = |
| 200 new StrictMock<MockEventListener>(); | 200 new StrictMock<MockEventListener>(); |
| 201 addConnectionavailableEventListener(eventHandler, receiver); | 201 addConnectionavailableEventListener(eventHandler, receiver); |
| 202 EXPECT_CALL(*eventHandler, handleEvent(testing::_, testing::_)).Times(0); | 202 EXPECT_CALL(*eventHandler, handleEvent(testing::_, testing::_)).Times(0); |
| 203 | 203 |
| 204 WebPresentationSessionInfo sessionInfo(KURL(KURL(), "http://example.com"), | 204 WebPresentationInfo presentationInfo(KURL(KURL(), "http://example.com"), |
| 205 "id"); | 205 "id"); |
| 206 // Receive first connection. | 206 // Receive first connection. |
| 207 auto* connection1 = receiver->onReceiverConnectionAvailable(sessionInfo); | 207 auto* connection1 = receiver->onReceiverConnectionAvailable(presentationInfo); |
| 208 EXPECT_TRUE(connection1); | 208 EXPECT_TRUE(connection1); |
| 209 | 209 |
| 210 // Receive second connection. | 210 // Receive second connection. |
| 211 auto* connection2 = receiver->onReceiverConnectionAvailable(sessionInfo); | 211 auto* connection2 = receiver->onReceiverConnectionAvailable(presentationInfo); |
| 212 EXPECT_TRUE(connection2); | 212 EXPECT_TRUE(connection2); |
| 213 | 213 |
| 214 receiver->connectionList(scope.getScriptState()); | 214 receiver->connectionList(scope.getScriptState()); |
| 215 verifyConnectionListPropertyState(ScriptPromisePropertyBase::Resolved, | 215 verifyConnectionListPropertyState(ScriptPromisePropertyBase::Resolved, |
| 216 receiver); | 216 receiver); |
| 217 verifyConnectionListSize(2, receiver); | 217 verifyConnectionListSize(2, receiver); |
| 218 } | 218 } |
| 219 | 219 |
| 220 TEST_F(PresentationReceiverTest, CreateReceiver) { | 220 TEST_F(PresentationReceiverTest, CreateReceiver) { |
| 221 MockWebPresentationClient client; | 221 MockWebPresentationClient client; |
| 222 EXPECT_CALL(client, setReceiver(testing::_)); | 222 EXPECT_CALL(client, setReceiver(testing::_)); |
| 223 | 223 |
| 224 V8TestingScope scope; | 224 V8TestingScope scope; |
| 225 new PresentationReceiver(&scope.frame(), &client); | 225 new PresentationReceiver(&scope.frame(), &client); |
| 226 } | 226 } |
| 227 | 227 |
| 228 } // namespace blink | 228 } // namespace blink |
| OLD | NEW |