| Index: ios/web/net/request_tracker_impl.mm
|
| diff --git a/ios/web/net/request_tracker_impl.mm b/ios/web/net/request_tracker_impl.mm
|
| index 5a6014fd0d59af7103b7329f8d1ba11080f9dfff..bc0986f98fe25f69cf509e57b8b4e29dc35b757e 100644
|
| --- a/ios/web/net/request_tracker_impl.mm
|
| +++ b/ios/web/net/request_tracker_impl.mm
|
| @@ -15,6 +15,7 @@
|
| #import "base/mac/bind_objc_block.h"
|
| #import "base/mac/scoped_nsobject.h"
|
| #include "base/macros.h"
|
| +#include "base/memory/ptr_util.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/sys_string_conversions.h"
|
| #include "base/synchronization/lock.h"
|
| @@ -487,10 +488,10 @@ void RequestTrackerImpl::StartRequest(net::URLRequest* request) {
|
| new_estimate_round_ = false;
|
| }
|
| const GURL& url = request->original_url();
|
| - TrackerCounts* counts = new TrackerCounts(
|
| - GURLByRemovingRefFromGURL(url), request);
|
| - counts_.push_back(counts);
|
| - counts_by_request_[request] = counts;
|
| + auto counts =
|
| + base::MakeUnique<TrackerCounts>(GURLByRemovingRefFromGURL(url), request);
|
| + counts_by_request_[request] = counts.get();
|
| + counts_.push_back(std::move(counts));
|
| if (page_url_.SchemeIsCryptographic() && !url.SchemeIsCryptographic())
|
| has_mixed_content_ = true;
|
| Notify();
|
| @@ -787,17 +788,17 @@ void RequestTrackerImpl::SSLNotify() {
|
| return;
|
|
|
| const GURL page_origin = page_url_.GetOrigin();
|
| - ScopedVector<TrackerCounts>::iterator it;
|
| - for (it = counts_.begin(); it != counts_.end(); ++it) {
|
| - if (!(*it)->ssl_info.is_valid())
|
| + for (const auto& tracker_count : counts_) {
|
| + if (!tracker_count->ssl_info.is_valid())
|
| continue; // No SSL info at this point in time on this tracker.
|
|
|
| - GURL request_origin = (*it)->url.GetOrigin();
|
| + GURL request_origin = tracker_count->url.GetOrigin();
|
| if (request_origin != page_origin)
|
| continue; // Not interesting in the context of the page.
|
|
|
| - base::scoped_nsobject<CRWSSLCarrier> carrier(
|
| - [[CRWSSLCarrier alloc] initWithTracker:this counts:*it]);
|
| + base::scoped_nsobject<CRWSSLCarrier> carrier([[CRWSSLCarrier alloc]
|
| + initWithTracker:this
|
| + counts:tracker_count.get()]);
|
| web::WebThread::PostTask(
|
| web::WebThread::UI, FROM_HERE,
|
| base::Bind(&RequestTrackerImpl::NotifyUpdatedSSLStatus, this, carrier));
|
| @@ -927,26 +928,25 @@ void RequestTrackerImpl::ReevaluateCallbacksForAllCounts() {
|
| if (is_closing_)
|
| return;
|
|
|
| - ScopedVector<TrackerCounts>::iterator it;
|
| - for (it = counts_.begin(); it != counts_.end(); ++it) {
|
| + for (const auto& tracker_count : counts_) {
|
| // Check if the value hasn't changed via a user action.
|
| - if ((*it)->ssl_judgment == CertPolicy::UNKNOWN)
|
| - EvaluateSSLCallbackForCounts(*it);
|
| + if (tracker_count->ssl_judgment == CertPolicy::UNKNOWN)
|
| + EvaluateSSLCallbackForCounts(tracker_count.get());
|
|
|
| - CertPolicy::Judgment judgment = (*it)->ssl_judgment;
|
| + CertPolicy::Judgment judgment = tracker_count->ssl_judgment;
|
| if (judgment == CertPolicy::ALLOWED)
|
| continue;
|
|
|
| // SSL errors on subrequests are simply ignored. The call to
|
| // EvaluateSSLCallbackForCounts() cancelled the request and nothing will
|
| // restart it.
|
| - if ((*it)->is_subrequest)
|
| + if (tracker_count->is_subrequest)
|
| continue;
|
|
|
| if (!current_ssl_error_) {
|
| // For the UNKNOWN and DENIED state the information should be pushed to
|
| // the delegate. But only one at a time.
|
| - current_ssl_error_ = (*it);
|
| + current_ssl_error_ = tracker_count.get();
|
| base::scoped_nsobject<CRWSSLCarrier> carrier([[CRWSSLCarrier alloc]
|
| initWithTracker:this counts:current_ssl_error_]);
|
| web::WebThread::PostTask(
|
| @@ -972,11 +972,9 @@ PageCounts RequestTrackerImpl::pageCounts() {
|
|
|
| PageCounts page_counts;
|
|
|
| - ScopedVector<TrackerCounts>::iterator it;
|
| - for (it = counts_.begin() + estimate_start_index_;
|
| - it != counts_.end(); ++it) {
|
| - if ((*it)->done) {
|
| - uint64_t size = (*it)->processed;
|
| + for (const auto& tracker_count : counts_) {
|
| + if (tracker_count->done) {
|
| + uint64_t size = tracker_count->processed;
|
| page_counts.finished += 1;
|
| page_counts.finished_bytes += size;
|
| if (page_counts.largest_byte_size_known < size) {
|
| @@ -984,16 +982,17 @@ PageCounts RequestTrackerImpl::pageCounts() {
|
| }
|
| } else {
|
| page_counts.unfinished += 1;
|
| - if ((*it)->expected_length) {
|
| - uint64_t size = (*it)->expected_length;
|
| - page_counts.unfinished_estimate_bytes_done += (*it)->processed;
|
| + if (tracker_count->expected_length) {
|
| + uint64_t size = tracker_count->expected_length;
|
| + page_counts.unfinished_estimate_bytes_done += tracker_count->processed;
|
| page_counts.unfinished_estimated_bytes_left += size;
|
| if (page_counts.largest_byte_size_known < size) {
|
| page_counts.largest_byte_size_known = size;
|
| }
|
| } else {
|
| page_counts.unfinished_no_estimate += 1;
|
| - page_counts.unfinished_no_estimate_bytes_done += (*it)->processed;
|
| + page_counts.unfinished_no_estimate_bytes_done +=
|
| + tracker_count->processed;
|
| }
|
| }
|
| }
|
| @@ -1081,8 +1080,8 @@ void RequestTrackerImpl::RecomputeMixedContent(
|
| if (page_url_.SchemeIsCryptographic() && has_mixed_content_) {
|
| bool old_url_has_mixed_content = false;
|
| const GURL origin = page_url_.GetOrigin();
|
| - ScopedVector<TrackerCounts>::iterator it = counts_.begin();
|
| - while (it != counts_.end() && *it != split_position) {
|
| + auto it = counts_.begin();
|
| + while (it != counts_.end() && it->get() != split_position) {
|
| if (!(*it)->url.SchemeIsCryptographic() &&
|
| origin == (*it)->first_party_for_cookies_origin) {
|
| old_url_has_mixed_content = true;
|
| @@ -1110,9 +1109,8 @@ void RequestTrackerImpl::RecomputeCertificatePolicy(
|
| web::WebThread::UI, FROM_HERE,
|
| base::Bind(&RequestTrackerImpl::NotifyClearCertificates, this));
|
| // Report judgements for the new URL.
|
| - ScopedVector<TrackerCounts>::const_reverse_iterator it;
|
| - for (it = counts_.rbegin(); it != counts_.rend(); ++it) {
|
| - TrackerCounts* counts = *it;
|
| + for (auto it = counts_.rbegin(); it != counts_.rend(); ++it) {
|
| + TrackerCounts* counts = it->get();
|
| if (counts->allowed_by_user) {
|
| std::string host = counts->url.host();
|
| web::WebThread::PostTask(
|
| @@ -1144,7 +1142,7 @@ void RequestTrackerImpl::TrimToURL(const GURL& full_url, id user_info) {
|
| // Locate the request with this url, if present.
|
| bool new_url_has_mixed_content = false;
|
| bool url_scheme_is_secure = url.SchemeIsCryptographic();
|
| - ScopedVector<TrackerCounts>::const_reverse_iterator rit = counts_.rbegin();
|
| + auto rit = counts_.rbegin();
|
| while (rit != counts_.rend() && (*rit)->url != url) {
|
| if (url_scheme_is_secure && !(*rit)->url.SchemeIsCryptographic() &&
|
| (*rit)->first_party_for_cookies_origin == url.GetOrigin()) {
|
| @@ -1156,7 +1154,7 @@ void RequestTrackerImpl::TrimToURL(const GURL& full_url, id user_info) {
|
| // |split_position| will be set to the count for the passed url if it exists.
|
| TrackerCounts* split_position = NULL;
|
| if (rit != counts_.rend()) {
|
| - split_position = (*rit);
|
| + split_position = rit->get();
|
| } else {
|
| // The URL was not found, everything will be trimmed. The mixed content
|
| // calculation is invalid.
|
| @@ -1169,7 +1167,7 @@ void RequestTrackerImpl::TrimToURL(const GURL& full_url, id user_info) {
|
| // domain as the page itself this will allow retrieval of the SSL
|
| // information.
|
| if (url_scheme_is_secure && counts_.size()) {
|
| - TrackerCounts* back = counts_.back();
|
| + TrackerCounts* back = counts_.back().get();
|
| const GURL& back_url = back->url;
|
| if (back_url.SchemeIsCryptographic() &&
|
| back_url.GetOrigin() == url.GetOrigin() && !back->is_subrequest) {
|
| @@ -1181,13 +1179,13 @@ void RequestTrackerImpl::TrimToURL(const GURL& full_url, id user_info) {
|
| RecomputeCertificatePolicy(split_position);
|
|
|
| // Trim up to that element.
|
| - ScopedVector<TrackerCounts>::iterator it = counts_.begin();
|
| - while (it != counts_.end() && *it != split_position) {
|
| + auto it = counts_.begin();
|
| + while (it != counts_.end() && it->get() != split_position) {
|
| if (!(*it)->done) {
|
| // This is for an unfinished request on a previous page. We do not care
|
| // about those anymore. Cancel the request.
|
| if ((*it)->ssl_judgment == CertPolicy::UNKNOWN)
|
| - CancelRequestForCounts(*it);
|
| + CancelRequestForCounts(it->get());
|
| counts_by_request_.erase((*it)->request);
|
| }
|
| it = counts_.erase(it);
|
| @@ -1233,9 +1231,8 @@ NSString* RequestTrackerImpl::UnsafeDescription() {
|
| DCHECK_CURRENTLY_ON(web::WebThread::IO);
|
|
|
| NSMutableArray* urls = [NSMutableArray array];
|
| - ScopedVector<TrackerCounts>::iterator it;
|
| - for (it = counts_.begin(); it != counts_.end(); ++it)
|
| - [urls addObject:(*it)->Description()];
|
| + for (const auto& tracker_count : counts_)
|
| + [urls addObject:tracker_count->Description()];
|
|
|
| return [NSString stringWithFormat:@"RequestGroupID %@\n%@\n%@",
|
| request_group_id_.get(),
|
|
|