OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/extensions/extension_web_socket_proxy_private_api.h" | 5 #include "chrome/browser/extensions/extension_web_socket_proxy_private_api.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
10 #include "base/values.h" | 10 #include "base/values.h" |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
56 #else | 56 #else |
57 NOTREACHED(); | 57 NOTREACHED(); |
58 #endif | 58 #endif |
59 | 59 |
60 timer_.Stop(); // Cancel timeout timer. | 60 timer_.Stop(); // Cancel timeout timer. |
61 ResolveHost(); | 61 ResolveHost(); |
62 } | 62 } |
63 | 63 |
64 void WebSocketProxyPrivate::ResolveHost() { | 64 void WebSocketProxyPrivate::ResolveHost() { |
65 #if defined(OS_CHROMEOS) | 65 #if defined(OS_CHROMEOS) |
66 if (!content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)) { | 66 IOThread* io_thread = g_browser_process->io_thread(); |
stevenjb
2011/11/28 18:45:39
One reason that g_browser_process->io_thread() is
altimofeev
2011/11/29 12:30:20
Please find my answers inline.
On 2011/11/28 18:4
| |
67 content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE, | 67 content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE, |
68 base::Bind(&WebSocketProxyPrivate::ResolveHost, this)); | 68 base::Bind(&WebSocketProxyPrivate::ResolveHostIOPart, this, io_thread)); |
69 return; | 69 #endif |
70 } | 70 } |
71 | |
72 void WebSocketProxyPrivate::ResolveHostIOPart(IOThread* io_thread) { | |
73 #if defined(OS_CHROMEOS) | |
74 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); | |
71 DCHECK(resolver_ == NULL); | 75 DCHECK(resolver_ == NULL); |
72 if (g_browser_process) { | 76 if (io_thread && io_thread->globals()) { |
73 IOThread* io_thread = g_browser_process->io_thread(); | 77 net::HostResolver* host_resolver = |
74 if (io_thread && io_thread->globals()) { | 78 io_thread->globals()->host_resolver.get(); |
75 net::HostResolver* host_resolver = | 79 if (host_resolver) { |
76 io_thread->globals()->host_resolver.get(); | 80 resolver_.reset(new net::SingleRequestHostResolver(host_resolver)); |
77 if (host_resolver) { | 81 net::HostResolver::RequestInfo info(net::HostPortPair( |
78 resolver_.reset(new net::SingleRequestHostResolver(host_resolver)); | 82 hostname_, port_)); |
79 net::HostResolver::RequestInfo info(net::HostPortPair( | 83 int result = resolver_->Resolve(info, &addr_, |
80 hostname_, port_)); | 84 base::Bind(&WebSocketProxyPrivate::OnHostResolution, this), |
81 int result = resolver_->Resolve(info, &addr_, | 85 net::BoundNetLog()); |
82 base::Bind(&WebSocketProxyPrivate::OnHostResolution, this), | 86 if (result != net::ERR_IO_PENDING) |
83 net::BoundNetLog()); | 87 OnHostResolution(result); |
84 if (result != net::ERR_IO_PENDING) | 88 return; |
85 OnHostResolution(result); | |
86 return; | |
87 } | |
88 } | 89 } |
89 } | 90 } |
90 NOTREACHED(); | 91 NOTREACHED(); |
91 OnHostResolution(net::ERR_UNEXPECTED); | 92 OnHostResolution(net::ERR_UNEXPECTED); |
92 #endif | 93 #endif |
93 } | 94 } |
94 | 95 |
95 bool WebSocketProxyPrivate::RunImpl() { | 96 bool WebSocketProxyPrivate::RunImpl() { |
96 AddRef(); | 97 AddRef(); |
97 result_.reset(Value::CreateStringValue("")); | 98 result_.reset(Value::CreateStringValue("")); |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
205 void WebSocketProxyPrivateGetPassportForTCPFunction::CustomFinalize() { | 206 void WebSocketProxyPrivateGetPassportForTCPFunction::CustomFinalize() { |
206 #if defined(OS_CHROMEOS) | 207 #if defined(OS_CHROMEOS) |
207 std::string passport = | 208 std::string passport = |
208 browser::InternalAuthGeneration::GeneratePassport( | 209 browser::InternalAuthGeneration::GeneratePassport( |
209 "web_socket_proxy", map_) + std::string(":"); | 210 "web_socket_proxy", map_) + std::string(":"); |
210 if (ContainsKey(map_, "addr")) | 211 if (ContainsKey(map_, "addr")) |
211 passport += map_["addr"]; | 212 passport += map_["addr"]; |
212 result_.reset(Value::CreateStringValue(passport)); | 213 result_.reset(Value::CreateStringValue(passport)); |
213 #endif | 214 #endif |
214 } | 215 } |
OLD | NEW |