Merge pull request #14964 from electron/chromium-upgrade/68
feat: upgrade to Chromium 68.0.3440.128 and Node 10.11.0
This commit is contained in:
commit
03e6113ef7
155 changed files with 9131 additions and 8352 deletions
8
BUILD.gn
8
BUILD.gn
|
@ -248,6 +248,12 @@ static_library("electron_lib") {
|
|||
"*\bwin_*.cc",
|
||||
]
|
||||
}
|
||||
if (!is_posix) {
|
||||
extra_source_filters += [
|
||||
"*_posix.cc",
|
||||
"*_posix.h",
|
||||
]
|
||||
}
|
||||
if (is_mac) {
|
||||
extra_source_filters += [
|
||||
"*_views.cc",
|
||||
|
@ -744,7 +750,6 @@ group("chromium_unittests") {
|
|||
deps = [
|
||||
"//base:base_unittests",
|
||||
"//cc:cc_unittests",
|
||||
"//cc/blink:cc_blink_unittests",
|
||||
"//content/test:content_unittests",
|
||||
"//crypto:crypto_unittests",
|
||||
"//device:device_unittests",
|
||||
|
@ -756,7 +761,6 @@ group("chromium_unittests") {
|
|||
"//media/midi:midi_unittests",
|
||||
"//media/mojo:media_mojo_unittests",
|
||||
"//mojo:mojo_unittests",
|
||||
"//mojo/common:mojo_common_unittests",
|
||||
"//net:net_unittests",
|
||||
"//ppapi:ppapi_unittests",
|
||||
"//printing:printing_unittests",
|
||||
|
|
4
DEPS
4
DEPS
|
@ -1,8 +1,8 @@
|
|||
vars = {
|
||||
'chromium_version':
|
||||
'67.0.3396.99',
|
||||
'68.0.3440.128',
|
||||
'node_version':
|
||||
'7295c611497c5e70d292e96e98f1180822b907a6',
|
||||
'18a9880b70039f5d41ee860a95fe84e5ef928973',
|
||||
|
||||
'pyyaml_version':
|
||||
'3.12',
|
||||
|
|
|
@ -41,8 +41,11 @@ namespace atom {
|
|||
namespace {
|
||||
|
||||
#if defined(WIDEVINE_CDM_AVAILABLE)
|
||||
bool IsWidevineAvailable(base::FilePath* cdm_path,
|
||||
std::vector<media::VideoCodec>* codecs_supported) {
|
||||
bool IsWidevineAvailable(
|
||||
base::FilePath* cdm_path,
|
||||
std::vector<media::VideoCodec>* codecs_supported,
|
||||
bool* supports_persistent_license,
|
||||
base::flat_set<media::EncryptionMode>* modes_supported) {
|
||||
static enum {
|
||||
NOT_CHECKED,
|
||||
FOUND,
|
||||
|
@ -68,6 +71,16 @@ bool IsWidevineAvailable(base::FilePath* cdm_path,
|
|||
codecs_supported->push_back(media::VideoCodec::kCodecH264);
|
||||
#endif // BUILDFLAG(USE_PROPRIETARY_CODECS)
|
||||
|
||||
// TODO(crbug.com/767941): Push persistent-license support info here once
|
||||
// we check in a new CDM that supports it on Linux.
|
||||
#if defined(OS_CHROMEOS)
|
||||
*supports_persistent_license = true;
|
||||
#else
|
||||
*supports_persistent_license = false;
|
||||
#endif // defined(OS_CHROMEOS)
|
||||
|
||||
modes_supported->insert(media::EncryptionMode::kCenc);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -213,7 +226,10 @@ void AtomContentClient::AddContentDecryptionModules(
|
|||
base::FilePath cdm_path;
|
||||
std::vector<media::VideoCodec> video_codecs_supported;
|
||||
bool supports_persistent_license = false;
|
||||
if (IsWidevineAvailable(&cdm_path, &video_codecs_supported)) {
|
||||
base::flat_set<media::EncryptionMode> encryption_modes_supported;
|
||||
if (IsWidevineAvailable(&cdm_path, &video_codecs_supported,
|
||||
&supports_persistent_license,
|
||||
&encryption_modes_supported)) {
|
||||
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
|
||||
auto cdm_version_string =
|
||||
command_line->GetSwitchValueASCII(switches::kWidevineCdmVersion);
|
||||
|
@ -226,7 +242,8 @@ void AtomContentClient::AddContentDecryptionModules(
|
|||
cdms->push_back(content::CdmInfo(
|
||||
kWidevineCdmDisplayName, kWidevineCdmGuid, version, cdm_path,
|
||||
kWidevineCdmFileSystemId, video_codecs_supported,
|
||||
supports_persistent_license, kWidevineKeySystem, false));
|
||||
supports_persistent_license, encryption_modes_supported,
|
||||
kWidevineKeySystem, false));
|
||||
}
|
||||
#endif // defined(WIDEVINE_CDM_AVAILABLE)
|
||||
}
|
||||
|
|
|
@ -145,7 +145,7 @@ void AtomMainDelegate::PreSandboxStartup() {
|
|||
service_manager::switches::kDisableSetuidSandbox);
|
||||
} else {
|
||||
// Disable renderer sandbox for most of node's functions.
|
||||
command_line->AppendSwitch(::switches::kNoSandbox);
|
||||
command_line->AppendSwitch(service_manager::switches::kNoSandbox);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -168,7 +168,7 @@ AtomMainDelegate::CreateContentRendererClient() {
|
|||
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
|
||||
switches::kEnableSandbox) ||
|
||||
!base::CommandLine::ForCurrentProcess()->HasSwitch(
|
||||
::switches::kNoSandbox)) {
|
||||
service_manager::switches::kNoSandbox)) {
|
||||
renderer_client_.reset(new AtomSandboxedRendererClient);
|
||||
} else {
|
||||
renderer_client_.reset(new AtomRendererClient);
|
||||
|
|
|
@ -49,7 +49,7 @@ void AtomMainDelegate::OverrideChildProcessPath() {
|
|||
GetHelperAppPath(frameworks_path, brightray::GetApplicationName());
|
||||
if (!base::PathExists(helper_path))
|
||||
LOG(FATAL) << "Unable to find helper app";
|
||||
PathService::Override(content::CHILD_PROCESS_EXE, helper_path);
|
||||
base::PathService::Override(content::CHILD_PROCESS_EXE, helper_path);
|
||||
}
|
||||
|
||||
void AtomMainDelegate::SetUpBundleOverrides() {
|
||||
|
|
|
@ -84,7 +84,7 @@ int NodeMain(int argc, char* argv[]) {
|
|||
bool more;
|
||||
do {
|
||||
more = uv_run(env->event_loop(), UV_RUN_ONCE);
|
||||
gin_env.platform()->DrainBackgroundTasks(env->isolate());
|
||||
gin_env.platform()->DrainTasks(env->isolate());
|
||||
if (more == false) {
|
||||
node::EmitBeforeExit(env);
|
||||
|
||||
|
@ -98,7 +98,7 @@ int NodeMain(int argc, char* argv[]) {
|
|||
|
||||
exit_code = node::EmitExit(env);
|
||||
node::RunAtExit(env);
|
||||
gin_env.platform()->DrainBackgroundTasks(env->isolate());
|
||||
gin_env.platform()->DrainTasks(env->isolate());
|
||||
gin_env.platform()->CancelPendingDelayedTasks(env->isolate());
|
||||
|
||||
node::FreeEnvironment(env);
|
||||
|
|
|
@ -50,6 +50,7 @@
|
|||
#include "net/ssl/client_cert_identity.h"
|
||||
#include "net/ssl/ssl_cert_request_info.h"
|
||||
#include "services/network/public/cpp/network_switches.h"
|
||||
#include "services/service_manager/sandbox/switches.h"
|
||||
#include "ui/base/l10n/l10n_util.h"
|
||||
#include "ui/gfx/image/image.h"
|
||||
|
||||
|
@ -481,7 +482,7 @@ void OnClientCertificateSelected(
|
|||
if (!certs.empty()) {
|
||||
scoped_refptr<net::X509Certificate> cert(certs[0].get());
|
||||
for (size_t i = 0; i < identities->size(); ++i) {
|
||||
if (cert->Equals((*identities)[i]->certificate())) {
|
||||
if (cert->EqualsExcludingChain((*identities)[i]->certificate())) {
|
||||
net::ClientCertIdentity::SelfOwningAcquirePrivateKey(
|
||||
std::move((*identities)[i]),
|
||||
base::Bind(&GotPrivateKey, delegate, std::move(cert)));
|
||||
|
@ -786,18 +787,21 @@ void App::BrowserChildProcessHostDisconnected(
|
|||
ChildProcessDisconnected(base::GetProcId(data.handle));
|
||||
}
|
||||
|
||||
void App::BrowserChildProcessCrashed(const content::ChildProcessData& data,
|
||||
int exit_code) {
|
||||
void App::BrowserChildProcessCrashed(
|
||||
const content::ChildProcessData& data,
|
||||
const content::ChildProcessTerminationInfo& info) {
|
||||
ChildProcessDisconnected(base::GetProcId(data.handle));
|
||||
}
|
||||
|
||||
void App::BrowserChildProcessKilled(const content::ChildProcessData& data,
|
||||
int exit_code) {
|
||||
void App::BrowserChildProcessKilled(
|
||||
const content::ChildProcessData& data,
|
||||
const content::ChildProcessTerminationInfo& info) {
|
||||
ChildProcessDisconnected(base::GetProcId(data.handle));
|
||||
}
|
||||
|
||||
void App::RenderProcessReady(content::RenderProcessHost* host) {
|
||||
ChildProcessLaunched(content::PROCESS_TYPE_RENDERER, host->GetHandle());
|
||||
ChildProcessLaunched(content::PROCESS_TYPE_RENDERER,
|
||||
host->GetProcess().Handle());
|
||||
}
|
||||
|
||||
void App::RenderProcessDisconnected(base::ProcessId host_pid) {
|
||||
|
@ -836,7 +840,7 @@ base::FilePath App::GetPath(mate::Arguments* args, const std::string& name) {
|
|||
base::FilePath path;
|
||||
int key = GetPathConstant(name);
|
||||
if (key >= 0)
|
||||
succeed = PathService::Get(key, &path);
|
||||
succeed = base::PathService::Get(key, &path);
|
||||
if (!succeed)
|
||||
args->ThrowError("Failed to get '" + name + "' path");
|
||||
return path;
|
||||
|
@ -853,7 +857,8 @@ void App::SetPath(mate::Arguments* args,
|
|||
bool succeed = false;
|
||||
int key = GetPathConstant(name);
|
||||
if (key >= 0)
|
||||
succeed = PathService::OverrideAndCreateIfNeeded(key, path, true, false);
|
||||
succeed =
|
||||
base::PathService::OverrideAndCreateIfNeeded(key, path, true, false);
|
||||
if (!succeed)
|
||||
args->ThrowError("Failed to set path");
|
||||
}
|
||||
|
@ -885,7 +890,7 @@ bool App::RequestSingleInstanceLock() {
|
|||
return true;
|
||||
|
||||
base::FilePath user_dir;
|
||||
PathService::Get(brightray::DIR_USER_DATA, &user_dir);
|
||||
base::PathService::Get(brightray::DIR_USER_DATA, &user_dir);
|
||||
|
||||
auto cb = base::Bind(&App::OnSecondInstance, base::Unretained(this));
|
||||
|
||||
|
@ -934,7 +939,7 @@ bool App::Relaunch(mate::Arguments* js_args) {
|
|||
|
||||
if (exec_path.empty()) {
|
||||
base::FilePath current_exe_path;
|
||||
PathService::Get(base::FILE_EXE, ¤t_exe_path);
|
||||
base::PathService::Get(base::FILE_EXE, ¤t_exe_path);
|
||||
argv.push_back(current_exe_path.value());
|
||||
} else {
|
||||
argv.push_back(exec_path.value());
|
||||
|
@ -1188,7 +1193,7 @@ void App::EnableMixedSandbox(mate::Arguments* args) {
|
|||
}
|
||||
|
||||
auto* command_line = base::CommandLine::ForCurrentProcess();
|
||||
if (command_line->HasSwitch(::switches::kNoSandbox)) {
|
||||
if (command_line->HasSwitch(service_manager::switches::kNoSandbox)) {
|
||||
#if defined(OS_WIN)
|
||||
const base::CommandLine::CharType* noSandboxArg = L"--no-sandbox";
|
||||
#else
|
||||
|
|
|
@ -162,10 +162,12 @@ class App : public AtomBrowserClient::Delegate,
|
|||
const content::ChildProcessData& data) override;
|
||||
void BrowserChildProcessHostDisconnected(
|
||||
const content::ChildProcessData& data) override;
|
||||
void BrowserChildProcessCrashed(const content::ChildProcessData& data,
|
||||
int exit_code) override;
|
||||
void BrowserChildProcessKilled(const content::ChildProcessData& data,
|
||||
int exit_code) override;
|
||||
void BrowserChildProcessCrashed(
|
||||
const content::ChildProcessData& data,
|
||||
const content::ChildProcessTerminationInfo& info) override;
|
||||
void BrowserChildProcessKilled(
|
||||
const content::ChildProcessData& data,
|
||||
const content::ChildProcessTerminationInfo& info) override;
|
||||
|
||||
private:
|
||||
void SetAppPath(const base::FilePath& app_path);
|
||||
|
|
|
@ -97,8 +97,7 @@ void MenuMac::PopupOnUI(const base::WeakPtr<NativeWindow>& native_window,
|
|||
|
||||
[popup_controllers_[window_id] setCloseCallback:close_callback];
|
||||
// Make sure events can be pumped while the menu is up.
|
||||
base::MessageLoop::ScopedNestableTaskAllower allow(
|
||||
base::MessageLoop::current());
|
||||
base::MessageLoop::ScopedNestableTaskAllower allow;
|
||||
|
||||
// One of the events that could be pumped is |window.close()|.
|
||||
// User-initiated event-tracking loops protect against this by
|
||||
|
|
|
@ -396,7 +396,7 @@ void ClearAuthCacheInIO(
|
|||
options.origin, options.realm, options.auth_scheme,
|
||||
net::AuthCredentials(options.username, options.password));
|
||||
} else {
|
||||
auth_cache->ClearEntriesAddedWithin(base::TimeDelta::Max());
|
||||
auth_cache->ClearAllEntries();
|
||||
}
|
||||
} else if (options.type == "clientCertificate") {
|
||||
auto* client_auth_cache = network_session->ssl_client_auth_cache();
|
||||
|
|
|
@ -362,7 +362,7 @@ WebContents::WebContents(v8::Isolate* isolate,
|
|||
}
|
||||
session_.Reset(isolate, session.ToV8());
|
||||
|
||||
content::WebContents* web_contents;
|
||||
std::unique_ptr<content::WebContents> web_contents;
|
||||
if (IsGuest()) {
|
||||
scoped_refptr<content::SiteInstance> site_instance =
|
||||
content::SiteInstance::CreateForURL(session->browser_context(),
|
||||
|
@ -405,7 +405,7 @@ WebContents::WebContents(v8::Isolate* isolate,
|
|||
web_contents = content::WebContents::Create(params);
|
||||
}
|
||||
|
||||
InitWithSessionAndOptions(isolate, web_contents, session, options);
|
||||
InitWithSessionAndOptions(isolate, web_contents.release(), session, options);
|
||||
}
|
||||
|
||||
void WebContents::InitZoomController(content::WebContents* web_contents,
|
||||
|
@ -537,16 +537,17 @@ void WebContents::WebContentsCreated(content::WebContents* source_contents,
|
|||
Emit("-web-contents-created", api_web_contents, target_url, frame_name);
|
||||
}
|
||||
|
||||
void WebContents::AddNewContents(content::WebContents* source,
|
||||
content::WebContents* new_contents,
|
||||
WindowOpenDisposition disposition,
|
||||
const gfx::Rect& initial_rect,
|
||||
bool user_gesture,
|
||||
bool* was_blocked) {
|
||||
new ChildWebContentsTracker(new_contents);
|
||||
void WebContents::AddNewContents(
|
||||
content::WebContents* source,
|
||||
std::unique_ptr<content::WebContents> new_contents,
|
||||
WindowOpenDisposition disposition,
|
||||
const gfx::Rect& initial_rect,
|
||||
bool user_gesture,
|
||||
bool* was_blocked) {
|
||||
new ChildWebContentsTracker(new_contents.get());
|
||||
v8::Locker locker(isolate());
|
||||
v8::HandleScope handle_scope(isolate());
|
||||
auto api_web_contents = CreateFrom(isolate(), new_contents);
|
||||
auto api_web_contents = CreateFrom(isolate(), new_contents.release());
|
||||
if (Emit("-add-new-contents", api_web_contents, disposition, user_gesture,
|
||||
initial_rect.x(), initial_rect.y(), initial_rect.width(),
|
||||
initial_rect.height())) {
|
||||
|
@ -641,21 +642,25 @@ content::KeyboardEventProcessingResult WebContents::PreHandleKeyboardEvent(
|
|||
return content::KeyboardEventProcessingResult::NOT_HANDLED;
|
||||
}
|
||||
|
||||
void WebContents::EnterFullscreenModeForTab(content::WebContents* source,
|
||||
const GURL& origin) {
|
||||
void WebContents::EnterFullscreenModeForTab(
|
||||
content::WebContents* source,
|
||||
const GURL& origin,
|
||||
const blink::WebFullscreenOptions& options) {
|
||||
auto* permission_helper =
|
||||
WebContentsPermissionHelper::FromWebContents(source);
|
||||
auto callback = base::Bind(&WebContents::OnEnterFullscreenModeForTab,
|
||||
base::Unretained(this), source, origin);
|
||||
base::Unretained(this), source, origin, options);
|
||||
permission_helper->RequestFullscreenPermission(callback);
|
||||
}
|
||||
|
||||
void WebContents::OnEnterFullscreenModeForTab(content::WebContents* source,
|
||||
const GURL& origin,
|
||||
bool allowed) {
|
||||
void WebContents::OnEnterFullscreenModeForTab(
|
||||
content::WebContents* source,
|
||||
const GURL& origin,
|
||||
const blink::WebFullscreenOptions& options,
|
||||
bool allowed) {
|
||||
if (!allowed)
|
||||
return;
|
||||
CommonWebContentsDelegate::EnterFullscreenModeForTab(source, origin);
|
||||
CommonWebContentsDelegate::EnterFullscreenModeForTab(source, origin, options);
|
||||
Emit("enter-html-full-screen");
|
||||
}
|
||||
|
||||
|
@ -757,8 +762,7 @@ content::JavaScriptDialogManager* WebContents::GetJavaScriptDialogManager(
|
|||
return dialog_manager_.get();
|
||||
}
|
||||
|
||||
void WebContents::OnAudioStateChanged(content::WebContents* web_contents,
|
||||
bool audible) {
|
||||
void WebContents::OnAudioStateChanged(bool audible) {
|
||||
Emit("-audio-state-changed", audible);
|
||||
}
|
||||
|
||||
|
@ -1103,7 +1107,7 @@ int WebContents::GetProcessID() const {
|
|||
|
||||
base::ProcessId WebContents::GetOSProcessID() const {
|
||||
base::ProcessHandle process_handle =
|
||||
web_contents()->GetMainFrame()->GetProcess()->GetHandle();
|
||||
web_contents()->GetMainFrame()->GetProcess()->GetProcess().Handle();
|
||||
return base::GetProcId(process_handle);
|
||||
}
|
||||
|
||||
|
@ -1688,8 +1692,7 @@ void WebContents::StartDrag(const mate::Dictionary& item,
|
|||
|
||||
// Start dragging.
|
||||
if (!files.empty()) {
|
||||
base::MessageLoop::ScopedNestableTaskAllower allow(
|
||||
base::MessageLoop::current());
|
||||
base::MessageLoop::ScopedNestableTaskAllower allow;
|
||||
DragFileItems(files, icon->image(), web_contents()->GetNativeView());
|
||||
} else {
|
||||
args->ThrowError("Must specify either 'file' or 'files' option");
|
||||
|
|
|
@ -229,6 +229,7 @@ class WebContents : public mate::TrackableObject<WebContents>,
|
|||
// Callback triggered on permission response.
|
||||
void OnEnterFullscreenModeForTab(content::WebContents* source,
|
||||
const GURL& origin,
|
||||
const blink::WebFullscreenOptions& options,
|
||||
bool allowed);
|
||||
|
||||
// Create window with the given disposition.
|
||||
|
@ -300,7 +301,7 @@ class WebContents : public mate::TrackableObject<WebContents>,
|
|||
const GURL& target_url,
|
||||
content::WebContents* new_contents) override;
|
||||
void AddNewContents(content::WebContents* source,
|
||||
content::WebContents* new_contents,
|
||||
std::unique_ptr<content::WebContents> new_contents,
|
||||
WindowOpenDisposition disposition,
|
||||
const gfx::Rect& initial_rect,
|
||||
bool user_gesture,
|
||||
|
@ -323,8 +324,10 @@ class WebContents : public mate::TrackableObject<WebContents>,
|
|||
content::KeyboardEventProcessingResult PreHandleKeyboardEvent(
|
||||
content::WebContents* source,
|
||||
const content::NativeWebKeyboardEvent& event) override;
|
||||
void EnterFullscreenModeForTab(content::WebContents* source,
|
||||
const GURL& origin) override;
|
||||
void EnterFullscreenModeForTab(
|
||||
content::WebContents* source,
|
||||
const GURL& origin,
|
||||
const blink::WebFullscreenOptions& options) override;
|
||||
void ExitFullscreenModeForTab(content::WebContents* source) override;
|
||||
void RendererUnresponsive(
|
||||
content::WebContents* source,
|
||||
|
@ -355,8 +358,7 @@ class WebContents : public mate::TrackableObject<WebContents>,
|
|||
const content::BluetoothChooser::EventHandler& handler) override;
|
||||
content::JavaScriptDialogManager* GetJavaScriptDialogManager(
|
||||
content::WebContents* source) override;
|
||||
void OnAudioStateChanged(content::WebContents* web_contents,
|
||||
bool audible) override;
|
||||
void OnAudioStateChanged(bool audible) override;
|
||||
|
||||
// content::WebContentsObserver:
|
||||
void BeforeUnloadFired(const base::TimeTicks& proceed_time) override;
|
||||
|
|
|
@ -312,7 +312,7 @@ void AtomBrowserClient::AppendExtraCommandLineSwitches(
|
|||
// Make sure we're about to launch a known executable
|
||||
{
|
||||
base::FilePath child_path;
|
||||
PathService::Get(content::CHILD_PROCESS_EXE, &child_path);
|
||||
base::PathService::Get(content::CHILD_PROCESS_EXE, &child_path);
|
||||
|
||||
base::ThreadRestrictions::ScopedAllowIO allow_io;
|
||||
CHECK(base::MakeAbsoluteFilePath(command_line->GetProgram()) == child_path);
|
||||
|
@ -551,15 +551,16 @@ void AtomBrowserClient::RenderProcessHostDestroyed(
|
|||
}
|
||||
|
||||
void AtomBrowserClient::RenderProcessReady(content::RenderProcessHost* host) {
|
||||
render_process_host_pids_[host->GetID()] = base::GetProcId(host->GetHandle());
|
||||
render_process_host_pids_[host->GetID()] =
|
||||
base::GetProcId(host->GetProcess().Handle());
|
||||
if (delegate_) {
|
||||
static_cast<api::App*>(delegate_)->RenderProcessReady(host);
|
||||
}
|
||||
}
|
||||
|
||||
void AtomBrowserClient::RenderProcessExited(content::RenderProcessHost* host,
|
||||
base::TerminationStatus status,
|
||||
int exit_code) {
|
||||
void AtomBrowserClient::RenderProcessExited(
|
||||
content::RenderProcessHost* host,
|
||||
const content::ChildProcessTerminationInfo& info) {
|
||||
auto host_pid = render_process_host_pids_.find(host->GetID());
|
||||
if (host_pid != render_process_host_pids_.end()) {
|
||||
if (delegate_) {
|
||||
|
|
|
@ -123,9 +123,9 @@ class AtomBrowserClient : public brightray::BrowserClient,
|
|||
// content::RenderProcessHostObserver:
|
||||
void RenderProcessHostDestroyed(content::RenderProcessHost* host) override;
|
||||
void RenderProcessReady(content::RenderProcessHost* host) override;
|
||||
void RenderProcessExited(content::RenderProcessHost* host,
|
||||
base::TerminationStatus status,
|
||||
int exit_code) override;
|
||||
void RenderProcessExited(
|
||||
content::RenderProcessHost* host,
|
||||
const content::ChildProcessTerminationInfo& info) override;
|
||||
bool HandleExternalProtocol(
|
||||
const GURL& url,
|
||||
content::ResourceRequestInfo::WebContentsGetter web_contents_getter,
|
||||
|
|
|
@ -108,7 +108,7 @@ void AtomBrowserContext::RegisterPrefs(PrefRegistrySimple* pref_registry) {
|
|||
pref_registry->RegisterFilePathPref(prefs::kSelectFileLastDirectory,
|
||||
base::FilePath());
|
||||
base::FilePath download_dir;
|
||||
PathService::Get(chrome::DIR_DEFAULT_DOWNLOADS, &download_dir);
|
||||
base::PathService::Get(chrome::DIR_DEFAULT_DOWNLOADS, &download_dir);
|
||||
pref_registry->RegisterFilePathPref(prefs::kDownloadDefaultDirectory,
|
||||
download_dir);
|
||||
pref_registry->RegisterDictionaryPref(prefs::kDevToolsFileSystemPaths);
|
||||
|
|
|
@ -115,14 +115,14 @@ void AtomBrowserMainParts::RegisterDestructionCallback(
|
|||
|
||||
int AtomBrowserMainParts::PreEarlyInitialization() {
|
||||
const int result = brightray::BrowserMainParts::PreEarlyInitialization();
|
||||
if (result != content::RESULT_CODE_NORMAL_EXIT)
|
||||
if (result != service_manager::RESULT_CODE_NORMAL_EXIT)
|
||||
return result;
|
||||
|
||||
#if defined(OS_POSIX)
|
||||
HandleSIGCHLD();
|
||||
#endif
|
||||
|
||||
return content::RESULT_CODE_NORMAL_EXIT;
|
||||
return service_manager::RESULT_CODE_NORMAL_EXIT;
|
||||
}
|
||||
|
||||
void AtomBrowserMainParts::PostEarlyInitialization() {
|
||||
|
|
|
@ -14,7 +14,7 @@ BridgeTaskRunner::BridgeTaskRunner() = default;
|
|||
BridgeTaskRunner::~BridgeTaskRunner() = default;
|
||||
|
||||
void BridgeTaskRunner::MessageLoopIsReady() {
|
||||
auto* message_loop = base::MessageLoop::current();
|
||||
auto message_loop = base::MessageLoop::current();
|
||||
CHECK(message_loop);
|
||||
for (TaskPair& task : tasks_) {
|
||||
message_loop->task_runner()->PostDelayedTask(
|
||||
|
@ -29,7 +29,7 @@ void BridgeTaskRunner::MessageLoopIsReady() {
|
|||
bool BridgeTaskRunner::PostDelayedTask(const base::Location& from_here,
|
||||
base::OnceClosure task,
|
||||
base::TimeDelta delay) {
|
||||
auto* message_loop = base::MessageLoop::current();
|
||||
auto message_loop = base::MessageLoop::current();
|
||||
if (!message_loop) {
|
||||
tasks_.push_back(std::make_tuple(from_here, std::move(task), delay));
|
||||
return true;
|
||||
|
@ -40,7 +40,7 @@ bool BridgeTaskRunner::PostDelayedTask(const base::Location& from_here,
|
|||
}
|
||||
|
||||
bool BridgeTaskRunner::RunsTasksInCurrentSequence() const {
|
||||
auto* message_loop = base::MessageLoop::current();
|
||||
auto message_loop = base::MessageLoop::current();
|
||||
if (!message_loop)
|
||||
return true;
|
||||
|
||||
|
@ -51,7 +51,7 @@ bool BridgeTaskRunner::PostNonNestableDelayedTask(
|
|||
const base::Location& from_here,
|
||||
base::OnceClosure task,
|
||||
base::TimeDelta delay) {
|
||||
auto* message_loop = base::MessageLoop::current();
|
||||
auto message_loop = base::MessageLoop::current();
|
||||
if (!message_loop) {
|
||||
non_nestable_tasks_.push_back(
|
||||
std::make_tuple(from_here, std::move(task), delay));
|
||||
|
|
|
@ -92,7 +92,7 @@ void Browser::Shutdown() {
|
|||
|
||||
if (base::ThreadTaskRunnerHandle::IsSet()) {
|
||||
base::ThreadTaskRunnerHandle::Get()->PostTask(
|
||||
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
|
||||
FROM_HERE, base::RunLoop::QuitCurrentWhenIdleClosureDeprecated());
|
||||
} else {
|
||||
// There is no message loop available so we are in early stage.
|
||||
exit(0);
|
||||
|
@ -152,7 +152,7 @@ void Browser::DidFinishLaunching(const base::DictionaryValue& launch_info) {
|
|||
// Make sure the userData directory is created.
|
||||
base::ThreadRestrictions::ScopedAllowIO allow_io;
|
||||
base::FilePath user_data;
|
||||
if (PathService::Get(brightray::DIR_USER_DATA, &user_data))
|
||||
if (base::PathService::Get(brightray::DIR_USER_DATA, &user_data))
|
||||
base::CreateDirectoryAndGetError(user_data, nullptr);
|
||||
|
||||
is_ready_ = true;
|
||||
|
|
|
@ -45,7 +45,7 @@ BOOL CALLBACK WindowsEnumerationHandler(HWND hwnd, LPARAM param) {
|
|||
|
||||
bool GetProcessExecPath(base::string16* exe) {
|
||||
base::FilePath path;
|
||||
if (!PathService::Get(base::FILE_EXE, &path)) {
|
||||
if (!base::PathService::Get(base::FILE_EXE, &path)) {
|
||||
LOG(ERROR) << "Error getting app exe path";
|
||||
return false;
|
||||
}
|
||||
|
@ -329,7 +329,7 @@ PCWSTR Browser::GetAppUserModelID() {
|
|||
|
||||
std::string Browser::GetExecutableFileVersion() const {
|
||||
base::FilePath path;
|
||||
if (PathService::Get(base::FILE_EXE, &path)) {
|
||||
if (base::PathService::Get(base::FILE_EXE, &path)) {
|
||||
base::ThreadRestrictions::ScopedAllowIO allow_io;
|
||||
std::unique_ptr<FileVersionInfo> version_info(
|
||||
FileVersionInfo::CreateFileVersionInfo(path));
|
||||
|
|
|
@ -270,12 +270,13 @@ void CommonWebContentsDelegate::EnumerateDirectory(content::WebContents* guest,
|
|||
|
||||
void CommonWebContentsDelegate::EnterFullscreenModeForTab(
|
||||
content::WebContents* source,
|
||||
const GURL& origin) {
|
||||
const GURL& origin,
|
||||
const blink::WebFullscreenOptions& options) {
|
||||
if (!owner_window_)
|
||||
return;
|
||||
SetHtmlApiFullscreen(true);
|
||||
owner_window_->NotifyWindowEnterHtmlFullScreen();
|
||||
source->GetRenderViewHost()->GetWidget()->WasResized();
|
||||
source->GetRenderViewHost()->GetWidget()->SynchronizeVisualProperties();
|
||||
}
|
||||
|
||||
void CommonWebContentsDelegate::ExitFullscreenModeForTab(
|
||||
|
@ -284,7 +285,7 @@ void CommonWebContentsDelegate::ExitFullscreenModeForTab(
|
|||
return;
|
||||
SetHtmlApiFullscreen(false);
|
||||
owner_window_->NotifyWindowLeaveHtmlFullScreen();
|
||||
source->GetRenderViewHost()->GetWidget()->WasResized();
|
||||
source->GetRenderViewHost()->GetWidget()->SynchronizeVisualProperties();
|
||||
}
|
||||
|
||||
bool CommonWebContentsDelegate::IsFullscreenForTabOrPending(
|
||||
|
|
|
@ -80,8 +80,10 @@ class CommonWebContentsDelegate
|
|||
void EnumerateDirectory(content::WebContents* web_contents,
|
||||
int request_id,
|
||||
const base::FilePath& path) override;
|
||||
void EnterFullscreenModeForTab(content::WebContents* source,
|
||||
const GURL& origin) override;
|
||||
void EnterFullscreenModeForTab(
|
||||
content::WebContents* source,
|
||||
const GURL& origin,
|
||||
const blink::WebFullscreenOptions& options) override;
|
||||
void ExitFullscreenModeForTab(content::WebContents* source) override;
|
||||
bool IsFullscreenForTabOrPending(
|
||||
const content::WebContents* source) const override;
|
||||
|
|
|
@ -4,9 +4,12 @@
|
|||
|
||||
#include "atom/browser/node_debugger.h"
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "base/command_line.h"
|
||||
#include "base/logging.h"
|
||||
#include "base/strings/utf_string_conversions.h"
|
||||
#include "libplatform/libplatform.h"
|
||||
#include "native_mate/dictionary.h"
|
||||
|
@ -24,29 +27,40 @@ void NodeDebugger::Start() {
|
|||
if (inspector == nullptr)
|
||||
return;
|
||||
|
||||
node::DebugOptions options;
|
||||
std::vector<std::string> args;
|
||||
for (auto& arg : base::CommandLine::ForCurrentProcess()->argv()) {
|
||||
#if defined(OS_WIN)
|
||||
const std::string nice_arg = base::UTF16ToUTF8(arg);
|
||||
args.push_back(base::UTF16ToUTF8(arg));
|
||||
#else
|
||||
const std::string& nice_arg = arg;
|
||||
args.push_back(arg);
|
||||
#endif
|
||||
// Stop handling arguments after a "--" to be consistent with Chromium
|
||||
if (nice_arg == "--")
|
||||
break;
|
||||
}
|
||||
|
||||
options.ParseOption("Electron", nice_arg);
|
||||
auto options = std::make_shared<node::DebugOptions>();
|
||||
std::vector<std::string> exec_args;
|
||||
std::vector<std::string> v8_args;
|
||||
std::string error;
|
||||
|
||||
node::options_parser::DebugOptionsParser::instance.Parse(
|
||||
&args, &exec_args, &v8_args, options.get(),
|
||||
node::options_parser::kDisallowedInEnvironment, &error);
|
||||
|
||||
if (!error.empty()) {
|
||||
// TODO(jeremy): what's the appropriate behaviour here?
|
||||
LOG(ERROR) << "Error parsing node options: " << error;
|
||||
}
|
||||
|
||||
// Set process._debugWaitConnect if --inspect-brk was specified to stop
|
||||
// the debugger on the first line
|
||||
if (options.wait_for_connect()) {
|
||||
if (options->wait_for_connect()) {
|
||||
mate::Dictionary process(env_->isolate(), env_->process_object());
|
||||
process.Set("_breakFirstLine", true);
|
||||
}
|
||||
|
||||
inspector->Start(/* path */ nullptr, options);
|
||||
DCHECK(env_->inspector_agent()->IsStarted());
|
||||
const char* path = "";
|
||||
inspector->Start(path, options);
|
||||
// FIXME
|
||||
// DCHECK(env_->inspector_agent()->IsListening());
|
||||
}
|
||||
|
||||
} // namespace atom
|
||||
|
|
|
@ -42,7 +42,7 @@ bool RelaunchApp(const StringVector& argv) {
|
|||
// helper process, because there's no guarantee that the updated version's
|
||||
// relauncher implementation will be compatible with the running version's.
|
||||
base::FilePath child_path;
|
||||
if (!PathService::Get(content::CHILD_PROCESS_EXE, &child_path)) {
|
||||
if (!base::PathService::Get(content::CHILD_PROCESS_EXE, &child_path)) {
|
||||
LOG(ERROR) << "No CHILD_PROCESS_EXE";
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include "content/public/common/web_preferences.h"
|
||||
#include "native_mate/dictionary.h"
|
||||
#include "net/base/filename_util.h"
|
||||
#include "services/service_manager/sandbox/switches.h"
|
||||
|
||||
#if defined(OS_WIN)
|
||||
#include "ui/gfx/switches.h"
|
||||
|
@ -245,7 +246,7 @@ void WebContentsPreferences::AppendCommandLineSwitches(
|
|||
if (IsEnabled(options::kSandbox))
|
||||
command_line->AppendSwitch(switches::kEnableSandbox);
|
||||
else if (!command_line->HasSwitch(switches::kEnableSandbox))
|
||||
command_line->AppendSwitch(::switches::kNoSandbox);
|
||||
command_line->AppendSwitch(service_manager::switches::kNoSandbox);
|
||||
|
||||
// Check if nativeWindowOpen is enabled.
|
||||
if (IsEnabled(options::kNativeWindowOpen))
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
#include "atom/browser/web_view_guest_delegate.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "atom/browser/api/atom_api_web_contents.h"
|
||||
#include "atom/common/native_mate_converters/gurl_converter.h"
|
||||
#include "content/browser/web_contents/web_contents_impl.h"
|
||||
|
@ -104,13 +106,16 @@ content::WebContents* WebViewGuestDelegate::CreateNewGuestWindow(
|
|||
guest_params.initial_size =
|
||||
embedder_web_contents_->GetContainerBounds().size();
|
||||
guest_params.context = embedder_web_contents_->GetNativeView();
|
||||
auto* guest_contents = content::WebContents::Create(guest_params);
|
||||
std::unique_ptr<content::WebContents> guest_contents =
|
||||
content::WebContents::Create(guest_params);
|
||||
content::RenderWidgetHost* render_widget_host =
|
||||
guest_contents->GetRenderViewHost()->GetWidget();
|
||||
auto* guest_contents_impl =
|
||||
static_cast<content::WebContentsImpl*>(guest_contents);
|
||||
guest_contents_impl->GetView()->CreateViewForWidget(
|
||||
guest_contents->GetRenderViewHost()->GetWidget(), false);
|
||||
static_cast<content::WebContentsImpl*>(guest_contents.release());
|
||||
guest_contents_impl->GetView()->CreateViewForWidget(render_widget_host,
|
||||
false);
|
||||
|
||||
return guest_contents;
|
||||
return guest_contents_impl;
|
||||
}
|
||||
|
||||
} // namespace atom
|
||||
|
|
|
@ -66,7 +66,7 @@ void AtomBindings::BindTo(v8::Isolate* isolate, v8::Local<v8::Object> process) {
|
|||
dict.SetMethod("getIOCounters", &GetIOCounters);
|
||||
dict.SetMethod("takeHeapSnapshot", &TakeHeapSnapshot);
|
||||
#if defined(OS_POSIX)
|
||||
dict.SetMethod("setFdLimit", &base::SetFdLimit);
|
||||
dict.SetMethod("setFdLimit", &base::IncreaseFdLimitTo);
|
||||
#endif
|
||||
dict.SetMethod("activateUvLoop", base::Bind(&AtomBindings::ActivateUVLoop,
|
||||
base::Unretained(this)));
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
#ifndef ATOM_COMMON_CHROME_VERSION_H_
|
||||
#define ATOM_COMMON_CHROME_VERSION_H_
|
||||
|
||||
#define CHROME_VERSION_STRING "67.0.3396.99"
|
||||
#define CHROME_VERSION_STRING "68.0.3440.128"
|
||||
#define CHROME_VERSION "v" CHROME_VERSION_STRING
|
||||
|
||||
#endif // ATOM_COMMON_CHROME_VERSION_H_
|
||||
|
|
|
@ -162,7 +162,7 @@ bool Converter<blink::WebInputEvent>::FromV8(v8::Isolate* isolate,
|
|||
std::vector<blink::WebInputEvent::Modifiers> modifiers;
|
||||
if (dict.Get("modifiers", &modifiers))
|
||||
out->SetModifiers(VectorToBitArray(modifiers));
|
||||
out->SetTimeStampSeconds(base::Time::Now().ToDoubleT());
|
||||
out->SetTimeStamp(base::TimeTicks::Now());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -136,7 +136,7 @@ std::unique_ptr<const char* []> StringVectorToArgArray(
|
|||
base::FilePath GetResourcesPath(bool is_browser) {
|
||||
auto* command_line = base::CommandLine::ForCurrentProcess();
|
||||
base::FilePath exec_path(command_line->GetProgram());
|
||||
PathService::Get(base::FILE_EXE, &exec_path);
|
||||
base::PathService::Get(base::FILE_EXE, &exec_path);
|
||||
|
||||
base::FilePath resources_path =
|
||||
#if defined(OS_MACOSX)
|
||||
|
@ -217,7 +217,11 @@ void NodeBindings::Initialize() {
|
|||
// Init node.
|
||||
// (we assume node::Init would not modify the parameters under embedded mode).
|
||||
// NOTE: If you change this line, please ping @codebytere or @MarshallOfSound
|
||||
node::Init(nullptr, nullptr, nullptr, nullptr);
|
||||
int argc = 0;
|
||||
int exec_argc = 0;
|
||||
const char** argv = nullptr;
|
||||
const char** exec_argv = nullptr;
|
||||
node::Init(&argc, argv, &exec_argc, &exec_argv);
|
||||
|
||||
#if defined(OS_WIN)
|
||||
// uv_init overrides error mode to suppress the default crash dialog, bring
|
||||
|
@ -285,7 +289,7 @@ node::Environment* NodeBindings::CreateEnvironment(
|
|||
process.Set("_noBrowserGlobals", resources_path);
|
||||
// The path to helper app.
|
||||
base::FilePath helper_exec_path;
|
||||
PathService::Get(content::CHILD_PROCESS_EXE, &helper_exec_path);
|
||||
base::PathService::Get(content::CHILD_PROCESS_EXE, &helper_exec_path);
|
||||
process.Set("helperExecPath", helper_exec_path);
|
||||
|
||||
return env;
|
||||
|
|
|
@ -35,8 +35,8 @@
|
|||
#include "env.h"
|
||||
#include "node.h"
|
||||
#include "node_buffer.h"
|
||||
#include "node_debug_options.h"
|
||||
#include "node_internals.h"
|
||||
#include "node_options.h"
|
||||
#include "node_platform.h"
|
||||
|
||||
namespace node {
|
||||
|
|
|
@ -141,7 +141,7 @@ void AtomRenderFrameObserver::CreateIsolatedWorldContext() {
|
|||
|
||||
// Create initial script context in isolated world
|
||||
blink::WebScriptSource source("void 0");
|
||||
frame->ExecuteScriptInIsolatedWorld(World::ISOLATED_WORLD, &source, 1);
|
||||
frame->ExecuteScriptInIsolatedWorld(World::ISOLATED_WORLD, source);
|
||||
}
|
||||
|
||||
bool AtomRenderFrameObserver::IsMainWorld(int world_id) {
|
||||
|
|
|
@ -83,7 +83,7 @@ v8::Local<v8::Value> GetBinding(v8::Isolate* isolate,
|
|||
|
||||
base::FilePath::StringType GetExecPath() {
|
||||
base::FilePath path;
|
||||
PathService::Get(base::FILE_EXE, &path);
|
||||
base::PathService::Get(base::FILE_EXE, &path);
|
||||
return path.value();
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ static_library("brightray") {
|
|||
"//base:base_static",
|
||||
"//components/network_session_configurator/common",
|
||||
"//components/prefs",
|
||||
"//components/certificate_transparency",
|
||||
"//content/public/browser",
|
||||
"//content/shell:copy_shell_resources",
|
||||
"//net:extras",
|
||||
|
|
|
@ -115,7 +115,7 @@ NetLog* BrowserClient::GetNetLog() {
|
|||
base::FilePath BrowserClient::GetDefaultDownloadDirectory() {
|
||||
// ~/Downloads
|
||||
base::FilePath path;
|
||||
if (PathService::Get(base::DIR_HOME, &path))
|
||||
if (base::PathService::Get(base::DIR_HOME, &path))
|
||||
path = path.Append(FILE_PATH_LITERAL("Downloads"));
|
||||
|
||||
return path;
|
||||
|
|
|
@ -57,10 +57,10 @@ scoped_refptr<BrowserContext> BrowserContext::Get(const std::string& partition,
|
|||
|
||||
BrowserContext::BrowserContext(const std::string& partition, bool in_memory)
|
||||
: in_memory_(in_memory), weak_factory_(this) {
|
||||
if (!PathService::Get(DIR_USER_DATA, &path_)) {
|
||||
PathService::Get(DIR_APP_DATA, &path_);
|
||||
if (!base::PathService::Get(DIR_USER_DATA, &path_)) {
|
||||
base::PathService::Get(DIR_APP_DATA, &path_);
|
||||
path_ = path_.Append(base::FilePath::FromUTF8Unsafe(GetApplicationName()));
|
||||
PathService::Override(DIR_USER_DATA, path_);
|
||||
base::PathService::Override(DIR_USER_DATA, path_);
|
||||
}
|
||||
|
||||
if (!in_memory_ && !partition.empty())
|
||||
|
|
|
@ -95,12 +95,12 @@ const int kWaitForUIThreadSeconds = 10;
|
|||
|
||||
void OverrideLinuxAppDataPath() {
|
||||
base::FilePath path;
|
||||
if (PathService::Get(DIR_APP_DATA, &path))
|
||||
if (base::PathService::Get(DIR_APP_DATA, &path))
|
||||
return;
|
||||
std::unique_ptr<base::Environment> env(base::Environment::Create());
|
||||
path = base::nix::GetXDGDirectory(env.get(), base::nix::kXdgConfigHomeEnvVar,
|
||||
base::nix::kDotConfigDir);
|
||||
PathService::Override(DIR_APP_DATA, path);
|
||||
base::PathService::Override(DIR_APP_DATA, path);
|
||||
}
|
||||
|
||||
int BrowserX11ErrorHandler(Display* d, XErrorEvent* error) {
|
||||
|
@ -137,7 +137,7 @@ int BrowserX11IOErrorHandler(Display* d) {
|
|||
g_in_x11_io_error_handler = true;
|
||||
LOG(ERROR) << "X IO error received (X server probably went away)";
|
||||
base::ThreadTaskRunnerHandle::Get()->PostTask(
|
||||
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
|
||||
FROM_HERE, base::RunLoop::QuitCurrentWhenIdleClosureDeprecated());
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -173,10 +173,10 @@ BrowserMainParts::~BrowserMainParts() {}
|
|||
#if defined(OS_WIN) || defined(OS_LINUX)
|
||||
void OverrideAppLogsPath() {
|
||||
base::FilePath path;
|
||||
if (PathService::Get(brightray::DIR_APP_DATA, &path)) {
|
||||
if (base::PathService::Get(brightray::DIR_APP_DATA, &path)) {
|
||||
path = path.Append(base::FilePath::FromUTF8Unsafe(GetApplicationName()));
|
||||
path = path.Append(base::FilePath::FromUTF8Unsafe("logs"));
|
||||
PathService::Override(DIR_APP_LOGS, path);
|
||||
base::PathService::Override(DIR_APP_LOGS, path);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -215,7 +215,7 @@ int BrowserMainParts::PreEarlyInitialization() {
|
|||
ui::SetX11ErrorHandlers(nullptr, nullptr);
|
||||
#endif
|
||||
|
||||
return content::RESULT_CODE_NORMAL_EXIT;
|
||||
return service_manager::RESULT_CODE_NORMAL_EXIT;
|
||||
}
|
||||
|
||||
void BrowserMainParts::ToolkitInitialized() {
|
||||
|
|
|
@ -15,7 +15,8 @@ void BrowserMainParts::OverrideAppLogsPath() {
|
|||
NSString* libraryPath =
|
||||
[NSHomeDirectory() stringByAppendingPathComponent:logsPath];
|
||||
|
||||
PathService::Override(DIR_APP_LOGS, base::FilePath([libraryPath UTF8String]));
|
||||
base::PathService::Override(DIR_APP_LOGS,
|
||||
base::FilePath([libraryPath UTF8String]));
|
||||
}
|
||||
|
||||
// Replicates NSApplicationMain, but doesn't start a run loop.
|
||||
|
|
|
@ -320,9 +320,8 @@ void InspectableWebContentsImpl::ShowDevTools() {
|
|||
DevToolsEmbedderMessageDispatcher::CreateForDevToolsFrontend(this));
|
||||
|
||||
if (!external_devtools_web_contents_) { // no external devtools
|
||||
managed_devtools_web_contents_.reset(
|
||||
content::WebContents::Create(content::WebContents::CreateParams(
|
||||
web_contents_->GetBrowserContext())));
|
||||
managed_devtools_web_contents_ = content::WebContents::Create(
|
||||
content::WebContents::CreateParams(web_contents_->GetBrowserContext()));
|
||||
managed_devtools_web_contents_->SetDelegate(this);
|
||||
}
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ class NotificationDelegateImpl final : public brightray::NotificationDelegate {
|
|||
|
||||
void NotificationClosed() override {
|
||||
content::NotificationEventDispatcher::GetInstance()
|
||||
->DispatchNonPersistentCloseEvent(notification_id_);
|
||||
->DispatchNonPersistentCloseEvent(notification_id_, base::DoNothing());
|
||||
}
|
||||
|
||||
void NotificationDisplayed() override {
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "brightray/browser/net/require_ct_delegate.h"
|
||||
#include "brightray/browser/net_log.h"
|
||||
#include "brightray/common/switches.h"
|
||||
#include "components/certificate_transparency/ct_known_logs.h"
|
||||
#include "components/network_session_configurator/common/network_switches.h"
|
||||
#include "content/public/browser/browser_thread.h"
|
||||
#include "content/public/browser/cookie_store_factory.h"
|
||||
|
@ -25,7 +26,6 @@
|
|||
#include "content/public/browser/resource_context.h"
|
||||
#include "net/base/host_mapping_rules.h"
|
||||
#include "net/cert/cert_verifier.h"
|
||||
#include "net/cert/ct_known_logs.h"
|
||||
#include "net/cert/ct_log_verifier.h"
|
||||
#include "net/cert/ct_policy_enforcer.h"
|
||||
#include "net/cert/multi_log_ct_verifier.h"
|
||||
|
@ -62,6 +62,29 @@
|
|||
|
||||
using content::BrowserThread;
|
||||
|
||||
namespace {
|
||||
|
||||
std::vector<scoped_refptr<const net::CTLogVerifier>>
|
||||
CreateLogVerifiersForKnownLogs() {
|
||||
std::vector<scoped_refptr<const net::CTLogVerifier>> verifiers;
|
||||
|
||||
for (const auto& log : certificate_transparency::GetKnownLogs()) {
|
||||
scoped_refptr<const net::CTLogVerifier> log_verifier =
|
||||
net::CTLogVerifier::Create(
|
||||
base::StringPiece(log.log_key, log.log_key_length), log.log_name,
|
||||
log.log_dns_domain);
|
||||
// Make sure no null logs enter verifiers. Parsing of all statically
|
||||
// configured logs should always succeed, unless there has been binary or
|
||||
// memory corruption.
|
||||
CHECK(log_verifier);
|
||||
verifiers.push_back(std::move(log_verifier));
|
||||
}
|
||||
|
||||
return verifiers;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
namespace brightray {
|
||||
|
||||
class ResourceContext : public content::ResourceContext {
|
||||
|
@ -347,11 +370,13 @@ net::URLRequestContext* URLRequestContextGetter::GetURLRequestContext() {
|
|||
new net::HttpServerPropertiesImpl);
|
||||
storage_->set_http_server_properties(std::move(server_properties));
|
||||
|
||||
// FIXME(jeremy): decide what to do about certificate transparency.
|
||||
std::unique_ptr<net::MultiLogCTVerifier> ct_verifier =
|
||||
std::make_unique<net::MultiLogCTVerifier>();
|
||||
ct_verifier->AddLogs(net::ct::CreateLogVerifiersForKnownLogs());
|
||||
ct_verifier->AddLogs(CreateLogVerifiersForKnownLogs());
|
||||
storage_->set_cert_transparency_verifier(std::move(ct_verifier));
|
||||
storage_->set_ct_policy_enforcer(std::make_unique<net::CTPolicyEnforcer>());
|
||||
storage_->set_ct_policy_enforcer(
|
||||
std::make_unique<net::DefaultCTPolicyEnforcer>());
|
||||
|
||||
net::HttpNetworkSession::Params network_session_params;
|
||||
network_session_params.ignore_certificate_errors = false;
|
||||
|
|
|
@ -86,12 +86,6 @@ void ViewsDelegate::AddRef() {}
|
|||
|
||||
void ViewsDelegate::ReleaseRef() {}
|
||||
|
||||
content::WebContents* ViewsDelegate::CreateWebContents(
|
||||
content::BrowserContext* browser_context,
|
||||
content::SiteInstance* site_instance) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void ViewsDelegate::OnBeforeWidgetInit(
|
||||
views::Widget::InitParams* params,
|
||||
views::internal::NativeWidgetDelegate* delegate) {
|
||||
|
|
|
@ -46,9 +46,6 @@ class ViewsDelegate : public views::ViewsDelegate {
|
|||
views::Widget* widget) override;
|
||||
void AddRef() override;
|
||||
void ReleaseRef() override;
|
||||
content::WebContents* CreateWebContents(
|
||||
content::BrowserContext* browser_context,
|
||||
content::SiteInstance* site_instance) override;
|
||||
void OnBeforeWidgetInit(
|
||||
views::Widget::InitParams* params,
|
||||
views::internal::NativeWidgetDelegate* delegate) override;
|
||||
|
|
|
@ -26,7 +26,7 @@ bool HasMainProcessKey() {
|
|||
base::FilePath MainApplicationBundlePath() {
|
||||
// Start out with the path to the running executable.
|
||||
base::FilePath path;
|
||||
PathService::Get(base::FILE_EXE, &path);
|
||||
base::PathService::Get(base::FILE_EXE, &path);
|
||||
|
||||
// Up to Contents.
|
||||
if (!HasMainProcessKey() &&
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include "brightray/common/content_client.h"
|
||||
#include "content/public/common/content_switches.h"
|
||||
#include "electron/buildflags/buildflags.h"
|
||||
#include "services/service_manager/embedder/switches.h"
|
||||
#include "ui/base/resource/resource_bundle.h"
|
||||
#include "ui/base/ui_base_switches.h"
|
||||
|
||||
|
@ -26,7 +27,7 @@ bool SubprocessNeedsResourceBundle(const std::string& process_type) {
|
|||
return
|
||||
#if defined(OS_POSIX) && !defined(OS_MACOSX)
|
||||
// The zygote process opens the resources for the renderers.
|
||||
process_type == switches::kZygoteProcess ||
|
||||
process_type == service_manager::switches::kZygoteProcess ||
|
||||
#endif
|
||||
#if defined(OS_MACOSX)
|
||||
// Mac needs them too for scrollbar related images and for sandbox
|
||||
|
@ -52,7 +53,7 @@ void LoadResourceBundle(const std::string& locale) {
|
|||
pak_dir =
|
||||
base::mac::FrameworkBundlePath().Append(FILE_PATH_LITERAL("Resources"));
|
||||
#else
|
||||
PathService::Get(base::DIR_MODULE, &pak_dir);
|
||||
base::PathService::Get(base::DIR_MODULE, &pak_dir);
|
||||
#endif
|
||||
|
||||
ui::ResourceBundle::InitSharedInstanceWithLocale(
|
||||
|
|
|
@ -41,7 +41,7 @@ void MainDelegate::OverrideChildProcessPath() {
|
|||
.Append("MacOS")
|
||||
.Append(GetApplicationName() + " Helper");
|
||||
|
||||
PathService::Override(content::CHILD_PROCESS_EXE, helper_path);
|
||||
base::PathService::Override(content::CHILD_PROCESS_EXE, helper_path);
|
||||
}
|
||||
|
||||
} // namespace brightray
|
||||
|
|
|
@ -9,3 +9,8 @@ enable_cdm_host_verification = false
|
|||
enable_extensions = false
|
||||
proprietary_codecs = true
|
||||
ffmpeg_branding = "Chrome"
|
||||
|
||||
# TODO(jeremy): OSR is broken in M68. Remove this once it's fixed.
|
||||
enable_osr = false
|
||||
|
||||
is_cfi = false
|
||||
|
|
|
@ -56,14 +56,13 @@ def execute(argv):
|
|||
|
||||
def main(argv):
|
||||
dist_zip, runtime_deps, target_cpu, target_os = argv
|
||||
dist_files = []
|
||||
dist_files = set()
|
||||
with open(runtime_deps) as f:
|
||||
for dep in f.readlines():
|
||||
dep = dep.strip()
|
||||
if dep not in dist_files:
|
||||
dist_files += [dep]
|
||||
dist_files.add(dep)
|
||||
if sys.platform == 'darwin':
|
||||
mac_zip_results = execute(['zip', '-r', '-y', dist_zip] + dist_files)
|
||||
execute(['zip', '-r', '-y', dist_zip] + list(dist_files))
|
||||
else:
|
||||
with zipfile.ZipFile(dist_zip, 'w', zipfile.ZIP_DEFLATED) as z:
|
||||
for dep in dist_files:
|
||||
|
|
|
@ -13,6 +13,8 @@ source_set("chrome") {
|
|||
"//chrome/browser/ssl/security_state_tab_helper.h",
|
||||
"//chrome/common/chrome_constants.cc",
|
||||
"//chrome/common/chrome_constants.h",
|
||||
"//chrome/common/secure_origin_whitelist.cc",
|
||||
"//chrome/common/secure_origin_whitelist.h",
|
||||
]
|
||||
public_deps = [
|
||||
"//content/public/browser",
|
||||
|
|
|
@ -44,11 +44,7 @@ void HoldRefCallback(const scoped_refptr<PrintJobWorkerOwner>& owner,
|
|||
|
||||
PrintJob::PrintJob()
|
||||
: is_job_pending_(false), is_canceling_(false), quit_factory_(this) {
|
||||
// This is normally a UI message loop, but in unit tests, the message loop is
|
||||
// of the 'default' type.
|
||||
DCHECK(base::MessageLoopForUI::IsCurrent() ||
|
||||
base::MessageLoop::current()->type() ==
|
||||
base::MessageLoop::TYPE_DEFAULT);
|
||||
DCHECK(base::MessageLoopForUI::IsCurrent());
|
||||
}
|
||||
|
||||
PrintJob::~PrintJob() {
|
||||
|
@ -188,8 +184,7 @@ bool PrintJob::FlushJob(base::TimeDelta timeout) {
|
|||
FROM_HERE, base::Bind(&PrintJob::Quit, quit_factory_.GetWeakPtr()),
|
||||
timeout);
|
||||
|
||||
base::MessageLoop::ScopedNestableTaskAllower allow(
|
||||
base::MessageLoop::current());
|
||||
base::MessageLoop::ScopedNestableTaskAllower allow;
|
||||
base::RunLoop().Run();
|
||||
|
||||
return true;
|
||||
|
|
|
@ -431,8 +431,7 @@ bool PrintViewManagerBase::RunInnerMessageLoop() {
|
|||
|
||||
// Need to enable recursive task.
|
||||
{
|
||||
base::MessageLoop::ScopedNestableTaskAllower allow(
|
||||
base::MessageLoop::current());
|
||||
base::MessageLoop::ScopedNestableTaskAllower allow;
|
||||
base::RunLoop().Run();
|
||||
}
|
||||
|
||||
|
|
|
@ -323,7 +323,7 @@ bool IsChromeProcess(pid_t pid) {
|
|||
|
||||
auto* command_line = base::CommandLine::ForCurrentProcess();
|
||||
base::FilePath exec_path(command_line->GetProgram());
|
||||
PathService::Get(base::FILE_EXE, &exec_path);
|
||||
base::PathService::Get(base::FILE_EXE, &exec_path);
|
||||
|
||||
return (!other_chrome_path.empty() &&
|
||||
other_chrome_path.BaseName() == exec_path.BaseName());
|
||||
|
@ -820,7 +820,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessWithTimeout(
|
|||
to_send.push_back(kTokenDelimiter);
|
||||
|
||||
base::FilePath current_dir;
|
||||
if (!PathService::Get(base::DIR_CURRENT, ¤t_dir))
|
||||
if (!base::PathService::Get(base::DIR_CURRENT, ¤t_dir))
|
||||
return PROCESS_NONE;
|
||||
to_send.append(current_dir.value());
|
||||
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
repo: src/third_party/boringssl/src
|
||||
patches:
|
||||
-
|
||||
author: Jeremy Apthorp <nornagon@nornagon.net>
|
||||
file: 0001-Implement-legacy-OCSP-APIs-for-libssl.patch
|
||||
description: see patch header
|
||||
-
|
||||
author: Aleksei Kuzmin <alkuzmin@microsoft.com>
|
||||
file: implement-SSL_get_tlsext_status_type.patch
|
||||
|
|
|
@ -1,741 +0,0 @@
|
|||
From 81d4909d00c3628453a8712bc331304bd01d8eaf Mon Sep 17 00:00:00 2001
|
||||
From: David Benjamin <davidben@google.com>
|
||||
Date: Thu, 10 May 2018 19:55:02 -0400
|
||||
Subject: [PATCH] Implement legacy OCSP APIs for libssl.
|
||||
|
||||
Previously, we'd omitted OpenSSL's OCSP APIs because they depend on a
|
||||
complex OCSP mechanism and encourage the the unreliable server behavior
|
||||
that hampers using OCSP stapling to fix revocation today. (OCSP
|
||||
responses should not be fetched on-demand on a callback. They should be
|
||||
managed like other server credentials and refreshed eagerly, so
|
||||
temporary CA outage does not translate to loss of OCSP.)
|
||||
|
||||
But most of the APIs are byte-oriented anyway, so they're easy to
|
||||
support. Intentionally omit the one that takes a bunch of OCSP_RESPIDs.
|
||||
|
||||
The callback is benign on the client (an artifact of OpenSSL reading
|
||||
OCSP and verifying certificates in the wrong order). On the server, it
|
||||
encourages unreliability, but pyOpenSSL/cryptography.io depends on this.
|
||||
Dcument that this is only for compatibility with legacy software.
|
||||
|
||||
Also tweak a few things for compatilibility. cryptography.io expects
|
||||
SSL_CTX_set_read_ahead to return something, SSL_get_server_tmp_key's
|
||||
signature was wrong, and cryptography.io tries to redefine
|
||||
SSL_get_server_tmp_key if SSL_CTRL_GET_SERVER_TMP_KEY is missing.
|
||||
|
||||
Change-Id: I2f99711783456bfb7324e9ad972510be8a95e845
|
||||
Reviewed-on: https://boringssl-review.googlesource.com/28404
|
||||
Commit-Queue: David Benjamin <davidben@google.com>
|
||||
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
|
||||
Reviewed-by: Adam Langley <agl@google.com>
|
||||
---
|
||||
crypto/err/ssl.errordata | 1 +
|
||||
include/openssl/ssl.h | 64 +++++++++++++--
|
||||
include/openssl/tls1.h | 1 +
|
||||
ssl/handshake.cc | 16 ++++
|
||||
ssl/handshake_server.cc | 16 ++++
|
||||
ssl/internal.h | 5 ++
|
||||
ssl/ssl_lib.cc | 39 ++++++++-
|
||||
ssl/test/bssl_shim.cc | 26 ++++++
|
||||
ssl/test/runner/alert.go | 122 +++++++++++++--------------
|
||||
ssl/test/runner/runner.go | 205 ++++++++++++++++++++++++++++++++++------------
|
||||
ssl/test/test_config.cc | 4 +
|
||||
ssl/test/test_config.h | 4 +
|
||||
12 files changed, 381 insertions(+), 122 deletions(-)
|
||||
|
||||
diff --git a/crypto/err/ssl.errordata b/crypto/err/ssl.errordata
|
||||
index 7b63bc8..375df9a 100644
|
||||
--- a/crypto/err/ssl.errordata
|
||||
+++ b/crypto/err/ssl.errordata
|
||||
@@ -108,6 +108,7 @@ SSL,266,NO_SHARED_GROUP
|
||||
SSL,280,NO_SUPPORTED_VERSIONS_ENABLED
|
||||
SSL,185,NULL_SSL_CTX
|
||||
SSL,186,NULL_SSL_METHOD_PASSED
|
||||
+SSL,289,OCSP_CB_ERROR
|
||||
SSL,187,OLD_SESSION_CIPHER_NOT_RETURNED
|
||||
SSL,268,OLD_SESSION_PRF_HASH_MISMATCH
|
||||
SSL,188,OLD_SESSION_VERSION_NOT_RETURNED
|
||||
diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h
|
||||
index 35506f7..d46a5af 100644
|
||||
--- a/include/openssl/ssl.h
|
||||
+++ b/include/openssl/ssl.h
|
||||
@@ -3715,14 +3715,14 @@ OPENSSL_EXPORT int SSL_set_tmp_rsa(SSL *ssl, const RSA *rsa);
|
||||
// SSL_CTX_get_read_ahead returns zero.
|
||||
OPENSSL_EXPORT int SSL_CTX_get_read_ahead(const SSL_CTX *ctx);
|
||||
|
||||
-// SSL_CTX_set_read_ahead does nothing.
|
||||
-OPENSSL_EXPORT void SSL_CTX_set_read_ahead(SSL_CTX *ctx, int yes);
|
||||
+// SSL_CTX_set_read_ahead returns one.
|
||||
+OPENSSL_EXPORT int SSL_CTX_set_read_ahead(SSL_CTX *ctx, int yes);
|
||||
|
||||
// SSL_get_read_ahead returns zero.
|
||||
OPENSSL_EXPORT int SSL_get_read_ahead(const SSL *ssl);
|
||||
|
||||
-// SSL_set_read_ahead does nothing.
|
||||
-OPENSSL_EXPORT void SSL_set_read_ahead(SSL *ssl, int yes);
|
||||
+// SSL_set_read_ahead returns one.
|
||||
+OPENSSL_EXPORT int SSL_set_read_ahead(SSL *ssl, int yes);
|
||||
|
||||
// SSL_renegotiate put an error on the error queue and returns zero.
|
||||
OPENSSL_EXPORT int SSL_renegotiate(SSL *ssl);
|
||||
@@ -3793,7 +3793,7 @@ OPENSSL_EXPORT const COMP_METHOD *SSL_get_current_compression(SSL *ssl);
|
||||
OPENSSL_EXPORT const COMP_METHOD *SSL_get_current_expansion(SSL *ssl);
|
||||
|
||||
// SSL_get_server_tmp_key returns zero.
|
||||
-OPENSSL_EXPORT int *SSL_get_server_tmp_key(SSL *ssl, EVP_PKEY **out_key);
|
||||
+OPENSSL_EXPORT int SSL_get_server_tmp_key(SSL *ssl, EVP_PKEY **out_key);
|
||||
|
||||
// SSL_CTX_set_tmp_dh returns 1.
|
||||
OPENSSL_EXPORT int SSL_CTX_set_tmp_dh(SSL_CTX *ctx, const DH *dh);
|
||||
@@ -4108,6 +4108,58 @@ extern "C++" OPENSSL_EXPORT void SSL_CTX_sess_set_get_cb(
|
||||
int id_len, int *out_copy));
|
||||
#endif
|
||||
|
||||
+// SSL_set_tlsext_status_type configures a client to request OCSP stapling if
|
||||
+// |type| is |TLSEXT_STATUSTYPE_ocsp| and disables it otherwise. It returns one
|
||||
+// on success and zero if handshake configuration has already been shed.
|
||||
+//
|
||||
+// Use |SSL_enable_ocsp_stapling| instead.
|
||||
+OPENSSL_EXPORT int SSL_set_tlsext_status_type(SSL *ssl, int type);
|
||||
+
|
||||
+// SSL_set_tlsext_status_ocsp_resp sets the OCSP response. It returns one on
|
||||
+// success and zero on error. On success, |ssl| takes ownership of |resp|, which
|
||||
+// must have been allocated by |OPENSSL_malloc|.
|
||||
+//
|
||||
+// Use |SSL_set_ocsp_response| instead.
|
||||
+OPENSSL_EXPORT int SSL_set_tlsext_status_ocsp_resp(SSL *ssl, uint8_t *resp,
|
||||
+ size_t resp_len);
|
||||
+
|
||||
+// SSL_get_tlsext_status_ocsp_resp sets |*out| to point to the OCSP response
|
||||
+// from the server. It returns the length of the response. If there was no
|
||||
+// response, it sets |*out| to NULL and returns zero.
|
||||
+//
|
||||
+// Use |SSL_get0_ocsp_response| instead.
|
||||
+//
|
||||
+// WARNING: the returned data is not guaranteed to be well formed.
|
||||
+OPENSSL_EXPORT size_t SSL_get_tlsext_status_ocsp_resp(const SSL *ssl,
|
||||
+ const uint8_t **out);
|
||||
+
|
||||
+// SSL_CTX_set_tlsext_status_cb configures the legacy OpenSSL OCSP callback and
|
||||
+// returns one. Though the type signature is the same, this callback has
|
||||
+// different behavior for client and server connections:
|
||||
+//
|
||||
+// For clients, the callback is called after certificate verification. It should
|
||||
+// return one for success, zero for a bad OCSP response, and a negative number
|
||||
+// for internal error. Instead, handle this as part of certificate verification.
|
||||
+// (Historically, OpenSSL verified certificates just before parsing stapled OCSP
|
||||
+// responses, but BoringSSL fixes this ordering. All server credentials are
|
||||
+// available during verification.)
|
||||
+//
|
||||
+// Do not use this callback as a server. It is provided for compatibility
|
||||
+// purposes only. For servers, it is called to configure server credentials. It
|
||||
+// should return |SSL_TLSEXT_ERR_OK| on success, |SSL_TLSEXT_ERR_NOACK| to
|
||||
+// ignore OCSP requests, or |SSL_TLSEXT_ERR_ALERT_FATAL| on error. It is usually
|
||||
+// used to fetch OCSP responses on demand, which is not ideal. Instead, treat
|
||||
+// OCSP responses like other server credentials, such as certificates or SCT
|
||||
+// lists. Configure, store, and refresh them eagerly. This avoids downtime if
|
||||
+// the CA's OCSP responder is briefly offline.
|
||||
+OPENSSL_EXPORT int SSL_CTX_set_tlsext_status_cb(SSL_CTX *ctx,
|
||||
+ int (*callback)(SSL *ssl,
|
||||
+ void *arg));
|
||||
+
|
||||
+// SSL_CTX_set_tlsext_status_arg sets additional data for
|
||||
+// |SSL_CTX_set_tlsext_status_cb|'s callback and returns one.
|
||||
+OPENSSL_EXPORT int SSL_CTX_set_tlsext_status_arg(SSL_CTX *ctx, void *arg);
|
||||
+
|
||||
|
||||
// Private structures.
|
||||
//
|
||||
@@ -4285,6 +4337,7 @@ struct ssl_session_st {
|
||||
#define SSL_CTRL_GET_NUM_RENEGOTIATIONS doesnt_exist
|
||||
#define SSL_CTRL_GET_READ_AHEAD doesnt_exist
|
||||
#define SSL_CTRL_GET_RI_SUPPORT doesnt_exist
|
||||
+#define SSL_CTRL_GET_SERVER_TMP_KEY doesnt_exist
|
||||
#define SSL_CTRL_GET_SESSION_REUSED doesnt_exist
|
||||
#define SSL_CTRL_GET_SESS_CACHE_MODE doesnt_exist
|
||||
#define SSL_CTRL_GET_SESS_CACHE_SIZE doesnt_exist
|
||||
@@ -4698,6 +4751,7 @@ OPENSSL_EXPORT bool SSL_apply_handback(SSL *ssl, Span<const uint8_t> handback);
|
||||
#define SSL_R_NEGOTIATED_TB_WITHOUT_EMS_OR_RI 285
|
||||
#define SSL_R_SERVER_ECHOED_INVALID_SESSION_ID 286
|
||||
#define SSL_R_PRIVATE_KEY_OPERATION_FAILED 287
|
||||
+#define SSL_R_OCSP_CB_ERROR 289
|
||||
#define SSL_R_SSLV3_ALERT_CLOSE_NOTIFY 1000
|
||||
#define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010
|
||||
#define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020
|
||||
diff --git a/include/openssl/tls1.h b/include/openssl/tls1.h
|
||||
index 3424f3d..7a05969 100644
|
||||
--- a/include/openssl/tls1.h
|
||||
+++ b/include/openssl/tls1.h
|
||||
@@ -237,6 +237,7 @@ extern "C" {
|
||||
#define TLSEXT_TYPE_dummy_pq_padding 54537
|
||||
|
||||
// status request value from RFC 3546
|
||||
+#define TLSEXT_STATUSTYPE_nothing (-1)
|
||||
#define TLSEXT_STATUSTYPE_ocsp 1
|
||||
|
||||
// ECPointFormat values from RFC 4492
|
||||
diff --git a/ssl/handshake.cc b/ssl/handshake.cc
|
||||
index 6432424..0a90b9f 100644
|
||||
--- a/ssl/handshake.cc
|
||||
+++ b/ssl/handshake.cc
|
||||
@@ -356,6 +356,22 @@ enum ssl_verify_result_t ssl_verify_peer_cert(SSL_HANDSHAKE *hs) {
|
||||
ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
|
||||
}
|
||||
|
||||
+ // Emulate OpenSSL's client OCSP callback. OpenSSL verifies certificates
|
||||
+ // before it receives the OCSP, so it needs a second callback for OCSP.
|
||||
+ if (ret == ssl_verify_ok && !ssl->server &&
|
||||
+ hs->new_session->ocsp_response != nullptr &&
|
||||
+ ssl->ctx->legacy_ocsp_callback != nullptr) {
|
||||
+ int cb_ret =
|
||||
+ ssl->ctx->legacy_ocsp_callback(ssl, ssl->ctx->legacy_ocsp_callback_arg);
|
||||
+ if (cb_ret <= 0) {
|
||||
+ OPENSSL_PUT_ERROR(SSL, SSL_R_OCSP_CB_ERROR);
|
||||
+ ssl_send_alert(ssl, SSL3_AL_FATAL,
|
||||
+ cb_ret == 0 ? SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE
|
||||
+ : SSL_AD_INTERNAL_ERROR);
|
||||
+ ret = ssl_verify_invalid;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
return ret;
|
||||
}
|
||||
|
||||
diff --git a/ssl/handshake_server.cc b/ssl/handshake_server.cc
|
||||
index fa8a241..7a96767 100644
|
||||
--- a/ssl/handshake_server.cc
|
||||
+++ b/ssl/handshake_server.cc
|
||||
@@ -534,6 +534,22 @@ static enum ssl_hs_wait_t do_select_certificate(SSL_HANDSHAKE *hs) {
|
||||
return ssl_hs_error;
|
||||
}
|
||||
|
||||
+ if (hs->ocsp_stapling_requested &&
|
||||
+ ssl->ctx->legacy_ocsp_callback != nullptr) {
|
||||
+ switch (ssl->ctx->legacy_ocsp_callback(
|
||||
+ ssl, ssl->ctx->legacy_ocsp_callback_arg)) {
|
||||
+ case SSL_TLSEXT_ERR_OK:
|
||||
+ break;
|
||||
+ case SSL_TLSEXT_ERR_NOACK:
|
||||
+ hs->ocsp_stapling_requested = false;
|
||||
+ break;
|
||||
+ default:
|
||||
+ OPENSSL_PUT_ERROR(SSL, SSL_R_OCSP_CB_ERROR);
|
||||
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_INTERNAL_ERROR);
|
||||
+ return ssl_hs_error;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
if (ssl_protocol_version(ssl) >= TLS1_3_VERSION) {
|
||||
// Jump to the TLS 1.3 state machine.
|
||||
hs->state = state_tls13;
|
||||
diff --git a/ssl/internal.h b/ssl/internal.h
|
||||
index d13d5f2..1cdfb8e 100644
|
||||
--- a/ssl/internal.h
|
||||
+++ b/ssl/internal.h
|
||||
@@ -2140,6 +2140,11 @@ struct SSLContext {
|
||||
// session tickets.
|
||||
const SSL_TICKET_AEAD_METHOD *ticket_aead_method;
|
||||
|
||||
+ // legacy_ocsp_callback implements an OCSP-related callback for OpenSSL
|
||||
+ // compatibility.
|
||||
+ int (*legacy_ocsp_callback)(SSL *ssl, void *arg);
|
||||
+ void *legacy_ocsp_callback_arg;
|
||||
+
|
||||
// verify_sigalgs, if not empty, is the set of signature algorithms
|
||||
// accepted from the peer in decreasing order of preference.
|
||||
uint16_t *verify_sigalgs;
|
||||
diff --git a/ssl/ssl_lib.cc b/ssl/ssl_lib.cc
|
||||
index 9f56d54..50608e9 100644
|
||||
--- a/ssl/ssl_lib.cc
|
||||
+++ b/ssl/ssl_lib.cc
|
||||
@@ -1591,9 +1591,9 @@ int SSL_CTX_get_read_ahead(const SSL_CTX *ctx) { return 0; }
|
||||
|
||||
int SSL_get_read_ahead(const SSL *ssl) { return 0; }
|
||||
|
||||
-void SSL_CTX_set_read_ahead(SSL_CTX *ctx, int yes) { }
|
||||
+int SSL_CTX_set_read_ahead(SSL_CTX *ctx, int yes) { return 1; }
|
||||
|
||||
-void SSL_set_read_ahead(SSL *ssl, int yes) { }
|
||||
+int SSL_set_read_ahead(SSL *ssl, int yes) { return 1; }
|
||||
|
||||
int SSL_pending(const SSL *ssl) {
|
||||
return static_cast<int>(ssl->s3->pending_app_data.size());
|
||||
@@ -2205,7 +2205,7 @@ const COMP_METHOD *SSL_get_current_compression(SSL *ssl) { return NULL; }
|
||||
|
||||
const COMP_METHOD *SSL_get_current_expansion(SSL *ssl) { return NULL; }
|
||||
|
||||
-int *SSL_get_server_tmp_key(SSL *ssl, EVP_PKEY **out_key) { return 0; }
|
||||
+int SSL_get_server_tmp_key(SSL *ssl, EVP_PKEY **out_key) { return 0; }
|
||||
|
||||
void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode) {
|
||||
ctx->quiet_shutdown = (mode != 0);
|
||||
@@ -2717,3 +2717,33 @@ void SSL_CTX_set_ticket_aead_method(SSL_CTX *ctx,
|
||||
const SSL_TICKET_AEAD_METHOD *aead_method) {
|
||||
ctx->ticket_aead_method = aead_method;
|
||||
}
|
||||
+
|
||||
+int SSL_set_tlsext_status_type(SSL *ssl, int type) {
|
||||
+ ssl->ocsp_stapling_enabled = type == TLSEXT_STATUSTYPE_ocsp;
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+int SSL_set_tlsext_status_ocsp_resp(SSL *ssl, uint8_t *resp, size_t resp_len) {
|
||||
+ if (SSL_set_ocsp_response(ssl, resp, resp_len)) {
|
||||
+ OPENSSL_free(resp);
|
||||
+ return 1;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+size_t SSL_get_tlsext_status_ocsp_resp(const SSL *ssl, const uint8_t **out) {
|
||||
+ size_t ret;
|
||||
+ SSL_get0_ocsp_response(ssl, out, &ret);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+int SSL_CTX_set_tlsext_status_cb(SSL_CTX *ctx,
|
||||
+ int (*callback)(SSL *ssl, void *arg)) {
|
||||
+ ctx->legacy_ocsp_callback = callback;
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+int SSL_CTX_set_tlsext_status_arg(SSL_CTX *ctx, void *arg) {
|
||||
+ ctx->legacy_ocsp_callback_arg = arg;
|
||||
+ return 1;
|
||||
+}
|
||||
diff --git a/ssl/test/bssl_shim.cc b/ssl/test/bssl_shim.cc
|
||||
index ae26ded..3a33d60 100644
|
||||
--- a/ssl/test/bssl_shim.cc
|
||||
+++ b/ssl/test/bssl_shim.cc
|
||||
@@ -495,6 +495,7 @@ static bool GetCertificate(SSL *ssl, bssl::UniquePtr<X509> *out_x509,
|
||||
return false;
|
||||
}
|
||||
if (!config->ocsp_response.empty() &&
|
||||
+ !config->set_ocsp_in_callback &&
|
||||
!SSL_set_ocsp_response(ssl, (const uint8_t *)config->ocsp_response.data(),
|
||||
config->ocsp_response.size())) {
|
||||
return false;
|
||||
@@ -1100,6 +1101,27 @@ static void MessageCallback(int is_write, int version, int content_type,
|
||||
}
|
||||
}
|
||||
|
||||
+static int LegacyOCSPCallback(SSL *ssl, void *arg) {
|
||||
+ const TestConfig *config = GetTestConfig(ssl);
|
||||
+ if (!SSL_is_server(ssl)) {
|
||||
+ return !config->fail_ocsp_callback;
|
||||
+ }
|
||||
+
|
||||
+ if (!config->ocsp_response.empty() &&
|
||||
+ config->set_ocsp_in_callback &&
|
||||
+ !SSL_set_ocsp_response(ssl, (const uint8_t *)config->ocsp_response.data(),
|
||||
+ config->ocsp_response.size())) {
|
||||
+ return SSL_TLSEXT_ERR_ALERT_FATAL;
|
||||
+ }
|
||||
+ if (config->fail_ocsp_callback) {
|
||||
+ return SSL_TLSEXT_ERR_ALERT_FATAL;
|
||||
+ }
|
||||
+ if (config->decline_ocsp_callback) {
|
||||
+ return SSL_TLSEXT_ERR_NOACK;
|
||||
+ }
|
||||
+ return SSL_TLSEXT_ERR_OK;
|
||||
+}
|
||||
+
|
||||
// Connect returns a new socket connected to localhost on |port| or -1 on
|
||||
// error.
|
||||
static int Connect(uint16_t port) {
|
||||
@@ -1334,6 +1356,10 @@ static bssl::UniquePtr<SSL_CTX> SetupCtx(SSL_CTX *old_ctx,
|
||||
SSL_CTX_set_false_start_allowed_without_alpn(ssl_ctx.get(), 1);
|
||||
}
|
||||
|
||||
+ if (config->use_ocsp_callback) {
|
||||
+ SSL_CTX_set_tlsext_status_cb(ssl_ctx.get(), LegacyOCSPCallback);
|
||||
+ }
|
||||
+
|
||||
if (old_ctx) {
|
||||
uint8_t keys[48];
|
||||
if (!SSL_CTX_get_tlsext_ticket_keys(old_ctx, &keys, sizeof(keys)) ||
|
||||
diff --git a/ssl/test/runner/alert.go b/ssl/test/runner/alert.go
|
||||
index 652e9ee..c79725e 100644
|
||||
--- a/ssl/test/runner/alert.go
|
||||
+++ b/ssl/test/runner/alert.go
|
||||
@@ -15,69 +15,71 @@ const (
|
||||
)
|
||||
|
||||
const (
|
||||
- alertCloseNotify alert = 0
|
||||
- alertEndOfEarlyData alert = 1
|
||||
- alertUnexpectedMessage alert = 10
|
||||
- alertBadRecordMAC alert = 20
|
||||
- alertDecryptionFailed alert = 21
|
||||
- alertRecordOverflow alert = 22
|
||||
- alertDecompressionFailure alert = 30
|
||||
- alertHandshakeFailure alert = 40
|
||||
- alertNoCertificate alert = 41
|
||||
- alertBadCertificate alert = 42
|
||||
- alertUnsupportedCertificate alert = 43
|
||||
- alertCertificateRevoked alert = 44
|
||||
- alertCertificateExpired alert = 45
|
||||
- alertCertificateUnknown alert = 46
|
||||
- alertIllegalParameter alert = 47
|
||||
- alertUnknownCA alert = 48
|
||||
- alertAccessDenied alert = 49
|
||||
- alertDecodeError alert = 50
|
||||
- alertDecryptError alert = 51
|
||||
- alertProtocolVersion alert = 70
|
||||
- alertInsufficientSecurity alert = 71
|
||||
- alertInternalError alert = 80
|
||||
- alertInappropriateFallback alert = 86
|
||||
- alertUserCanceled alert = 90
|
||||
- alertNoRenegotiation alert = 100
|
||||
- alertMissingExtension alert = 109
|
||||
- alertUnsupportedExtension alert = 110
|
||||
- alertUnrecognizedName alert = 112
|
||||
- alertUnknownPSKIdentity alert = 115
|
||||
- alertCertificateRequired alert = 116
|
||||
+ alertCloseNotify alert = 0
|
||||
+ alertEndOfEarlyData alert = 1
|
||||
+ alertUnexpectedMessage alert = 10
|
||||
+ alertBadRecordMAC alert = 20
|
||||
+ alertDecryptionFailed alert = 21
|
||||
+ alertRecordOverflow alert = 22
|
||||
+ alertDecompressionFailure alert = 30
|
||||
+ alertHandshakeFailure alert = 40
|
||||
+ alertNoCertificate alert = 41
|
||||
+ alertBadCertificate alert = 42
|
||||
+ alertUnsupportedCertificate alert = 43
|
||||
+ alertCertificateRevoked alert = 44
|
||||
+ alertCertificateExpired alert = 45
|
||||
+ alertCertificateUnknown alert = 46
|
||||
+ alertIllegalParameter alert = 47
|
||||
+ alertUnknownCA alert = 48
|
||||
+ alertAccessDenied alert = 49
|
||||
+ alertDecodeError alert = 50
|
||||
+ alertDecryptError alert = 51
|
||||
+ alertProtocolVersion alert = 70
|
||||
+ alertInsufficientSecurity alert = 71
|
||||
+ alertInternalError alert = 80
|
||||
+ alertInappropriateFallback alert = 86
|
||||
+ alertUserCanceled alert = 90
|
||||
+ alertNoRenegotiation alert = 100
|
||||
+ alertMissingExtension alert = 109
|
||||
+ alertUnsupportedExtension alert = 110
|
||||
+ alertUnrecognizedName alert = 112
|
||||
+ alertBadCertificateStatusResponse alert = 113
|
||||
+ alertUnknownPSKIdentity alert = 115
|
||||
+ alertCertificateRequired alert = 116
|
||||
)
|
||||
|
||||
var alertText = map[alert]string{
|
||||
- alertCloseNotify: "close notify",
|
||||
- alertEndOfEarlyData: "end of early data",
|
||||
- alertUnexpectedMessage: "unexpected message",
|
||||
- alertBadRecordMAC: "bad record MAC",
|
||||
- alertDecryptionFailed: "decryption failed",
|
||||
- alertRecordOverflow: "record overflow",
|
||||
- alertDecompressionFailure: "decompression failure",
|
||||
- alertHandshakeFailure: "handshake failure",
|
||||
- alertNoCertificate: "no certificate",
|
||||
- alertBadCertificate: "bad certificate",
|
||||
- alertUnsupportedCertificate: "unsupported certificate",
|
||||
- alertCertificateRevoked: "revoked certificate",
|
||||
- alertCertificateExpired: "expired certificate",
|
||||
- alertCertificateUnknown: "unknown certificate",
|
||||
- alertIllegalParameter: "illegal parameter",
|
||||
- alertUnknownCA: "unknown certificate authority",
|
||||
- alertAccessDenied: "access denied",
|
||||
- alertDecodeError: "error decoding message",
|
||||
- alertDecryptError: "error decrypting message",
|
||||
- alertProtocolVersion: "protocol version not supported",
|
||||
- alertInsufficientSecurity: "insufficient security level",
|
||||
- alertInternalError: "internal error",
|
||||
- alertInappropriateFallback: "inappropriate fallback",
|
||||
- alertUserCanceled: "user canceled",
|
||||
- alertNoRenegotiation: "no renegotiation",
|
||||
- alertMissingExtension: "missing extension",
|
||||
- alertUnsupportedExtension: "unsupported extension",
|
||||
- alertUnrecognizedName: "unrecognized name",
|
||||
- alertUnknownPSKIdentity: "unknown PSK identity",
|
||||
- alertCertificateRequired: "certificate required",
|
||||
+ alertCloseNotify: "close notify",
|
||||
+ alertEndOfEarlyData: "end of early data",
|
||||
+ alertUnexpectedMessage: "unexpected message",
|
||||
+ alertBadRecordMAC: "bad record MAC",
|
||||
+ alertDecryptionFailed: "decryption failed",
|
||||
+ alertRecordOverflow: "record overflow",
|
||||
+ alertDecompressionFailure: "decompression failure",
|
||||
+ alertHandshakeFailure: "handshake failure",
|
||||
+ alertNoCertificate: "no certificate",
|
||||
+ alertBadCertificate: "bad certificate",
|
||||
+ alertUnsupportedCertificate: "unsupported certificate",
|
||||
+ alertCertificateRevoked: "revoked certificate",
|
||||
+ alertCertificateExpired: "expired certificate",
|
||||
+ alertCertificateUnknown: "unknown certificate",
|
||||
+ alertIllegalParameter: "illegal parameter",
|
||||
+ alertUnknownCA: "unknown certificate authority",
|
||||
+ alertAccessDenied: "access denied",
|
||||
+ alertDecodeError: "error decoding message",
|
||||
+ alertDecryptError: "error decrypting message",
|
||||
+ alertProtocolVersion: "protocol version not supported",
|
||||
+ alertInsufficientSecurity: "insufficient security level",
|
||||
+ alertInternalError: "internal error",
|
||||
+ alertInappropriateFallback: "inappropriate fallback",
|
||||
+ alertUserCanceled: "user canceled",
|
||||
+ alertNoRenegotiation: "no renegotiation",
|
||||
+ alertMissingExtension: "missing extension",
|
||||
+ alertUnsupportedExtension: "unsupported extension",
|
||||
+ alertBadCertificateStatusResponse: "bad certificate status response",
|
||||
+ alertUnrecognizedName: "unrecognized name",
|
||||
+ alertUnknownPSKIdentity: "unknown PSK identity",
|
||||
+ alertCertificateRequired: "certificate required",
|
||||
}
|
||||
|
||||
func (e alert) String() string {
|
||||
diff --git a/ssl/test/runner/runner.go b/ssl/test/runner/runner.go
|
||||
index 510a48b..1a6d0f9 100644
|
||||
--- a/ssl/test/runner/runner.go
|
||||
+++ b/ssl/test/runner/runner.go
|
||||
@@ -4744,60 +4744,157 @@ func addStateMachineCoverageTests(config stateMachineTestConfig) {
|
||||
})
|
||||
|
||||
// OCSP stapling tests.
|
||||
- tests = append(tests, testCase{
|
||||
- testType: clientTest,
|
||||
- name: "OCSPStapling-Client",
|
||||
- config: Config{
|
||||
- MaxVersion: VersionTLS12,
|
||||
- },
|
||||
- flags: []string{
|
||||
- "-enable-ocsp-stapling",
|
||||
- "-expect-ocsp-response",
|
||||
- base64.StdEncoding.EncodeToString(testOCSPResponse),
|
||||
- "-verify-peer",
|
||||
- },
|
||||
- resumeSession: true,
|
||||
- })
|
||||
- tests = append(tests, testCase{
|
||||
- testType: serverTest,
|
||||
- name: "OCSPStapling-Server",
|
||||
- config: Config{
|
||||
- MaxVersion: VersionTLS12,
|
||||
- },
|
||||
- expectedOCSPResponse: testOCSPResponse,
|
||||
- flags: []string{
|
||||
- "-ocsp-response",
|
||||
- base64.StdEncoding.EncodeToString(testOCSPResponse),
|
||||
- },
|
||||
- resumeSession: true,
|
||||
- })
|
||||
- tests = append(tests, testCase{
|
||||
- testType: clientTest,
|
||||
- name: "OCSPStapling-Client-TLS13",
|
||||
- config: Config{
|
||||
- MaxVersion: VersionTLS13,
|
||||
- },
|
||||
- flags: []string{
|
||||
- "-enable-ocsp-stapling",
|
||||
- "-expect-ocsp-response",
|
||||
- base64.StdEncoding.EncodeToString(testOCSPResponse),
|
||||
- "-verify-peer",
|
||||
- },
|
||||
- resumeSession: true,
|
||||
- })
|
||||
- tests = append(tests, testCase{
|
||||
- testType: serverTest,
|
||||
- name: "OCSPStapling-Server-TLS13",
|
||||
- config: Config{
|
||||
- MaxVersion: VersionTLS13,
|
||||
- },
|
||||
- expectedOCSPResponse: testOCSPResponse,
|
||||
- flags: []string{
|
||||
- "-ocsp-response",
|
||||
- base64.StdEncoding.EncodeToString(testOCSPResponse),
|
||||
- },
|
||||
- resumeSession: true,
|
||||
- })
|
||||
+ for _, vers := range tlsVersions {
|
||||
+ if config.protocol == dtls && !vers.hasDTLS {
|
||||
+ continue
|
||||
+ }
|
||||
+ if vers.version == VersionSSL30 {
|
||||
+ continue
|
||||
+ }
|
||||
+ tests = append(tests, testCase{
|
||||
+ testType: clientTest,
|
||||
+ name: "OCSPStapling-Client-" + vers.name,
|
||||
+ config: Config{
|
||||
+ MaxVersion: vers.version,
|
||||
+ },
|
||||
+ tls13Variant: vers.tls13Variant,
|
||||
+ flags: []string{
|
||||
+ "-enable-ocsp-stapling",
|
||||
+ "-expect-ocsp-response",
|
||||
+ base64.StdEncoding.EncodeToString(testOCSPResponse),
|
||||
+ "-verify-peer",
|
||||
+ },
|
||||
+ resumeSession: true,
|
||||
+ })
|
||||
+ tests = append(tests, testCase{
|
||||
+ testType: serverTest,
|
||||
+ name: "OCSPStapling-Server-" + vers.name,
|
||||
+ config: Config{
|
||||
+ MaxVersion: vers.version,
|
||||
+ },
|
||||
+ tls13Variant: vers.tls13Variant,
|
||||
+ expectedOCSPResponse: testOCSPResponse,
|
||||
+ flags: []string{
|
||||
+ "-ocsp-response",
|
||||
+ base64.StdEncoding.EncodeToString(testOCSPResponse),
|
||||
+ },
|
||||
+ resumeSession: true,
|
||||
+ })
|
||||
+
|
||||
+ // The client OCSP callback is an alternate certificate
|
||||
+ // verification callback.
|
||||
+ tests = append(tests, testCase{
|
||||
+ testType: clientTest,
|
||||
+ name: "ClientOCSPCallback-Pass-" + vers.name,
|
||||
+ config: Config{
|
||||
+ MaxVersion: vers.version,
|
||||
+ Certificates: []Certificate{rsaCertificate},
|
||||
+ },
|
||||
+ tls13Variant: vers.tls13Variant,
|
||||
+ flags: []string{
|
||||
+ "-enable-ocsp-stapling",
|
||||
+ "-use-ocsp-callback",
|
||||
+ },
|
||||
+ })
|
||||
+ var expectedLocalError string
|
||||
+ if !config.async {
|
||||
+ // TODO(davidben): Asynchronous fatal alerts are never
|
||||
+ // sent. https://crbug.com/boringssl/130.
|
||||
+ expectedLocalError = "remote error: bad certificate status response"
|
||||
+ }
|
||||
+ tests = append(tests, testCase{
|
||||
+ testType: clientTest,
|
||||
+ name: "ClientOCSPCallback-Fail-" + vers.name,
|
||||
+ config: Config{
|
||||
+ MaxVersion: vers.version,
|
||||
+ Certificates: []Certificate{rsaCertificate},
|
||||
+ },
|
||||
+ tls13Variant: vers.tls13Variant,
|
||||
+ flags: []string{
|
||||
+ "-enable-ocsp-stapling",
|
||||
+ "-use-ocsp-callback",
|
||||
+ "-fail-ocsp-callback",
|
||||
+ },
|
||||
+ shouldFail: true,
|
||||
+ expectedLocalError: expectedLocalError,
|
||||
+ expectedError: ":OCSP_CB_ERROR:",
|
||||
+ })
|
||||
+ // The callback does not run if the server does not send an
|
||||
+ // OCSP response.
|
||||
+ certNoStaple := rsaCertificate
|
||||
+ certNoStaple.OCSPStaple = nil
|
||||
+ tests = append(tests, testCase{
|
||||
+ testType: clientTest,
|
||||
+ name: "ClientOCSPCallback-FailNoStaple-" + vers.name,
|
||||
+ config: Config{
|
||||
+ MaxVersion: vers.version,
|
||||
+ Certificates: []Certificate{certNoStaple},
|
||||
+ },
|
||||
+ tls13Variant: vers.tls13Variant,
|
||||
+ flags: []string{
|
||||
+ "-enable-ocsp-stapling",
|
||||
+ "-use-ocsp-callback",
|
||||
+ "-fail-ocsp-callback",
|
||||
+ },
|
||||
+ })
|
||||
+
|
||||
+ // The server OCSP callback is a legacy mechanism for
|
||||
+ // configuring OCSP, used by unreliable server software.
|
||||
+ tests = append(tests, testCase{
|
||||
+ testType: serverTest,
|
||||
+ name: "ServerOCSPCallback-SetInCallback-" + vers.name,
|
||||
+ config: Config{
|
||||
+ MaxVersion: vers.version,
|
||||
+ },
|
||||
+ tls13Variant: vers.tls13Variant,
|
||||
+ expectedOCSPResponse: testOCSPResponse,
|
||||
+ flags: []string{
|
||||
+ "-use-ocsp-callback",
|
||||
+ "-set-ocsp-in-callback",
|
||||
+ "-ocsp-response",
|
||||
+ base64.StdEncoding.EncodeToString(testOCSPResponse),
|
||||
+ },
|
||||
+ resumeSession: true,
|
||||
+ })
|
||||
+
|
||||
+ // The callback may decline OCSP, in which case we act as if
|
||||
+ // the client did not support it, even if a response was
|
||||
+ // configured.
|
||||
+ tests = append(tests, testCase{
|
||||
+ testType: serverTest,
|
||||
+ name: "ServerOCSPCallback-Decline-" + vers.name,
|
||||
+ config: Config{
|
||||
+ MaxVersion: vers.version,
|
||||
+ },
|
||||
+ tls13Variant: vers.tls13Variant,
|
||||
+ expectedOCSPResponse: []byte{},
|
||||
+ flags: []string{
|
||||
+ "-use-ocsp-callback",
|
||||
+ "-decline-ocsp-callback",
|
||||
+ "-ocsp-response",
|
||||
+ base64.StdEncoding.EncodeToString(testOCSPResponse),
|
||||
+ },
|
||||
+ resumeSession: true,
|
||||
+ })
|
||||
+
|
||||
+ // The callback may also signal an internal error.
|
||||
+ tests = append(tests, testCase{
|
||||
+ testType: serverTest,
|
||||
+ name: "ServerOCSPCallback-Fail-" + vers.name,
|
||||
+ config: Config{
|
||||
+ MaxVersion: vers.version,
|
||||
+ },
|
||||
+ tls13Variant: vers.tls13Variant,
|
||||
+ flags: []string{
|
||||
+ "-use-ocsp-callback",
|
||||
+ "-fail-ocsp-callback",
|
||||
+ "-ocsp-response",
|
||||
+ base64.StdEncoding.EncodeToString(testOCSPResponse),
|
||||
+ },
|
||||
+ shouldFail: true,
|
||||
+ expectedError: ":OCSP_CB_ERROR:",
|
||||
+ })
|
||||
+ }
|
||||
|
||||
// Certificate verification tests.
|
||||
for _, vers := range tlsVersions {
|
||||
diff --git a/ssl/test/test_config.cc b/ssl/test/test_config.cc
|
||||
index f50251d..3afb01b 100644
|
||||
--- a/ssl/test/test_config.cc
|
||||
+++ b/ssl/test/test_config.cc
|
||||
@@ -133,6 +133,10 @@ const Flag<bool> kBoolFlags[] = {
|
||||
{ "-expect-draft-downgrade", &TestConfig::expect_draft_downgrade },
|
||||
{ "-handoff", &TestConfig::handoff },
|
||||
{ "-expect-dummy-pq-padding", &TestConfig::expect_dummy_pq_padding },
|
||||
+ { "-use-ocsp-callback", &TestConfig::use_ocsp_callback },
|
||||
+ { "-set-ocsp-in-callback", &TestConfig::set_ocsp_in_callback },
|
||||
+ { "-decline-ocsp-callback", &TestConfig::decline_ocsp_callback },
|
||||
+ { "-fail-ocsp-callback", &TestConfig::fail_ocsp_callback },
|
||||
};
|
||||
|
||||
const Flag<std::string> kStringFlags[] = {
|
||||
diff --git a/ssl/test/test_config.h b/ssl/test/test_config.h
|
||||
index fb479d1..a9eec62 100644
|
||||
--- a/ssl/test/test_config.h
|
||||
+++ b/ssl/test/test_config.h
|
||||
@@ -154,6 +154,10 @@ struct TestConfig {
|
||||
int dummy_pq_padding_len = 0;
|
||||
bool handoff = false;
|
||||
bool expect_dummy_pq_padding = false;
|
||||
+ bool use_ocsp_callback = false;
|
||||
+ bool set_ocsp_in_callback = false;
|
||||
+ bool decline_ocsp_callback = false;
|
||||
+ bool fail_ocsp_callback = false;
|
||||
};
|
||||
|
||||
bool ParseConfig(int argc, char **argv, TestConfig *out_initial,
|
||||
--
|
||||
2.7.4
|
||||
|
|
@ -20,7 +20,7 @@ index 0c004fd4..6c849b5b 100644
|
|||
}
|
||||
|
||||
+int SSL_get_tlsext_status_type(SSL *ssl) {
|
||||
+ if (ssl->ocsp_stapling_enabled) {
|
||||
+ if (ssl->config->ocsp_stapling_enabled) {
|
||||
+ return TLSEXT_STATUSTYPE_ocsp;
|
||||
+ }
|
||||
+
|
||||
|
|
|
@ -45,7 +45,6 @@ patches:
|
|||
base/memory/weak_ptr.cc
|
||||
base/process/kill_win.cc
|
||||
components/viz/service/display/program_binding.h
|
||||
components/viz/service/display_embedder/server_shared_bitmap_manager.cc
|
||||
content/browser/frame_host/navigation_controller_impl.cc
|
||||
content/browser/frame_host/render_frame_host_impl.cc
|
||||
content/browser/renderer_host/render_widget_host_view_mac.mm
|
||||
|
@ -442,8 +441,8 @@ patches:
|
|||
author: Aleksei Kuzmin <alkuzmin@microsoft.com>
|
||||
file: exclude-a-few-test-files-from-build.patch
|
||||
description: |
|
||||
Compilation of those files fails with the Chromium 67.
|
||||
Remove the patch during the Chromium 68 upgrade.
|
||||
Compilation of those files fails with the Chromium 68.
|
||||
Remove the patch during the Chromium 69 upgrade.
|
||||
-
|
||||
author: deepak1556 <hop2deep@gmail.com>
|
||||
file: disable_extensions_gn.patch
|
||||
|
@ -452,9 +451,7 @@ patches:
|
|||
-
|
||||
author: Jeremy Apthorp <nornagon@nornagon.net>
|
||||
file: crashpad_http_status.patch
|
||||
description: |
|
||||
Accept all HTTP codes in [200, 300) as successful, instead of just 200.
|
||||
For example HockeyApp responds with 202.
|
||||
description: backport of crashpad f540abb506
|
||||
-
|
||||
author: Jeremy Apthorp <jeremya@chromium.org>
|
||||
file: backport_cd7154e0bb5.patch
|
||||
|
@ -477,3 +474,19 @@ patches:
|
|||
desktop capture api.
|
||||
* Backports https://chromium-review.googlesource.com/c/chromium/src/+/1199806
|
||||
that fixes crash with screen capturer, can be removed in 71.0.3539.0
|
||||
-
|
||||
author: Jeremy Apthorp <jeremya@chromium.org>
|
||||
file: expose-net-observer-api.patch
|
||||
description: |
|
||||
Expose URLRequestContextGetter::{Add,Remove}Observer.
|
||||
This patch should be removed once we switch to using the net service (cc @robo)
|
||||
-
|
||||
author: Aleksei Kuzmin <alkuzmin@microsoft.com>
|
||||
file: backport_7167a9eac.patch
|
||||
description: |
|
||||
"viz: Remove the global ServerSharedBitmapManager."
|
||||
https://chromium-review.googlesource.com/802574
|
||||
Landed in 69.0.3447.0.
|
||||
See https://github.com/electron/electron/issues/14327
|
||||
(Android specific changes and changes in some test files
|
||||
have been removed from the diff.)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/ui/base/accelerators/accelerator.cc b/ui/base/accelerators/accelerator.cc
|
||||
index a6756c2..5352958 100644
|
||||
index a6756c20f22c..53529588af27 100644
|
||||
--- a/ui/base/accelerators/accelerator.cc
|
||||
+++ b/ui/base/accelerators/accelerator.cc
|
||||
@@ -11,6 +11,7 @@
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/base/BUILD.gn b/base/BUILD.gn
|
||||
index b674e703617d..5a7a11d816cf 100644
|
||||
index 943412faefd7..c505df950b2b 100644
|
||||
--- a/base/BUILD.gn
|
||||
+++ b/base/BUILD.gn
|
||||
@@ -1131,7 +1131,7 @@ component("base") {
|
||||
@@ -1217,7 +1217,7 @@ jumbo_component("base") {
|
||||
# Needed for <atomic> if using newer C++ library than sysroot, except if
|
||||
# building inside the cros_sdk environment - use host_toolchain as a
|
||||
# more robust check for this.
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
diff --git a/gin/array_buffer.cc b/gin/array_buffer.cc
|
||||
index f84934bfd712..63bce16a9d06 100644
|
||||
index f84934bfd712..fc23fef68b6f 100644
|
||||
--- a/gin/array_buffer.cc
|
||||
+++ b/gin/array_buffer.cc
|
||||
@@ -43,6 +43,10 @@ void* ArrayBufferAllocator::AllocateUninitialized(size_t length) {
|
||||
return malloc(length);
|
||||
}
|
||||
|
||||
|
||||
+void* ArrayBufferAllocator::Realloc(void* data, size_t length) {
|
||||
+ return realloc(data, length);
|
||||
+}
|
||||
|
@ -14,7 +14,7 @@ index f84934bfd712..63bce16a9d06 100644
|
|||
free(data);
|
||||
}
|
||||
diff --git a/gin/array_buffer.h b/gin/array_buffer.h
|
||||
index 2aef366ac819..c037808a9bb3 100644
|
||||
index 2aef366ac819..3c7d66c81032 100644
|
||||
--- a/gin/array_buffer.h
|
||||
+++ b/gin/array_buffer.h
|
||||
@@ -21,6 +21,7 @@ class ArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
|
||||
|
@ -23,8 +23,23 @@ index 2aef366ac819..c037808a9bb3 100644
|
|||
void* AllocateUninitialized(size_t length) override;
|
||||
+ void* Realloc(void* data, size_t length) override;
|
||||
void Free(void* data, size_t length) override;
|
||||
|
||||
|
||||
GIN_EXPORT static ArrayBufferAllocator* SharedInstance();
|
||||
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
|
||||
index c8c822632a69..d12976b3cd01 100644
|
||||
--- a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
|
||||
+++ b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
|
||||
@@ -619,6 +619,10 @@ class ArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
|
||||
size, WTF::ArrayBufferContents::kDontInitialize);
|
||||
}
|
||||
|
||||
+ void* Realloc(void* data, size_t size) override {
|
||||
+ return WTF::ArrayBufferContents::Realloc(data, size);
|
||||
+ }
|
||||
+
|
||||
void Free(void* data, size_t size) override {
|
||||
WTF::ArrayBufferContents::FreeMemory(data);
|
||||
}
|
||||
diff --git a/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.cc b/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.cc
|
||||
index 053babce1051..e33d6d4ceb5a 100644
|
||||
--- a/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.cc
|
||||
|
@ -53,18 +68,3 @@ index 809229caa872..6248ad32d6b0 100644
|
|||
static void FreeMemory(void*);
|
||||
static DataHandle CreateDataHandle(size_t, InitializationPolicy);
|
||||
static void Initialize(
|
||||
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
|
||||
index cf2762ede559..f065b5ebafb8 100644
|
||||
--- a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
|
||||
+++ b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
|
||||
@@ -555,6 +555,10 @@ class ArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
|
||||
size, WTF::ArrayBufferContents::kDontInitialize);
|
||||
}
|
||||
|
||||
+ void* Realloc(void* data, size_t size) override {
|
||||
+ return WTF::ArrayBufferContents::Realloc(data, size);
|
||||
+ }
|
||||
+
|
||||
void Free(void* data, size_t size) override {
|
||||
WTF::ArrayBufferContents::FreeMemory(data);
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/base/process/launch.h b/base/process/launch.h
|
||||
index 20b76fc..9db73bf 100644
|
||||
index b4530b755a23..d6f02d9ab2e3 100644
|
||||
--- a/base/process/launch.h
|
||||
+++ b/base/process/launch.h
|
||||
@@ -147,7 +147,7 @@ struct BASE_EXPORT LaunchOptions {
|
||||
@@ -176,7 +176,7 @@ struct BASE_EXPORT LaunchOptions {
|
||||
|
||||
// By default, child processes will have the PR_SET_NO_NEW_PRIVS bit set. If
|
||||
// true, then this bit will not be set in the new child process.
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc
|
||||
index 0c57d20..0916ed0 100644
|
||||
index 1c1fb59e02c8..86b87e294336 100644
|
||||
--- a/content/browser/loader/resource_dispatcher_host_impl.cc
|
||||
+++ b/content/browser/loader/resource_dispatcher_host_impl.cc
|
||||
@@ -1870,6 +1870,8 @@ void ResourceDispatcherHostImpl::BeginNavigationRequest(
|
||||
@@ -1597,6 +1597,8 @@ void ResourceDispatcherHostImpl::BeginNavigationRequest(
|
||||
!policy->IsWebSafeScheme(info.common_params.url.scheme()) &&
|
||||
!is_external_protocol;
|
||||
|
||||
+ non_web_url_in_guest = false;
|
||||
+
|
||||
if (is_shutdown_ || non_web_url_in_guest ||
|
||||
(delegate_ && !delegate_->ShouldBeginRequest(
|
||||
info.common_params.method,
|
||||
if (is_shutdown_ || non_web_url_in_guest) {
|
||||
url_loader_client->OnComplete(
|
||||
network::URLLoaderCompletionStatus(net::ERR_ABORTED));
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/chrome/browser/ui/libgtkui/app_indicator_icon_menu.cc b/chrome/browser/ui/libgtkui/app_indicator_icon_menu.cc
|
||||
index 91674b9..8a4c391 100644
|
||||
index 40399a35f8d2..1d3a0da948dc 100644
|
||||
--- a/chrome/browser/ui/libgtkui/app_indicator_icon_menu.cc
|
||||
+++ b/chrome/browser/ui/libgtkui/app_indicator_icon_menu.cc
|
||||
@@ -116,7 +116,7 @@ void AppIndicatorIconMenu::OnMenuItemActivated(GtkWidget* menu_item) {
|
||||
|
|
1298
patches/common/chromium/backport_7167a9eac.patch
Normal file
1298
patches/common/chromium/backport_7167a9eac.patch
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,12 +1,14 @@
|
|||
diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc
|
||||
index bf4b1d0..a3b72c4 100644
|
||||
@@ -995,7 +996,8 @@
|
||||
|
||||
index bf4b1d07f7fe..8435c60a0786 100644
|
||||
--- a/ui/views/widget/widget.cc
|
||||
+++ b/ui/views/widget/widget.cc
|
||||
@@ -995,7 +995,8 @@ bool Widget::IsTranslucentWindowOpacitySupported() const {
|
||||
|
||||
void Widget::OnSizeConstraintsChanged() {
|
||||
native_widget_->OnSizeConstraintsChanged();
|
||||
- non_client_view_->SizeConstraintsChanged();
|
||||
+ if (non_client_view_)
|
||||
+ non_client_view_->SizeConstraintsChanged();
|
||||
}
|
||||
|
||||
|
||||
void Widget::OnOwnerClosing() {}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/third_party/blink/renderer/core/workers/worker_classic_script_loader.cc b/third_party/blink/renderer/core/workers/worker_classic_script_loader.cc
|
||||
index bdd886eff5e3..42a3f0ef6e55 100644
|
||||
index 4b47f551f366..227c58a5629d 100644
|
||||
--- a/third_party/blink/renderer/core/workers/worker_classic_script_loader.cc
|
||||
+++ b/third_party/blink/renderer/core/workers/worker_classic_script_loader.cc
|
||||
@@ -255,7 +255,6 @@ void WorkerScriptLoader::ProcessContentSecurityPolicy(
|
||||
@@ -246,7 +246,6 @@ void WorkerClassicScriptLoader::ProcessContentSecurityPolicy(
|
||||
// document (which is implemented in WorkerMessagingProxy, and
|
||||
// m_contentSecurityPolicy should be left as nullptr to inherit the policy).
|
||||
if (!response.Url().ProtocolIs("blob") &&
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/third_party/blink/renderer/core/fileapi/file.h b/third_party/blink/renderer/core/fileapi/file.h
|
||||
index 0bfe29512050..81439f7ab8f7 100644
|
||||
index 39831f1902c6..fddb013aa122 100644
|
||||
--- a/third_party/blink/renderer/core/fileapi/file.h
|
||||
+++ b/third_party/blink/renderer/core/fileapi/file.h
|
||||
@@ -170,6 +170,9 @@ class CORE_EXPORT File final : public Blob {
|
||||
@@ -168,6 +168,9 @@ class CORE_EXPORT File final : public Blob {
|
||||
}
|
||||
const String& name() const { return name_; }
|
||||
|
||||
|
@ -13,7 +13,7 @@ index 0bfe29512050..81439f7ab8f7 100644
|
|||
// http://dev.w3.org/2006/webapi/FileAPI/#file-attrs
|
||||
long long lastModified() const;
|
||||
diff --git a/third_party/blink/renderer/core/fileapi/file.idl b/third_party/blink/renderer/core/fileapi/file.idl
|
||||
index df954bc8f818..4683b2853bb4 100644
|
||||
index a74beceda3e7..7196fd5f5f9e 100644
|
||||
--- a/third_party/blink/renderer/core/fileapi/file.idl
|
||||
+++ b/third_party/blink/renderer/core/fileapi/file.idl
|
||||
@@ -32,6 +32,7 @@
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
cdiff --git a/third_party/blink/renderer/platform/bindings/v8_object_constructor.cc b/third_party/blink/renderer/platform/bindings/v8_object_constructor.cc
|
||||
index aedc832..8c26681 100644
|
||||
diff --git a/third_party/blink/renderer/platform/bindings/v8_object_constructor.cc b/third_party/blink/renderer/platform/bindings/v8_object_constructor.cc
|
||||
index 87f2176ce897..ce3d9ce19bff 100644
|
||||
--- a/third_party/blink/renderer/platform/bindings/v8_object_constructor.cc
|
||||
+++ b/third_party/blink/renderer/platform/bindings/v8_object_constructor.cc
|
||||
@@ -94,8 +94,10 @@ v8::Local<v8::Function> V8ObjectConstructor::CreateInterfaceObject(
|
||||
@@ -98,8 +98,10 @@ v8::Local<v8::Function> V8ObjectConstructor::CreateInterfaceObject(
|
||||
bool get_prototype_value =
|
||||
interface_object->Get(context, V8AtomicString(isolate, "prototype"))
|
||||
.ToLocal(&prototype_value);
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/third_party/blink/renderer/bindings/core/v8/local_window_proxy.cc b/third_party/blink/renderer/bindings/core/v8/local_window_proxy.cc
|
||||
index 33d958fb31ae..47efe62650aa 100644
|
||||
index 5c00e3e935b2..43f882eb0883 100644
|
||||
--- a/third_party/blink/renderer/bindings/core/v8/local_window_proxy.cc
|
||||
+++ b/third_party/blink/renderer/bindings/core/v8/local_window_proxy.cc
|
||||
@@ -170,11 +170,11 @@ void LocalWindowProxy::Initialize() {
|
||||
@@ -171,11 +171,11 @@ void LocalWindowProxy::Initialize() {
|
||||
GetFrame()->IsMainFrame());
|
||||
MainThreadDebugger::Instance()->ContextCreated(script_state_.get(),
|
||||
GetFrame(), origin);
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
|
||||
index 97a5393d40b4..04f88dd2ea15 100644
|
||||
index 5686e6a06d6f..4798d7e36bec 100644
|
||||
--- a/third_party/blink/renderer/core/frame/local_frame.cc
|
||||
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
|
||||
@@ -303,10 +303,6 @@ void LocalFrame::Detach(FrameDetachType type) {
|
||||
@@ -382,10 +382,6 @@ void LocalFrame::Detach(FrameDetachType type) {
|
||||
}
|
||||
CHECK(!view_ || !view_->IsAttached());
|
||||
|
||||
|
@ -13,7 +13,7 @@ index 97a5393d40b4..04f88dd2ea15 100644
|
|||
if (!Client())
|
||||
return;
|
||||
|
||||
@@ -316,6 +312,10 @@ void LocalFrame::Detach(FrameDetachType type) {
|
||||
@@ -403,6 +399,10 @@ void LocalFrame::Detach(FrameDetachType type) {
|
||||
// Notify ScriptController that the frame is closing, since its cleanup ends
|
||||
// up calling back to LocalFrameClient via WindowProxy.
|
||||
GetScriptController().ClearForClose();
|
||||
|
|
|
@ -1,8 +1,22 @@
|
|||
diff --git a/third_party/blink/public/web/web_local_frame.h b/third_party/blink/public/web/web_local_frame.h
|
||||
index 601242f8df12..8cb523f82df0 100644
|
||||
--- a/third_party/blink/public/web/web_local_frame.h
|
||||
+++ b/third_party/blink/public/web/web_local_frame.h
|
||||
@@ -427,6 +427,9 @@ class WebLocalFrame : public WebFrame {
|
||||
// be calling this API.
|
||||
virtual v8::Local<v8::Context> MainWorldScriptContext() const = 0;
|
||||
|
||||
+ virtual v8::Local<v8::Context> WorldScriptContext(
|
||||
+ v8::Isolate* isolate, int world_id) const = 0;
|
||||
+
|
||||
// Executes script in the context of the current page and returns the value
|
||||
// that the script evaluated to with callback. Script execution can be
|
||||
// suspend.
|
||||
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
|
||||
index a93834fbe86e..937b7f335693 100644
|
||||
index db86ae3c5eb4..602841d00df4 100644
|
||||
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
|
||||
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
|
||||
@@ -843,6 +843,13 @@ v8::Local<v8::Object> WebLocalFrameImpl::GlobalProxy() const {
|
||||
@@ -892,6 +892,13 @@ v8::Local<v8::Object> WebLocalFrameImpl::GlobalProxy() const {
|
||||
return MainWorldScriptContext()->Global();
|
||||
}
|
||||
|
||||
|
@ -17,10 +31,10 @@ index a93834fbe86e..937b7f335693 100644
|
|||
return BindingSecurity::ShouldAllowAccessToFrame(
|
||||
CurrentDOMWindow(V8PerIsolateData::MainThreadIsolate()),
|
||||
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.h b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
|
||||
index d66499296ff8..bfea68983fda 100644
|
||||
index 0adc92eb48f2..a17891ce397c 100644
|
||||
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.h
|
||||
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
|
||||
@@ -142,6 +142,8 @@ class CORE_EXPORT WebLocalFrameImpl final
|
||||
@@ -144,6 +144,8 @@ class CORE_EXPORT WebLocalFrameImpl final
|
||||
int argc,
|
||||
v8::Local<v8::Value> argv[]) override;
|
||||
v8::Local<v8::Context> MainWorldScriptContext() const override;
|
||||
|
@ -28,18 +42,4 @@ index d66499296ff8..bfea68983fda 100644
|
|||
+ v8::Isolate* isolate, int world_id) const override;
|
||||
v8::Local<v8::Object> GlobalProxy() const override;
|
||||
void Reload(WebFrameLoadType) override;
|
||||
void ReloadWithOverrideURL(const WebURL& override_url,
|
||||
diff --git a/third_party/blink/public/web/web_local_frame.h b/third_party/blink/public/web/web_local_frame.h
|
||||
index ad0fa84f9511..69f96587b1f1 100644
|
||||
--- a/third_party/blink/public/web/web_local_frame.h
|
||||
+++ b/third_party/blink/public/web/web_local_frame.h
|
||||
@@ -404,6 +404,9 @@ class WebLocalFrame : public WebFrame {
|
||||
// be calling this API.
|
||||
virtual v8::Local<v8::Context> MainWorldScriptContext() const = 0;
|
||||
|
||||
+ virtual v8::Local<v8::Context> WorldScriptContext(
|
||||
+ v8::Isolate* isolate, int world_id) const = 0;
|
||||
+
|
||||
// Executes script in the context of the current page and returns the value
|
||||
// that the script evaluated to with callback. Script execution can be
|
||||
// suspend.
|
||||
void ReloadImage(const WebNode&) override;
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
diff --git a/third_party/boringssl/BUILD.gn b/third_party/boringssl/BUILD.gn
|
||||
index c75fb7c2bb7e..423f4b2ddb10 100644
|
||||
index d31a9f29fa9c..dea5a6403f4c 100644
|
||||
--- a/third_party/boringssl/BUILD.gn
|
||||
+++ b/third_party/boringssl/BUILD.gn
|
||||
@@ -44,6 +44,13 @@ config("no_asm_config") {
|
||||
}
|
||||
@@ -46,6 +46,13 @@ config("no_asm_config") {
|
||||
|
||||
all_sources = crypto_sources + ssl_sources
|
||||
all_headers = crypto_headers + ssl_headers
|
||||
+if (is_electron_build) {
|
||||
+ # Needed to build a nodejs-compatible boringssl.
|
||||
+ all_sources += [
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/content/browser/renderer_host/browser_compositor_view_mac.h b/content/browser/renderer_host/browser_compositor_view_mac.h
|
||||
index 7426062f7381..bd5cd2fcd230 100644
|
||||
index bc9eba153a6a..5200f79afd05 100644
|
||||
--- a/content/browser/renderer_host/browser_compositor_view_mac.h
|
||||
+++ b/content/browser/renderer_host/browser_compositor_view_mac.h
|
||||
@@ -54,10 +54,13 @@ class CONTENT_EXPORT BrowserCompositorMac : public DelegatedFrameHostClient {
|
||||
@@ -59,6 +59,8 @@ class CONTENT_EXPORT BrowserCompositorMac : public DelegatedFrameHostClient,
|
||||
// These will not return nullptr until Destroy is called.
|
||||
DelegatedFrameHost* GetDelegatedFrameHost();
|
||||
|
||||
|
@ -11,16 +11,19 @@ index 7426062f7381..bd5cd2fcd230 100644
|
|||
// Ensure that the currect compositor frame be cleared (even if it is
|
||||
// potentially visible).
|
||||
void ClearCompositorFrame();
|
||||
@@ -69,6 +71,7 @@ class CONTENT_EXPORT BrowserCompositorMac : public DelegatedFrameHostClient,
|
||||
// no valid frame is available.
|
||||
const gfx::CALayerParams* GetLastCALayerParams() const;
|
||||
|
||||
+ ui::Compositor* GetCompositor();
|
||||
gfx::AcceleratedWidget GetAcceleratedWidget();
|
||||
void DidCreateNewRendererCompositorFrameSink(
|
||||
viz::mojom::CompositorFrameSinkClient* renderer_compositor_frame_sink);
|
||||
diff --git a/content/browser/renderer_host/browser_compositor_view_mac.mm b/content/browser/renderer_host/browser_compositor_view_mac.mm
|
||||
index 7fcc24c15c37..7c31977b20f9 100644
|
||||
index 3d12a1126a0d..7a60368b2c8a 100644
|
||||
--- a/content/browser/renderer_host/browser_compositor_view_mac.mm
|
||||
+++ b/content/browser/renderer_host/browser_compositor_view_mac.mm
|
||||
@@ -208,6 +208,12 @@ BrowserCompositorMac::~BrowserCompositorMac() {
|
||||
@@ -240,6 +240,12 @@ BrowserCompositorMac::~BrowserCompositorMac() {
|
||||
g_spare_recyclable_compositors.Get().clear();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/content/browser/browser_plugin/browser_plugin_guest.cc b/content/browser/browser_plugin/browser_plugin_guest.cc
|
||||
index 964c9a093a3b..f3b3d66ff267 100644
|
||||
index a0bc9305e62d..7f022f6cfda7 100644
|
||||
--- a/content/browser/browser_plugin/browser_plugin_guest.cc
|
||||
+++ b/content/browser/browser_plugin/browser_plugin_guest.cc
|
||||
@@ -214,8 +214,11 @@ void BrowserPluginGuest::Init() {
|
||||
@@ -207,8 +207,11 @@ void BrowserPluginGuest::Init() {
|
||||
|
||||
WebContentsImpl* owner_web_contents = static_cast<WebContentsImpl*>(
|
||||
delegate_->GetOwnerWebContents());
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin.cc
|
||||
index 06762fb..e89b1f0 100644
|
||||
index d64895137a73..c42dd6ddf172 100644
|
||||
--- a/content/renderer/browser_plugin/browser_plugin.cc
|
||||
+++ b/content/renderer/browser_plugin/browser_plugin.cc
|
||||
@@ -448,15 +448,11 @@ blink::WebInputEventResult BrowserPlugin::handleInputEvent(
|
||||
@@ -642,15 +642,11 @@ blink::WebInputEventResult BrowserPlugin::HandleInputEvent(
|
||||
|
||||
DCHECK(!blink::WebInputEvent::IsTouchEventType(event.GetType()));
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn
|
||||
index 9e38ee0e592b..bd54ce154b13 100644
|
||||
index 93a97ff2803f..02c469e930a1 100644
|
||||
--- a/build/config/BUILDCONFIG.gn
|
||||
+++ b/build/config/BUILDCONFIG.gn
|
||||
@@ -123,6 +123,9 @@ if (current_os == "") {
|
||||
|
@ -12,7 +12,7 @@ index 9e38ee0e592b..bd54ce154b13 100644
|
|||
# Set to enable the official build level of optimization. This has nothing
|
||||
# to do with branding, but enables an additional level of optimization above
|
||||
# release (!is_debug). This might be better expressed as a tri-state
|
||||
@@ -539,6 +542,7 @@ default_compiler_configs = [
|
||||
@@ -527,6 +531,7 @@ default_compiler_configs = [
|
||||
"//build/config/compiler:thin_archive",
|
||||
"//build/config/coverage:default_coverage",
|
||||
"//build/config/sanitizers:default_sanitizer_flags",
|
||||
|
@ -21,10 +21,10 @@ index 9e38ee0e592b..bd54ce154b13 100644
|
|||
|
||||
if (is_win) {
|
||||
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
|
||||
index 9a10137aa405..bb33e5450eaa 100644
|
||||
index 83337d52e4b9..8ec56ca46c74 100644
|
||||
--- a/build/config/compiler/BUILD.gn
|
||||
+++ b/build/config/compiler/BUILD.gn
|
||||
@@ -579,10 +579,13 @@ config("compiler") {
|
||||
@@ -636,10 +636,13 @@ config("compiler") {
|
||||
ldflags += [ "-Wl,--lto-O0" ]
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/build/toolchain/win/BUILD.gn b/build/toolchain/win/BUILD.gn
|
||||
index 53f767a0bddb..661466b779e8 100644
|
||||
index 4d9d1f45f870..286c791613ba 100644
|
||||
--- a/build/toolchain/win/BUILD.gn
|
||||
+++ b/build/toolchain/win/BUILD.gn
|
||||
@@ -176,6 +176,12 @@ template("msvc_toolchain") {
|
||||
@@ -154,6 +154,12 @@ template("msvc_toolchain") {
|
||||
]
|
||||
|
||||
command = "$env_wrapper$cl /nologo /showIncludes ${clflags} $sys_include_flags{{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} /c {{source}} /Fo{{output}} /Fd\"$pdbname\""
|
||||
|
@ -15,7 +15,7 @@ index 53f767a0bddb..661466b779e8 100644
|
|||
}
|
||||
|
||||
tool("cxx") {
|
||||
@@ -192,6 +198,12 @@ template("msvc_toolchain") {
|
||||
@@ -170,6 +176,12 @@ template("msvc_toolchain") {
|
||||
]
|
||||
|
||||
command = "$env_wrapper$cl /nologo /showIncludes ${clflags} $sys_include_flags{{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} /c {{source}} /Fo{{output}} /Fd\"$pdbname\""
|
||||
|
@ -29,10 +29,10 @@ index 53f767a0bddb..661466b779e8 100644
|
|||
|
||||
tool("rc") {
|
||||
diff --git a/build/toolchain/win/tool_wrapper.py b/build/toolchain/win/tool_wrapper.py
|
||||
index 3a81368f3469..7c5ef1ea5db4 100644
|
||||
index b2cb093377ee..801d7a9b8e03 100644
|
||||
--- a/build/toolchain/win/tool_wrapper.py
|
||||
+++ b/build/toolchain/win/tool_wrapper.py
|
||||
@@ -315,6 +315,25 @@ class WinTool(object):
|
||||
@@ -270,6 +270,25 @@ class WinTool(object):
|
||||
dirname = dirname[0] if dirname else None
|
||||
return subprocess.call(args, shell=True, env=env, cwd=dirname)
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
|
||||
index 25841d376bcd..df41213f4c49 100644
|
||||
index 321a12f74202..7a53675a2139 100644
|
||||
--- a/content/browser/frame_host/render_frame_host_impl.cc
|
||||
+++ b/content/browser/frame_host/render_frame_host_impl.cc
|
||||
@@ -2874,6 +2874,38 @@ void RenderFrameHostImpl::CreateNewWindow(
|
||||
@@ -3058,6 +3058,38 @@ void RenderFrameHostImpl::CreateNewWindow(
|
||||
"frame_tree_node", frame_tree_node_->frame_tree_node_id(), "url",
|
||||
params->target_url.possibly_invalid_spec());
|
||||
|
||||
|
@ -41,7 +41,7 @@ index 25841d376bcd..df41213f4c49 100644
|
|||
bool no_javascript_access = false;
|
||||
|
||||
// Filter out URLs to which navigation is disallowed from this context.
|
||||
@@ -2896,8 +2928,9 @@ void RenderFrameHostImpl::CreateNewWindow(
|
||||
@@ -3080,8 +3112,9 @@ void RenderFrameHostImpl::CreateNewWindow(
|
||||
frame_tree_node_->frame_tree()->GetMainFrame()->GetLastCommittedURL(),
|
||||
last_committed_origin_.GetURL(), params->window_container_type,
|
||||
params->target_url, params->referrer, params->frame_name,
|
||||
|
@ -53,8 +53,20 @@ index 25841d376bcd..df41213f4c49 100644
|
|||
|
||||
if (!can_create_window) {
|
||||
std::move(callback).Run(mojom::CreateNewWindowStatus::kIgnore, nullptr);
|
||||
diff --git a/content/browser/security_exploit_browsertest.cc b/content/browser/security_exploit_browsertest.cc
|
||||
index 9c298b182440..2fcbde75ba47 100644
|
||||
--- a/content/browser/security_exploit_browsertest.cc
|
||||
+++ b/content/browser/security_exploit_browsertest.cc
|
||||
@@ -293,6 +293,7 @@ IN_PROC_BROWSER_TEST_F(SecurityExploitBrowserTest,
|
||||
|
||||
mojom::CreateNewWindowParamsPtr params = mojom::CreateNewWindowParams::New();
|
||||
params->target_url = GURL("about:blank");
|
||||
+ params->body = mojom::ResourceRequestBody::New();
|
||||
pending_rfh->CreateNewWindow(
|
||||
std::move(params), base::BindOnce([](mojom::CreateNewWindowStatus,
|
||||
mojom::CreateNewWindowReplyPtr) {}));
|
||||
diff --git a/content/common/frame.mojom b/content/common/frame.mojom
|
||||
index 99ec7e8d7995..26a4040fba97 100644
|
||||
index 09b5766c0794..edb604c80d3f 100644
|
||||
--- a/content/common/frame.mojom
|
||||
+++ b/content/common/frame.mojom
|
||||
@@ -11,6 +11,8 @@ import "content/public/common/resource_type.mojom";
|
||||
|
@ -66,7 +78,7 @@ index 99ec7e8d7995..26a4040fba97 100644
|
|||
import "mojo/public/mojom/base/string16.mojom";
|
||||
import "mojo/public/mojom/base/unguessable_token.mojom";
|
||||
import "services/network/public/mojom/url_loader.mojom";
|
||||
@@ -146,6 +148,24 @@ interface FrameFactory {
|
||||
@@ -148,6 +150,24 @@ interface FrameFactory {
|
||||
CreateFrame(int32 frame_routing_id, Frame& frame);
|
||||
};
|
||||
|
||||
|
@ -91,7 +103,7 @@ index 99ec7e8d7995..26a4040fba97 100644
|
|||
struct CreateNewWindowParams {
|
||||
// True if this open request came in the context of a user gesture.
|
||||
bool user_gesture;
|
||||
@@ -182,6 +202,10 @@ struct CreateNewWindowParams {
|
||||
@@ -184,6 +204,10 @@ struct CreateNewWindowParams {
|
||||
|
||||
// The window features to use for the new window.
|
||||
blink.mojom.WindowFeatures features;
|
||||
|
@ -103,10 +115,10 @@ index 99ec7e8d7995..26a4040fba97 100644
|
|||
|
||||
// Operation result when the renderer asks the browser to create a new window.
|
||||
diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
|
||||
index 37e2d88e28e9..6c366435ddd8 100644
|
||||
index a8927d0ba8da..396ae3d82ba2 100644
|
||||
--- a/content/public/browser/content_browser_client.cc
|
||||
+++ b/content/public/browser/content_browser_client.cc
|
||||
@@ -382,6 +382,8 @@ bool ContentBrowserClient::CanCreateWindow(
|
||||
@@ -401,6 +401,8 @@ bool ContentBrowserClient::CanCreateWindow(
|
||||
const std::string& frame_name,
|
||||
WindowOpenDisposition disposition,
|
||||
const blink::mojom::WindowFeatures& features,
|
||||
|
@ -116,18 +128,18 @@ index 37e2d88e28e9..6c366435ddd8 100644
|
|||
bool opener_suppressed,
|
||||
bool* no_javascript_access) {
|
||||
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
|
||||
index 63cb3851db0a..4a96c8851df0 100644
|
||||
index e9c6b810e050..3ca627448e33 100644
|
||||
--- a/content/public/browser/content_browser_client.h
|
||||
+++ b/content/public/browser/content_browser_client.h
|
||||
@@ -151,6 +151,7 @@ class RenderFrameHost;
|
||||
@@ -153,6 +153,7 @@ class RenderFrameHost;
|
||||
class RenderProcessHost;
|
||||
class RenderViewHost;
|
||||
class ResourceContext;
|
||||
+class ResourceRequestBody;
|
||||
class ServiceManagerConnection;
|
||||
class SiteInstance;
|
||||
class SpeechRecognitionManagerDelegate;
|
||||
class StoragePartition;
|
||||
@@ -625,6 +626,8 @@ class CONTENT_EXPORT ContentBrowserClient {
|
||||
@@ -651,6 +652,8 @@ class CONTENT_EXPORT ContentBrowserClient {
|
||||
const std::string& frame_name,
|
||||
WindowOpenDisposition disposition,
|
||||
const blink::mojom::WindowFeatures& features,
|
||||
|
@ -137,18 +149,18 @@ index 63cb3851db0a..4a96c8851df0 100644
|
|||
bool opener_suppressed,
|
||||
bool* no_javascript_access);
|
||||
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
|
||||
index 7a866ded50f1..f019ce3b24bb 100644
|
||||
index 4aba7a9e290e..a13cc1599d70 100644
|
||||
--- a/content/renderer/render_view_impl.cc
|
||||
+++ b/content/renderer/render_view_impl.cc
|
||||
@@ -79,6 +79,7 @@
|
||||
#include "content/renderer/input/input_handler_manager.h"
|
||||
@@ -78,6 +78,7 @@
|
||||
#include "content/renderer/ime_event_guard.h"
|
||||
#include "content/renderer/internal_document_state_data.h"
|
||||
#include "content/renderer/loader/request_extra_data.h"
|
||||
+#include "content/renderer/loader/web_url_request_util.h"
|
||||
#include "content/renderer/media/audio_device_factory.h"
|
||||
#include "content/renderer/media/stream/media_stream_device_observer.h"
|
||||
#include "content/renderer/media/video_capture_impl_manager.h"
|
||||
@@ -1258,6 +1259,46 @@ WebView* RenderViewImpl::CreateView(WebLocalFrame* creator,
|
||||
@@ -1243,6 +1244,46 @@ WebView* RenderViewImpl::CreateView(WebLocalFrame* creator,
|
||||
}
|
||||
params->features = ConvertWebWindowFeaturesToMojoWindowFeatures(features);
|
||||
|
||||
|
@ -195,23 +207,11 @@ index 7a866ded50f1..f019ce3b24bb 100644
|
|||
// We preserve this information before sending the message since |params| is
|
||||
// moved on send.
|
||||
bool is_background_tab =
|
||||
diff --git a/content/browser/security_exploit_browsertest.cc b/content/browser/security_exploit_browsertest.cc
|
||||
index 0a1f363a673a..adcef6fca779 100644
|
||||
--- a/content/browser/security_exploit_browsertest.cc
|
||||
+++ b/content/browser/security_exploit_browsertest.cc
|
||||
@@ -293,6 +293,7 @@ IN_PROC_BROWSER_TEST_F(SecurityExploitBrowserTest,
|
||||
|
||||
mojom::CreateNewWindowParamsPtr params = mojom::CreateNewWindowParams::New();
|
||||
params->target_url = GURL("about:blank");
|
||||
+ params->body = mojom::ResourceRequestBody::New();
|
||||
pending_rfh->CreateNewWindow(
|
||||
std::move(params), base::BindOnce([](mojom::CreateNewWindowStatus,
|
||||
mojom::CreateNewWindowReplyPtr) {}));
|
||||
diff --git a/content/shell/browser/layout_test/layout_test_content_browser_client.cc b/content/shell/browser/layout_test/layout_test_content_browser_client.cc
|
||||
index 2eaee37ec780..9994df95a798 100644
|
||||
index 3a908d742130..52294125b799 100644
|
||||
--- a/content/shell/browser/layout_test/layout_test_content_browser_client.cc
|
||||
+++ b/content/shell/browser/layout_test/layout_test_content_browser_client.cc
|
||||
@@ -182,6 +182,8 @@ bool LayoutTestContentBrowserClient::CanCreateWindow(
|
||||
@@ -247,6 +247,8 @@ bool LayoutTestContentBrowserClient::CanCreateWindow(
|
||||
const std::string& frame_name,
|
||||
WindowOpenDisposition disposition,
|
||||
const blink::mojom::WindowFeatures& features,
|
||||
|
@ -221,10 +221,10 @@ index 2eaee37ec780..9994df95a798 100644
|
|||
bool opener_suppressed,
|
||||
bool* no_javascript_access) {
|
||||
diff --git a/content/shell/browser/layout_test/layout_test_content_browser_client.h b/content/shell/browser/layout_test/layout_test_content_browser_client.h
|
||||
index 62b637bc80ce..1a9a06ce4bf6 100644
|
||||
index d0ba19167522..3d1154b3cb8a 100644
|
||||
--- a/content/shell/browser/layout_test/layout_test_content_browser_client.h
|
||||
+++ b/content/shell/browser/layout_test/layout_test_content_browser_client.h
|
||||
@@ -58,6 +58,8 @@ class LayoutTestContentBrowserClient : public ShellContentBrowserClient {
|
||||
@@ -67,6 +67,8 @@ class LayoutTestContentBrowserClient : public ShellContentBrowserClient {
|
||||
const std::string& frame_name,
|
||||
WindowOpenDisposition disposition,
|
||||
const blink::mojom::WindowFeatures& features,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/chrome/renderer/media/chrome_key_systems.cc b/chrome/renderer/media/chrome_key_systems.cc
|
||||
index f3033337199b..856bc8f0b143 100644
|
||||
index c0cf00b5da05..992827ca6782 100644
|
||||
--- a/chrome/renderer/media/chrome_key_systems.cc
|
||||
+++ b/chrome/renderer/media/chrome_key_systems.cc
|
||||
@@ -14,7 +14,9 @@
|
||||
|
@ -12,7 +12,7 @@ index f3033337199b..856bc8f0b143 100644
|
|||
#include "components/cdm/renderer/external_clear_key_key_system_properties.h"
|
||||
#include "components/cdm/renderer/widevine_key_system_properties.h"
|
||||
#include "content/public/renderer/render_thread.h"
|
||||
@@ -140,12 +142,14 @@ static void AddExternalClearKey(
|
||||
@@ -142,12 +144,14 @@ static void AddExternalClearKey(
|
||||
#if defined(WIDEVINE_CDM_AVAILABLE)
|
||||
// Returns persistent-license session support.
|
||||
EmeSessionTypeSupport GetPersistentLicenseSupport(bool supported_by_the_cdm) {
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/content/browser/compositor/gpu_process_transport_factory.cc b/content/browser/compositor/gpu_process_transport_factory.cc
|
||||
index 7b9fc4114c52..bdbbf93f6f0d 100644
|
||||
index e679dbb02a81..d90a276fc0e1 100644
|
||||
--- a/content/browser/compositor/gpu_process_transport_factory.cc
|
||||
+++ b/content/browser/compositor/gpu_process_transport_factory.cc
|
||||
@@ -495,9 +495,19 @@ void GpuProcessTransportFactory::EstablishedGpuChannel(
|
||||
@@ -507,10 +507,20 @@ void GpuProcessTransportFactory::EstablishedGpuChannel(
|
||||
// surfaces as they are not following the correct mode.
|
||||
DisableGpuCompositing(compositor.get());
|
||||
}
|
||||
|
@ -13,18 +13,20 @@ index 7b9fc4114c52..bdbbf93f6f0d 100644
|
|||
+ compositor.get());
|
||||
+ }
|
||||
+ if (!output_device) {
|
||||
+ output_device = CreateSoftwareOutputDevice(compositor->widget());
|
||||
+ output_device = CreateSoftwareOutputDevice(compositor->widget(),
|
||||
+ compositor->task_runner());
|
||||
+ }
|
||||
+
|
||||
display_output_surface =
|
||||
std::make_unique<SoftwareBrowserCompositorOutputSurface>(
|
||||
- CreateSoftwareOutputDevice(compositor->widget()),
|
||||
- CreateSoftwareOutputDevice(compositor->widget(),
|
||||
- compositor->task_runner()),
|
||||
+ std::move(output_device),
|
||||
std::move(vsync_callback), compositor->task_runner());
|
||||
std::move(vsync_callback));
|
||||
} else {
|
||||
DCHECK(context_provider);
|
||||
diff --git a/ui/compositor/compositor.h b/ui/compositor/compositor.h
|
||||
index d842aa55175b..2c2131774b71 100644
|
||||
index eb250697ebd6..36be87675e9a 100644
|
||||
--- a/ui/compositor/compositor.h
|
||||
+++ b/ui/compositor/compositor.h
|
||||
@@ -24,6 +24,7 @@
|
||||
|
@ -35,7 +37,7 @@ index d842aa55175b..2c2131774b71 100644
|
|||
#include "third_party/skia/include/core/SkColor.h"
|
||||
#include "third_party/skia/include/core/SkMatrix44.h"
|
||||
#include "ui/compositor/compositor_animation_observer.h"
|
||||
@@ -182,6 +183,15 @@ class COMPOSITOR_EXPORT ContextFactory {
|
||||
@@ -183,6 +184,15 @@ class COMPOSITOR_EXPORT ContextFactory {
|
||||
virtual void RemoveObserver(ContextFactoryObserver* observer) = 0;
|
||||
};
|
||||
|
||||
|
@ -51,7 +53,7 @@ index d842aa55175b..2c2131774b71 100644
|
|||
// Compositor object to take care of GPU painting.
|
||||
// A Browser compositor object is responsible for generating the final
|
||||
// displayable form of pixels comprising a single widget's contents. It draws an
|
||||
@@ -221,6 +231,9 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient,
|
||||
@@ -222,6 +232,9 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient,
|
||||
// Schedules a redraw of the layer tree associated with this compositor.
|
||||
void ScheduleDraw();
|
||||
|
||||
|
@ -61,7 +63,7 @@ index d842aa55175b..2c2131774b71 100644
|
|||
// Sets the root of the layer tree drawn by this Compositor. The root layer
|
||||
// must have no parent. The compositor's root layer is reset if the root layer
|
||||
// is destroyed. NULL can be passed to reset the root layer, in which case the
|
||||
@@ -426,6 +439,8 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient,
|
||||
@@ -447,6 +460,8 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient,
|
||||
ui::ContextFactory* context_factory_;
|
||||
ui::ContextFactoryPrivate* context_factory_private_;
|
||||
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
diff --git a/content/public/app/mojo/content_browser_manifest.json b/content/public/app/mojo/content_browser_manifest.json
|
||||
index 5a217fa9b741..8fd1b39ea6ca 100644
|
||||
index a515b68616a8..dc0431fd17e6 100644
|
||||
--- a/content/public/app/mojo/content_browser_manifest.json
|
||||
+++ b/content/public/app/mojo/content_browser_manifest.json
|
||||
@@ -82,6 +82,7 @@
|
||||
@@ -90,6 +90,7 @@
|
||||
"device:battery_monitor",
|
||||
"device:generic_sensor",
|
||||
"device:geolocation",
|
||||
+ "device:geolocation_control",
|
||||
"device:hid",
|
||||
"device:input_service",
|
||||
"device:nfc",
|
||||
"device:mtp",
|
||||
--
|
||||
2.17.0
|
||||
|
||||
|
|
|
@ -1,54 +1,79 @@
|
|||
From 800aa10d300af0f3fe162ae586b6b1ebe0566ab4 Mon Sep 17 00:00:00 2001
|
||||
From: Catalin Fratila <catalinf@microsoft.com>
|
||||
Date: Fri, 19 May 2017 09:28:53 +0200
|
||||
Subject: [PATCH] Handle everything not in [200, 300) as error. For example
|
||||
HockeyApp responds with 202.
|
||||
|
||||
(cherry picked from commit f7c320766756a8aaa45ccbcff2945053d9f7e109)
|
||||
(cherry picked from commit 1875fddc7e671b14d8b54068301d9648d12e9dc2)
|
||||
(cherry picked from commit 670fb453b0c3d6ae0a0d5923f68df02464337617)
|
||||
---
|
||||
third_party/crashpad/crashpad/util/net/http_transport_libcurl.cc | 2 +-
|
||||
third_party/crashpad/crashpad/util/net/http_transport_mac.mm | 2 +-
|
||||
third_party/crashpad/crashpad/util/net/http_transport_win.cc | 2 +-
|
||||
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/third_party/crashpad/crashpad/util/net/http_transport_libcurl.cc b/third_party/crashpad/crashpad/util/net/http_transport_libcurl.cc
|
||||
index c16a593..0e262b0 100644
|
||||
--- a/third_party/crashpad/crashpad/util/net/http_transport_libcurl.cc
|
||||
+++ b/third_party/crashpad/crashpad/util/net/http_transport_libcurl.cc
|
||||
@@ -338,7 +338,7 @@ bool HTTPTransportLibcurl::ExecuteSynchronously(std::string* response_body) {
|
||||
return false;
|
||||
}
|
||||
diff --git a/third_party/crashpad/crashpad/util/net/http_transport.h b/third_party/crashpad/crashpad/util/net/http_transport.h
|
||||
index f91a556..acd4e44 100644
|
||||
--- a/third_party/crashpad/crashpad/util/net/http_transport.h
|
||||
+++ b/third_party/crashpad/crashpad/util/net/http_transport.h
|
||||
@@ -90,7 +90,7 @@
|
||||
//! if the response body is not required.
|
||||
//!
|
||||
//! \return Whether or not the request was successful, defined as returning
|
||||
- //! a HTTP status 200 (OK) code.
|
||||
+ //! a HTTP status code in the range 200-203 (inclusive).
|
||||
virtual bool ExecuteSynchronously(std::string* response_body) = 0;
|
||||
|
||||
- if (status != 200) {
|
||||
+ if (status < 200 || status >= 300) {
|
||||
LOG(ERROR) << base::StringPrintf("HTTP status %ld", status);
|
||||
return false;
|
||||
}
|
||||
protected:
|
||||
diff --git a/third_party/crashpad/crashpad/util/net/http_transport_mac.mm b/third_party/crashpad/crashpad/util/net/http_transport_mac.mm
|
||||
index 8d5f78c..a6434c2 100644
|
||||
index 8d5f78c..a433bb3 100644
|
||||
--- a/third_party/crashpad/crashpad/util/net/http_transport_mac.mm
|
||||
+++ b/third_party/crashpad/crashpad/util/net/http_transport_mac.mm
|
||||
@@ -293,7 +293,7 @@ static void Unschedule(CFReadStreamRef stream,
|
||||
@@ -293,7 +293,7 @@
|
||||
return false;
|
||||
}
|
||||
NSInteger http_status = [http_response statusCode];
|
||||
- if (http_status != 200) {
|
||||
+ if (http_status < 200 || http_status >= 300) {
|
||||
+ if (http_status < 200 || http_status > 203) {
|
||||
LOG(ERROR) << base::StringPrintf("HTTP status %ld",
|
||||
implicit_cast<long>(http_status));
|
||||
return false;
|
||||
diff --git a/third_party/crashpad/crashpad/util/net/http_transport_socket.cc b/third_party/crashpad/crashpad/util/net/http_transport_socket.cc
|
||||
index f0e2dc1..34d8dee 100644
|
||||
--- a/third_party/crashpad/crashpad/util/net/http_transport_socket.cc
|
||||
+++ b/third_party/crashpad/crashpad/util/net/http_transport_socket.cc
|
||||
@@ -457,10 +457,18 @@
|
||||
LOG(ERROR) << "ReadLine";
|
||||
return false;
|
||||
}
|
||||
- static constexpr const char kHttp10[] = "HTTP/1.0 200 ";
|
||||
- static constexpr const char kHttp11[] = "HTTP/1.1 200 ";
|
||||
- return StartsWith(response_line, kHttp10, strlen(kHttp10)) ||
|
||||
- StartsWith(response_line, kHttp11, strlen(kHttp11));
|
||||
+ static constexpr const char kHttp10[] = "HTTP/1.0 ";
|
||||
+ static constexpr const char kHttp11[] = "HTTP/1.1 ";
|
||||
+ if (!(StartsWith(response_line, kHttp10, strlen(kHttp10)) ||
|
||||
+ StartsWith(response_line, kHttp11, strlen(kHttp11))) ||
|
||||
+ response_line.size() < strlen(kHttp10) + 3 ||
|
||||
+ response_line.at(strlen(kHttp10) + 3) != ' ') {
|
||||
+ return false;
|
||||
+ }
|
||||
+ unsigned int http_status = 0;
|
||||
+ return base::StringToUint(response_line.substr(strlen(kHttp10), 3),
|
||||
+ &http_status) &&
|
||||
+ http_status >= 200 && http_status <= 203;
|
||||
}
|
||||
|
||||
bool ReadResponseHeaders(int sock, HTTPHeaders* headers) {
|
||||
diff --git a/third_party/crashpad/crashpad/util/net/http_transport_test.cc b/third_party/crashpad/crashpad/util/net/http_transport_test.cc
|
||||
index 7b5f41d..d73dc99 100644
|
||||
--- a/third_party/crashpad/crashpad/util/net/http_transport_test.cc
|
||||
+++ b/third_party/crashpad/crashpad/util/net/http_transport_test.cc
|
||||
@@ -137,7 +137,7 @@
|
||||
|
||||
std::string response_body;
|
||||
bool success = transport->ExecuteSynchronously(&response_body);
|
||||
- if (response_code_ == 200) {
|
||||
+ if (response_code_ >= 200 && response_code_ <= 203) {
|
||||
EXPECT_TRUE(success);
|
||||
std::string expect_response_body = random_string + "\r\n";
|
||||
EXPECT_EQ(response_body, expect_response_body);
|
||||
diff --git a/third_party/crashpad/crashpad/util/net/http_transport_win.cc b/third_party/crashpad/crashpad/util/net/http_transport_win.cc
|
||||
index 18d343c..40c3061 100644
|
||||
index 18d343c..2919bc1 100644
|
||||
--- a/third_party/crashpad/crashpad/util/net/http_transport_win.cc
|
||||
+++ b/third_party/crashpad/crashpad/util/net/http_transport_win.cc
|
||||
@@ -375,7 +375,7 @@ bool HTTPTransportWin::ExecuteSynchronously(std::string* response_body) {
|
||||
@@ -375,7 +375,7 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
- if (status_code != 200) {
|
||||
+ if (status_code < 200 || status_code >= 300) {
|
||||
+ if (status_code < 200 || status_code > 203) {
|
||||
LOG(ERROR) << base::StringPrintf("HTTP status %lu", status_code);
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/base/logging.h b/base/logging.h
|
||||
index 582fb89868cd..24d3e82232b6 100644
|
||||
index 29960599a5c6..7352201e7b66 100644
|
||||
--- a/base/logging.h
|
||||
+++ b/base/logging.h
|
||||
@@ -850,7 +850,7 @@ const LogSeverity LOG_DCHECK = LOG_INFO;
|
||||
@@ -874,7 +874,7 @@ const LogSeverity LOG_DCHECK = LOG_FATAL;
|
||||
|
||||
#else // !(defined(_PREFAST_) && defined(OS_WIN))
|
||||
|
||||
|
@ -12,7 +12,7 @@ index 582fb89868cd..24d3e82232b6 100644
|
|||
#define DCHECK(condition) \
|
||||
LAZY_STREAM(LOG_STREAM(DCHECK), !ANALYZER_ASSUME_TRUE(condition)) \
|
||||
diff --git a/base/memory/weak_ptr.cc b/base/memory/weak_ptr.cc
|
||||
index 8879651e6da7..33fe8948a063 100644
|
||||
index d2a7d89e5667..def40703ea25 100644
|
||||
--- a/base/memory/weak_ptr.cc
|
||||
+++ b/base/memory/weak_ptr.cc
|
||||
@@ -23,8 +23,8 @@ void WeakReference::Flag::Invalidate() {
|
||||
|
@ -27,10 +27,10 @@ index 8879651e6da7..33fe8948a063 100644
|
|||
}
|
||||
|
||||
diff --git a/base/process/kill_win.cc b/base/process/kill_win.cc
|
||||
index 6a0038e2c00d..dd00dfb3e5d0 100644
|
||||
index 7a664429bcd3..26f49dc3d1e7 100644
|
||||
--- a/base/process/kill_win.cc
|
||||
+++ b/base/process/kill_win.cc
|
||||
@@ -45,7 +45,7 @@ TerminationStatus GetTerminationStatus(ProcessHandle handle, int* exit_code) {
|
||||
@@ -23,7 +23,7 @@ TerminationStatus GetTerminationStatus(ProcessHandle handle, int* exit_code) {
|
||||
DWORD tmp_exit_code = 0;
|
||||
|
||||
if (!::GetExitCodeProcess(handle, &tmp_exit_code)) {
|
||||
|
@ -39,11 +39,29 @@ index 6a0038e2c00d..dd00dfb3e5d0 100644
|
|||
|
||||
// This really is a random number. We haven't received any
|
||||
// information about the exit code, presumably because this
|
||||
diff --git a/base/process/process_metrics_win.cc b/base/process/process_metrics_win.cc
|
||||
index 18ef58a725c3..239f319c8b4c 100644
|
||||
--- a/base/process/process_metrics_win.cc
|
||||
+++ b/base/process/process_metrics_win.cc
|
||||
@@ -153,10 +153,9 @@ bool ProcessMetrics::GetIOCounters(IoCounters* io_counters) const {
|
||||
ProcessMetrics::ProcessMetrics(ProcessHandle process) {
|
||||
if (process) {
|
||||
HANDLE duplicate_handle = INVALID_HANDLE_VALUE;
|
||||
- BOOL result = ::DuplicateHandle(::GetCurrentProcess(), process,
|
||||
- ::GetCurrentProcess(), &duplicate_handle,
|
||||
- PROCESS_QUERY_INFORMATION, FALSE, 0);
|
||||
- DPCHECK(result);
|
||||
+ ::DuplicateHandle(::GetCurrentProcess(), process,
|
||||
+ ::GetCurrentProcess(), &duplicate_handle,
|
||||
+ PROCESS_QUERY_INFORMATION, FALSE, 0);
|
||||
process_.Set(duplicate_handle);
|
||||
}
|
||||
}
|
||||
diff --git a/components/viz/service/display/program_binding.h b/components/viz/service/display/program_binding.h
|
||||
index 70f1ff97b1ac..d1abd804e988 100644
|
||||
index 8b28c57f854e..a0e7056af23f 100644
|
||||
--- a/components/viz/service/display/program_binding.h
|
||||
+++ b/components/viz/service/display/program_binding.h
|
||||
@@ -416,7 +416,7 @@ class VIZ_SERVICE_EXPORT Program : public ProgramBindingBase {
|
||||
@@ -433,7 +433,7 @@ class VIZ_SERVICE_EXPORT Program : public ProgramBindingBase {
|
||||
if (!ProgramBindingBase::Init(context_provider->ContextGL(),
|
||||
vertex_shader_.GetShaderString(),
|
||||
fragment_shader_.GetShaderString())) {
|
||||
|
@ -52,8 +70,8 @@ index 70f1ff97b1ac..d1abd804e988 100644
|
|||
return;
|
||||
}
|
||||
|
||||
@@ -428,7 +428,7 @@ class VIZ_SERVICE_EXPORT Program : public ProgramBindingBase {
|
||||
|
||||
@@ -445,7 +445,7 @@ class VIZ_SERVICE_EXPORT Program : public ProgramBindingBase {
|
||||
|
||||
// Link after binding uniforms
|
||||
if (!Link(context_provider->ContextGL())) {
|
||||
- DCHECK(IsContextLost(context_provider->ContextGL()));
|
||||
|
@ -62,10 +80,10 @@ index 70f1ff97b1ac..d1abd804e988 100644
|
|||
}
|
||||
|
||||
diff --git a/content/browser/frame_host/navigation_controller_impl.cc b/content/browser/frame_host/navigation_controller_impl.cc
|
||||
index ff1d3fcb6eba..ad6578f645d4 100644
|
||||
index 74ff6b4286c2..02bf1c55d86f 100644
|
||||
--- a/content/browser/frame_host/navigation_controller_impl.cc
|
||||
+++ b/content/browser/frame_host/navigation_controller_impl.cc
|
||||
@@ -1079,8 +1079,10 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(
|
||||
@@ -1083,8 +1083,10 @@ NavigationType NavigationControllerImpl::ClassifyNavigation(
|
||||
return NAVIGATION_TYPE_NEW_SUBFRAME;
|
||||
}
|
||||
|
||||
|
@ -78,7 +96,7 @@ index ff1d3fcb6eba..ad6578f645d4 100644
|
|||
|
||||
if (rfh->GetParent()) {
|
||||
// All manual subframes would be did_create_new_entry and handled above, so
|
||||
@@ -1301,7 +1303,10 @@ void NavigationControllerImpl::RendererDidNavigateToNewPage(
|
||||
@@ -1305,7 +1307,10 @@ void NavigationControllerImpl::RendererDidNavigateToNewPage(
|
||||
new_entry->GetFavicon() = GetLastCommittedEntry()->GetFavicon();
|
||||
}
|
||||
|
||||
|
@ -91,10 +109,10 @@ index ff1d3fcb6eba..ad6578f645d4 100644
|
|||
// navigation. Now we know that the renderer has updated its state accordingly
|
||||
// and it is safe to also clear the browser side history.
|
||||
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
|
||||
index 346765edaef9..a30e87bfcda6 100644
|
||||
index cd755cbc3f2c..321a12f74202 100644
|
||||
--- a/content/browser/frame_host/render_frame_host_impl.cc
|
||||
+++ b/content/browser/frame_host/render_frame_host_impl.cc
|
||||
@@ -2072,8 +2073,10 @@ void RenderFrameHostImpl::AllowBindings(int bindings_flags) {
|
||||
@@ -2345,8 +2345,10 @@ void RenderFrameHostImpl::AllowBindings(int bindings_flags) {
|
||||
}
|
||||
|
||||
enabled_bindings_ |= bindings_flags;
|
||||
|
@ -108,10 +126,10 @@ index 346765edaef9..a30e87bfcda6 100644
|
|||
if (render_frame_created_) {
|
||||
if (!frame_bindings_control_)
|
||||
diff --git a/content/browser/renderer_host/render_widget_host_view_cocoa.mm b/content/browser/renderer_host/render_widget_host_view_cocoa.mm
|
||||
index 8ee84cdafbde..c7ad6fa8c75f 100644
|
||||
index d86576cc36ac..5b4ae0732914 100644
|
||||
--- a/content/browser/renderer_host/render_widget_host_view_cocoa.mm
|
||||
+++ b/content/browser/renderer_host/render_widget_host_view_cocoa.mm
|
||||
@@ -618,8 +618,8 @@ void ExtractUnderlines(NSAttributedString* string,
|
||||
@@ -650,8 +650,8 @@ void ExtractUnderlines(NSAttributedString* string,
|
||||
if (EventIsReservedBySystem(theEvent))
|
||||
return;
|
||||
|
||||
|
@ -135,6 +153,19 @@ index f3c68fab3de6..b8609daf3ef9 100644
|
|||
return;
|
||||
}
|
||||
|
||||
diff --git a/third_party/blink/renderer/core/dom/node.cc b/third_party/blink/renderer/core/dom/node.cc
|
||||
index ca47b2d09693..b4b6ce96209b 100644
|
||||
--- a/third_party/blink/renderer/core/dom/node.cc
|
||||
+++ b/third_party/blink/renderer/core/dom/node.cc
|
||||
@@ -2535,7 +2535,7 @@ StaticNodeList* Node::getDestinationInsertionPoints() {
|
||||
|
||||
HTMLSlotElement* Node::AssignedSlot() const {
|
||||
// assignedSlot doesn't need to call updateDistribution().
|
||||
- DCHECK(!IsPseudoElement());
|
||||
+ // DCHECK(!IsPseudoElement());
|
||||
if (ShadowRoot* root = V1ShadowRootOfParent())
|
||||
return root->AssignedSlotFor(*this);
|
||||
return nullptr;
|
||||
diff --git a/third_party/blink/renderer/core/loader/BUILD.gn b/third_party/blink/renderer/core/loader/BUILD.gn
|
||||
index 82f6e8bc9d33..ccad95d61a4a 100644
|
||||
--- a/third_party/blink/renderer/core/loader/BUILD.gn
|
||||
|
@ -151,19 +182,6 @@ index 82f6e8bc9d33..ccad95d61a4a 100644
|
|||
+ defines += [ "ELECTRON_NO_DCHECK" ]
|
||||
+ }
|
||||
}
|
||||
diff --git a/third_party/blink/renderer/core/dom/node.cc b/third_party/blink/renderer/core/dom/node.cc
|
||||
index 922a2561bcef..e31fa34f98ea 100644
|
||||
--- a/third_party/blink/renderer/core/dom/node.cc
|
||||
+++ b/third_party/blink/renderer/core/dom/node.cc
|
||||
@@ -2435,7 +2435,7 @@ StaticNodeList* Node::getDestinationInsertionPoints() {
|
||||
|
||||
HTMLSlotElement* Node::AssignedSlot() const {
|
||||
// assignedSlot doesn't need to call updateDistribution().
|
||||
- DCHECK(!IsPseudoElement());
|
||||
+ // DCHECK(!IsPseudoElement());
|
||||
if (ShadowRoot* root = V1ShadowRootOfParent())
|
||||
return root->AssignedSlotFor(*this);
|
||||
return nullptr;
|
||||
diff --git a/third_party/blink/renderer/platform/wtf/text/string_impl.h b/third_party/blink/renderer/platform/wtf/text/string_impl.h
|
||||
index 158d81ca9ba2..1b6aafecadef 100644
|
||||
--- a/third_party/blink/renderer/platform/wtf/text/string_impl.h
|
||||
|
@ -193,26 +211,11 @@ index 158d81ca9ba2..1b6aafecadef 100644
|
|||
DCHECK(IsStatic() || verifier_.OnDeref(ref_count_))
|
||||
<< AsciiForDebugging() << " " << CurrentThread();
|
||||
#endif
|
||||
diff --git a/url/BUILD.gn b/url/BUILD.gn
|
||||
index 82eb115ae666..b4806804cdbf 100644
|
||||
--- a/url/BUILD.gn
|
||||
+++ b/url/BUILD.gn
|
||||
@@ -96,6 +96,10 @@ component("url") {
|
||||
]
|
||||
deps += [ "//third_party/icu" ]
|
||||
}
|
||||
+
|
||||
+ if (is_electron_build) {
|
||||
+ defines += [ "ELECTRON_NO_DCHECK" ]
|
||||
+ }
|
||||
}
|
||||
|
||||
if (is_android) {
|
||||
diff --git a/ui/base/clipboard/clipboard_win.cc b/ui/base/clipboard/clipboard_win.cc
|
||||
index 674b0e9a909c..a1bff6e40f56 100644
|
||||
index e49dd8c81270..9e61c901cd2d 100644
|
||||
--- a/ui/base/clipboard/clipboard_win.cc
|
||||
+++ b/ui/base/clipboard/clipboard_win.cc
|
||||
@@ -886,9 +886,9 @@ void ClipboardWin::WriteBitmapFromHandle(HBITMAP source_hbitmap,
|
||||
@@ -905,9 +905,9 @@ void ClipboardWin::WriteBitmapFromHandle(HBITMAP source_hbitmap,
|
||||
}
|
||||
|
||||
void ClipboardWin::WriteToClipboard(unsigned int format, HANDLE handle) {
|
||||
|
@ -224,49 +227,21 @@ index 674b0e9a909c..a1bff6e40f56 100644
|
|||
FreeData(format, handle);
|
||||
}
|
||||
}
|
||||
diff --git a/third_party/WebKit/Source/core/animation/ElementAnimations.cpp b/third_party/WebKit/Source/core/animation/ElementAnimations.cpp
|
||||
index 60b8123cd818..dc719dd31dbf 100644
|
||||
--- a/third_party/WebKit/Source/core/animation/ElementAnimations.cpp
|
||||
+++ b/third_party/WebKit/Source/core/animation/ElementAnimations.cpp
|
||||
@@ -108,7 +108,7 @@ void ElementAnimations::UpdateBaseComputedStyle(
|
||||
base_computed_style_ = nullptr;
|
||||
return;
|
||||
}
|
||||
-#if DCHECK_IS_ON()
|
||||
+#if 0
|
||||
if (base_computed_style_ && computed_style)
|
||||
DCHECK(*base_computed_style_ == *computed_style);
|
||||
#endif
|
||||
diff --git a/base/process/process_metrics_win.cc b/base/process/process_metrics_win.cc
|
||||
index faabdbf63a2a..ba56e4cd994c 100644
|
||||
--- a/base/process/process_metrics_win.cc
|
||||
+++ b/base/process/process_metrics_win.cc
|
||||
@@ -179,10 +179,9 @@ bool ProcessMetrics::GetIOCounters(IoCounters* io_counters) const {
|
||||
ProcessMetrics::ProcessMetrics(ProcessHandle process) : last_system_time_(0) {
|
||||
if (process) {
|
||||
HANDLE duplicate_handle = INVALID_HANDLE_VALUE;
|
||||
- BOOL result = ::DuplicateHandle(::GetCurrentProcess(), process,
|
||||
- ::GetCurrentProcess(), &duplicate_handle,
|
||||
- PROCESS_QUERY_INFORMATION, FALSE, 0);
|
||||
- DPCHECK(result);
|
||||
+ ::DuplicateHandle(::GetCurrentProcess(), process,
|
||||
+ ::GetCurrentProcess(), &duplicate_handle,
|
||||
+ PROCESS_QUERY_INFORMATION, FALSE, 0);
|
||||
process_.Set(duplicate_handle);
|
||||
diff --git a/url/BUILD.gn b/url/BUILD.gn
|
||||
index c4deb10db9ca..ecc068d7447a 100644
|
||||
--- a/url/BUILD.gn
|
||||
+++ b/url/BUILD.gn
|
||||
@@ -98,6 +98,10 @@ component("url") {
|
||||
]
|
||||
deps += [ "//third_party/icu" ]
|
||||
}
|
||||
}
|
||||
diff --git a/components/viz/service/display_embedder/server_shared_bitmap_manager.cc b/components/viz/service/display_embedder/server_shared_bitmap_manager.cc
|
||||
index 9477a5aa45f9..895425c8c6cc 100644
|
||||
--- a/components/viz/service/display_embedder/server_shared_bitmap_manager.cc
|
||||
+++ b/components/viz/service/display_embedder/server_shared_bitmap_manager.cc
|
||||
@@ -69,7 +69,9 @@ base::LazyInstance<ServerSharedBitmapManager>::DestructorAtExit
|
||||
ServerSharedBitmapManager::ServerSharedBitmapManager() = default;
|
||||
|
||||
ServerSharedBitmapManager::~ServerSharedBitmapManager() {
|
||||
- DCHECK(handle_map_.empty());
|
||||
+ // FIXME(alexeykuzmin): Gets constantly triggered on Windows CI.
|
||||
+ // Backporting https://chromium-review.googlesource.com/802574 should help.
|
||||
+ // DCHECK(handle_map_.empty());
|
||||
+
|
||||
+ if (is_electron_build) {
|
||||
+ defines += [ "ELECTRON_NO_DCHECK" ]
|
||||
+ }
|
||||
}
|
||||
|
||||
ServerSharedBitmapManager* ServerSharedBitmapManager::current() {
|
||||
if (is_android) {
|
||||
--
|
||||
2.17.0
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/ui/views/widget/desktop_aura/desktop_screen_win.cc b/ui/views/widget/desktop_aura/desktop_screen_win.cc
|
||||
index f772f64..7d13f9f 100644
|
||||
index f772f64d656e..7d13f9f81b6c 100644
|
||||
--- a/ui/views/widget/desktop_aura/desktop_screen_win.cc
|
||||
+++ b/ui/views/widget/desktop_aura/desktop_screen_win.cc
|
||||
@@ -32,6 +32,8 @@ display::Display DesktopScreenWin::GetDisplayMatching(
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
|
||||
index c8fb7eecb9c8..3d995aa331b1 100644
|
||||
index cadeb2322620..3c5d1afbdfee 100644
|
||||
--- a/ui/views/win/hwnd_message_handler.cc
|
||||
+++ b/ui/views/win/hwnd_message_handler.cc
|
||||
@@ -251,6 +251,10 @@ const int kSynthesizedMouseMessagesTimeDifference = 500;
|
||||
|
||||
@@ -256,6 +256,10 @@ const int kSynthesizedMouseMessagesTimeDifference = 500;
|
||||
|
||||
} // namespace
|
||||
|
||||
|
||||
+bool HWNDMessageHandlerDelegate::HasNativeFrame() const {
|
||||
+ return false;
|
||||
+}
|
||||
|
@ -13,7 +13,7 @@ index c8fb7eecb9c8..3d995aa331b1 100644
|
|||
// A scoping class that prevents a window from being able to redraw in response
|
||||
// to invalidations that may occur within it for the lifetime of the object.
|
||||
//
|
||||
@@ -302,6 +306,7 @@ class HWNDMessageHandler::ScopedRedrawLock {
|
||||
@@ -307,6 +311,7 @@ class HWNDMessageHandler::ScopedRedrawLock {
|
||||
cancel_unlock_(false),
|
||||
should_lock_(owner_->IsVisible() && !owner->HasChildRenderingWindow() &&
|
||||
::IsWindow(hwnd_) &&
|
||||
|
@ -21,38 +21,38 @@ index c8fb7eecb9c8..3d995aa331b1 100644
|
|||
(!(GetWindowLong(hwnd_, GWL_STYLE) & WS_CAPTION) ||
|
||||
!ui::win::IsAeroGlassEnabled())) {
|
||||
if (should_lock_)
|
||||
@@ -903,6 +908,10 @@ bool HWNDMessageHandler::HasChildRenderingWindow() {
|
||||
@@ -898,6 +903,10 @@ bool HWNDMessageHandler::HasChildRenderingWindow() {
|
||||
hwnd());
|
||||
}
|
||||
|
||||
|
||||
+bool HWNDMessageHandler::HasNativeFrame() {
|
||||
+ return delegate_->HasNativeFrame();
|
||||
+}
|
||||
+
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// HWNDMessageHandler, gfx::WindowImpl overrides:
|
||||
|
||||
|
||||
diff --git a/ui/views/win/hwnd_message_handler.h b/ui/views/win/hwnd_message_handler.h
|
||||
index 5d5765c1928e..d77991cfa737 100644
|
||||
index 5afb32aa043c..3d17f29dff9a 100644
|
||||
--- a/ui/views/win/hwnd_message_handler.h
|
||||
+++ b/ui/views/win/hwnd_message_handler.h
|
||||
@@ -227,6 +227,8 @@ class VIEWS_EXPORT HWNDMessageHandler : public gfx::WindowImpl,
|
||||
@@ -177,6 +177,8 @@ class VIEWS_EXPORT HWNDMessageHandler : public gfx::WindowImpl,
|
||||
typedef std::set<DWORD> TouchIDs;
|
||||
enum class DwmFrameState { OFF, ON };
|
||||
|
||||
|
||||
+ bool HasNativeFrame();
|
||||
+
|
||||
// Overridden from WindowImpl:
|
||||
HICON GetDefaultWindowIcon() const override;
|
||||
HICON GetSmallWindowIcon() const override;
|
||||
diff --git a/ui/views/win/hwnd_message_handler_delegate.h b/ui/views/win/hwnd_message_handler_delegate.h
|
||||
index d13f807e4a75..877189d63616 100644
|
||||
index 1b2d98a85738..dd080180aebd 100644
|
||||
--- a/ui/views/win/hwnd_message_handler_delegate.h
|
||||
+++ b/ui/views/win/hwnd_message_handler_delegate.h
|
||||
@@ -46,6 +46,8 @@ class VIEWS_EXPORT HWNDMessageHandlerDelegate {
|
||||
// True if the widget associated with this window has a non-client view.
|
||||
virtual bool HasNonClientView() const = 0;
|
||||
|
||||
|
||||
+ virtual bool HasNativeFrame() const;
|
||||
+
|
||||
// Returns who we want to be drawing the frame. Either the system (Windows)
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/content/browser/frame_host/render_frame_proxy_host.cc b/content/browser/frame_host/render_frame_proxy_host.cc
|
||||
index b44b0fd..a74d827 100644
|
||||
index 838bc1e20c30..2aa16fbf19fc 100644
|
||||
--- a/content/browser/frame_host/render_frame_proxy_host.cc
|
||||
+++ b/content/browser/frame_host/render_frame_proxy_host.cc
|
||||
@@ -253,6 +253,12 @@ void RenderFrameProxyHost::SetDestructionCallback(
|
||||
@@ -260,6 +260,12 @@ void RenderFrameProxyHost::SetDestructionCallback(
|
||||
|
||||
void RenderFrameProxyHost::OnDetach() {
|
||||
if (frame_tree_node_->render_manager()->ForInnerDelegate()) {
|
||||
|
|
|
@ -39,17 +39,18 @@ index b480129fcd7c..4f4f7d06029b 100644
|
|||
+ }
|
||||
}
|
||||
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
|
||||
index 72dde06a99a7..e00d6b863b84 100644
|
||||
index c514878fafe7..bcd3432f75c9 100644
|
||||
--- a/chrome/browser/ui/BUILD.gn
|
||||
+++ b/chrome/browser/ui/BUILD.gn
|
||||
@@ -2496,7 +2496,9 @@ split_static_library("ui") {
|
||||
]
|
||||
}
|
||||
|
||||
@@ -2495,7 +2495,10 @@ split_static_library("ui") {
|
||||
"views/tabs/window_finder_mac.mm",
|
||||
]
|
||||
|
||||
- deps += [ "//extensions/components/native_app_window" ]
|
||||
+
|
||||
+ if (enable_extensions) {
|
||||
+ deps += [ "//extensions/components/native_app_window" ]
|
||||
+ }
|
||||
|
||||
|
||||
# Truly cocoa-browser-specific sources. These are secondary UI pieces that
|
||||
# are obsolete before mac_views_browser will ever ship, so they aren't
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
|
||||
index 77c870b8a075..f1c4076788c5 100644
|
||||
index 213f32e0891f..60cfacdcf9fc 100644
|
||||
--- a/content/browser/renderer_host/render_widget_host_impl.cc
|
||||
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
|
||||
@@ -664,6 +664,9 @@ void RenderWidgetHostImpl::WasHidden() {
|
||||
@@ -668,6 +668,9 @@ void RenderWidgetHostImpl::WasHidden() {
|
||||
if (is_hidden_)
|
||||
return;
|
||||
|
||||
|
@ -13,10 +13,10 @@ index 77c870b8a075..f1c4076788c5 100644
|
|||
|
||||
TRACE_EVENT0("renderer_host", "RenderWidgetHostImpl::WasHidden");
|
||||
diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h
|
||||
index b6aa99e..ef4fa35 100644
|
||||
index 316385180c60..afce0525e89d 100644
|
||||
--- a/content/browser/renderer_host/render_widget_host_impl.h
|
||||
+++ b/content/browser/renderer_host/render_widget_host_impl.h
|
||||
@@ -124,6 +124,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl : public RenderWidgetHost,
|
||||
@@ -149,6 +149,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl
|
||||
// RenderWidgetHostImpl.
|
||||
static RenderWidgetHostImpl* From(RenderWidgetHost* rwh);
|
||||
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
diff --git a/content/browser/renderer_host/input/mouse_wheel_event_queue.cc b/content/browser/renderer_host/input/mouse_wheel_event_queue.cc
|
||||
index 5d5bead..f2ac4d8 100644
|
||||
index c3f4641e8525..dd50ff1c2557 100644
|
||||
--- a/content/browser/renderer_host/input/mouse_wheel_event_queue.cc
|
||||
+++ b/content/browser/renderer_host/input/mouse_wheel_event_queue.cc
|
||||
@@ -339,7 +339,7 @@ void MouseWheelEventQueue::SendScrollBegin(
|
||||
@@ -362,7 +362,7 @@ void MouseWheelEventQueue::SendScrollBegin(
|
||||
(synthetic && !needs_scroll_begin_when_scroll_latching_disabled_) ||
|
||||
needs_scroll_begin_when_scroll_latching_disabled_);
|
||||
|
||||
- DCHECK(!scroll_in_progress_);
|
||||
+ // DCHECK(!scroll_in_progress_);
|
||||
scroll_in_progress_ = true;
|
||||
- DCHECK(!client_->IsWheelScrollInProgress());
|
||||
+ // DCHECK(!client_->IsWheelScrollInProgress());
|
||||
|
||||
WebGestureEvent scroll_begin(gesture_update);
|
||||
scroll_begin.SetType(WebInputEvent::kGestureScrollBegin);
|
||||
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
|
||||
index 97ca37d843be..fdc4a3f90c64 100644
|
||||
index 9b930b8acd1d..f3d356f86f15 100644
|
||||
--- a/content/browser/renderer_host/render_widget_host_impl.cc
|
||||
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
|
||||
@@ -1230,8 +1238,8 @@ void RenderWidgetHostImpl::ForwardGestureEventWithLatencyInfo(
|
||||
@@ -1263,8 +1263,8 @@ void RenderWidgetHostImpl::ForwardGestureEventWithLatencyInfo(
|
||||
// GSB and GSU events instead of sending them to the renderer and continues
|
||||
// to progress the fling. So, the renderer doesn't receive two GSB events
|
||||
// without any GSE in between.
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
|
||||
index a39067db8c52..4a0d69dc3fb5 100644
|
||||
index 9abb526ef011..296abf0a1b93 100644
|
||||
--- a/third_party/blink/renderer/core/dom/document.cc
|
||||
+++ b/third_party/blink/renderer/core/dom/document.cc
|
||||
@@ -3239,7 +3239,9 @@ bool Document::DispatchBeforeUnloadEvent(ChromeClient& chrome_client,
|
||||
@@ -3442,7 +3442,9 @@ bool Document::DispatchBeforeUnloadEvent(ChromeClient& chrome_client,
|
||||
"Blocked attempt to show a 'beforeunload' confirmation panel for a "
|
||||
"frame that never had a user gesture since its load. "
|
||||
"https://www.chromestatus.com/feature/5082396709879808"));
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
|
||||
index 9173f6f0324c..8f976057d5d9 100644
|
||||
index 05177001104e..5b5e00e9ef2d 100644
|
||||
--- a/third_party/blink/renderer/platform/BUILD.gn
|
||||
+++ b/third_party/blink/renderer/platform/BUILD.gn
|
||||
@@ -1819,7 +1819,7 @@ jumbo_source_set("blink_platform_unittests_sources") {
|
||||
"graphics/accelerated_static_bitmap_image_test.cc",
|
||||
"graphics/bitmap_image_test.cc",
|
||||
@@ -1797,7 +1797,7 @@ jumbo_source_set("blink_platform_unittests_sources") {
|
||||
"graphics/compositing/chunk_to_layer_mapper_test.cc",
|
||||
- "graphics/compositing/composited_layer_raster_invalidator_test.cc",
|
||||
+ #"graphics/compositing/composited_layer_raster_invalidator_test.cc",
|
||||
"graphics/compositing/composited_layer_raster_invalidator_test.cc",
|
||||
"graphics/compositing/paint_artifact_compositor_test.cc",
|
||||
"graphics/compositing/paint_chunks_to_cc_layer_test.cc",
|
||||
- "graphics/compositing/paint_chunks_to_cc_layer_test.cc",
|
||||
+ # "graphics/compositing/paint_chunks_to_cc_layer_test.cc",
|
||||
"graphics/compositor_element_id_test.cc",
|
||||
@@ -1839,7 +1839,7 @@ jumbo_source_set("blink_platform_unittests_sources") {
|
||||
"graphics/paint/drawing_display_item_test.cc",
|
||||
"graphics/paint/drawing_recorder_test.cc",
|
||||
"graphics/paint/float_clip_rect_test.cc",
|
||||
- "graphics/paint/geometry_mapper_test.cc",
|
||||
+ #"graphics/paint/geometry_mapper_test.cc",
|
||||
"graphics/paint/paint_chunk_test.cc",
|
||||
"graphics/paint/paint_chunker_test.cc",
|
||||
"graphics/paint/paint_controller_test.cc",
|
||||
"graphics/contiguous_container_test.cc",
|
||||
"graphics/decoding_image_generator_test.cc",
|
||||
@@ -1873,7 +1873,7 @@ jumbo_source_set("blink_platform_unittests_sources") {
|
||||
"text/date_time_format_test.cc",
|
||||
"text/hyphenation_test.cc",
|
||||
"text/icu_error_test.cc",
|
||||
- "text/line_ending_test.cc",
|
||||
+ # "text/line_ending_test.cc",
|
||||
"text/platform_locale_test.cc",
|
||||
"text/segmented_string_test.cc",
|
||||
"text/suffix_tree_test.cc",
|
||||
|
|
30
patches/common/chromium/expose-net-observer-api.patch
Normal file
30
patches/common/chromium/expose-net-observer-api.patch
Normal file
|
@ -0,0 +1,30 @@
|
|||
From f9178257245c16180336ff06debc6778d80b0975 Mon Sep 17 00:00:00 2001
|
||||
From: Jeremy Apthorp <nornagon@nornagon.net>
|
||||
Date: Mon, 1 Oct 2018 12:16:41 -0700
|
||||
Subject: Expose URLRequestContextGetter::{Add,Remove}Observer
|
||||
|
||||
|
||||
diff --git a/net/url_request/url_request_context_getter.h b/net/url_request/url_request_context_getter.h
|
||||
index 7a2dcd9de423..494526c843b9 100644
|
||||
--- a/net/url_request/url_request_context_getter.h
|
||||
+++ b/net/url_request/url_request_context_getter.h
|
||||
@@ -79,11 +79,16 @@ class NET_EXPORT URLRequestContextGetter
|
||||
friend class web::NetworkContextOwner;
|
||||
#endif // defined(OS_IOS)
|
||||
|
||||
+ // NOTE(nornagon/robo): electron currently depends on this deprecated API
|
||||
+ // from net/, but will be removing it soon when we switch to using the
|
||||
+ // network service.
|
||||
+ public:
|
||||
// Adds / removes an observer to watch for shutdown of |this|'s context. Must
|
||||
// only be called on network thread. May not be called once
|
||||
// GetURLRequestContext() starts returning nullptr.
|
||||
void AddObserver(URLRequestContextGetterObserver* observer);
|
||||
void RemoveObserver(URLRequestContextGetterObserver* observer);
|
||||
+ private:
|
||||
|
||||
// OnDestruct is used to ensure deletion on the thread on which the request
|
||||
// IO happens.
|
||||
--
|
||||
2.17.0
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
|
||||
index e6f6b3012b02..965b58e237ec 100644
|
||||
index b682235b0f87..0c88f4bf86b6 100644
|
||||
--- a/content/browser/frame_host/render_frame_host_manager.cc
|
||||
+++ b/content/browser/frame_host/render_frame_host_manager.cc
|
||||
@@ -1834,6 +1834,18 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
|
||||
@@ -1912,6 +1912,18 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
|
||||
bool was_server_redirect = request.navigation_handle() &&
|
||||
request.navigation_handle()->WasServerRedirect();
|
||||
|
||||
|
@ -21,8 +21,8 @@ index e6f6b3012b02..965b58e237ec 100644
|
|||
if (frame_tree_node_->IsMainFrame()) {
|
||||
// Renderer-initiated main frame navigations that may require a
|
||||
// SiteInstance swap are sent to the browser via the OpenURL IPC and are
|
||||
@@ -1850,6 +1862,19 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
|
||||
|
||||
@@ -1931,6 +1943,19 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
|
||||
request.common_params().url));
|
||||
no_renderer_swap_allowed |=
|
||||
request.from_begin_navigation() && !can_renderer_initiate_transfer;
|
||||
+
|
||||
|
@ -41,7 +41,7 @@ index e6f6b3012b02..965b58e237ec 100644
|
|||
} else {
|
||||
// Subframe navigations will use the current renderer, unless specifically
|
||||
// allowed to swap processes.
|
||||
@@ -1861,18 +1886,9 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
|
||||
@@ -1942,18 +1967,9 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
|
||||
if (no_renderer_swap_allowed)
|
||||
return scoped_refptr<SiteInstance>(current_site_instance);
|
||||
|
||||
|
@ -59,13 +59,13 @@ index e6f6b3012b02..965b58e237ec 100644
|
|||
- request.dest_site_instance(), candidate_site_instance,
|
||||
+ request.dest_site_instance(), candidate_site_instance.get(),
|
||||
request.common_params().transition,
|
||||
request.state() == NavigationRequest::FAILED,
|
||||
request.restore_type() != RestoreType::NONE, request.is_view_source(),
|
||||
was_server_redirect);
|
||||
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
|
||||
index 746760e8596c..99d9e0770f32 100644
|
||||
index 3ca627448e33..7d0c9ed7e1af 100644
|
||||
--- a/content/public/browser/content_browser_client.h
|
||||
+++ b/content/public/browser/content_browser_client.h
|
||||
@@ -181,6 +181,15 @@ class CONTENT_EXPORT ContentBrowserClient {
|
||||
@@ -186,6 +186,15 @@ class CONTENT_EXPORT ContentBrowserClient {
|
||||
public:
|
||||
virtual ~ContentBrowserClient() {}
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/gin/isolate_holder.cc b/gin/isolate_holder.cc
|
||||
index 56402d477ca3..8ab11bd18783 100644
|
||||
index 076d137eb7cf..c10c3b0be66b 100644
|
||||
--- a/gin/isolate_holder.cc
|
||||
+++ b/gin/isolate_holder.cc
|
||||
@@ -116,9 +116,10 @@ IsolateHolder::~IsolateHolder() {
|
||||
@@ -119,9 +119,10 @@ IsolateHolder::~IsolateHolder() {
|
||||
void IsolateHolder::Initialize(ScriptMode mode,
|
||||
V8ExtrasMode v8_extras_mode,
|
||||
v8::ArrayBuffer::Allocator* allocator,
|
||||
|
@ -30,7 +30,7 @@ index 2509aca609f9..94003c6031cf 100644
|
|||
v8::Isolate* isolate() { return isolate_; }
|
||||
|
||||
diff --git a/gin/v8_initializer.cc b/gin/v8_initializer.cc
|
||||
index 02d4b1cd6521..ec6d51d7e5d8 100644
|
||||
index be2b9149e440..816e56aa4f6b 100644
|
||||
--- a/gin/v8_initializer.cc
|
||||
+++ b/gin/v8_initializer.cc
|
||||
@@ -236,12 +236,14 @@ LoadV8FileResult MapOpenedFile(const OpenedFileMap::mapped_type& file_region,
|
||||
|
@ -51,7 +51,7 @@ index 02d4b1cd6521..ec6d51d7e5d8 100644
|
|||
if (base::FeatureList::IsEnabled(features::kV8OptimizeJavascript)) {
|
||||
static const char optimize[] = "--opt";
|
||||
diff --git a/gin/v8_initializer.h b/gin/v8_initializer.h
|
||||
index f0a7c5e0fb68..df4ab4f3e4b9 100644
|
||||
index 6f3265ba4d06..29f28bebbdcd 100644
|
||||
--- a/gin/v8_initializer.h
|
||||
+++ b/gin/v8_initializer.h
|
||||
@@ -21,7 +21,8 @@ class GIN_EXPORT V8Initializer {
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
diff --git a/build/config/linux/gtk/BUILD.gn b/build/config/linux/gtk/BUILD.gn
|
||||
index eb75461..2116f93 100644
|
||||
index deae4d3455a8..fd5d906b98b0 100644
|
||||
--- a/build/config/linux/gtk/BUILD.gn
|
||||
+++ b/build/config/linux/gtk/BUILD.gn
|
||||
@@ -17,6 +17,8 @@ assert(is_linux, "This file should only be referenced on Linux")
|
||||
group("gtk") {
|
||||
@@ -18,6 +18,8 @@ group("gtk") {
|
||||
visibility = [
|
||||
"//chrome/test:interactive_ui_tests",
|
||||
"//chrome/test:unit_tests",
|
||||
+ "//electron:*",
|
||||
+ "//electron/brightray:*",
|
||||
"//examples:peerconnection_client",
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/build/toolchain/win/tool_wrapper.py b/build/toolchain/win/tool_wrapper.py
|
||||
index a76e926a8681..c43839a01211 100644
|
||||
index 801d7a9b8e03..7b54f8dceb36 100644
|
||||
--- a/build/toolchain/win/tool_wrapper.py
|
||||
+++ b/build/toolchain/win/tool_wrapper.py
|
||||
@@ -258,7 +258,11 @@ class WinTool(object):
|
||||
@@ -254,7 +254,11 @@ class WinTool(object):
|
||||
if rc_exe_exit_code == 0:
|
||||
import filecmp
|
||||
# Strip "/fo" prefix.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
diff --git a/third_party/leveldatabase/port/port_chromium.h b/third_party/leveldatabase/port/port_chromium.h
|
||||
diff --git a/third_party/leveldatabase/port/port_chromium.h b/third_party/leveldatabase/port/port_chromium.h
|
||||
index a7c449eba19c..acbce7efd582 100644
|
||||
--- a/third_party/leveldatabase/port/port_chromium.h
|
||||
+++ b/third_party/leveldatabase/port/port_chromium.h
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/chrome/browser/ui/libgtkui/app_indicator_icon.h b/chrome/browser/ui/libgtkui/app_indicator_icon.h
|
||||
index 7815fbb..f17a5c5 100644
|
||||
index 7815fbb2cea8..f17a5c59e64b 100644
|
||||
--- a/chrome/browser/ui/libgtkui/app_indicator_icon.h
|
||||
+++ b/chrome/browser/ui/libgtkui/app_indicator_icon.h
|
||||
@@ -12,6 +12,7 @@
|
||||
|
@ -20,7 +20,7 @@ index 7815fbb..f17a5c5 100644
|
|||
// The id uniquely identifies the new status icon from other chrome status
|
||||
// icons.
|
||||
diff --git a/chrome/browser/ui/libgtkui/gtk_status_icon.h b/chrome/browser/ui/libgtkui/gtk_status_icon.h
|
||||
index e4e0da4..af02871 100644
|
||||
index e4e0da40981c..af028715ada9 100644
|
||||
--- a/chrome/browser/ui/libgtkui/gtk_status_icon.h
|
||||
+++ b/chrome/browser/ui/libgtkui/gtk_status_icon.h
|
||||
@@ -10,6 +10,7 @@
|
||||
|
@ -41,7 +41,7 @@ index e4e0da4..af02871 100644
|
|||
Gtk2StatusIcon(const gfx::ImageSkia& image, const base::string16& tool_tip);
|
||||
~Gtk2StatusIcon() override;
|
||||
diff --git a/chrome/browser/ui/libgtkui/gtk_util.h b/chrome/browser/ui/libgtkui/gtk_util.h
|
||||
index 665ec57..4ccb088 100644
|
||||
index 665ec57c09d5..4ccb08807fb4 100644
|
||||
--- a/chrome/browser/ui/libgtkui/gtk_util.h
|
||||
+++ b/chrome/browser/ui/libgtkui/gtk_util.h
|
||||
@@ -11,6 +11,7 @@
|
||||
|
@ -84,7 +84,7 @@ index 665ec57..4ccb088 100644
|
|||
// Renders the border from the style context created by
|
||||
// GetStyleContextFromCss(|css_selector|) into a 24x24 bitmap and
|
||||
diff --git a/chrome/browser/ui/libgtkui/skia_utils_gtk.h b/chrome/browser/ui/libgtkui/skia_utils_gtk.h
|
||||
index e05fbe9..3afca9a 100644
|
||||
index e05fbe9d8b2f..3afca9a72ab6 100644
|
||||
--- a/chrome/browser/ui/libgtkui/skia_utils_gtk.h
|
||||
+++ b/chrome/browser/ui/libgtkui/skia_utils_gtk.h
|
||||
@@ -7,6 +7,7 @@
|
||||
|
@ -105,7 +105,7 @@ index e05fbe9..3afca9a 100644
|
|||
} // namespace libgtkui
|
||||
|
||||
diff --git a/chrome/browser/ui/libgtkui/unity_service.h b/chrome/browser/ui/libgtkui/unity_service.h
|
||||
index 8d67e14..95fbb27 100644
|
||||
index 8d67e1460837..95fbb27b6a81 100644
|
||||
--- a/chrome/browser/ui/libgtkui/unity_service.h
|
||||
+++ b/chrome/browser/ui/libgtkui/unity_service.h
|
||||
@@ -5,18 +5,20 @@
|
||||
|
|
|
@ -1,17 +1,8 @@
|
|||
From d322e351554a4fa1fbaf529769416041031f07e9 Mon Sep 17 00:00:00 2001
|
||||
From: Jeremy Apthorp <jeremya@chromium.org>
|
||||
Date: Mon, 6 Aug 2018 13:02:53 -0700
|
||||
Subject: fix: [mas] don't call private api AudioDeviceDuck
|
||||
|
||||
---
|
||||
media/audio/mac/audio_low_latency_input_mac.cc | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/media/audio/mac/audio_low_latency_input_mac.cc b/media/audio/mac/audio_low_latency_input_mac.cc
|
||||
index 173167b54dfb..1c0fda354d03 100644
|
||||
index 53586b888d82..c1d750dbf32d 100644
|
||||
--- a/media/audio/mac/audio_low_latency_input_mac.cc
|
||||
+++ b/media/audio/mac/audio_low_latency_input_mac.cc
|
||||
@@ -28,12 +28,14 @@
|
||||
@@ -31,19 +31,23 @@
|
||||
|
||||
namespace {
|
||||
extern "C" {
|
||||
|
@ -25,23 +16,16 @@ index 173167b54dfb..1c0fda354d03 100644
|
|||
+#endif
|
||||
}
|
||||
|
||||
} // namespace
|
||||
@@ -604,6 +606,7 @@ bool AUAudioInputStream::OpenVoiceProcessingAU() {
|
||||
return false;
|
||||
}
|
||||
|
||||
void UndoDucking(AudioDeviceID output_device_id) {
|
||||
+#ifndef MAS_BUILD
|
||||
if (AudioDeviceDuck != nullptr) {
|
||||
// Undo the ducking.
|
||||
// Obtain the AudioDeviceID of the default output AudioDevice.
|
||||
@@ -619,6 +622,7 @@ bool AUAudioInputStream::OpenVoiceProcessingAU() {
|
||||
AudioDeviceDuck(output_device, 1.0, nullptr, 0.5);
|
||||
}
|
||||
// Ramp the volume back up over half a second.
|
||||
AudioDeviceDuck(output_device_id, 1.0, nullptr, 0.5);
|
||||
}
|
||||
+#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
--
|
||||
2.17.0
|
||||
|
||||
|
|
|
@ -1,25 +1,16 @@
|
|||
From 9fb1ac04b1a3e7ec53e27cf1f413469d04360d1e Mon Sep 17 00:00:00 2001
|
||||
From: Jeremy Apthorp <jeremya@chromium.org>
|
||||
Date: Mon, 6 Aug 2018 17:11:14 -0700
|
||||
Subject: fix: [mas] remove usage of _CFIsObjC
|
||||
|
||||
---
|
||||
base/mac/foundation_util.mm | 7 +------
|
||||
1 file changed, 1 insertion(+), 6 deletions(-)
|
||||
|
||||
diff --git a/base/mac/foundation_util.mm b/base/mac/foundation_util.mm
|
||||
index aec8c0f6398c..6a6dfc272d45 100644
|
||||
index 15fc15ba307e..7ca4e0ec5ca8 100644
|
||||
--- a/base/mac/foundation_util.mm
|
||||
+++ b/base/mac/foundation_util.mm
|
||||
@@ -25,7 +25,6 @@
|
||||
extern "C" {
|
||||
@@ -26,7 +26,6 @@ CFTypeID SecKeyGetTypeID();
|
||||
#if !defined(OS_IOS)
|
||||
CFTypeID SecACLGetTypeID();
|
||||
CFTypeID SecTrustedApplicationGetTypeID();
|
||||
-Boolean _CFIsObjC(CFTypeID typeID, CFTypeRef obj);
|
||||
} // extern "C"
|
||||
#endif
|
||||
} // extern "C"
|
||||
|
||||
@@ -323,8 +322,7 @@ NSFont* CFToNSCast(CTFontRef cf_val) {
|
||||
@@ -325,8 +324,7 @@ NSFont* CFToNSCast(CTFontRef cf_val) {
|
||||
const_cast<NSFont*>(reinterpret_cast<const NSFont*>(cf_val));
|
||||
DCHECK(!cf_val ||
|
||||
CTFontGetTypeID() == CFGetTypeID(cf_val) ||
|
||||
|
@ -29,7 +20,7 @@ index aec8c0f6398c..6a6dfc272d45 100644
|
|||
return ns_val;
|
||||
}
|
||||
|
||||
@@ -392,9 +390,6 @@ CFCast<CTFontRef>(const CFTypeRef& cf_val) {
|
||||
@@ -394,9 +392,6 @@ CFCast<CTFontRef>(const CFTypeRef& cf_val) {
|
||||
return (CTFontRef)(cf_val);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,14 +1,11 @@
|
|||
From 82d0ef64e22c69c0435608276149977d2811a3f7 Mon Sep 17 00:00:00 2001
|
||||
From 0680698be349b3619561c65eb072d9880e405fae Mon Sep 17 00:00:00 2001
|
||||
From: Jeremy Apthorp <nornagon@nornagon.net>
|
||||
Date: Mon, 6 Aug 2018 10:58:46 -0700
|
||||
Subject: fix: [mas] remove usage of CGDisplayUsesForceToGray
|
||||
Date: Fri, 14 Sep 2018 09:53:11 -0700
|
||||
Subject: apply patch: mas-cgdisplayusesforcetogray
|
||||
|
||||
---
|
||||
ui/display/mac/screen_mac.mm | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/ui/display/mac/screen_mac.mm b/ui/display/mac/screen_mac.mm
|
||||
index 4850c795480e..ec34b25a6fe8 100644
|
||||
index be4f343bcd44..84fd3ec23cfa 100644
|
||||
--- a/ui/display/mac/screen_mac.mm
|
||||
+++ b/ui/display/mac/screen_mac.mm
|
||||
@@ -106,7 +106,17 @@ Display BuildDisplayForScreen(NSScreen* screen) {
|
||||
|
|
|
@ -1,14 +1,5 @@
|
|||
From 3fcbe57ff316894349907bf1c85f71d7487f0932 Mon Sep 17 00:00:00 2001
|
||||
From: Jeremy Apthorp <jeremya@chromium.org>
|
||||
Date: Mon, 6 Aug 2018 13:40:24 -0700
|
||||
Subject: fix: [mas] don't call LaunchServices private api
|
||||
|
||||
---
|
||||
content/gpu/gpu_main.cc | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc
|
||||
index 115f871094bc..aa47a1c1a51e 100644
|
||||
index e6a589fb90e0..64ff5e248bd7 100644
|
||||
--- a/content/gpu/gpu_main.cc
|
||||
+++ b/content/gpu/gpu_main.cc
|
||||
@@ -276,8 +276,10 @@ int GpuMain(const MainFunctionParams& parameters) {
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue