blob: 227fac763008a4e7c479c3d733b4e1bf2fdf233f [file] [log] [blame]
ryansturmfe328162016-05-11 22:28:471// Copyright 2016 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
mmenke55f15022016-09-20 15:42:075#include "chrome/browser/loader/chrome_navigation_data.h"
ryansturmfe328162016-05-11 22:28:476
avi284ec612017-05-03 01:52:237#include "base/memory/ptr_util.h"
ryansturmfe328162016-05-11 22:28:478#include "net/url_request/url_request.h"
9
10const void* const kChromeNavigationDataUserDataKey =
11 &kChromeNavigationDataUserDataKey;
12
Ryan Sturmaa05092f2018-10-21 03:56:5413ChromeNavigationData::ChromeNavigationData() {}
ryansturmfe328162016-05-11 22:28:4714
15ChromeNavigationData::~ChromeNavigationData() {}
16
17ChromeNavigationData* ChromeNavigationData::GetDataAndCreateIfNecessary(
18 net::URLRequest* request) {
19 if (!request)
20 return nullptr;
21 ChromeNavigationData* data = static_cast<ChromeNavigationData*>(
22 request->GetUserData(kChromeNavigationDataUserDataKey));
23 if (data)
24 return data;
25 data = new ChromeNavigationData();
avi284ec612017-05-03 01:52:2326 request->SetUserData(kChromeNavigationDataUserDataKey,
27 base::WrapUnique(data));
ryansturmfe328162016-05-11 22:28:4728 return data;
29}
Dmitry Skiba7e8c7e22018-01-04 21:04:1830
31std::unique_ptr<content::NavigationData> ChromeNavigationData::Clone() const {
32 std::unique_ptr<ChromeNavigationData> copy(new ChromeNavigationData());
33 if (data_reduction_proxy_data_) {
34 copy->SetDataReductionProxyData(data_reduction_proxy_data_->DeepCopy());
35 }
Dmitry Skiba7e8c7e22018-01-04 21:04:1836 return std::move(copy);
37}