blob: a520f6427147594b0ab80bd6ef7b6fcb1d0f6c74 [file] [log] [blame]
Avi Drissman4a8573c2022-09-09 19:35:541// Copyright 2016 The Chromium Authors
clamy1e5574e2016-09-29 16:48:442// 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
Sreeja Kamishettyab9948ab2022-07-20 23:20:237#include "chrome/browser/preloading/prefetch/no_state_prefetch/chrome_no_state_prefetch_contents_delegate.h"
Hiroki Nakagawa7230e3412021-01-22 10:08:298#include "components/no_state_prefetch/browser/no_state_prefetch_contents.h"
clamy1e5574e2016-09-29 16:48:449#include "content/public/browser/navigation_handle.h"
Scott Violetc8240b02018-03-08 22:03:5910#include "extensions/buildflags/buildflags.h"
clamy1e5574e2016-09-29 16:48:4411
brettw00899e62016-11-12 02:10:1712#if BUILDFLAG(ENABLE_EXTENSIONS)
Clark DuVall8f4c7522019-07-30 03:54:0013#include "extensions/browser/extensions_browser_client.h"
Karan Bhatia8418c662018-03-02 00:39:2614#include "extensions/common/constants.h"
15#endif
Giovanni Ortuño Urquidi640873402018-02-08 23:01:4416
Kevin McNee62735002025-04-14 18:45:3517ChromeNavigationUIData::ChromeNavigationUIData() = default;
Giovanni Ortuño Urquidi640873402018-02-08 23:01:4418
19ChromeNavigationUIData::ChromeNavigationUIData(
Kevin McNee62735002025-04-14 18:45:3520 content::NavigationHandle* navigation_handle) {
Giovanni Ortuño Urquidi640873402018-02-08 23:01:4421 auto* web_contents = navigation_handle->GetWebContents();
22#if BUILDFLAG(ENABLE_EXTENSIONS)
Karan Bhatia8418c662018-03-02 00:39:2623 int tab_id = extension_misc::kUnknownTabId;
24 int window_id = extension_misc::kUnknownWindowId;
Clark DuVall8f4c7522019-07-30 03:54:0025 // The browser client can be null in unittests.
26 if (extensions::ExtensionsBrowserClient::Get()) {
27 extensions::ExtensionsBrowserClient::Get()->GetTabAndWindowIdForWebContents(
28 web_contents, &tab_id, &window_id);
29 }
Jeremy Romanec48d7a2018-03-01 17:35:0930 extension_data_ = std::make_unique<extensions::ExtensionNavigationUIData>(
clamy1e5574e2016-09-29 16:48:4431 navigation_handle, tab_id, window_id);
32#endif
John Abd-El-Malekd2377982018-01-08 22:23:1233
Hiroki Nakagawa7230e3412021-01-22 10:08:2934 auto* no_state_prefetch_contents =
35 prerender::ChromeNoStatePrefetchContentsDelegate::FromWebContents(
36 web_contents);
37 if (no_state_prefetch_contents) {
Hiroki Nakagawa78ebf062021-01-20 16:23:5338 is_no_state_prefetching_ = true;
John Abd-El-Malekd2377982018-01-08 22:23:1239 }
clamy1e5574e2016-09-29 16:48:4440}
41
Sorin Jianu0cd458172024-11-28 15:29:2442ChromeNavigationUIData::~ChromeNavigationUIData() = default;
clamy1e5574e2016-09-29 16:48:4443
Giovanni Ortuño Urquidi640873402018-02-08 23:01:4444// static
45std::unique_ptr<ChromeNavigationUIData>
46ChromeNavigationUIData::CreateForMainFrameNavigation(
47 content::WebContents* web_contents,
Carlos IL67cf5a912023-05-25 20:40:5848 bool is_using_https_as_default_scheme,
Mustafa Emre Acer6a80cd702024-06-27 19:57:2949 bool force_no_https_upgrade) {
Giovanni Ortuño Urquidi640873402018-02-08 23:01:4450 auto navigation_ui_data = std::make_unique<ChromeNavigationUIData>();
Mustafa Emre Acer06028d792021-01-05 19:48:5151 navigation_ui_data->is_using_https_as_default_scheme_ =
52 is_using_https_as_default_scheme;
Mustafa Emre Acer6a80cd702024-06-27 19:57:2953 navigation_ui_data->force_no_https_upgrade_ = force_no_https_upgrade;
Giovanni Ortuño Urquidi640873402018-02-08 23:01:44