Commit 7ea51c20 authored by Donna Wu's avatar Donna Wu Committed by Commit Bot

Remove ScopedVector usage from components/cronet

This CL replaces ScopedVector with std::vector<std::unique_ptr>
in components/cronet.
ScopedVector is deprecated, see bug.

BUG=554289

Cq-Include-Trybots: master.tryserver.chromium.android:android_cronet_tester
Change-Id: I93ed1cac20093344cc9d46c648f02cb579629794
Reviewed-on: https://chromium-review.googlesource.com/536240
Commit-Queue: Han Leon <leon.han@intel.com>
Reviewed-by: default avatarHelen Li <xunjieli@chromium.org>
Cr-Commit-Position: refs/heads/master@{#481036}
parent 15142841
......@@ -27,7 +27,6 @@
#include "base/logging.h"
#include "base/macros.h"
#include "base/memory/ptr_util.h"
#include "base/memory/scoped_vector.h"
#include "base/message_loop/message_loop.h"
#include "base/metrics/histogram_macros.h"
#include "base/metrics/statistics_recorder.h"
......@@ -726,39 +725,38 @@ void CronetURLRequestContextAdapter::InitializeOnNetworkThread(
}
if (config->enable_quic) {
for (auto hint = config->quic_hints.begin();
hint != config->quic_hints.end(); ++hint) {
const URLRequestContextConfig::QuicHint& quic_hint = **hint;
if (quic_hint.host.empty()) {
LOG(ERROR) << "Empty QUIC hint host: " << quic_hint.host;
for (const auto& quic_hint : config->quic_hints) {
if (quic_hint->host.empty()) {
LOG(ERROR) << "Empty QUIC hint host: " << quic_hint->host;
continue;
}
url::CanonHostInfo host_info;
std::string canon_host(net::CanonicalizeHost(quic_hint.host, &host_info));
std::string canon_host(
net::CanonicalizeHost(quic_hint->host, &host_info));
if (!host_info.IsIPAddress() &&
!net::IsCanonicalizedHostCompliant(canon_host)) {
LOG(ERROR) << "Invalid QUIC hint host: " << quic_hint.host;
LOG(ERROR) << "Invalid QUIC hint host: " << quic_hint->host;
continue;
}
if (quic_hint.port <= std::numeric_limits<uint16_t>::min() ||
quic_hint.port > std::numeric_limits<uint16_t>::max()) {
LOG(ERROR) << "Invalid QUIC hint port: "
<< quic_hint.port;
if (quic_hint->port <= std::numeric_limits<uint16_t>::min() ||
quic_hint->port > std::numeric_limits<uint16_t>::max()) {
LOG(ERROR) << "Invalid QUIC hint port: " << quic_hint->port;
continue;
}
if (quic_hint.alternate_port <= std::numeric_limits<uint16_t>::min() ||
quic_hint.alternate_port > std::numeric_limits<uint16_t>::max()) {
if (quic_hint->alternate_port <= std::numeric_limits<uint16_t>::min() ||
quic_hint->alternate_port > std::numeric_limits<uint16_t>::max()) {
LOG(ERROR) << "Invalid QUIC hint alternate port: "
<< quic_hint.alternate_port;
<< quic_hint->alternate_port;
continue;
}
url::SchemeHostPort quic_server("https", canon_host, quic_hint.port);
url::SchemeHostPort quic_server("https", canon_host, quic_hint->port);
net::AlternativeService alternative_service(
net::kProtoQUIC, "", static_cast<uint16_t>(quic_hint.alternate_port));
net::kProtoQUIC, "",
static_cast<uint16_t>(quic_hint->alternate_port));
context_->http_server_properties()->SetAlternativeService(
quic_server, alternative_service, base::Time::Max());
}
......@@ -779,7 +777,7 @@ void CronetURLRequestContextAdapter::InitializeOnNetworkThread(
}
// Iterate through PKP configuration for every host.
for (auto* const pkp : config->pkp_list) {
for (const auto& pkp : config->pkp_list) {
// Add the host pinning.
context_->transport_security_state()->AddHPKP(
pkp->host, pkp->expiration_date, pkp->include_subdomains,
......
......@@ -5,13 +5,13 @@
#import "components/cronet/ios/Cronet.h"
#include <memory>
#include <vector>
#include "base/lazy_instance.h"
#include "base/logging.h"
#include "base/mac/bundle_locations.h"
#include "base/mac/scoped_block.h"
#include "base/memory/ptr_util.h"
#include "base/memory/scoped_vector.h"
#include "base/strings/sys_string_conversions.h"
#include "base/synchronization/lock.h"
#include "components/cronet/ios/accept_languages_table.h"
......@@ -26,6 +26,8 @@ namespace {
class CronetHttpProtocolHandlerDelegate;
using QuicHintVector =
std::vector<std::unique_ptr<cronet::URLRequestContextConfig::QuicHint>>;
// Currently there is one and only one instance of CronetEnvironment,
// which is leaked at the shutdown. We should consider allowing multiple
// instances if that makes sense in the future.
......@@ -36,12 +38,12 @@ BOOL gHttp2Enabled = YES;
BOOL gQuicEnabled = NO;
cronet::URLRequestContextConfig::HttpCacheType gHttpCache =
cronet::URLRequestContextConfig::HttpCacheType::DISK;
ScopedVector<cronet::URLRequestContextConfig::QuicHint> gQuicHints;
QuicHintVector gQuicHints;
NSString* gExperimentalOptions = @"{}";
NSString* gUserAgent = nil;
BOOL gUserAgentPartial = NO;
NSString* gSslKeyLogFileName = nil;
ScopedVector<cronet::URLRequestContextConfig::Pkp> gPkpList = {};
std::vector<std::unique_ptr<cronet::URLRequestContextConfig::Pkp>> gPkpList;
RequestFilterBlock gRequestFilterBlock = nil;
base::LazyInstance<std::unique_ptr<CronetHttpProtocolHandlerDelegate>>::Leaky
gHttpProtocolHandlerDelegate = LAZY_INSTANCE_INITIALIZER;
......@@ -171,8 +173,9 @@ class CronetHttpProtocolHandlerDelegate
+ (void)addQuicHint:(NSString*)host port:(int)port altPort:(int)altPort {
[self checkNotStarted];
gQuicHints.push_back(new cronet::URLRequestContextConfig::QuicHint(
base::SysNSStringToUTF8(host), port, altPort));
gQuicHints.push_back(
base::MakeUnique<cronet::URLRequestContextConfig::QuicHint>(
base::SysNSStringToUTF8(host), port, altPort));
}
+ (void)setExperimentalOptions:(NSString*)experimentalOptions {
......@@ -264,7 +267,7 @@ class CronetHttpProtocolHandlerDelegate
gChromeNet.Get()->set_ssl_key_log_file_name(
base::SysNSStringToUTF8(gSslKeyLogFileName));
gChromeNet.Get()->set_pkp_list(std::move(gPkpList));
for (const auto* quicHint : gQuicHints) {
for (const auto& quicHint : gQuicHints) {
gChromeNet.Get()->AddQuicHint(quicHint->host, quicHint->port,
quicHint->alternate_port);
}
......
......@@ -37,6 +37,8 @@ namespace cronet {
// and initialization.
class CronetEnvironment {
public:
using PkpVector = std::vector<std::unique_ptr<URLRequestContextConfig::Pkp>>;
// Initialize Cronet environment globals. Must be called only once on the
// main thread.
static void Initialize();
......@@ -101,9 +103,7 @@ class CronetEnvironment {
ssl_key_log_file_name_ = ssl_key_log_file_name;
}
void set_pkp_list(ScopedVector<URLRequestContextConfig::Pkp> pkp_list) {
pkp_list_ = std::move(pkp_list);
}
void set_pkp_list(PkpVector pkp_list) { pkp_list_ = std::move(pkp_list); }
// Returns the URLRequestContext associated with this object.
net::URLRequestContext* GetURLRequestContext() const;
......@@ -145,7 +145,7 @@ class CronetEnvironment {
std::string experimental_options_;
std::string ssl_key_log_file_name_;
URLRequestContextConfig::HttpCacheType http_cache_;
ScopedVector<URLRequestContextConfig::Pkp> pkp_list_;
PkpVector pkp_list_;
std::list<net::HostPortPair> quic_hints_;
......
......@@ -347,7 +347,7 @@ void CronetEnvironment::InitializeOnNetworkThread() {
main_context_ = context_builder.Build();
// Iterate through PKP configuration for every host.
for (auto* const pkp : config->pkp_list) {
for (const auto& pkp : config->pkp_list) {
// Add the host pinning.
main_context_->transport_security_state()->AddHPKP(
pkp->host, pkp->expiration_date, pkp->include_subdomains,
......
......@@ -7,10 +7,10 @@
#include <memory>
#include <string>
#include <vector>
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_vector.h"
#include "base/time/time.h"
#include "base/values.h"
#include "net/base/hash_value.h"
......@@ -162,10 +162,10 @@ struct URLRequestContextConfig {
const std::string cert_verifier_data;
// App-provided list of servers that support QUIC.
ScopedVector<QuicHint> quic_hints;
std::vector<std::unique_ptr<QuicHint>> quic_hints;
// The list of public key pins.
ScopedVector<Pkp> pkp_list;
std::vector<std::unique_ptr<Pkp>> pkp_list;
// Experimental options that are recognized by the config parser.
std::unique_ptr<base::DictionaryValue> effective_experimental_options =
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment