Index: chrome/browser/extensions/api/dns/dns_api.cc |
diff --git a/chrome/browser/extensions/api/dns/dns_api.cc b/chrome/browser/extensions/api/dns/dns_api.cc |
index 2ddbd698ade7f922f810c4425257c3e855544b6c..bc74483eb2ec39692359c0ab94454523dda0ddf6 100644 |
--- a/chrome/browser/extensions/api/dns/dns_api.cc |
+++ b/chrome/browser/extensions/api/dns/dns_api.cc |
@@ -8,18 +8,17 @@ |
#include "base/values.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/io_thread.h" |
+#include "chrome/common/extensions/api/experimental.dns.h" |
#include "content/public/browser/browser_thread.h" |
#include "net/base/host_port_pair.h" |
#include "net/base/net_errors.h" |
#include "net/base/net_util.h" |
using content::BrowserThread; |
+using namespace extensions::api::experimental; |
namespace extensions { |
-const char kAddressKey[] = "address"; |
-const char kResultCodeKey[] = "resultCode"; |
- |
// static |
net::HostResolver* DNSResolveFunction::host_resolver_for_testing; |
@@ -42,7 +41,11 @@ void DNSResolveFunction::set_host_resolver_for_testing( |
} |
bool DNSResolveFunction::RunImpl() { |
- EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &hostname_)); |
+ scoped_ptr<Resolve::Params> params(Resolve::Params::Create(*args_)); |
+ EXTENSION_FUNCTION_VALIDATE(params.get()); |
+ |
+ hostname_ = params->hostname; |
+ |
bool result = BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
base::Bind(&DNSResolveFunction::WorkOnIOThread, this)); |
@@ -77,14 +80,17 @@ void DNSResolveFunction::WorkOnIOThread() { |
} |
void DNSResolveFunction::OnLookupFinished(int resolve_result) { |
- DictionaryValue* api_result = new DictionaryValue(); |
- api_result->SetInteger(kResultCodeKey, resolve_result); |
+ |
+ scoped_ptr<ResolveCallbackResolveInfo> resolve_info( |
+ new ResolveCallbackResolveInfo()); |
+ resolve_info->result_code = resolve_result; |
if (resolve_result == net::OK) { |
const struct addrinfo* head = addresses_->head(); |
DCHECK(head); |
- api_result->SetString(kAddressKey, net::NetAddressToString(head)); |
+ resolve_info->address.reset( |
+ new std::string(net::NetAddressToString(head))); |
} |
- result_.reset(api_result); |
+ result_.reset(Resolve::Result::Create(*resolve_info)); |
response_ = true; |
bool post_task_result = BrowserThread::PostTask( |