| 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 "base/message_loop_proxy.h" | 5 #include "base/message_loop_proxy.h" |
| 6 #include "base/threading/thread.h" | 6 #include "base/threading/thread.h" |
| 7 #include "chrome/browser/sync/glue/http_bridge.h" | 7 #include "chrome/browser/sync/glue/http_bridge.h" |
| 8 #include "chrome/test/base/test_url_request_context_getter.h" | |
| 9 #include "content/test/test_browser_thread.h" | 8 #include "content/test/test_browser_thread.h" |
| 10 #include "content/test/test_url_fetcher_factory.h" | 9 #include "content/test/test_url_fetcher_factory.h" |
| 11 #include "net/test/test_server.h" | 10 #include "net/test/test_server.h" |
| 12 #include "net/url_request/url_request_test_util.h" | 11 #include "net/url_request/url_request_test_util.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 14 | 13 |
| 15 using browser_sync::HttpBridge; | 14 using browser_sync::HttpBridge; |
| 16 using content::BrowserThread; | 15 using content::BrowserThread; |
| 17 | 16 |
| 18 namespace { | 17 namespace { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 38 if (fake_default_request_context_getter_) { | 37 if (fake_default_request_context_getter_) { |
| 39 GetIOThreadLoop()->ReleaseSoon(FROM_HERE, | 38 GetIOThreadLoop()->ReleaseSoon(FROM_HERE, |
| 40 fake_default_request_context_getter_); | 39 fake_default_request_context_getter_); |
| 41 fake_default_request_context_getter_ = NULL; | 40 fake_default_request_context_getter_ = NULL; |
| 42 } | 41 } |
| 43 io_thread_.Stop(); | 42 io_thread_.Stop(); |
| 44 } | 43 } |
| 45 | 44 |
| 46 HttpBridge* BuildBridge() { | 45 HttpBridge* BuildBridge() { |
| 47 if (!fake_default_request_context_getter_) { | 46 if (!fake_default_request_context_getter_) { |
| 48 fake_default_request_context_getter_ = new TestURLRequestContextGetter(); | 47 fake_default_request_context_getter_ = |
| 48 new TestURLRequestContextGetter( |
| 49 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO)); |
| 49 fake_default_request_context_getter_->AddRef(); | 50 fake_default_request_context_getter_->AddRef(); |
| 50 } | 51 } |
| 51 HttpBridge* bridge = new HttpBridge( | 52 HttpBridge* bridge = new HttpBridge( |
| 52 new HttpBridge::RequestContextGetter( | 53 new HttpBridge::RequestContextGetter( |
| 53 fake_default_request_context_getter_)); | 54 fake_default_request_context_getter_)); |
| 54 return bridge; | 55 return bridge; |
| 55 } | 56 } |
| 56 | 57 |
| 57 static void Abort(HttpBridge* bridge) { | 58 static void Abort(HttpBridge* bridge) { |
| 58 bridge->Abort(); | 59 bridge->Abort(); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 BrowserThread::PostTask( | 142 BrowserThread::PostTask( |
| 142 BrowserThread::IO, FROM_HERE, | 143 BrowserThread::IO, FROM_HERE, |
| 143 base::Bind(&SyncHttpBridgeTest::TestSameHttpNetworkSession, | 144 base::Bind(&SyncHttpBridgeTest::TestSameHttpNetworkSession, |
| 144 MessageLoop::current(), this)); | 145 MessageLoop::current(), this)); |
| 145 MessageLoop::current()->Run(); | 146 MessageLoop::current()->Run(); |
| 146 } | 147 } |
| 147 | 148 |
| 148 // Test the HttpBridge without actually making any network requests. | 149 // Test the HttpBridge without actually making any network requests. |
| 149 TEST_F(SyncHttpBridgeTest, TestMakeSynchronousPostShunted) { | 150 TEST_F(SyncHttpBridgeTest, TestMakeSynchronousPostShunted) { |
| 150 scoped_refptr<net::URLRequestContextGetter> ctx_getter( | 151 scoped_refptr<net::URLRequestContextGetter> ctx_getter( |
| 151 new TestURLRequestContextGetter()); | 152 new TestURLRequestContextGetter( |
| 153 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO))); |
| 152 scoped_refptr<HttpBridge> http_bridge(new ShuntedHttpBridge( | 154 scoped_refptr<HttpBridge> http_bridge(new ShuntedHttpBridge( |
| 153 ctx_getter, this, false)); | 155 ctx_getter, this, false)); |
| 154 http_bridge->SetUserAgent("bob"); | 156 http_bridge->SetUserAgent("bob"); |
| 155 http_bridge->SetURL("http://www.google.com", 9999); | 157 http_bridge->SetURL("http://www.google.com", 9999); |
| 156 http_bridge->SetPostPayload("text/plain", 2, " "); | 158 http_bridge->SetPostPayload("text/plain", 2, " "); |
| 157 | 159 |
| 158 int os_error = 0; | 160 int os_error = 0; |
| 159 int response_code = 0; | 161 int response_code = 0; |
| 160 bool success = http_bridge->MakeSynchronousPost(&os_error, &response_code); | 162 bool success = http_bridge->MakeSynchronousPost(&os_error, &response_code); |
| 161 EXPECT_TRUE(success); | 163 EXPECT_TRUE(success); |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 EXPECT_TRUE(success); | 267 EXPECT_TRUE(success); |
| 266 EXPECT_EQ(200, response_code); | 268 EXPECT_EQ(200, response_code); |
| 267 EXPECT_EQ(0, os_error); | 269 EXPECT_EQ(0, os_error); |
| 268 | 270 |
| 269 EXPECT_EQ(http_bridge->GetResponseHeaderValue("Content-type"), "text/html"); | 271 EXPECT_EQ(http_bridge->GetResponseHeaderValue("Content-type"), "text/html"); |
| 270 EXPECT_TRUE(http_bridge->GetResponseHeaderValue("invalid-header").empty()); | 272 EXPECT_TRUE(http_bridge->GetResponseHeaderValue("invalid-header").empty()); |
| 271 } | 273 } |
| 272 | 274 |
| 273 TEST_F(SyncHttpBridgeTest, Abort) { | 275 TEST_F(SyncHttpBridgeTest, Abort) { |
| 274 scoped_refptr<net::URLRequestContextGetter> ctx_getter( | 276 scoped_refptr<net::URLRequestContextGetter> ctx_getter( |
| 275 new TestURLRequestContextGetter()); | 277 new TestURLRequestContextGetter( |
| 278 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO))); |
| 276 scoped_refptr<ShuntedHttpBridge> http_bridge(new ShuntedHttpBridge( | 279 scoped_refptr<ShuntedHttpBridge> http_bridge(new ShuntedHttpBridge( |
| 277 ctx_getter, this, true)); | 280 ctx_getter, this, true)); |
| 278 http_bridge->SetUserAgent("bob"); | 281 http_bridge->SetUserAgent("bob"); |
| 279 http_bridge->SetURL("http://www.google.com", 9999); | 282 http_bridge->SetURL("http://www.google.com", 9999); |
| 280 http_bridge->SetPostPayload("text/plain", 2, " "); | 283 http_bridge->SetPostPayload("text/plain", 2, " "); |
| 281 | 284 |
| 282 int os_error = 0; | 285 int os_error = 0; |
| 283 int response_code = 0; | 286 int response_code = 0; |
| 284 | 287 |
| 285 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 288 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
| 286 base::Bind(&SyncHttpBridgeTest::Abort, http_bridge)); | 289 base::Bind(&SyncHttpBridgeTest::Abort, http_bridge)); |
| 287 bool success = http_bridge->MakeSynchronousPost(&os_error, &response_code); | 290 bool success = http_bridge->MakeSynchronousPost(&os_error, &response_code); |
| 288 EXPECT_FALSE(success); | 291 EXPECT_FALSE(success); |
| 289 EXPECT_EQ(net::ERR_ABORTED, os_error); | 292 EXPECT_EQ(net::ERR_ABORTED, os_error); |
| 290 } | 293 } |
| 291 | 294 |
| 292 TEST_F(SyncHttpBridgeTest, AbortLate) { | 295 TEST_F(SyncHttpBridgeTest, AbortLate) { |
| 293 scoped_refptr<net::URLRequestContextGetter> ctx_getter( | 296 scoped_refptr<net::URLRequestContextGetter> ctx_getter( |
| 294 new TestURLRequestContextGetter()); | 297 new TestURLRequestContextGetter( |
| 298 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO))); |
| 295 scoped_refptr<ShuntedHttpBridge> http_bridge(new ShuntedHttpBridge( | 299 scoped_refptr<ShuntedHttpBridge> http_bridge(new ShuntedHttpBridge( |
| 296 ctx_getter, this, false)); | 300 ctx_getter, this, false)); |
| 297 http_bridge->SetUserAgent("bob"); | 301 http_bridge->SetUserAgent("bob"); |
| 298 http_bridge->SetURL("http://www.google.com", 9999); | 302 http_bridge->SetURL("http://www.google.com", 9999); |
| 299 http_bridge->SetPostPayload("text/plain", 2, " "); | 303 http_bridge->SetPostPayload("text/plain", 2, " "); |
| 300 | 304 |
| 301 int os_error = 0; | 305 int os_error = 0; |
| 302 int response_code = 0; | 306 int response_code = 0; |
| 303 | 307 |
| 304 bool success = http_bridge->MakeSynchronousPost(&os_error, &response_code); | 308 bool success = http_bridge->MakeSynchronousPost(&os_error, &response_code); |
| 305 ASSERT_TRUE(success); | 309 ASSERT_TRUE(success); |
| 306 http_bridge->Abort(); | 310 http_bridge->Abort(); |
| 307 // Ensures no double-free of URLFetcher, etc. | 311 // Ensures no double-free of URLFetcher, etc. |
| 308 } | 312 } |
| OLD | NEW |