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

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

Issue 939503004: Add LoadState reporting to the mojo proxy resolver. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@proxy-resolver-mojo
Patch Set: Created 5 years, 10 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
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/message_loop/message_loop_proxy.h"
9 #include "base/profiler/scoped_tracker.h" 9 #include "base/profiler/scoped_tracker.h"
10 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
(...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 if (!pending_dns_completed_synchronously_) 700 if (!pending_dns_completed_synchronously_)
701 host_resolver()->CancelRequest(dns_request); 701 host_resolver()->CancelRequest(dns_request);
702 return; 702 return;
703 } 703 }
704 704
705 if (pending_dns_completed_synchronously_) { 705 if (pending_dns_completed_synchronously_) {
706 OnDnsOperationComplete(result); 706 OnDnsOperationComplete(result);
707 } else { 707 } else {
708 DCHECK(dns_request); 708 DCHECK(dns_request);
709 pending_dns_ = dns_request; 709 pending_dns_ = dns_request;
710 if (!parent_->on_load_state_changed_.is_null()) {
711 parent_->on_load_state_changed_.Run(
712 this, LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT);
713 }
710 // OnDnsOperationComplete() will be called by host resolver on completion. 714 // OnDnsOperationComplete() will be called by host resolver on completion.
711 } 715 }
712 716
713 if (!blocking_dns_) { 717 if (!blocking_dns_) {
714 // The worker thread always blocks waiting to see if the result can be 718 // The worker thread always blocks waiting to see if the result can be
715 // serviced from cache before restarting. 719 // serviced from cache before restarting.
716 event_.Signal(); 720 event_.Signal();
717 } 721 }
718 } 722 }
719 723
720 void ProxyResolverV8Tracing::Job::OnDnsOperationComplete(int result) { 724 void ProxyResolverV8Tracing::Job::OnDnsOperationComplete(int result) {
721 // TODO(vadimt): Remove ScopedTracker below once crbug.com/436634 is fixed. 725 // TODO(vadimt): Remove ScopedTracker below once crbug.com/436634 is fixed.
722 tracked_objects::ScopedTracker tracking_profile( 726 tracked_objects::ScopedTracker tracking_profile(
723 FROM_HERE_WITH_EXPLICIT_FUNCTION( 727 FROM_HERE_WITH_EXPLICIT_FUNCTION(
724 "436634 ProxyResolverV8Tracing::Job::OnDnsOperationComplete")); 728 "436634 ProxyResolverV8Tracing::Job::OnDnsOperationComplete"));
725 729
726 CheckIsOnOriginThread(); 730 CheckIsOnOriginThread();
727 731
728 DCHECK(!cancelled_.IsSet()); 732 DCHECK(!cancelled_.IsSet());
729 DCHECK(pending_dns_completed_synchronously_ == (pending_dns_ == NULL)); 733 DCHECK(pending_dns_completed_synchronously_ == (pending_dns_ == NULL));
730 734
731 SaveDnsToLocalCache(pending_dns_host_, pending_dns_op_, result, 735 SaveDnsToLocalCache(pending_dns_host_, pending_dns_op_, result,
732 pending_dns_addresses_); 736 pending_dns_addresses_);
733 pending_dns_ = NULL; 737 pending_dns_ = NULL;
734 738
739 if (!parent_->on_load_state_changed_.is_null()) {
740 parent_->on_load_state_changed_.Run(this,
741 LOAD_STATE_RESOLVING_PROXY_FOR_URL);
eroman 2015/02/25 00:08:06 Note that OnDnsOperationComplete() is called in re
Sam McNally 2015/02/26 04:00:01 Added a check for pending_dns_completed_synchronou
742 }
743
735 if (blocking_dns_) { 744 if (blocking_dns_) {
736 event_.Signal(); 745 event_.Signal();
737 return; 746 return;
738 } 747 }
739 748
740 if (!blocking_dns_ && !pending_dns_completed_synchronously_) { 749 if (!blocking_dns_ && !pending_dns_completed_synchronously_) {
741 // Restart. This time it should make more progress due to having 750 // Restart. This time it should make more progress due to having
742 // cached items. 751 // cached items.
743 worker_loop()->PostTask(FROM_HERE, 752 worker_loop()->PostTask(FROM_HERE,
744 base::Bind(&Job::ExecuteNonBlocking, this)); 753 base::Bind(&Job::ExecuteNonBlocking, this));
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
927 936
928 // Emit to the global NetLog event stream. 937 // Emit to the global NetLog event stream.
929 if (net_log()) 938 if (net_log())
930 net_log()->AddGlobalEntry(type, parameters_callback); 939 net_log()->AddGlobalEntry(type, parameters_callback);
931 } 940 }
932 941
933 ProxyResolverV8Tracing::ProxyResolverV8Tracing( 942 ProxyResolverV8Tracing::ProxyResolverV8Tracing(
934 HostResolver* host_resolver, 943 HostResolver* host_resolver,
935 ProxyResolverErrorObserver* error_observer, 944 ProxyResolverErrorObserver* error_observer,
936 NetLog* net_log) 945 NetLog* net_log)
946 : ProxyResolverV8Tracing(host_resolver,
947 error_observer,
948 net_log,
949 LoadStateChangedCallback<RequestHandle>()) {
950 }
951
952 ProxyResolverV8Tracing::ProxyResolverV8Tracing(
953 HostResolver* host_resolver,
954 ProxyResolverErrorObserver* error_observer,
955 NetLog* net_log,
956 const LoadStateChangedCallback<RequestHandle>& on_load_state_changed)
937 : ProxyResolver(true /*expects_pac_bytes*/), 957 : ProxyResolver(true /*expects_pac_bytes*/),
938 host_resolver_(host_resolver), 958 host_resolver_(host_resolver),
939 error_observer_(error_observer), 959 error_observer_(error_observer),
940 net_log_(net_log), 960 net_log_(net_log),
941 num_outstanding_callbacks_(0) { 961 num_outstanding_callbacks_(0),
962 on_load_state_changed_(on_load_state_changed) {
942 DCHECK(host_resolver); 963 DCHECK(host_resolver);
943 // Start up the thread. 964 // Start up the thread.
944 thread_.reset(new base::Thread("Proxy resolver")); 965 thread_.reset(new base::Thread("Proxy resolver"));
945 base::Thread::Options options; 966 base::Thread::Options options;
946 options.timer_slack = base::TIMER_SLACK_MAXIMUM; 967 options.timer_slack = base::TIMER_SLACK_MAXIMUM;
947 CHECK(thread_->StartWithOptions(options)); 968 CHECK(thread_->StartWithOptions(options));
948 969
949 v8_resolver_.reset(new ProxyResolverV8); 970 v8_resolver_.reset(new ProxyResolverV8);
950 } 971 }
951 972
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1007 DCHECK(!set_pac_script_job_.get()); 1028 DCHECK(!set_pac_script_job_.get());
1008 CHECK_EQ(0, num_outstanding_callbacks_); 1029 CHECK_EQ(0, num_outstanding_callbacks_);
1009 1030
1010 set_pac_script_job_ = new Job(this); 1031 set_pac_script_job_ = new Job(this);
1011 set_pac_script_job_->StartSetPacScript(script_data, callback); 1032 set_pac_script_job_->StartSetPacScript(script_data, callback);
1012 1033
1013 return ERR_IO_PENDING; 1034 return ERR_IO_PENDING;
1014 } 1035 }
1015 1036
1016 } // namespace net 1037 } // namespace net
OLDNEW
« net/proxy/mojo_proxy_resolver_impl_unittest.cc ('K') | « net/proxy/proxy_resolver_v8_tracing.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698