blob: 4bec1bcfe67c1f57a15d1f28ca6482d07b953a80 [file] [log] [blame]
clamy1e5574e2016-09-29 16:48:441// 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
5#include "chrome/browser/renderer_host/chrome_navigation_ui_data.h"
6
7#include "base/memory/ptr_util.h"
8#include "chrome/browser/sessions/session_tab_helper.h"
9#include "content/public/browser/navigation_handle.h"
brettw00899e62016-11-12 02:10:1710#include "extensions/features/features.h"
clamy1e5574e2016-09-29 16:48:4411
12ChromeNavigationUIData::ChromeNavigationUIData() {}
13
14ChromeNavigationUIData::ChromeNavigationUIData(
15 content::NavigationHandle* navigation_handle) {
brettw00899e62016-11-12 02:10:1716#if BUILDFLAG(ENABLE_EXTENSIONS)
clamy1e5574e2016-09-29 16:48:4417 SessionTabHelper* session_tab_helper =
18 SessionTabHelper::FromWebContents(navigation_handle->GetWebContents());
19 int tab_id = session_tab_helper ? session_tab_helper->session_id().id() : -1;
20 int window_id =
21 session_tab_helper ? session_tab_helper->window_id().id() : -1;
22 extension_data_ = base::MakeUnique<extensions::ExtensionNavigationUIData>(
23 navigation_handle, tab_id, window_id);
24#endif
25}
26
27ChromeNavigationUIData::~ChromeNavigationUIData() {}
28
29std::unique_ptr<content::NavigationUIData> ChromeNavigationUIData::Clone()
30 const {
31 std::unique_ptr<ChromeNavigationUIData> copy =
32 base::MakeUnique<ChromeNavigationUIData>();
33
brettw00899e62016-11-12 02:10:1734#if BUILDFLAG(ENABLE_EXTENSIONS)
clamy1e5574e2016-09-29 16:48:4435 if (extension_data_)
36 copy->SetExtensionNavigationUIData(extension_data_->DeepCopy());
37#endif
38
39 return std::move(copy);
40}
41
brettw00899e62016-11-12 02:10:1742#if BUILDFLAG(ENABLE_EXTENSIONS)
clamy1e5574e2016-09-29 16:48:4443void ChromeNavigationUIData::SetExtensionNavigationUIData(
44 std::unique_ptr<extensions::ExtensionNavigationUIData> extension_data) {
45 extension_data_ = std::move(extension_data);
46}
47#endif