diff options
23 files changed, 151 insertions, 80 deletions
diff --git a/chrome/browser/devtools/BUILD.gn b/chrome/browser/devtools/BUILD.gn index 976801b..c87984a 100644 --- a/chrome/browser/devtools/BUILD.gn +++ b/chrome/browser/devtools/BUILD.gn @@ -36,6 +36,8 @@ static_library("devtools") { "devtools_network_conditions.h", "devtools_network_controller.cc", "devtools_network_controller.h", + "devtools_network_controller_handle.cc", + "devtools_network_controller_handle.h", "devtools_network_interceptor.cc", "devtools_network_interceptor.h", "devtools_network_protocol_handler.cc", diff --git a/chrome/browser/devtools/devtools_network_controller.cc b/chrome/browser/devtools/devtools_network_controller.cc index ff785b55..43d09b6 100644 --- a/chrome/browser/devtools/devtools_network_controller.cc +++ b/chrome/browser/devtools/devtools_network_controller.cc @@ -7,18 +7,14 @@ #include "chrome/browser/devtools/devtools_network_conditions.h" #include "chrome/browser/devtools/devtools_network_interceptor.h" #include "chrome/browser/devtools/devtools_network_transaction.h" -#include "content/public/browser/browser_thread.h" #include "net/http/http_request_info.h" -using content::BrowserThread; - DevToolsNetworkController::DevToolsNetworkController() : default_interceptor_(new DevToolsNetworkInterceptor()), - appcache_interceptor_(new DevToolsNetworkInterceptor()), - weak_ptr_factory_(this) { -} + appcache_interceptor_(new DevToolsNetworkInterceptor()) {} DevToolsNetworkController::~DevToolsNetworkController() { + DCHECK(thread_checker_.CalledOnValidThread()); } base::WeakPtr<DevToolsNetworkInterceptor> @@ -47,20 +43,6 @@ DevToolsNetworkController::GetInterceptor( void DevToolsNetworkController::SetNetworkState( const std::string& client_id, scoped_ptr<DevToolsNetworkConditions> conditions) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - BrowserThread::PostTask( - content::BrowserThread::IO, - FROM_HERE, - base::Bind( - &DevToolsNetworkController::SetNetworkStateOnIO, - weak_ptr_factory_.GetWeakPtr(), - client_id, - base::Passed(&conditions))); -} - -void DevToolsNetworkController::SetNetworkStateOnIO( - const std::string& client_id, - scoped_ptr<DevToolsNetworkConditions> conditions) { DCHECK(thread_checker_.CalledOnValidThread()); DevToolsNetworkInterceptor* interceptor = interceptors_.get(client_id); @@ -68,7 +50,8 @@ void DevToolsNetworkController::SetNetworkStateOnIO( DCHECK(conditions); if (!conditions) return; - Interceptor new_interceptor = Interceptor(new DevToolsNetworkInterceptor()); + scoped_ptr<DevToolsNetworkInterceptor> new_interceptor( + new DevToolsNetworkInterceptor()); new_interceptor->UpdateConditions(conditions.Pass()); interceptors_.set(client_id, new_interceptor.Pass()); } else { @@ -83,7 +66,7 @@ void DevToolsNetworkController::SetNetworkStateOnIO( } bool has_offline_interceptors = false; - Interceptors::iterator it = interceptors_.begin(); + InterceptorMap::iterator it = interceptors_.begin(); for (; it != interceptors_.end(); ++it) { if (it->second->conditions()->offline()) { has_offline_interceptors = true; diff --git a/chrome/browser/devtools/devtools_network_controller.h b/chrome/browser/devtools/devtools_network_controller.h index dddcac9..2fe0880 100644 --- a/chrome/browser/devtools/devtools_network_controller.h +++ b/chrome/browser/devtools/devtools_network_controller.h @@ -17,13 +17,8 @@ class DevToolsNetworkConditions; class DevToolsNetworkInterceptor; class DevToolsNetworkTransaction; -namespace test { -class DevToolsNetworkControllerHelper; -} - // DevToolsNetworkController tracks DevToolsNetworkTransactions. class DevToolsNetworkController { - public: DevToolsNetworkController(); virtual ~DevToolsNetworkController(); @@ -36,26 +31,15 @@ class DevToolsNetworkController { base::WeakPtr<DevToolsNetworkInterceptor> GetInterceptor( DevToolsNetworkTransaction* transaction); - protected: - friend class test::DevToolsNetworkControllerHelper; - private: - // Controller must be constructed on IO thread. - base::ThreadChecker thread_checker_; + using InterceptorMap = + base::ScopedPtrHashMap<std::string, + scoped_ptr<DevToolsNetworkInterceptor>>; - void SetNetworkStateOnIO( - const std::string& client_id, - scoped_ptr<DevToolsNetworkConditions> conditions); - - typedef scoped_ptr<DevToolsNetworkInterceptor> Interceptor; - Interceptor default_interceptor_; - Interceptor appcache_interceptor_; - typedef base::ScopedPtrHashMap<std::string, - scoped_ptr<DevToolsNetworkInterceptor>> - Interceptors; - Interceptors interceptors_; - - base::WeakPtrFactory<DevToolsNetworkController> weak_ptr_factory_; + scoped_ptr<DevToolsNetworkInterceptor> default_interceptor_; + scoped_ptr<DevToolsNetworkInterceptor> appcache_interceptor_; + InterceptorMap interceptors_; + base::ThreadChecker thread_checker_; DISALLOW_COPY_AND_ASSIGN(DevToolsNetworkController); }; diff --git a/chrome/browser/devtools/devtools_network_controller_handle.cc b/chrome/browser/devtools/devtools_network_controller_handle.cc new file mode 100644 index 0000000..0cd1349 --- /dev/null +++ b/chrome/browser/devtools/devtools_network_controller_handle.cc @@ -0,0 +1,52 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/devtools/devtools_network_controller_handle.h" + +#include "base/bind.h" +#include "chrome/browser/devtools/devtools_network_conditions.h" +#include "chrome/browser/devtools/devtools_network_controller.h" +#include "content/public/browser/browser_thread.h" + +using content::BrowserThread; + +DevToolsNetworkControllerHandle::DevToolsNetworkControllerHandle() { + DCHECK_CURRENTLY_ON(BrowserThread::UI); +} + +DevToolsNetworkControllerHandle::~DevToolsNetworkControllerHandle() {} + +void DevToolsNetworkControllerHandle::SetNetworkState( + const std::string& client_id, + scoped_ptr<DevToolsNetworkConditions> conditions) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + + BrowserThread::PostTask( + BrowserThread::IO, FROM_HERE, + base::Bind(&DevToolsNetworkControllerHandle::SetNetworkStateOnIO, + base::Unretained(this), client_id, base::Passed(&conditions))); +} + +DevToolsNetworkController* DevToolsNetworkControllerHandle::GetController() { + DCHECK_CURRENTLY_ON(BrowserThread::IO); + + LazyInitialize(); + return controller_.get(); +} + +void DevToolsNetworkControllerHandle::LazyInitialize() { + DCHECK_CURRENTLY_ON(BrowserThread::IO); + + if (!controller_) + controller_.reset(new DevToolsNetworkController); +} + +void DevToolsNetworkControllerHandle::SetNetworkStateOnIO( + const std::string& client_id, + scoped_ptr<DevToolsNetworkConditions> conditions) { + DCHECK_CURRENTLY_ON(BrowserThread::IO); + + LazyInitialize(); + controller_->SetNetworkState(client_id, conditions.Pass()); +} diff --git a/chrome/browser/devtools/devtools_network_controller_handle.h b/chrome/browser/devtools/devtools_network_controller_handle.h new file mode 100644 index 0000000..7aee0ff --- /dev/null +++ b/chrome/browser/devtools/devtools_network_controller_handle.h @@ -0,0 +1,41 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_DEVTOOLS_DEVTOOLS_NETWORK_CONTROLLER_HANDLE_H_ +#define CHROME_BROWSER_DEVTOOLS_DEVTOOLS_NETWORK_CONTROLLER_HANDLE_H_ + +#include <string> + +#include "base/macros.h" +#include "base/memory/scoped_ptr.h" + +class DevToolsNetworkConditions; +class DevToolsNetworkController; + +// A handle to manage an IO-thread DevToolsNetworkController on the IO thread +// while allowing SetNetworkState to be called from the UI thread. Must be +// created on the UI thread and destroyed on the IO thread. +class DevToolsNetworkControllerHandle { + public: + DevToolsNetworkControllerHandle(); + ~DevToolsNetworkControllerHandle(); + + // Called on the UI thread. + void SetNetworkState(const std::string& client_id, + scoped_ptr<DevToolsNetworkConditions> conditions); + + // Called on the IO thread. + DevToolsNetworkController* GetController(); + + private: + void LazyInitialize(); + void SetNetworkStateOnIO(const std::string& client_id, + scoped_ptr<DevToolsNetworkConditions> conditions); + + scoped_ptr<DevToolsNetworkController> controller_; + + DISALLOW_COPY_AND_ASSIGN(DevToolsNetworkControllerHandle); +}; + +#endif // CHROME_BROWSER_DEVTOOLS_DEVTOOLS_NETWORK_CONTROLLER_HANDLE_H_ diff --git a/chrome/browser/devtools/devtools_network_controller_unittest.cc b/chrome/browser/devtools/devtools_network_controller_unittest.cc index de428fc..6893b3e 100644 --- a/chrome/browser/devtools/devtools_network_controller_unittest.cc +++ b/chrome/browser/devtools/devtools_network_controller_unittest.cc @@ -71,7 +71,7 @@ class DevToolsNetworkControllerHelper { void SetNetworkState(const std::string id, bool offline) { scoped_ptr<DevToolsNetworkConditions> conditions( new DevToolsNetworkConditions(offline)); - controller_.SetNetworkStateOnIO(id, conditions.Pass()); + controller_.SetNetworkState(id, conditions.Pass()); } int Start() { diff --git a/chrome/browser/devtools/devtools_network_protocol_handler.cc b/chrome/browser/devtools/devtools_network_protocol_handler.cc index 1e93065..1c18152 100644 --- a/chrome/browser/devtools/devtools_network_protocol_handler.cc +++ b/chrome/browser/devtools/devtools_network_protocol_handler.cc @@ -6,7 +6,7 @@ #include "base/values.h" #include "chrome/browser/devtools/devtools_network_conditions.h" -#include "chrome/browser/devtools/devtools_network_controller.h" +#include "chrome/browser/devtools/devtools_network_controller_handle.h" #include "chrome/browser/devtools/devtools_protocol_constants.h" #include "chrome/browser/profiles/profile.h" #include "content/public/browser/devtools_agent_host.h" @@ -100,7 +100,7 @@ void DevToolsNetworkProtocolHandler::UpdateNetworkState( agent_host->GetBrowserContext()); if (!profile) return; - profile->GetDevToolsNetworkController()->SetNetworkState( + profile->GetDevToolsNetworkControllerHandle()->SetNetworkState( agent_host->GetId(), conditions.Pass()); } diff --git a/chrome/browser/profiles/off_the_record_profile_impl.cc b/chrome/browser/profiles/off_the_record_profile_impl.cc index 400005a..de1513c 100644 --- a/chrome/browser/profiles/off_the_record_profile_impl.cc +++ b/chrome/browser/profiles/off_the_record_profile_impl.cc @@ -497,9 +497,9 @@ chrome_browser_net::Predictor* OffTheRecordProfileImpl::GetNetworkPredictor() { return NULL; } -DevToolsNetworkController* -OffTheRecordProfileImpl::GetDevToolsNetworkController() { - return io_data_->GetDevToolsNetworkController(); +DevToolsNetworkControllerHandle* +OffTheRecordProfileImpl::GetDevToolsNetworkControllerHandle() { + return io_data_->GetDevToolsNetworkControllerHandle(); } void OffTheRecordProfileImpl::ClearNetworkingHistorySince( diff --git a/chrome/browser/profiles/off_the_record_profile_impl.h b/chrome/browser/profiles/off_the_record_profile_impl.h index c257e0d..732b4df 100644 --- a/chrome/browser/profiles/off_the_record_profile_impl.h +++ b/chrome/browser/profiles/off_the_record_profile_impl.h @@ -78,7 +78,8 @@ class OffTheRecordProfileImpl : public Profile { PrefProxyConfigTracker* GetProxyConfigTracker() override; chrome_browser_net::Predictor* GetNetworkPredictor() override; - DevToolsNetworkController* GetDevToolsNetworkController() override; + DevToolsNetworkControllerHandle* GetDevToolsNetworkControllerHandle() + override; void ClearNetworkingHistorySince(base::Time time, const base::Closure& completion) override; GURL GetHomePage() override; diff --git a/chrome/browser/profiles/off_the_record_profile_io_data.cc b/chrome/browser/profiles/off_the_record_profile_io_data.cc index f6d1b0f..74ea40f 100644 --- a/chrome/browser/profiles/off_the_record_profile_io_data.cc +++ b/chrome/browser/profiles/off_the_record_profile_io_data.cc @@ -147,10 +147,10 @@ OffTheRecordProfileIOData::Handle::CreateIsolatedAppRequestContextGetter( return context; } -DevToolsNetworkController* -OffTheRecordProfileIOData::Handle::GetDevToolsNetworkController() const { +DevToolsNetworkControllerHandle* +OffTheRecordProfileIOData::Handle::GetDevToolsNetworkControllerHandle() const { DCHECK_CURRENTLY_ON(BrowserThread::UI); - return io_data_->network_controller(); + return io_data_->network_controller_handle(); } void OffTheRecordProfileIOData::Handle::LazyInitialize() const { diff --git a/chrome/browser/profiles/off_the_record_profile_io_data.h b/chrome/browser/profiles/off_the_record_profile_io_data.h index f3b3733..f1cd12e 100644 --- a/chrome/browser/profiles/off_the_record_profile_io_data.h +++ b/chrome/browser/profiles/off_the_record_profile_io_data.h @@ -66,8 +66,8 @@ class OffTheRecordProfileIOData : public ProfileIOData { content::URLRequestInterceptorScopedVector request_interceptors) const; - // Returns the DevToolsNetworkController attached to ProfileIOData. - DevToolsNetworkController* GetDevToolsNetworkController() const; + // Returns the DevToolsNetworkControllerHandle attached to ProfileIOData. + DevToolsNetworkControllerHandle* GetDevToolsNetworkControllerHandle() const; private: typedef std::map<StoragePartitionDescriptor, diff --git a/chrome/browser/profiles/profile.h b/chrome/browser/profiles/profile.h index 292358f..243dd0b 100644 --- a/chrome/browser/profiles/profile.h +++ b/chrome/browser/profiles/profile.h @@ -17,7 +17,7 @@ #include "content/public/browser/content_browser_client.h" class ChromeAppCacheService; -class DevToolsNetworkController; +class DevToolsNetworkControllerHandle; class ExtensionSpecialStoragePolicy; class HostContentSettingsMap; class PrefProxyConfigTracker; @@ -287,8 +287,9 @@ class Profile : public content::BrowserContext { // Returns the Predictor object used for dns prefetch. virtual chrome_browser_net::Predictor* GetNetworkPredictor() = 0; - // Returns the DevToolsNetworkController for this profile. - virtual DevToolsNetworkController* GetDevToolsNetworkController() = 0; + // Returns the DevToolsNetworkControllerHandle for this profile. + virtual DevToolsNetworkControllerHandle* + GetDevToolsNetworkControllerHandle() = 0; // Deletes all network related data since |time|. It deletes transport // security state since |time| and it also deletes HttpServerProperties data. diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc index b50d00d..a0f1c78 100644 --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc @@ -1185,8 +1185,9 @@ chrome_browser_net::Predictor* ProfileImpl::GetNetworkPredictor() { return predictor_; } -DevToolsNetworkController* ProfileImpl::GetDevToolsNetworkController() { - return io_data_.GetDevToolsNetworkController(); +DevToolsNetworkControllerHandle* +ProfileImpl::GetDevToolsNetworkControllerHandle() { + return io_data_.GetDevToolsNetworkControllerHandle(); } void ProfileImpl::ClearNetworkingHistorySince( diff --git a/chrome/browser/profiles/profile_impl.h b/chrome/browser/profiles/profile_impl.h index 49d32ac..8390445 100644 --- a/chrome/browser/profiles/profile_impl.h +++ b/chrome/browser/profiles/profile_impl.h @@ -125,7 +125,8 @@ class ProfileImpl : public Profile { base::FilePath last_selected_directory() override; void set_last_selected_directory(const base::FilePath& path) override; chrome_browser_net::Predictor* GetNetworkPredictor() override; - DevToolsNetworkController* GetDevToolsNetworkController() override; + DevToolsNetworkControllerHandle* GetDevToolsNetworkControllerHandle() + override; void ClearNetworkingHistorySince(base::Time time, const base::Closure& completion) override; GURL GetHomePage() override; diff --git a/chrome/browser/profiles/profile_impl_io_data.cc b/chrome/browser/profiles/profile_impl_io_data.cc index b633bb2..1974d93 100644 --- a/chrome/browser/profiles/profile_impl_io_data.cc +++ b/chrome/browser/profiles/profile_impl_io_data.cc @@ -345,10 +345,10 @@ ProfileImplIOData::Handle::GetIsolatedMediaRequestContextGetter( return context; } -DevToolsNetworkController* -ProfileImplIOData::Handle::GetDevToolsNetworkController() const { +DevToolsNetworkControllerHandle* +ProfileImplIOData::Handle::GetDevToolsNetworkControllerHandle() const { DCHECK_CURRENTLY_ON(BrowserThread::UI); - return io_data_->network_controller(); + return io_data_->network_controller_handle(); } void ProfileImplIOData::Handle::ClearNetworkingHistorySince( diff --git a/chrome/browser/profiles/profile_impl_io_data.h b/chrome/browser/profiles/profile_impl_io_data.h index 1eca955..214ec74 100644 --- a/chrome/browser/profiles/profile_impl_io_data.h +++ b/chrome/browser/profiles/profile_impl_io_data.h @@ -98,8 +98,8 @@ class ProfileImplIOData : public ProfileIOData { const base::FilePath& partition_path, bool in_memory) const; - // Returns the DevToolsNetworkController attached to ProfileIOData. - DevToolsNetworkController* GetDevToolsNetworkController() const; + // Returns the DevToolsNetworkControllerHandle attached to ProfileIOData. + DevToolsNetworkControllerHandle* GetDevToolsNetworkControllerHandle() const; // Deletes all network related data since |time|. It deletes transport // security state since |time| and also deletes HttpServerProperties data. diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc index bf7e2a9..614c0cb 100644 --- a/chrome/browser/profiles/profile_io_data.cc +++ b/chrome/browser/profiles/profile_io_data.cc @@ -1314,11 +1314,10 @@ scoped_ptr<net::HttpCache> ProfileIOData::CreateMainHttpFactory( if (data_reduction_proxy_io_data_.get()) params.proxy_delegate = data_reduction_proxy_io_data_->proxy_delegate(); - network_controller_.reset(new DevToolsNetworkController()); - net::HttpNetworkSession* session = new net::HttpNetworkSession(params); return scoped_ptr<net::HttpCache>(new net::HttpCache( - new DevToolsNetworkTransactionFactory(network_controller_.get(), session), + new DevToolsNetworkTransactionFactory( + network_controller_handle_.GetController(), session), context->net_log(), main_backend)); } @@ -1327,7 +1326,7 @@ scoped_ptr<net::HttpCache> ProfileIOData::CreateHttpFactory( net::HttpCache::BackendFactory* backend) const { return scoped_ptr<net::HttpCache>(new net::HttpCache( new DevToolsNetworkTransactionFactory( - network_controller_.get(), shared_session), + network_controller_handle_.GetController(), shared_session), shared_session->net_log(), backend)); } diff --git a/chrome/browser/profiles/profile_io_data.h b/chrome/browser/profiles/profile_io_data.h index a3a55b1..7233c40 100644 --- a/chrome/browser/profiles/profile_io_data.h +++ b/chrome/browser/profiles/profile_io_data.h @@ -18,6 +18,7 @@ #include "base/prefs/pref_member.h" #include "base/synchronization/lock.h" #include "chrome/browser/custom_handlers/protocol_handler_registry.h" +#include "chrome/browser/devtools/devtools_network_controller_handle.h" #include "chrome/browser/io_thread.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/storage_partition_descriptor.h" @@ -34,7 +35,6 @@ class ChromeHttpUserAgentSettings; class ChromeNetworkDelegate; class ChromeURLRequestContextGetter; -class DevToolsNetworkController; class HostContentSettingsMap; class MediaDeviceIDSalt; class ProtocolHandlerRegistry; @@ -174,8 +174,8 @@ class ProfileIOData { content::ResourceContext::SaltCallback GetMediaDeviceIDSalt() const; - DevToolsNetworkController* network_controller() const { - return network_controller_.get(); + DevToolsNetworkControllerHandle* network_controller_handle() const { + return &network_controller_handle_; } net::TransportSecurityState* transport_security_state() const { @@ -594,7 +594,7 @@ class ProfileIOData { extension_throttle_manager_; #endif - mutable scoped_ptr<DevToolsNetworkController> network_controller_; + mutable DevToolsNetworkControllerHandle network_controller_handle_; // TODO(jhawkins): Remove once crbug.com/102004 is fixed. bool initialized_on_UI_thread_; diff --git a/chrome/browser/ui/app_list/test/fake_profile.cc b/chrome/browser/ui/app_list/test/fake_profile.cc index 9a91fd5..55621f5f 100644 --- a/chrome/browser/ui/app_list/test/fake_profile.cc +++ b/chrome/browser/ui/app_list/test/fake_profile.cc @@ -191,7 +191,8 @@ chrome_browser_net::Predictor* FakeProfile::GetNetworkPredictor() { return nullptr; } -DevToolsNetworkController* FakeProfile::GetDevToolsNetworkController() { +DevToolsNetworkControllerHandle* +FakeProfile::GetDevToolsNetworkControllerHandle() { return nullptr; } diff --git a/chrome/browser/ui/app_list/test/fake_profile.h b/chrome/browser/ui/app_list/test/fake_profile.h index b294544..74dbaf4 100644 --- a/chrome/browser/ui/app_list/test/fake_profile.h +++ b/chrome/browser/ui/app_list/test/fake_profile.h @@ -90,7 +90,8 @@ class FakeProfile : public Profile { PrefProxyConfigTracker* GetProxyConfigTracker() override; chrome_browser_net::Predictor* GetNetworkPredictor() override; - DevToolsNetworkController* GetDevToolsNetworkController() override; + DevToolsNetworkControllerHandle* GetDevToolsNetworkControllerHandle() + override; void ClearNetworkingHistorySince(base::Time time, const base::Closure& completion) override; GURL GetHomePage() override; diff --git a/chrome/chrome_debugger.gypi b/chrome/chrome_debugger.gypi index 7beba91..48e1ea3 100644 --- a/chrome/chrome_debugger.gypi +++ b/chrome/chrome_debugger.gypi @@ -29,6 +29,8 @@ 'browser/devtools/devtools_network_conditions.h', 'browser/devtools/devtools_network_controller.cc', 'browser/devtools/devtools_network_controller.h', + 'browser/devtools/devtools_network_controller_handle.cc', + 'browser/devtools/devtools_network_controller_handle.h', 'browser/devtools/devtools_network_interceptor.cc', 'browser/devtools/devtools_network_interceptor.h', 'browser/devtools/devtools_network_protocol_handler.cc', diff --git a/chrome/test/base/testing_profile.cc b/chrome/test/base/testing_profile.cc index efdf3c6..dba1e98 100644 --- a/chrome/test/base/testing_profile.cc +++ b/chrome/test/base/testing_profile.cc @@ -928,7 +928,8 @@ chrome_browser_net::Predictor* TestingProfile::GetNetworkPredictor() { return NULL; } -DevToolsNetworkController* TestingProfile::GetDevToolsNetworkController() { +DevToolsNetworkControllerHandle* +TestingProfile::GetDevToolsNetworkControllerHandle() { return NULL; } diff --git a/chrome/test/base/testing_profile.h b/chrome/test/base/testing_profile.h index 2b00728..efac4a2 100644 --- a/chrome/test/base/testing_profile.h +++ b/chrome/test/base/testing_profile.h @@ -308,7 +308,8 @@ class TestingProfile : public Profile { void BlockUntilHistoryProcessesPendingRequests(); chrome_browser_net::Predictor* GetNetworkPredictor() override; - DevToolsNetworkController* GetDevToolsNetworkController() override; + DevToolsNetworkControllerHandle* GetDevToolsNetworkControllerHandle() + override; void ClearNetworkingHistorySince(base::Time time, const base::Closure& completion) override; GURL GetHomePage() override; |