ryansturm | fe32816 | 2016-05-11 22:28:47 | [diff] [blame] | 1 | // 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 | |
mmenke | 55f1502 | 2016-09-20 15:42:07 | [diff] [blame] | 5 | #include "chrome/browser/loader/chrome_navigation_data.h" |
ryansturm | fe32816 | 2016-05-11 22:28:47 | [diff] [blame] | 6 | |
avi | 284ec61 | 2017-05-03 01:52:23 | [diff] [blame] | 7 | #include "base/memory/ptr_util.h" |
ryansturm | fe32816 | 2016-05-11 22:28:47 | [diff] [blame] | 8 | #include "net/url_request/url_request.h" |
| 9 | |
| 10 | const void* const kChromeNavigationDataUserDataKey = |
| 11 | &kChromeNavigationDataUserDataKey; |
| 12 | |
Ryan Sturm | aa05092f | 2018-10-21 03:56:54 | [diff] [blame] | 13 | ChromeNavigationData::ChromeNavigationData() {} |
ryansturm | fe32816 | 2016-05-11 22:28:47 | [diff] [blame] | 14 | |
| 15 | ChromeNavigationData::~ChromeNavigationData() {} |
| 16 | |
| 17 | ChromeNavigationData* 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(); |
avi | 284ec61 | 2017-05-03 01:52:23 | [diff] [blame] | 26 | request->SetUserData(kChromeNavigationDataUserDataKey, |
| 27 | base::WrapUnique(data)); |
ryansturm | fe32816 | 2016-05-11 22:28:47 | [diff] [blame] | 28 | return data; |
| 29 | } |
Dmitry Skiba | 7e8c7e2 | 2018-01-04 21:04:18 | [diff] [blame] | 30 | |
| 31 | std::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 Skiba | 7e8c7e2 | 2018-01-04 21:04:18 | [diff] [blame] | 36 | return std::move(copy); |
| 37 | } |