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

Unified Diff: net/proxy/proxy_resolver_mojo.cc

Issue 1100763002: Inject CanAddURLToHistory into TopSitesImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@prefs
Patch Set: Fix error introduced during rebase Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/proxy/proxy_resolver_mojo.h ('k') | net/proxy/proxy_resolver_mojo_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/proxy/proxy_resolver_mojo.cc
diff --git a/net/proxy/proxy_resolver_mojo.cc b/net/proxy/proxy_resolver_mojo.cc
index 89a037484489fce15fac2183fe38d3cf2058c401..bc15704d7194268205b39b6130be8be56d1ada02 100644
--- a/net/proxy/proxy_resolver_mojo.cc
+++ b/net/proxy/proxy_resolver_mojo.cc
@@ -100,9 +100,10 @@ void ProxyResolverMojo::Job::ReportResult(
DVLOG(1) << "Servers: " << results_->ToPacString();
}
- callback_.Run(error);
+ CompletionCallback callback = callback_;
callback_.Reset();
resolver_->RemoveJob(this);
+ callback.Run(error);
}
void ProxyResolverMojo::Job::LoadStateChanged(int32_t load_state) {
@@ -163,8 +164,11 @@ void ProxyResolverMojo::OnSetPacScriptDone(
DCHECK(!set_pac_script_callback_.IsCancelled());
DVLOG(1) << "ProxyResolverMojo::OnSetPacScriptDone: " << result;
- callback.Run(result);
+ // |callback| is owned by |set_pac_script_callback_|, so make a copy before
+ // cancelling.
+ auto callback_copy = callback;
set_pac_script_callback_.Cancel();
+ callback_copy.Run(result);
}
void ProxyResolverMojo::SetUpServices() {
@@ -182,26 +186,6 @@ void ProxyResolverMojo::SetUpServices() {
mojo_proxy_resolver_ptr_.set_error_handler(this);
}
-void ProxyResolverMojo::AbortPendingRequests() {
- DCHECK(thread_checker_.CalledOnValidThread());
- if (!set_pac_script_callback_.IsCancelled()) {
- set_pac_script_callback_.callback().Run(ERR_PAC_SCRIPT_TERMINATED);
- set_pac_script_callback_.Cancel();
- }
-
- // Need to use this loop because deleting a Job will cause its callback to be
- // run with a failure error code, which may cause other Jobs to be deleted.
- while (!pending_jobs_.empty()) {
- auto it = pending_jobs_.begin();
- Job* job = *it;
- pending_jobs_.erase(it);
-
- // Deleting the job will cause its completion callback to be run with an
- // ERR_PAC_SCRIPT_TERMINATED error.
- delete job;
- }
-}
-
void ProxyResolverMojo::OnConnectionError() {
DCHECK(thread_checker_.CalledOnValidThread());
DVLOG(1) << "ProxyResolverMojo::OnConnectionError";
@@ -210,10 +194,11 @@ void ProxyResolverMojo::OnConnectionError() {
// will happen on the next |SetPacScript()| request.
mojo_proxy_resolver_ptr_.reset();
- // Aborting requests will invoke their callbacks, which may call
- // |SetPacScript()| and re-create the connection. So disconnect from the Mojo
- // service (above) before aborting the pending requests.
- AbortPendingRequests();
+ // This callback may call |SetPacScript()| and re-create the connection. So
+ // disconnect from the Mojo service (above) before aborting the pending
+ // request.
+ if (!set_pac_script_callback_.IsCancelled())
+ set_pac_script_callback_.callback().Run(ERR_PAC_SCRIPT_TERMINATED);
}
void ProxyResolverMojo::RemoveJob(Job* job) {
« no previous file with comments | « net/proxy/proxy_resolver_mojo.h ('k') | net/proxy/proxy_resolver_mojo_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698