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

Side by Side Diff: extensions/browser/api/cast_channel/cast_socket_unittest.cc

Issue 807723004: Cast audio only policy enforcement support. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed windows compiler warning Created 5 years, 11 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 "extensions/browser/api/cast_channel/cast_socket.h" 5 #include "extensions/browser/api/cast_channel/cast_socket.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/memory/weak_ptr.h" 9 #include "base/memory/weak_ptr.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
11 #include "base/run_loop.h" 11 #include "base/run_loop.h"
12 #include "base/strings/string_number_conversions.h" 12 #include "base/strings/string_number_conversions.h"
13 #include "base/sys_byteorder.h" 13 #include "base/sys_byteorder.h"
14 #include "base/test/simple_test_tick_clock.h" 14 #include "base/test/simple_test_tick_clock.h"
15 #include "base/timer/mock_timer.h" 15 #include "base/timer/mock_timer.h"
16 #include "extensions/browser/api/cast_channel/cast_auth_util.h"
16 #include "extensions/browser/api/cast_channel/cast_framer.h" 17 #include "extensions/browser/api/cast_channel/cast_framer.h"
17 #include "extensions/browser/api/cast_channel/cast_message_util.h" 18 #include "extensions/browser/api/cast_channel/cast_message_util.h"
18 #include "extensions/browser/api/cast_channel/cast_transport.h" 19 #include "extensions/browser/api/cast_channel/cast_transport.h"
19 #include "extensions/browser/api/cast_channel/logger.h" 20 #include "extensions/browser/api/cast_channel/logger.h"
20 #include "extensions/browser/api/cast_channel/test_util.h" 21 #include "extensions/browser/api/cast_channel/test_util.h"
21 #include "extensions/common/api/cast_channel/cast_channel.pb.h" 22 #include "extensions/common/api/cast_channel/cast_channel.pb.h"
22 #include "net/base/address_list.h" 23 #include "net/base/address_list.h"
23 #include "net/base/capturing_net_log.h" 24 #include "net/base/capturing_net_log.h"
24 #include "net/base/net_errors.h" 25 #include "net/base/net_errors.h"
25 #include "net/base/net_util.h" 26 #include "net/base/net_util.h"
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 MOCK_METHOD1(OnConnectComplete, void(ChannelError error_state)); 169 MOCK_METHOD1(OnConnectComplete, void(ChannelError error_state));
169 MOCK_METHOD1(OnWriteComplete, void(int result)); 170 MOCK_METHOD1(OnWriteComplete, void(int result));
170 MOCK_METHOD1(OnReadComplete, void(int result)); 171 MOCK_METHOD1(OnReadComplete, void(int result));
171 172
172 private: 173 private:
173 DISALLOW_COPY_AND_ASSIGN(CompleteHandler); 174 DISALLOW_COPY_AND_ASSIGN(CompleteHandler);
174 }; 175 };
175 176
176 class TestCastSocket : public CastSocketImpl { 177 class TestCastSocket : public CastSocketImpl {
177 public: 178 public:
178 static scoped_ptr<TestCastSocket> Create(Logger* logger) { 179 static scoped_ptr<TestCastSocket> Create(
180 Logger* logger,
181 long device_capabilities = cast_channel::CastDeviceCapability::NONE) {
179 return scoped_ptr<TestCastSocket>( 182 return scoped_ptr<TestCastSocket>(
180 new TestCastSocket(CreateIPEndPointForTest(), CHANNEL_AUTH_TYPE_SSL, 183 new TestCastSocket(CreateIPEndPointForTest(), CHANNEL_AUTH_TYPE_SSL,
181 kDistantTimeoutMillis, logger)); 184 kDistantTimeoutMillis, logger, device_capabilities));
182 } 185 }
183 186
184 static scoped_ptr<TestCastSocket> CreateSecure(Logger* logger) { 187 static scoped_ptr<TestCastSocket> CreateSecure(
188 Logger* logger,
189 long device_capabilities = cast_channel::CastDeviceCapability::NONE) {
185 return scoped_ptr<TestCastSocket>(new TestCastSocket( 190 return scoped_ptr<TestCastSocket>(new TestCastSocket(
186 CreateIPEndPointForTest(), CHANNEL_AUTH_TYPE_SSL_VERIFIED, 191 CreateIPEndPointForTest(), CHANNEL_AUTH_TYPE_SSL_VERIFIED,
187 kDistantTimeoutMillis, logger)); 192 kDistantTimeoutMillis, logger, device_capabilities));
188 } 193 }
189 194
190 explicit TestCastSocket(const net::IPEndPoint& ip_endpoint, 195 explicit TestCastSocket(const net::IPEndPoint& ip_endpoint,
191 ChannelAuthType channel_auth, 196 ChannelAuthType channel_auth,
192 int64 timeout_ms, 197 int64 timeout_ms,
193 Logger* logger) 198 Logger* logger,
199 long device_capabilities)
194 : CastSocketImpl("some_extension_id", 200 : CastSocketImpl("some_extension_id",
195 ip_endpoint, 201 ip_endpoint,
196 channel_auth, 202 channel_auth,
197 &capturing_net_log_, 203 &capturing_net_log_,
198 base::TimeDelta::FromMilliseconds(timeout_ms), 204 base::TimeDelta::FromMilliseconds(timeout_ms),
199 logger), 205 logger,
206 device_capabilities),
200 ip_(ip_endpoint), 207 ip_(ip_endpoint),
201 connect_index_(0), 208 connect_index_(0),
202 extract_cert_result_(true), 209 extract_cert_result_(true),
203 verify_challenge_result_(true), 210 verify_challenge_result_(true),
204 verify_challenge_disallow_(false), 211 verify_challenge_disallow_(false),
205 tcp_unresponsive_(false), 212 tcp_unresponsive_(false),
206 mock_timer_(new base::MockTimer(false, false)), 213 mock_timer_(new base::MockTimer(false, false)),
207 mock_transport_(NULL) {} 214 mock_transport_(NULL) {}
208 215
209 ~TestCastSocket() override {} 216 ~TestCastSocket() override {}
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 } 262 }
256 263
257 void SetVerifyChallengeResult(bool value) { 264 void SetVerifyChallengeResult(bool value) {
258 verify_challenge_result_ = value; 265 verify_challenge_result_ = value;
259 } 266 }
260 267
261 void TriggerTimeout() { 268 void TriggerTimeout() {
262 mock_timer_->Fire(); 269 mock_timer_->Fire();
263 } 270 }
264 271
272 bool TestVerifyChannelPolicyNone() {
273 AuthResult authResult;
274 return VerifyChannelPolicy(authResult);
275 }
276
277 bool TestVerifyChannelPolicyAudioOnly() {
278 AuthResult authResult;
279 authResult.channel_policies |= AuthResult::POLICY_AUDIO_ONLY;
280 return VerifyChannelPolicy(authResult);
281 }
282
265 void DisallowVerifyChallengeResult() { verify_challenge_disallow_ = true; } 283 void DisallowVerifyChallengeResult() { verify_challenge_disallow_ = true; }
266 284
267 MockCastTransport* GetMockTransport() { 285 MockCastTransport* GetMockTransport() {
268 CHECK(mock_transport_); 286 CHECK(mock_transport_);
269 return mock_transport_; 287 return mock_transport_;
270 } 288 }
271 289
272 private: 290 private:
273 scoped_ptr<net::TCPClientSocket> CreateTcpSocket() override { 291 scoped_ptr<net::TCPClientSocket> CreateTcpSocket() override {
274 if (tcp_unresponsive_) { 292 if (tcp_unresponsive_) {
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 // Send the test message through a real transport object. 872 // Send the test message through a real transport object.
855 EXPECT_CALL(handler_, OnWriteComplete(net::OK)); 873 EXPECT_CALL(handler_, OnWriteComplete(net::OK));
856 socket_->transport()->SendMessage( 874 socket_->transport()->SendMessage(
857 test_message, base::Bind(&CompleteHandler::OnWriteComplete, 875 test_message, base::Bind(&CompleteHandler::OnWriteComplete,
858 base::Unretained(&handler_))); 876 base::Unretained(&handler_)));
859 RunPendingTasks(); 877 RunPendingTasks();
860 878
861 EXPECT_EQ(cast_channel::READY_STATE_OPEN, socket_->ready_state()); 879 EXPECT_EQ(cast_channel::READY_STATE_OPEN, socket_->ready_state());
862 EXPECT_EQ(cast_channel::CHANNEL_ERROR_NONE, socket_->error_state()); 880 EXPECT_EQ(cast_channel::CHANNEL_ERROR_NONE, socket_->error_state());
863 } 881 }
882
883 // Tests channel policy verification for device with no capabilities.
884 TEST_F(CastSocketTest, TestChannelPolicyVerificationCapabilitiesNone) {
885 socket_ =
886 TestCastSocket::Create(logger_, cast_channel::CastDeviceCapability::NONE);
887 EXPECT_TRUE(socket_->TestVerifyChannelPolicyNone());
888 EXPECT_TRUE(socket_->TestVerifyChannelPolicyAudioOnly());
889 }
890
891 // Tests channel policy verification for device with video out capability.
892 TEST_F(CastSocketTest, TestChannelPolicyVerificationCapabilitiesVideoOut) {
893 socket_ = TestCastSocket::Create(
894 logger_, cast_channel::CastDeviceCapability::VIDEO_OUT);
895 EXPECT_TRUE(socket_->TestVerifyChannelPolicyNone());
896 EXPECT_FALSE(socket_->TestVerifyChannelPolicyAudioOnly());
897 }
864 } // namespace cast_channel 898 } // namespace cast_channel
865 } // namespace core_api 899 } // namespace core_api
866 } // namespace extensions 900 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/api/cast_channel/cast_socket.cc ('k') | extensions/common/api/cast_channel.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698