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

Side by Side Diff: chrome/browser/io_thread.cc

Issue 1562593002: Fix potential crashes in NetworkHandler code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@test
Patch Set: Created 4 years, 11 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/io_thread.h" 5 #include "chrome/browser/io_thread.h"
6 6
7 #include <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/base64.h" 10 #include "base/base64.h"
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 value->GetAsBoolean(&is_quic_allowed_by_policy_); 549 value->GetAsBoolean(&is_quic_allowed_by_policy_);
550 #endif // ENABLE_CONFIGURATION_POLICY 550 #endif // ENABLE_CONFIGURATION_POLICY
551 551
552 BrowserThread::SetDelegate(BrowserThread::IO, this); 552 BrowserThread::SetDelegate(BrowserThread::IO, this);
553 } 553 }
554 554
555 IOThread::~IOThread() { 555 IOThread::~IOThread() {
556 // This isn't needed for production code, but in tests, IOThread may 556 // This isn't needed for production code, but in tests, IOThread may
557 // be multiply constructed. 557 // be multiply constructed.
558 BrowserThread::SetDelegate(BrowserThread::IO, NULL); 558 BrowserThread::SetDelegate(BrowserThread::IO, NULL);
559 559 ShutdownPrefProxyConfigTracker();
560 pref_proxy_config_tracker_->DetachFromPrefService();
561 DCHECK(!globals_); 560 DCHECK(!globals_);
562 } 561 }
563 562
564 IOThread::Globals* IOThread::globals() { 563 IOThread::Globals* IOThread::globals() {
565 DCHECK_CURRENTLY_ON(BrowserThread::IO); 564 DCHECK_CURRENTLY_ON(BrowserThread::IO);
566 return globals_; 565 return globals_;
567 } 566 }
568 567
569 void IOThread::SetGlobalsForTesting(Globals* globals) { 568 void IOThread::SetGlobalsForTesting(Globals* globals) {
570 DCHECK_CURRENTLY_ON(BrowserThread::IO); 569 DCHECK_CURRENTLY_ON(BrowserThread::IO);
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
886 // this task to the main thread's message loop here is guaranteed to 885 // this task to the main thread's message loop here is guaranteed to
887 // get it onto the message loop while the IOThread object still 886 // get it onto the message loop while the IOThread object still
888 // exists. However, the message might not be processed on the UI 887 // exists. However, the message might not be processed on the UI
889 // thread until after IOThread is gone, so use a weak pointer. 888 // thread until after IOThread is gone, so use a weak pointer.
890 BrowserThread::PostTask(BrowserThread::UI, 889 BrowserThread::PostTask(BrowserThread::UI,
891 FROM_HERE, 890 FROM_HERE,
892 base::Bind(&IOThread::InitSystemRequestContext, 891 base::Bind(&IOThread::InitSystemRequestContext,
893 weak_factory_.GetWeakPtr())); 892 weak_factory_.GetWeakPtr()));
894 } 893 }
895 894
895 void IOThread::ShutdownPrefProxyConfigTracker() {
896 if (!pref_proxy_config_tracker_)
897 return;
898 pref_proxy_config_tracker_->DetachFromPrefService();
899 pref_proxy_config_tracker_.reset();
900 }
901
896 void IOThread::CleanUp() { 902 void IOThread::CleanUp() {
897 base::debug::LeakTracker<SafeBrowsingURLRequestContext>::CheckForLeaks(); 903 base::debug::LeakTracker<SafeBrowsingURLRequestContext>::CheckForLeaks();
898 904
899 #if defined(USE_NSS_CERTS) || defined(OS_IOS) 905 #if defined(USE_NSS_CERTS) || defined(OS_IOS)
900 net::ShutdownNSSHttpIO(); 906 net::ShutdownNSSHttpIO();
901 #endif 907 #endif
902 908
903 system_url_request_context_getter_ = NULL; 909 system_url_request_context_getter_ = NULL;
904 910
905 // Release objects that the net::URLRequestContext could have been pointing 911 // Release objects that the net::URLRequestContext could have been pointing
(...skipping 842 matching lines...) Expand 10 before | Expand all | Expand 10 after
1748 std::move(job_factory); 1754 std::move(job_factory);
1749 1755
1750 context->set_job_factory( 1756 context->set_job_factory(
1751 globals->proxy_script_fetcher_url_request_job_factory.get()); 1757 globals->proxy_script_fetcher_url_request_job_factory.get());
1752 1758
1753 // TODO(rtenneti): We should probably use HttpServerPropertiesManager for the 1759 // TODO(rtenneti): We should probably use HttpServerPropertiesManager for the
1754 // system URLRequestContext too. There's no reason this should be tied to a 1760 // system URLRequestContext too. There's no reason this should be tied to a
1755 // profile. 1761 // profile.
1756 return context; 1762 return context;
1757 } 1763 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698