Index: chrome_frame/test/net/fake_external_tab.cc |
diff --git a/chrome_frame/test/net/fake_external_tab.cc b/chrome_frame/test/net/fake_external_tab.cc |
index 785397b59dd24a2e956839855dd2249c8b0c21bf..288ceabff7f3b6b9419deb102a9a1b6ede773e25 100644 |
--- a/chrome_frame/test/net/fake_external_tab.cc |
+++ b/chrome_frame/test/net/fake_external_tab.cc |
@@ -7,6 +7,7 @@ |
#include <atlbase.h> |
#include <atlcom.h> |
#include <exdisp.h> |
+#include <Winsock2.h> |
#include "base/bind.h" |
#include "base/command_line.h" |
@@ -56,6 +57,7 @@ |
#include "content/public/browser/render_process_host.h" |
#include "content/public/common/content_client.h" |
#include "content/public/common/content_paths.h" |
+#include "net/base/net_util.h" |
#include "sandbox/src/sandbox_types.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "ui/base/resource/resource_bundle.h" |
@@ -523,7 +525,7 @@ void CFUrlRequestUnittestRunner::ShutDownHostBrowser() { |
} |
} |
-// Override virtual void Initialize to not call icu initialize |
+// Override virtual void Initialize to not call icu initialize. |
void CFUrlRequestUnittestRunner::Initialize() { |
DCHECK(::GetCurrentThreadId() == test_thread_id_); |
@@ -541,6 +543,10 @@ void CFUrlRequestUnittestRunner::Initialize() { |
// Next, do some initialization for NetTestSuite. |
NetTestSuite::InitializeTestThreadNoNetworkChangeNotifier(); |
+ |
+ // Finally, override the host used by the HTTP tests. See |
+ // http://crbug.com/114369 . |
+ OverrideHttpHost(); |
} |
void CFUrlRequestUnittestRunner::Shutdown() { |
@@ -615,6 +621,32 @@ void CFUrlRequestUnittestRunner::InitializeLogging() { |
logging::SetLogItems(true, true, true, true); |
} |
+void CFUrlRequestUnittestRunner::OverrideHttpHost() { |
+ net::NetworkInterfaceList nic_list; |
+ if (!net::GetNetworkList(&nic_list)) { |
+ LOG(ERROR) << "GetNetworkList failed to look up non-loopback adapters. " |
+ << "Tests will be run over the loopback adapter, which may " |
+ << "result in hangs."; |
+ return; |
+ } |
+ |
+ for (size_t i = 0; i < nic_list.size(); ++i) { |
robertshield
2012/02/17 17:40:55
Consider adding a comment that we intentionally pi
|
+ if (nic_list[i].address.size() != net::kIPv4AddressSize) |
+ continue; |
+ char* address_string = |
+ inet_ntoa(*reinterpret_cast<in_addr*>(&nic_list[i].address[0])); |
+ DCHECK(address_string != NULL); |
+ if (address_string == NULL) |
+ continue; |
+ LOG(INFO) << "HTTP tests will run over " << address_string << "."; |
+ override_http_host_.reset(new CustomUrlRequestTestHttpHost(address_string)); |
+ return; |
+ } |
+ |
+ LOG(ERROR) << "Failed to find a non-loopback IP_V4 address. Tests will be " |
+ << "run over the loopback adapter, which may result in hangs."; |
+} |
+ |
void CFUrlRequestUnittestRunner::PreEarlyInitialization() { |
testing::InitGoogleTest(&g_argc, g_argv); |
FilterDisabledTests(); |