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/chromeos/dbus/proxy_resolution_service_provider.h" | 5 #include "chrome/browser/chromeos/dbus/proxy_resolution_service_provider.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/threading/platform_thread.h" | 8 #include "base/threading/platform_thread.h" |
9 #include "chrome/browser/browser_process.h" | 9 #include "chrome/browser/browser_process.h" |
10 #include "chrome/browser/profiles/profile_manager.h" | 10 #include "chrome/browser/profiles/profile_manager.h" |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 LOG(ERROR) << "Failed to export " << interface_name << "." | 217 LOG(ERROR) << "Failed to export " << interface_name << "." |
218 << method_name; | 218 << method_name; |
219 } | 219 } |
220 VLOG(1) << "Method exported: " << interface_name << "." << method_name; | 220 VLOG(1) << "Method exported: " << interface_name << "." << method_name; |
221 } | 221 } |
222 | 222 |
223 bool ProxyResolutionServiceProvider::OnOriginThread() { | 223 bool ProxyResolutionServiceProvider::OnOriginThread() { |
224 return base::PlatformThread::CurrentId() == origin_thread_id_; | 224 return base::PlatformThread::CurrentId() == origin_thread_id_; |
225 } | 225 } |
226 | 226 |
227 dbus::Response* ProxyResolutionServiceProvider::ResolveProxyHandler( | 227 void ProxyResolutionServiceProvider::ResolveProxyHandler( |
228 dbus::MethodCall* method_call) { | 228 dbus::MethodCall* method_call, |
| 229 dbus::ExportedObject::ResponseSender response_sender) { |
229 DCHECK(OnOriginThread()); | 230 DCHECK(OnOriginThread()); |
230 VLOG(1) << "Handing method call: " << method_call->ToString(); | 231 VLOG(1) << "Handing method call: " << method_call->ToString(); |
231 // The method call should contain the three string parameters. | 232 // The method call should contain the three string parameters. |
232 dbus::MessageReader reader(method_call); | 233 dbus::MessageReader reader(method_call); |
233 std::string source_url; | 234 std::string source_url; |
234 std::string signal_interface; | 235 std::string signal_interface; |
235 std::string signal_name; | 236 std::string signal_name; |
236 if (!reader.PopString(&source_url) || | 237 if (!reader.PopString(&source_url) || |
237 !reader.PopString(&signal_interface) || | 238 !reader.PopString(&signal_interface) || |
238 !reader.PopString(&signal_name)) { | 239 !reader.PopString(&signal_name)) { |
239 LOG(ERROR) << "Unexpected method call: " << method_call->ToString(); | 240 LOG(ERROR) << "Unexpected method call: " << method_call->ToString(); |
240 return NULL; | 241 response_sender.Run(NULL); |
| 242 return; |
241 } | 243 } |
242 | 244 |
243 resolver_->ResolveProxy(source_url, | 245 resolver_->ResolveProxy(source_url, |
244 signal_interface, | 246 signal_interface, |
245 signal_name, | 247 signal_name, |
246 exported_object_); | 248 exported_object_); |
247 | 249 |
248 // Return an empty response for now. We'll send a signal once the | 250 // Send an empty response for now. We'll send a signal once the network proxy |
249 // network proxy resolution is completed. | 251 // resolution is completed. |
250 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 252 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
251 return response; | 253 response_sender.Run(response); |
252 } | 254 } |
253 | 255 |
254 // static | 256 // static |
255 dbus::Response* ProxyResolutionServiceProvider::CallResolveProxyHandler( | 257 void ProxyResolutionServiceProvider::CallResolveProxyHandler( |
256 base::WeakPtr<ProxyResolutionServiceProvider> provider_weak_ptr, | 258 base::WeakPtr<ProxyResolutionServiceProvider> provider_weak_ptr, |
257 dbus::MethodCall* method_call) { | 259 dbus::MethodCall* method_call, |
| 260 dbus::ExportedObject::ResponseSender response_sender) { |
258 if (!provider_weak_ptr) { | 261 if (!provider_weak_ptr) { |
259 LOG(WARNING) << "Called after the object is deleted"; | 262 LOG(WARNING) << "Called after the object is deleted"; |
260 return NULL; | 263 response_sender.Run(NULL); |
| 264 return; |
261 } | 265 } |
262 return provider_weak_ptr->ResolveProxyHandler(method_call); | 266 provider_weak_ptr->ResolveProxyHandler(method_call, response_sender); |
263 } | 267 } |
264 | 268 |
265 ProxyResolutionServiceProvider* ProxyResolutionServiceProvider::Create() { | 269 ProxyResolutionServiceProvider* ProxyResolutionServiceProvider::Create() { |
266 return new ProxyResolutionServiceProvider(new ProxyResolverImpl); | 270 return new ProxyResolutionServiceProvider(new ProxyResolverImpl); |
267 } | 271 } |
268 | 272 |
269 ProxyResolutionServiceProvider* | 273 ProxyResolutionServiceProvider* |
270 ProxyResolutionServiceProvider::CreateForTesting( | 274 ProxyResolutionServiceProvider::CreateForTesting( |
271 ProxyResolverInterface* resolver) { | 275 ProxyResolverInterface* resolver) { |
272 return new ProxyResolutionServiceProvider(resolver); | 276 return new ProxyResolutionServiceProvider(resolver); |
273 } | 277 } |
274 | 278 |
275 ProxyResolverInterface::~ProxyResolverInterface() { | 279 ProxyResolverInterface::~ProxyResolverInterface() { |
276 } | 280 } |
277 | 281 |
278 } // namespace chromeos | 282 } // namespace chromeos |
OLD | NEW |