blob: af6ef04520b383a5fa3220e98d1ed70c8f328d53 [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 "chrome/browser/loader/chrome_navigation_data.h"
#include "base/memory/ptr_util.h"
#include "net/url_request/url_request.h"
const void* const kChromeNavigationDataUserDataKey =
&kChromeNavigationDataUserDataKey;
ChromeNavigationData::ChromeNavigationData()
: previews_state_(content::PreviewsTypes::PREVIEWS_UNSPECIFIED) {}
ChromeNavigationData::~ChromeNavigationData() {}
ChromeNavigationData* ChromeNavigationData::GetDataAndCreateIfNecessary(
net::URLRequest* request) {
if (!request)
return nullptr;
ChromeNavigationData* data = static_cast<ChromeNavigationData*>(
request->GetUserData(kChromeNavigationDataUserDataKey));
if (data)
return data;
data = new ChromeNavigationData();
request->SetUserData(kChromeNavigationDataUserDataKey,
base::WrapUnique(data));
return data;
}
std::unique_ptr<content::NavigationData> ChromeNavigationData::Clone() const {
std::unique_ptr<ChromeNavigationData> copy(new ChromeNavigationData());
if (data_reduction_proxy_data_) {
copy->SetDataReductionProxyData(data_reduction_proxy_data_->DeepCopy());
}
if (previews_user_data_) {
copy->set_previews_user_data(previews_user_data_->DeepCopy());
}
copy->previews_state_ = previews_state_;
return std::move(copy);
}