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

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

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