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

Side by Side Diff: net/proxy/proxy_resolver_v8_tracing.cc

Issue 1141573002: [net/proxy] Usage of ThreadTaskRunnerHandle & SingleThreadTaskRunner instead of MLP (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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 unified diff | Download patch
« no previous file with comments | « net/proxy/proxy_resolver_v8_tracing.h ('k') | net/proxy/proxy_script_fetcher_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "net/proxy/proxy_resolver_v8_tracing.h" 5 #include "net/proxy/proxy_resolver_v8_tracing.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop/message_loop_proxy.h" 8 #include "base/single_thread_task_runner.h"
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "base/synchronization/cancellation_flag.h" 10 #include "base/synchronization/cancellation_flag.h"
11 #include "base/synchronization/waitable_event.h" 11 #include "base/synchronization/waitable_event.h"
12 #include "base/thread_task_runner_handle.h"
12 #include "base/threading/thread.h" 13 #include "base/threading/thread.h"
13 #include "base/threading/thread_restrictions.h" 14 #include "base/threading/thread_restrictions.h"
14 #include "base/values.h" 15 #include "base/values.h"
15 #include "net/base/address_list.h" 16 #include "net/base/address_list.h"
16 #include "net/base/net_errors.h" 17 #include "net/base/net_errors.h"
17 #include "net/dns/host_resolver.h" 18 #include "net/dns/host_resolver.h"
18 #include "net/log/net_log.h" 19 #include "net/log/net_log.h"
19 #include "net/proxy/proxy_info.h" 20 #include "net/proxy/proxy_info.h"
20 #include "net/proxy/proxy_resolver_error_observer.h" 21 #include "net/proxy/proxy_resolver_error_observer.h"
21 #include "net/proxy/proxy_resolver_v8.h" 22 #include "net/proxy/proxy_resolver_v8.h"
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 void DispatchBufferedAlertsAndErrors(); 194 void DispatchBufferedAlertsAndErrors();
194 void DispatchAlertOrError(bool is_alert, int line_number, 195 void DispatchAlertOrError(bool is_alert, int line_number,
195 const base::string16& message); 196 const base::string16& message);
196 197
197 void LogEventToCurrentRequestAndGlobally( 198 void LogEventToCurrentRequestAndGlobally(
198 NetLog::EventType type, 199 NetLog::EventType type,
199 const NetLog::ParametersCallback& parameters_callback); 200 const NetLog::ParametersCallback& parameters_callback);
200 201
201 // The thread which called into ProxyResolverV8Tracing, and on which the 202 // The thread which called into ProxyResolverV8Tracing, and on which the
202 // completion callback is expected to run. 203 // completion callback is expected to run.
203 scoped_refptr<base::MessageLoopProxy> origin_loop_; 204 scoped_refptr<base::SingleThreadTaskRunner> origin_runner_;
204 205
205 // The ProxyResolverV8Tracing which spawned this Job. 206 // The ProxyResolverV8Tracing which spawned this Job.
206 // Initialized on origin thread and then accessed from both threads. 207 // Initialized on origin thread and then accessed from both threads.
207 ProxyResolverV8Tracing* parent_; 208 ProxyResolverV8Tracing* parent_;
208 209
209 // The callback to run (on the origin thread) when the Job finishes. 210 // The callback to run (on the origin thread) when the Job finishes.
210 // Should only be accessed from origin thread. 211 // Should only be accessed from origin thread.
211 CompletionCallback callback_; 212 CompletionCallback callback_;
212 213
213 // Flag to indicate whether the request has been cancelled. 214 // Flag to indicate whether the request has been cancelled.
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 // read by the origin thread. 289 // read by the origin thread.
289 std::string pending_dns_host_; 290 std::string pending_dns_host_;
290 ResolveDnsOperation pending_dns_op_; 291 ResolveDnsOperation pending_dns_op_;
291 292
292 // This contains the resolved address list that DoDnsOperation() fills in. 293 // This contains the resolved address list that DoDnsOperation() fills in.
293 // Used exclusively on the origin thread. 294 // Used exclusively on the origin thread.
294 AddressList pending_dns_addresses_; 295 AddressList pending_dns_addresses_;
295 }; 296 };
296 297
297 ProxyResolverV8Tracing::Job::Job(ProxyResolverV8Tracing* parent) 298 ProxyResolverV8Tracing::Job::Job(ProxyResolverV8Tracing* parent)
298 : origin_loop_(base::MessageLoopProxy::current()), 299 : origin_runner_(base::ThreadTaskRunnerHandle::Get()),
299 parent_(parent), 300 parent_(parent),
300 event_(true, false), 301 event_(true, false),
301 last_num_dns_(0), 302 last_num_dns_(0),
302 pending_dns_(NULL) { 303 pending_dns_(NULL) {
303 CheckIsOnOriginThread(); 304 CheckIsOnOriginThread();
304 } 305 }
305 306
306 void ProxyResolverV8Tracing::Job::StartSetPacScript( 307 void ProxyResolverV8Tracing::Job::StartSetPacScript(
307 const scoped_refptr<ProxyResolverScriptData>& script_data, 308 const scoped_refptr<ProxyResolverScriptData>& script_data,
308 const CompletionCallback& callback) { 309 const CompletionCallback& callback) {
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 ProxyResolverV8Tracing::Job::~Job() { 379 ProxyResolverV8Tracing::Job::~Job() {
379 DCHECK(!pending_dns_); 380 DCHECK(!pending_dns_);
380 DCHECK(callback_.is_null()); 381 DCHECK(callback_.is_null());
381 } 382 }
382 383
383 void ProxyResolverV8Tracing::Job::CheckIsOnWorkerThread() const { 384 void ProxyResolverV8Tracing::Job::CheckIsOnWorkerThread() const {
384 DCHECK_EQ(base::MessageLoop::current(), parent_->thread_->message_loop()); 385 DCHECK_EQ(base::MessageLoop::current(), parent_->thread_->message_loop());
385 } 386 }
386 387
387 void ProxyResolverV8Tracing::Job::CheckIsOnOriginThread() const { 388 void ProxyResolverV8Tracing::Job::CheckIsOnOriginThread() const {
388 DCHECK(origin_loop_->BelongsToCurrentThread()); 389 DCHECK(origin_runner_->BelongsToCurrentThread());
389 } 390 }
390 391
391 void ProxyResolverV8Tracing::Job::SetCallback( 392 void ProxyResolverV8Tracing::Job::SetCallback(
392 const CompletionCallback& callback) { 393 const CompletionCallback& callback) {
393 CheckIsOnOriginThread(); 394 CheckIsOnOriginThread();
394 DCHECK(callback_.is_null()); 395 DCHECK(callback_.is_null());
395 parent_->num_outstanding_callbacks_++; 396 parent_->num_outstanding_callbacks_++;
396 callback_ = callback; 397 callback_ = callback;
397 } 398 }
398 399
(...skipping 24 matching lines...) Expand all
423 return parent_->error_observer_.get(); 424 return parent_->error_observer_.get();
424 } 425 }
425 426
426 NetLog* ProxyResolverV8Tracing::Job::net_log() { 427 NetLog* ProxyResolverV8Tracing::Job::net_log() {
427 return parent_->net_log_; 428 return parent_->net_log_;
428 } 429 }
429 430
430 void ProxyResolverV8Tracing::Job::NotifyCaller(int result) { 431 void ProxyResolverV8Tracing::Job::NotifyCaller(int result) {
431 CheckIsOnWorkerThread(); 432 CheckIsOnWorkerThread();
432 433
433 origin_loop_->PostTask( 434 origin_runner_->PostTask(
434 FROM_HERE, 435 FROM_HERE, base::Bind(&Job::NotifyCallerOnOriginLoop, this, result));
435 base::Bind(&Job::NotifyCallerOnOriginLoop, this, result));
436 } 436 }
437 437
438 void ProxyResolverV8Tracing::Job::NotifyCallerOnOriginLoop(int result) { 438 void ProxyResolverV8Tracing::Job::NotifyCallerOnOriginLoop(int result) {
439 CheckIsOnOriginThread(); 439 CheckIsOnOriginThread();
440 440
441 if (cancelled_.IsSet()) 441 if (cancelled_.IsSet())
442 return; 442 return;
443 443
444 DCHECK(!callback_.is_null()); 444 DCHECK(!callback_.is_null());
445 DCHECK(!pending_dns_); 445 DCHECK(!pending_dns_);
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
655 } 655 }
656 656
657 bool ProxyResolverV8Tracing::Job::PostDnsOperationAndWait( 657 bool ProxyResolverV8Tracing::Job::PostDnsOperationAndWait(
658 const std::string& host, ResolveDnsOperation op, 658 const std::string& host, ResolveDnsOperation op,
659 bool* completed_synchronously) { 659 bool* completed_synchronously) {
660 660
661 // Post the DNS request to the origin thread. 661 // Post the DNS request to the origin thread.
662 DCHECK(!pending_dns_); 662 DCHECK(!pending_dns_);
663 pending_dns_host_ = host; 663 pending_dns_host_ = host;
664 pending_dns_op_ = op; 664 pending_dns_op_ = op;
665 origin_loop_->PostTask(FROM_HERE, base::Bind(&Job::DoDnsOperation, this)); 665 origin_runner_->PostTask(FROM_HERE, base::Bind(&Job::DoDnsOperation, this));
666 666
667 event_.Wait(); 667 event_.Wait();
668 event_.Reset(); 668 event_.Reset();
669 669
670 if (cancelled_.IsSet()) 670 if (cancelled_.IsSet())
671 return false; 671 return false;
672 672
673 if (completed_synchronously) 673 if (completed_synchronously)
674 *completed_synchronously = pending_dns_completed_synchronously_; 674 *completed_synchronously = pending_dns_completed_synchronously_;
675 675
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
1025 DCHECK(!set_pac_script_job_.get()); 1025 DCHECK(!set_pac_script_job_.get());
1026 CHECK_EQ(0, num_outstanding_callbacks_); 1026 CHECK_EQ(0, num_outstanding_callbacks_);
1027 1027
1028 set_pac_script_job_ = new Job(this); 1028 set_pac_script_job_ = new Job(this);
1029 set_pac_script_job_->StartSetPacScript(script_data, callback); 1029 set_pac_script_job_->StartSetPacScript(script_data, callback);
1030 1030
1031 return ERR_IO_PENDING; 1031 return ERR_IO_PENDING;
1032 } 1032 }
1033 1033
1034 } // namespace net 1034 } // namespace net
OLDNEW
« no previous file with comments | « net/proxy/proxy_resolver_v8_tracing.h ('k') | net/proxy/proxy_script_fetcher_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698