Index: sync/internal_api/syncapi_server_connection_manager_unittest.cc |
diff --git a/sync/internal_api/syncapi_server_connection_manager_unittest.cc b/sync/internal_api/syncapi_server_connection_manager_unittest.cc |
index 950cd35bc1d1e75a83d98c85044eed4ec0ebeb12..18177de4051d892f624c47e09c3cfbb3c133f63b 100644 |
--- a/sync/internal_api/syncapi_server_connection_manager_unittest.cc |
+++ b/sync/internal_api/syncapi_server_connection_manager_unittest.cc |
@@ -12,6 +12,7 @@ |
#include "base/threading/thread.h" |
#include "base/time/time.h" |
#include "net/base/net_errors.h" |
+#include "sync/internal_api/public/base/cancelation_signal.h" |
#include "sync/internal_api/public/http_post_provider_factory.h" |
#include "sync/internal_api/public/http_post_provider_interface.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -67,14 +68,34 @@ class BlockingHttpPostFactory : public HttpPostProviderFactory { |
} // namespace |
+// Ask the ServerConnectionManager to stop before it is created. |
+TEST(SyncAPIServerConnectionManagerTest, VeryEarlyAbortPost) { |
+ CancelationSignal signal; |
+ signal.RequestStop(); |
+ SyncAPIServerConnectionManager server( |
+ "server", 0, true, false, new BlockingHttpPostFactory(), &signal); |
+ |
+ ServerConnectionManager::PostBufferParams params; |
+ ScopedServerStatusWatcher watcher(&server, ¶ms.response); |
+ |
+ bool result = server.PostBufferToPath( |
+ ¶ms, "/testpath", "testauth", &watcher); |
+ |
+ EXPECT_FALSE(result); |
+ EXPECT_EQ(HttpResponse::CONNECTION_UNAVAILABLE, |
+ params.response.server_status); |
+} |
+ |
+// Ask the ServerConnectionManager to stop before its first request is made. |
TEST(SyncAPIServerConnectionManagerTest, EarlyAbortPost) { |
+ CancelationSignal signal; |
SyncAPIServerConnectionManager server( |
- "server", 0, true, false, new BlockingHttpPostFactory()); |
+ "server", 0, true, false, new BlockingHttpPostFactory(), &signal); |
ServerConnectionManager::PostBufferParams params; |
ScopedServerStatusWatcher watcher(&server, ¶ms.response); |
- server.TerminateAllIO(); |
+ signal.RequestStop(); |
bool result = server.PostBufferToPath( |
¶ms, "/testpath", "testauth", &watcher); |
@@ -83,9 +104,11 @@ TEST(SyncAPIServerConnectionManagerTest, EarlyAbortPost) { |
params.response.server_status); |
} |
+// Ask the ServerConnectionManager to stop during a request. |
TEST(SyncAPIServerConnectionManagerTest, AbortPost) { |
+ CancelationSignal signal; |
SyncAPIServerConnectionManager server( |
- "server", 0, true, false, new BlockingHttpPostFactory()); |
+ "server", 0, true, false, new BlockingHttpPostFactory(), &signal); |
ServerConnectionManager::PostBufferParams params; |
ScopedServerStatusWatcher watcher(&server, ¶ms.response); |
@@ -94,8 +117,8 @@ TEST(SyncAPIServerConnectionManagerTest, AbortPost) { |
ASSERT_TRUE(abort_thread.Start()); |
abort_thread.message_loop()->PostDelayedTask( |
FROM_HERE, |
- base::Bind(&ServerConnectionManager::TerminateAllIO, |
- base::Unretained(&server)), |
+ base::Bind(&CancelationSignal::RequestStop, |
+ base::Unretained(&signal)), |
TestTimeouts::tiny_timeout()); |
bool result = server.PostBufferToPath( |