mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Update to Chromium version 125.0.6422.0 (#1287751)
This commit is contained in:
@@ -452,6 +452,12 @@ void AlloyBrowserContext::RebuildTable(
|
||||
enumerator->OnComplete(true);
|
||||
}
|
||||
|
||||
void AlloyBrowserContext::BuildVisitedLinkTable(
|
||||
const scoped_refptr<VisitedLinkEnumerator>& enumerator) {
|
||||
// Called when visited links will not or cannot be loaded from disk.
|
||||
enumerator->OnVisitedLinkComplete(true);
|
||||
}
|
||||
|
||||
DownloadPrefs* AlloyBrowserContext::GetDownloadPrefs() {
|
||||
CEF_REQUIRE_UIT();
|
||||
if (!download_prefs_) {
|
||||
|
@@ -110,6 +110,8 @@ class AlloyBrowserContext : public ChromeProfileAlloy,
|
||||
|
||||
// visitedlink::VisitedLinkDelegate methods.
|
||||
void RebuildTable(const scoped_refptr<URLEnumerator>& enumerator) override;
|
||||
void BuildVisitedLinkTable(
|
||||
const scoped_refptr<VisitedLinkEnumerator>& enumerator) override;
|
||||
|
||||
// Manages extensions.
|
||||
extensions::CefExtensionSystem* extension_system() const {
|
||||
|
@@ -618,7 +618,7 @@ bool AlloyBrowserHostImpl::MaybeAllowNavigation(
|
||||
CEF_POST_TASK(CEF_UIT,
|
||||
base::BindOnce(
|
||||
base::IgnoreResult(&AlloyBrowserHostImpl::OpenURLFromTab),
|
||||
this, nullptr, params));
|
||||
this, nullptr, params, base::NullCallback()));
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -926,8 +926,11 @@ bool AlloyBrowserHostImpl::IsAudioMuted() {
|
||||
|
||||
content::WebContents* AlloyBrowserHostImpl::OpenURLFromTab(
|
||||
content::WebContents* source,
|
||||
const content::OpenURLParams& params) {
|
||||
auto target_contents = contents_delegate_->OpenURLFromTab(source, params);
|
||||
const content::OpenURLParams& params,
|
||||
base::OnceCallback<void(content::NavigationHandle&)>
|
||||
navigation_handle_callback) {
|
||||
auto target_contents = contents_delegate_->OpenURLFromTabEx(
|
||||
source, params, navigation_handle_callback);
|
||||
if (target_contents) {
|
||||
// Start a navigation in the current browser that will result in the
|
||||
// creation of a new render process.
|
||||
@@ -1282,6 +1285,12 @@ content::PreloadingEligibility AlloyBrowserHostImpl::IsPrerender2Supported(
|
||||
return content::PreloadingEligibility::kEligible;
|
||||
}
|
||||
|
||||
void AlloyBrowserHostImpl::DraggableRegionsChanged(
|
||||
const std::vector<blink::mojom::DraggableRegionPtr>& regions,
|
||||
content::WebContents* contents) {
|
||||
contents_delegate_->DraggableRegionsChanged(regions, contents);
|
||||
}
|
||||
|
||||
// content::WebContentsObserver methods.
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
|
@@ -184,7 +184,9 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase,
|
||||
// content::WebContentsDelegate methods.
|
||||
content::WebContents* OpenURLFromTab(
|
||||
content::WebContents* source,
|
||||
const content::OpenURLParams& params) override;
|
||||
const content::OpenURLParams& params,
|
||||
base::OnceCallback<void(content::NavigationHandle&)>
|
||||
navigation_handle_callback) override;
|
||||
bool ShouldAllowRendererInitiatedCrossProcessNavigation(
|
||||
bool is_main_frame_navigation) override;
|
||||
void AddNewContents(content::WebContents* source,
|
||||
@@ -279,6 +281,9 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase,
|
||||
bool IsBackForwardCacheSupported() override;
|
||||
content::PreloadingEligibility IsPrerender2Supported(
|
||||
content::WebContents& web_contents) override;
|
||||
void DraggableRegionsChanged(
|
||||
const std::vector<blink::mojom::DraggableRegionPtr>& regions,
|
||||
content::WebContents* contents) override;
|
||||
|
||||
// content::WebContentsObserver methods.
|
||||
using content::WebContentsObserver::BeforeUnloadFired;
|
||||
|
@@ -6,10 +6,11 @@
|
||||
#define CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_MAIN_H_
|
||||
#pragma once
|
||||
|
||||
#include <string_view>
|
||||
|
||||
#include "libcef/browser/request_context_impl.h"
|
||||
|
||||
#include "base/command_line.h"
|
||||
#include "base/strings/string_piece.h"
|
||||
#include "build/build_config.h"
|
||||
#include "components/prefs/pref_service.h"
|
||||
#include "content/public/browser/browser_main_parts.h"
|
||||
|
@@ -92,6 +92,7 @@
|
||||
#include "components/pdf/browser/pdf_navigation_throttle.h"
|
||||
#include "components/pdf/browser/pdf_url_loader_request_interceptor.h"
|
||||
#include "components/pdf/common/constants.h"
|
||||
#include "components/pdf/common/pdf_util.h"
|
||||
#include "components/policy/core/common/policy_pref_names.h"
|
||||
#include "components/spellcheck/common/spellcheck.mojom.h"
|
||||
#include "components/version_info/version_info.h"
|
||||
@@ -449,7 +450,7 @@ bool AlloyContentBrowserClient::DoesSiteRequireDedicatedProcess(
|
||||
}
|
||||
|
||||
bool AlloyContentBrowserClient::ShouldTreatURLSchemeAsFirstPartyWhenTopLevel(
|
||||
base::StringPiece scheme,
|
||||
std::string_view scheme,
|
||||
bool is_embedded_origin_secure) {
|
||||
// This is needed to bypass the normal SameSite rules for any chrome:// page
|
||||
// embedding a secure origin, regardless of the registrable domains of any
|
||||
@@ -470,7 +471,7 @@ bool AlloyContentBrowserClient::ShouldTreatURLSchemeAsFirstPartyWhenTopLevel(
|
||||
|
||||
bool AlloyContentBrowserClient::
|
||||
ShouldIgnoreSameSiteCookieRestrictionsWhenTopLevel(
|
||||
base::StringPiece scheme,
|
||||
std::string_view scheme,
|
||||
bool is_embedded_origin_secure) {
|
||||
return is_embedded_origin_secure && scheme == content::kChromeUIScheme;
|
||||
}
|
||||
@@ -913,10 +914,10 @@ void AlloyContentBrowserClient::
|
||||
},
|
||||
&render_frame_host));
|
||||
|
||||
associated_registry.AddInterface<pdf::mojom::PdfService>(base::BindRepeating(
|
||||
associated_registry.AddInterface<pdf::mojom::PdfHost>(base::BindRepeating(
|
||||
[](content::RenderFrameHost* render_frame_host,
|
||||
mojo::PendingAssociatedReceiver<pdf::mojom::PdfService> receiver) {
|
||||
pdf::PDFDocumentHelper::BindPdfService(
|
||||
mojo::PendingAssociatedReceiver<pdf::mojom::PdfHost> receiver) {
|
||||
pdf::PDFDocumentHelper::BindPdfHost(
|
||||
std::move(receiver), render_frame_host,
|
||||
std::make_unique<ChromePDFDocumentHelperClient>());
|
||||
},
|
||||
@@ -1179,6 +1180,7 @@ void AlloyContentBrowserClient::WillCreateURLLoaderFactory(
|
||||
int render_process_id,
|
||||
URLLoaderFactoryType type,
|
||||
const url::Origin& request_initiator,
|
||||
const net::IsolationInfo& isolation_info,
|
||||
std::optional<int64_t> navigation_id,
|
||||
ukm::SourceIdObj ukm_source_id,
|
||||
network::URLLoaderFactoryBuilder& factory_builder,
|
||||
|
@@ -45,10 +45,10 @@ class AlloyContentBrowserClient : public content::ContentBrowserClient {
|
||||
bool DoesSiteRequireDedicatedProcess(content::BrowserContext* browser_context,
|
||||
const GURL& effective_site_url) override;
|
||||
bool ShouldTreatURLSchemeAsFirstPartyWhenTopLevel(
|
||||
base::StringPiece scheme,
|
||||
std::string_view scheme,
|
||||
bool is_embedded_origin_secure) override;
|
||||
bool ShouldIgnoreSameSiteCookieRestrictionsWhenTopLevel(
|
||||
base::StringPiece scheme,
|
||||
std::string_view scheme,
|
||||
bool is_embedded_origin_secure) override;
|
||||
void OverrideURLLoaderFactoryParams(
|
||||
content::BrowserContext* browser_context,
|
||||
@@ -186,6 +186,7 @@ class AlloyContentBrowserClient : public content::ContentBrowserClient {
|
||||
int render_process_id,
|
||||
URLLoaderFactoryType type,
|
||||
const url::Origin& request_initiator,
|
||||
const net::IsolationInfo& isolation_info,
|
||||
std::optional<int64_t> navigation_id,
|
||||
ukm::SourceIdObj ukm_source_id,
|
||||
network::URLLoaderFactoryBuilder& factory_builder,
|
||||
|
@@ -370,6 +370,12 @@ ChromeBrowserProcessAlloy::subresource_filter_ruleset_service() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
subresource_filter::RulesetService*
|
||||
ChromeBrowserProcessAlloy::fingerprinting_protection_ruleset_service() {
|
||||
DCHECK(false);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
StartupData* ChromeBrowserProcessAlloy::startup_data() {
|
||||
DCHECK(false);
|
||||
return nullptr;
|
||||
|
@@ -92,6 +92,8 @@ class ChromeBrowserProcessAlloy : public BrowserProcess {
|
||||
safe_browsing::SafeBrowsingService* safe_browsing_service() override;
|
||||
subresource_filter::RulesetService* subresource_filter_ruleset_service()
|
||||
override;
|
||||
subresource_filter::RulesetService*
|
||||
fingerprinting_protection_ruleset_service() override;
|
||||
StartupData* startup_data() override;
|
||||
|
||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
|
||||
|
@@ -35,7 +35,7 @@ void WriteToFile(const base::FilePath& path, const std::string& content) {
|
||||
|
||||
void AppendToFile(const base::FilePath& path, const std::string& content) {
|
||||
DCHECK(!path.empty());
|
||||
base::AppendToFile(path, base::StringPiece(content));
|
||||
base::AppendToFile(path, std::string_view(content));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
@@ -166,7 +166,7 @@ void LogProtocolMessage(const base::FilePath& log_file,
|
||||
WriteTimestamp(stream);
|
||||
stream << ": " << type_label << ": " << to_log << "\n";
|
||||
const std::string& str = stream.str();
|
||||
if (!base::AppendToFile(log_file, base::StringPiece(str))) {
|
||||
if (!base::AppendToFile(log_file, std::string_view(str))) {
|
||||
LOG(ERROR) << "Failed to write file " << log_file.value();
|
||||
log_error = true;
|
||||
}
|
||||
@@ -200,7 +200,7 @@ class CefDevToolsFrontend::NetworkResourceLoader
|
||||
response_headers_ = response_head.headers;
|
||||
}
|
||||
|
||||
void OnDataReceived(base::StringPiece chunk,
|
||||
void OnDataReceived(std::string_view chunk,
|
||||
base::OnceClosure resume) override {
|
||||
base::Value chunkValue;
|
||||
|
||||
@@ -577,8 +577,8 @@ void CefDevToolsFrontend::DispatchProtocolMessage(
|
||||
return;
|
||||
}
|
||||
|
||||
base::StringPiece str_message(reinterpret_cast<const char*>(message.data()),
|
||||
message.size());
|
||||
std::string_view str_message(reinterpret_cast<const char*>(message.data()),
|
||||
message.size());
|
||||
if (ProtocolLoggingEnabled()) {
|
||||
// Quick check to avoid parsing the JSON object. Events begin with a
|
||||
// "method" value whereas method results begin with an "id" value.
|
||||
@@ -595,7 +595,7 @@ void CefDevToolsFrontend::DispatchProtocolMessage(
|
||||
size_t total_size = str_message.length();
|
||||
for (size_t pos = 0; pos < str_message.length();
|
||||
pos += kMaxMessageChunkSize) {
|
||||
base::StringPiece str_message_chunk =
|
||||
std::string_view str_message_chunk =
|
||||
str_message.substr(pos, kMaxMessageChunkSize);
|
||||
|
||||
CallClientFunction(
|
||||
@@ -643,7 +643,7 @@ bool CefDevToolsFrontend::ProtocolLoggingEnabled() const {
|
||||
}
|
||||
|
||||
void CefDevToolsFrontend::LogProtocolMessage(ProtocolMessageType type,
|
||||
const base::StringPiece& message) {
|
||||
const std::string_view& message) {
|
||||
DCHECK(ProtocolLoggingEnabled());
|
||||
|
||||
std::string to_log(message.substr(0, kMaxLogLineLength));
|
||||
|
@@ -87,7 +87,7 @@ class CefDevToolsFrontend : public content::WebContentsObserver,
|
||||
|
||||
bool ProtocolLoggingEnabled() const;
|
||||
void LogProtocolMessage(ProtocolMessageType type,
|
||||
const base::StringPiece& message);
|
||||
const std::string_view& message);
|
||||
|
||||
PrefService* GetPrefs() const;
|
||||
|
||||
|
@@ -25,6 +25,7 @@
|
||||
#include "services/network/public/mojom/url_response_head.mojom.h"
|
||||
#include "third_party/blink/public/mojom/favicon/favicon_url.mojom.h"
|
||||
#include "third_party/blink/public/mojom/input/focus_type.mojom-blink.h"
|
||||
#include "third_party/blink/public/mojom/page/draggable_region.mojom.h"
|
||||
#include "third_party/blink/public/mojom/widget/platform_widget.mojom-test-utils.h"
|
||||
|
||||
#if defined(OS_WIN)
|
||||
@@ -112,9 +113,11 @@ void CefBrowserContentsDelegate::RemoveObserver(Observer* observer) {
|
||||
|
||||
// |source| may be NULL for navigations in the current tab, or if the
|
||||
// navigation originates from a guest view via MaybeAllowNavigation.
|
||||
content::WebContents* CefBrowserContentsDelegate::OpenURLFromTab(
|
||||
content::WebContents* CefBrowserContentsDelegate::OpenURLFromTabEx(
|
||||
content::WebContents* source,
|
||||
const content::OpenURLParams& params) {
|
||||
const content::OpenURLParams& params,
|
||||
base::OnceCallback<void(content::NavigationHandle&)>&
|
||||
navigation_handle_callback) {
|
||||
bool cancel = false;
|
||||
|
||||
if (auto c = client()) {
|
||||
@@ -133,8 +136,13 @@ content::WebContents* CefBrowserContentsDelegate::OpenURLFromTab(
|
||||
}
|
||||
}
|
||||
|
||||
if (!cancel) {
|
||||
// TODO: Do something with |navigation_handle_callback|.
|
||||
return web_contents();
|
||||
}
|
||||
|
||||
// Returning nullptr will cancel the navigation.
|
||||
return cancel ? nullptr : web_contents();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::LoadingStateChanged(
|
||||
@@ -228,11 +236,9 @@ void CefBrowserContentsDelegate::CanDownload(
|
||||
base::OnceCallback<void(bool)> callback) {
|
||||
bool allow = true;
|
||||
|
||||
if (auto delegate = platform_delegate()) {
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetDownloadHandler()) {
|
||||
allow = handler->CanDownload(browser(), url.spec(), request_method);
|
||||
}
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetDownloadHandler()) {
|
||||
allow = handler->CanDownload(browser(), url.spec(), request_method);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -294,6 +300,23 @@ bool CefBrowserContentsDelegate::HandleKeyboardEvent(
|
||||
return false;
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::DraggableRegionsChanged(
|
||||
const std::vector<blink::mojom::DraggableRegionPtr>& regions,
|
||||
content::WebContents* contents) {
|
||||
// Already converted to window bounds in WebViewImpl::DraggableRegionsChanged.
|
||||
std::vector<cef::mojom::DraggableRegionEntryPtr> cef_regions;
|
||||
if (!regions.empty()) {
|
||||
cef_regions.reserve(regions.size());
|
||||
for (const auto& region : regions) {
|
||||
auto cef_region = cef::mojom::DraggableRegionEntry::New(
|
||||
region->bounds, region->draggable);
|
||||
cef_regions.emplace_back(std::move(cef_region));
|
||||
}
|
||||
}
|
||||
|
||||
browser_info_->GetMainFrame()->UpdateDraggableRegions(std::move(cef_regions));
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::RenderFrameCreated(
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
browser_info_->MaybeCreateFrame(render_frame_host, false /* is_guest_view */);
|
||||
|
@@ -80,10 +80,15 @@ class CefBrowserContentsDelegate : public content::WebContentsDelegate,
|
||||
void AddObserver(Observer* observer);
|
||||
void RemoveObserver(Observer* observer);
|
||||
|
||||
// WebContentsDelegate methods:
|
||||
content::WebContents* OpenURLFromTab(
|
||||
// Same as OpenURLFromTab but only taking |navigation_handle_callback|
|
||||
// if the return value is non-nullptr.
|
||||
content::WebContents* OpenURLFromTabEx(
|
||||
content::WebContents* source,
|
||||
const content::OpenURLParams& params) override;
|
||||
const content::OpenURLParams& params,
|
||||
base::OnceCallback<void(content::NavigationHandle&)>&
|
||||
navigation_handle_callback);
|
||||
|
||||
// WebContentsDelegate methods:
|
||||
void LoadingStateChanged(content::WebContents* source,
|
||||
bool should_show_loading_ui) override;
|
||||
void UpdateTargetURL(content::WebContents* source, const GURL& url) override;
|
||||
@@ -105,6 +110,9 @@ class CefBrowserContentsDelegate : public content::WebContentsDelegate,
|
||||
bool HandleKeyboardEvent(
|
||||
content::WebContents* source,
|
||||
const content::NativeWebKeyboardEvent& event) override;
|
||||
void DraggableRegionsChanged(
|
||||
const std::vector<blink::mojom::DraggableRegionPtr>& regions,
|
||||
content::WebContents* contents) override;
|
||||
|
||||
// WebContentsObserver methods:
|
||||
void RenderFrameCreated(content::RenderFrameHost* render_frame_host) override;
|
||||
|
@@ -12,12 +12,17 @@
|
||||
#include "base/memory/scoped_refptr.h"
|
||||
#include "chrome/browser/ui/page_action/page_action_icon_type.h"
|
||||
#include "content/public/browser/web_contents_delegate.h"
|
||||
#include "third_party/blink/public/mojom/page/draggable_region.mojom-forward.h"
|
||||
#include "third_party/skia/include/core/SkRegion.h"
|
||||
#include "ui/base/window_open_disposition.h"
|
||||
|
||||
class Browser;
|
||||
class Profile;
|
||||
|
||||
namespace content {
|
||||
class NavigationHandle;
|
||||
}
|
||||
|
||||
namespace cef {
|
||||
|
||||
// Delegate for the chrome Browser object. Lifespan is controlled by the Browser
|
||||
@@ -151,16 +156,22 @@ class BrowserDelegate : public content::WebContentsDelegate {
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
// Set the draggable region relative to web contents.
|
||||
// Called from DraggableRegionsHostImpl::UpdateDraggableRegions.
|
||||
virtual void UpdateDraggableRegion(const SkRegion& region) {}
|
||||
|
||||
// Called at the end of a fullscreen transition.
|
||||
virtual void WindowFullscreenStateChanged() {}
|
||||
|
||||
// Returns true if this browser has a Views-hosted opener. Only
|
||||
// applicable for Browsers of type picture_in_picture and devtools.
|
||||
virtual bool HasViewsHostedOpener() const { return false; }
|
||||
|
||||
// Same as OpenURLFromTab but only taking |navigation_handle_callback|
|
||||
// if the return value is non-nullptr.
|
||||
virtual content::WebContents* OpenURLFromTabEx(
|
||||
content::WebContents* source,
|
||||
const content::OpenURLParams& params,
|
||||
base::OnceCallback<void(content::NavigationHandle&)>&
|
||||
navigation_handle_callback) {
|
||||
return nullptr;
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace cef
|
||||
|
@@ -2,10 +2,10 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "libcef/browser/chrome/chrome_browser_delegate.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "libcef/browser/browser_contents_delegate.h"
|
||||
#include "libcef/browser/browser_host_base.h"
|
||||
#include "libcef/browser/browser_info_manager.h"
|
||||
@@ -22,12 +22,14 @@
|
||||
#include "libcef/browser/views/window_impl.h"
|
||||
#include "libcef/common/app_manager.h"
|
||||
#include "libcef/common/frame_util.h"
|
||||
#include "third_party/blink/public/mojom/page/draggable_region.mojom.h"
|
||||
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/ui/browser.h"
|
||||
#include "chrome/browser/ui/browser_tabstrip.h"
|
||||
#include "content/public/browser/global_routing_id.h"
|
||||
#include "content/public/browser/keyboard_event_processing_result.h"
|
||||
#include "content/public/browser/navigation_handle.h"
|
||||
#include "content/public/browser/render_widget_host.h"
|
||||
#include "content/public/browser/render_widget_host_view.h"
|
||||
#include "content/public/common/input/native_web_keyboard_event.h"
|
||||
@@ -454,9 +456,23 @@ const std::optional<SkRegion> ChromeBrowserDelegate::GetDraggableRegion()
|
||||
return draggable_region_;
|
||||
}
|
||||
|
||||
void ChromeBrowserDelegate::UpdateDraggableRegion(const SkRegion& region) {
|
||||
DCHECK(SupportsDraggableRegion());
|
||||
draggable_region_ = region;
|
||||
void ChromeBrowserDelegate::DraggableRegionsChanged(
|
||||
const std::vector<blink::mojom::DraggableRegionPtr>& regions,
|
||||
content::WebContents* contents) {
|
||||
if (SupportsDraggableRegion()) {
|
||||
SkRegion sk_region;
|
||||
for (const auto& region : regions) {
|
||||
sk_region.op(
|
||||
SkIRect::MakeLTRB(region->bounds.x(), region->bounds.y(),
|
||||
region->bounds.x() + region->bounds.width(),
|
||||
region->bounds.y() + region->bounds.height()),
|
||||
region->draggable ? SkRegion::kUnion_Op : SkRegion::kDifference_Op);
|
||||
}
|
||||
|
||||
draggable_region_ = sk_region;
|
||||
} else if (auto delegate = GetDelegateForWebContents(contents)) {
|
||||
delegate->DraggableRegionsChanged(regions, contents);
|
||||
}
|
||||
}
|
||||
|
||||
void ChromeBrowserDelegate::WindowFullscreenStateChanged() {
|
||||
@@ -512,9 +528,11 @@ void ChromeBrowserDelegate::WebContentsCreated(
|
||||
/*is_devtools_popup=*/false, opener);
|
||||
}
|
||||
|
||||
content::WebContents* ChromeBrowserDelegate::OpenURLFromTab(
|
||||
content::WebContents* ChromeBrowserDelegate::OpenURLFromTabEx(
|
||||
content::WebContents* source,
|
||||
const content::OpenURLParams& params) {
|
||||
const content::OpenURLParams& params,
|
||||
base::OnceCallback<void(content::NavigationHandle&)>&
|
||||
navigation_handle_callback) {
|
||||
// |source| may be nullptr when opening a link from chrome UI such as the
|
||||
// Reading List sidebar. In that case we default to using the Browser's
|
||||
// currently active WebContents.
|
||||
@@ -526,7 +544,8 @@ content::WebContents* ChromeBrowserDelegate::OpenURLFromTab(
|
||||
// Return nullptr to cancel the navigation. Otherwise, proceed with default
|
||||
// chrome handling.
|
||||
if (auto delegate = GetDelegateForWebContents(source)) {
|
||||
return delegate->OpenURLFromTab(source, params);
|
||||
return delegate->OpenURLFromTabEx(source, params,
|
||||
navigation_handle_callback);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
@@ -87,9 +87,13 @@ class ChromeBrowserDelegate : public cef::BrowserDelegate {
|
||||
std::optional<bool> SupportsWindowFeature(int feature) const override;
|
||||
bool SupportsDraggableRegion() const override;
|
||||
const std::optional<SkRegion> GetDraggableRegion() const override;
|
||||
void UpdateDraggableRegion(const SkRegion& region) override;
|
||||
void WindowFullscreenStateChanged() override;
|
||||
bool HasViewsHostedOpener() const override;
|
||||
content::WebContents* OpenURLFromTabEx(
|
||||
content::WebContents* source,
|
||||
const content::OpenURLParams& params,
|
||||
base::OnceCallback<void(content::NavigationHandle&)>&
|
||||
navigation_handle_callback) override;
|
||||
|
||||
// WebContentsDelegate methods:
|
||||
void WebContentsCreated(content::WebContents* source_contents,
|
||||
@@ -98,9 +102,6 @@ class ChromeBrowserDelegate : public cef::BrowserDelegate {
|
||||
const std::string& frame_name,
|
||||
const GURL& target_url,
|
||||
content::WebContents* new_contents) override;
|
||||
content::WebContents* OpenURLFromTab(
|
||||
content::WebContents* source,
|
||||
const content::OpenURLParams& params) override;
|
||||
void LoadingStateChanged(content::WebContents* source,
|
||||
bool should_show_loading_ui) override;
|
||||
void UpdateTargetURL(content::WebContents* source, const GURL& url) override;
|
||||
@@ -122,6 +123,9 @@ class ChromeBrowserDelegate : public cef::BrowserDelegate {
|
||||
bool HandleKeyboardEvent(
|
||||
content::WebContents* source,
|
||||
const content::NativeWebKeyboardEvent& event) override;
|
||||
void DraggableRegionsChanged(
|
||||
const std::vector<blink::mojom::DraggableRegionPtr>& regions,
|
||||
content::WebContents* contents) override;
|
||||
|
||||
Browser* browser() const { return browser_; }
|
||||
|
||||
|
@@ -146,7 +146,12 @@ void ChromeBrowserHostImpl::OnWebContentsDestroyed(
|
||||
// CefBrowserInfoManager::DestroyAllBrowsers().
|
||||
if (platform_delegate_) {
|
||||
platform_delegate_->WebContentsDestroyed(web_contents);
|
||||
DestroyBrowser();
|
||||
|
||||
// Destroy the browser asynchronously to allow the current call stack
|
||||
// to unwind (we may have been called via the TabStripModel owned by the
|
||||
// Browser).
|
||||
CEF_POST_TASK(CEF_UIT,
|
||||
base::BindOnce(&ChromeBrowserHostImpl::DestroyBrowser, this));
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -236,6 +236,7 @@ void ChromeContentBrowserClientCef::WillCreateURLLoaderFactory(
|
||||
int render_process_id,
|
||||
URLLoaderFactoryType type,
|
||||
const url::Origin& request_initiator,
|
||||
const net::IsolationInfo& isolation_info,
|
||||
std::optional<int64_t> navigation_id,
|
||||
ukm::SourceIdObj ukm_source_id,
|
||||
network::URLLoaderFactoryBuilder& factory_builder,
|
||||
@@ -252,9 +253,9 @@ void ChromeContentBrowserClientCef::WillCreateURLLoaderFactory(
|
||||
if (!CefBrowserContext::FromProfile(profile)) {
|
||||
ChromeContentBrowserClient::WillCreateURLLoaderFactory(
|
||||
browser_context, frame, render_process_id, type, request_initiator,
|
||||
navigation_id, ukm_source_id, factory_builder, header_client,
|
||||
bypass_redirect_checks, disable_secure_dns, factory_override,
|
||||
navigation_response_task_runner);
|
||||
isolation_info, navigation_id, ukm_source_id, factory_builder,
|
||||
header_client, bypass_redirect_checks, disable_secure_dns,
|
||||
factory_override, navigation_response_task_runner);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -283,7 +284,7 @@ void ChromeContentBrowserClientCef::WillCreateURLLoaderFactory(
|
||||
// TODO(chrome): Is it necessary to proxy |header_client| callbacks?
|
||||
ChromeContentBrowserClient::WillCreateURLLoaderFactory(
|
||||
browser_context, frame, render_process_id, type, request_initiator,
|
||||
navigation_id, ukm_source_id, factory_builder,
|
||||
isolation_info, navigation_id, ukm_source_id, factory_builder,
|
||||
/*header_client=*/nullptr, bypass_redirect_checks, disable_secure_dns,
|
||||
handler_override, navigation_response_task_runner);
|
||||
|
||||
|
@@ -62,6 +62,7 @@ class ChromeContentBrowserClientCef : public ChromeContentBrowserClient {
|
||||
int render_process_id,
|
||||
URLLoaderFactoryType type,
|
||||
const url::Origin& request_initiator,
|
||||
const net::IsolationInfo& isolation_info,
|
||||
std::optional<int64_t> navigation_id,
|
||||
ukm::SourceIdObj ukm_source_id,
|
||||
network::URLLoaderFactoryBuilder& factory_builder,
|
||||
|
@@ -29,7 +29,7 @@ CefDevToolsController::~CefDevToolsController() {
|
||||
}
|
||||
|
||||
bool CefDevToolsController::SendDevToolsMessage(
|
||||
const base::StringPiece& message) {
|
||||
const std::string_view& message) {
|
||||
CEF_REQUIRE_UIT();
|
||||
if (!EnsureAgentHost()) {
|
||||
return false;
|
||||
@@ -100,8 +100,8 @@ void CefDevToolsController::DispatchProtocolMessage(
|
||||
return;
|
||||
}
|
||||
|
||||
base::StringPiece str_message(reinterpret_cast<const char*>(message.data()),
|
||||
message.size());
|
||||
std::string_view str_message(reinterpret_cast<const char*>(message.data()),
|
||||
message.size());
|
||||
if (!devtools_util::ProtocolParser::IsValidMessage(str_message)) {
|
||||
LOG(WARNING) << "Invalid message: " << str_message.substr(0, 100);
|
||||
return;
|
||||
|
@@ -7,13 +7,12 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "content/public/browser/devtools_agent_host_client.h"
|
||||
|
||||
#include "base/containers/span.h"
|
||||
#include "base/memory/scoped_refptr.h"
|
||||
#include "base/memory/weak_ptr.h"
|
||||
#include "base/observer_list.h"
|
||||
#include "base/values.h"
|
||||
#include "content/public/browser/devtools_agent_host_client.h"
|
||||
|
||||
namespace content {
|
||||
class WebContents;
|
||||
@@ -24,12 +23,12 @@ class CefDevToolsController : public content::DevToolsAgentHostClient {
|
||||
class Observer : public base::CheckedObserver {
|
||||
public:
|
||||
// See CefDevToolsMessageObserver documentation.
|
||||
virtual bool OnDevToolsMessage(const base::StringPiece& message) = 0;
|
||||
virtual bool OnDevToolsMessage(const std::string_view& message) = 0;
|
||||
virtual void OnDevToolsMethodResult(int message_id,
|
||||
bool success,
|
||||
const base::StringPiece& result) = 0;
|
||||
virtual void OnDevToolsEvent(const base::StringPiece& method,
|
||||
const base::StringPiece& params) = 0;
|
||||
const std::string_view& result) = 0;
|
||||
virtual void OnDevToolsEvent(const std::string_view& method,
|
||||
const std::string_view& params) = 0;
|
||||
virtual void OnDevToolsAgentAttached() = 0;
|
||||
virtual void OnDevToolsAgentDetached() = 0;
|
||||
|
||||
@@ -48,7 +47,7 @@ class CefDevToolsController : public content::DevToolsAgentHostClient {
|
||||
~CefDevToolsController() override;
|
||||
|
||||
// See CefBrowserHost methods of the same name for documentation.
|
||||
bool SendDevToolsMessage(const base::StringPiece& message);
|
||||
bool SendDevToolsMessage(const std::string_view& message);
|
||||
int ExecuteDevToolsMethod(int message_id,
|
||||
const std::string& method,
|
||||
const base::Value::Dict* params);
|
||||
|
@@ -50,7 +50,7 @@ class CefDevToolsRegistrationImpl : public CefRegistration,
|
||||
|
||||
private:
|
||||
// CefDevToolsController::Observer methods:
|
||||
bool OnDevToolsMessage(const base::StringPiece& message) override {
|
||||
bool OnDevToolsMessage(const std::string_view& message) override {
|
||||
CEF_REQUIRE_UIT();
|
||||
return observer_->OnDevToolsMessage(browser_, message.data(),
|
||||
message.size());
|
||||
@@ -58,14 +58,14 @@ class CefDevToolsRegistrationImpl : public CefRegistration,
|
||||
|
||||
void OnDevToolsMethodResult(int message_id,
|
||||
bool success,
|
||||
const base::StringPiece& result) override {
|
||||
const std::string_view& result) override {
|
||||
CEF_REQUIRE_UIT();
|
||||
observer_->OnDevToolsMethodResult(browser_, message_id, success,
|
||||
result.data(), result.size());
|
||||
}
|
||||
|
||||
void OnDevToolsEvent(const base::StringPiece& method,
|
||||
const base::StringPiece& params) override {
|
||||
void OnDevToolsEvent(const std::string_view& method,
|
||||
const std::string_view& params) override {
|
||||
CEF_REQUIRE_UIT();
|
||||
observer_->OnDevToolsEvent(browser_, std::string(method), params.data(),
|
||||
params.size());
|
||||
@@ -119,7 +119,7 @@ bool CefDevToolsProtocolManager::SendDevToolsMessage(const void* message,
|
||||
}
|
||||
|
||||
return devtools_controller_->SendDevToolsMessage(
|
||||
base::StringPiece(static_cast<const char*>(message), message_size));
|
||||
std::string_view(static_cast<const char*>(message), message_size));
|
||||
}
|
||||
|
||||
int CefDevToolsProtocolManager::ExecuteDevToolsMethod(
|
||||
|
@@ -11,16 +11,16 @@ namespace devtools_util {
|
||||
|
||||
namespace {
|
||||
|
||||
bool IsValidDictionary(const base::StringPiece& str, bool allow_empty) {
|
||||
bool IsValidDictionary(const std::string_view& str, bool allow_empty) {
|
||||
return str.length() >= (allow_empty ? 2 : 3) && str[0] == '{' &&
|
||||
str[str.length() - 1] == '}';
|
||||
}
|
||||
|
||||
// Example:
|
||||
// {"method":"Target.targetDestroyed","params":{"targetId":"1234..."}}
|
||||
bool ParseEvent(const base::StringPiece& message,
|
||||
base::StringPiece& method,
|
||||
base::StringPiece& params) {
|
||||
bool ParseEvent(const std::string_view& message,
|
||||
std::string_view& method,
|
||||
std::string_view& params) {
|
||||
static const char kMethodStart[] = "{\"method\":\"";
|
||||
static const char kMethodEnd[] = "\"";
|
||||
static const char kParamsStart[] = ",\"params\":";
|
||||
@@ -31,7 +31,7 @@ bool ParseEvent(const base::StringPiece& message,
|
||||
|
||||
const size_t method_start = sizeof(kMethodStart) - 1;
|
||||
const size_t method_end = message.find(kMethodEnd, method_start);
|
||||
if (method_end == base::StringPiece::npos) {
|
||||
if (method_end == std::string_view::npos) {
|
||||
return false;
|
||||
}
|
||||
method = message.substr(method_start, method_end - method_start);
|
||||
@@ -42,9 +42,9 @@ bool ParseEvent(const base::StringPiece& message,
|
||||
size_t remainder_start = method_end + sizeof(kMethodEnd) - 1;
|
||||
if (remainder_start == message.size() - 1) {
|
||||
// No more contents.
|
||||
params = base::StringPiece();
|
||||
params = std::string_view();
|
||||
} else {
|
||||
const base::StringPiece& remainder = message.substr(remainder_start);
|
||||
const std::string_view& remainder = message.substr(remainder_start);
|
||||
if (base::StartsWith(remainder, kParamsStart)) {
|
||||
// Stop immediately before the message closing bracket.
|
||||
remainder_start += sizeof(kParamsStart) - 1;
|
||||
@@ -67,10 +67,10 @@ bool ParseEvent(const base::StringPiece& message,
|
||||
// {"id":3,"result":{}}
|
||||
// {"id":4,"result":{"debuggerId":"-2193881606781505058.81393575456727957"}}
|
||||
// {"id":5,"error":{"code":-32000,"message":"Not supported"}}
|
||||
bool ParseResult(const base::StringPiece& message,
|
||||
bool ParseResult(const std::string_view& message,
|
||||
int& message_id,
|
||||
bool& success,
|
||||
base::StringPiece& result) {
|
||||
std::string_view& result) {
|
||||
static const char kIdStart[] = "{\"id\":";
|
||||
static const char kIdEnd[] = ",";
|
||||
static const char kResultStart[] = "\"result\":";
|
||||
@@ -82,16 +82,16 @@ bool ParseResult(const base::StringPiece& message,
|
||||
|
||||
const size_t id_start = sizeof(kIdStart) - 1;
|
||||
const size_t id_end = message.find(kIdEnd, id_start);
|
||||
if (id_end == base::StringPiece::npos) {
|
||||
if (id_end == std::string_view::npos) {
|
||||
return false;
|
||||
}
|
||||
const base::StringPiece& id_str = message.substr(id_start, id_end - id_start);
|
||||
const std::string_view& id_str = message.substr(id_start, id_end - id_start);
|
||||
if (id_str.empty() || !base::StringToInt(id_str, &message_id)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
size_t remainder_start = id_end + sizeof(kIdEnd) - 1;
|
||||
const base::StringPiece& remainder = message.substr(remainder_start);
|
||||
const std::string_view& remainder = message.substr(remainder_start);
|
||||
if (base::StartsWith(remainder, kResultStart)) {
|
||||
// Stop immediately before the message closing bracket.
|
||||
remainder_start += sizeof(kResultStart) - 1;
|
||||
@@ -119,11 +119,11 @@ bool ParseResult(const base::StringPiece& message,
|
||||
} // namespace
|
||||
|
||||
// static
|
||||
bool ProtocolParser::IsValidMessage(const base::StringPiece& message) {
|
||||
bool ProtocolParser::IsValidMessage(const std::string_view& message) {
|
||||
return IsValidDictionary(message, /*allow_empty=*/false);
|
||||
}
|
||||
|
||||
bool ProtocolParser::Initialize(const base::StringPiece& message) {
|
||||
bool ProtocolParser::Initialize(const std::string_view& message) {
|
||||
if (status_ != UNINITIALIZED) {
|
||||
return false;
|
||||
}
|
||||
|
@@ -6,7 +6,7 @@
|
||||
#define CEF_LIBCEF_BROWSER_DEVTOOLS_DEVTOOLS_UTIL_H_
|
||||
#pragma once
|
||||
|
||||
#include "base/strings/string_piece.h"
|
||||
#include <string_view>
|
||||
|
||||
namespace devtools_util {
|
||||
|
||||
@@ -31,10 +31,10 @@ struct ProtocolParser {
|
||||
ProtocolParser() = default;
|
||||
|
||||
// Checks for a non-empty JSON dictionary.
|
||||
static bool IsValidMessage(const base::StringPiece& message);
|
||||
static bool IsValidMessage(const std::string_view& message);
|
||||
|
||||
// Returns false if already initialized.
|
||||
bool Initialize(const base::StringPiece& message);
|
||||
bool Initialize(const std::string_view& message);
|
||||
|
||||
bool IsInitialized() const { return status_ != UNINITIALIZED; }
|
||||
bool IsEvent() const { return status_ == EVENT; }
|
||||
@@ -45,7 +45,7 @@ struct ProtocolParser {
|
||||
|
||||
// For event messages:
|
||||
// "method" string:
|
||||
base::StringPiece method_;
|
||||
std::string_view method_;
|
||||
|
||||
// For result messages:
|
||||
// "id" int:
|
||||
@@ -55,7 +55,7 @@ struct ProtocolParser {
|
||||
|
||||
// For both:
|
||||
// "params", "result" or "error" dictionary:
|
||||
base::StringPiece params_;
|
||||
std::string_view params_;
|
||||
|
||||
private:
|
||||
enum Status {
|
||||
@@ -69,4 +69,4 @@ struct ProtocolParser {
|
||||
|
||||
} // namespace devtools_util
|
||||
|
||||
#endif // CEF_LIBCEF_BROWSER_DEVTOOLS_DEVTOOLS_UTIL_H_
|
||||
#endif // CEF_LIBCEF_BROWSER_DEVTOOLS_DEVTOOLS_UTIL_H_
|
||||
|
@@ -59,7 +59,7 @@ namespace {
|
||||
|
||||
// Implementation based on ComponentLoader::ParseManifest.
|
||||
std::optional<base::Value::Dict> ParseManifest(
|
||||
base::StringPiece manifest_contents) {
|
||||
std::string_view manifest_contents) {
|
||||
JSONStringValueDeserializer deserializer(manifest_contents);
|
||||
std::unique_ptr<base::Value> manifest =
|
||||
deserializer.Deserialize(nullptr, nullptr);
|
||||
|
@@ -39,7 +39,8 @@ class CefMediaStreamUI : public content::MediaStreamUI {
|
||||
void OnDeviceStoppedForSourceChange(
|
||||
const std::string& label,
|
||||
const content::DesktopMediaID& old_media_id,
|
||||
const content::DesktopMediaID& new_media_id) override {}
|
||||
const content::DesktopMediaID& new_media_id,
|
||||
bool captured_surface_control_active) override {}
|
||||
|
||||
void OnDeviceStopped(const std::string& label,
|
||||
const content::DesktopMediaID& media_id) override {}
|
||||
|
@@ -500,7 +500,7 @@ class CefBrowserURLRequest::Context
|
||||
}
|
||||
|
||||
// SimpleURLLoaderStreamConsumer methods:
|
||||
void OnDataReceived(base::StringPiece string_piece,
|
||||
void OnDataReceived(std::string_view string_piece,
|
||||
base::OnceClosure resume) override {
|
||||
DCHECK(CalledOnValidThread());
|
||||
DCHECK_EQ(status_, UR_IO_PENDING);
|
||||
|
@@ -253,7 +253,8 @@ void LoadCookies(const CefBrowserContext::Getter& browser_context_getter,
|
||||
!request.trusted_params->isolation_info.IsEmpty()) {
|
||||
partition_key_collection = net::CookiePartitionKeyCollection::FromOptional(
|
||||
net::CookiePartitionKey::FromNetworkIsolationKey(
|
||||
request.trusted_params->isolation_info.network_isolation_key()));
|
||||
request.trusted_params->isolation_info.network_isolation_key(),
|
||||
request.site_for_cookies, net::SchemefulSite(request.url)));
|
||||
}
|
||||
|
||||
CEF_POST_TASK(
|
||||
@@ -286,7 +287,7 @@ void SaveCookies(const CefBrowserContext::Getter& browser_context_getter,
|
||||
response_date = base::Time();
|
||||
}
|
||||
|
||||
const base::StringPiece name(net_service::kHTTPSetCookieHeaderName);
|
||||
const std::string_view name(net_service::kHTTPSetCookieHeaderName);
|
||||
std::string cookie_string;
|
||||
size_t iter = 0;
|
||||
net::CookieList allowed_cookies;
|
||||
@@ -300,7 +301,8 @@ void SaveCookies(const CefBrowserContext::Getter& browser_context_getter,
|
||||
request.url, cookie_string, base::Time::Now(),
|
||||
std::make_optional(response_date),
|
||||
/*cookie_partition_key=*/std::nullopt,
|
||||
/*block_truncated=*/true, &returned_status);
|
||||
/*block_truncated=*/true, net::CookieSourceType::kHTTP,
|
||||
&returned_status);
|
||||
if (!returned_status.IsInclude()) {
|
||||
continue;
|
||||
}
|
||||
|
@@ -303,7 +303,7 @@ bool CefCookieManagerImpl::SetCookieInternal(
|
||||
/*creation_time=*/base::Time(), expiration_time,
|
||||
/*last_access_time=*/base::Time(), cookie.secure ? true : false,
|
||||
cookie.httponly ? true : false, same_site, priority,
|
||||
/*partition_key=*/std::nullopt);
|
||||
/*partition_key=*/std::nullopt, /*status=*/nullptr);
|
||||
|
||||
if (!canonical_cookie) {
|
||||
SetCookieCallbackImpl(
|
||||
|
@@ -6,14 +6,14 @@
|
||||
#ifndef CEF_LIBCEF_BROWSER_NET_SERVICE_PROXY_URL_LOADER_FACTORY_H_
|
||||
#define CEF_LIBCEF_BROWSER_NET_SERVICE_PROXY_URL_LOADER_FACTORY_H_
|
||||
|
||||
#include "libcef/browser/net_service/stream_reader_url_loader.h"
|
||||
|
||||
#include <optional>
|
||||
#include <string_view>
|
||||
|
||||
#include "libcef/browser/net_service/stream_reader_url_loader.h"
|
||||
|
||||
#include "base/containers/unique_ptr_adapters.h"
|
||||
#include "base/functional/callback.h"
|
||||
#include "base/hash/hash.h"
|
||||
#include "base/strings/string_piece.h"
|
||||
#include "content/public/browser/content_browser_client.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
#include "mojo/public/cpp/bindings/pending_receiver.h"
|
||||
|
@@ -215,7 +215,7 @@ void ResponseFilterWrapper::Write(std::unique_ptr<std::string> data) {
|
||||
|
||||
write_pending_ = true;
|
||||
|
||||
base::StringPiece string_piece(*data);
|
||||
std::string_view string_piece(*data);
|
||||
forwarder_->Write(std::make_unique<mojo::StringDataSource>(
|
||||
string_piece, mojo::StringDataSource::AsyncWritingMode::
|
||||
STRING_STAYS_VALID_UNTIL_COMPLETION),
|
||||
|
@@ -45,8 +45,8 @@ scoped_refptr<URLLoaderFactoryGetter> URLLoaderFactoryGetter::Create(
|
||||
// Allow DevTools to potentially inject itself into the proxy pipe.
|
||||
content::devtools_instrumentation::WillCreateURLLoaderFactoryParams::
|
||||
ForFrame(static_cast<content::RenderFrameHostImpl*>(render_frame_host))
|
||||
.Run(false /* is_navigation */, false /* is_download */,
|
||||
factory_builder, nullptr /* factory_override */);
|
||||
.Run(/*is_navigation=*/false, /*is_download=*/false,
|
||||
factory_builder, /*factory_override=*/nullptr);
|
||||
}
|
||||
|
||||
auto browser_client = CefAppManager::Get()->GetContentClient()->browser();
|
||||
@@ -55,11 +55,11 @@ scoped_refptr<URLLoaderFactoryGetter> URLLoaderFactoryGetter::Create(
|
||||
browser_client->WillCreateURLLoaderFactory(
|
||||
browser_context, render_frame_host, render_process_id,
|
||||
content::ContentBrowserClient::URLLoaderFactoryType::kDocumentSubResource,
|
||||
url::Origin(), std::nullopt /* navigation_id */, ukm::SourceIdObj(),
|
||||
factory_builder, nullptr /* header_client */,
|
||||
nullptr /* bypass_redirect_checks */, nullptr /* disable_secure_dns */,
|
||||
nullptr /* factory_override */,
|
||||
nullptr /* navigation_response_task_runner */);
|
||||
url::Origin(), net::IsolationInfo(), /*navigation_id=*/std::nullopt,
|
||||
ukm::SourceIdObj(), factory_builder, /*header_client=*/nullptr,
|
||||
/*bypass_redirect_checks=*/nullptr, /*disable_secure_dns=*/nullptr,
|
||||
/*factory_override=*/nullptr,
|
||||
/*navigation_response_task_runner=*/nullptr);
|
||||
|
||||
return base::WrapRefCounted(new URLLoaderFactoryGetter(
|
||||
loader_factory->Clone(), std::move(factory_builder)));
|
||||
|
@@ -328,17 +328,21 @@ void CefBrowserPlatformDelegateOsr::DragTargetDragEnter(
|
||||
gfx::PointF transformed_pt;
|
||||
|
||||
// Some random crashes occured when GetWeakPtr is called on a null pointer
|
||||
// that is the return of GetRenderWidgetHostAtPoint As the root cause is not
|
||||
// yet understood (no reproducible scenario yet), the current fix is only a
|
||||
// protection against null pointer dereferencing.
|
||||
content::RenderWidgetHostImpl* ptr_current_rwh_for_drag =
|
||||
web_contents->GetInputEventRouter()->GetRenderWidgetHostAtPoint(
|
||||
// that is the return of GetRenderWidgetHostViewInputAtPoint. As the root
|
||||
// cause is not yet understood (no reproducible scenario yet), the current fix
|
||||
// is only a protection against null pointer dereferencing.
|
||||
auto* view =
|
||||
web_contents->GetInputEventRouter()->GetRenderWidgetHostViewInputAtPoint(
|
||||
web_contents->GetRenderViewHost()->GetWidget()->GetView(),
|
||||
gfx::PointF(client_pt), &transformed_pt);
|
||||
if (!ptr_current_rwh_for_drag) {
|
||||
if (!view) {
|
||||
return;
|
||||
}
|
||||
current_rwh_for_drag_ = ptr_current_rwh_for_drag->GetWeakPtr();
|
||||
auto* target_rwh = content::RenderWidgetHostImpl::From(
|
||||
static_cast<content::RenderWidgetHostViewBase*>(view)
|
||||
->GetRenderWidgetHost());
|
||||
|
||||
current_rwh_for_drag_ = target_rwh->GetWeakPtr();
|
||||
|
||||
current_rvh_for_drag_ = web_contents->GetRenderViewHost();
|
||||
|
||||
@@ -387,10 +391,13 @@ void CefBrowserPlatformDelegateOsr::DragTargetDragOver(
|
||||
GetScreenPoint(client_pt, /*want_dip_coords=*/false);
|
||||
|
||||
gfx::PointF transformed_pt;
|
||||
content::RenderWidgetHostImpl* target_rwh =
|
||||
web_contents->GetInputEventRouter()->GetRenderWidgetHostAtPoint(
|
||||
auto* view =
|
||||
web_contents->GetInputEventRouter()->GetRenderWidgetHostViewInputAtPoint(
|
||||
web_contents->GetRenderViewHost()->GetWidget()->GetView(),
|
||||
gfx::PointF(client_pt), &transformed_pt);
|
||||
auto* target_rwh = content::RenderWidgetHostImpl::From(
|
||||
static_cast<content::RenderWidgetHostViewBase*>(view)
|
||||
->GetRenderWidgetHost());
|
||||
|
||||
if (target_rwh != current_rwh_for_drag_.get()) {
|
||||
if (current_rwh_for_drag_) {
|
||||
@@ -458,10 +465,13 @@ void CefBrowserPlatformDelegateOsr::DragTargetDrop(const CefMouseEvent& event) {
|
||||
GetScreenPoint(client_pt, /*want_dip_coords=*/false);
|
||||
|
||||
gfx::PointF transformed_pt;
|
||||
content::RenderWidgetHostImpl* target_rwh =
|
||||
web_contents->GetInputEventRouter()->GetRenderWidgetHostAtPoint(
|
||||
auto* view =
|
||||
web_contents->GetInputEventRouter()->GetRenderWidgetHostViewInputAtPoint(
|
||||
web_contents->GetRenderViewHost()->GetWidget()->GetView(),
|
||||
gfx::PointF(client_pt), &transformed_pt);
|
||||
auto* target_rwh = content::RenderWidgetHostImpl::From(
|
||||
static_cast<content::RenderWidgetHostViewBase*>(view)
|
||||
->GetRenderWidgetHost());
|
||||
|
||||
if (target_rwh != current_rwh_for_drag_.get()) {
|
||||
if (current_rwh_for_drag_) {
|
||||
|
@@ -129,6 +129,10 @@ class CefPermissionPrompt : public permissions::PermissionPrompt {
|
||||
return std::nullopt;
|
||||
}
|
||||
bool ShouldFinalizeRequestAfterDecided() const override { return true; }
|
||||
std::vector<permissions::ElementAnchoredBubbleVariant> GetPromptVariants()
|
||||
const override {
|
||||
return {};
|
||||
}
|
||||
|
||||
private:
|
||||
// We don't expose AcceptThisTime() because it's a special case for
|
||||
|
@@ -27,7 +27,9 @@
|
||||
#include "chrome/browser/preloading/preloading_prefs.h"
|
||||
#include "chrome/browser/printing/print_preview_sticky_settings.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/profiles/profile_key.h"
|
||||
#include "chrome/browser/ssl/ssl_config_service_manager.h"
|
||||
#include "chrome/browser/supervised_user/supervised_user_settings_service_factory.h"
|
||||
#include "chrome/browser/themes/theme_service.h"
|
||||
#include "chrome/browser/ui/browser_view_prefs.h"
|
||||
#include "chrome/browser/ui/webui/accessibility/accessibility_ui.h"
|
||||
@@ -61,7 +63,8 @@
|
||||
#include "components/safe_browsing/core/common/safe_browsing_prefs.h"
|
||||
#include "components/safe_search_api/safe_search_util.h"
|
||||
#include "components/spellcheck/browser/pref_names.h"
|
||||
#include "components/supervised_user/core/common/buildflags.h"
|
||||
#include "components/supervised_user/core/browser/supervised_user_pref_store.h"
|
||||
#include "components/supervised_user/core/browser/supervised_user_settings_service.h"
|
||||
#include "components/sync_preferences/pref_service_syncable.h"
|
||||
#include "components/sync_preferences/pref_service_syncable_factory.h"
|
||||
#include "components/unified_consent/unified_consent_service.h"
|
||||
@@ -77,13 +80,6 @@
|
||||
#include "components/os_crypt/sync/os_crypt.h"
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(ENABLE_SUPERVISED_USERS)
|
||||
#include "chrome/browser/profiles/profile_key.h"
|
||||
#include "chrome/browser/supervised_user/supervised_user_settings_service_factory.h"
|
||||
#include "components/supervised_user/core/browser/supervised_user_pref_store.h"
|
||||
#include "components/supervised_user/core/browser/supervised_user_settings_service.h"
|
||||
#endif
|
||||
|
||||
namespace browser_prefs {
|
||||
|
||||
namespace {
|
||||
@@ -170,7 +166,6 @@ std::unique_ptr<PrefService> CreatePrefService(Profile* profile,
|
||||
factory.set_user_prefs(cef_pref_store.get());
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_SUPERVISED_USERS)
|
||||
if (profile) {
|
||||
// Used to store supervised user preferences.
|
||||
auto* supervised_user_settings =
|
||||
@@ -191,7 +186,6 @@ std::unique_ptr<PrefService> CreatePrefService(Profile* profile,
|
||||
DCHECK(supervised_user_prefs->IsInitializationComplete());
|
||||
factory.set_supervised_user_prefs(supervised_user_prefs);
|
||||
}
|
||||
#endif // BUILDFLAG(ENABLE_SUPERVISED_USERS)
|
||||
|
||||
// Registry that will be populated with all known preferences. Preferences
|
||||
// are registered with default values that may be changed via a *PrefStore.
|
||||
|
@@ -12,7 +12,7 @@
|
||||
|
||||
CefPrefStore::CefPrefStore() = default;
|
||||
|
||||
bool CefPrefStore::GetValue(base::StringPiece key,
|
||||
bool CefPrefStore::GetValue(std::string_view key,
|
||||
const base::Value** value) const {
|
||||
return prefs_.GetValue(key, value);
|
||||
}
|
||||
|
@@ -24,7 +24,7 @@ class CefPrefStore : public PersistentPrefStore {
|
||||
CefPrefStore& operator=(const CefPrefStore&) = delete;
|
||||
|
||||
// Overriden from PrefStore.
|
||||
bool GetValue(base::StringPiece key,
|
||||
bool GetValue(std::string_view key,
|
||||
const base::Value** result) const override;
|
||||
base::Value::Dict GetValues() const override;
|
||||
void AddObserver(PrefStore::Observer* observer) override;
|
||||
|
@@ -89,3 +89,7 @@ bool CefSpeechRecognitionManagerDelegate::FilterProfanities(
|
||||
int render_process_id) {
|
||||
return filter_profanities_;
|
||||
}
|
||||
|
||||
void CefSpeechRecognitionManagerDelegate::BindSpeechRecognitionContext(
|
||||
mojo::PendingReceiver<media::mojom::SpeechRecognitionContext>
|
||||
recognition_receiver) {}
|
||||
|
@@ -52,6 +52,9 @@ class CefSpeechRecognitionManagerDelegate
|
||||
override;
|
||||
content::SpeechRecognitionEventListener* GetEventListener() override;
|
||||
bool FilterProfanities(int render_process_id) override;
|
||||
void BindSpeechRecognitionContext(
|
||||
mojo::PendingReceiver<media::mojom::SpeechRecognitionContext> receiver)
|
||||
override;
|
||||
|
||||
private:
|
||||
bool filter_profanities_;
|
||||
|
@@ -33,9 +33,9 @@ class CefTestServerConnectionImpl : public CefTestServerConnection {
|
||||
size_t data_size) override {
|
||||
auto response = std::make_unique<BasicHttpResponse>();
|
||||
response->set_code(net::HTTP_OK);
|
||||
response->set_content_type(base::StringPiece(content_type.ToString()));
|
||||
response->set_content_type(std::string_view(content_type.ToString()));
|
||||
response->set_content(
|
||||
base::StringPiece(reinterpret_cast<const char*>(data), data_size));
|
||||
std::string_view(reinterpret_cast<const char*>(data), data_size));
|
||||
SendBasicHttpResponse(std::move(response));
|
||||
}
|
||||
|
||||
@@ -48,8 +48,8 @@ class CefTestServerConnectionImpl : public CefTestServerConnection {
|
||||
void SendHttp500Response(const CefString& error_message) override {
|
||||
auto response = std::make_unique<BasicHttpResponse>();
|
||||
response->set_code(net::HTTP_INTERNAL_SERVER_ERROR);
|
||||
response->set_content_type(base::StringPiece("text/html"));
|
||||
response->set_content(base::StringPiece(error_message.ToString()));
|
||||
response->set_content_type(std::string_view("text/html"));
|
||||
response->set_content(std::string_view(error_message.ToString()));
|
||||
SendBasicHttpResponse(std::move(response));
|
||||
}
|
||||
|
||||
@@ -60,9 +60,9 @@ class CefTestServerConnectionImpl : public CefTestServerConnection {
|
||||
const HeaderMap& extra_headers) override {
|
||||
auto response = std::make_unique<BasicHttpResponse>();
|
||||
response->set_code(static_cast<net::HttpStatusCode>(response_code));
|
||||
response->set_content_type(base::StringPiece(content_type.ToString()));
|
||||
response->set_content_type(std::string_view(content_type.ToString()));
|
||||
response->set_content(
|
||||
base::StringPiece(reinterpret_cast<const char*>(data), data_size));
|
||||
std::string_view(reinterpret_cast<const char*>(data), data_size));
|
||||
for (const auto& [key, value] : extra_headers) {
|
||||
response->AddCustomHeader(key.ToString(), value.ToString());
|
||||
}
|
||||
|
@@ -299,6 +299,7 @@
|
||||
#include "base/logging.h"
|
||||
#include "base/values.h"
|
||||
#include "ui/gfx/color_palette.h"
|
||||
#include "ui/views/accessibility/view_accessibility.h"
|
||||
#include "ui/views/background.h"
|
||||
#include "ui/views/border.h"
|
||||
#include "ui/views/view.h"
|
||||
@@ -667,7 +668,7 @@ CEF_VIEW_IMPL_T bool CEF_VIEW_IMPL_D::IsFocusable() {
|
||||
|
||||
CEF_VIEW_IMPL_T bool CEF_VIEW_IMPL_D::IsAccessibilityFocusable() {
|
||||
CEF_REQUIRE_VALID_RETURN(false);
|
||||
return root_view()->IsAccessibilityFocusable();
|
||||
return root_view()->GetViewAccessibility().IsAccessibilityFocusable();
|
||||
}
|
||||
|
||||
CEF_VIEW_IMPL_T void CEF_VIEW_IMPL_D::RequestFocus() {
|
||||
|
Reference in New Issue
Block a user