blob: 425d1be797fcde448b75b7238b87c04322ea227e [file] [log] [blame]
// Copyright 2016 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 "components/data_reduction_proxy/core/browser/data_reduction_proxy_data.h"
#include "net/url_request/url_request.h"
namespace data_reduction_proxy {
const void* const kDataReductionProxyUserDataKey =
&kDataReductionProxyUserDataKey;
DataReductionProxyData::DataReductionProxyData()
: used_data_reduction_proxy_(false),
lofi_requested_(false),
lite_page_received_(false),
lofi_received_(false),
effective_connection_type_(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN) {}
DataReductionProxyData::~DataReductionProxyData() {}
std::unique_ptr<DataReductionProxyData> DataReductionProxyData::DeepCopy()
const {
std::unique_ptr<DataReductionProxyData> copy(new DataReductionProxyData());
copy->used_data_reduction_proxy_ = used_data_reduction_proxy_;
copy->lofi_requested_ = lofi_requested_;
copy->lite_page_received_ = lite_page_received_;
copy->lofi_received_ = lofi_received_;
copy->session_key_ = session_key_;
copy->request_url_ = request_url_;
copy->effective_connection_type_ = effective_connection_type_;
copy->page_id_ = page_id_;
return copy;
}
DataReductionProxyData* DataReductionProxyData::GetData(
const net::URLRequest& request) {
DataReductionProxyData* data = static_cast<DataReductionProxyData*>(
request.GetUserData(kDataReductionProxyUserDataKey));
return data;
}
DataReductionProxyData* DataReductionProxyData::GetDataAndCreateIfNecessary(
net::URLRequest* request) {
if (!request)
return nullptr;
DataReductionProxyData* data = GetData(*request);
if (data)
return data;
data = new DataReductionProxyData();
request->SetUserData(kDataReductionProxyUserDataKey, data);
return data;
}
void DataReductionProxyData::ClearData(net::URLRequest* request) {
request->RemoveUserData(kDataReductionProxyUserDataKey);
}
} // namespace data_reduction_proxy