Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4704)

Unified Diff: chrome/browser/extensions/api/dns/mock_host_resolver_creator.cc

Issue 10537017: Allow hostnames in socket.connect(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: mihaip's comments + clang fix. Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/dns/mock_host_resolver_creator.cc
diff --git a/chrome/browser/extensions/api/dns/mock_host_resolver_creator.cc b/chrome/browser/extensions/api/dns/mock_host_resolver_creator.cc
new file mode 100644
index 0000000000000000000000000000000000000000..03ba1557dac063b1eb8bb3b45dcf347dd37a634d
--- /dev/null
+++ b/chrome/browser/extensions/api/dns/mock_host_resolver_creator.cc
@@ -0,0 +1,70 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/extensions/api/dns/mock_host_resolver_creator.h"
+
+#include "chrome/test/base/in_process_browser_test.h"
+#include "content/public/browser/browser_thread.h"
+#include "net/base/mock_host_resolver.h"
+
+using content::BrowserThread;
+
+namespace extensions {
+
+const std::string MockHostResolverCreator::kHostname = "www.sowbug.com";
+const std::string MockHostResolverCreator::kAddress = "9.8.7.6";
+
+MockHostResolverCreator::MockHostResolverCreator()
+ : resolver_event_(true, false),
+ mock_host_resolver_(NULL) {
+}
+
+MockHostResolverCreator::~MockHostResolverCreator() {
+}
+
+net::MockHostResolver* MockHostResolverCreator::CreateMockHostResolver() {
+ DCHECK(!mock_host_resolver_);
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ bool result = BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&MockHostResolverCreator::CreateMockHostResolverOnIOThread,
+ this));
+ DCHECK(result);
+
+ base::TimeDelta max_time = base::TimeDelta::FromSeconds(5);
+ resolver_event_.TimedWait(max_time);
+
+ return mock_host_resolver_;
+}
+
+void MockHostResolverCreator::CreateMockHostResolverOnIOThread() {
+ mock_host_resolver_ = new net::MockHostResolver();
+ mock_host_resolver_->rules()->AddRule(kHostname, kAddress);
+ mock_host_resolver_->rules()->AddSimulatedFailure("this.hostname.is.bogus");
+ resolver_event_.Signal();
+}
+
+void MockHostResolverCreator::DeleteMockHostResolver() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ if (!mock_host_resolver_)
+ return;
+ resolver_event_.Reset();
+ bool result = BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&MockHostResolverCreator::DeleteMockHostResolverOnIOThread,
+ this));
+ DCHECK(result);
+
+ base::TimeDelta max_time = base::TimeDelta::FromSeconds(5);
+ ASSERT_TRUE(resolver_event_.TimedWait(max_time));
+}
+
+void MockHostResolverCreator::DeleteMockHostResolverOnIOThread() {
+ delete(mock_host_resolver_);
+ mock_host_resolver_ = NULL;
+ resolver_event_.Signal();
+}
+
+} // namespace extensions
« no previous file with comments | « chrome/browser/extensions/api/dns/mock_host_resolver_creator.h ('k') | chrome/browser/extensions/api/socket/socket_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698