chore: bump chromium to f30828899e4cd7161f6dc6507023f (master) (#20824)
* chore: bump chromium in DEPS to 0476932294da8809a19189b9f54cee11d50cc512 * update chromium patches (#20838) * chore: bump chromium in DEPS to 838863f5ec9e8a12132a10bb47be8382ad9756a7 * IsRendererTransferNeededForNavigation went away1867031
* [arraybuffer] Move the ArrayBuffer implementation from wtf to core1875731
* URLLoaderRequest new mojo types * context menu enums moved around1872004
1876088
1866520
* chore: bump chromium in DEPS to dc9525d251bf30828899e4cd7161f6dc6507023f * update chromium patches * [WIP] Convert network hints IPC to Mojo1881967
* jumbo build is no longer supported1881967
* fix disable-color-correct-rendering * [FIXME] fix printing patch compiles but prob doesn't work * explicitly include ax_enums1759821
* fixup! [WIP] Convert network hints IPC to Mojo * fix base::span * fix AsarURLLoader to not double-std::move * fix debug build * fix msstl patch * lint * more fix msstl * mooooore fix msstl * fix compile * update backport_fix_msstl_compat_in_ui_events.patch * update msstl compat patch * don't try to build chrome's prefetch predictor * build: fix compilation on windows * Fixup patches for MAS build * Free up disk space for mac debug builds * fix: apply custom site instance only for main frame * Fixup from rebase * Try not generating symbols for mac debug builds * Remove double entry of patch * FIx compile errors * Trigger CI * Set symbol_level to 1 for mac debug builds
This commit is contained in:
parent
f18fca0729
commit
9a198e8ef4
60 changed files with 759 additions and 686 deletions
|
@ -77,6 +77,23 @@
|
|||
using content::BrowserThread;
|
||||
using content::StoragePartition;
|
||||
|
||||
namespace predictors {
|
||||
// NOTE(nornagon): this is copied from
|
||||
// //chrome/browser/predictors/resource_prefetch_predictor.cc we don't need
|
||||
// anything in that file other than this constructor. Without it we get a link
|
||||
// error. Probably upstream the constructor should be moved to
|
||||
// preconnect_manager.cc.
|
||||
PreconnectRequest::PreconnectRequest(
|
||||
const GURL& origin,
|
||||
int num_sockets,
|
||||
const net::NetworkIsolationKey& network_isolation_key)
|
||||
: origin(origin),
|
||||
num_sockets(num_sockets),
|
||||
network_isolation_key(network_isolation_key) {
|
||||
DCHECK_GE(num_sockets, 0);
|
||||
}
|
||||
} // namespace predictors
|
||||
|
||||
namespace {
|
||||
|
||||
struct ClearStorageDataOptions {
|
||||
|
|
|
@ -1845,10 +1845,7 @@ void WebContents::Print(gin_helper::Arguments* args) {
|
|||
auto* rfh = focused_frame && focused_frame->HasSelection()
|
||||
? focused_frame
|
||||
: web_contents()->GetMainFrame();
|
||||
print_view_manager->PrintNow(rfh,
|
||||
std::make_unique<PrintMsg_PrintPages>(
|
||||
rfh->GetRoutingID(), silent, settings),
|
||||
std::move(callback));
|
||||
print_view_manager->PrintNow(rfh, std::move(callback));
|
||||
}
|
||||
|
||||
std::vector<printing::PrinterBasicInfo> WebContents::GetPrinterList() {
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "chrome/browser/browser_process.h"
|
||||
#include "chrome/common/chrome_version.h"
|
||||
#include "components/net_log/chrome_net_log.h"
|
||||
#include "components/network_hints/common/network_hints.mojom.h"
|
||||
#include "content/public/browser/browser_ppapi_host.h"
|
||||
#include "content/public/browser/browser_task_traits.h"
|
||||
#include "content/public/browser/client_certificate_delegate.h"
|
||||
|
@ -69,9 +70,9 @@
|
|||
#include "shell/browser/net/network_context_service_factory.h"
|
||||
#include "shell/browser/net/proxying_url_loader_factory.h"
|
||||
#include "shell/browser/net/system_network_context_manager.h"
|
||||
#include "shell/browser/network_hints_handler_impl.h"
|
||||
#include "shell/browser/notifications/notification_presenter.h"
|
||||
#include "shell/browser/notifications/platform_notification_service.h"
|
||||
#include "shell/browser/renderer_host/electron_render_message_filter.h"
|
||||
#include "shell/browser/session_preferences.h"
|
||||
#include "shell/browser/ui/devtools_manager_delegate.h"
|
||||
#include "shell/browser/web_contents_permission_helper.h"
|
||||
|
@ -368,8 +369,6 @@ void AtomBrowserClient::RenderProcessWillLaunch(
|
|||
true /* default value */);
|
||||
}
|
||||
|
||||
host->AddFilter(new ElectronRenderMessageFilter(host->GetBrowserContext()));
|
||||
|
||||
AddProcessPreferences(host->GetID(), prefs);
|
||||
// ensure the ProcessPreferences is removed later
|
||||
host->AddObserver(this);
|
||||
|
@ -763,18 +762,6 @@ network::mojom::NetworkContext* AtomBrowserClient::GetSystemNetworkContext() {
|
|||
return g_browser_process->system_network_context_manager()->GetContext();
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_BUILTIN_SPELLCHECKER)
|
||||
void AtomBrowserClient::BindHostReceiverForRenderer(
|
||||
content::RenderProcessHost* render_process_host,
|
||||
mojo::GenericPendingReceiver receiver) {
|
||||
if (auto host_receiver = receiver.As<spellcheck::mojom::SpellCheckHost>()) {
|
||||
SpellCheckHostChromeImpl::Create(render_process_host->GetID(),
|
||||
std::move(host_receiver));
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
base::Optional<service_manager::Manifest>
|
||||
AtomBrowserClient::GetServiceManifestOverlay(base::StringPiece name) {
|
||||
if (name == content::mojom::kBrowserServiceName)
|
||||
|
@ -1098,4 +1085,23 @@ bool AtomBrowserClient::ShouldEnableStrictSiteIsolation() {
|
|||
return true;
|
||||
}
|
||||
|
||||
void AtomBrowserClient::BindHostReceiverForRenderer(
|
||||
content::RenderProcessHost* render_process_host,
|
||||
mojo::GenericPendingReceiver receiver) {
|
||||
if (auto host_receiver =
|
||||
receiver.As<network_hints::mojom::NetworkHintsHandler>()) {
|
||||
NetworkHintsHandlerImpl::Create(render_process_host->GetID(),
|
||||
std::move(host_receiver));
|
||||
return;
|
||||
}
|
||||
|
||||
#if BUILDFLAG(ENABLE_BUILTIN_SPELLCHECKER)
|
||||
if (auto host_receiver = receiver.As<spellcheck::mojom::SpellCheckHost>()) {
|
||||
SpellCheckHostChromeImpl::Create(render_process_host->GetID(),
|
||||
std::move(host_receiver));
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
} // namespace electron
|
||||
|
|
|
@ -63,9 +63,10 @@ class AtomBrowserClient : public content::ContentBrowserClient,
|
|||
// content::ContentBrowserClient:
|
||||
std::string GetApplicationLocale() override;
|
||||
base::FilePath GetFontLookupTableCacheDir() override;
|
||||
|
||||
// content::ContentBrowserClient:
|
||||
bool ShouldEnableStrictSiteIsolation() override;
|
||||
void BindHostReceiverForRenderer(
|
||||
content::RenderProcessHost* render_process_host,
|
||||
mojo::GenericPendingReceiver receiver) override;
|
||||
|
||||
std::string GetUserAgent() override;
|
||||
void SetUserAgent(const std::string& user_agent);
|
||||
|
@ -149,11 +150,6 @@ class AtomBrowserClient : public content::ContentBrowserClient,
|
|||
bool in_memory,
|
||||
const base::FilePath& relative_partition_path) override;
|
||||
network::mojom::NetworkContext* GetSystemNetworkContext() override;
|
||||
#if BUILDFLAG(ENABLE_BUILTIN_SPELLCHECKER)
|
||||
void BindHostReceiverForRenderer(
|
||||
content::RenderProcessHost* render_process_host,
|
||||
mojo::GenericPendingReceiver receiver) override;
|
||||
#endif
|
||||
base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
|
||||
base::StringPiece name) override;
|
||||
content::MediaObserver* GetMediaObserver() override;
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include "base/strings/stringprintf.h"
|
||||
#include "base/task/post_task.h"
|
||||
#include "content/public/browser/file_url_loader.h"
|
||||
#include "mojo/public/cpp/bindings/receiver.h"
|
||||
#include "mojo/public/cpp/bindings/strong_binding.h"
|
||||
#include "mojo/public/cpp/system/data_pipe_producer.h"
|
||||
#include "mojo/public/cpp/system/file_data_source.h"
|
||||
|
@ -79,20 +80,17 @@ class AsarURLLoader : public network::mojom::URLLoader {
|
|||
void ResumeReadingBodyFromNet() override {}
|
||||
|
||||
private:
|
||||
AsarURLLoader() : binding_(this) {}
|
||||
AsarURLLoader() {}
|
||||
~AsarURLLoader() override = default;
|
||||
|
||||
void Start(const network::ResourceRequest& request,
|
||||
network::mojom::URLLoaderRequest loader,
|
||||
mojo::PendingReceiver<network::mojom::URLLoader> loader,
|
||||
network::mojom::URLLoaderClientPtrInfo client_info,
|
||||
scoped_refptr<net::HttpResponseHeaders> extra_response_headers) {
|
||||
network::ResourceResponseHead head;
|
||||
head.request_start = base::TimeTicks::Now();
|
||||
head.response_start = base::TimeTicks::Now();
|
||||
head.headers = extra_response_headers;
|
||||
binding_.Bind(std::move(loader));
|
||||
binding_.set_connection_error_handler(base::BindOnce(
|
||||
&AsarURLLoader::OnConnectionError, base::Unretained(this)));
|
||||
|
||||
client_.Bind(std::move(client_info));
|
||||
|
||||
|
@ -112,6 +110,10 @@ class AsarURLLoader : public network::mojom::URLLoader {
|
|||
return;
|
||||
}
|
||||
|
||||
receiver_.Bind(std::move(loader));
|
||||
receiver_.set_disconnect_handler(base::BindOnce(
|
||||
&AsarURLLoader::OnConnectionError, base::Unretained(this)));
|
||||
|
||||
// Parse asar archive.
|
||||
std::shared_ptr<Archive> archive = GetOrCreateAsarArchive(asar_path);
|
||||
Archive::FileInfo info;
|
||||
|
@ -245,7 +247,7 @@ class AsarURLLoader : public network::mojom::URLLoader {
|
|||
}
|
||||
|
||||
void OnConnectionError() {
|
||||
binding_.Close();
|
||||
receiver_.reset();
|
||||
MaybeDeleteSelf();
|
||||
}
|
||||
|
||||
|
@ -256,7 +258,7 @@ class AsarURLLoader : public network::mojom::URLLoader {
|
|||
}
|
||||
|
||||
void MaybeDeleteSelf() {
|
||||
if (!binding_.is_bound() && !client_.is_bound())
|
||||
if (!receiver_.is_bound() && !client_.is_bound())
|
||||
delete this;
|
||||
}
|
||||
|
||||
|
@ -279,7 +281,7 @@ class AsarURLLoader : public network::mojom::URLLoader {
|
|||
}
|
||||
|
||||
std::unique_ptr<mojo::DataPipeProducer> data_producer_;
|
||||
mojo::Binding<network::mojom::URLLoader> binding_;
|
||||
mojo::Receiver<network::mojom::URLLoader> receiver_{this};
|
||||
network::mojom::URLLoaderClientPtr client_;
|
||||
|
||||
// In case of successful loads, this holds the total number of bytes written
|
||||
|
|
|
@ -168,7 +168,7 @@ AtomURLLoaderFactory::AtomURLLoaderFactory(ProtocolType type,
|
|||
AtomURLLoaderFactory::~AtomURLLoaderFactory() = default;
|
||||
|
||||
void AtomURLLoaderFactory::CreateLoaderAndStart(
|
||||
network::mojom::URLLoaderRequest loader,
|
||||
mojo::PendingReceiver<network::mojom::URLLoader> loader,
|
||||
int32_t routing_id,
|
||||
int32_t request_id,
|
||||
uint32_t options,
|
||||
|
@ -190,7 +190,7 @@ void AtomURLLoaderFactory::Clone(
|
|||
|
||||
// static
|
||||
void AtomURLLoaderFactory::StartLoading(
|
||||
network::mojom::URLLoaderRequest loader,
|
||||
mojo::PendingReceiver<network::mojom::URLLoader> loader,
|
||||
int32_t routing_id,
|
||||
int32_t request_id,
|
||||
uint32_t options,
|
||||
|
@ -337,7 +337,7 @@ void AtomURLLoaderFactory::StartLoadingString(
|
|||
|
||||
// static
|
||||
void AtomURLLoaderFactory::StartLoadingFile(
|
||||
network::mojom::URLLoaderRequest loader,
|
||||
mojo::PendingReceiver<network::mojom::URLLoader> loader,
|
||||
network::ResourceRequest request,
|
||||
network::mojom::URLLoaderClientPtr client,
|
||||
network::ResourceResponseHead head,
|
||||
|
@ -364,7 +364,7 @@ void AtomURLLoaderFactory::StartLoadingFile(
|
|||
|
||||
// static
|
||||
void AtomURLLoaderFactory::StartLoadingHttp(
|
||||
network::mojom::URLLoaderRequest loader,
|
||||
mojo::PendingReceiver<network::mojom::URLLoader> loader,
|
||||
const network::ResourceRequest& original_request,
|
||||
network::mojom::URLLoaderClientPtr client,
|
||||
const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
|
||||
|
@ -406,7 +406,7 @@ void AtomURLLoaderFactory::StartLoadingHttp(
|
|||
|
||||
// static
|
||||
void AtomURLLoaderFactory::StartLoadingStream(
|
||||
network::mojom::URLLoaderRequest loader,
|
||||
mojo::PendingReceiver<network::mojom::URLLoader> loader,
|
||||
network::mojom::URLLoaderClientPtr client,
|
||||
network::ResourceResponseHead head,
|
||||
const gin_helper::Dictionary& dict) {
|
||||
|
|
|
@ -43,19 +43,20 @@ class AtomURLLoaderFactory : public network::mojom::URLLoaderFactory {
|
|||
~AtomURLLoaderFactory() override;
|
||||
|
||||
// network::mojom::URLLoaderFactory:
|
||||
void CreateLoaderAndStart(network::mojom::URLLoaderRequest loader,
|
||||
int32_t routing_id,
|
||||
int32_t request_id,
|
||||
uint32_t options,
|
||||
const network::ResourceRequest& request,
|
||||
network::mojom::URLLoaderClientPtr client,
|
||||
const net::MutableNetworkTrafficAnnotationTag&
|
||||
traffic_annotation) override;
|
||||
void CreateLoaderAndStart(
|
||||
mojo::PendingReceiver<network::mojom::URLLoader> loader,
|
||||
int32_t routing_id,
|
||||
int32_t request_id,
|
||||
uint32_t options,
|
||||
const network::ResourceRequest& request,
|
||||
network::mojom::URLLoaderClientPtr client,
|
||||
const net::MutableNetworkTrafficAnnotationTag& traffic_annotation)
|
||||
override;
|
||||
void Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver)
|
||||
override;
|
||||
|
||||
static void StartLoading(
|
||||
network::mojom::URLLoaderRequest loader,
|
||||
mojo::PendingReceiver<network::mojom::URLLoader> loader,
|
||||
int32_t routing_id,
|
||||
int32_t request_id,
|
||||
uint32_t options,
|
||||
|
@ -75,23 +76,25 @@ class AtomURLLoaderFactory : public network::mojom::URLLoaderFactory {
|
|||
const gin_helper::Dictionary& dict,
|
||||
v8::Isolate* isolate,
|
||||
v8::Local<v8::Value> response);
|
||||
static void StartLoadingFile(network::mojom::URLLoaderRequest loader,
|
||||
network::ResourceRequest request,
|
||||
network::mojom::URLLoaderClientPtr client,
|
||||
network::ResourceResponseHead head,
|
||||
const gin_helper::Dictionary& dict,
|
||||
v8::Isolate* isolate,
|
||||
v8::Local<v8::Value> response);
|
||||
static void StartLoadingFile(
|
||||
mojo::PendingReceiver<network::mojom::URLLoader> loader,
|
||||
network::ResourceRequest request,
|
||||
network::mojom::URLLoaderClientPtr client,
|
||||
network::ResourceResponseHead head,
|
||||
const gin_helper::Dictionary& dict,
|
||||
v8::Isolate* isolate,
|
||||
v8::Local<v8::Value> response);
|
||||
static void StartLoadingHttp(
|
||||
network::mojom::URLLoaderRequest loader,
|
||||
mojo::PendingReceiver<network::mojom::URLLoader> loader,
|
||||
const network::ResourceRequest& original_request,
|
||||
network::mojom::URLLoaderClientPtr client,
|
||||
const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
|
||||
const gin_helper::Dictionary& dict);
|
||||
static void StartLoadingStream(network::mojom::URLLoaderRequest loader,
|
||||
network::mojom::URLLoaderClientPtr client,
|
||||
network::ResourceResponseHead head,
|
||||
const gin_helper::Dictionary& dict);
|
||||
static void StartLoadingStream(
|
||||
mojo::PendingReceiver<network::mojom::URLLoader> loader,
|
||||
network::mojom::URLLoaderClientPtr client,
|
||||
network::ResourceResponseHead head,
|
||||
const gin_helper::Dictionary& dict);
|
||||
|
||||
// Helper to send string as response.
|
||||
static void SendContents(network::mojom::URLLoaderClientPtr client,
|
||||
|
|
|
@ -682,7 +682,7 @@ ProxyingURLLoaderFactory::ProxyingURLLoaderFactory(
|
|||
ProxyingURLLoaderFactory::~ProxyingURLLoaderFactory() = default;
|
||||
|
||||
void ProxyingURLLoaderFactory::CreateLoaderAndStart(
|
||||
network::mojom::URLLoaderRequest loader,
|
||||
mojo::PendingReceiver<network::mojom::URLLoader> loader,
|
||||
int32_t routing_id,
|
||||
int32_t request_id,
|
||||
uint32_t options,
|
||||
|
|
|
@ -217,14 +217,15 @@ class ProxyingURLLoaderFactory
|
|||
~ProxyingURLLoaderFactory() override;
|
||||
|
||||
// network::mojom::URLLoaderFactory:
|
||||
void CreateLoaderAndStart(network::mojom::URLLoaderRequest loader,
|
||||
int32_t routing_id,
|
||||
int32_t request_id,
|
||||
uint32_t options,
|
||||
const network::ResourceRequest& request,
|
||||
network::mojom::URLLoaderClientPtr client,
|
||||
const net::MutableNetworkTrafficAnnotationTag&
|
||||
traffic_annotation) override;
|
||||
void CreateLoaderAndStart(
|
||||
mojo::PendingReceiver<network::mojom::URLLoader> loader,
|
||||
int32_t routing_id,
|
||||
int32_t request_id,
|
||||
uint32_t options,
|
||||
const network::ResourceRequest& request,
|
||||
network::mojom::URLLoaderClientPtr client,
|
||||
const net::MutableNetworkTrafficAnnotationTag& traffic_annotation)
|
||||
override;
|
||||
void Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory>
|
||||
loader_receiver) override;
|
||||
|
||||
|
|
|
@ -69,14 +69,15 @@ class SystemNetworkContextManager::URLLoaderFactoryForSystem
|
|||
}
|
||||
|
||||
// mojom::URLLoaderFactory implementation:
|
||||
void CreateLoaderAndStart(network::mojom::URLLoaderRequest request,
|
||||
int32_t routing_id,
|
||||
int32_t request_id,
|
||||
uint32_t options,
|
||||
const network::ResourceRequest& url_request,
|
||||
network::mojom::URLLoaderClientPtr client,
|
||||
const net::MutableNetworkTrafficAnnotationTag&
|
||||
traffic_annotation) override {
|
||||
void CreateLoaderAndStart(
|
||||
mojo::PendingReceiver<network::mojom::URLLoader> request,
|
||||
int32_t routing_id,
|
||||
int32_t request_id,
|
||||
uint32_t options,
|
||||
const network::ResourceRequest& url_request,
|
||||
network::mojom::URLLoaderClientPtr client,
|
||||
const net::MutableNetworkTrafficAnnotationTag& traffic_annotation)
|
||||
override {
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
if (!manager_)
|
||||
return;
|
||||
|
|
48
shell/browser/network_hints_handler_impl.cc
Normal file
48
shell/browser/network_hints_handler_impl.cc
Normal file
|
@ -0,0 +1,48 @@
|
|||
// Copyright (c) 2019 Slack Technologies, Inc.
|
||||
// Use of this source code is governed by the MIT license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "shell/browser/network_hints_handler_impl.h"
|
||||
|
||||
#include <utility>
|
||||
|
||||
#include "content/public/browser/browser_context.h"
|
||||
#include "content/public/browser/browser_thread.h"
|
||||
#include "content/public/browser/render_frame_host.h"
|
||||
#include "content/public/browser/render_process_host.h"
|
||||
#include "mojo/public/cpp/bindings/self_owned_receiver.h"
|
||||
#include "shell/browser/api/atom_api_session.h"
|
||||
#include "shell/browser/atom_browser_context.h"
|
||||
#include "shell/common/gin_converters/gurl_converter.h"
|
||||
#include "v8/include/v8.h"
|
||||
|
||||
NetworkHintsHandlerImpl::NetworkHintsHandlerImpl(int32_t render_process_id)
|
||||
: network_hints::SimpleNetworkHintsHandlerImpl(render_process_id),
|
||||
render_process_id_(render_process_id) {}
|
||||
|
||||
NetworkHintsHandlerImpl::~NetworkHintsHandlerImpl() = default;
|
||||
|
||||
void NetworkHintsHandlerImpl::Preconnect(int32_t render_frame_id,
|
||||
const GURL& url,
|
||||
bool allow_credentials) {
|
||||
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||
|
||||
content::RenderFrameHost* render_frame_host =
|
||||
content::RenderFrameHost::FromID(render_process_id_, render_frame_id);
|
||||
content::BrowserContext* browser_context =
|
||||
render_frame_host->GetProcess()->GetBrowserContext();
|
||||
auto* session = electron::api::Session::FromWrappedClass(
|
||||
v8::Isolate::GetCurrent(),
|
||||
static_cast<electron::AtomBrowserContext*>(browser_context));
|
||||
if (session) {
|
||||
session->Emit("preconnect", url, allow_credentials);
|
||||
}
|
||||
}
|
||||
|
||||
void NetworkHintsHandlerImpl::Create(
|
||||
int32_t render_process_id,
|
||||
mojo::PendingReceiver<network_hints::mojom::NetworkHintsHandler> receiver) {
|
||||
mojo::MakeSelfOwnedReceiver(
|
||||
base::WrapUnique(new NetworkHintsHandlerImpl(render_process_id)),
|
||||
std::move(receiver));
|
||||
}
|
31
shell/browser/network_hints_handler_impl.h
Normal file
31
shell/browser/network_hints_handler_impl.h
Normal file
|
@ -0,0 +1,31 @@
|
|||
// Copyright (c) 2019 Slack Technologies, Inc.
|
||||
// Use of this source code is governed by the MIT license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef SHELL_BROWSER_NETWORK_HINTS_HANDLER_IMPL_H_
|
||||
#define SHELL_BROWSER_NETWORK_HINTS_HANDLER_IMPL_H_
|
||||
|
||||
#include "components/network_hints/browser/simple_network_hints_handler_impl.h"
|
||||
|
||||
class NetworkHintsHandlerImpl
|
||||
: public network_hints::SimpleNetworkHintsHandlerImpl {
|
||||
public:
|
||||
~NetworkHintsHandlerImpl() override;
|
||||
|
||||
static void Create(
|
||||
int32_t render_process_id,
|
||||
mojo::PendingReceiver<network_hints::mojom::NetworkHintsHandler>
|
||||
receiver);
|
||||
|
||||
// network_hints::mojom::NetworkHintsHandler:
|
||||
void Preconnect(int32_t render_frame_id,
|
||||
const GURL& url,
|
||||
bool allow_credentials) override;
|
||||
|
||||
private:
|
||||
explicit NetworkHintsHandlerImpl(int32_t render_process_id);
|
||||
|
||||
int32_t render_process_id_;
|
||||
};
|
||||
|
||||
#endif // SHELL_BROWSER_NETWORK_HINTS_HANDLER_IMPL_H_
|
|
@ -1,94 +0,0 @@
|
|||
// Copyright (c) 2019 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "shell/browser/renderer_host/electron_render_message_filter.h"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include "base/bind.h"
|
||||
#include "base/bind_helpers.h"
|
||||
#include "base/logging.h"
|
||||
#include "base/stl_util.h"
|
||||
#include "chrome/browser/predictors/preconnect_manager.h"
|
||||
#include "components/network_hints/common/network_hints_common.h"
|
||||
#include "components/network_hints/common/network_hints_messages.h"
|
||||
#include "content/public/browser/browser_context.h"
|
||||
#include "shell/browser/api/atom_api_session.h"
|
||||
#include "shell/browser/atom_browser_context.h"
|
||||
#include "shell/common/gin_converters/gurl_converter.h"
|
||||
|
||||
using content::BrowserThread;
|
||||
|
||||
namespace {
|
||||
|
||||
const uint32_t kRenderFilteredMessageClasses[] = {
|
||||
NetworkHintsMsgStart,
|
||||
};
|
||||
|
||||
void EmitPreconnect(content::BrowserContext* browser_context,
|
||||
const GURL& url,
|
||||
bool allow_credentials) {
|
||||
auto* session = electron::api::Session::FromWrappedClass(
|
||||
v8::Isolate::GetCurrent(),
|
||||
static_cast<electron::AtomBrowserContext*>(browser_context));
|
||||
if (session) {
|
||||
session->Emit("preconnect", url, allow_credentials);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
ElectronRenderMessageFilter::ElectronRenderMessageFilter(
|
||||
content::BrowserContext* browser_context)
|
||||
: BrowserMessageFilter(kRenderFilteredMessageClasses,
|
||||
base::size(kRenderFilteredMessageClasses)),
|
||||
browser_context_(browser_context) {}
|
||||
|
||||
ElectronRenderMessageFilter::~ElectronRenderMessageFilter() = default;
|
||||
|
||||
bool ElectronRenderMessageFilter::OnMessageReceived(
|
||||
const IPC::Message& message) {
|
||||
bool handled = true;
|
||||
IPC_BEGIN_MESSAGE_MAP(ElectronRenderMessageFilter, message)
|
||||
IPC_MESSAGE_HANDLER(NetworkHintsMsg_Preconnect, OnPreconnect)
|
||||
IPC_MESSAGE_UNHANDLED(handled = false)
|
||||
IPC_END_MESSAGE_MAP()
|
||||
|
||||
return handled;
|
||||
}
|
||||
|
||||
void ElectronRenderMessageFilter::OnPreconnect(int render_frame_id,
|
||||
const GURL& url,
|
||||
bool allow_credentials,
|
||||
int count) {
|
||||
if (count < 1) {
|
||||
LOG(WARNING) << "NetworkHintsMsg_Preconnect IPC with invalid count: "
|
||||
<< count;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!url.is_valid() || !url.has_host() || !url.has_scheme() ||
|
||||
!url.SchemeIsHTTPOrHTTPS()) {
|
||||
return;
|
||||
}
|
||||
|
||||
base::PostTask(FROM_HERE, {BrowserThread::UI},
|
||||
base::BindOnce(&EmitPreconnect, browser_context_, url,
|
||||
allow_credentials));
|
||||
}
|
||||
|
||||
namespace predictors {
|
||||
|
||||
PreconnectRequest::PreconnectRequest(
|
||||
const GURL& origin,
|
||||
int num_sockets,
|
||||
const net::NetworkIsolationKey& network_isolation_key)
|
||||
: origin(origin), num_sockets(num_sockets) {
|
||||
DCHECK_GE(num_sockets, 0);
|
||||
}
|
||||
|
||||
} // namespace predictors
|
|
@ -1,46 +0,0 @@
|
|||
// Copyright (c) 2019 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef SHELL_BROWSER_RENDERER_HOST_ELECTRON_RENDER_MESSAGE_FILTER_H_
|
||||
#define SHELL_BROWSER_RENDERER_HOST_ELECTRON_RENDER_MESSAGE_FILTER_H_
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "content/public/browser/browser_message_filter.h"
|
||||
|
||||
class GURL;
|
||||
|
||||
namespace content {
|
||||
class BrowserContext;
|
||||
}
|
||||
|
||||
namespace predictors {
|
||||
class PreconnectManager;
|
||||
}
|
||||
|
||||
// This class filters out incoming Chrome-specific IPC messages for the renderer
|
||||
// process on the IPC thread.
|
||||
class ElectronRenderMessageFilter : public content::BrowserMessageFilter {
|
||||
public:
|
||||
explicit ElectronRenderMessageFilter(
|
||||
content::BrowserContext* browser_context);
|
||||
|
||||
// content::BrowserMessageFilter methods:
|
||||
bool OnMessageReceived(const IPC::Message& message) override;
|
||||
|
||||
private:
|
||||
~ElectronRenderMessageFilter() override;
|
||||
|
||||
void OnPreconnect(int render_frame_id,
|
||||
const GURL& url,
|
||||
bool allow_credentials,
|
||||
int count);
|
||||
|
||||
content::BrowserContext* browser_context_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(ElectronRenderMessageFilter);
|
||||
};
|
||||
|
||||
#endif // SHELL_BROWSER_RENDERER_HOST_ELECTRON_RENDER_MESSAGE_FILTER_H_
|
|
@ -11,6 +11,7 @@
|
|||
#include "base/i18n/rtl.h"
|
||||
#include "cc/paint/skia_paint_canvas.h"
|
||||
#include "content/public/browser/render_view_host.h"
|
||||
#include "ui/accessibility/ax_enums.mojom.h"
|
||||
#include "ui/events/keycodes/keyboard_codes.h"
|
||||
#include "ui/gfx/canvas.h"
|
||||
#include "ui/gfx/geometry/point.h"
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
#include "base/strings/string_util.h"
|
||||
#include "base/strings/utf_string_conversions.h"
|
||||
#include "ui/accessibility/ax_enums.mojom.h"
|
||||
#include "ui/gfx/canvas.h"
|
||||
#include "ui/gfx/color_utils.h"
|
||||
#include "ui/gfx/text_utils.h"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue