1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include <algorithm> 6 7 #include "net/url_request/url_request_job_tracker.h" 8 9 #include "base/logging.h" 10 #include "net/url_request/url_request_job.h" 11 12 URLRequestJobTracker g_url_request_job_tracker; 13 14 URLRequestJobTracker::URLRequestJobTracker() { 15 } 16 17 URLRequestJobTracker::~URLRequestJobTracker() { 18 DLOG_IF(WARNING, active_jobs_.size() != 0) << 19 "Leaking " << active_jobs_.size() << " URLRequestJob object(s), this could " 20 "be because the URLRequest forgot to free it (bad), or if the program was " 21 "terminated while a request was active (normal)."; 22 } 23 24 void URLRequestJobTracker::AddNewJob(URLRequestJob* job) { 25 active_jobs_.push_back(job); 26 FOR_EACH_OBSERVER(JobObserver, observers_, OnJobAdded(job)); 27 } 28 29 void URLRequestJobTracker::RemoveJob(URLRequestJob* job) { 30 JobList::iterator iter = std::find(active_jobs_.begin(), active_jobs_.end(), 31 job); 32 if (iter == active_jobs_.end()) { 33 NOTREACHED() << "Removing a non-active job"; 34 return; 35 } 36 active_jobs_.erase(iter); 37 38 FOR_EACH_OBSERVER(JobObserver, observers_, OnJobRemoved(job)); 39 } 40 41 void URLRequestJobTracker::OnJobDone(URLRequestJob* job, 42 const URLRequestStatus& status) { 43 FOR_EACH_OBSERVER(JobObserver, observers_, OnJobDone(job, status)); 44 } 45 46 void URLRequestJobTracker::OnJobRedirect(URLRequestJob* job, 47 const GURL& location, 48 int status_code) { 49 FOR_EACH_OBSERVER(JobObserver, observers_, 50 OnJobRedirect(job, location, status_code)); 51 } 52 53 void URLRequestJobTracker::OnBytesRead(URLRequestJob* job, 54 int byte_count) { 55 FOR_EACH_OBSERVER(JobObserver, observers_, 56 OnBytesRead(job, byte_count)); 57 } 58