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 "chrome/browser/sync/test/integration/sync_test.h" | 5 #include "chrome/browser/sync/test/integration/sync_test.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 } | 109 } |
110 | 110 |
111 SyncTest::SyncTest(TestType test_type) | 111 SyncTest::SyncTest(TestType test_type) |
112 : sync_server_(net::TestServer::TYPE_SYNC, | 112 : sync_server_(net::TestServer::TYPE_SYNC, |
113 net::TestServer::kLocalhost, | 113 net::TestServer::kLocalhost, |
114 FilePath()), | 114 FilePath()), |
115 test_type_(test_type), | 115 test_type_(test_type), |
116 server_type_(SERVER_TYPE_UNDECIDED), | 116 server_type_(SERVER_TYPE_UNDECIDED), |
117 num_clients_(-1), | 117 num_clients_(-1), |
118 use_verifier_(true), | 118 use_verifier_(true), |
| 119 notifications_enabled_(true), |
119 test_server_handle_(base::kNullProcessHandle), | 120 test_server_handle_(base::kNullProcessHandle), |
120 number_of_default_sync_items_(0) { | 121 number_of_default_sync_items_(0) { |
121 InProcessBrowserTest::set_show_window(true); | 122 InProcessBrowserTest::set_show_window(true); |
122 sync_datatype_helper::AssociateWithTest(this); | 123 sync_datatype_helper::AssociateWithTest(this); |
123 switch (test_type_) { | 124 switch (test_type_) { |
124 case SINGLE_CLIENT: { | 125 case SINGLE_CLIENT: { |
125 num_clients_ = 1; | 126 num_clients_ = 1; |
126 break; | 127 break; |
127 } | 128 } |
128 case TWO_CLIENT: { | 129 case TWO_CLIENT: { |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
554 sync_url_status, content::URLFetcher::GET, &delegate)); | 555 sync_url_status, content::URLFetcher::GET, &delegate)); |
555 fetcher->SetRequestContext(g_browser_process->system_request_context()); | 556 fetcher->SetRequestContext(g_browser_process->system_request_context()); |
556 fetcher->Start(); | 557 fetcher->Start(); |
557 ui_test_utils::RunMessageLoop(); | 558 ui_test_utils::RunMessageLoop(); |
558 return delegate.running(); | 559 return delegate.running(); |
559 } | 560 } |
560 | 561 |
561 void SyncTest::EnableNetwork(Profile* profile) { | 562 void SyncTest::EnableNetwork(Profile* profile) { |
562 SetProxyConfig(profile->GetRequestContext(), | 563 SetProxyConfig(profile->GetRequestContext(), |
563 net::ProxyConfig::CreateDirect()); | 564 net::ProxyConfig::CreateDirect()); |
| 565 if (notifications_enabled_) { |
| 566 EnableNotificationsImpl(); |
| 567 } |
564 // TODO(rsimha): Remove this line once http://crbug.com/53857 is fixed. | 568 // TODO(rsimha): Remove this line once http://crbug.com/53857 is fixed. |
565 net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); | 569 net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); |
566 } | 570 } |
567 | 571 |
568 void SyncTest::DisableNetwork(Profile* profile) { | 572 void SyncTest::DisableNetwork(Profile* profile) { |
| 573 DisableNotificationsImpl(); |
569 // Set the current proxy configuration to a nonexistent proxy to effectively | 574 // Set the current proxy configuration to a nonexistent proxy to effectively |
570 // disable networking. | 575 // disable networking. |
571 net::ProxyConfig config; | 576 net::ProxyConfig config; |
572 config.proxy_rules().ParseFromString("http=127.0.0.1:0"); | 577 config.proxy_rules().ParseFromString("http=127.0.0.1:0"); |
573 SetProxyConfig(profile->GetRequestContext(), config); | 578 SetProxyConfig(profile->GetRequestContext(), config); |
574 // TODO(rsimha): Remove this line once http://crbug.com/53857 is fixed. | 579 // TODO(rsimha): Remove this line once http://crbug.com/53857 is fixed. |
575 net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); | 580 net::NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); |
576 } | 581 } |
577 | 582 |
578 bool SyncTest::EnableEncryption(int index, syncable::ModelType type) { | 583 bool SyncTest::EnableEncryption(int index, syncable::ModelType type) { |
579 return GetClient(index)->EnableEncryptionForType(type); | 584 return GetClient(index)->EnableEncryptionForType(type); |
580 } | 585 } |
581 | 586 |
582 bool SyncTest::IsEncrypted(int index, syncable::ModelType type) { | 587 bool SyncTest::IsEncrypted(int index, syncable::ModelType type) { |
583 return GetClient(index)->IsTypeEncrypted(type); | 588 return GetClient(index)->IsTypeEncrypted(type); |
584 } | 589 } |
585 | 590 |
586 bool SyncTest::AwaitQuiescence() { | 591 bool SyncTest::AwaitQuiescence() { |
587 return ProfileSyncServiceHarness::AwaitQuiescence(clients()); | 592 return ProfileSyncServiceHarness::AwaitQuiescence(clients()); |
588 } | 593 } |
589 | 594 |
590 bool SyncTest::ServerSupportsNotificationControl() const { | 595 bool SyncTest::ServerSupportsNotificationControl() const { |
591 EXPECT_NE(SERVER_TYPE_UNDECIDED, server_type_); | 596 EXPECT_NE(SERVER_TYPE_UNDECIDED, server_type_); |
592 | 597 |
593 // Supported only if we're using the python testserver. | 598 // Supported only if we're using the python testserver. |
594 return server_type_ == LOCAL_PYTHON_SERVER; | 599 return server_type_ == LOCAL_PYTHON_SERVER; |
595 } | 600 } |
596 | 601 |
597 void SyncTest::DisableNotifications() { | 602 void SyncTest::DisableNotificationsImpl() { |
598 ASSERT_TRUE(ServerSupportsNotificationControl()); | 603 ASSERT_TRUE(ServerSupportsNotificationControl()); |
599 std::string path = "chromiumsync/disablenotifications"; | 604 std::string path = "chromiumsync/disablenotifications"; |
600 ui_test_utils::NavigateToURL(browser(), sync_server_.GetURL(path)); | 605 ui_test_utils::NavigateToURL(browser(), sync_server_.GetURL(path)); |
601 ASSERT_EQ("Notifications disabled", | 606 ASSERT_EQ("Notifications disabled", |
602 UTF16ToASCII(browser()->GetSelectedWebContents()->GetTitle())); | 607 UTF16ToASCII(browser()->GetSelectedWebContents()->GetTitle())); |
603 } | 608 } |
604 | 609 |
605 void SyncTest::EnableNotifications() { | 610 void SyncTest::DisableNotifications() { |
| 611 DisableNotificationsImpl(); |
| 612 notifications_enabled_ = false; |
| 613 } |
| 614 |
| 615 void SyncTest::EnableNotificationsImpl() { |
606 ASSERT_TRUE(ServerSupportsNotificationControl()); | 616 ASSERT_TRUE(ServerSupportsNotificationControl()); |
607 std::string path = "chromiumsync/enablenotifications"; | 617 std::string path = "chromiumsync/enablenotifications"; |
608 ui_test_utils::NavigateToURL(browser(), sync_server_.GetURL(path)); | 618 ui_test_utils::NavigateToURL(browser(), sync_server_.GetURL(path)); |
609 ASSERT_EQ("Notifications enabled", | 619 ASSERT_EQ("Notifications enabled", |
610 UTF16ToASCII(browser()->GetSelectedWebContents()->GetTitle())); | 620 UTF16ToASCII(browser()->GetSelectedWebContents()->GetTitle())); |
611 } | 621 } |
612 | 622 |
| 623 void SyncTest::EnableNotifications() { |
| 624 EnableNotificationsImpl(); |
| 625 notifications_enabled_ = true; |
| 626 } |
| 627 |
613 void SyncTest::TriggerNotification( | 628 void SyncTest::TriggerNotification( |
614 syncable::ModelTypeSet changed_types) { | 629 syncable::ModelTypeSet changed_types) { |
615 ASSERT_TRUE(ServerSupportsNotificationControl()); | 630 ASSERT_TRUE(ServerSupportsNotificationControl()); |
616 const std::string& data = | 631 const std::string& data = |
617 sync_notifier::P2PNotificationData("from_server", | 632 sync_notifier::P2PNotificationData("from_server", |
618 sync_notifier::NOTIFY_ALL, | 633 sync_notifier::NOTIFY_ALL, |
619 changed_types).ToString(); | 634 changed_types).ToString(); |
620 const std::string& path = | 635 const std::string& path = |
621 std::string("chromiumsync/sendnotification?channel=") + | 636 std::string("chromiumsync/sendnotification?channel=") + |
622 sync_notifier::kSyncP2PNotificationChannel + "&data=" + data; | 637 sync_notifier::kSyncP2PNotificationChannel + "&data=" + data; |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
760 | 775 |
761 void SyncTest::SetProxyConfig(net::URLRequestContextGetter* context_getter, | 776 void SyncTest::SetProxyConfig(net::URLRequestContextGetter* context_getter, |
762 const net::ProxyConfig& proxy_config) { | 777 const net::ProxyConfig& proxy_config) { |
763 base::WaitableEvent done(false, false); | 778 base::WaitableEvent done(false, false); |
764 BrowserThread::PostTask( | 779 BrowserThread::PostTask( |
765 BrowserThread::IO, FROM_HERE, | 780 BrowserThread::IO, FROM_HERE, |
766 base::Bind(&SetProxyConfigCallback, &done, | 781 base::Bind(&SetProxyConfigCallback, &done, |
767 make_scoped_refptr(context_getter), proxy_config)); | 782 make_scoped_refptr(context_getter), proxy_config)); |
768 done.Wait(); | 783 done.Wait(); |
769 } | 784 } |
OLD | NEW |