OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <algorithm> | 5 #include <algorithm> |
6 #include <string> | 6 #include <string> |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
325 .WillOnce(Invoke(client_session_.get(), &ClientSession::SetCapabilities)); | 325 .WillOnce(Invoke(client_session_.get(), &ClientSession::SetCapabilities)); |
326 } | 326 } |
327 | 327 |
328 void ClientSessionTest::SetSendMessageAndDisconnectExpectation( | 328 void ClientSessionTest::SetSendMessageAndDisconnectExpectation( |
329 const std::string& message_type) { | 329 const std::string& message_type) { |
330 protocol::ExtensionMessage message; | 330 protocol::ExtensionMessage message; |
331 message.set_type(message_type); | 331 message.set_type(message_type); |
332 message.set_data("data"); | 332 message.set_data("data"); |
333 | 333 |
334 Expectation authenticated = | 334 Expectation authenticated = |
335 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)) | 335 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)); |
336 .WillOnce(Return(true)); | |
337 EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_)) | 336 EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_)) |
338 .After(authenticated) | 337 .After(authenticated) |
339 .WillOnce(DoAll( | 338 .WillOnce(DoAll( |
340 DeliverClientMessage(client_session_.get(), message), | 339 DeliverClientMessage(client_session_.get(), message), |
341 InvokeWithoutArgs(this, &ClientSessionTest::DisconnectClientSession), | 340 InvokeWithoutArgs(this, &ClientSessionTest::DisconnectClientSession), |
342 InvokeWithoutArgs(this, &ClientSessionTest::StopClientSession))); | 341 InvokeWithoutArgs(this, &ClientSessionTest::StopClientSession))); |
343 } | 342 } |
344 | 343 |
345 TEST_F(ClientSessionTest, ClipboardStubFilter) { | 344 TEST_F(ClientSessionTest, ClipboardStubFilter) { |
346 CreateClientSession(); | 345 CreateClientSession(); |
347 | 346 |
348 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)) | 347 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)); |
349 .WillOnce(Return(true)); | |
350 EXPECT_CALL(*input_injector_, StartPtr(_)); | 348 EXPECT_CALL(*input_injector_, StartPtr(_)); |
351 EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_)); | 349 EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_)); |
352 | 350 |
353 // Wait for the first video packet to be captured to make sure that | 351 // Wait for the first video packet to be captured to make sure that |
354 // the injected input will go though. Otherwise mouse events will be blocked | 352 // the injected input will go though. Otherwise mouse events will be blocked |
355 // by the mouse clamping filter. | 353 // by the mouse clamping filter. |
356 base::RunLoop run_loop; | 354 base::RunLoop run_loop; |
357 EXPECT_CALL(video_stub_, ProcessVideoPacketPtr(_, _)) | 355 EXPECT_CALL(video_stub_, ProcessVideoPacketPtr(_, _)) |
358 .Times(AtLeast(1)) | 356 .Times(AtLeast(1)) |
359 .WillOnce(testing::InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); | 357 .WillOnce(testing::InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
444 mouse_event1.set_x(100); | 442 mouse_event1.set_x(100); |
445 mouse_event1.set_y(101); | 443 mouse_event1.set_y(101); |
446 protocol::MouseEvent mouse_event2; | 444 protocol::MouseEvent mouse_event2; |
447 mouse_event2.set_x(200); | 445 mouse_event2.set_x(200); |
448 mouse_event2.set_y(201); | 446 mouse_event2.set_y(201); |
449 protocol::MouseEvent mouse_event3; | 447 protocol::MouseEvent mouse_event3; |
450 mouse_event3.set_x(300); | 448 mouse_event3.set_x(300); |
451 mouse_event3.set_y(301); | 449 mouse_event3.set_y(301); |
452 | 450 |
453 Expectation authenticated = | 451 Expectation authenticated = |
454 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)) | 452 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)); |
455 .WillOnce(Return(true)); | |
456 EXPECT_CALL(*input_injector_, StartPtr(_)) | 453 EXPECT_CALL(*input_injector_, StartPtr(_)) |
457 .After(authenticated); | 454 .After(authenticated); |
458 EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_)) | 455 EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_)) |
459 .After(authenticated); | 456 .After(authenticated); |
460 | 457 |
461 // Wait for the first video packet to be captured to make sure that | 458 // Wait for the first video packet to be captured to make sure that |
462 // the injected input will go though. Otherwise mouse events will be blocked | 459 // the injected input will go though. Otherwise mouse events will be blocked |
463 // by the mouse clamping filter. | 460 // by the mouse clamping filter. |
464 Sequence s; | 461 Sequence s; |
465 EXPECT_CALL(video_stub_, ProcessVideoPacketPtr(_, _)) | 462 EXPECT_CALL(video_stub_, ProcessVideoPacketPtr(_, _)) |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
501 | 498 |
502 protocol::KeyEvent key2; | 499 protocol::KeyEvent key2; |
503 key2.set_pressed(true); | 500 key2.set_pressed(true); |
504 key2.set_usb_keycode(2); | 501 key2.set_usb_keycode(2); |
505 | 502 |
506 protocol::MouseEvent mousedown; | 503 protocol::MouseEvent mousedown; |
507 mousedown.set_button(protocol::MouseEvent::BUTTON_LEFT); | 504 mousedown.set_button(protocol::MouseEvent::BUTTON_LEFT); |
508 mousedown.set_button_down(true); | 505 mousedown.set_button_down(true); |
509 | 506 |
510 Expectation authenticated = | 507 Expectation authenticated = |
511 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)) | 508 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)); |
512 .WillOnce(Return(true)); | |
513 EXPECT_CALL(*input_injector_, StartPtr(_)).After(authenticated); | 509 EXPECT_CALL(*input_injector_, StartPtr(_)).After(authenticated); |
514 EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_)) | 510 EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_)) |
515 .After(authenticated); | 511 .After(authenticated); |
516 | 512 |
517 // Wait for the first video packet to be captured to make sure that | 513 // Wait for the first video packet to be captured to make sure that |
518 // the injected input will go though. Otherwise mouse events will be blocked | 514 // the injected input will go though. Otherwise mouse events will be blocked |
519 // by the mouse clamping filter. | 515 // by the mouse clamping filter. |
520 Sequence s; | 516 Sequence s; |
521 EXPECT_CALL(video_stub_, ProcessVideoPacketPtr(_, _)) | 517 EXPECT_CALL(video_stub_, ProcessVideoPacketPtr(_, _)) |
522 .InSequence(s) | 518 .InSequence(s) |
(...skipping 19 matching lines...) Expand all Loading... |
542 .InSequence(s); | 538 .InSequence(s); |
543 EXPECT_CALL(session_event_handler_, OnSessionClosed(_)).InSequence(s); | 539 EXPECT_CALL(session_event_handler_, OnSessionClosed(_)).InSequence(s); |
544 | 540 |
545 ConnectClientSession(); | 541 ConnectClientSession(); |
546 } | 542 } |
547 | 543 |
548 TEST_F(ClientSessionTest, ClampMouseEvents) { | 544 TEST_F(ClientSessionTest, ClampMouseEvents) { |
549 CreateClientSession(); | 545 CreateClientSession(); |
550 | 546 |
551 Expectation authenticated = | 547 Expectation authenticated = |
552 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)) | 548 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)); |
553 .WillOnce(Return(true)); | |
554 EXPECT_CALL(*input_injector_, StartPtr(_)).After(authenticated); | 549 EXPECT_CALL(*input_injector_, StartPtr(_)).After(authenticated); |
555 EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_)) | 550 EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_)) |
556 .After(authenticated); | 551 .After(authenticated); |
557 EXPECT_CALL(session_event_handler_, OnSessionClosed(_)).After(authenticated); | 552 EXPECT_CALL(session_event_handler_, OnSessionClosed(_)).After(authenticated); |
558 | 553 |
559 Expectation connected = authenticated; | 554 Expectation connected = authenticated; |
560 | 555 |
561 int input_x[3] = { -999, 100, 999 }; | 556 int input_x[3] = { -999, 100, 999 }; |
562 int expected_x[3] = { 0, 100, FakeDesktopCapturer::kWidth - 1 }; | 557 int expected_x[3] = { 0, 100, FakeDesktopCapturer::kWidth - 1 }; |
563 int input_y[3] = { -999, 50, 999 }; | 558 int input_y[3] = { -999, 50, 999 }; |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
604 } | 599 } |
605 | 600 |
606 TEST_F(ClientSessionTest, NoGnubbyAuth) { | 601 TEST_F(ClientSessionTest, NoGnubbyAuth) { |
607 CreateClientSession(); | 602 CreateClientSession(); |
608 | 603 |
609 protocol::ExtensionMessage message; | 604 protocol::ExtensionMessage message; |
610 message.set_type("gnubby-auth"); | 605 message.set_type("gnubby-auth"); |
611 message.set_data("test"); | 606 message.set_data("test"); |
612 | 607 |
613 Expectation authenticated = | 608 Expectation authenticated = |
614 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)) | 609 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)); |
615 .WillOnce(Return(true)); | |
616 EXPECT_CALL(*input_injector_, StartPtr(_)).After(authenticated); | 610 EXPECT_CALL(*input_injector_, StartPtr(_)).After(authenticated); |
617 EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_)) | 611 EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_)) |
618 .After(authenticated) | 612 .After(authenticated) |
619 .WillOnce(DoAll( | 613 .WillOnce(DoAll( |
620 DeliverClientMessage(client_session_.get(), message), | 614 DeliverClientMessage(client_session_.get(), message), |
621 InvokeWithoutArgs(this, &ClientSessionTest::DisconnectClientSession), | 615 InvokeWithoutArgs(this, &ClientSessionTest::DisconnectClientSession), |
622 InvokeWithoutArgs(this, &ClientSessionTest::StopClientSession))); | 616 InvokeWithoutArgs(this, &ClientSessionTest::StopClientSession))); |
623 EXPECT_CALL(session_event_handler_, OnSessionClosed(_)); | 617 EXPECT_CALL(session_event_handler_, OnSessionClosed(_)); |
624 | 618 |
625 ConnectClientSession(); | 619 ConnectClientSession(); |
626 } | 620 } |
627 | 621 |
628 TEST_F(ClientSessionTest, EnableGnubbyAuth) { | 622 TEST_F(ClientSessionTest, EnableGnubbyAuth) { |
629 CreateClientSession(); | 623 CreateClientSession(); |
630 | 624 |
631 // Lifetime controlled by object under test. | 625 // Lifetime controlled by object under test. |
632 MockGnubbyAuthHandler* gnubby_auth_handler = new MockGnubbyAuthHandler(); | 626 MockGnubbyAuthHandler* gnubby_auth_handler = new MockGnubbyAuthHandler(); |
633 | 627 |
634 protocol::ExtensionMessage message; | 628 protocol::ExtensionMessage message; |
635 message.set_type("gnubby-auth"); | 629 message.set_type("gnubby-auth"); |
636 message.set_data("test"); | 630 message.set_data("test"); |
637 | 631 |
638 Expectation authenticated = | 632 Expectation authenticated = |
639 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)) | 633 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)); |
640 .WillOnce(Return(true)); | |
641 EXPECT_CALL(*input_injector_, StartPtr(_)).After(authenticated); | 634 EXPECT_CALL(*input_injector_, StartPtr(_)).After(authenticated); |
642 EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_)) | 635 EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_)) |
643 .After(authenticated) | 636 .After(authenticated) |
644 .WillOnce(DoAll( | 637 .WillOnce(DoAll( |
645 SetGnubbyAuthHandlerForTesting(client_session_.get(), | 638 SetGnubbyAuthHandlerForTesting(client_session_.get(), |
646 gnubby_auth_handler), | 639 gnubby_auth_handler), |
647 DeliverClientMessage(client_session_.get(), message), | 640 DeliverClientMessage(client_session_.get(), message), |
648 InvokeWithoutArgs(this, &ClientSessionTest::DisconnectClientSession), | 641 InvokeWithoutArgs(this, &ClientSessionTest::DisconnectClientSession), |
649 InvokeWithoutArgs(this, &ClientSessionTest::StopClientSession))); | 642 InvokeWithoutArgs(this, &ClientSessionTest::StopClientSession))); |
650 EXPECT_CALL(*gnubby_auth_handler, DeliverClientMessage(_)); | 643 EXPECT_CALL(*gnubby_auth_handler, DeliverClientMessage(_)); |
651 EXPECT_CALL(session_event_handler_, OnSessionClosed(_)); | 644 EXPECT_CALL(session_event_handler_, OnSessionClosed(_)); |
652 | 645 |
653 ConnectClientSession(); | 646 ConnectClientSession(); |
654 } | 647 } |
655 | 648 |
656 // Verifies that the client's video pipeline can be reset mid-session. | 649 // Verifies that the client's video pipeline can be reset mid-session. |
657 TEST_F(ClientSessionTest, ResetVideoPipeline) { | 650 TEST_F(ClientSessionTest, ResetVideoPipeline) { |
658 CreateClientSession(); | 651 CreateClientSession(); |
659 | 652 |
660 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)) | 653 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)); |
661 .WillOnce(Return(true)); | |
662 | 654 |
663 EXPECT_CALL(video_stub_, ProcessVideoPacketPtr(_, _)) | 655 EXPECT_CALL(video_stub_, ProcessVideoPacketPtr(_, _)) |
664 .WillOnce(DoAll( | 656 .WillOnce(DoAll( |
665 InvokeWithoutArgs(this, &ClientSessionTest::DisconnectClientSession), | 657 InvokeWithoutArgs(this, &ClientSessionTest::DisconnectClientSession), |
666 InvokeWithoutArgs(this, &ClientSessionTest::StopClientSession))); | 658 InvokeWithoutArgs(this, &ClientSessionTest::StopClientSession))); |
667 | 659 |
668 ConnectClientSession(); | 660 ConnectClientSession(); |
669 | 661 |
670 client_session_->ResetVideoPipeline(); | 662 client_session_->ResetVideoPipeline(); |
671 } | 663 } |
(...skipping 10 matching lines...) Expand all Loading... |
682 extensions_.push_back(&extension2); | 674 extensions_.push_back(&extension2); |
683 FakeExtension extension3("ext3", "cap3"); | 675 FakeExtension extension3("ext3", "cap3"); |
684 extensions_.push_back(&extension3); | 676 extensions_.push_back(&extension3); |
685 | 677 |
686 // Set the second extension to request to modify the video pipeline. | 678 // Set the second extension to request to modify the video pipeline. |
687 extension2.set_steal_video_capturer(true); | 679 extension2.set_steal_video_capturer(true); |
688 | 680 |
689 CreateClientSession(); | 681 CreateClientSession(); |
690 | 682 |
691 Expectation authenticated = | 683 Expectation authenticated = |
692 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)) | 684 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)); |
693 .WillOnce(Return(true)); | |
694 | 685 |
695 // Verify that the ClientSession reports the correct capabilities, and mimic | 686 // Verify that the ClientSession reports the correct capabilities, and mimic |
696 // the client reporting an overlapping set of capabilities. | 687 // the client reporting an overlapping set of capabilities. |
697 EXPECT_CALL(client_stub_, | 688 EXPECT_CALL(client_stub_, |
698 SetCapabilities(EqCapabilities("cap1 cap3 default"))) | 689 SetCapabilities(EqCapabilities("cap1 cap3 default"))) |
699 .After(authenticated) | 690 .After(authenticated) |
700 .WillOnce(SetCapabilities(client_session_.get(), "cap1 cap4 default")); | 691 .WillOnce(SetCapabilities(client_session_.get(), "cap1 cap4 default")); |
701 | 692 |
702 // Verify that the correct extension messages are delivered, and dropped. | 693 // Verify that the correct extension messages are delivered, and dropped. |
703 protocol::ExtensionMessage message1; | 694 protocol::ExtensionMessage message1; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
738 // Verifies that an extension can "steal" the video capture, in which case no | 729 // Verifies that an extension can "steal" the video capture, in which case no |
739 // VideoFramePump is instantiated. | 730 // VideoFramePump is instantiated. |
740 TEST_F(ClientSessionTest, StealVideoCapturer) { | 731 TEST_F(ClientSessionTest, StealVideoCapturer) { |
741 FakeExtension extension("ext1", "cap1"); | 732 FakeExtension extension("ext1", "cap1"); |
742 extensions_.push_back(&extension); | 733 extensions_.push_back(&extension); |
743 | 734 |
744 CreateClientSession(); | 735 CreateClientSession(); |
745 | 736 |
746 SetMatchCapabilitiesExpectation(); | 737 SetMatchCapabilitiesExpectation(); |
747 | 738 |
748 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)) | 739 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)); |
749 .WillOnce(Return(true)); | |
750 | 740 |
751 ConnectClientSession(); | 741 ConnectClientSession(); |
752 | 742 |
753 base::RunLoop().RunUntilIdle(); | 743 base::RunLoop().RunUntilIdle(); |
754 | 744 |
755 extension.set_steal_video_capturer(true); | 745 extension.set_steal_video_capturer(true); |
756 client_session_->ResetVideoPipeline(); | 746 client_session_->ResetVideoPipeline(); |
757 | 747 |
758 base::RunLoop().RunUntilIdle(); | 748 base::RunLoop().RunUntilIdle(); |
759 | 749 |
(...skipping 10 matching lines...) Expand all Loading... |
770 | 760 |
771 DisconnectClientSession(); | 761 DisconnectClientSession(); |
772 StopClientSession(); | 762 StopClientSession(); |
773 | 763 |
774 // ext1 was instantiated and wrapped the video capturer. | 764 // ext1 was instantiated and wrapped the video capturer. |
775 EXPECT_TRUE(extension.was_instantiated()); | 765 EXPECT_TRUE(extension.was_instantiated()); |
776 EXPECT_TRUE(extension.has_wrapped_video_capturer()); | 766 EXPECT_TRUE(extension.has_wrapped_video_capturer()); |
777 } | 767 } |
778 | 768 |
779 } // namespace remoting | 769 } // namespace remoting |
OLD | NEW |