| Index: http_fetcher_unittest.cc
|
| diff --git a/http_fetcher_unittest.cc b/http_fetcher_unittest.cc
|
| index 30cde956acc6465b067643c4eae8bd5c39bcfa34..87dda7831df45ea36131369d30e8813f803e5c41 100644
|
| --- a/http_fetcher_unittest.cc
|
| +++ b/http_fetcher_unittest.cc
|
| @@ -196,6 +196,9 @@ class HttpFetcherTestDelegate : public HttpFetcherDelegate {
|
| EXPECT_EQ(200, fetcher->http_response_code());
|
| g_main_loop_quit(loop_);
|
| }
|
| + virtual void TransferTerminated(HttpFetcher* fetcher) {
|
| + ADD_FAILURE();
|
| + }
|
| GMainLoop* loop_;
|
| };
|
|
|
| @@ -264,6 +267,9 @@ class PausingHttpFetcherTestDelegate : public HttpFetcherDelegate {
|
| virtual void TransferComplete(HttpFetcher* fetcher, bool successful) {
|
| g_main_loop_quit(loop_);
|
| }
|
| + virtual void TransferTerminated(HttpFetcher* fetcher) {
|
| + ADD_FAILURE();
|
| + }
|
| void Unpause() {
|
| CHECK(paused_);
|
| paused_ = false;
|
| @@ -314,9 +320,17 @@ class AbortingHttpFetcherTestDelegate : public HttpFetcherDelegate {
|
| virtual void ReceivedBytes(HttpFetcher* fetcher,
|
| const char* bytes, int length) {}
|
| virtual void TransferComplete(HttpFetcher* fetcher, bool successful) {
|
| - CHECK(false); // We should never get here
|
| + ADD_FAILURE(); // We should never get here
|
| g_main_loop_quit(loop_);
|
| }
|
| + virtual void TransferTerminated(HttpFetcher* fetcher) {
|
| + EXPECT_EQ(fetcher, fetcher_.get());
|
| + EXPECT_FALSE(once_);
|
| + EXPECT_TRUE(callback_once_);
|
| + callback_once_ = false;
|
| + // |fetcher| can be destroyed during this callback.
|
| + fetcher_.reset(NULL);
|
| + }
|
| void TerminateTransfer() {
|
| CHECK(once_);
|
| once_ = false;
|
| @@ -326,7 +340,8 @@ class AbortingHttpFetcherTestDelegate : public HttpFetcherDelegate {
|
| g_main_loop_quit(loop_);
|
| }
|
| bool once_;
|
| - HttpFetcher* fetcher_;
|
| + bool callback_once_;
|
| + scoped_ptr<HttpFetcher> fetcher_;
|
| GMainLoop* loop_;
|
| };
|
|
|
| @@ -347,11 +362,11 @@ TYPED_TEST(HttpFetcherTest, AbortTest) {
|
| GMainLoop* loop = g_main_loop_new(g_main_context_default(), FALSE);
|
| {
|
| AbortingHttpFetcherTestDelegate delegate;
|
| - scoped_ptr<HttpFetcher> fetcher(this->NewLargeFetcher());
|
| + delegate.fetcher_.reset(this->NewLargeFetcher());
|
| delegate.once_ = true;
|
| + delegate.callback_once_ = true;
|
| delegate.loop_ = loop;
|
| - delegate.fetcher_ = fetcher.get();
|
| - fetcher->set_delegate(&delegate);
|
| + delegate.fetcher_->set_delegate(&delegate);
|
|
|
| typename TestFixture::HttpServer server;
|
| this->IgnoreServerAborting(&server);
|
| @@ -361,9 +376,11 @@ TYPED_TEST(HttpFetcherTest, AbortTest) {
|
| g_source_set_callback(timeout_source_, AbortingTimeoutCallback, &delegate,
|
| NULL);
|
| g_source_attach(timeout_source_, NULL);
|
| - fetcher->BeginTransfer(this->BigUrl());
|
| + delegate.fetcher_->BeginTransfer(this->BigUrl());
|
|
|
| g_main_loop_run(loop);
|
| + CHECK(!delegate.once_);
|
| + CHECK(!delegate.callback_once_);
|
| g_source_destroy(timeout_source_);
|
| }
|
| g_main_loop_unref(loop);
|
| @@ -381,6 +398,9 @@ class FlakyHttpFetcherTestDelegate : public HttpFetcherDelegate {
|
| EXPECT_EQ(206, fetcher->http_response_code());
|
| g_main_loop_quit(loop_);
|
| }
|
| + virtual void TransferTerminated(HttpFetcher* fetcher) {
|
| + ADD_FAILURE();
|
| + }
|
| string data;
|
| GMainLoop* loop_;
|
| };
|
| @@ -435,6 +455,9 @@ class FailureHttpFetcherTestDelegate : public HttpFetcherDelegate {
|
| EXPECT_EQ(0, fetcher->http_response_code());
|
| g_main_loop_quit(loop_);
|
| }
|
| + virtual void TransferTerminated(HttpFetcher* fetcher) {
|
| + ADD_FAILURE();
|
| + }
|
| GMainLoop* loop_;
|
| PythonHttpServer* server_;
|
| };
|
| @@ -509,6 +532,9 @@ class RedirectHttpFetcherTestDelegate : public HttpFetcherDelegate {
|
| }
|
| g_main_loop_quit(loop_);
|
| }
|
| + virtual void TransferTerminated(HttpFetcher* fetcher) {
|
| + ADD_FAILURE();
|
| + }
|
| bool expected_successful_;
|
| string data;
|
| GMainLoop* loop_;
|
| @@ -588,14 +614,22 @@ class MultiHttpFetcherTestDelegate : public HttpFetcherDelegate {
|
| : expected_response_code_(expected_response_code) {}
|
| virtual void ReceivedBytes(HttpFetcher* fetcher,
|
| const char* bytes, int length) {
|
| + EXPECT_EQ(fetcher, fetcher_.get());
|
| data.append(bytes, length);
|
| }
|
| virtual void TransferComplete(HttpFetcher* fetcher, bool successful) {
|
| + EXPECT_EQ(fetcher, fetcher_.get());
|
| EXPECT_EQ(expected_response_code_ != 0, successful);
|
| if (expected_response_code_ != 0)
|
| EXPECT_EQ(expected_response_code_, fetcher->http_response_code());
|
| + // Destroy the fetcher (because we're allowed to).
|
| + fetcher_.reset(NULL);
|
| g_main_loop_quit(loop_);
|
| }
|
| + virtual void TransferTerminated(HttpFetcher* fetcher) {
|
| + ADD_FAILURE();
|
| + }
|
| + scoped_ptr<HttpFetcher> fetcher_;
|
| int expected_response_code_;
|
| string data;
|
| GMainLoop* loop_;
|
| @@ -611,16 +645,16 @@ void MultiTest(HttpFetcher* fetcher_in,
|
| {
|
| MultiHttpFetcherTestDelegate delegate(expected_response_code);
|
| delegate.loop_ = loop;
|
| - scoped_ptr<HttpFetcher> fetcher(fetcher_in);
|
| + delegate.fetcher_.reset(fetcher_in);
|
| MultiHttpFetcher<LibcurlHttpFetcher>* multi_fetcher =
|
| - dynamic_cast<MultiHttpFetcher<LibcurlHttpFetcher>*>(fetcher.get());
|
| + dynamic_cast<MultiHttpFetcher<LibcurlHttpFetcher>*>(fetcher_in);
|
| ASSERT_TRUE(multi_fetcher);
|
| multi_fetcher->set_ranges(ranges);
|
| multi_fetcher->SetConnectionAsExpensive(false);
|
| multi_fetcher->SetBuildType(false);
|
| - fetcher->set_delegate(&delegate);
|
| + multi_fetcher->set_delegate(&delegate);
|
|
|
| - StartTransferArgs start_xfer_args = {fetcher.get(), url};
|
| + StartTransferArgs start_xfer_args = {multi_fetcher, url};
|
|
|
| g_timeout_add(0, StartTransfer, &start_xfer_args);
|
| g_main_loop_run(loop);
|
| @@ -633,7 +667,7 @@ void MultiTest(HttpFetcher* fetcher_in,
|
| }
|
| } // namespace {}
|
|
|
| -TYPED_TEST(HttpFetcherTest, MultiHttpFetcherSimplTest) {
|
| +TYPED_TEST(HttpFetcherTest, MultiHttpFetcherSimpleTest) {
|
| if (!this->IsMulti())
|
| return;
|
| typename TestFixture::HttpServer server;
|
| @@ -713,6 +747,9 @@ class BlockedTransferTestDelegate : public HttpFetcherDelegate {
|
| EXPECT_FALSE(successful);
|
| g_main_loop_quit(loop_);
|
| }
|
| + virtual void TransferTerminated(HttpFetcher* fetcher) {
|
| + ADD_FAILURE();
|
| + }
|
| GMainLoop* loop_;
|
| };
|
|
|
|
|