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

Side by Side Diff: jingle/glue/chrome_async_socket_unittest.cc

Issue 354673005: Revert "[Mac] Reland r276808 Use a native MessagePump instead of a MessagePumpDefault" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 6 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 (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 "jingle/glue/chrome_async_socket.h" 5 #include "jingle/glue/chrome_async_socket.h"
6 6
7 #include <deque> 7 #include <deque>
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "base/message_loop/message_loop.h" 13 #include "base/message_loop/message_loop.h"
14 #include "base/message_loop/message_pump_default.h"
15 #include "jingle/glue/resolving_client_socket_factory.h" 14 #include "jingle/glue/resolving_client_socket_factory.h"
16 #include "net/base/address_list.h" 15 #include "net/base/address_list.h"
17 #include "net/base/net_errors.h" 16 #include "net/base/net_errors.h"
18 #include "net/base/net_util.h" 17 #include "net/base/net_util.h"
19 #include "net/cert/mock_cert_verifier.h" 18 #include "net/cert/mock_cert_verifier.h"
20 #include "net/http/transport_security_state.h" 19 #include "net/http/transport_security_state.h"
21 #include "net/socket/socket_test_util.h" 20 #include "net/socket/socket_test_util.h"
22 #include "net/socket/ssl_client_socket.h" 21 #include "net/socket/ssl_client_socket.h"
23 #include "net/ssl/ssl_config_service.h" 22 #include "net/ssl/ssl_config_service.h"
24 #include "net/url_request/url_request_context_getter.h" 23 #include "net/url_request/url_request_context_getter.h"
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 scoped_ptr<net::CertVerifier> cert_verifier_; 136 scoped_ptr<net::CertVerifier> cert_verifier_;
138 scoped_ptr<net::TransportSecurityState> transport_security_state_; 137 scoped_ptr<net::TransportSecurityState> transport_security_state_;
139 }; 138 };
140 139
141 class ChromeAsyncSocketTest 140 class ChromeAsyncSocketTest
142 : public testing::Test, 141 : public testing::Test,
143 public sigslot::has_slots<> { 142 public sigslot::has_slots<> {
144 protected: 143 protected:
145 ChromeAsyncSocketTest() 144 ChromeAsyncSocketTest()
146 : ssl_socket_data_provider_(net::ASYNC, net::OK), 145 : ssl_socket_data_provider_(net::ASYNC, net::OK),
147 addr_("localhost", 35) { 146 addr_("localhost", 35) {}
148 // GTest death tests execute in a fork()ed but not exec()ed process.
149 // On OS X a CoreFoundation-backed message loop will exit with a
150 // __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONA LITY___YOU_MUST_EXEC__
151 // when called.
152 // Explicitly create a MessagePumpDefault which can run in this enivronment.
153 scoped_ptr<base::MessagePump> pump(new base::MessagePumpDefault());
154 message_loop_.reset(new base::MessageLoop(pump.Pass()));
155 }
156 147
157 virtual ~ChromeAsyncSocketTest() {} 148 virtual ~ChromeAsyncSocketTest() {}
158 149
159 virtual void SetUp() { 150 virtual void SetUp() {
160 scoped_ptr<net::MockClientSocketFactory> mock_client_socket_factory( 151 scoped_ptr<net::MockClientSocketFactory> mock_client_socket_factory(
161 new net::MockClientSocketFactory()); 152 new net::MockClientSocketFactory());
162 mock_client_socket_factory->AddSocketDataProvider( 153 mock_client_socket_factory->AddSocketDataProvider(
163 &async_socket_data_provider_); 154 &async_socket_data_provider_);
164 mock_client_socket_factory->AddSSLSocketDataProvider( 155 mock_client_socket_factory->AddSSLSocketDataProvider(
165 &ssl_socket_data_provider_); 156 &ssl_socket_data_provider_);
(...skipping 18 matching lines...) Expand all
184 chrome_async_socket_->SignalClosed.connect( 175 chrome_async_socket_->SignalClosed.connect(
185 this, &ChromeAsyncSocketTest::OnClose); 176 this, &ChromeAsyncSocketTest::OnClose);
186 chrome_async_socket_->SignalRead.connect( 177 chrome_async_socket_->SignalRead.connect(
187 this, &ChromeAsyncSocketTest::OnRead); 178 this, &ChromeAsyncSocketTest::OnRead);
188 chrome_async_socket_->SignalError.connect( 179 chrome_async_socket_->SignalError.connect(
189 this, &ChromeAsyncSocketTest::OnError); 180 this, &ChromeAsyncSocketTest::OnError);
190 } 181 }
191 182
192 virtual void TearDown() { 183 virtual void TearDown() {
193 // Run any tasks that we forgot to pump. 184 // Run any tasks that we forgot to pump.
194 message_loop_->RunUntilIdle(); 185 message_loop_.RunUntilIdle();
195 ExpectClosed(); 186 ExpectClosed();
196 ExpectNoSignal(); 187 ExpectNoSignal();
197 chrome_async_socket_.reset(); 188 chrome_async_socket_.reset();
198 } 189 }
199 190
200 enum Signal { 191 enum Signal {
201 SIGNAL_CONNECT, 192 SIGNAL_CONNECT,
202 SIGNAL_SSL_CONNECT, 193 SIGNAL_SSL_CONNECT,
203 SIGNAL_CLOSE, 194 SIGNAL_CLOSE,
204 SIGNAL_READ, 195 SIGNAL_READ,
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 335
345 // Open/close utility functions. 336 // Open/close utility functions.
346 337
347 void DoOpenClosed() { 338 void DoOpenClosed() {
348 ExpectClosed(); 339 ExpectClosed();
349 async_socket_data_provider_.set_connect_data( 340 async_socket_data_provider_.set_connect_data(
350 net::MockConnect(net::SYNCHRONOUS, net::OK)); 341 net::MockConnect(net::SYNCHRONOUS, net::OK));
351 EXPECT_TRUE(chrome_async_socket_->Connect(addr_)); 342 EXPECT_TRUE(chrome_async_socket_->Connect(addr_));
352 ExpectNonErrorState(ChromeAsyncSocket::STATE_CONNECTING); 343 ExpectNonErrorState(ChromeAsyncSocket::STATE_CONNECTING);
353 344
354 message_loop_->RunUntilIdle(); 345 message_loop_.RunUntilIdle();
355 // We may not necessarily be open; may have been other events 346 // We may not necessarily be open; may have been other events
356 // queued up. 347 // queued up.
357 ExpectSignalSocketState( 348 ExpectSignalSocketState(
358 SignalSocketState::NoError( 349 SignalSocketState::NoError(
359 SIGNAL_CONNECT, ChromeAsyncSocket::STATE_OPEN)); 350 SIGNAL_CONNECT, ChromeAsyncSocket::STATE_OPEN));
360 } 351 }
361 352
362 void DoCloseOpened(SignalSocketState expected_signal_socket_state) { 353 void DoCloseOpened(SignalSocketState expected_signal_socket_state) {
363 // We may be in an error state, so just compare state(). 354 // We may be in an error state, so just compare state().
364 EXPECT_EQ(ChromeAsyncSocket::STATE_OPEN, chrome_async_socket_->state()); 355 EXPECT_EQ(ChromeAsyncSocket::STATE_OPEN, chrome_async_socket_->state());
365 EXPECT_TRUE(chrome_async_socket_->Close()); 356 EXPECT_TRUE(chrome_async_socket_->Close());
366 ExpectSignalSocketState(expected_signal_socket_state); 357 ExpectSignalSocketState(expected_signal_socket_state);
367 ExpectNonErrorState(ChromeAsyncSocket::STATE_CLOSED); 358 ExpectNonErrorState(ChromeAsyncSocket::STATE_CLOSED);
368 } 359 }
369 360
370 void DoCloseOpenedNoError() { 361 void DoCloseOpenedNoError() {
371 DoCloseOpened( 362 DoCloseOpened(
372 SignalSocketState::NoError( 363 SignalSocketState::NoError(
373 SIGNAL_CLOSE, ChromeAsyncSocket::STATE_CLOSED)); 364 SIGNAL_CLOSE, ChromeAsyncSocket::STATE_CLOSED));
374 } 365 }
375 366
376 void DoSSLOpenClosed() { 367 void DoSSLOpenClosed() {
377 const char kDummyData[] = "dummy_data"; 368 const char kDummyData[] = "dummy_data";
378 async_socket_data_provider_.AddRead(net::MockRead(kDummyData)); 369 async_socket_data_provider_.AddRead(net::MockRead(kDummyData));
379 DoOpenClosed(); 370 DoOpenClosed();
380 ExpectReadSignal(); 371 ExpectReadSignal();
381 EXPECT_EQ(kDummyData, DrainRead(1)); 372 EXPECT_EQ(kDummyData, DrainRead(1));
382 373
383 EXPECT_TRUE(chrome_async_socket_->StartTls("fakedomain.com")); 374 EXPECT_TRUE(chrome_async_socket_->StartTls("fakedomain.com"));
384 message_loop_->RunUntilIdle(); 375 message_loop_.RunUntilIdle();
385 ExpectSSLConnectSignal(); 376 ExpectSSLConnectSignal();
386 ExpectNoSignal(); 377 ExpectNoSignal();
387 ExpectNonErrorState(ChromeAsyncSocket::STATE_TLS_OPEN); 378 ExpectNonErrorState(ChromeAsyncSocket::STATE_TLS_OPEN);
388 } 379 }
389 380
390 void DoSSLCloseOpened(SignalSocketState expected_signal_socket_state) { 381 void DoSSLCloseOpened(SignalSocketState expected_signal_socket_state) {
391 // We may be in an error state, so just compare state(). 382 // We may be in an error state, so just compare state().
392 EXPECT_EQ(ChromeAsyncSocket::STATE_TLS_OPEN, 383 EXPECT_EQ(ChromeAsyncSocket::STATE_TLS_OPEN,
393 chrome_async_socket_->state()); 384 chrome_async_socket_->state());
394 EXPECT_TRUE(chrome_async_socket_->Close()); 385 EXPECT_TRUE(chrome_async_socket_->Close());
(...skipping 22 matching lines...) Expand all
417 } 408 }
418 if (len_read == 0U) { 409 if (len_read == 0U) {
419 break; 410 break;
420 } 411 }
421 read.append(buf.get(), len_read); 412 read.append(buf.get(), len_read);
422 } 413 }
423 return read; 414 return read;
424 } 415 }
425 416
426 // ChromeAsyncSocket expects a message loop. 417 // ChromeAsyncSocket expects a message loop.
427 scoped_ptr<base::MessageLoop> message_loop_; 418 base::MessageLoop message_loop_;
428 419
429 AsyncSocketDataProvider async_socket_data_provider_; 420 AsyncSocketDataProvider async_socket_data_provider_;
430 net::SSLSocketDataProvider ssl_socket_data_provider_; 421 net::SSLSocketDataProvider ssl_socket_data_provider_;
431 422
432 scoped_ptr<ChromeAsyncSocket> chrome_async_socket_; 423 scoped_ptr<ChromeAsyncSocket> chrome_async_socket_;
433 std::deque<SignalSocketState> signal_socket_states_; 424 std::deque<SignalSocketState> signal_socket_states_;
434 const talk_base::SocketAddress addr_; 425 const talk_base::SocketAddress addr_;
435 426
436 private: 427 private:
437 DISALLOW_COPY_AND_ASSIGN(ChromeAsyncSocketTest); 428 DISALLOW_COPY_AND_ASSIGN(ChromeAsyncSocketTest);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 503
513 TEST_F(ChromeAsyncSocketTest, ImmediateConnectCloseBeforeRead) { 504 TEST_F(ChromeAsyncSocketTest, ImmediateConnectCloseBeforeRead) {
514 DoOpenClosed(); 505 DoOpenClosed();
515 506
516 EXPECT_TRUE(chrome_async_socket_->Close()); 507 EXPECT_TRUE(chrome_async_socket_->Close());
517 ExpectClosed(); 508 ExpectClosed();
518 ExpectSignalSocketState( 509 ExpectSignalSocketState(
519 SignalSocketState::NoError( 510 SignalSocketState::NoError(
520 SIGNAL_CLOSE, ChromeAsyncSocket::STATE_CLOSED)); 511 SIGNAL_CLOSE, ChromeAsyncSocket::STATE_CLOSED));
521 512
522 message_loop_->RunUntilIdle(); 513 message_loop_.RunUntilIdle();
523 } 514 }
524 515
525 TEST_F(ChromeAsyncSocketTest, HangingConnect) { 516 TEST_F(ChromeAsyncSocketTest, HangingConnect) {
526 EXPECT_TRUE(chrome_async_socket_->Connect(addr_)); 517 EXPECT_TRUE(chrome_async_socket_->Connect(addr_));
527 ExpectNonErrorState(ChromeAsyncSocket::STATE_CONNECTING); 518 ExpectNonErrorState(ChromeAsyncSocket::STATE_CONNECTING);
528 ExpectNoSignal(); 519 ExpectNoSignal();
529 520
530 EXPECT_TRUE(chrome_async_socket_->Close()); 521 EXPECT_TRUE(chrome_async_socket_->Close());
531 ExpectClosed(); 522 ExpectClosed();
532 ExpectSignalSocketState( 523 ExpectSignalSocketState(
533 SignalSocketState::NoError( 524 SignalSocketState::NoError(
534 SIGNAL_CLOSE, ChromeAsyncSocket::STATE_CLOSED)); 525 SIGNAL_CLOSE, ChromeAsyncSocket::STATE_CLOSED));
535 } 526 }
536 527
537 TEST_F(ChromeAsyncSocketTest, PendingConnect) { 528 TEST_F(ChromeAsyncSocketTest, PendingConnect) {
538 async_socket_data_provider_.set_connect_data( 529 async_socket_data_provider_.set_connect_data(
539 net::MockConnect(net::ASYNC, net::OK)); 530 net::MockConnect(net::ASYNC, net::OK));
540 EXPECT_TRUE(chrome_async_socket_->Connect(addr_)); 531 EXPECT_TRUE(chrome_async_socket_->Connect(addr_));
541 ExpectNonErrorState(ChromeAsyncSocket::STATE_CONNECTING); 532 ExpectNonErrorState(ChromeAsyncSocket::STATE_CONNECTING);
542 ExpectNoSignal(); 533 ExpectNoSignal();
543 534
544 message_loop_->RunUntilIdle(); 535 message_loop_.RunUntilIdle();
545 ExpectNonErrorState(ChromeAsyncSocket::STATE_OPEN); 536 ExpectNonErrorState(ChromeAsyncSocket::STATE_OPEN);
546 ExpectSignalSocketState( 537 ExpectSignalSocketState(
547 SignalSocketState::NoError( 538 SignalSocketState::NoError(
548 SIGNAL_CONNECT, ChromeAsyncSocket::STATE_OPEN)); 539 SIGNAL_CONNECT, ChromeAsyncSocket::STATE_OPEN));
549 ExpectNoSignal(); 540 ExpectNoSignal();
550 541
551 message_loop_->RunUntilIdle(); 542 message_loop_.RunUntilIdle();
552 543
553 DoCloseOpenedNoError(); 544 DoCloseOpenedNoError();
554 } 545 }
555 546
556 // After this no need to test successful pending connect so 547 // After this no need to test successful pending connect so
557 // thoroughly. 548 // thoroughly.
558 549
559 TEST_F(ChromeAsyncSocketTest, PendingConnectCloseBeforeRead) { 550 TEST_F(ChromeAsyncSocketTest, PendingConnectCloseBeforeRead) {
560 async_socket_data_provider_.set_connect_data( 551 async_socket_data_provider_.set_connect_data(
561 net::MockConnect(net::ASYNC, net::OK)); 552 net::MockConnect(net::ASYNC, net::OK));
562 EXPECT_TRUE(chrome_async_socket_->Connect(addr_)); 553 EXPECT_TRUE(chrome_async_socket_->Connect(addr_));
563 554
564 message_loop_->RunUntilIdle(); 555 message_loop_.RunUntilIdle();
565 ExpectSignalSocketState( 556 ExpectSignalSocketState(
566 SignalSocketState::NoError( 557 SignalSocketState::NoError(
567 SIGNAL_CONNECT, ChromeAsyncSocket::STATE_OPEN)); 558 SIGNAL_CONNECT, ChromeAsyncSocket::STATE_OPEN));
568 559
569 DoCloseOpenedNoError(); 560 DoCloseOpenedNoError();
570 561
571 message_loop_->RunUntilIdle(); 562 message_loop_.RunUntilIdle();
572 } 563 }
573 564
574 TEST_F(ChromeAsyncSocketTest, PendingConnectError) { 565 TEST_F(ChromeAsyncSocketTest, PendingConnectError) {
575 async_socket_data_provider_.set_connect_data( 566 async_socket_data_provider_.set_connect_data(
576 net::MockConnect(net::ASYNC, net::ERR_TIMED_OUT)); 567 net::MockConnect(net::ASYNC, net::ERR_TIMED_OUT));
577 EXPECT_TRUE(chrome_async_socket_->Connect(addr_)); 568 EXPECT_TRUE(chrome_async_socket_->Connect(addr_));
578 569
579 message_loop_->RunUntilIdle(); 570 message_loop_.RunUntilIdle();
580 571
581 ExpectSignalSocketState( 572 ExpectSignalSocketState(
582 SignalSocketState( 573 SignalSocketState(
583 SIGNAL_CLOSE, ChromeAsyncSocket::STATE_CLOSED, 574 SIGNAL_CLOSE, ChromeAsyncSocket::STATE_CLOSED,
584 ChromeAsyncSocket::ERROR_WINSOCK, net::ERR_TIMED_OUT)); 575 ChromeAsyncSocket::ERROR_WINSOCK, net::ERR_TIMED_OUT));
585 } 576 }
586 577
587 // After this we can assume Connect() and Close() work as expected. 578 // After this we can assume Connect() and Close() work as expected.
588 579
589 TEST_F(ChromeAsyncSocketTest, EmptyRead) { 580 TEST_F(ChromeAsyncSocketTest, EmptyRead) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 622
632 TEST_F(ChromeAsyncSocketTest, Read) { 623 TEST_F(ChromeAsyncSocketTest, Read) {
633 async_socket_data_provider_.AddRead(net::MockRead(kReadData)); 624 async_socket_data_provider_.AddRead(net::MockRead(kReadData));
634 DoOpenClosed(); 625 DoOpenClosed();
635 626
636 ExpectReadSignal(); 627 ExpectReadSignal();
637 ExpectNoSignal(); 628 ExpectNoSignal();
638 629
639 EXPECT_EQ(kReadData, DrainRead(1)); 630 EXPECT_EQ(kReadData, DrainRead(1));
640 631
641 message_loop_->RunUntilIdle(); 632 message_loop_.RunUntilIdle();
642 633
643 DoCloseOpenedNoError(); 634 DoCloseOpenedNoError();
644 } 635 }
645 636
646 TEST_F(ChromeAsyncSocketTest, ReadTwice) { 637 TEST_F(ChromeAsyncSocketTest, ReadTwice) {
647 async_socket_data_provider_.AddRead(net::MockRead(kReadData)); 638 async_socket_data_provider_.AddRead(net::MockRead(kReadData));
648 DoOpenClosed(); 639 DoOpenClosed();
649 640
650 ExpectReadSignal(); 641 ExpectReadSignal();
651 ExpectNoSignal(); 642 ExpectNoSignal();
652 643
653 EXPECT_EQ(kReadData, DrainRead(1)); 644 EXPECT_EQ(kReadData, DrainRead(1));
654 645
655 message_loop_->RunUntilIdle(); 646 message_loop_.RunUntilIdle();
656 647
657 const char kReadData2[] = "mydatatoread2"; 648 const char kReadData2[] = "mydatatoread2";
658 async_socket_data_provider_.AddRead(net::MockRead(kReadData2)); 649 async_socket_data_provider_.AddRead(net::MockRead(kReadData2));
659 650
660 ExpectReadSignal(); 651 ExpectReadSignal();
661 ExpectNoSignal(); 652 ExpectNoSignal();
662 653
663 EXPECT_EQ(kReadData2, DrainRead(1)); 654 EXPECT_EQ(kReadData2, DrainRead(1));
664 655
665 DoCloseOpenedNoError(); 656 DoCloseOpenedNoError();
666 } 657 }
667 658
668 TEST_F(ChromeAsyncSocketTest, ReadError) { 659 TEST_F(ChromeAsyncSocketTest, ReadError) {
669 async_socket_data_provider_.AddRead(net::MockRead(kReadData)); 660 async_socket_data_provider_.AddRead(net::MockRead(kReadData));
670 DoOpenClosed(); 661 DoOpenClosed();
671 662
672 ExpectReadSignal(); 663 ExpectReadSignal();
673 ExpectNoSignal(); 664 ExpectNoSignal();
674 665
675 EXPECT_EQ(kReadData, DrainRead(1)); 666 EXPECT_EQ(kReadData, DrainRead(1));
676 667
677 message_loop_->RunUntilIdle(); 668 message_loop_.RunUntilIdle();
678 669
679 async_socket_data_provider_.AddRead( 670 async_socket_data_provider_.AddRead(
680 net::MockRead(net::SYNCHRONOUS, net::ERR_TIMED_OUT)); 671 net::MockRead(net::SYNCHRONOUS, net::ERR_TIMED_OUT));
681 672
682 ExpectSignalSocketState( 673 ExpectSignalSocketState(
683 SignalSocketState( 674 SignalSocketState(
684 SIGNAL_CLOSE, ChromeAsyncSocket::STATE_CLOSED, 675 SIGNAL_CLOSE, ChromeAsyncSocket::STATE_CLOSED,
685 ChromeAsyncSocket::ERROR_WINSOCK, net::ERR_TIMED_OUT)); 676 ChromeAsyncSocket::ERROR_WINSOCK, net::ERR_TIMED_OUT));
686 } 677 }
687 678
(...skipping 13 matching lines...) Expand all
701 692
702 async_socket_data_provider_.AddRead(net::MockRead(kReadData)); 693 async_socket_data_provider_.AddRead(net::MockRead(kReadData));
703 694
704 ExpectSignalSocketState( 695 ExpectSignalSocketState(
705 SignalSocketState::NoError( 696 SignalSocketState::NoError(
706 SIGNAL_READ, ChromeAsyncSocket::STATE_OPEN)); 697 SIGNAL_READ, ChromeAsyncSocket::STATE_OPEN));
707 ExpectNoSignal(); 698 ExpectNoSignal();
708 699
709 EXPECT_EQ(kReadData, DrainRead(1)); 700 EXPECT_EQ(kReadData, DrainRead(1));
710 701
711 message_loop_->RunUntilIdle(); 702 message_loop_.RunUntilIdle();
712 703
713 DoCloseOpenedNoError(); 704 DoCloseOpenedNoError();
714 } 705 }
715 706
716 TEST_F(ChromeAsyncSocketTest, PendingEmptyRead) { 707 TEST_F(ChromeAsyncSocketTest, PendingEmptyRead) {
717 DoOpenClosed(); 708 DoOpenClosed();
718 709
719 ExpectNoSignal(); 710 ExpectNoSignal();
720 711
721 async_socket_data_provider_.AddRead(net::MockRead("")); 712 async_socket_data_provider_.AddRead(net::MockRead(""));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
757 async_socket_data_provider_.AddWrite( 748 async_socket_data_provider_.AddWrite(
758 net::MockWrite(net::SYNCHRONOUS, kWriteData, 3)); 749 net::MockWrite(net::SYNCHRONOUS, kWriteData, 3));
759 async_socket_data_provider_.AddWrite( 750 async_socket_data_provider_.AddWrite(
760 net::MockWrite(net::SYNCHRONOUS, kWriteData + 3, 5)); 751 net::MockWrite(net::SYNCHRONOUS, kWriteData + 3, 5));
761 async_socket_data_provider_.AddWrite( 752 async_socket_data_provider_.AddWrite(
762 net::MockWrite(net::SYNCHRONOUS, 753 net::MockWrite(net::SYNCHRONOUS,
763 kWriteData + 8, arraysize(kWriteData) - 8)); 754 kWriteData + 8, arraysize(kWriteData) - 8));
764 DoOpenClosed(); 755 DoOpenClosed();
765 756
766 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData, 3)); 757 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData, 3));
767 message_loop_->RunUntilIdle(); 758 message_loop_.RunUntilIdle();
768 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 3, 5)); 759 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 3, 5));
769 message_loop_->RunUntilIdle(); 760 message_loop_.RunUntilIdle();
770 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 8, 761 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 8,
771 arraysize(kWriteData) - 8)); 762 arraysize(kWriteData) - 8));
772 message_loop_->RunUntilIdle(); 763 message_loop_.RunUntilIdle();
773 764
774 ExpectNoSignal(); 765 ExpectNoSignal();
775 766
776 DoCloseOpenedNoError(); 767 DoCloseOpenedNoError();
777 } 768 }
778 769
779 TEST_F(ChromeAsyncSocketTest, AsyncWrite) { 770 TEST_F(ChromeAsyncSocketTest, AsyncWrite) {
780 DoOpenClosed(); 771 DoOpenClosed();
781 772
782 async_socket_data_provider_.AddWrite( 773 async_socket_data_provider_.AddWrite(
783 net::MockWrite(net::ASYNC, kWriteData, 3)); 774 net::MockWrite(net::ASYNC, kWriteData, 3));
784 async_socket_data_provider_.AddWrite( 775 async_socket_data_provider_.AddWrite(
785 net::MockWrite(net::ASYNC, kWriteData + 3, 5)); 776 net::MockWrite(net::ASYNC, kWriteData + 3, 5));
786 async_socket_data_provider_.AddWrite( 777 async_socket_data_provider_.AddWrite(
787 net::MockWrite(net::ASYNC, kWriteData + 8, arraysize(kWriteData) - 8)); 778 net::MockWrite(net::ASYNC, kWriteData + 8, arraysize(kWriteData) - 8));
788 779
789 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData, 3)); 780 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData, 3));
790 message_loop_->RunUntilIdle(); 781 message_loop_.RunUntilIdle();
791 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 3, 5)); 782 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 3, 5));
792 message_loop_->RunUntilIdle(); 783 message_loop_.RunUntilIdle();
793 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 8, 784 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 8,
794 arraysize(kWriteData) - 8)); 785 arraysize(kWriteData) - 8));
795 message_loop_->RunUntilIdle(); 786 message_loop_.RunUntilIdle();
796 787
797 ExpectNoSignal(); 788 ExpectNoSignal();
798 789
799 DoCloseOpenedNoError(); 790 DoCloseOpenedNoError();
800 } 791 }
801 792
802 TEST_F(ChromeAsyncSocketTest, AsyncWriteError) { 793 TEST_F(ChromeAsyncSocketTest, AsyncWriteError) {
803 DoOpenClosed(); 794 DoOpenClosed();
804 795
805 async_socket_data_provider_.AddWrite( 796 async_socket_data_provider_.AddWrite(
806 net::MockWrite(net::ASYNC, kWriteData, 3)); 797 net::MockWrite(net::ASYNC, kWriteData, 3));
807 async_socket_data_provider_.AddWrite( 798 async_socket_data_provider_.AddWrite(
808 net::MockWrite(net::ASYNC, kWriteData + 3, 5)); 799 net::MockWrite(net::ASYNC, kWriteData + 3, 5));
809 async_socket_data_provider_.AddWrite( 800 async_socket_data_provider_.AddWrite(
810 net::MockWrite(net::ASYNC, net::ERR_TIMED_OUT)); 801 net::MockWrite(net::ASYNC, net::ERR_TIMED_OUT));
811 802
812 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData, 3)); 803 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData, 3));
813 message_loop_->RunUntilIdle(); 804 message_loop_.RunUntilIdle();
814 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 3, 5)); 805 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 3, 5));
815 message_loop_->RunUntilIdle(); 806 message_loop_.RunUntilIdle();
816 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 8, 807 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 8,
817 arraysize(kWriteData) - 8)); 808 arraysize(kWriteData) - 8));
818 message_loop_->RunUntilIdle(); 809 message_loop_.RunUntilIdle();
819 810
820 ExpectSignalSocketState( 811 ExpectSignalSocketState(
821 SignalSocketState( 812 SignalSocketState(
822 SIGNAL_CLOSE, ChromeAsyncSocket::STATE_CLOSED, 813 SIGNAL_CLOSE, ChromeAsyncSocket::STATE_CLOSED,
823 ChromeAsyncSocket::ERROR_WINSOCK, net::ERR_TIMED_OUT)); 814 ChromeAsyncSocket::ERROR_WINSOCK, net::ERR_TIMED_OUT));
824 } 815 }
825 816
826 TEST_F(ChromeAsyncSocketTest, LargeWrite) { 817 TEST_F(ChromeAsyncSocketTest, LargeWrite) {
827 EXPECT_DEBUG_DEATH({ 818 EXPECT_DEBUG_DEATH({
828 DoOpenClosed(); 819 DoOpenClosed();
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
876 ChromeAsyncSocket::STATE_CLOSED)); 867 ChromeAsyncSocket::STATE_CLOSED));
877 ExpectNonErrorState(ChromeAsyncSocket::STATE_CLOSED); 868 ExpectNonErrorState(ChromeAsyncSocket::STATE_CLOSED);
878 } 869 }
879 870
880 TEST_F(ChromeAsyncSocketTest, ImmediateSSLConnect) { 871 TEST_F(ChromeAsyncSocketTest, ImmediateSSLConnect) {
881 async_socket_data_provider_.AddRead(net::MockRead(kReadData)); 872 async_socket_data_provider_.AddRead(net::MockRead(kReadData));
882 DoOpenClosed(); 873 DoOpenClosed();
883 ExpectReadSignal(); 874 ExpectReadSignal();
884 875
885 EXPECT_TRUE(chrome_async_socket_->StartTls("fakedomain.com")); 876 EXPECT_TRUE(chrome_async_socket_->StartTls("fakedomain.com"));
886 message_loop_->RunUntilIdle(); 877 message_loop_.RunUntilIdle();
887 ExpectSSLConnectSignal(); 878 ExpectSSLConnectSignal();
888 ExpectNoSignal(); 879 ExpectNoSignal();
889 ExpectNonErrorState(ChromeAsyncSocket::STATE_TLS_OPEN); 880 ExpectNonErrorState(ChromeAsyncSocket::STATE_TLS_OPEN);
890 881
891 DoSSLCloseOpenedNoError(); 882 DoSSLCloseOpenedNoError();
892 } 883 }
893 884
894 TEST_F(ChromeAsyncSocketTest, DoubleSSLConnect) { 885 TEST_F(ChromeAsyncSocketTest, DoubleSSLConnect) {
895 EXPECT_DEBUG_DEATH({ 886 EXPECT_DEBUG_DEATH({
896 async_socket_data_provider_.AddRead(net::MockRead(kReadData)); 887 async_socket_data_provider_.AddRead(net::MockRead(kReadData));
897 DoOpenClosed(); 888 DoOpenClosed();
898 ExpectReadSignal(); 889 ExpectReadSignal();
899 890
900 EXPECT_TRUE(chrome_async_socket_->StartTls("fakedomain.com")); 891 EXPECT_TRUE(chrome_async_socket_->StartTls("fakedomain.com"));
901 message_loop_->RunUntilIdle(); 892 message_loop_.RunUntilIdle();
902 ExpectSSLConnectSignal(); 893 ExpectSSLConnectSignal();
903 ExpectNoSignal(); 894 ExpectNoSignal();
904 ExpectNonErrorState(ChromeAsyncSocket::STATE_TLS_OPEN); 895 ExpectNonErrorState(ChromeAsyncSocket::STATE_TLS_OPEN);
905 896
906 EXPECT_FALSE(chrome_async_socket_->StartTls("fakedomain.com")); 897 EXPECT_FALSE(chrome_async_socket_->StartTls("fakedomain.com"));
907 898
908 DoSSLCloseOpened( 899 DoSSLCloseOpened(
909 SignalSocketState(SIGNAL_CLOSE, 900 SignalSocketState(SIGNAL_CLOSE,
910 ChromeAsyncSocket::STATE_CLOSED, 901 ChromeAsyncSocket::STATE_CLOSED,
911 ChromeAsyncSocket::ERROR_WRONGSTATE, 902 ChromeAsyncSocket::ERROR_WRONGSTATE,
912 net::OK)); 903 net::OK));
913 }, "wrong state"); 904 }, "wrong state");
914 } 905 }
915 906
916 TEST_F(ChromeAsyncSocketTest, FailedSSLConnect) { 907 TEST_F(ChromeAsyncSocketTest, FailedSSLConnect) {
917 ssl_socket_data_provider_.connect = 908 ssl_socket_data_provider_.connect =
918 net::MockConnect(net::ASYNC, net::ERR_CERT_COMMON_NAME_INVALID), 909 net::MockConnect(net::ASYNC, net::ERR_CERT_COMMON_NAME_INVALID),
919 910
920 async_socket_data_provider_.AddRead(net::MockRead(kReadData)); 911 async_socket_data_provider_.AddRead(net::MockRead(kReadData));
921 DoOpenClosed(); 912 DoOpenClosed();
922 ExpectReadSignal(); 913 ExpectReadSignal();
923 914
924 EXPECT_TRUE(chrome_async_socket_->StartTls("fakedomain.com")); 915 EXPECT_TRUE(chrome_async_socket_->StartTls("fakedomain.com"));
925 message_loop_->RunUntilIdle(); 916 message_loop_.RunUntilIdle();
926 ExpectSignalSocketState( 917 ExpectSignalSocketState(
927 SignalSocketState( 918 SignalSocketState(
928 SIGNAL_CLOSE, ChromeAsyncSocket::STATE_CLOSED, 919 SIGNAL_CLOSE, ChromeAsyncSocket::STATE_CLOSED,
929 ChromeAsyncSocket::ERROR_WINSOCK, 920 ChromeAsyncSocket::ERROR_WINSOCK,
930 net::ERR_CERT_COMMON_NAME_INVALID)); 921 net::ERR_CERT_COMMON_NAME_INVALID));
931 922
932 EXPECT_TRUE(chrome_async_socket_->Close()); 923 EXPECT_TRUE(chrome_async_socket_->Close());
933 ExpectClosed(); 924 ExpectClosed();
934 } 925 }
935 926
936 TEST_F(ChromeAsyncSocketTest, ReadDuringSSLConnecting) { 927 TEST_F(ChromeAsyncSocketTest, ReadDuringSSLConnecting) {
937 async_socket_data_provider_.AddRead(net::MockRead(kReadData)); 928 async_socket_data_provider_.AddRead(net::MockRead(kReadData));
938 DoOpenClosed(); 929 DoOpenClosed();
939 ExpectReadSignal(); 930 ExpectReadSignal();
940 EXPECT_EQ(kReadData, DrainRead(1)); 931 EXPECT_EQ(kReadData, DrainRead(1));
941 932
942 EXPECT_TRUE(chrome_async_socket_->StartTls("fakedomain.com")); 933 EXPECT_TRUE(chrome_async_socket_->StartTls("fakedomain.com"));
943 ExpectNoSignal(); 934 ExpectNoSignal();
944 935
945 // Shouldn't do anything. 936 // Shouldn't do anything.
946 async_socket_data_provider_.AddRead(net::MockRead(kReadData)); 937 async_socket_data_provider_.AddRead(net::MockRead(kReadData));
947 938
948 char buf[4096]; 939 char buf[4096];
949 size_t len_read = 10000U; 940 size_t len_read = 10000U;
950 EXPECT_TRUE(chrome_async_socket_->Read(buf, sizeof(buf), &len_read)); 941 EXPECT_TRUE(chrome_async_socket_->Read(buf, sizeof(buf), &len_read));
951 EXPECT_EQ(0U, len_read); 942 EXPECT_EQ(0U, len_read);
952 943
953 message_loop_->RunUntilIdle(); 944 message_loop_.RunUntilIdle();
954 ExpectSSLConnectSignal(); 945 ExpectSSLConnectSignal();
955 ExpectSSLReadSignal(); 946 ExpectSSLReadSignal();
956 ExpectNoSignal(); 947 ExpectNoSignal();
957 ExpectNonErrorState(ChromeAsyncSocket::STATE_TLS_OPEN); 948 ExpectNonErrorState(ChromeAsyncSocket::STATE_TLS_OPEN);
958 949
959 len_read = 10000U; 950 len_read = 10000U;
960 EXPECT_TRUE(chrome_async_socket_->Read(buf, sizeof(buf), &len_read)); 951 EXPECT_TRUE(chrome_async_socket_->Read(buf, sizeof(buf), &len_read));
961 EXPECT_EQ(kReadData, std::string(buf, len_read)); 952 EXPECT_EQ(kReadData, std::string(buf, len_read));
962 953
963 DoSSLCloseOpenedNoError(); 954 DoSSLCloseOpenedNoError();
(...skipping 10 matching lines...) Expand all
974 965
975 async_socket_data_provider_.AddWrite( 966 async_socket_data_provider_.AddWrite(
976 net::MockWrite(net::ASYNC, kWriteData, 3)); 967 net::MockWrite(net::ASYNC, kWriteData, 3));
977 968
978 // Shouldn't do anything. 969 // Shouldn't do anything.
979 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData, 3)); 970 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData, 3));
980 971
981 // TODO(akalin): Figure out how to test that the write happens 972 // TODO(akalin): Figure out how to test that the write happens
982 // *after* the SSL connect. 973 // *after* the SSL connect.
983 974
984 message_loop_->RunUntilIdle(); 975 message_loop_.RunUntilIdle();
985 ExpectSSLConnectSignal(); 976 ExpectSSLConnectSignal();
986 ExpectNoSignal(); 977 ExpectNoSignal();
987 978
988 message_loop_->RunUntilIdle(); 979 message_loop_.RunUntilIdle();
989 980
990 DoSSLCloseOpenedNoError(); 981 DoSSLCloseOpenedNoError();
991 } 982 }
992 983
993 TEST_F(ChromeAsyncSocketTest, SSLConnectDuringPendingRead) { 984 TEST_F(ChromeAsyncSocketTest, SSLConnectDuringPendingRead) {
994 EXPECT_DEBUG_DEATH({ 985 EXPECT_DEBUG_DEATH({
995 DoOpenClosed(); 986 DoOpenClosed();
996 987
997 EXPECT_FALSE(chrome_async_socket_->StartTls("fakedomain.com")); 988 EXPECT_FALSE(chrome_async_socket_->StartTls("fakedomain.com"));
998 989
999 DoCloseOpened( 990 DoCloseOpened(
1000 SignalSocketState(SIGNAL_CLOSE, 991 SignalSocketState(SIGNAL_CLOSE,
1001 ChromeAsyncSocket::STATE_CLOSED, 992 ChromeAsyncSocket::STATE_CLOSED,
1002 ChromeAsyncSocket::ERROR_WRONGSTATE, 993 ChromeAsyncSocket::ERROR_WRONGSTATE,
1003 net::OK)); 994 net::OK));
1004 }, "wrong state"); 995 }, "wrong state");
1005 } 996 }
1006 997
1007 TEST_F(ChromeAsyncSocketTest, SSLConnectDuringPostedWrite) { 998 TEST_F(ChromeAsyncSocketTest, SSLConnectDuringPostedWrite) {
1008 EXPECT_DEBUG_DEATH({ 999 EXPECT_DEBUG_DEATH({
1009 DoOpenClosed(); 1000 DoOpenClosed();
1010 1001
1011 async_socket_data_provider_.AddWrite( 1002 async_socket_data_provider_.AddWrite(
1012 net::MockWrite(net::ASYNC, kWriteData, 3)); 1003 net::MockWrite(net::ASYNC, kWriteData, 3));
1013 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData, 3)); 1004 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData, 3));
1014 1005
1015 EXPECT_FALSE(chrome_async_socket_->StartTls("fakedomain.com")); 1006 EXPECT_FALSE(chrome_async_socket_->StartTls("fakedomain.com"));
1016 1007
1017 message_loop_->RunUntilIdle(); 1008 message_loop_.RunUntilIdle();
1018 1009
1019 DoCloseOpened( 1010 DoCloseOpened(
1020 SignalSocketState(SIGNAL_CLOSE, 1011 SignalSocketState(SIGNAL_CLOSE,
1021 ChromeAsyncSocket::STATE_CLOSED, 1012 ChromeAsyncSocket::STATE_CLOSED,
1022 ChromeAsyncSocket::ERROR_WRONGSTATE, 1013 ChromeAsyncSocket::ERROR_WRONGSTATE,
1023 net::OK)); 1014 net::OK));
1024 }, "wrong state"); 1015 }, "wrong state");
1025 } 1016 }
1026 1017
1027 // After this we can assume SSL connect works as expected. 1018 // After this we can assume SSL connect works as expected.
1028 1019
1029 TEST_F(ChromeAsyncSocketTest, SSLRead) { 1020 TEST_F(ChromeAsyncSocketTest, SSLRead) {
1030 DoSSLOpenClosed(); 1021 DoSSLOpenClosed();
1031 async_socket_data_provider_.AddRead(net::MockRead(kReadData)); 1022 async_socket_data_provider_.AddRead(net::MockRead(kReadData));
1032 message_loop_->RunUntilIdle(); 1023 message_loop_.RunUntilIdle();
1033 1024
1034 ExpectSSLReadSignal(); 1025 ExpectSSLReadSignal();
1035 ExpectNoSignal(); 1026 ExpectNoSignal();
1036 1027
1037 EXPECT_EQ(kReadData, DrainRead(1)); 1028 EXPECT_EQ(kReadData, DrainRead(1));
1038 1029
1039 message_loop_->RunUntilIdle(); 1030 message_loop_.RunUntilIdle();
1040 1031
1041 DoSSLCloseOpenedNoError(); 1032 DoSSLCloseOpenedNoError();
1042 } 1033 }
1043 1034
1044 TEST_F(ChromeAsyncSocketTest, SSLSyncWrite) { 1035 TEST_F(ChromeAsyncSocketTest, SSLSyncWrite) {
1045 async_socket_data_provider_.AddWrite( 1036 async_socket_data_provider_.AddWrite(
1046 net::MockWrite(net::SYNCHRONOUS, kWriteData, 3)); 1037 net::MockWrite(net::SYNCHRONOUS, kWriteData, 3));
1047 async_socket_data_provider_.AddWrite( 1038 async_socket_data_provider_.AddWrite(
1048 net::MockWrite(net::SYNCHRONOUS, kWriteData + 3, 5)); 1039 net::MockWrite(net::SYNCHRONOUS, kWriteData + 3, 5));
1049 async_socket_data_provider_.AddWrite( 1040 async_socket_data_provider_.AddWrite(
1050 net::MockWrite(net::SYNCHRONOUS, 1041 net::MockWrite(net::SYNCHRONOUS,
1051 kWriteData + 8, arraysize(kWriteData) - 8)); 1042 kWriteData + 8, arraysize(kWriteData) - 8));
1052 DoSSLOpenClosed(); 1043 DoSSLOpenClosed();
1053 1044
1054 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData, 3)); 1045 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData, 3));
1055 message_loop_->RunUntilIdle(); 1046 message_loop_.RunUntilIdle();
1056 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 3, 5)); 1047 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 3, 5));
1057 message_loop_->RunUntilIdle(); 1048 message_loop_.RunUntilIdle();
1058 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 8, 1049 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 8,
1059 arraysize(kWriteData) - 8)); 1050 arraysize(kWriteData) - 8));
1060 message_loop_->RunUntilIdle(); 1051 message_loop_.RunUntilIdle();
1061 1052
1062 ExpectNoSignal(); 1053 ExpectNoSignal();
1063 1054
1064 DoSSLCloseOpenedNoError(); 1055 DoSSLCloseOpenedNoError();
1065 } 1056 }
1066 1057
1067 TEST_F(ChromeAsyncSocketTest, SSLAsyncWrite) { 1058 TEST_F(ChromeAsyncSocketTest, SSLAsyncWrite) {
1068 DoSSLOpenClosed(); 1059 DoSSLOpenClosed();
1069 1060
1070 async_socket_data_provider_.AddWrite( 1061 async_socket_data_provider_.AddWrite(
1071 net::MockWrite(net::ASYNC, kWriteData, 3)); 1062 net::MockWrite(net::ASYNC, kWriteData, 3));
1072 async_socket_data_provider_.AddWrite( 1063 async_socket_data_provider_.AddWrite(
1073 net::MockWrite(net::ASYNC, kWriteData + 3, 5)); 1064 net::MockWrite(net::ASYNC, kWriteData + 3, 5));
1074 async_socket_data_provider_.AddWrite( 1065 async_socket_data_provider_.AddWrite(
1075 net::MockWrite(net::ASYNC, kWriteData + 8, arraysize(kWriteData) - 8)); 1066 net::MockWrite(net::ASYNC, kWriteData + 8, arraysize(kWriteData) - 8));
1076 1067
1077 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData, 3)); 1068 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData, 3));
1078 message_loop_->RunUntilIdle(); 1069 message_loop_.RunUntilIdle();
1079 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 3, 5)); 1070 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 3, 5));
1080 message_loop_->RunUntilIdle(); 1071 message_loop_.RunUntilIdle();
1081 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 8, 1072 EXPECT_TRUE(chrome_async_socket_->Write(kWriteData + 8,
1082 arraysize(kWriteData) - 8)); 1073 arraysize(kWriteData) - 8));
1083 message_loop_->RunUntilIdle(); 1074 message_loop_.RunUntilIdle();
1084 1075
1085 ExpectNoSignal(); 1076 ExpectNoSignal();
1086 1077
1087 DoSSLCloseOpenedNoError(); 1078 DoSSLCloseOpenedNoError();
1088 } 1079 }
1089 1080
1090 } // namespace 1081 } // namespace
1091 1082
1092 } // namespace jingle_glue 1083 } // namespace jingle_glue
OLDNEW
« no previous file with comments | « base/message_loop/message_pump_default.h ('k') | jingle/notifier/base/xmpp_connection_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698