chore: bump chromium to 279aeeec3c9fe2237bc31f776f269 (master) (#21521)

* chore: bump chromium in DEPS to 46d2d82e84d73806da623c5333dae4dd218172df

* chore: bump chromium in DEPS to cbafe74731a5d1e59844ca59e0fc28f4a5f80a33

* chore: bump chromium in DEPS to d5dcd6b5cc76f4e1732083d775cdd7b533f0abe9

* Update patches

* update for lint

* Fix compilation errors

* chore: bump chromium in DEPS to 1c19360fdaaf65d4ed006736c7f9804104095990

* Replace removed constant

* chore: bump chromium in DEPS to 3b6639f5da26c1772c5d4f3ba634aca65df75fec

* chore: bump chromium in DEPS to cc6b1b930d4b5eca06701820dac54fa0f41e8999

* chore: bump chromium in DEPS to 7d1445641ad1032c67f731ba6ff7798f29349ade

* chore: bump chromium in DEPS to 6f7e5e79cefe982ad84a88927565a88db2e592be

* chore: bump chromium in DEPS to bfb25dafff19cb41bf9781331d19ef0be819d1e4

* chore: bump chromium in DEPS to 1a8196b39f0e0cdc4935fd122fff5625d5fab06e

* chore: bump chromium in DEPS to 9a03d8d2bb38ad8c0cbb9550ca81b2f94ff60c15

* chore: bump chromium in DEPS to 4c67f3505dab2d5457adb418cd3270a4f3236fd0

* chore: bump chromium in DEPS to 652394e7626fc1ae895a53fb34c64070494e648e

* chore: bump chromium in DEPS to 07653652c58cc019af7f833bd63eb0c2eceaab5e

* chore: bump chromium in DEPS to 451a1c5fec1fb073a5bae12a033bb342c72c905f

* chore: bump chromium in DEPS to 86cdba00e233899a232868b412b333d08db63478

* chore: bump chromium in DEPS to 7c322faad1aee8abef2330d74aabf09ecf8c11af

* Update patches

* chore: bump chromium in DEPS to d0044fae7efc29eb201cfdd5fdbed77d48aba212

* Replace IsProcessingUserGesture with HasTransientUserActivation

4baa9a6e85

* Fix 10.15 sdk build

0eaa6db358

* Remove CancelPrerender

5eb3329719

* Remove no longer used WebFloatPoint

43ab96ce6b

* Use base::span<const uint8_t> for devtools messages in content/public

21e19401af

* Update renamed header files

* TODO: update with upstream changes

This code needs to be updated to handle the changes made in:
19be6547a9

* chore: bump chromium in DEPS to 82e5a2c6bd33c2e53634a09fbcbc9fcac1e7ff93

* chore: bump chromium in DEPS to 91f877cadd2995201c276e952b3bf2c60b226c64

* chore: bump chromium in DEPS to 43fcd2ab2677a06d38246b42761dc5b40cf87177

* chore: bump chromium in DEPS to e30957dcb710c0977a7ff95b8d3cf65843df12ca

* chore: bump chromium in DEPS to 6a8335a56db12aae2fd06296f82579d804d92217

* chore: bump chromium in DEPS to a4a436cbc28ace88d71752f8f479e59559e54e46

* chore: bump chromium in DEPS to 982bbd0e4b2e1d57d515f384f6483ffc0d7073ad

* chore: bump chromium in DEPS to 92bb7a99f84ffcdf41d4edca57e90b1f0c7c6c8b

* update patches

* add checkout_google_benchmark gclient var

* FIXME: workaround grit bug

* chore: bump chromium in DEPS to d3623fc53615739e6b59340a5d349e4b397cb7c5

* update patches

* Remove color arg from DidChangeThemeColor().

1982623

* update CreateFileURLLoader with new suffix

CL: 1981414

* add node patch for removal of task API in v8

CL: 1868620

* add disable_secure_dns param for WillCreateURLLoaderFactory

CL: 1888099

* switch to mojo-ified PrintMsg_PrintPreview

CL: 1972307

* chore: bump chromium in DEPS to e7a6d173632660b6aeb9806e9132c34a315331c2

* update missing chrome/browser/ssl:proto dependency after chrome removal

CL: 1986082

* chore: add libvulkan.so to the linux manifest

CL: 1973042

* revert DidChangeThemeColor ternary change due to templates

* match Chrome's mojo-ified implementation in geolocation_permission_context.cc

CL: 1963371

* add vulkan-1.dll to zips

2d6f74c6d4

* add bug link to fixme_grit_conflicts.patch

* Introduce device.mojom.DeviceService

1956277

* PDF Compositor rename to Print Compositor

1981135

* chore: bump chromium_version 00362ea584735b4acf4c5a0e1912d7987f8645ab

* chore: update patches

* Use a virtual base class to provide GetWidget().

1996948

* [base] Remove usage of base::CurrentThread

1962019

* chore: gn format

* Revert "ci: Use Visual Studio Build Tools instead of VS Studio (#21771)"

This reverts commit 9c1310dadc.

* fix: trigger resize when iframe requests fullscreen

* fix: Locking scheme registry is not necessary

1973198

* chore: bump chromium f707f1d6d428f84cf14b64bc2ca74372e25c6ce7

* chore: update patches

* ui/base/clipboard: Remove redundant ANSI format functions

1992015

* [base] Prepare //chrome for Value::GetList() switch

1962255

Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
Co-authored-by: loc <andy@slack-corp.com>
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
Co-authored-by: Robo <hop2deep@gmail.com>
This commit is contained in:
Electron Bot 2020-01-17 10:41:52 -08:00 committed by Robo
parent 5c6f9a6947
commit bf6e4b1247
115 changed files with 646 additions and 738 deletions

View file

@ -38,14 +38,17 @@ void Debugger::AgentHostClosed(DevToolsAgentHost* agent_host) {
}
void Debugger::DispatchProtocolMessage(DevToolsAgentHost* agent_host,
const std::string& message) {
base::span<const uint8_t> message) {
DCHECK(agent_host == agent_host_);
v8::Locker locker(isolate());
v8::HandleScope handle_scope(isolate());
base::StringPiece message_str(reinterpret_cast<const char*>(message.data()),
message.size());
std::unique_ptr<base::Value> parsed_message =
base::JSONReader::ReadDeprecated(message);
base::JSONReader::ReadDeprecated(message_str,
base::JSON_REPLACE_INVALID_CHARACTERS);
if (!parsed_message || !parsed_message->is_dict())
return;
base::DictionaryValue* dict =
@ -157,7 +160,8 @@ v8::Local<v8::Promise> Debugger::SendCommand(gin_helper::Arguments* args) {
std::string json_args;
base::JSONWriter::Write(request, &json_args);
agent_host_->DispatchProtocolMessage(this, json_args);
agent_host_->DispatchProtocolMessage(
this, base::as_bytes(base::make_span(json_args)));
return handle;
}

View file

@ -43,7 +43,7 @@ class Debugger : public gin_helper::TrackableObject<Debugger>,
// content::DevToolsAgentHostClient:
void AgentHostClosed(content::DevToolsAgentHost* agent_host) override;
void DispatchProtocolMessage(content::DevToolsAgentHost* agent_host,
const std::string& message) override;
base::span<const uint8_t> message) override;
// content::WebContentsObserver:
void RenderFrameHostChanged(content::RenderFrameHost* old_rfh,

View file

@ -9,10 +9,9 @@
#include "base/bind_helpers.h"
#include "base/task/post_task.h"
#include "base/threading/thread_task_runner_handle.h"
#include "content/public/browser/system_connector.h"
#include "content/public/browser/device_service.h"
#include "gin/dictionary.h"
#include "gin/function_template.h"
#include "services/device/public/mojom/constants.mojom.h"
#include "services/device/public/mojom/wake_lock_provider.mojom.h"
#include "services/service_manager/public/cpp/connector.h"
#include "shell/common/node_includes.h"
@ -88,9 +87,7 @@ void PowerSaveBlocker::UpdatePowerSaveBlocker() {
device::mojom::WakeLock* PowerSaveBlocker::GetWakeLock() {
if (!wake_lock_) {
mojo::Remote<device::mojom::WakeLockProvider> wake_lock_provider;
DCHECK(content::GetSystemConnector());
content::GetSystemConnector()->Connect(
device::mojom::kServiceName,
content::GetDeviceService().BindWakeLockProvider(
wake_lock_provider.BindNewPipeAndPassReceiver());
wake_lock_provider->GetWakeLockWithoutContext(

View file

@ -85,11 +85,11 @@
#include "shell/common/node_includes.h"
#include "shell/common/options_switches.h"
#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
#include "third_party/blink/public/common/input/web_input_event.h"
#include "third_party/blink/public/common/page/page_zoom.h"
#include "third_party/blink/public/mojom/frame/find_in_page.mojom.h"
#include "third_party/blink/public/mojom/frame/fullscreen.mojom.h"
#include "third_party/blink/public/platform/web_cursor_info.h"
#include "third_party/blink/public/platform/web_input_event.h"
#include "ui/display/screen.h"
#include "ui/events/base_event_utils.h"
@ -939,7 +939,8 @@ void WebContents::MediaStoppedPlaying(
Emit("media-paused");
}
void WebContents::DidChangeThemeColor(base::Optional<SkColor> theme_color) {
void WebContents::DidChangeThemeColor() {
auto theme_color = web_contents()->GetThemeColor();
if (theme_color) {
Emit("did-change-theme-color", electron::ToRGBHex(theme_color.value()));
} else {

View file

@ -468,7 +468,7 @@ class WebContents : public gin_helper::TrackableObject<WebContents>,
const MediaPlayerInfo& video_type,
const content::MediaPlayerId& id,
content::WebContentsObserver::MediaStoppedReason reason) override;
void DidChangeThemeColor(base::Optional<SkColor> theme_color) override;
void DidChangeThemeColor() override;
void OnInterfaceRequestFromFrame(
content::RenderFrameHost* render_frame_host,
const std::string& interface_name,

View file

@ -7,7 +7,6 @@
#include "content/browser/frame_host/frame_tree.h" // nogncheck
#include "content/browser/frame_host/frame_tree_node.h" // nogncheck
#include "content/browser/web_contents/web_contents_impl.h" // nogncheck
#include "content/public/browser/guest_mode.h"
#if BUILDFLAG(ENABLE_OSR)
#include "shell/browser/osr/osr_render_widget_host_view.h"
@ -24,7 +23,6 @@ namespace api {
void WebContents::DetachFromOuterFrame() {
// See detach_webview_frame.patch on how to detach.
DCHECK(content::GuestMode::IsCrossProcessFrameGuest(web_contents()));
int frame_tree_node_id =
static_cast<content::WebContentsImpl*>(web_contents())
->GetOuterDelegateFrameTreeNodeId();

View file

@ -116,7 +116,7 @@ v8::Local<v8::Value> HttpResponseHeadersToV8(
base::Value* values = response_headers.FindListKey(key);
if (!values)
values = response_headers.SetKey(key, base::ListValue());
values->GetList().emplace_back(value);
values->Append(value);
}
}
return gin::ConvertToV8(v8::Isolate::GetCurrent(), response_headers);

View file

@ -1080,6 +1080,7 @@ bool AtomBrowserClient::WillCreateURLLoaderFactory(
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient>*
header_client,
bool* bypass_redirect_checks,
bool* disable_secure_dns,
network::mojom::URLLoaderFactoryOverridePtr* factory_override) {
v8::Isolate* isolate = v8::Isolate::GetCurrent();
api::Protocol* protocol =

View file

@ -184,6 +184,7 @@ class AtomBrowserClient : public content::ContentBrowserClient,
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient>*
header_client,
bool* bypass_redirect_checks,
bool* disable_secure_dns,
network::mojom::URLLoaderFactoryOverridePtr* factory_override) override;
void OverrideURLLoaderFactoryParams(
content::BrowserContext* browser_context,

View file

@ -322,7 +322,7 @@ AtomBrowserContext::GetURLLoaderFactory() {
this, nullptr, -1,
content::ContentBrowserClient::URLLoaderFactoryType::kNavigation,
url::Origin(), base::nullopt, &factory_receiver, &header_client,
nullptr, nullptr);
nullptr, nullptr, nullptr);
network::mojom::URLLoaderFactoryParamsPtr params =
network::mojom::URLLoaderFactoryParams::New();

View file

@ -22,16 +22,14 @@
#include "chrome/browser/icon_manager.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/child_process_security_policy.h"
#include "content/public/browser/system_connector.h"
#include "content/public/browser/device_service.h"
#include "content/public/browser/web_ui_controller_factory.h"
#include "content/public/common/content_features.h"
#include "content/public/common/content_switches.h"
#include "content/public/common/result_codes.h"
#include "electron/buildflags/buildflags.h"
#include "media/base/localized_strings.h"
#include "services/device/public/mojom/constants.mojom.h"
#include "services/network/public/cpp/features.h"
#include "services/service_manager/public/cpp/connector.h"
#include "services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.h"
#include "shell/app/atom_main_delegate.h"
#include "shell/browser/api/atom_api_app.h"
@ -454,9 +452,6 @@ void AtomBrowserMainParts::PreMainMessageLoopRun() {
SpellcheckServiceFactory::GetInstance();
#endif
// url::Add*Scheme are not threadsafe, this helps prevent data races.
url::LockSchemeRegistries();
#if defined(USE_X11)
ui::TouchFactory::SetTouchDeviceListFromCommandLine();
#endif
@ -556,13 +551,10 @@ void AtomBrowserMainParts::PreMainMessageLoopStartCommon() {
device::mojom::GeolocationControl*
AtomBrowserMainParts::GetGeolocationControl() {
if (geolocation_control_)
return geolocation_control_.get();
auto receiver = geolocation_control_.BindNewPipeAndPassReceiver();
service_manager::Connector* connector = content::GetSystemConnector();
if (connector)
connector->Connect(device::mojom::kServiceName, std::move(receiver));
if (!geolocation_control_) {
content::GetDeviceService().BindGeolocationControl(
geolocation_control_.BindNewPipeAndPassReceiver());
}
return geolocation_control_.get();
}

View file

@ -347,6 +347,12 @@ void CommonWebContentsDelegate::EnterFullscreenModeForTab(
}
SetHtmlApiFullscreen(true);
owner_window_->NotifyWindowEnterHtmlFullScreen();
if (native_fullscreen_) {
// Explicitly trigger a view resize, as the size is not actually changing if
// the browser is fullscreened, too.
source->GetRenderViewHost()->GetWidget()->SynchronizeVisualProperties();
}
}
void CommonWebContentsDelegate::ExitFullscreenModeForTab(
@ -534,9 +540,7 @@ void CommonWebContentsDelegate::DevToolsIndexPath(
std::unique_ptr<base::Value> parsed_excluded_folders =
base::JSONReader::ReadDeprecated(excluded_folders_message);
if (parsed_excluded_folders && parsed_excluded_folders->is_list()) {
const std::vector<base::Value>& folder_paths =
parsed_excluded_folders->GetList();
for (const base::Value& folder_path : folder_paths) {
for (const base::Value& folder_path : parsed_excluded_folders->GetList()) {
if (folder_path.is_string())
excluded_folders.push_back(folder_path.GetString());
}

View file

@ -11,6 +11,7 @@
#include "base/callback.h"
#include "base/strings/string16.h"
#include "base/threading/sequenced_task_runner_handle.h"
#include "gin/arguments.h"
#include "gin/dictionary.h"
#include "shell/browser/api/atom_api_web_contents.h"
@ -36,8 +37,8 @@ LoginHandler::LoginHandler(
auth_required_callback_(std::move(auth_required_callback)) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
base::PostTask(
FROM_HERE, {base::CurrentThread()},
base::SequencedTaskRunnerHandle::Get()->PostTask(
FROM_HERE,
base::BindOnce(&LoginHandler::EmitEvent, weak_factory_.GetWeakPtr(),
auth_info, is_main_frame, url, response_headers,
first_auth_attempt));

View file

@ -33,8 +33,9 @@ static base::mac::ScopedObjCClassSwizzler* g_swizzle_imk_input_session;
// not have fatal OOM occur while this method executes, but it is better
// than crashing when using IME.
base::allocator::SetCallNewHandlerOnMallocFailure(false);
g_swizzle_imk_input_session->GetOriginalImplementation()(self, _cmd, range,
attributes, block);
g_swizzle_imk_input_session
->InvokeOriginal<void, NSRange, long long, void (^)(void)>(
self, _cmd, range, attributes, block);
base::allocator::SetCallNewHandlerOnMallocFailure(true);
}
@end

View file

@ -577,11 +577,7 @@ void NativeWindow::NotifyWindowMessage(UINT message,
}
#endif
views::Widget* NativeWindow::GetWidget() {
return widget();
}
const views::Widget* NativeWindow::GetWidget() const {
const views::Widget* NativeWindow::GetWidgetImpl() const {
return widget();
}

View file

@ -306,8 +306,7 @@ class NativeWindow : public base::SupportsUserData,
NativeWindow(const gin_helper::Dictionary& options, NativeWindow* parent);
// views::WidgetDelegate:
views::Widget* GetWidget() override;
const views::Widget* GetWidget() const override;
const views::Widget* GetWidgetImpl() const override;
base::string16 GetAccessibleWindowTitle() const override;
void set_content_view(views::View* view) { content_view_ = view; }

View file

@ -105,9 +105,9 @@ class AsarURLLoader : public network::mojom::URLLoader {
// Determine whether it is an asar file.
base::FilePath asar_path, relative_path;
if (!GetAsarArchivePath(path, &asar_path, &relative_path)) {
content::CreateFileURLLoader(request, std::move(loader),
std::move(client), nullptr, false,
extra_response_headers);
content::CreateFileURLLoaderBypassingSecurityChecks(
request, std::move(loader), std::move(client), nullptr, false,
extra_response_headers);
MaybeDeleteSelf();
return;
}

View file

@ -503,7 +503,7 @@ void ProxyingURLLoaderFactory::InProgressRequest::ContinueToResponseStarted(
redirect_info.status_code = override_headers_->response_code();
redirect_info.new_method = request_.method;
redirect_info.new_url = new_url;
redirect_info.new_site_for_cookies = new_url;
redirect_info.new_site_for_cookies = net::SiteForCookies::FromUrl(new_url);
// These will get re-bound if a new request is initiated by
// |FollowRedirect()|.
@ -575,7 +575,8 @@ void ProxyingURLLoaderFactory::InProgressRequest::
redirect_info.status_code = kInternalRedirectStatusCode;
redirect_info.new_method = request_.method;
redirect_info.new_url = redirect_url_;
redirect_info.new_site_for_cookies = redirect_url_;
redirect_info.new_site_for_cookies =
net::SiteForCookies::FromUrl(redirect_url_);
auto head = network::mojom::URLResponseHead::New();
std::string headers = base::StringPrintf(

View file

@ -32,7 +32,7 @@
#include "content/public/browser/gpu_data_manager.h"
#include "content/public/browser/render_process_host.h"
#include "media/base/video_frame.h"
#include "third_party/blink/public/platform/web_input_event.h"
#include "third_party/blink/public/common/input/web_input_event.h"
#include "third_party/skia/include/core/SkCanvas.h"
#include "ui/compositor/compositor.h"
#include "ui/compositor/layer.h"

View file

@ -18,12 +18,13 @@
#include "components/printing/browser/print_composite_client.h"
#include "components/printing/browser/print_manager_utils.h"
#include "components/printing/common/print_messages.h"
#include "components/services/pdf_compositor/public/cpp/pdf_service_mojo_types.h"
#include "components/services/print_compositor/public/cpp/print_service_mojo_types.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "shell/common/gin_helper/locker.h"
#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
#include "shell/common/node_includes.h"
@ -111,11 +112,11 @@ void PrintPreviewMessageHandler::OnMetafileReadyForPrinting(
void PrintPreviewMessageHandler::OnCompositePdfDocumentDone(
const PrintHostMsg_PreviewIds& ids,
printing::mojom::PdfCompositor::Status status,
printing::mojom::PrintCompositor::Status status,
base::ReadOnlySharedMemoryRegion region) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
if (status != printing::mojom::PdfCompositor::Status::kSuccess) {
if (status != printing::mojom::PrintCompositor::Status::kSuccess) {
DLOG(ERROR) << "Compositing pdf failed with error " << status;
RejectPromise(ids.request_id);
return;
@ -153,7 +154,10 @@ void PrintPreviewMessageHandler::PrintToPDF(
auto* rfh = focused_frame && focused_frame->HasSelection()
? focused_frame
: web_contents()->GetMainFrame();
rfh->Send(new PrintMsg_PrintPreview(rfh->GetRoutingID(), options));
if (!print_render_frame_.is_bound())
rfh->GetRemoteAssociatedInterfaces()->GetInterface(&print_render_frame_);
print_render_frame_->PrintPreview(options.Clone());
}
gin_helper::Promise<v8::Local<v8::Value>>

View file

@ -9,9 +9,11 @@
#include "base/memory/ref_counted_memory.h"
#include "base/memory/weak_ptr.h"
#include "components/services/pdf_compositor/public/mojom/pdf_compositor.mojom.h"
#include "components/printing/common/print.mojom.h"
#include "components/services/print_compositor/public/mojom/print_compositor.mojom.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h"
#include "mojo/public/cpp/bindings/associated_remote.h"
#include "shell/common/gin_helper/promise.h"
#include "v8/include/v8.h"
@ -48,9 +50,10 @@ class PrintPreviewMessageHandler
content::RenderFrameHost* render_frame_host,
const PrintHostMsg_DidPreviewDocument_Params& params,
const PrintHostMsg_PreviewIds& ids);
void OnCompositePdfDocumentDone(const PrintHostMsg_PreviewIds& ids,
printing::mojom::PdfCompositor::Status status,
base::ReadOnlySharedMemoryRegion region);
void OnCompositePdfDocumentDone(
const PrintHostMsg_PreviewIds& ids,
printing::mojom::PrintCompositor::Status status,
base::ReadOnlySharedMemoryRegion region);
void OnPrintPreviewFailed(int document_cookie,
const PrintHostMsg_PreviewIds& ids);
void OnPrintPreviewCancelled(int document_cookie,
@ -65,6 +68,8 @@ class PrintPreviewMessageHandler
using PromiseMap = std::map<int, gin_helper::Promise<v8::Local<v8::Value>>>;
PromiseMap promise_map_;
mojo::AssociatedRemote<printing::mojom::PrintRenderFrame> print_render_frame_;
base::WeakPtrFactory<PrintPreviewMessageHandler> weak_ptr_factory_;
WEB_CONTENTS_USER_DATA_KEY_DECL();

View file

@ -102,7 +102,7 @@ void DevToolsManagerDelegate::HandleCommand(
content::DevToolsAgentHost* agent_host,
content::DevToolsAgentHostClient* client,
const std::string& method,
const std::string& message,
base::span<const uint8_t> message,
NotHandledCallback callback) {
std::move(callback).Run(message);
}

View file

@ -26,7 +26,7 @@ class DevToolsManagerDelegate : public content::DevToolsManagerDelegate {
void HandleCommand(content::DevToolsAgentHost* agent_host,
content::DevToolsAgentHostClient* client,
const std::string& method,
const std::string& message,
base::span<const uint8_t> message,
NotHandledCallback callback) override;
scoped_refptr<content::DevToolsAgentHost> CreateNewTarget(
const GURL& url) override;

View file

@ -12,6 +12,7 @@
#include "base/guid.h"
#include "base/json/json_reader.h"
#include "base/json/json_writer.h"
#include "base/json/string_escape.h"
#include "base/metrics/histogram.h"
#include "base/stl_util.h"
#include "base/strings/pattern.h"
@ -679,7 +680,7 @@ void InspectableWebContentsImpl::LoadNetworkResource(
network::ResourceRequest resource_request;
resource_request.url = gurl;
resource_request.site_for_cookies = gurl;
resource_request.site_for_cookies = net::SiteForCookies::FromUrl(gurl);
resource_request.headers.AddHeadersFromString(headers);
NetworkResourceLoader::URLLoaderFactoryHolder url_loader_factory;
@ -830,7 +831,8 @@ void InspectableWebContentsImpl::DispatchProtocolMessageFromDevToolsFrontend(
}
if (agent_host_)
agent_host_->DispatchProtocolMessage(this, message);
agent_host_->DispatchProtocolMessage(
this, base::as_bytes(base::make_span(message)));
}
void InspectableWebContentsImpl::SendJsonRequest(
@ -902,21 +904,26 @@ void InspectableWebContentsImpl::HandleMessageFromDevToolsFrontend(
void InspectableWebContentsImpl::DispatchProtocolMessage(
content::DevToolsAgentHost* agent_host,
const std::string& message) {
base::span<const uint8_t> message) {
if (!frontend_loaded_)
return;
if (message.length() < kMaxMessageChunkSize) {
base::StringPiece str_message(reinterpret_cast<const char*>(message.data()),
message.size());
if (str_message.size() < kMaxMessageChunkSize) {
std::string param;
base::EscapeJSONString(str_message, true, &param);
base::string16 javascript =
base::UTF8ToUTF16("DevToolsAPI.dispatchMessage(" + message + ");");
base::UTF8ToUTF16("DevToolsAPI.dispatchMessage(" + param + ");");
GetDevToolsWebContents()->GetMainFrame()->ExecuteJavaScript(
javascript, base::NullCallback());
return;
}
base::Value total_size(static_cast<int>(message.length()));
for (size_t pos = 0; pos < message.length(); pos += kMaxMessageChunkSize) {
base::Value message_value(message.substr(pos, kMaxMessageChunkSize));
base::Value total_size(static_cast<int>(str_message.length()));
for (size_t pos = 0; pos < str_message.length();
pos += kMaxMessageChunkSize) {
base::Value message_value(str_message.substr(pos, kMaxMessageChunkSize));
CallClientFunction("DevToolsAPI.dispatchMessageChunk", &message_value,
pos ? nullptr : &total_size, nullptr);
}

View file

@ -13,6 +13,7 @@
#include <string>
#include <vector>
#include "base/containers/span.h"
#include "base/containers/unique_ptr_adapters.h"
#include "base/memory/weak_ptr.h"
#include "chrome/browser/devtools/devtools_contents_resizing_strategy.h"
@ -157,7 +158,7 @@ class InspectableWebContentsImpl
// content::DevToolsAgentHostClient:
void DispatchProtocolMessage(content::DevToolsAgentHost* agent_host,
const std::string& message) override;
base::span<const uint8_t> message) override;
void AgentHostClosed(content::DevToolsAgentHost* agent_host) override;
// content::WebContentsObserver:

View file

@ -49,8 +49,7 @@ class DevToolsWindowDelegate : public views::ClientView,
base::string16 GetWindowTitle() const override { return shell_->GetTitle(); }
gfx::ImageSkia GetWindowAppIcon() override { return GetWindowIcon(); }
gfx::ImageSkia GetWindowIcon() override { return icon_; }
views::Widget* GetWidget() override { return widget_; }
const views::Widget* GetWidget() const override { return widget_; }
const views::Widget* GetWidgetImpl() const override { return widget_; }
views::View* GetContentsView() override { return view_; }
views::ClientView* CreateClientView(views::Widget* widget) override {
return this;