diff options
author | rvargas@chromium.org <rvargas@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-27 22:39:10 +0000 |
---|---|---|
committer | rvargas@chromium.org <rvargas@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-27 22:39:10 +0000 |
commit | 027bd85ae8b1ccfeabfd03aaee811ff4d3bed45b (patch) | |
tree | 38251735ee21a5f673bd10679bfdd956e542c97f | |
parent | c4790dcb92eaeada95f459576b83e895f7878317 (diff) | |
download | chromium_src-027bd85ae8b1ccfeabfd03aaee811ff4d3bed45b.zip chromium_src-027bd85ae8b1ccfeabfd03aaee811ff4d3bed45b.tar.gz chromium_src-027bd85ae8b1ccfeabfd03aaee811ff4d3bed45b.tar.bz2 |
Remove HttpTransactionDelegate and all users (LoadTimeStats).
These metrics are not used anymore.
TEST=builds
BUG=
TBR=mkosiba@chromium.org (webview)
Review URL: https://codereview.chromium.org/121453002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@242643 0039d316-1c4b-4281-b951-d872f2087c98
52 files changed, 185 insertions, 1467 deletions
diff --git a/android_webview/browser/net/aw_network_delegate.cc b/android_webview/browser/net/aw_network_delegate.cc index 1dd525d..c5aef1f 100644 --- a/android_webview/browser/net/aw_network_delegate.cc +++ b/android_webview/browser/net/aw_network_delegate.cc @@ -108,8 +108,4 @@ int AwNetworkDelegate::OnBeforeSocketStreamConnect( return net::OK; } -void AwNetworkDelegate::OnRequestWaitStateChange(const net::URLRequest& request, - RequestWaitState state) { -} - } // namespace android_webview diff --git a/android_webview/browser/net/aw_network_delegate.h b/android_webview/browser/net/aw_network_delegate.h index e9756dc..6d344698 100644 --- a/android_webview/browser/net/aw_network_delegate.h +++ b/android_webview/browser/net/aw_network_delegate.h @@ -58,8 +58,6 @@ class AwNetworkDelegate : public net::NetworkDelegate { virtual int OnBeforeSocketStreamConnect( net::SocketStream* stream, const net::CompletionCallback& callback) OVERRIDE; - virtual void OnRequestWaitStateChange(const net::URLRequest& request, - RequestWaitState state) OVERRIDE; DISALLOW_COPY_AND_ASSIGN(AwNetworkDelegate); }; diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc index c02f91e..3e99c53 100644 --- a/chrome/browser/io_thread.cc +++ b/chrome/browser/io_thread.cc @@ -36,7 +36,6 @@ #include "chrome/browser/net/connect_interceptor.h" #include "chrome/browser/net/dns_probe_service.h" #include "chrome/browser/net/http_pipelining_compatibility_client.h" -#include "chrome/browser/net/load_time_stats.h" #include "chrome/browser/net/pref_proxy_config_tracker.h" #include "chrome/browser/net/proxy_service_factory.h" #include "chrome/browser/net/sdch_dictionary_fetcher.h" @@ -602,7 +601,6 @@ void IOThread::InitAsync() { new net::DefaultServerBoundCertStore(NULL), base::WorkerPool::GetTaskRunner(true))); globals_->dns_probe_service.reset(new chrome_browser_net::DnsProbeService()); - globals_->load_time_stats.reset(new chrome_browser_net::LoadTimeStats()); globals_->host_mapping_rules.reset(new net::HostMappingRules()); globals_->http_user_agent_settings.reset( new BasicHttpUserAgentSettings(std::string())); diff --git a/chrome/browser/io_thread.h b/chrome/browser/io_thread.h index 9505911..ef742bf 100644 --- a/chrome/browser/io_thread.h +++ b/chrome/browser/io_thread.h @@ -31,7 +31,6 @@ class SystemURLRequestContextGetter; namespace chrome_browser_net { class DnsProbeService; class HttpPipeliningCompatibilityClient; -class LoadTimeStats; } namespace extensions { @@ -150,7 +149,6 @@ class IOThread : public content::BrowserThreadDelegate { extension_event_router_forwarder; scoped_ptr<chrome_browser_net::HttpPipeliningCompatibilityClient> http_pipelining_compatibility_client; - scoped_ptr<chrome_browser_net::LoadTimeStats> load_time_stats; scoped_ptr<net::HostMappingRules> host_mapping_rules; scoped_ptr<net::HttpUserAgentSettings> http_user_agent_settings; bool ignore_certificate_errors; diff --git a/chrome/browser/net/chrome_fraudulent_certificate_reporter_unittest.cc b/chrome/browser/net/chrome_fraudulent_certificate_reporter_unittest.cc index 00a21d3..04e924b 100644 --- a/chrome/browser/net/chrome_fraudulent_certificate_reporter_unittest.cc +++ b/chrome/browser/net/chrome_fraudulent_certificate_reporter_unittest.cc @@ -156,24 +156,21 @@ class MockReporter : public ChromeFraudulentCertificateReporter { }; static void DoReportIsSent() { - ChromeURLRequestContext context(ChromeURLRequestContext::CONTEXT_TYPE_MAIN, - NULL); + ChromeURLRequestContext context; SendingTestReporter reporter(&context); SSLInfo info = GetGoodSSLInfo(); reporter.SendReport("mail.google.com", info, true); } static void DoReportIsNotSent() { - ChromeURLRequestContext context(ChromeURLRequestContext::CONTEXT_TYPE_MAIN, - NULL); + ChromeURLRequestContext context; NotSendingTestReporter reporter(&context); SSLInfo info = GetBadSSLInfo(); reporter.SendReport("www.example.com", info, true); } static void DoMockReportIsSent() { - ChromeURLRequestContext context(ChromeURLRequestContext::CONTEXT_TYPE_MAIN, - NULL); + ChromeURLRequestContext context; MockReporter reporter(&context); SSLInfo info = GetGoodSSLInfo(); reporter.SendReport("mail.google.com", info, true); diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc index c4f9ec9..e5edc3c 100644 --- a/chrome/browser/net/chrome_network_delegate.cc +++ b/chrome/browser/net/chrome_network_delegate.cc @@ -29,7 +29,6 @@ #include "chrome/browser/google/google_util.h" #include "chrome/browser/net/client_hints.h" #include "chrome/browser/net/connect_interceptor.h" -#include "chrome/browser/net/load_time_stats.h" #include "chrome/browser/net/spdyproxy/data_saving_metrics.h" #include "chrome/browser/performance_monitor/performance_monitor.h" #include "chrome/browser/profiles/profile_manager.h" @@ -347,7 +346,6 @@ ChromeNetworkDelegate::ChromeNetworkDelegate( enable_do_not_track_(NULL), force_google_safe_search_(NULL), url_blacklist_manager_(NULL), - load_time_stats_(NULL), received_content_length_(0), original_content_length_(0) { DCHECK(event_router); @@ -618,8 +616,6 @@ void ChromeNetworkDelegate::OnCompleted(net::URLRequest* request, void ChromeNetworkDelegate::OnURLRequestDestroyed(net::URLRequest* request) { ExtensionWebRequestEventRouter::GetInstance()->OnURLRequestDestroyed( profile_, request); - if (load_time_stats_) - load_time_stats_->OnURLRequestDestroyed(*request); } void ChromeNetworkDelegate::OnPACScriptError(int line_number, @@ -797,13 +793,6 @@ int ChromeNetworkDelegate::OnBeforeSocketStreamConnect( return net::OK; } -void ChromeNetworkDelegate::OnRequestWaitStateChange( - const net::URLRequest& request, - RequestWaitState state) { - if (load_time_stats_) - load_time_stats_->OnRequestWaitStateChange(request, state); -} - void ChromeNetworkDelegate::AccumulateContentLength( int64 received_content_length, int64 original_content_length, diff --git a/chrome/browser/net/chrome_network_delegate.h b/chrome/browser/net/chrome_network_delegate.h index e50513e..f6c8361 100644 --- a/chrome/browser/net/chrome_network_delegate.h +++ b/chrome/browser/net/chrome_network_delegate.h @@ -29,7 +29,6 @@ class Value; namespace chrome_browser_net { class ConnectInterceptor; -class LoadTimeStats; class Predictor; } @@ -88,10 +87,6 @@ class ChromeNetworkDelegate : public net::NetworkDelegate { // Causes requested URLs to be fed to |predictor| via ConnectInterceptor. void set_predictor(chrome_browser_net::Predictor* predictor); - void set_load_time_stats(chrome_browser_net::LoadTimeStats* load_time_stats) { - load_time_stats_ = load_time_stats; - } - void set_enable_do_not_track(BooleanPrefMember* enable_do_not_track) { enable_do_not_track_ = enable_do_not_track; } @@ -177,8 +172,6 @@ class ChromeNetworkDelegate : public net::NetworkDelegate { virtual int OnBeforeSocketStreamConnect( net::SocketStream* stream, const net::CompletionCallback& callback) OVERRIDE; - virtual void OnRequestWaitStateChange(const net::URLRequest& request, - RequestWaitState state) OVERRIDE; void AccumulateContentLength( int64 received_payload_byte_count, @@ -213,9 +206,6 @@ class ChromeNetworkDelegate : public net::NetworkDelegate { // static anyway since it is based on a command-line flag. static bool g_never_throttle_requests_; - // Pointer to IOThread global, should outlive ChromeNetworkDelegate. - chrome_browser_net::LoadTimeStats* load_time_stats_; - // Total size of all content (excluding headers) that has been received // over the network. int64 received_content_length_; diff --git a/chrome/browser/net/chrome_url_request_context.cc b/chrome/browser/net/chrome_url_request_context.cc index 12dbe7e..1ab5034 100644 --- a/chrome/browser/net/chrome_url_request_context.cc +++ b/chrome/browser/net/chrome_url_request_context.cc @@ -10,7 +10,6 @@ #include "base/message_loop/message_loop_proxy.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/io_thread.h" -#include "chrome/browser/net/load_time_stats.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_io_data.h" #include "chrome/browser/profiles/storage_partition_descriptor.h" @@ -251,20 +250,13 @@ ChromeURLRequestContextGetter::CreateForIsolatedMedia( // ChromeURLRequestContext // ---------------------------------------------------------------------------- -ChromeURLRequestContext::ChromeURLRequestContext( - ContextType type, - chrome_browser_net::LoadTimeStats* load_time_stats) - : weak_factory_(this), - load_time_stats_(load_time_stats) { +ChromeURLRequestContext::ChromeURLRequestContext() + : weak_factory_(this) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - if (load_time_stats_) - load_time_stats_->RegisterURLRequestContext(this, type); } ChromeURLRequestContext::~ChromeURLRequestContext() { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - if (load_time_stats_) - load_time_stats_->UnregisterURLRequestContext(this); } void ChromeURLRequestContext::CopyFrom(ChromeURLRequestContext* other) { diff --git a/chrome/browser/net/chrome_url_request_context.h b/chrome/browser/net/chrome_url_request_context.h index 77da906..f73cad7 100644 --- a/chrome/browser/net/chrome_url_request_context.h +++ b/chrome/browser/net/chrome_url_request_context.h @@ -19,10 +19,6 @@ class Profile; class ProfileIOData; struct StoragePartitionDescriptor; -namespace chrome_browser_net { -class LoadTimeStats; -} - // Subclass of net::URLRequestContext which can be used to store extra // information for requests. // @@ -30,14 +26,7 @@ class LoadTimeStats; // including the constructor and destructor. class ChromeURLRequestContext : public net::URLRequestContext { public: - enum ContextType { - CONTEXT_TYPE_MAIN, - CONTEXT_TYPE_MEDIA, - CONTEXT_TYPE_EXTENSIONS, - CONTEXT_TYPE_APP - }; - ChromeURLRequestContext(ContextType type, - chrome_browser_net::LoadTimeStats* load_time_stats); + ChromeURLRequestContext(); virtual ~ChromeURLRequestContext(); base::WeakPtr<ChromeURLRequestContext> GetWeakPtr() { @@ -55,13 +44,6 @@ class ChromeURLRequestContext : public net::URLRequestContext { // be added to CopyFrom. // --------------------------------------------------------------------------- - chrome_browser_net::LoadTimeStats* load_time_stats_; - - // --------------------------------------------------------------------------- - // Important: When adding any new members above, consider whether they need to - // be added to CopyFrom. - // --------------------------------------------------------------------------- - DISALLOW_COPY_AND_ASSIGN(ChromeURLRequestContext); }; diff --git a/chrome/browser/net/load_time_stats.cc b/chrome/browser/net/load_time_stats.cc deleted file mode 100644 index 0801775..0000000 --- a/chrome/browser/net/load_time_stats.cc +++ /dev/null @@ -1,559 +0,0 @@ -// Copyright (c) 2012 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/net/load_time_stats.h" - -#include "base/debug/trace_event.h" -#include "base/metrics/histogram.h" -#include "base/stl_util.h" -#include "base/strings/string_number_conversions.h" -#include "base/timer/timer.h" -#include "chrome/browser/browser_process.h" -#include "chrome/browser/io_thread.h" -#include "chrome/browser/profiles/profile.h" -#include "content/public/browser/browser_thread.h" -#include "content/public/browser/render_process_host.h" -#include "content/public/browser/render_view_host.h" -#include "content/public/browser/resource_request_info.h" -#include "content/public/browser/web_contents.h" -#include "net/url_request/url_request.h" - -using content::BrowserThread; -using content::RenderViewHost; -using content::ResourceRequestInfo; -using std::string; - -DEFINE_WEB_CONTENTS_USER_DATA_KEY(chrome_browser_net::LoadTimeStatsTabHelper); - -namespace { - -bool GetRenderView(const net::URLRequest& request, - int* process_id, int* route_id) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(&request); - if (!info) - return false; - return info->GetAssociatedRenderView(process_id, route_id); -} - -void CallLoadTimeStatsTabEventOnIOThread( - std::pair<int, int> render_view_id, - chrome_browser_net::LoadTimeStats::TabEvent event, - IOThread* io_thread) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - if (io_thread) - io_thread->globals()->load_time_stats->OnTabEvent(render_view_id, event); -} - -// Times after a load has started at which stats are collected. -const int kStatsCollectionTimesMs[] = { - 1000, - 2000, - 4000, - 20000 -}; - -static int kTabLoadStatsAutoCleanupTimeoutSeconds = 30; - -const char* kRequestStatusNames[] = { - "CacheWait", - "NetworkWait", - "Active", - "None", - "Max" -}; - -COMPILE_ASSERT(arraysize(kRequestStatusNames) == - chrome_browser_net::LoadTimeStats::REQUEST_STATUS_MAX + 1, - LoadTimeStats_RequestStatus_names_mismatch); - -const char* kHistogramTypeNames[] = { - "FinalAggregate", - "FinalCumulativePercentage", - "IntermediateAggregate", - "IntermediateCumulativePercentage", - "Max" -}; - -COMPILE_ASSERT(arraysize(kHistogramTypeNames) == - chrome_browser_net::LoadTimeStats::HISTOGRAM_MAX + 1, - LoadTimeStats_HistogramType_names_mismatch); - -} // namespace - -namespace chrome_browser_net { - -// Helper struct keeping stats about the page load progress & cache usage -// stats during the pageload so far for a given RenderView, identified -// by a pair of process id and route id. -class LoadTimeStats::TabLoadStats { - public: - // Stores the time taken by all requests while they have a certain - // RequestStatus. - class PerStatusStats { - public: - PerStatusStats() : num_active_(0) { - } - - void UpdateTotalTimes() { - DCHECK_GE(num_active_, 0); - base::TimeTicks now = base::TimeTicks::Now(); - if (num_active_ > 0) { - total_time_ += now - last_update_time_; - total_cumulative_time_ += - (now - last_update_time_) * static_cast<int64>(num_active_); - } - last_update_time_ = now; - } - - void ResetTimes() { - last_update_time_ = base::TimeTicks::Now(); - total_time_ = base::TimeDelta(); - total_cumulative_time_ = base::TimeDelta(); - } - - void IncrementNumActive() { - num_active_++; - } - - void DecrementNumActiveIfPositive() { - if (num_active_ > 0) - num_active_--; - } - - int num_active() { return num_active_; } - void set_num_active(int num_active) { num_active_ = num_active; } - base::TimeDelta total_time() { return total_time_; } - base::TimeDelta total_cumulative_time() { return total_cumulative_time_; } - - private: - int num_active_; - base::TimeTicks last_update_time_; - base::TimeDelta total_time_; - base::TimeDelta total_cumulative_time_; - }; - - TabLoadStats(std::pair<int, int> render_view_id, LoadTimeStats* owner) - : render_view_id_(render_view_id), - spinner_started_(false), - next_timer_index_(0), - timer_(false, false) { - // Initialize the timer to do an automatic cleanup. If a pageload is - // started for the TabLoadStats within that timeframe, LoadTimeStats - // will start using the timer, thereby cancelling the cleanup. - // Once LoadTimeStats starts the timer, the object is guaranteed to be - // destroyed eventually, so there is no more need for automatic cleanup at - // that point. - timer_.Start(FROM_HERE, - base::TimeDelta::FromSeconds( - kTabLoadStatsAutoCleanupTimeoutSeconds), - base::Bind(&LoadTimeStats::RemoveTabLoadStats, - base::Unretained(owner), - render_view_id_)); - } - - typedef std::pair<int, int> RenderViewId; - typedef PerStatusStats PerStatusStatsArray[REQUEST_STATUS_MAX]; - typedef base::hash_map<const net::URLRequest*, RequestStatus> RequestMap; - - RenderViewId& render_view_id() { return render_view_id_; } - PerStatusStatsArray& per_status_stats() { return per_status_stats_; } - bool spinner_started() { return spinner_started_; } - void set_spinner_started(bool value) { spinner_started_ = value; } - base::TimeTicks load_start_time() { return load_start_time_; } - void set_load_start_time(base::TimeTicks time) { load_start_time_ = time; } - int next_timer_index() { return next_timer_index_; } - void set_next_timer_index(int index) { next_timer_index_ = index; } - base::Timer& timer() { return timer_; } - RequestMap& active_requests() { return active_requests_; } - - private: - RenderViewId render_view_id_; - PerStatusStatsArray per_status_stats_; - bool spinner_started_; - base::TimeTicks load_start_time_; - int next_timer_index_; - base::Timer timer_; - // Currently active URLRequests. - RequestMap active_requests_; -}; - -class LoadTimeStats::URLRequestStats { - public: - URLRequestStats() - : done_(false), - start_time_(GetCurrentTime()), - status_(REQUEST_STATUS_ACTIVE) { - } - void OnStatusChange(RequestStatus new_status) { - if (done_) - return; - DCHECK_GE(status_, 0); - DCHECK_GE(new_status, 0); - DCHECK_LE(status_, REQUEST_STATUS_ACTIVE); - DCHECK_LE(new_status, REQUEST_STATUS_ACTIVE); - base::TimeTicks now = GetCurrentTime(); - base::TimeDelta elapsed = now - start_time_; - status_times_[status_] += elapsed; - start_time_ = now; - status_ = new_status; - } - void RequestDone() { - DCHECK(!done_); - // Dummy status change to add last elapsed time. - OnStatusChange(REQUEST_STATUS_ACTIVE); - done_ = true; - - UMA_HISTOGRAM_TIMES("LoadTimeStats.Request_CacheWait_Time", - status_times_[REQUEST_STATUS_CACHE_WAIT]); - UMA_HISTOGRAM_TIMES("LoadTimeStats.Request_NetworkWait_Time", - status_times_[REQUEST_STATUS_NETWORK_WAIT]); - UMA_HISTOGRAM_TIMES("LoadTimeStats.Request_Active_Time", - status_times_[REQUEST_STATUS_ACTIVE]); - - base::TimeDelta total_time; - for (int status = REQUEST_STATUS_CACHE_WAIT; - status <= REQUEST_STATUS_ACTIVE; - status++) { - total_time += status_times_[status]; - } - if (total_time.InMilliseconds() <= 0) - return; - - for (int status = REQUEST_STATUS_CACHE_WAIT; - status <= REQUEST_STATUS_ACTIVE; - status++) { - int64 fraction_percentage = 100 * - status_times_[status].InMilliseconds() / - total_time.InMilliseconds(); - DCHECK(fraction_percentage >= 0 && fraction_percentage <= 100); - switch (status) { - case REQUEST_STATUS_CACHE_WAIT: - UMA_HISTOGRAM_PERCENTAGE( - "LoadTimeStats.Request_CacheWait_Percentage", - fraction_percentage); - break; - case REQUEST_STATUS_NETWORK_WAIT: - UMA_HISTOGRAM_PERCENTAGE( - "LoadTimeStats.Request_NetworkWait_Percentage", - fraction_percentage); - break; - case REQUEST_STATUS_ACTIVE: - UMA_HISTOGRAM_PERCENTAGE( - "LoadTimeStats.Request_Active_Percentage", fraction_percentage); - break; - } - } - } - - private: - base::TimeTicks GetCurrentTime() { - return base::TimeTicks::Now(); - } - bool done_; - base::TimeTicks start_time_; - RequestStatus status_; - base::TimeDelta status_times_[REQUEST_STATUS_MAX]; -}; - -LoadTimeStatsTabHelper::LoadTimeStatsTabHelper( - content::WebContents* web_contents) - : content::WebContentsObserver(web_contents) { - is_otr_profile_ = web_contents->GetBrowserContext()->IsOffTheRecord(); -} - -LoadTimeStatsTabHelper::~LoadTimeStatsTabHelper() { -} - -void LoadTimeStatsTabHelper::DidStartProvisionalLoadForFrame( - int64 frame_id, - int64 parent_frame_id, - bool is_main_frame, - const GURL& validated_url, - bool is_error_page, - bool is_iframe_srcdoc, - content::RenderViewHost* render_view_host) { - if (!is_main_frame) - return; - if (!validated_url.SchemeIs("http")) - return; - NotifyLoadTimeStats(LoadTimeStats::SPINNER_START, render_view_host); -} - -void LoadTimeStatsTabHelper::DidStopLoading(RenderViewHost* render_view_host) { - NotifyLoadTimeStats(LoadTimeStats::SPINNER_STOP, render_view_host); -} - -void LoadTimeStatsTabHelper::NotifyLoadTimeStats( - LoadTimeStats::TabEvent event, - RenderViewHost* render_view_host) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - if (is_otr_profile_) - return; - int process_id = render_view_host->GetProcess()->GetID(); - int route_id = render_view_host->GetRoutingID(); - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&CallLoadTimeStatsTabEventOnIOThread, - std::pair<int, int>(process_id, route_id), - event, - base::Unretained(g_browser_process->io_thread()))); -} - -LoadTimeStats::LoadTimeStats() { - TRACE_EVENT0("browser", "LoadTimeStats::ctor"); - for (int status = REQUEST_STATUS_CACHE_WAIT; - status <= REQUEST_STATUS_ACTIVE; - status++) { - for (int histogram_type = HISTOGRAM_FINAL_AGGREGATE; - histogram_type < HISTOGRAM_MAX; - histogram_type++) { - for (int i = 0; - i < static_cast<int>(arraysize(kStatsCollectionTimesMs)); - i++) { - string histogram_name = string("LoadTimeStats.Fraction_") + - string(kRequestStatusNames[status]) + string("_") + - string(kHistogramTypeNames[histogram_type]) + string("_") + - base::IntToString(kStatsCollectionTimesMs[i]); - histograms_[status][histogram_type].push_back( - base::LinearHistogram::FactoryGet( - histogram_name, - 0, 101, 51, base::HistogramBase::kUmaTargetedHistogramFlag)); - } - DCHECK_EQ(histograms_[status][histogram_type].size(), - arraysize(kStatsCollectionTimesMs)); - } - } -} - -LoadTimeStats::~LoadTimeStats() { - STLDeleteValues(&tab_load_stats_); - STLDeleteValues(&request_stats_); -} - -LoadTimeStats::URLRequestStats* LoadTimeStats::GetRequestStats( - const net::URLRequest* request) { - RequestStatsMap::const_iterator it = request_stats_.find(request); - if (it != request_stats_.end()) - return it->second; - URLRequestStats* new_request_stats = new URLRequestStats(); - request_stats_[request] = new_request_stats; - return new_request_stats; -} - -LoadTimeStats::TabLoadStats* LoadTimeStats::GetTabLoadStats( - std::pair<int, int> render_view_id) { - TabLoadStatsMap::const_iterator it = tab_load_stats_.find(render_view_id); - if (it != tab_load_stats_.end()) - return it->second; - TabLoadStats* new_tab_load_stats = new TabLoadStats(render_view_id, this); - tab_load_stats_[render_view_id] = new_tab_load_stats; - return new_tab_load_stats; -} - -void LoadTimeStats::RemoveTabLoadStats(std::pair<int, int> render_view_id) { - TabLoadStatsMap::iterator it = tab_load_stats_.find(render_view_id); - if (it != tab_load_stats_.end()) { - delete it->second; - tab_load_stats_.erase(it); - } -} - -void LoadTimeStats::OnRequestWaitStateChange( - const net::URLRequest& request, - net::NetworkDelegate::RequestWaitState state) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - if (main_request_contexts_.count(request.context()) < 1) - return; - int process_id, route_id; - if (!GetRenderView(request, &process_id, &route_id)) - return; - TabLoadStats* stats = - GetTabLoadStats(std::pair<int, int>(process_id, route_id)); - RequestStatus old_status = REQUEST_STATUS_NONE; - if (stats->active_requests().count(&request) > 0) - old_status = stats->active_requests()[&request]; - RequestStatus new_status = REQUEST_STATUS_NONE; - switch (state) { - case net::NetworkDelegate::REQUEST_WAIT_STATE_CACHE_START: - DCHECK(old_status == REQUEST_STATUS_NONE || - old_status == REQUEST_STATUS_ACTIVE); - new_status = REQUEST_STATUS_CACHE_WAIT; - break; - case net::NetworkDelegate::REQUEST_WAIT_STATE_CACHE_FINISH: - DCHECK(old_status == REQUEST_STATUS_NONE || - old_status == REQUEST_STATUS_CACHE_WAIT); - new_status = REQUEST_STATUS_ACTIVE; - break; - case net::NetworkDelegate::REQUEST_WAIT_STATE_NETWORK_START: - DCHECK(old_status == REQUEST_STATUS_NONE || - old_status == REQUEST_STATUS_ACTIVE); - new_status = REQUEST_STATUS_NETWORK_WAIT; - break; - case net::NetworkDelegate::REQUEST_WAIT_STATE_NETWORK_FINISH: - DCHECK(old_status == REQUEST_STATUS_NONE || - old_status == REQUEST_STATUS_NETWORK_WAIT); - new_status = REQUEST_STATUS_ACTIVE; - break; - case net::NetworkDelegate::REQUEST_WAIT_STATE_RESET: - new_status = REQUEST_STATUS_NONE; - break; - } - if (old_status == new_status) - return; - if (old_status != REQUEST_STATUS_NONE) { - TabLoadStats::PerStatusStats* status_stats = - &(stats->per_status_stats()[old_status]); - DCHECK_GE(status_stats->num_active(), 0); - status_stats->UpdateTotalTimes(); - status_stats->DecrementNumActiveIfPositive(); - DCHECK_GE(status_stats->num_active(), 0); - } - if (new_status != REQUEST_STATUS_NONE) { - TabLoadStats::PerStatusStats* status_stats = - &(stats->per_status_stats()[new_status]); - DCHECK_GE(status_stats->num_active(), 0); - status_stats->UpdateTotalTimes(); - status_stats->IncrementNumActive(); - DCHECK_GE(status_stats->num_active(), 0); - stats->active_requests()[&request] = new_status; - URLRequestStats* request_stats = GetRequestStats(&request); - request_stats->OnStatusChange(new_status); - } else { - stats->active_requests().erase(&request); - } -} - -void LoadTimeStats::OnURLRequestDestroyed(const net::URLRequest& request) { - if (request_stats_.count(&request) < 1) - return; - scoped_ptr<URLRequestStats> request_stats(GetRequestStats(&request)); - request_stats_.erase(&request); - request_stats->RequestDone(); -} - -void LoadTimeStats::OnTabEvent(std::pair<int, int> render_view_id, - TabEvent event) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - TabLoadStats* stats = GetTabLoadStats(render_view_id); - if (event == SPINNER_START) { - stats->set_spinner_started(true); - stats->set_load_start_time(base::TimeTicks::Now()); - for (int status = REQUEST_STATUS_CACHE_WAIT; - status <= REQUEST_STATUS_ACTIVE; status++) { - stats->per_status_stats()[status].ResetTimes(); - } - stats->set_next_timer_index(0); - ScheduleTimer(stats); - } else { - DCHECK_EQ(event, SPINNER_STOP); - if (stats->spinner_started()) { - stats->set_spinner_started(false); - base::TimeDelta load_time = - base::TimeTicks::Now() - stats->load_start_time(); - RecordHistograms(load_time, stats, true); - } - RemoveTabLoadStats(render_view_id); - } -} - -void LoadTimeStats::ScheduleTimer(TabLoadStats* stats) { - int timer_index = stats->next_timer_index(); - DCHECK(timer_index >= 0 && - timer_index < static_cast<int>(arraysize(kStatsCollectionTimesMs))); - base::TimeDelta delta = - base::TimeDelta::FromMilliseconds(kStatsCollectionTimesMs[timer_index]); - delta -= base::TimeTicks::Now() - stats->load_start_time(); - - // If the ScheduleTimer call was delayed significantly, like when one's using - // a debugger, don't try to start the timer with a negative time. - if (delta < base::TimeDelta()) { - RemoveTabLoadStats(stats->render_view_id()); - return; - } - - stats->timer().Start(FROM_HERE, - delta, - base::Bind(&LoadTimeStats::TimerCallback, - base::Unretained(this), - base::Unretained(stats))); -} - -void LoadTimeStats::TimerCallback(TabLoadStats* stats) { - DCHECK(stats->spinner_started()); - base::TimeDelta load_time = base::TimeTicks::Now() - stats->load_start_time(); - RecordHistograms(load_time, stats, false); - stats->set_next_timer_index(stats->next_timer_index() + 1); - if (stats->next_timer_index() < - static_cast<int>(arraysize(kStatsCollectionTimesMs))) { - ScheduleTimer(stats); - } else { - RemoveTabLoadStats(stats->render_view_id()); - } -} - -void LoadTimeStats::RecordHistograms(base::TimeDelta elapsed, - TabLoadStats* stats, - bool is_load_done) { - int timer_index = stats->next_timer_index(); - DCHECK(timer_index >= 0 && - timer_index < static_cast<int>(arraysize(kStatsCollectionTimesMs))); - - if (elapsed.InMilliseconds() <= 0) - return; - - base::TimeDelta total_cumulative; - for (int status = REQUEST_STATUS_CACHE_WAIT; - status <= REQUEST_STATUS_ACTIVE; - status++) { - total_cumulative += - stats->per_status_stats()[status].total_cumulative_time(); - } - - for (int status = REQUEST_STATUS_CACHE_WAIT; - status <= REQUEST_STATUS_ACTIVE; - status++) { - TabLoadStats::PerStatusStats* status_stats = - &(stats->per_status_stats()[status]); - - int64 fraction_percentage = 100 * - status_stats->total_time().InMilliseconds() / elapsed.InMilliseconds(); - DCHECK(fraction_percentage >= 0 && fraction_percentage <= 100); - if (is_load_done) { - histograms_[status][HISTOGRAM_FINAL_AGGREGATE][timer_index]->Add( - fraction_percentage); - } else { - histograms_[status][HISTOGRAM_INTERMEDIATE_AGGREGATE][timer_index]->Add( - fraction_percentage); - } - - if (total_cumulative.InMilliseconds() > 0) { - fraction_percentage = 100 * - status_stats->total_cumulative_time().InMilliseconds() / - total_cumulative.InMilliseconds(); - DCHECK(fraction_percentage >= 0 && fraction_percentage <= 100); - if (is_load_done) { - histograms_[status][HISTOGRAM_FINAL_CUMULATIVE_PERCENTAGE] - [timer_index]->Add(fraction_percentage); - } else { - histograms_[status][HISTOGRAM_INTERMEDIATE_CUMULATIVE_PERCENTAGE] - [timer_index]->Add(fraction_percentage); - } - } - } -} - -void LoadTimeStats::RegisterURLRequestContext( - const net::URLRequestContext* context, - ChromeURLRequestContext::ContextType type) { - if (type == ChromeURLRequestContext::CONTEXT_TYPE_MAIN) - main_request_contexts_.insert(context); -} - -void LoadTimeStats::UnregisterURLRequestContext( - const net::URLRequestContext* context) { - main_request_contexts_.erase(context); -} - -} // namespace chrome_browser_net diff --git a/chrome/browser/net/load_time_stats.h b/chrome/browser/net/load_time_stats.h deleted file mode 100644 index 011c07a..0000000 --- a/chrome/browser/net/load_time_stats.h +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright (c) 2012 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_NET_LOAD_TIME_STATS_H_ -#define CHROME_BROWSER_NET_LOAD_TIME_STATS_H_ - -#include <map> -#include <vector> - -#include "base/basictypes.h" -#include "base/compiler_specific.h" -#include "base/containers/hash_tables.h" -#include "base/memory/scoped_ptr.h" -#include "base/message_loop/message_loop.h" -#include "base/time/time.h" -#include "chrome/browser/net/chrome_url_request_context.h" -#include "content/public/browser/web_contents_observer.h" -#include "content/public/browser/web_contents_user_data.h" -#include "net/base/network_delegate.h" - -namespace base { -class HistogramBase; -} - -namespace net { -class URLRequest; -class URLRequestContext; -} - -#if defined(COMPILER_GCC) - -namespace BASE_HASH_NAMESPACE { -template <> -struct hash<const net::URLRequest*> { - std::size_t operator()(const net::URLRequest* value) const { - return reinterpret_cast<std::size_t>(value); - } -}; -template <> -struct hash<const net::URLRequestContext*> { - std::size_t operator()(const net::URLRequestContext* value) const { - return reinterpret_cast<std::size_t>(value); - } -}; -} - -#endif - -namespace chrome_browser_net { - -// This class collects UMA stats about cache performance. -class LoadTimeStats { - public: - enum TabEvent { - SPINNER_START, - SPINNER_STOP - }; - enum RequestStatus { - REQUEST_STATUS_CACHE_WAIT, - REQUEST_STATUS_NETWORK_WAIT, - REQUEST_STATUS_ACTIVE, - REQUEST_STATUS_NONE, - REQUEST_STATUS_MAX - }; - enum HistogramType { - HISTOGRAM_FINAL_AGGREGATE, - HISTOGRAM_FINAL_CUMULATIVE_PERCENTAGE, - HISTOGRAM_INTERMEDIATE_AGGREGATE, - HISTOGRAM_INTERMEDIATE_CUMULATIVE_PERCENTAGE, - HISTOGRAM_MAX - }; - - LoadTimeStats(); - ~LoadTimeStats(); - - void OnRequestWaitStateChange(const net::URLRequest& request, - net::NetworkDelegate::RequestWaitState state); - void OnURLRequestDestroyed(const net::URLRequest& request); - void OnTabEvent(std::pair<int, int> render_view_id, TabEvent event); - void RegisterURLRequestContext(const net::URLRequestContext* context, - ChromeURLRequestContext::ContextType type); - void UnregisterURLRequestContext(const net::URLRequestContext* context); - - private: - class TabLoadStats; - // A map mapping a renderer's process id and route id to a TabLoadStats, - // representing that renderer's load statistics. - typedef std::map<std::pair<int, int>, TabLoadStats*> TabLoadStatsMap; - - class URLRequestStats; - typedef base::hash_map<const net::URLRequest*, - URLRequestStats*> RequestStatsMap; - - // Gets RequestStats for a given request. - URLRequestStats* GetRequestStats(const net::URLRequest* request); - // Gets TabLoadStats for a given RenderView. - TabLoadStats* GetTabLoadStats(std::pair<int, int> render_view_id); - // Deletes TabLoadStats no longer needed for a render view. - void RemoveTabLoadStats(std::pair<int, int> render_view_id); - // Sets a timer for a given tab to collect stats. |timer_index| indicates - // how many times stats have been collected since the navigation has started - // for this tab. - void ScheduleTimer(TabLoadStats* stats); - // The callback when a timer fires to collect stats again. - void TimerCallback(TabLoadStats* stats); - // Helper function to put the current set of statistics into UMA histograms. - void RecordHistograms(base::TimeDelta elapsed, - TabLoadStats* stats, - bool is_load_done); - - TabLoadStatsMap tab_load_stats_; - RequestStatsMap request_stats_; - std::vector<base::HistogramBase*> - histograms_[REQUEST_STATUS_MAX][HISTOGRAM_MAX]; - base::hash_set<const net::URLRequestContext*> main_request_contexts_; - - DISALLOW_COPY_AND_ASSIGN(LoadTimeStats); -}; - -// A WebContentsObserver watching a tab, notifying LoadTimeStats whenever the -// spinner starts or stops for it, and whenever a renderer is no longer used. -class LoadTimeStatsTabHelper - : public content::WebContentsObserver, - public content::WebContentsUserData<LoadTimeStatsTabHelper> { - public: - virtual ~LoadTimeStatsTabHelper(); - - // content::WebContentsObserver implementation - virtual void DidStartProvisionalLoadForFrame( - int64 frame_id, - int64 parent_frame_id, - bool is_main_frame, - const GURL& validated_url, - bool is_error_page, - bool is_iframe_srcdoc, - content::RenderViewHost* render_view_host) OVERRIDE; - virtual void DidStopLoading( - content::RenderViewHost* render_view_host) OVERRIDE; - - private: - explicit LoadTimeStatsTabHelper(content::WebContents* web_contents); - friend class content::WebContentsUserData<LoadTimeStatsTabHelper>; - - // Calls into LoadTimeStats to notify that a reportable event has occurred - // for the tab being observed. - void NotifyLoadTimeStats(LoadTimeStats::TabEvent event, - content::RenderViewHost* render_view_host); - - bool is_otr_profile_; - - DISALLOW_COPY_AND_ASSIGN(LoadTimeStatsTabHelper); -}; - -} // namespace chrome_browser_net - -#endif // CHROME_BROWSER_NET_LOAD_TIME_STATS_H_ 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 7fefc5a..3a5562c 100644 --- a/chrome/browser/profiles/off_the_record_profile_io_data.cc +++ b/chrome/browser/profiles/off_the_record_profile_io_data.cc @@ -282,7 +282,7 @@ OffTheRecordProfileIOData::InitializeAppRequestContext( scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> protocol_handler_interceptor, content::ProtocolHandlerMap* protocol_handlers) const { - AppRequestContext* context = new AppRequestContext(load_time_stats()); + AppRequestContext* context = new AppRequestContext(); // Copy most state from the main context. context->CopyFrom(main_context); @@ -351,8 +351,3 @@ OffTheRecordProfileIOData::AcquireIsolatedMediaRequestContext( NOTREACHED(); return NULL; } - -chrome_browser_net::LoadTimeStats* OffTheRecordProfileIOData::GetLoadTimeStats( - IOThread::Globals* io_thread_globals) const { - return NULL; -} 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 9e7c040..771d52c 100644 --- a/chrome/browser/profiles/off_the_record_profile_io_data.h +++ b/chrome/browser/profiles/off_the_record_profile_io_data.h @@ -131,9 +131,6 @@ class OffTheRecordProfileIOData : public ProfileIOData { const StoragePartitionDescriptor& partition_descriptor) const OVERRIDE; - virtual chrome_browser_net::LoadTimeStats* GetLoadTimeStats( - IOThread::Globals* io_thread_globals) const OVERRIDE; - mutable scoped_ptr<net::HttpTransactionFactory> main_http_factory_; mutable scoped_ptr<net::FtpTransactionFactory> ftp_factory_; diff --git a/chrome/browser/profiles/profile_impl_io_data.cc b/chrome/browser/profiles/profile_impl_io_data.cc index 279c431..f3d7cad 100644 --- a/chrome/browser/profiles/profile_impl_io_data.cc +++ b/chrome/browser/profiles/profile_impl_io_data.cc @@ -573,7 +573,7 @@ ProfileImplIOData::InitializeAppRequestContext( protocol_handler_interceptor, content::ProtocolHandlerMap* protocol_handlers) const { // Copy most state from the main context. - AppRequestContext* context = new AppRequestContext(load_time_stats()); + AppRequestContext* context = new AppRequestContext(); context->CopyFrom(main_context); base::FilePath cookie_path = partition_descriptor.path.Append( @@ -655,7 +655,7 @@ ProfileImplIOData::InitializeMediaRequestContext( ChromeURLRequestContext* original_context, const StoragePartitionDescriptor& partition_descriptor) const { // Copy most state from the original context. - MediaRequestContext* context = new MediaRequestContext(load_time_stats()); + MediaRequestContext* context = new MediaRequestContext(); context->CopyFrom(original_context); // For in-memory context, return immediately after creating the new @@ -735,11 +735,6 @@ ProfileImplIOData::AcquireIsolatedMediaRequestContext( return media_request_context; } -chrome_browser_net::LoadTimeStats* ProfileImplIOData::GetLoadTimeStats( - IOThread::Globals* io_thread_globals) const { - return io_thread_globals->load_time_stats.get(); -} - void ProfileImplIOData::ClearNetworkingHistorySinceOnIOThread( base::Time time, const base::Closure& completion) { diff --git a/chrome/browser/profiles/profile_impl_io_data.h b/chrome/browser/profiles/profile_impl_io_data.h index 3292d6d..8f3a690 100644 --- a/chrome/browser/profiles/profile_impl_io_data.h +++ b/chrome/browser/profiles/profile_impl_io_data.h @@ -172,8 +172,6 @@ class ProfileImplIOData : public ProfileIOData { ChromeURLRequestContext* app_context, const StoragePartitionDescriptor& partition_descriptor) const OVERRIDE; - virtual chrome_browser_net::LoadTimeStats* GetLoadTimeStats( - IOThread::Globals* io_thread_globals) const OVERRIDE; // 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 e81746f..1482a6b 100644 --- a/chrome/browser/profiles/profile_io_data.cc +++ b/chrome/browser/profiles/profile_io_data.cc @@ -42,7 +42,6 @@ #include "chrome/browser/net/chrome_net_log.h" #include "chrome/browser/net/chrome_network_delegate.h" #include "chrome/browser/net/evicted_domain_cookie_counter.h" -#include "chrome/browser/net/load_time_stats.h" #include "chrome/browser/net/proxy_service_factory.h" #include "chrome/browser/net/resource_prefetch_predictor_observer.h" #include "chrome/browser/predictors/resource_prefetch_predictor.h" @@ -528,10 +527,7 @@ void ProfileIOData::InitializeOnUIThread(Profile* profile) { BrowserContext::EnsureResourceContextInitialized(profile); } -ProfileIOData::MediaRequestContext::MediaRequestContext( - chrome_browser_net::LoadTimeStats* load_time_stats) - : ChromeURLRequestContext(ChromeURLRequestContext::CONTEXT_TYPE_MEDIA, - load_time_stats) { +ProfileIOData::MediaRequestContext::MediaRequestContext() { } void ProfileIOData::MediaRequestContext::SetHttpTransactionFactory( @@ -542,10 +538,7 @@ void ProfileIOData::MediaRequestContext::SetHttpTransactionFactory( ProfileIOData::MediaRequestContext::~MediaRequestContext() {} -ProfileIOData::AppRequestContext::AppRequestContext( - chrome_browser_net::LoadTimeStats* load_time_stats) - : ChromeURLRequestContext(ChromeURLRequestContext::CONTEXT_TYPE_APP, - load_time_stats) { +ProfileIOData::AppRequestContext::AppRequestContext() { } void ProfileIOData::AppRequestContext::SetCookieStore( @@ -578,7 +571,6 @@ ProfileIOData::ProfileParams::~ProfileParams() {} ProfileIOData::ProfileIOData(bool is_incognito) : initialized_(false), resource_context_(new ResourceContext(this)), - load_time_stats_(NULL), initialized_on_UI_thread_(false), is_incognito_(is_incognito) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); @@ -975,16 +967,10 @@ void ProfileIOData::Init(content::ProtocolHandlerMap* protocol_handlers) const { IOThread* const io_thread = profile_params_->io_thread; IOThread::Globals* const io_thread_globals = io_thread->globals(); const CommandLine& command_line = *CommandLine::ForCurrentProcess(); - load_time_stats_ = GetLoadTimeStats(io_thread_globals); // Create the common request contexts. - main_request_context_.reset( - new ChromeURLRequestContext(ChromeURLRequestContext::CONTEXT_TYPE_MAIN, - load_time_stats_)); - extensions_request_context_.reset( - new ChromeURLRequestContext( - ChromeURLRequestContext::CONTEXT_TYPE_EXTENSIONS, - load_time_stats_)); + main_request_context_.reset(new ChromeURLRequestContext()); + extensions_request_context_.reset(new ChromeURLRequestContext()); ChromeNetworkDelegate* network_delegate = new ChromeNetworkDelegate( @@ -1000,7 +986,6 @@ void ProfileIOData::Init(content::ProtocolHandlerMap* protocol_handlers) const { network_delegate->set_cookie_settings(profile_params_->cookie_settings.get()); network_delegate->set_enable_do_not_track(&enable_do_not_track_); network_delegate->set_force_google_safe_search(&force_safesearch_); - network_delegate->set_load_time_stats(load_time_stats_); network_delegate_.reset(network_delegate); fraudulent_certificate_reporter_.reset( diff --git a/chrome/browser/profiles/profile_io_data.h b/chrome/browser/profiles/profile_io_data.h index 98238b1..7efc563 100644 --- a/chrome/browser/profiles/profile_io_data.h +++ b/chrome/browser/profiles/profile_io_data.h @@ -37,7 +37,6 @@ class ProtocolHandlerRegistry; class SigninNamesOnIOThread; namespace chrome_browser_net { -class LoadTimeStats; class ResourcePrefetchPredictorObserver; } @@ -223,8 +222,7 @@ class ProfileIOData { // it is deleted. class MediaRequestContext : public ChromeURLRequestContext { public: - explicit MediaRequestContext( - chrome_browser_net::LoadTimeStats* load_time_stats); + MediaRequestContext(); void SetHttpTransactionFactory( scoped_ptr<net::HttpTransactionFactory> http_factory); @@ -239,8 +237,7 @@ class ProfileIOData { // to ensure they are deleted. class AppRequestContext : public ChromeURLRequestContext { public: - explicit AppRequestContext( - chrome_browser_net::LoadTimeStats* load_time_stats); + AppRequestContext(); void SetCookieStore(net::CookieStore* cookie_store); void SetHttpTransactionFactory( @@ -342,10 +339,6 @@ class ProfileIOData { return main_request_context_.get(); } - chrome_browser_net::LoadTimeStats* load_time_stats() const { - return load_time_stats_; - } - bool initialized() const { return initialized_; } @@ -447,10 +440,6 @@ class ProfileIOData { ChromeURLRequestContext* app_context, const StoragePartitionDescriptor& partition_descriptor) const = 0; - // Returns the LoadTimeStats object to be used for this profile. - virtual chrome_browser_net::LoadTimeStats* GetLoadTimeStats( - IOThread::Globals* io_thread_globals) const = 0; - // The order *DOES* matter for the majority of these member variables, so // don't move them around unless you know what you're doing! // General rules: @@ -553,8 +542,6 @@ class ProfileIOData { mutable scoped_ptr<ChromeHttpUserAgentSettings> chrome_http_user_agent_settings_; - mutable chrome_browser_net::LoadTimeStats* load_time_stats_; - #if defined(ENABLE_MANAGED_USERS) mutable scoped_refptr<const ManagedModeURLFilter> managed_mode_url_filter_; #endif diff --git a/chrome/browser/ui/browser_tab_contents.cc b/chrome/browser/ui/browser_tab_contents.cc index 72b220d..61e8a1d 100644 --- a/chrome/browser/ui/browser_tab_contents.cc +++ b/chrome/browser/ui/browser_tab_contents.cc @@ -15,7 +15,6 @@ #include "chrome/browser/history/history_tab_helper.h" #include "chrome/browser/infobars/infobar_service.h" #include "chrome/browser/managed_mode/managed_mode_navigation_observer.h" -#include "chrome/browser/net/load_time_stats.h" #include "chrome/browser/net/net_error_tab_helper.h" #include "chrome/browser/net/predictor_tab_helper.h" #include "chrome/browser/network_time/navigation_time_helper.h" @@ -125,8 +124,6 @@ void BrowserTabContents::AttachTabHelpers(WebContents* web_contents) { g_browser_process->GetApplicationLocale(), AutofillManager::ENABLE_AUTOFILL_DOWNLOAD_MANAGER); BookmarkTabHelper::CreateForWebContents(web_contents); - chrome_browser_net::LoadTimeStatsTabHelper::CreateForWebContents( - web_contents); chrome_browser_net::NetErrorTabHelper::CreateForWebContents(web_contents); chrome_browser_net::PredictorTabHelper::CreateForWebContents(web_contents); WebContentsModalDialogManager::CreateForWebContents(web_contents); diff --git a/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc b/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc index 22df706..0201fa0 100644 --- a/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc +++ b/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc @@ -141,11 +141,6 @@ class TestProfileIOData : public ProfileIOData { NOTREACHED(); return NULL; } - virtual chrome_browser_net::LoadTimeStats* GetLoadTimeStats( - IOThread::Globals* io_thread_globals) const OVERRIDE { - NOTREACHED(); - return NULL; - } }; class TestURLRequest : public base::SupportsUserData { diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 278286f..58a89de 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -1226,8 +1226,6 @@ 'browser/net/http_pipelining_compatibility_client.h', 'browser/net/http_server_properties_manager.cc', 'browser/net/http_server_properties_manager.h', - 'browser/net/load_time_stats.cc', - 'browser/net/load_time_stats.h', 'browser/net/net_error_tab_helper.cc', 'browser/net/net_error_tab_helper.h', 'browser/net/net_log_temp_file.cc', diff --git a/content/shell/browser/shell_network_delegate.cc b/content/shell/browser/shell_network_delegate.cc index 1e4dddc..8675211 100644 --- a/content/shell/browser/shell_network_delegate.cc +++ b/content/shell/browser/shell_network_delegate.cc @@ -119,9 +119,4 @@ int ShellNetworkDelegate::OnBeforeSocketStreamConnect( return net::OK; } -void ShellNetworkDelegate::OnRequestWaitStateChange( - const net::URLRequest& request, - RequestWaitState waiting) { -} - } // namespace content diff --git a/content/shell/browser/shell_network_delegate.h b/content/shell/browser/shell_network_delegate.h index 286cc0a..37c5082 100644 --- a/content/shell/browser/shell_network_delegate.h +++ b/content/shell/browser/shell_network_delegate.h @@ -60,8 +60,6 @@ class ShellNetworkDelegate : public net::NetworkDelegate { virtual int OnBeforeSocketStreamConnect( net::SocketStream* stream, const net::CompletionCallback& callback) OVERRIDE; - virtual void OnRequestWaitStateChange(const net::URLRequest& request, - RequestWaitState state) OVERRIDE; DISALLOW_COPY_AND_ASSIGN(ShellNetworkDelegate); }; diff --git a/net/base/network_delegate.cc b/net/base/network_delegate.cc index 834769c..517868a 100644 --- a/net/base/network_delegate.cc +++ b/net/base/network_delegate.cc @@ -102,12 +102,6 @@ int NetworkDelegate::NotifyBeforeSocketStreamConnect( return OnBeforeSocketStreamConnect(socket, callback); } -void NetworkDelegate::NotifyRequestWaitStateChange(const URLRequest& request, - RequestWaitState state) { - DCHECK(CalledOnValidThread()); - OnRequestWaitStateChange(request, state); -} - bool NetworkDelegate::CanGetCookies(const URLRequest& request, const CookieList& cookie_list) { DCHECK(CalledOnValidThread()); @@ -226,8 +220,4 @@ int NetworkDelegate::OnBeforeSocketStreamConnect( return OK; } -void NetworkDelegate::OnRequestWaitStateChange(const URLRequest& request, - RequestWaitState state) { -} - } // namespace net diff --git a/net/base/network_delegate.h b/net/base/network_delegate.h index 21c8e65..882701c 100644 --- a/net/base/network_delegate.h +++ b/net/base/network_delegate.h @@ -51,14 +51,6 @@ class NET_EXPORT NetworkDelegate : public base::NonThreadSafe { }; typedef base::Callback<void(AuthRequiredResponse)> AuthCallback; - enum RequestWaitState { - REQUEST_WAIT_STATE_CACHE_START, - REQUEST_WAIT_STATE_CACHE_FINISH, - REQUEST_WAIT_STATE_NETWORK_START, - REQUEST_WAIT_STATE_NETWORK_FINISH, - REQUEST_WAIT_STATE_RESET - }; - virtual ~NetworkDelegate() {} // Notification interface called by the network stack. Note that these @@ -103,9 +95,6 @@ class NET_EXPORT NetworkDelegate : public base::NonThreadSafe { int NotifyBeforeSocketStreamConnect(SocketStream* socket, const CompletionCallback& callback); - void NotifyRequestWaitStateChange(const URLRequest& request, - RequestWaitState state); - private: // This is the interface for subclasses of NetworkDelegate to implement. These // member functions will be called by the respective public notification @@ -237,13 +226,6 @@ class NET_EXPORT NetworkDelegate : public base::NonThreadSafe { // See OnBeforeURLRequest for return value description. Returns OK by default. virtual int OnBeforeSocketStreamConnect( SocketStream* socket, const CompletionCallback& callback); - - // Called when the completion of a URLRequest is blocking on a cache - // action or a network action, or when that is no longer the case. - // REQUEST_WAIT_STATE_RESET indicates for a given URLRequest - // cancellation of any pending waits for this request. - virtual void OnRequestWaitStateChange(const URLRequest& request, - RequestWaitState state); }; } // namespace net diff --git a/net/http/http_cache.cc b/net/http/http_cache.cc index 49591da..5c31568 100644 --- a/net/http/http_cache.cc +++ b/net/http/http_cache.cc @@ -379,7 +379,7 @@ void HttpCache::WriteMetadata(const GURL& url, } HttpCache::Transaction* trans = - new HttpCache::Transaction(priority, this, NULL); + new HttpCache::Transaction(priority, this); MetadataWriter* writer = new MetadataWriter(trans); // The writer will self destruct when done. @@ -421,15 +421,14 @@ void HttpCache::InitializeInfiniteCache(const base::FilePath& path) { } int HttpCache::CreateTransaction(RequestPriority priority, - scoped_ptr<HttpTransaction>* trans, - HttpTransactionDelegate* delegate) { + scoped_ptr<HttpTransaction>* trans) { // Do lazy initialization of disk cache if needed. if (!disk_cache_.get()) { // We don't care about the result. CreateBackend(NULL, net::CompletionCallback()); } - trans->reset(new HttpCache::Transaction(priority, this, delegate)); + trans->reset(new HttpCache::Transaction(priority, this)); return OK; } diff --git a/net/http/http_cache.h b/net/http/http_cache.h index db2db69..9ac89aa 100644 --- a/net/http/http_cache.h +++ b/net/http/http_cache.h @@ -191,8 +191,7 @@ class NET_EXPORT HttpCache : public HttpTransactionFactory, // HttpTransactionFactory implementation: virtual int CreateTransaction(RequestPriority priority, - scoped_ptr<HttpTransaction>* trans, - HttpTransactionDelegate* delegate) OVERRIDE; + scoped_ptr<HttpTransaction>* trans) OVERRIDE; virtual HttpCache* GetCache() OVERRIDE; virtual HttpNetworkSession* GetSession() OVERRIDE; diff --git a/net/http/http_cache_transaction.cc b/net/http/http_cache_transaction.cc index 95fd4f1..f8ab295 100644 --- a/net/http/http_cache_transaction.cc +++ b/net/http/http_cache_transaction.cc @@ -36,7 +36,6 @@ #include "net/http/http_request_info.h" #include "net/http/http_response_headers.h" #include "net/http/http_transaction.h" -#include "net/http/http_transaction_delegate.h" #include "net/http/http_util.h" #include "net/http/partial_data.h" #include "net/ssl/ssl_cert_request_info.h" @@ -184,8 +183,7 @@ static bool HeaderMatches(const HttpRequestHeaders& headers, HttpCache::Transaction::Transaction( RequestPriority priority, - HttpCache* cache, - HttpTransactionDelegate* transaction_delegate) + HttpCache* cache) : next_state_(STATE_NONE), request_(NULL), priority_(priority), @@ -213,7 +211,6 @@ HttpCache::Transaction::Transaction( io_callback_(base::Bind(&Transaction::OnIOComplete, weak_factory_.GetWeakPtr())), transaction_pattern_(PATTERN_UNDEFINED), - transaction_delegate_(transaction_delegate), total_received_bytes_(0), websocket_handshake_stream_base_create_helper_(NULL) { COMPILE_ASSERT(HttpCache::Transaction::kNumValidationHeaders == @@ -226,8 +223,6 @@ HttpCache::Transaction::~Transaction() { // after this point. callback_.Reset(); - transaction_delegate_ = NULL; - if (cache_) { if (entry_) { bool cancel_request = reading_ && response_.headers; @@ -799,13 +794,11 @@ int HttpCache::Transaction::DoGetBackend() { cache_pending_ = true; next_state_ = STATE_GET_BACKEND_COMPLETE; net_log_.BeginEvent(NetLog::TYPE_HTTP_CACHE_GET_BACKEND); - ReportCacheActionStart(); return cache_->GetBackendForTransaction(this); } int HttpCache::Transaction::DoGetBackendComplete(int result) { DCHECK(result == OK || result == ERR_FAILED); - ReportCacheActionFinish(); net_log_.EndEventWithNetErrorCode(NetLog::TYPE_HTTP_CACHE_GET_BACKEND, result); cache_pending_ = false; @@ -868,8 +861,8 @@ int HttpCache::Transaction::DoSendRequest() { send_request_since_ = TimeTicks::Now(); // Create a network transaction. - int rv = cache_->network_layer_->CreateTransaction( - priority_, &network_trans_, NULL); + int rv = cache_->network_layer_->CreateTransaction(priority_, + &network_trans_); if (rv != OK) return rv; @@ -880,15 +873,12 @@ int HttpCache::Transaction::DoSendRequest() { network_trans_->SetWebSocketHandshakeStreamCreateHelper( websocket_handshake_stream_base_create_helper_); - ReportNetworkActionStart(); next_state_ = STATE_SEND_REQUEST_COMPLETE; rv = network_trans_->Start(request_, io_callback_, net_log_); return rv; } int HttpCache::Transaction::DoSendRequestComplete(int result) { - ReportNetworkActionFinish(); - if (!cache_.get()) return ERR_UNEXPECTED; @@ -1018,7 +1008,6 @@ int HttpCache::Transaction::DoSuccessfulSendRequest() { } int HttpCache::Transaction::DoNetworkRead() { - ReportNetworkActionStart(); next_state_ = STATE_NETWORK_READ_COMPLETE; return network_trans_->Read(read_buf_.get(), io_buf_len_, io_callback_); } @@ -1026,8 +1015,6 @@ int HttpCache::Transaction::DoNetworkRead() { int HttpCache::Transaction::DoNetworkReadComplete(int result) { DCHECK(mode_ & WRITE || mode_ == NONE); - ReportNetworkActionFinish(); - if (!cache_.get()) return ERR_UNEXPECTED; @@ -1061,7 +1048,6 @@ int HttpCache::Transaction::DoOpenEntry() { cache_pending_ = true; net_log_.BeginEvent(NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY); first_cache_access_since_ = TimeTicks::Now(); - ReportCacheActionStart(); return cache_->OpenEntry(cache_key_, &new_entry_, this); } @@ -1069,7 +1055,6 @@ int HttpCache::Transaction::DoOpenEntryComplete(int result) { // It is important that we go to STATE_ADD_TO_ENTRY whenever the result is // OK, otherwise the cache will end up with an active entry without any // transaction attached. - ReportCacheActionFinish(); net_log_.EndEventWithNetErrorCode(NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY, result); cache_pending_ = false; if (result == OK) { @@ -1113,7 +1098,6 @@ int HttpCache::Transaction::DoCreateEntry() { next_state_ = STATE_CREATE_ENTRY_COMPLETE; cache_pending_ = true; net_log_.BeginEvent(NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY); - ReportCacheActionStart(); return cache_->CreateEntry(cache_key_, &new_entry_, this); } @@ -1121,7 +1105,6 @@ int HttpCache::Transaction::DoCreateEntryComplete(int result) { // It is important that we go to STATE_ADD_TO_ENTRY whenever the result is // OK, otherwise the cache will end up with an active entry without any // transaction attached. - ReportCacheActionFinish(); net_log_.EndEventWithNetErrorCode(NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY, result); cache_pending_ = false; @@ -1155,12 +1138,10 @@ int HttpCache::Transaction::DoDoomEntry() { if (first_cache_access_since_.is_null()) first_cache_access_since_ = TimeTicks::Now(); net_log_.BeginEvent(NetLog::TYPE_HTTP_CACHE_DOOM_ENTRY); - ReportCacheActionStart(); return cache_->DoomEntry(cache_key_, this); } int HttpCache::Transaction::DoDoomEntryComplete(int result) { - ReportCacheActionFinish(); net_log_.EndEventWithNetErrorCode(NetLog::TYPE_HTTP_CACHE_DOOM_ENTRY, result); next_state_ = STATE_CREATE_ENTRY; cache_pending_ = false; @@ -1347,18 +1328,16 @@ int HttpCache::Transaction::DoTruncateCachedData() { return OK; if (net_log_.IsLoggingAllEvents()) net_log_.BeginEvent(NetLog::TYPE_HTTP_CACHE_WRITE_DATA); - ReportCacheActionStart(); // Truncate the stream. return WriteToEntry(kResponseContentIndex, 0, NULL, 0, io_callback_); } int HttpCache::Transaction::DoTruncateCachedDataComplete(int result) { if (entry_) { - ReportCacheActionFinish(); - if (net_log_.IsLoggingAllEvents()) { - net_log_.EndEventWithNetErrorCode(NetLog::TYPE_HTTP_CACHE_WRITE_DATA, - result); - } + if (net_log_.IsLoggingAllEvents()) { + net_log_.EndEventWithNetErrorCode(NetLog::TYPE_HTTP_CACHE_WRITE_DATA, + result); + } } next_state_ = STATE_TRUNCATE_CACHED_METADATA; @@ -1372,13 +1351,11 @@ int HttpCache::Transaction::DoTruncateCachedMetadata() { if (net_log_.IsLoggingAllEvents()) net_log_.BeginEvent(NetLog::TYPE_HTTP_CACHE_WRITE_INFO); - ReportCacheActionStart(); return WriteToEntry(kMetadataIndex, 0, NULL, 0, io_callback_); } int HttpCache::Transaction::DoTruncateCachedMetadataComplete(int result) { if (entry_) { - ReportCacheActionFinish(); if (net_log_.IsLoggingAllEvents()) { net_log_.EndEventWithNetErrorCode(NetLog::TYPE_HTTP_CACHE_WRITE_INFO, result); @@ -1420,13 +1397,11 @@ int HttpCache::Transaction::DoCacheReadResponse() { read_buf_ = new IOBuffer(io_buf_len_); net_log_.BeginEvent(NetLog::TYPE_HTTP_CACHE_READ_INFO); - ReportCacheActionStart(); return entry_->disk_entry->ReadData(kResponseInfoIndex, 0, read_buf_.get(), io_buf_len_, io_callback_); } int HttpCache::Transaction::DoCacheReadResponseComplete(int result) { - ReportCacheActionFinish(); net_log_.EndEventWithNetErrorCode(NetLog::TYPE_HTTP_CACHE_READ_INFO, result); if (result != io_buf_len_ || !HttpCache::ParseResponseInfo(read_buf_->data(), io_buf_len_, @@ -1475,7 +1450,6 @@ int HttpCache::Transaction::DoCacheWriteResponse() { if (entry_) { if (net_log_.IsLoggingAllEvents()) net_log_.BeginEvent(NetLog::TYPE_HTTP_CACHE_WRITE_INFO); - ReportCacheActionStart(); } return WriteResponseInfoToEntry(false); } @@ -1484,7 +1458,6 @@ int HttpCache::Transaction::DoCacheWriteTruncatedResponse() { if (entry_) { if (net_log_.IsLoggingAllEvents()) net_log_.BeginEvent(NetLog::TYPE_HTTP_CACHE_WRITE_INFO); - ReportCacheActionStart(); } return WriteResponseInfoToEntry(true); } @@ -1494,7 +1467,6 @@ int HttpCache::Transaction::DoCacheWriteResponseComplete(int result) { target_state_ = STATE_NONE; if (!entry_) return OK; - ReportCacheActionFinish(); if (net_log_.IsLoggingAllEvents()) { net_log_.EndEventWithNetErrorCode(NetLog::TYPE_HTTP_CACHE_WRITE_INFO, result); @@ -1517,7 +1489,6 @@ int HttpCache::Transaction::DoCacheReadMetadata() { new IOBufferWithSize(entry_->disk_entry->GetDataSize(kMetadataIndex)); net_log_.BeginEvent(NetLog::TYPE_HTTP_CACHE_READ_INFO); - ReportCacheActionStart(); return entry_->disk_entry->ReadData(kMetadataIndex, 0, response_.metadata.get(), response_.metadata->size(), @@ -1525,7 +1496,6 @@ int HttpCache::Transaction::DoCacheReadMetadata() { } int HttpCache::Transaction::DoCacheReadMetadataComplete(int result) { - ReportCacheActionFinish(); net_log_.EndEventWithNetErrorCode(NetLog::TYPE_HTTP_CACHE_READ_INFO, result); if (result != response_.metadata->size()) return OnCacheReadError(result, false); @@ -1557,7 +1527,6 @@ int HttpCache::Transaction::DoCacheReadData() { if (net_log_.IsLoggingAllEvents()) net_log_.BeginEvent(NetLog::TYPE_HTTP_CACHE_READ_DATA); - ReportCacheActionStart(); if (partial_.get()) { return partial_->CacheRead(entry_->disk_entry, read_buf_.get(), io_buf_len_, io_callback_); @@ -1569,7 +1538,6 @@ int HttpCache::Transaction::DoCacheReadData() { } int HttpCache::Transaction::DoCacheReadDataComplete(int result) { - ReportCacheActionFinish(); if (net_log_.IsLoggingAllEvents()) { net_log_.EndEventWithNetErrorCode(NetLog::TYPE_HTTP_CACHE_READ_DATA, result); @@ -1603,7 +1571,6 @@ int HttpCache::Transaction::DoCacheWriteData(int num_bytes) { if (entry_) { if (net_log_.IsLoggingAllEvents()) net_log_.BeginEvent(NetLog::TYPE_HTTP_CACHE_WRITE_DATA); - ReportCacheActionStart(); } return AppendResponseDataToEntry(read_buf_.get(), num_bytes, io_callback_); @@ -1611,7 +1578,6 @@ int HttpCache::Transaction::DoCacheWriteData(int num_bytes) { int HttpCache::Transaction::DoCacheWriteDataComplete(int result) { if (entry_) { - ReportCacheActionFinish(); if (net_log_.IsLoggingAllEvents()) { net_log_.EndEventWithNetErrorCode(NetLog::TYPE_HTTP_CACHE_WRITE_DATA, result); @@ -1931,7 +1897,6 @@ int HttpCache::Transaction::RestartNetworkRequest() { DCHECK(network_trans_.get()); DCHECK_EQ(STATE_NONE, next_state_); - ReportNetworkActionStart(); next_state_ = STATE_SEND_REQUEST_COMPLETE; int rv = network_trans_->RestartIgnoringLastError(io_callback_); if (rv != ERR_IO_PENDING) @@ -1945,7 +1910,6 @@ int HttpCache::Transaction::RestartNetworkRequestWithCertificate( DCHECK(network_trans_.get()); DCHECK_EQ(STATE_NONE, next_state_); - ReportNetworkActionStart(); next_state_ = STATE_SEND_REQUEST_COMPLETE; int rv = network_trans_->RestartWithCertificate(client_cert, io_callback_); if (rv != ERR_IO_PENDING) @@ -1959,7 +1923,6 @@ int HttpCache::Transaction::RestartNetworkRequestWithAuth( DCHECK(network_trans_.get()); DCHECK_EQ(STATE_NONE, next_state_); - ReportNetworkActionStart(); next_state_ = STATE_SEND_REQUEST_COMPLETE; int rv = network_trans_->RestartWithAuth(credentials, io_callback_); if (rv != ERR_IO_PENDING) @@ -2273,7 +2236,6 @@ int HttpCache::Transaction::WriteResponseInfoToEntry(bool truncated) { response_.headers->HasHeaderValue("cache-control", "no-store")) || net::IsCertStatusError(response_.ssl_info.cert_status)) { DoneWritingToEntry(false); - ReportCacheActionFinish(); if (net_log_.IsLoggingAllEvents()) net_log_.EndEvent(NetLog::TYPE_HTTP_CACHE_WRITE_INFO); return OK; @@ -2431,30 +2393,6 @@ bool HttpCache::Transaction::CanResume(bool has_data) { return true; } -void HttpCache::Transaction::OnIOComplete(int result) { - DoLoop(result); -} - -void HttpCache::Transaction::ReportCacheActionStart() { - if (transaction_delegate_) - transaction_delegate_->OnCacheActionStart(); -} - -void HttpCache::Transaction::ReportCacheActionFinish() { - if (transaction_delegate_) - transaction_delegate_->OnCacheActionFinish(); -} - -void HttpCache::Transaction::ReportNetworkActionStart() { - if (transaction_delegate_) - transaction_delegate_->OnNetworkActionStart(); -} - -void HttpCache::Transaction::ReportNetworkActionFinish() { - if (transaction_delegate_) - transaction_delegate_->OnNetworkActionFinish(); -} - void HttpCache::Transaction::UpdateTransactionPattern( TransactionPattern new_transaction_pattern) { if (transaction_pattern_ == PATTERN_NOT_COVERED) @@ -2541,4 +2479,8 @@ void HttpCache::Transaction::RecordHistograms() { } } +void HttpCache::Transaction::OnIOComplete(int result) { + DoLoop(result); +} + } // namespace net diff --git a/net/http/http_cache_transaction.h b/net/http/http_cache_transaction.h index 14c6ad6..3d43e51 100644 --- a/net/http/http_cache_transaction.h +++ b/net/http/http_cache_transaction.h @@ -23,7 +23,6 @@ namespace net { class PartialData; struct HttpRequestInfo; -class HttpTransactionDelegate; struct LoadTimingInfo; // This is the transaction that is returned by the HttpCache transaction @@ -60,8 +59,7 @@ class HttpCache::Transaction : public HttpTransaction { }; Transaction(RequestPriority priority, - HttpCache* cache, - HttpTransactionDelegate* transaction_delegate); + HttpCache* cache); virtual ~Transaction(); Mode mode() const { return mode_; } @@ -374,16 +372,12 @@ class HttpCache::Transaction : public HttpTransaction { // data is considered for the result. bool CanResume(bool has_data); - // Called to signal completion of asynchronous IO. - void OnIOComplete(int result); - - void ReportCacheActionStart(); - void ReportCacheActionFinish(); - void ReportNetworkActionStart(); - void ReportNetworkActionFinish(); void UpdateTransactionPattern(TransactionPattern new_transaction_pattern); void RecordHistograms(); + // Called to signal completion of asynchronous IO. + void OnIOComplete(int result); + State next_state_; const HttpRequestInfo* request_; RequestPriority priority_; @@ -430,8 +424,6 @@ class HttpCache::Transaction : public HttpTransaction { base::TimeTicks first_cache_access_since_; base::TimeTicks send_request_since_; - HttpTransactionDelegate* transaction_delegate_; - int64 total_received_bytes_; // Load timing information for the last network request, if any. Set in the diff --git a/net/http/http_cache_unittest.cc b/net/http/http_cache_unittest.cc index 1c42ba2..f7d5223 100644 --- a/net/http/http_cache_unittest.cc +++ b/net/http/http_cache_unittest.cc @@ -27,7 +27,6 @@ #include "net/http/http_response_headers.h" #include "net/http/http_response_info.h" #include "net/http/http_transaction.h" -#include "net/http/http_transaction_delegate.h" #include "net/http/http_transaction_unittest.h" #include "net/http/http_util.h" #include "net/http/mock_http_cache.h" @@ -108,60 +107,6 @@ class DeleteCacheCompletionCallback : public net::TestCompletionCallbackBase { //----------------------------------------------------------------------------- // helpers -class TestHttpTransactionDelegate : public net::HttpTransactionDelegate { - public: - TestHttpTransactionDelegate(int num_cache_actions_to_observe, - int num_network_actions_to_observe) - : num_callbacks_observed_(0), - num_remaining_cache_actions_to_observe_(num_cache_actions_to_observe), - num_remaining_network_actions_to_observe_( - num_network_actions_to_observe), - cache_action_in_progress_(false), - network_action_in_progress_(false) { - } - virtual ~TestHttpTransactionDelegate() { - EXPECT_EQ(0, num_remaining_cache_actions_to_observe_); - EXPECT_EQ(0, num_remaining_network_actions_to_observe_); - EXPECT_FALSE(cache_action_in_progress_); - EXPECT_FALSE(network_action_in_progress_); - } - virtual void OnCacheActionStart() OVERRIDE { - num_callbacks_observed_++; - EXPECT_FALSE(cache_action_in_progress_); - EXPECT_FALSE(network_action_in_progress_); - EXPECT_GT(num_remaining_cache_actions_to_observe_, 0); - num_remaining_cache_actions_to_observe_--; - cache_action_in_progress_ = true; - } - virtual void OnCacheActionFinish() OVERRIDE { - num_callbacks_observed_++; - EXPECT_TRUE(cache_action_in_progress_); - cache_action_in_progress_ = false; - } - virtual void OnNetworkActionStart() OVERRIDE { - num_callbacks_observed_++; - EXPECT_FALSE(cache_action_in_progress_); - EXPECT_FALSE(network_action_in_progress_); - EXPECT_GT(num_remaining_network_actions_to_observe_, 0); - num_remaining_network_actions_to_observe_--; - network_action_in_progress_ = true; - } - virtual void OnNetworkActionFinish() OVERRIDE { - num_callbacks_observed_++; - EXPECT_TRUE(network_action_in_progress_); - network_action_in_progress_ = false; - } - - int num_callbacks_observed() { return num_callbacks_observed_; } - - private: - int num_callbacks_observed_; - int num_remaining_cache_actions_to_observe_; - int num_remaining_network_actions_to_observe_; - bool cache_action_in_progress_; - bool network_action_in_progress_; -}; - void ReadAndVerifyTransaction(net::HttpTransaction* trans, const MockTransaction& trans_info) { std::string content; @@ -172,32 +117,19 @@ void ReadAndVerifyTransaction(net::HttpTransaction* trans, EXPECT_EQ(expected, content); } -const int kNoDelegateTransactionCheck = -1; - -void RunTransactionTestWithRequestAndDelegateAndGetTiming( - net::HttpCache* cache, - const MockTransaction& trans_info, - const MockHttpRequest& request, - net::HttpResponseInfo* response_info, - int num_cache_delegate_actions, - int num_network_delegate_actions, - const net::BoundNetLog& net_log, - net::LoadTimingInfo* load_timing_info, - int64* received_bytes) { +void RunTransactionTestBase(net::HttpCache* cache, + const MockTransaction& trans_info, + const MockHttpRequest& request, + net::HttpResponseInfo* response_info, + const net::BoundNetLog& net_log, + net::LoadTimingInfo* load_timing_info, + int64* received_bytes) { net::TestCompletionCallback callback; // write to the cache - scoped_ptr<TestHttpTransactionDelegate> delegate; - if (num_cache_delegate_actions != kNoDelegateTransactionCheck && - num_network_delegate_actions != kNoDelegateTransactionCheck) { - delegate.reset( - new TestHttpTransactionDelegate(num_cache_delegate_actions, - num_network_delegate_actions)); - } scoped_ptr<net::HttpTransaction> trans; - int rv = cache->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, delegate.get()); + int rv = cache->CreateTransaction(net::DEFAULT_PRIORITY, &trans); EXPECT_EQ(net::OK, rv); ASSERT_TRUE(trans.get()); @@ -229,45 +161,20 @@ void RunTransactionTestWithRequestAndDelegateAndGetTiming( *received_bytes = trans->GetTotalReceivedBytes(); } -void RunTransactionTestWithRequestAndDelegate( - net::HttpCache* cache, - const MockTransaction& trans_info, - const MockHttpRequest& request, - net::HttpResponseInfo* response_info, - int num_cache_delegate_actions, - int num_network_delegate_actions) { - RunTransactionTestWithRequestAndDelegateAndGetTiming( - cache, trans_info, request, response_info, num_cache_delegate_actions, - num_network_delegate_actions, net::BoundNetLog(), NULL, NULL); -} - void RunTransactionTestWithRequest(net::HttpCache* cache, const MockTransaction& trans_info, const MockHttpRequest& request, net::HttpResponseInfo* response_info) { - RunTransactionTestWithRequestAndDelegate( - cache, trans_info, request, response_info, kNoDelegateTransactionCheck, - kNoDelegateTransactionCheck); + RunTransactionTestBase(cache, trans_info, request, response_info, + net::BoundNetLog(), NULL, NULL); } -void RunTransactionTestAndGetTiming( - net::HttpCache* cache, - const MockTransaction& trans_info, - const net::BoundNetLog& log, - net::LoadTimingInfo* load_timing_info) { - RunTransactionTestWithRequestAndDelegateAndGetTiming( - cache, trans_info, MockHttpRequest(trans_info), NULL, - kNoDelegateTransactionCheck, kNoDelegateTransactionCheck, log, - load_timing_info, NULL); -} - -void RunTransactionTestWithDelegate(net::HttpCache* cache, +void RunTransactionTestAndGetTiming(net::HttpCache* cache, const MockTransaction& trans_info, - int num_cache_delegate_actions, - int num_network_delegate_actions) { - RunTransactionTestWithRequestAndDelegate( - cache, trans_info, MockHttpRequest(trans_info), NULL, - num_cache_delegate_actions, num_network_delegate_actions); + const net::BoundNetLog& log, + net::LoadTimingInfo* load_timing_info) { + RunTransactionTestBase(cache, trans_info, MockHttpRequest(trans_info), + NULL, log, load_timing_info, NULL); } void RunTransactionTest(net::HttpCache* cache, @@ -279,8 +186,8 @@ void RunTransactionTest(net::HttpCache* cache, void RunTransactionTestWithResponseInfo(net::HttpCache* cache, const MockTransaction& trans_info, net::HttpResponseInfo* response) { - RunTransactionTestWithRequest( - cache, trans_info, MockHttpRequest(trans_info), response); + RunTransactionTestWithRequest(cache, trans_info, MockHttpRequest(trans_info), + response); } void RunTransactionTestWithResponseInfoAndGetTiming( @@ -289,10 +196,8 @@ void RunTransactionTestWithResponseInfoAndGetTiming( net::HttpResponseInfo* response, const net::BoundNetLog& log, net::LoadTimingInfo* load_timing_info) { - RunTransactionTestWithRequestAndDelegateAndGetTiming( - cache, trans_info, MockHttpRequest(trans_info), response, - kNoDelegateTransactionCheck, kNoDelegateTransactionCheck, log, - load_timing_info, NULL); + RunTransactionTestBase(cache, trans_info, MockHttpRequest(trans_info), + response, log, load_timing_info, NULL); } void RunTransactionTestWithResponse(net::HttpCache* cache, @@ -310,10 +215,8 @@ void RunTransactionTestWithResponseAndGetTiming( const net::BoundNetLog& log, net::LoadTimingInfo* load_timing_info) { net::HttpResponseInfo response; - RunTransactionTestWithRequestAndDelegateAndGetTiming( - cache, trans_info, MockHttpRequest(trans_info), &response, - kNoDelegateTransactionCheck, kNoDelegateTransactionCheck, - log, load_timing_info, NULL); + RunTransactionTestBase(cache, trans_info, MockHttpRequest(trans_info), + &response, log, load_timing_info, NULL); response.headers->GetNormalizedHeaders(response_headers); } @@ -606,9 +509,7 @@ TEST(HttpCache, CreateThenDestroy) { MockHttpCache cache; scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - EXPECT_EQ(net::OK, rv); + EXPECT_EQ(net::OK, cache.CreateTransaction(&trans)); ASSERT_TRUE(trans.get()); } @@ -698,15 +599,13 @@ TEST(HttpCache, ReleaseBuffer) { MockHttpRequest request(kSimpleGET_Transaction); scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - ASSERT_EQ(net::OK, rv); + ASSERT_EQ(net::OK, cache.CreateTransaction(&trans)); const int kBufferSize = 10; scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kBufferSize)); net::ReleaseBufferCompletionCallback cb(buffer.get()); - rv = trans->Start(&request, cb.callback(), net::BoundNetLog()); + int rv = trans->Start(&request, cb.callback(), net::BoundNetLog()); EXPECT_EQ(net::OK, cb.GetResult(rv)); rv = trans->Read(buffer.get(), kBufferSize, cb.callback()); @@ -741,9 +640,8 @@ TEST(HttpCache, SimpleGETWithDiskFailures2) { MockHttpRequest request(kSimpleGET_Transaction); scoped_ptr<Context> c(new Context()); - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, rv); + int rv = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, rv); rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); EXPECT_EQ(net::ERR_IO_PENDING, rv); @@ -787,9 +685,8 @@ TEST(HttpCache, SimpleGETWithDiskFailures3) { // Now fail to read from the cache. scoped_ptr<Context> c(new Context()); - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, rv); + int rv = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, rv); MockHttpRequest request(kSimpleGET_Transaction); rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); @@ -894,12 +791,9 @@ TEST(HttpCache, SimpleGET_LoadOnlyFromCache_Miss) { net::TestCompletionCallback callback; scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - EXPECT_EQ(net::OK, rv); - ASSERT_TRUE(trans.get()); + ASSERT_EQ(net::OK, cache.CreateTransaction(&trans)); - rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); + int rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); if (rv == net::ERR_IO_PENDING) rv = callback.WaitForResult(); ASSERT_EQ(net::ERR_CACHE_MISS, rv); @@ -1047,11 +941,8 @@ TEST(HttpCache, SimpleGET_CacheOverride_Offline) { MockHttpRequest request(transaction); net::TestCompletionCallback callback; scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - EXPECT_EQ(net::OK, rv); - ASSERT_TRUE(trans.get()); - rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); + ASSERT_EQ(net::OK, cache.CreateTransaction(&trans)); + int rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); EXPECT_EQ(net::OK, callback.GetResult(rv)); const net::HttpResponseInfo* response_info = trans->GetResponseInfo(); @@ -1322,9 +1213,8 @@ TEST(HttpCache, SimpleGET_ManyReaders) { context_list.push_back(new Context()); Context* c = context_list[i]; - c->result = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, c->result); + c->result = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, c->result); EXPECT_EQ(net::LOAD_STATE_IDLE, c->trans->GetLoadState()); c->result = c->trans->Start( @@ -1391,9 +1281,8 @@ TEST(HttpCache, SimpleGET_RacingReaders) { context_list.push_back(new Context()); Context* c = context_list[i]; - c->result = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, c->result); + c->result = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, c->result); MockHttpRequest* this_request = &request; if (i == 1 || i == 2) @@ -1477,9 +1366,8 @@ TEST(HttpCache, SimpleGET_DoomWithPending) { context_list.push_back(new Context()); Context* c = context_list[i]; - c->result = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, c->result); + c->result = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, c->result); MockHttpRequest* this_request = &request; if (i == 3) @@ -1526,9 +1414,8 @@ TEST(HttpCache, FastNoStoreGET_DoneWithPending) { context_list.push_back(new Context()); Context* c = context_list[i]; - c->result = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, c->result); + c->result = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, c->result); c->result = c->trans->Start( &request, c->callback.callback(), net::BoundNetLog()); @@ -1574,9 +1461,8 @@ TEST(HttpCache, SimpleGET_ManyWriters_CancelFirst) { context_list.push_back(new Context()); Context* c = context_list[i]; - c->result = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, c->result); + c->result = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, c->result); c->result = c->trans->Start( &request, c->callback.callback(), net::BoundNetLog()); @@ -1635,9 +1521,8 @@ TEST(HttpCache, SimpleGET_ManyWriters_CancelCreate) { context_list.push_back(new Context()); Context* c = context_list[i]; - c->result = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, c->result); + c->result = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, c->result); c->result = c->trans->Start( &request, c->callback.callback(), net::BoundNetLog()); @@ -1687,9 +1572,8 @@ TEST(HttpCache, SimpleGET_CancelCreate) { Context* c = new Context(); - c->result = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, c->result); + c->result = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, c->result); c->result = c->trans->Start( &request, c->callback.callback(), net::BoundNetLog()); @@ -1718,9 +1602,8 @@ TEST(HttpCache, SimpleGET_ManyWriters_BypassCache) { context_list.push_back(new Context()); Context* c = context_list[i]; - c->result = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, c->result); + c->result = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, c->result); c->result = c->trans->Start( &request, c->callback.callback(), net::BoundNetLog()); @@ -1761,10 +1644,8 @@ TEST(HttpCache, SimpleGET_AbandonedCacheRead) { net::TestCompletionCallback callback; scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - EXPECT_EQ(net::OK, rv); - rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); + ASSERT_EQ(net::OK, cache.CreateTransaction(&trans)); + int rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); if (rv == net::ERR_IO_PENDING) rv = callback.WaitForResult(); ASSERT_EQ(net::OK, rv); @@ -1797,9 +1678,8 @@ TEST(HttpCache, SimpleGET_ManyWriters_DeleteCache) { context_list.push_back(new Context()); Context* c = context_list[i]; - c->result = cache->http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, c->result); + c->result = cache->CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, c->result); c->result = c->trans->Start( &request, c->callback.callback(), net::BoundNetLog()); @@ -1837,9 +1717,8 @@ TEST(HttpCache, SimpleGET_WaitForBackend) { context_list.push_back(new Context()); Context* c = context_list[i]; - c->result = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, c->result); + c->result = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, c->result); } context_list[0]->result = context_list[0]->trans->Start( @@ -1884,9 +1763,8 @@ TEST(HttpCache, SimpleGET_WaitForBackend_CancelCreate) { context_list.push_back(new Context()); Context* c = context_list[i]; - c->result = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, c->result); + c->result = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, c->result); } context_list[0]->result = context_list[0]->trans->Start( @@ -1931,9 +1809,8 @@ TEST(HttpCache, DeleteCacheWaitingForBackend) { MockHttpRequest request(kSimpleGET_Transaction); scoped_ptr<Context> c(new Context()); - c->result = cache->http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, c->result); + c->result = cache->CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, c->result); c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); @@ -1970,9 +1847,8 @@ TEST(HttpCache, DeleteCacheWaitingForBackend2) { MockHttpRequest request(kSimpleGET_Transaction); scoped_ptr<Context> c(new Context()); - c->result = cache->http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, c->result); + c->result = cache->CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, c->result); c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); @@ -2781,12 +2657,10 @@ TEST(HttpCache, SimplePOST_LoadOnlyFromCache_Miss) { net::TestCompletionCallback callback; scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - EXPECT_EQ(net::OK, rv); + ASSERT_EQ(net::OK, cache.CreateTransaction(&trans)); ASSERT_TRUE(trans.get()); - rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); + int rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); ASSERT_EQ(net::ERR_CACHE_MISS, callback.GetResult(rv)); trans.reset(); @@ -4332,9 +4206,8 @@ TEST(HttpCache, RangeGET_Cancel) { MockHttpRequest request(kRangeGET_TransactionOK); Context* c = new Context(); - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, rv); + int rv = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, rv); rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); if (rv == net::ERR_IO_PENDING) @@ -4372,9 +4245,8 @@ TEST(HttpCache, RangeGET_Cancel2) { request.load_flags |= net::LOAD_VALIDATE_CACHE; Context* c = new Context(); - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, rv); + int rv = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, rv); rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); if (rv == net::ERR_IO_PENDING) @@ -4418,9 +4290,8 @@ TEST(HttpCache, RangeGET_Cancel3) { request.load_flags |= net::LOAD_VALIDATE_CACHE; Context* c = new Context(); - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, rv); + int rv = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, rv); rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); EXPECT_EQ(net::ERR_IO_PENDING, rv); @@ -4446,9 +4317,8 @@ TEST(HttpCache, RangeGET_Cancel3) { // active entry (no open or create). c = new Context(); - rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, rv); + rv = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, rv); rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); EXPECT_EQ(net::ERR_IO_PENDING, rv); @@ -4728,8 +4598,7 @@ TEST(HttpCache, RangeGET_OK_LoadOnlyFromCache) { net::TestCompletionCallback callback; scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); + int rv = cache.http_cache()->CreateTransaction(net::DEFAULT_PRIORITY, &trans); EXPECT_EQ(net::OK, rv); ASSERT_TRUE(trans.get()); @@ -4807,9 +4676,8 @@ TEST(HttpCache, DoomOnDestruction) { MockHttpRequest request(kSimpleGET_Transaction); Context* c = new Context(); - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, rv); + int rv = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, rv); rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); if (rv == net::ERR_IO_PENDING) @@ -4838,9 +4706,8 @@ TEST(HttpCache, DoomOnDestruction2) { MockHttpRequest request(kSimpleGET_Transaction); Context* c = new Context(); - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, rv); + int rv = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, rv); rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); if (rv == net::ERR_IO_PENDING) @@ -4882,9 +4749,8 @@ TEST(HttpCache, DoomOnDestruction3) { MockHttpRequest request(transaction); Context* c = new Context(); - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, rv); + int rv = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, rv); rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); if (rv == net::ERR_IO_PENDING) @@ -4926,15 +4792,9 @@ TEST(HttpCache, SetTruncatedFlag) { MockHttpRequest request(transaction); scoped_ptr<Context> c(new Context()); - // We use a test delegate to ensure that after initiating destruction - // of the transaction, no further delegate callbacks happen. - // We initialize the TestHttpTransactionDelegate with the correct number of - // cache actions and network actions to be reported. - scoped_ptr<TestHttpTransactionDelegate> delegate( - new TestHttpTransactionDelegate(7, 3)); - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, delegate.get()); - EXPECT_EQ(net::OK, rv); + + int rv = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, rv); rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); if (rv == net::ERR_IO_PENDING) @@ -4957,21 +4817,11 @@ TEST(HttpCache, SetTruncatedFlag) { EXPECT_FALSE(c->callback.have_result()); MockHttpCache::SetTestMode(TEST_MODE_SYNC_ALL); - int num_delegate_callbacks_before_destruction = - delegate->num_callbacks_observed(); // Destroy the transaction. c->trans.reset(); MockHttpCache::SetTestMode(0); - // Ensure the delegate received no callbacks during destruction. - EXPECT_EQ(num_delegate_callbacks_before_destruction, - delegate->num_callbacks_observed()); - - // Since the transaction was aborted in the middle of network I/O, we will - // manually call the delegate so that its pending I/O operation will be - // closed (which is what the test delegate is expecting). - delegate->OnNetworkActionFinish(); // Make sure that we don't invoke the callback. We may have an issue if the // UrlRequestJob is killed directly (without cancelling the UrlRequest) so we @@ -5004,9 +4854,8 @@ TEST(HttpCache, DontSetTruncatedFlag) { MockHttpRequest request(transaction); scoped_ptr<Context> c(new Context()); - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, rv); + int rv = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, rv); rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); EXPECT_EQ(net::OK, c->callback.GetResult(rv)); @@ -5149,18 +4998,15 @@ TEST(HttpCache, GET_IncompleteResource_Cancel) { MockHttpRequest request(transaction); Context* c = new Context(); - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL); - EXPECT_EQ(net::OK, rv); + int rv = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, rv); // Queue another request to this transaction. We have to start this request // before the first one gets the response from the server and dooms the entry, // otherwise it will just create a new entry without being queued to the first // request. Context* pending = new Context(); - EXPECT_EQ(net::OK, - cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &pending->trans, NULL)); + ASSERT_EQ(net::OK, cache.CreateTransaction(&pending->trans)); rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); EXPECT_EQ(net::ERR_IO_PENDING, @@ -5244,12 +5090,11 @@ TEST(HttpCache, GET_IncompleteResource3) { "rg: 50-59 rg: 60-69 rg: 70-79 "; scoped_ptr<Context> c(new Context); - EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL)); + int rv = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, rv); MockHttpRequest request(transaction); - int rv = c->trans->Start( - &request, c->callback.callback(), net::BoundNetLog()); + rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); EXPECT_EQ(net::OK, c->callback.GetResult(rv)); // We should have checked with the server before finishing Start(). @@ -5317,11 +5162,10 @@ TEST(HttpCache, GET_CancelIncompleteResource) { MockHttpRequest request(transaction); Context* c = new Context(); - EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &c->trans, NULL)); + int rv = cache.CreateTransaction(&c->trans); + ASSERT_EQ(net::OK, rv); - int rv = c->trans->Start( - &request, c->callback.callback(), net::BoundNetLog()); + rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); EXPECT_EQ(net::OK, c->callback.GetResult(rv)); // Read 20 bytes from the cache, and 10 from the net. @@ -5446,12 +5290,9 @@ TEST(HttpCache, CachedRedirect) { // Write to the cache. { scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - EXPECT_EQ(net::OK, rv); - ASSERT_TRUE(trans.get()); + ASSERT_EQ(net::OK, cache.CreateTransaction(&trans)); - rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); + int rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); if (rv == net::ERR_IO_PENDING) rv = callback.WaitForResult(); ASSERT_EQ(net::OK, rv); @@ -5483,12 +5324,9 @@ TEST(HttpCache, CachedRedirect) { // Read from the cache. { scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - EXPECT_EQ(net::OK, rv); - ASSERT_TRUE(trans.get()); + ASSERT_EQ(net::OK, cache.CreateTransaction(&trans)); - rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); + int rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); if (rv == net::ERR_IO_PENDING) rv = callback.WaitForResult(); ASSERT_EQ(net::OK, rv); @@ -5667,12 +5505,9 @@ TEST(HttpCache, SimpleGET_SSLError) { net::TestCompletionCallback callback; scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - EXPECT_EQ(net::OK, rv); - ASSERT_TRUE(trans.get()); + ASSERT_EQ(net::OK, cache.CreateTransaction(&trans)); - rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); + int rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); if (rv == net::ERR_IO_PENDING) rv = callback.WaitForResult(); ASSERT_EQ(net::ERR_CACHE_MISS, rv); @@ -5683,9 +5518,7 @@ TEST(HttpCache, OutlivedTransactions) { MockHttpCache* cache = new MockHttpCache; scoped_ptr<net::HttpTransaction> trans; - int rv = cache->http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - EXPECT_EQ(net::OK, rv); + EXPECT_EQ(net::OK, cache->CreateTransaction(&trans)); delete cache; trans.reset(); @@ -5932,12 +5765,10 @@ TEST(HttpCache, FilterCompletion) { { scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - EXPECT_EQ(net::OK, rv); + ASSERT_EQ(net::OK, cache.CreateTransaction(&trans)); MockHttpRequest request(kSimpleGET_Transaction); - rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); + int rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); EXPECT_EQ(net::OK, callback.GetResult(rv)); scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256)); @@ -5970,12 +5801,10 @@ TEST(HttpCache, DoneReading) { transaction.data = ""; scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - EXPECT_EQ(net::OK, rv); + ASSERT_EQ(net::OK, cache.CreateTransaction(&trans)); MockHttpRequest request(transaction); - rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); + int rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); EXPECT_EQ(net::OK, callback.GetResult(rv)); trans->DoneReading(); @@ -6000,11 +5829,9 @@ TEST(HttpCache, StopCachingDeletesEntry) { { scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - EXPECT_EQ(net::OK, rv); + ASSERT_EQ(net::OK, cache.CreateTransaction(&trans)); - rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); + int rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); EXPECT_EQ(net::OK, callback.GetResult(rv)); scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256)); @@ -6040,11 +5867,9 @@ TEST(HttpCache, StopCachingThenDoneReadingDeletesEntry) { { scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - EXPECT_EQ(net::OK, rv); + ASSERT_EQ(net::OK, cache.CreateTransaction(&trans)); - rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); + int rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); EXPECT_EQ(net::OK, callback.GetResult(rv)); scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256)); @@ -6085,11 +5910,9 @@ TEST(HttpCache, StopCachingWithAuthDeletesEntry) { { scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - EXPECT_EQ(net::OK, rv); + ASSERT_EQ(net::OK, cache.CreateTransaction(&trans)); - rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); + int rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); EXPECT_EQ(net::OK, callback.GetResult(rv)); trans->StopCaching(); @@ -6119,9 +5942,7 @@ TEST(HttpCache, StopCachingSavesEntry) { { scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - EXPECT_EQ(net::OK, rv); + ASSERT_EQ(net::OK, cache.CreateTransaction(&trans)); // Force a response that can be resumed. MockTransaction mock_transaction(kSimpleGET_Transaction); @@ -6130,7 +5951,7 @@ TEST(HttpCache, StopCachingSavesEntry) { "Content-Length: 42\n" "Etag: \"foo\"\n"; - rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); + int rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); EXPECT_EQ(net::OK, callback.GetResult(rv)); scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256)); @@ -6177,11 +5998,9 @@ TEST(HttpCache, StopCachingTruncatedEntry) { { // Now make a regular request. scoped_ptr<net::HttpTransaction> trans; - int rv = cache.http_cache()->CreateTransaction( - net::DEFAULT_PRIORITY, &trans, NULL); - EXPECT_EQ(net::OK, rv); + ASSERT_EQ(net::OK, cache.CreateTransaction(&trans)); - rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); + int rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); EXPECT_EQ(net::OK, callback.GetResult(rv)); scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256)); @@ -6258,34 +6077,13 @@ TEST(HttpCache, TruncatedByContentLength2) { entry->Close(); } -TEST(HttpCache, SimpleGET_LoadOnlyFromCache_Hit_TransactionDelegate) { - MockHttpCache cache; - - // Write to the cache. - RunTransactionTestWithDelegate(cache.http_cache(), - kSimpleGET_Transaction, - 8, - 3); - - // Force this transaction to read from the cache. - MockTransaction transaction(kSimpleGET_Transaction); - transaction.load_flags |= net::LOAD_ONLY_FROM_CACHE; - - RunTransactionTestWithDelegate(cache.http_cache(), - kSimpleGET_Transaction, - 5, - 0); -} - // Make sure that calling SetPriority on a cache transaction passes on // its priority updates to its underlying network transaction. TEST(HttpCache, SetPriority) { MockHttpCache cache; scoped_ptr<net::HttpTransaction> trans; - EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction( - net::IDLE, &trans, NULL)); - ASSERT_TRUE(trans.get()); + ASSERT_EQ(net::OK, cache.http_cache()->CreateTransaction(net::IDLE, &trans)); // Shouldn't crash, but doesn't do anything either. trans->SetPriority(net::LOW); @@ -6327,9 +6125,7 @@ TEST(HttpCache, SetWebSocketHandshakeStreamCreateHelper) { FakeWebSocketHandshakeStreamCreateHelper create_helper; scoped_ptr<net::HttpTransaction> trans; - EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction( - net::IDLE, &trans, NULL)); - ASSERT_TRUE(trans.get()); + ASSERT_EQ(net::OK, cache.http_cache()->CreateTransaction(net::IDLE, &trans)); EXPECT_FALSE(cache.network_layer()->last_transaction()); @@ -6370,9 +6166,8 @@ TEST(HttpCache, SetPriorityNewTransaction) { "rg: 50-59 rg: 60-69 rg: 70-79 "; scoped_ptr<net::HttpTransaction> trans; - EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction( - net::MEDIUM, &trans, NULL)); - ASSERT_TRUE(trans.get()); + ASSERT_EQ(net::OK, + cache.http_cache()->CreateTransaction(net::MEDIUM, &trans)); EXPECT_EQ(net::DEFAULT_PRIORITY, cache.network_layer()->last_create_transaction_priority()); @@ -6400,16 +6195,15 @@ int64 RunTransactionAndGetReceivedBytes( MockHttpCache& cache, const MockTransaction& trans_info) { int64 received_bytes = -1; - RunTransactionTestWithRequestAndDelegateAndGetTiming( - cache.http_cache(), trans_info, MockHttpRequest(trans_info), NULL, - kNoDelegateTransactionCheck, kNoDelegateTransactionCheck, - net::BoundNetLog(), NULL, &received_bytes); + RunTransactionTestBase(cache.http_cache(), trans_info, + MockHttpRequest(trans_info), NULL, net::BoundNetLog(), + NULL, &received_bytes); return received_bytes; } int64 TransactionSize(MockTransaction& transaction) { return strlen(transaction.status) + strlen(transaction.response_headers) + - strlen(transaction.data); + strlen(transaction.data); } TEST(HttpCache, ReceivedBytesCacheMissAndThenHit) { diff --git a/net/http/http_network_layer.cc b/net/http/http_network_layer.cc index 7d3f158..0704de4 100644 --- a/net/http/http_network_layer.cc +++ b/net/http/http_network_layer.cc @@ -60,8 +60,7 @@ void HttpNetworkLayer::ForceAlternateProtocol() { //----------------------------------------------------------------------------- int HttpNetworkLayer::CreateTransaction(RequestPriority priority, - scoped_ptr<HttpTransaction>* trans, - HttpTransactionDelegate* delegate) { + scoped_ptr<HttpTransaction>* trans) { if (suspended_) return ERR_NETWORK_IO_SUSPENDED; diff --git a/net/http/http_network_layer.h b/net/http/http_network_layer.h index c4c41ae..fc94d0a 100644 --- a/net/http/http_network_layer.h +++ b/net/http/http_network_layer.h @@ -44,8 +44,7 @@ class NET_EXPORT HttpNetworkLayer // HttpTransactionFactory methods: virtual int CreateTransaction(RequestPriority priority, - scoped_ptr<HttpTransaction>* trans, - HttpTransactionDelegate* delegate) OVERRIDE; + scoped_ptr<HttpTransaction>* trans) OVERRIDE; virtual HttpCache* GetCache() OVERRIDE; virtual HttpNetworkSession* GetSession() OVERRIDE; diff --git a/net/http/http_network_layer_unittest.cc b/net/http/http_network_layer_unittest.cc index 2c949d0..f67bba8 100644 --- a/net/http/http_network_layer_unittest.cc +++ b/net/http/http_network_layer_unittest.cc @@ -73,7 +73,7 @@ class HttpNetworkLayerTest : public PlatformTest { request_info.load_flags = LOAD_NORMAL; scoped_ptr<HttpTransaction> trans; - int rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans, NULL); + int rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans); EXPECT_EQ(OK, rv); rv = trans->Start(&request_info, callback.callback(), BoundNetLog()); @@ -277,28 +277,28 @@ class HttpNetworkLayerTest : public PlatformTest { TEST_F(HttpNetworkLayerTest, CreateAndDestroy) { scoped_ptr<HttpTransaction> trans; - int rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans, NULL); + int rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans); EXPECT_EQ(OK, rv); EXPECT_TRUE(trans.get() != NULL); } TEST_F(HttpNetworkLayerTest, Suspend) { scoped_ptr<HttpTransaction> trans; - int rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans, NULL); + int rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans); EXPECT_EQ(OK, rv); trans.reset(); factory_->OnSuspend(); - rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans, NULL); + rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans); EXPECT_EQ(ERR_NETWORK_IO_SUSPENDED, rv); ASSERT_TRUE(trans == NULL); factory_->OnResume(); - rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans, NULL); + rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans); EXPECT_EQ(OK, rv); } @@ -328,7 +328,7 @@ TEST_F(HttpNetworkLayerTest, GET) { request_info.load_flags = LOAD_NORMAL; scoped_ptr<HttpTransaction> trans; - int rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans, NULL); + int rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans); EXPECT_EQ(OK, rv); rv = trans->Start(&request_info, callback.callback(), BoundNetLog()); @@ -592,7 +592,7 @@ TEST_F(HttpNetworkLayerTest, ProxyBypassIgnoredOnDirectConnectionPac) { request_info.load_flags = LOAD_NORMAL; scoped_ptr<HttpTransaction> trans; - int rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans, NULL); + int rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans); EXPECT_EQ(OK, rv); rv = trans->Start(&request_info, callback.callback(), BoundNetLog()); @@ -685,7 +685,7 @@ TEST_F(HttpNetworkLayerTest, NetworkVerified) { request_info.load_flags = LOAD_NORMAL; scoped_ptr<HttpTransaction> trans; - int rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans, NULL); + int rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans); EXPECT_EQ(OK, rv); rv = trans->Start(&request_info, callback.callback(), BoundNetLog()); @@ -718,7 +718,7 @@ TEST_F(HttpNetworkLayerTest, NetworkUnVerified) { request_info.load_flags = LOAD_NORMAL; scoped_ptr<HttpTransaction> trans; - int rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans, NULL); + int rv = factory_->CreateTransaction(DEFAULT_PRIORITY, &trans); EXPECT_EQ(OK, rv); rv = trans->Start(&request_info, callback.callback(), BoundNetLog()); diff --git a/net/http/http_transaction_delegate.h b/net/http/http_transaction_delegate.h deleted file mode 100644 index 1849373..0000000 --- a/net/http/http_transaction_delegate.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) 2012 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 NET_HTTP_HTTP_TRANSACTION_DELEGATE_H_ -#define NET_HTTP_HTTP_TRANSACTION_DELEGATE_H_ - -namespace net { - -// Delegate class receiving notifications when cache or network actions start -// and finish, i.e. when the object starts and finishes waiting on an -// underlying cache or the network. The owner of a HttpTransaction can use -// this to register a delegate to receive notifications when these events -// happen. -class HttpTransactionDelegate { - public: - virtual ~HttpTransactionDelegate() {} - virtual void OnCacheActionStart() = 0; - virtual void OnCacheActionFinish() = 0; - virtual void OnNetworkActionStart() = 0; - virtual void OnNetworkActionFinish() = 0; -}; - -} // namespace net - -#endif // NET_HTTP_HTTP_TRANSACTION_DELEGATE_H_ diff --git a/net/http/http_transaction_factory.h b/net/http/http_transaction_factory.h index d9870be..673a6f9 100644 --- a/net/http/http_transaction_factory.h +++ b/net/http/http_transaction_factory.h @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef NET_HTTP_HTTP_TRANSACTION_FACTORY_H__ -#define NET_HTTP_HTTP_TRANSACTION_FACTORY_H__ +#ifndef NET_HTTP_HTTP_TRANSACTION_FACTORY_H_ +#define NET_HTTP_HTTP_TRANSACTION_FACTORY_H_ #include "base/memory/scoped_ptr.h" #include "net/base/net_export.h" @@ -14,7 +14,6 @@ namespace net { class HttpCache; class HttpNetworkSession; class HttpTransaction; -class HttpTransactionDelegate; // An interface to a class that can create HttpTransaction objects. class NET_EXPORT HttpTransactionFactory { @@ -24,8 +23,7 @@ class NET_EXPORT HttpTransactionFactory { // Creates a HttpTransaction object. On success, saves the new // transaction to |*trans| and returns OK. virtual int CreateTransaction(RequestPriority priority, - scoped_ptr<HttpTransaction>* trans, - HttpTransactionDelegate* delegate) = 0; + scoped_ptr<HttpTransaction>* trans) = 0; // Returns the associated cache if any (may be NULL). virtual HttpCache* GetCache() = 0; @@ -36,4 +34,4 @@ class NET_EXPORT HttpTransactionFactory { } // namespace net -#endif // NET_HTTP_HTTP_TRANSACTION_FACTORY_H__ +#endif // NET_HTTP_HTTP_TRANSACTION_FACTORY_H_ diff --git a/net/http/http_transaction_unittest.cc b/net/http/http_transaction_unittest.cc index ef2923f..041fb60 100644 --- a/net/http/http_transaction_unittest.cc +++ b/net/http/http_transaction_unittest.cc @@ -157,7 +157,7 @@ TestTransactionConsumer::TestTransactionConsumer( net::HttpTransactionFactory* factory) : state_(IDLE), error_(net::OK) { // Disregard the error code. - factory->CreateTransaction(priority, &trans_, NULL); + factory->CreateTransaction(priority, &trans_); ++quit_counter_; } @@ -412,8 +412,7 @@ void MockNetworkLayer::TransactionDoneReading() { int MockNetworkLayer::CreateTransaction( net::RequestPriority priority, - scoped_ptr<net::HttpTransaction>* trans, - net::HttpTransactionDelegate* delegate) { + scoped_ptr<net::HttpTransaction>* trans) { transaction_count_++; last_create_transaction_priority_ = priority; scoped_ptr<MockNetworkTransaction> mock_transaction( diff --git a/net/http/http_transaction_unittest.h b/net/http/http_transaction_unittest.h index a91ebbd..dc310dc 100644 --- a/net/http/http_transaction_unittest.h +++ b/net/http/http_transaction_unittest.h @@ -270,8 +270,7 @@ class MockNetworkLayer : public net::HttpTransactionFactory, // net::HttpTransactionFactory: virtual int CreateTransaction( net::RequestPriority priority, - scoped_ptr<net::HttpTransaction>* trans, - net::HttpTransactionDelegate* delegate) OVERRIDE; + scoped_ptr<net::HttpTransaction>* trans) OVERRIDE; virtual net::HttpCache* GetCache() OVERRIDE; virtual net::HttpNetworkSession* GetSession() OVERRIDE; diff --git a/net/http/mock_http_cache.cc b/net/http/mock_http_cache.cc index a3d55b1..5dbd486 100644 --- a/net/http/mock_http_cache.cc +++ b/net/http/mock_http_cache.cc @@ -512,6 +512,10 @@ MockDiskCache* MockHttpCache::disk_cache() { return (rv == net::OK) ? static_cast<MockDiskCache*>(backend) : NULL; } +int MockHttpCache::CreateTransaction(scoped_ptr<net::HttpTransaction>* trans) { + return http_cache_.CreateTransaction(net::DEFAULT_PRIORITY, trans); +} + bool MockHttpCache::ReadResponseInfo(disk_cache::Entry* disk_entry, net::HttpResponseInfo* response_info, bool* response_truncated) { diff --git a/net/http/mock_http_cache.h b/net/http/mock_http_cache.h index 90399ec..b834d3f 100644 --- a/net/http/mock_http_cache.h +++ b/net/http/mock_http_cache.h @@ -174,6 +174,9 @@ class MockHttpCache { } MockDiskCache* disk_cache(); + // Wrapper around http_cache()->CreateTransaction(net::DEFAULT_PRIORITY...) + int CreateTransaction(scoped_ptr<net::HttpTransaction>* trans); + // Helper function for reading response info from the disk cache. static bool ReadResponseInfo(disk_cache::Entry* disk_entry, net::HttpResponseInfo* response_info, diff --git a/net/net.gyp b/net/net.gyp index aabef0c..6be4278 100644 --- a/net/net.gyp +++ b/net/net.gyp @@ -642,7 +642,6 @@ 'http/http_stream_parser.cc', 'http/http_stream_parser.h', 'http/http_transaction.h', - 'http/http_transaction_delegate.h', 'http/http_transaction_factory.h', 'http/http_util.cc', 'http/http_util.h', diff --git a/net/proxy/network_delegate_error_observer_unittest.cc b/net/proxy/network_delegate_error_observer_unittest.cc index cb32760..a893cba 100644 --- a/net/proxy/network_delegate_error_observer_unittest.cc +++ b/net/proxy/network_delegate_error_observer_unittest.cc @@ -84,9 +84,6 @@ class TestNetworkDelegate : public net::NetworkDelegate { const CompletionCallback& callback) OVERRIDE { return OK; } - virtual void OnRequestWaitStateChange(const net::URLRequest& request, - RequestWaitState state) OVERRIDE { - } bool got_pac_error_; }; diff --git a/net/proxy/proxy_script_fetcher_impl_unittest.cc b/net/proxy/proxy_script_fetcher_impl_unittest.cc index 152dbf9..2dbcfed 100644 --- a/net/proxy/proxy_script_fetcher_impl_unittest.cc +++ b/net/proxy/proxy_script_fetcher_impl_unittest.cc @@ -179,10 +179,6 @@ class BasicNetworkDelegate : public NetworkDelegate { return OK; } - virtual void OnRequestWaitStateChange(const net::URLRequest& request, - RequestWaitState state) OVERRIDE { - } - DISALLOW_COPY_AND_ASSIGN(BasicNetworkDelegate); }; diff --git a/net/quic/quic_end_to_end_unittest.cc b/net/quic/quic_end_to_end_unittest.cc index 90c670b..510165a 100644 --- a/net/quic/quic_end_to_end_unittest.cc +++ b/net/quic/quic_end_to_end_unittest.cc @@ -53,9 +53,7 @@ class TestTransactionFactory : public HttpTransactionFactory { // HttpTransactionFactory methods virtual int CreateTransaction(RequestPriority priority, - scoped_ptr<HttpTransaction>* trans, - HttpTransactionDelegate* delegate) OVERRIDE { - EXPECT_TRUE(delegate == NULL); + scoped_ptr<HttpTransaction>* trans) OVERRIDE { trans->reset(new HttpNetworkTransaction(priority, session_)); return OK; } diff --git a/net/tools/fetch/fetch_client.cc b/net/tools/fetch/fetch_client.cc index 12fae24..8d4f5de 100644 --- a/net/tools/fetch/fetch_client.cc +++ b/net/tools/fetch/fetch_client.cc @@ -62,8 +62,7 @@ class Client { Client(net::HttpTransactionFactory* factory, const std::string& url) : url_(url), buffer_(new net::IOBuffer(kBufferSize)) { - int rv = factory->CreateTransaction( - net::DEFAULT_PRIORITY, &transaction_, NULL); + int rv = factory->CreateTransaction(net::DEFAULT_PRIORITY, &transaction_); DCHECK_EQ(net::OK, rv); buffer_->AddRef(); g_driver.Get().ClientStarted(); diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc index 465aa87..744dc3b 100644 --- a/net/url_request/url_request_context_builder.cc +++ b/net/url_request/url_request_context_builder.cc @@ -118,10 +118,6 @@ class BasicNetworkDelegate : public NetworkDelegate { return OK; } - virtual void OnRequestWaitStateChange(const URLRequest& request, - RequestWaitState state) OVERRIDE { - } - DISALLOW_COPY_AND_ASSIGN(BasicNetworkDelegate); }; diff --git a/net/url_request/url_request_ftp_job.cc b/net/url_request/url_request_ftp_job.cc index 6224141..939a226 100644 --- a/net/url_request/url_request_ftp_job.cc +++ b/net/url_request/url_request_ftp_job.cc @@ -188,12 +188,12 @@ void URLRequestFtpJob::StartHttpTransaction() { http_request_info_.load_flags = request_->load_flags(); int rv = request_->context()->http_transaction_factory()->CreateTransaction( - priority_, &http_transaction_, NULL); + priority_, &http_transaction_); if (rv == OK) { rv = http_transaction_->Start( &http_request_info_, base::Bind(&URLRequestFtpJob::OnStartCompleted, - base::Unretained(this)), + base::Unretained(this)), request_->net_log()); if (rv == ERR_IO_PENDING) return; diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc index cac7e38..c0e2dd1 100644 --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc @@ -32,7 +32,6 @@ #include "net/http/http_response_info.h" #include "net/http/http_status_code.h" #include "net/http/http_transaction.h" -#include "net/http/http_transaction_delegate.h" #include "net/http/http_transaction_factory.h" #include "net/http/http_util.h" #include "net/ssl/ssl_cert_request_info.h" @@ -78,84 +77,6 @@ class URLRequestHttpJob::HttpFilterContext : public FilterContext { DISALLOW_COPY_AND_ASSIGN(HttpFilterContext); }; -class URLRequestHttpJob::HttpTransactionDelegateImpl - : public HttpTransactionDelegate { - public: - HttpTransactionDelegateImpl(URLRequest* request, - NetworkDelegate* network_delegate) - : request_(request), - network_delegate_(network_delegate), - state_(NONE_ACTIVE) {} - virtual ~HttpTransactionDelegateImpl() { OnDetachRequest(); } - void OnDetachRequest() { - if (!IsRequestAndDelegateActive()) - return; - NotifyStateChange(NetworkDelegate::REQUEST_WAIT_STATE_RESET); - state_ = NONE_ACTIVE; - request_ = NULL; - } - virtual void OnCacheActionStart() OVERRIDE { - HandleStateChange(NONE_ACTIVE, - CACHE_ACTIVE, - NetworkDelegate::REQUEST_WAIT_STATE_CACHE_START); - } - virtual void OnCacheActionFinish() OVERRIDE { - HandleStateChange(CACHE_ACTIVE, - NONE_ACTIVE, - NetworkDelegate::REQUEST_WAIT_STATE_CACHE_FINISH); - } - virtual void OnNetworkActionStart() OVERRIDE { - HandleStateChange(NONE_ACTIVE, - NETWORK_ACTIVE, - NetworkDelegate::REQUEST_WAIT_STATE_NETWORK_START); - } - virtual void OnNetworkActionFinish() OVERRIDE { - HandleStateChange(NETWORK_ACTIVE, - NONE_ACTIVE, - NetworkDelegate::REQUEST_WAIT_STATE_NETWORK_FINISH); - } - - private: - enum State { - NONE_ACTIVE, - CACHE_ACTIVE, - NETWORK_ACTIVE - }; - - // Returns true if this object still has an active request and network - // delegate. - bool IsRequestAndDelegateActive() const { - return request_ && network_delegate_; - } - - // Notifies the |network_delegate_| object of a change in the state of the - // |request_| to the state given by the |request_wait_state| argument. - void NotifyStateChange(NetworkDelegate::RequestWaitState request_wait_state) { - network_delegate_->NotifyRequestWaitStateChange(*request_, - request_wait_state); - } - - // Checks the request and delegate are still active, changes |state_| from - // |expected_state| to |next_state|, and then notifies the network delegate of - // the change to |request_wait_state|. - void HandleStateChange(State expected_state, - State next_state, - NetworkDelegate::RequestWaitState request_wait_state) { - if (!IsRequestAndDelegateActive()) - return; - DCHECK_EQ(expected_state, state_); - state_ = next_state; - NotifyStateChange(request_wait_state); - } - - URLRequest* request_; - NetworkDelegate* network_delegate_; - // Internal state tracking, for sanity checking. - State state_; - - DISALLOW_COPY_AND_ASSIGN(HttpTransactionDelegateImpl); -}; - URLRequestHttpJob::HttpFilterContext::HttpFilterContext(URLRequestHttpJob* job) : job_(job) { DCHECK(job_); @@ -269,8 +190,6 @@ URLRequestHttpJob::URLRequestHttpJob( base::Bind(&URLRequestHttpJob::OnHeadersReceivedCallback, base::Unretained(this))), awaiting_callback_(false), - http_transaction_delegate_( - new HttpTransactionDelegateImpl(request, network_delegate)), http_user_agent_settings_(http_user_agent_settings) { URLRequestThrottlerManager* manager = request->context()->throttler_manager(); if (manager) @@ -360,8 +279,6 @@ void URLRequestHttpJob::Start() { } void URLRequestHttpJob::Kill() { - http_transaction_delegate_->OnDetachRequest(); - if (!transaction_.get()) return; @@ -495,7 +412,7 @@ void URLRequestHttpJob::StartTransactionInternal() { DCHECK(request_->context()->http_transaction_factory()); rv = request_->context()->http_transaction_factory()->CreateTransaction( - priority_, &transaction_, http_transaction_delegate_.get()); + priority_, &transaction_); if (rv == OK && request_info_.url.SchemeIsWSOrWSS()) { // TODO(ricea): Implement WebSocket throttling semantics as defined in @@ -1535,8 +1452,4 @@ void URLRequestHttpJob::NotifyURLRequestDestroyed() { awaiting_callback_ = false; } -void URLRequestHttpJob::OnDetachRequest() { - http_transaction_delegate_->OnDetachRequest(); -} - } // namespace net diff --git a/net/url_request/url_request_http_job.h b/net/url_request/url_request_http_job.h index d5f46e0..a96fc93 100644 --- a/net/url_request/url_request_http_job.h +++ b/net/url_request/url_request_http_job.h @@ -165,9 +165,6 @@ class NET_EXPORT_PRIVATE URLRequestHttpJob : public URLRequestJob { // overridden by |override_response_headers_|. HttpResponseHeaders* GetResponseHeaders() const; - // Override of the private interface of URLRequestJob. - virtual void OnDetachRequest() OVERRIDE; - RequestPriority priority_; HttpRequestInfo request_info_; @@ -261,8 +258,6 @@ class NET_EXPORT_PRIVATE URLRequestHttpJob : public URLRequestJob { // to inform the NetworkDelegate that it may not call back. bool awaiting_callback_; - scoped_ptr<HttpTransactionDelegateImpl> http_transaction_delegate_; - const HttpUserAgentSettings* http_user_agent_settings_; DISALLOW_COPY_AND_ASSIGN(URLRequestHttpJob); diff --git a/net/url_request/url_request_job.cc b/net/url_request/url_request_job.cc index 1d6f0b4..18d59e9 100644 --- a/net/url_request/url_request_job.cc +++ b/net/url_request/url_request_job.cc @@ -59,7 +59,6 @@ void URLRequestJob::Kill() { void URLRequestJob::DetachRequest() { request_ = NULL; - OnDetachRequest(); } // This function calls ReadData to get stream data. If a filter exists, passes diff --git a/net/url_request/url_request_job.h b/net/url_request/url_request_job.h index 9695f6a..d4b7312 100644 --- a/net/url_request/url_request_job.h +++ b/net/url_request/url_request_job.h @@ -356,9 +356,6 @@ class NET_EXPORT URLRequestJob // The default implementation does nothing. virtual void UpdatePacketReadTimes(); - // Custom handler for derived classes when the request is detached. - virtual void OnDetachRequest() {} - // Indicates that the job is done producing data, either it has completed // all the data or an error has been encountered. Set exclusively by // NotifyDone so that it is kept in sync with the request. diff --git a/net/url_request/url_request_test_util.cc b/net/url_request/url_request_test_util.cc index ea3c7ae..85d878e 100644 --- a/net/url_request/url_request_test_util.cc +++ b/net/url_request/url_request_test_util.cc @@ -574,11 +574,6 @@ int TestNetworkDelegate::OnBeforeSocketStreamConnect( return OK; } -void TestNetworkDelegate::OnRequestWaitStateChange( - const URLRequest& request, - RequestWaitState state) { -} - // static std::string ScopedCustomUrlRequestTestHttpHost::value_("127.0.0.1"); diff --git a/net/url_request/url_request_test_util.h b/net/url_request/url_request_test_util.h index 0369baa..b0b462c 100644 --- a/net/url_request/url_request_test_util.h +++ b/net/url_request/url_request_test_util.h @@ -284,8 +284,6 @@ class TestNetworkDelegate : public NetworkDelegate { virtual int OnBeforeSocketStreamConnect( SocketStream* stream, const CompletionCallback& callback) OVERRIDE; - virtual void OnRequestWaitStateChange(const URLRequest& request, - RequestWaitState state) OVERRIDE; void InitRequestStatesIfNew(int request_id); diff --git a/net/websockets/websocket_job_test.cc b/net/websockets/websocket_job_test.cc index 4b3b70e..31bd9d6 100644 --- a/net/websockets/websocket_job_test.cc +++ b/net/websockets/websocket_job_test.cc @@ -286,8 +286,7 @@ class MockHttpTransactionFactory : public HttpTransactionFactory { virtual int CreateTransaction( RequestPriority priority, - scoped_ptr<HttpTransaction>* trans, - HttpTransactionDelegate* delegate) OVERRIDE { + scoped_ptr<HttpTransaction>* trans) OVERRIDE { NOTREACHED(); return ERR_UNEXPECTED; } |