build: move libcc patches to electron repo (#14104)
In the GN build, libchromiumcontent is no longer a distinct library, but merely a container for a set of scripts and patches. Maintaining those patches in a separate repository is tedious and error-prone, so merge them into the main repo. Once this is merged and GN is the default way to build Electron, the libchromiumcontent repository can be archived.
This commit is contained in:
parent
9e85bdb02c
commit
76c5f5cc8a
147 changed files with 86931 additions and 6 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -41,6 +41,7 @@
|
||||||
/vendor/python_26/
|
/vendor/python_26/
|
||||||
/vendor/native_mksnapshot
|
/vendor/native_mksnapshot
|
||||||
/vendor/LICENSES.chromium.html
|
/vendor/LICENSES.chromium.html
|
||||||
|
/vendor/pyyaml
|
||||||
node_modules/
|
node_modules/
|
||||||
SHASUMS256.txt
|
SHASUMS256.txt
|
||||||
**/yarn.lock
|
**/yarn.lock
|
||||||
|
|
16
DEPS
16
DEPS
|
@ -1,17 +1,21 @@
|
||||||
vars = {
|
vars = {
|
||||||
'chromium_version':
|
'chromium_version':
|
||||||
'67.0.3396.99',
|
'67.0.3396.99',
|
||||||
'libchromiumcontent_revision':
|
|
||||||
'5db6529f9663a48ee3e6f4265a6abe7806f1dfbf',
|
|
||||||
'node_version':
|
'node_version':
|
||||||
'9dcbed23f016d3ad081be6ec7fb5122e57862da7',
|
'9dcbed23f016d3ad081be6ec7fb5122e57862da7',
|
||||||
|
|
||||||
|
'pyyaml_version':
|
||||||
|
'3.12',
|
||||||
|
|
||||||
'chromium_git':
|
'chromium_git':
|
||||||
'https://chromium.googlesource.com',
|
'https://chromium.googlesource.com',
|
||||||
|
|
||||||
'electron_git':
|
'electron_git':
|
||||||
'https://github.com/electron',
|
'https://github.com/electron',
|
||||||
|
|
||||||
|
'yaml_git':
|
||||||
|
'https://github.com/yaml',
|
||||||
|
|
||||||
'checkout_nacl':
|
'checkout_nacl':
|
||||||
False,
|
False,
|
||||||
'checkout_libaom':
|
'checkout_libaom':
|
||||||
|
@ -23,22 +27,22 @@ vars = {
|
||||||
deps = {
|
deps = {
|
||||||
'src':
|
'src':
|
||||||
(Var("chromium_git")) + '/chromium/src.git@' + (Var("chromium_version")),
|
(Var("chromium_git")) + '/chromium/src.git@' + (Var("chromium_version")),
|
||||||
'src/libchromiumcontent':
|
|
||||||
(Var("electron_git")) + '/libchromiumcontent.git@' + (Var("libchromiumcontent_revision")),
|
|
||||||
'src/third_party/electron_node':
|
'src/third_party/electron_node':
|
||||||
(Var("electron_git")) + '/node.git@' + (Var("node_version")),
|
(Var("electron_git")) + '/node.git@' + (Var("node_version")),
|
||||||
|
'src/electron/vendor/pyyaml':
|
||||||
|
(Var("yaml_git")) + '/pyyaml.git@' + (Var("pyyaml_version")),
|
||||||
}
|
}
|
||||||
|
|
||||||
hooks = [
|
hooks = [
|
||||||
{
|
{
|
||||||
'action': [
|
'action': [
|
||||||
'python',
|
'python',
|
||||||
'src/libchromiumcontent/script/apply-patches',
|
'src/electron/script/apply-patches',
|
||||||
'--project-root=.',
|
'--project-root=.',
|
||||||
'--commit'
|
'--commit'
|
||||||
],
|
],
|
||||||
'pattern':
|
'pattern':
|
||||||
'src/libchromiumcontent',
|
'src/electron',
|
||||||
'name':
|
'name':
|
||||||
'patch_chromium'
|
'patch_chromium'
|
||||||
},
|
},
|
||||||
|
|
25
build/config/BUILD.gn
Normal file
25
build/config/BUILD.gn
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
config("build_time_executable") {
|
||||||
|
configs = []
|
||||||
|
|
||||||
|
if (is_electron_build && !is_component_build) {
|
||||||
|
# The executables which have this config applied are dependent on ffmpeg,
|
||||||
|
# which is always a shared library in an Electron build. However, in the
|
||||||
|
# non-component build, executables don't have rpath set to search for
|
||||||
|
# libraries in the executable's directory, so ffmpeg cannot be found. So
|
||||||
|
# let's make sure rpath is set here.
|
||||||
|
# See '//build/config/gcc/BUILD.gn' for details on the rpath setting.
|
||||||
|
if (is_linux) {
|
||||||
|
configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_mac) {
|
||||||
|
ldflags = [ "-Wl,-rpath,@loader_path/." ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# For MAS build, we force defining "MAS_BUILD".
|
||||||
|
config("mas_build") {
|
||||||
|
if (is_mas_build) {
|
||||||
|
defines = [ "MAS_BUILD" ]
|
||||||
|
}
|
||||||
|
}
|
6
patches/common/angle/.patches.yaml
Normal file
6
patches/common/angle/.patches.yaml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
repo: src/third_party/angle
|
||||||
|
patches:
|
||||||
|
-
|
||||||
|
author: Ales Pergl <alpergl@microsoft.com>
|
||||||
|
file: dcheck.patch
|
||||||
|
description: null
|
13
patches/common/angle/dcheck.patch
Normal file
13
patches/common/angle/dcheck.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/src/common/debug.h b/src/common/debug.h
|
||||||
|
index 0108ff655..57fbc5ac5 100644
|
||||||
|
--- a/src/common/debug.h
|
||||||
|
+++ b/src/common/debug.h
|
||||||
|
@@ -190,7 +190,7 @@ std::ostream &FmtHexInt(std::ostream &os, T value)
|
||||||
|
|
||||||
|
#define ANGLE_EMPTY_STATEMENT for (;;) break
|
||||||
|
#if !defined(NDEBUG) || defined(ANGLE_ENABLE_RELEASE_ASSERTS)
|
||||||
|
-#define ANGLE_ENABLE_ASSERTS
|
||||||
|
+// #define ANGLE_ENABLE_ASSERTS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define WARN() ANGLE_LOG(WARN)
|
12
patches/common/boringssl/.patches.yaml
Normal file
12
patches/common/boringssl/.patches.yaml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
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
|
||||||
|
description: |
|
||||||
|
BoringSSL doesn't implement `SSL_get_tlsext_status_type()`,
|
||||||
|
but Node.js expects it to be present cause OpenSSL has it.
|
|
@ -0,0 +1,741 @@
|
||||||
|
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
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h
|
||||||
|
index d04390df..0b8677ce 100644
|
||||||
|
--- a/include/openssl/ssl.h
|
||||||
|
+++ b/include/openssl/ssl.h
|
||||||
|
@@ -4120,6 +4120,8 @@ extern "C++" OPENSSL_EXPORT void SSL_CTX_sess_set_get_cb(
|
||||||
|
// Use |SSL_enable_ocsp_stapling| instead.
|
||||||
|
OPENSSL_EXPORT int SSL_set_tlsext_status_type(SSL *ssl, int type);
|
||||||
|
|
||||||
|
+OPENSSL_EXPORT int SSL_get_tlsext_status_type(SSL *ssl);
|
||||||
|
+
|
||||||
|
// 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|.
|
||||||
|
diff --git a/ssl/ssl_lib.cc b/ssl/ssl_lib.cc
|
||||||
|
index 0c004fd4..6c849b5b 100644
|
||||||
|
--- a/ssl/ssl_lib.cc
|
||||||
|
+++ b/ssl/ssl_lib.cc
|
||||||
|
@@ -2723,6 +2723,14 @@ int SSL_set_tlsext_status_type(SSL *ssl, int type) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
+int SSL_get_tlsext_status_type(SSL *ssl) {
|
||||||
|
+ if (ssl->ocsp_stapling_enabled) {
|
||||||
|
+ return TLSEXT_STATUSTYPE_ocsp;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return TLSEXT_STATUSTYPE_nothing;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
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);
|
468
patches/common/chromium/.patches.yaml
Normal file
468
patches/common/chromium/.patches.yaml
Normal file
|
@ -0,0 +1,468 @@
|
||||||
|
repo: src
|
||||||
|
patches:
|
||||||
|
-
|
||||||
|
author: Shelley Vohr <shelley.vohr@gmail.com>
|
||||||
|
file: add_realloc.patch
|
||||||
|
description: |
|
||||||
|
Blink overrides ArrayBuffer's allocator with its own one, while Node simply
|
||||||
|
uses malloc and free, so we need to use v8's allocator in Node. As part of the
|
||||||
|
10.6.0 upgrade, we needed to make SerializerDelegate accept an allocator
|
||||||
|
argument in its constructor, and override ReallocateBufferMemory and
|
||||||
|
FreeBufferMemory to use the allocator. We cannot simply allocate and then memcpy
|
||||||
|
when we override ReallocateBufferMemory, so we therefore need to implement
|
||||||
|
Realloc on the v8 side and correspondingly in gin.
|
||||||
|
-
|
||||||
|
author: Ales Pergl <alpergl@microsoft.com>
|
||||||
|
file: build_gn.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: deepak1556 <hop2deep@gmail.com>
|
||||||
|
file: dcheck.patch
|
||||||
|
description: |
|
||||||
|
This disables some debug checks which currently fail when running the Electron
|
||||||
|
test suite. In general there should be sustained effort to have all debug checks
|
||||||
|
enabled. If you want to help, choose one of the diffs below and remove it. Then
|
||||||
|
build Electron (debug configuration) and make sure all tests pass on the CI
|
||||||
|
systems. Unfortunately the tests don't always cover the check failures, so it's
|
||||||
|
good to also run some non-trivial Electron app to verify.
|
||||||
|
|
||||||
|
Apart from getting rid of a whole diff, you may also be able to replace one diff
|
||||||
|
with another which enables at least some of the previously disabled checks. For
|
||||||
|
example, the checks might be disabled for a whole build target, but actually
|
||||||
|
only one or two specific checks fail. Then it's better to simply comment out the
|
||||||
|
failing checks and allow the rest of the target to have them enabled.
|
||||||
|
|
||||||
|
Please keep the following lists updated.
|
||||||
|
|
||||||
|
The ELECTRON_NO_DCHECK build flag disables debug checks universally.
|
||||||
|
This patch applies the flag to the following GN targets:
|
||||||
|
|
||||||
|
third_party/blink/renderer/core/loader:loader
|
||||||
|
url:url
|
||||||
|
|
||||||
|
These files have debug checks explicitly commented out:
|
||||||
|
|
||||||
|
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
|
||||||
|
ppapi/host/ppapi_host.cc
|
||||||
|
third_party/blink/renderer/core/dom/node.cc
|
||||||
|
third_party/blink/renderer/platform/wtf/text/string_impl.cc
|
||||||
|
ui/base/clipboard/clipboard_win.cc
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: accelerator.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Ales Pergl <alpergl@microsoft.com>
|
||||||
|
file: allow_new_privs.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: null
|
||||||
|
file: app_indicator_icon_menu.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: blink_file_path.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: blink_local_frame.patch
|
||||||
|
description: |
|
||||||
|
According to electron/electron#3699, it is unreliable to use |unload|
|
||||||
|
event for process.exit('exit'), so we have to do that in
|
||||||
|
willReleaseScriptContext.
|
||||||
|
|
||||||
|
However Chromium then disallowed scripting in willReleaseScriptContext
|
||||||
|
in https://codereview.chromium.org/1657583002, and crash will happen
|
||||||
|
when there is code doing that.
|
||||||
|
|
||||||
|
This patch reverts the change to fix the crash in Electron.
|
||||||
|
-
|
||||||
|
author: null
|
||||||
|
file: blink_world_context.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: browser_compositor_mac.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: null
|
||||||
|
file: browser_plugin_wheel.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: null
|
||||||
|
file: build_toolchain_win_patch.patch
|
||||||
|
description: |
|
||||||
|
Patch the Windows build toolchain to generate unique PDB names
|
||||||
|
|
||||||
|
When the PDB files generated by the `static_library` build are
|
||||||
|
packaged for distribution they are all copied to a single folder,
|
||||||
|
some of the PDB files have identical names so they end up
|
||||||
|
overwriting each other. The missing PDB files cause linker warnings
|
||||||
|
when building Electron in Release mode, and make it more difficult
|
||||||
|
to debug release builds.
|
||||||
|
|
||||||
|
This patch modifies the PDB naming convention for the
|
||||||
|
`static_library` build configuration to ensure PDB names are unique.
|
||||||
|
For example, instead of generating `obj/ui/base/base_cc.pdb` the
|
||||||
|
build will now generate `obj/ui/base/obj_ui_base_base_cc.pdb`.
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: can_create_window.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: null
|
||||||
|
file: compositor_delegate.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: null
|
||||||
|
file: desktop_screen_win.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: disable_hidden.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: dom_storage_map.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: deepak1556 <hop2deep@gmail.com>
|
||||||
|
file: frame_host_manager.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Tony Ganch <tonyganch@gmail.com>
|
||||||
|
file: latency_info.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: net_url_request_job.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Aleksei Kuzmin <alkuzmin@microsoft.com>
|
||||||
|
file: no_stack_dumping.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: deepak1556 <hop2deep@gmail.com>
|
||||||
|
file: out_of_process_instance.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Aleksei Kuzmin <alkuzmin@microsoft.com>
|
||||||
|
file: protobuf_build_gn.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: null
|
||||||
|
file: render_widget_host_view_base.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: render_widget_host_view_mac.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: null
|
||||||
|
file: scoped_clipboard_writer.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: deepak1556 <hop2deep@gmail.com>
|
||||||
|
file: stream_resource_handler.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: null
|
||||||
|
file: thread_capabilities.patch
|
||||||
|
description: |
|
||||||
|
Chromium automatically drops all capabilities of renderer threads in
|
||||||
|
Linux, which may cause issues in a context like Electron, where the main
|
||||||
|
and renderer threads are supposed to keep inherited permissions over the
|
||||||
|
system.
|
||||||
|
|
||||||
|
See https://github.com/atom/electron/issues/3666
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: use_transparent_window.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: null
|
||||||
|
file: web_contents.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Milan Burda <milan.burda@gmail.com>
|
||||||
|
file: webgl_context_attributes.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: null
|
||||||
|
file: webview_cross_drag.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: worker_context_will_destroy.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: null
|
||||||
|
file: webui_in_subframes.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Aleksei Kuzmin <alkuzmin@microsoft.com>
|
||||||
|
file: export_blink_webdisplayitemlist.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Aleksei Kuzmin <alkuzmin@microsoft.com>
|
||||||
|
file: statically_build_power_save_blocker.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Tomas Rycl <torycl@microsoft.com>
|
||||||
|
file: browser_plugin_guest.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Aleksei Kuzmin <alkuzmin@microsoft.com>
|
||||||
|
file: disable_user_gesture_requirement_for_beforeunload_dialogs.patch
|
||||||
|
description: See https://github.com/electron/electron/issues/10754
|
||||||
|
-
|
||||||
|
author: Aleksei Kuzmin <alkuzmin@microsoft.com>
|
||||||
|
file: add_atomic_lib_to_dependencies_even_for_sysroot_builds.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: gin_enable_disable_v8_platform.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: deepak1556 <hop2deep@gmail.com>
|
||||||
|
file: disable-recursive-surface-sync.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: deepak1556 <hop2deep@gmail.com>
|
||||||
|
file: blink-worker-enable-csp-in-file-scheme.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: fix-arm64-linking-error.patch
|
||||||
|
description: Do not use system freetype for arm64
|
||||||
|
-
|
||||||
|
author: Heilig Benedek <benecene@gmail.com>
|
||||||
|
file: disable-redraw-lock.patch
|
||||||
|
description: |
|
||||||
|
Chromium uses a custom window titlebar implementation on Windows when DWM
|
||||||
|
is disabled (Windows 7 and earlier, non Aero theme). The native titlebar
|
||||||
|
sometimes painted over this custom titlebar, so a workaround was put in
|
||||||
|
place to lock redraws in reaction to certain events if DWM is disabled,
|
||||||
|
since the code assumes that in that case, the custom titlebar is painted.
|
||||||
|
Electron forces the use of the native titlebar, which the workaround doesn't
|
||||||
|
take into account, and still locks redraws, causing weird repainting issues
|
||||||
|
in electron (and other applications). This patch provides a way to disable
|
||||||
|
the redraw locking mechanism, which fixes these issues. The electron issue
|
||||||
|
can be found at https://github.com/electron/electron/issues/1821
|
||||||
|
-
|
||||||
|
author: Nitish Sakhawalkar <nitsakh@icloud.com>
|
||||||
|
file: v8_context_snapshot_generator.patch
|
||||||
|
description: |
|
||||||
|
v8_context_snapshot_generator is a build time executable.
|
||||||
|
The patch adds the config.
|
||||||
|
# -
|
||||||
|
# author: Tomas Rycl <torycl@microsoft.com>
|
||||||
|
# file: crashpad-disabled-windows.patch
|
||||||
|
# description: |
|
||||||
|
# On Windows Electron does not link Crashpad. This causes linking
|
||||||
|
# errors with Chromium where it is enabled by default.
|
||||||
|
# This patch will disable Crashpad in Chromium using fallback
|
||||||
|
# mechanism which uses Breakpad.
|
||||||
|
-
|
||||||
|
author: Jeremy Apthorp <nornagon@nornagon.net>
|
||||||
|
file: boringssl_build_gn.patch
|
||||||
|
description: |
|
||||||
|
Build BoringSSL with some extra functions that nodejs needs. Only affects
|
||||||
|
the GN build; with the GYP build, nodejs is still built with OpenSSL.
|
||||||
|
-
|
||||||
|
author: deepak1556 <hop2deep@gmail.com>
|
||||||
|
file: pepper_flash.patch
|
||||||
|
description: |
|
||||||
|
Allows building chrome pepper flash integration for Electron.
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: no_cache_storage_check.patch
|
||||||
|
description: |
|
||||||
|
Do not check for unique origin in CacheStorage, in Electron we may have
|
||||||
|
scripts running without an origin.
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: blink_fix_prototype_assert.patch
|
||||||
|
description: |
|
||||||
|
A recent Chromium change has accidentally added assertion for the case when
|
||||||
|
a new window object may not have a prototype attached. In Electron it may
|
||||||
|
happen when preventDefault for a native new-window event.
|
||||||
|
https://chromium.googlesource.com/chromium/src/+/f47b361887a31cccf42a6e21a82bccf28372bdaa%5E%21
|
||||||
|
In the long term we should investigate why it happened, and take a more
|
||||||
|
formal fix. But for now I'm just make this assertion silently pass away.
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: disable_scroll_begin_dcheck.patch
|
||||||
|
description: |
|
||||||
|
When testing https://github.com/electron/electron/issues/13137 I have met
|
||||||
|
these assertions. I grouped them together since they are all related to the
|
||||||
|
ScrollBegin event.
|
||||||
|
-
|
||||||
|
author: Jeremy Apthorp <nornagon@nornagon.net>
|
||||||
|
file: libgtkui_export.patch
|
||||||
|
description: |
|
||||||
|
Export libgtkui symbols for the GN component build.
|
||||||
|
-
|
||||||
|
author: Jeremy Apthorp <nornagon@nornagon.net>
|
||||||
|
file: gtk_visibility.patch
|
||||||
|
description: |
|
||||||
|
Allow electron and brightray to depend on GTK in the GN build.
|
||||||
|
-
|
||||||
|
author: Jeremy Apthorp <nornagon@nornagon.net>
|
||||||
|
file: sysroot.patch
|
||||||
|
description: |
|
||||||
|
Make chrome's install-sysroot scripts point to our custom sysroot builds,
|
||||||
|
which include extra deps that Electron needs (e.g. libnotify)
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: mas_blink_no_private_api.patch
|
||||||
|
description: |
|
||||||
|
Guard usages in chromium code of private Mac APIs by MAS_BUILD, so they can
|
||||||
|
be excluded for people who want to submit their apps to the Mac App store.
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: mas_no_private_api.patch
|
||||||
|
description: |
|
||||||
|
Guard usages in blink of private Mac APIs by MAS_BUILD, so they can be
|
||||||
|
excluded for people who want to submit their apps to the Mac App store.
|
||||||
|
-
|
||||||
|
author: Jeremy Apthorp <nornagon@nornagon.net>
|
||||||
|
file: resource_file_conflict.patch
|
||||||
|
description: |
|
||||||
|
Resolve conflict between //chrome's .pak files and //electron's. The paths
|
||||||
|
that chrome code hardcodes require that we generate resources at these
|
||||||
|
paths, but GN throws errors if there are multiple targets that generate the
|
||||||
|
same files.
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: scroll_bounce_flag.patch
|
||||||
|
description: |
|
||||||
|
Patch to make scrollBounce option work.
|
||||||
|
-
|
||||||
|
author: Birunthan Mohanathas <birunthan@mohanathas.com>
|
||||||
|
file: backport_d65792a.patch
|
||||||
|
description: |
|
||||||
|
https://chromium-review.googlesource.com/c/chromium/src/+/1105698
|
||||||
|
Fixes https://github.com/electron/electron/issues/13256
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: webview_reattach.patch
|
||||||
|
description: |
|
||||||
|
Backports https://chromium-review.googlesource.com/c/chromium/src/+/1161391
|
||||||
|
Fixes webview not working after renderer process restarted.
|
||||||
|
-
|
||||||
|
author: Jeremy Apthorp <nornagon@nornagon.net>
|
||||||
|
file: mas-cfisobjc.patch
|
||||||
|
description: |
|
||||||
|
Removes usage of the _CFIsObjC private API.
|
||||||
|
-
|
||||||
|
author: Jeremy Apthorp <nornagon@nornagon.net>
|
||||||
|
file: mas-cgdisplayusesforcetogray.patch
|
||||||
|
description: |
|
||||||
|
Removes usage of the CGDisplayUsesForceToGray private API.
|
||||||
|
-
|
||||||
|
author: Jeremy Apthorp <nornagon@nornagon.net>
|
||||||
|
file: mas-audiodeviceduck.patch
|
||||||
|
description: |
|
||||||
|
Removes usage of the AudioDeviceDuck private API.
|
||||||
|
-
|
||||||
|
author: Jeremy Apthorp <nornagon@nornagon.net>
|
||||||
|
file: mas-lssetapplicationlaunchservicesserverconnectionstatus.patch
|
||||||
|
description: |
|
||||||
|
Removes usage of the _LSSetApplicationLaunchServicesServerConnectionStatus
|
||||||
|
private API.
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: allow_webview_file_url.patch
|
||||||
|
description: |
|
||||||
|
Allow webview to load non-web URLs.
|
||||||
|
-
|
||||||
|
author: John Kleinschmidt <jkleinsc@github.com>
|
||||||
|
file: windows_cc_wrapper.patch
|
||||||
|
description: |
|
||||||
|
Allow use of cc_wrapper (eg sccache).
|
||||||
|
-
|
||||||
|
author: Shelley Vohr <shelley.vohr@gmail.com>
|
||||||
|
file: enable_osr_components.patch
|
||||||
|
description: |
|
||||||
|
Add MouseWheelPhaseHandler for OSR.
|
||||||
|
-
|
||||||
|
author: Zac Walker <zac.walker@microsoft.com>
|
||||||
|
file: ignore_rc_check.patch
|
||||||
|
description: |
|
||||||
|
Dont compare RC.exe and RC.py output.
|
||||||
|
FIXME: It has to be reverted once the script is fixed.
|
||||||
|
-
|
||||||
|
author: Aleksei Kuzmin <alkuzmin@microsoft.com>
|
||||||
|
file: enable_widevine.patch
|
||||||
|
description: |
|
||||||
|
Turns `enable_widevine` flag on by default on Mac and Windows.
|
||||||
|
Electron needs that flag to be enabled on those paltforms,
|
||||||
|
but there's no way to conditionally set it during a `gn gen` call.
|
||||||
|
-
|
||||||
|
author: deepak1556 <hop2deep@gmail.com>
|
||||||
|
file: content_browser_manifest.patch
|
||||||
|
description: |
|
||||||
|
Allow content_browser service to access GeolocationControl
|
||||||
|
interface from device service.
|
||||||
|
-
|
||||||
|
author: deepak1556 <hop2deep@gmail.com>
|
||||||
|
file: chrome_key_systems.patch
|
||||||
|
description: |
|
||||||
|
Disable persiste licence support check for widevine cdm,
|
||||||
|
as its not supported in the current version of chrome.
|
||||||
|
-
|
||||||
|
author: Charles Kerr <charles@charleskerr.com>
|
||||||
|
file: allow_nested_error_trackers.patch
|
||||||
|
description: |
|
||||||
|
Only one X11ErrorTracker should exist at a time, but upstream has a bug
|
||||||
|
where two can exist if running in headless mode --
|
||||||
|
ui::(anonymous namespace)::SupportsEWMH() [inner tracker is created]
|
||||||
|
ui::WmSupportsHint()
|
||||||
|
ui::IsX11WindowFullScreen()
|
||||||
|
ui::ScreensaverWindowFinder::IsScreensaverWindow()
|
||||||
|
ui::ScreensaverWindowFinder::ShouldStopIterating()
|
||||||
|
ui::EnumerateTopLevelWindows()
|
||||||
|
ui::ScreensaverWindowFinder::ScreensaverWindowExists() [outer tracker created]
|
||||||
|
ui::CheckIdleStateIsLocked()
|
||||||
|
ui::CalculateIdleState()
|
||||||
|
Removal of either tracker could have side-effects in some code paths,
|
||||||
|
so this is probably better handled upstream. This patch tries to do the
|
||||||
|
least harm in the interim by removing the check that prevents more than
|
||||||
|
one tracker from existing at a time.
|
||||||
|
-
|
||||||
|
author: Samuel Attard <samuel.r.attard@gmail.com>
|
||||||
|
file: blink_initialization_order.patch
|
||||||
|
description: |
|
||||||
|
Backport of https://chromium-review.googlesource.com/c/chromium/src/+/1030530
|
||||||
|
to fix the order of V8 and Blink initialization. Also fixes order
|
||||||
|
of DidCreateScriptContext notification with initialization of window globals
|
||||||
|
to fix electron/electron#13787. The backport landed in Chromium 67 but the
|
||||||
|
DidCreateScriptContext re-ordering needs to be upstreamed or kept indefinitely
|
||||||
|
-
|
||||||
|
author: zcbenz <zcbenz@gmail.com>
|
||||||
|
file: disable_detach_webview_frame.patch
|
||||||
|
description: |
|
||||||
|
Don't detach the frame for webview, we will manage the WebContents
|
||||||
|
manually.
|
||||||
|
This is part of the fixes for https://github.com/electron/electron/issues/14211.
|
||||||
|
We should revisit this bug after upgrading to newer versions of Chrome,
|
||||||
|
this patch was introduced in Chrome 66.
|
||||||
|
-
|
||||||
|
author: deepak1556 <hop2deep@gmail.com>
|
||||||
|
file: ssl_security_state_tab_helper.patch
|
||||||
|
description: |
|
||||||
|
Allows populating security tab info for devtools in Electron.
|
||||||
|
-
|
||||||
|
author: Jeremy Apthorp <jeremya@chromium.org>
|
||||||
|
file: leveldb_ssize_t.patch
|
||||||
|
description: |
|
||||||
|
Fix conflict between leveldb & node's definition of ssize_t on
|
||||||
|
Windows by preventing leveldb from re-defining the type if it's
|
||||||
|
already defined.
|
103
patches/common/chromium/accelerator.patch
Normal file
103
patches/common/chromium/accelerator.patch
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
diff --git a/ui/base/accelerators/accelerator.cc b/ui/base/accelerators/accelerator.cc
|
||||||
|
index a6756c2..5352958 100644
|
||||||
|
--- a/ui/base/accelerators/accelerator.cc
|
||||||
|
+++ b/ui/base/accelerators/accelerator.cc
|
||||||
|
@@ -11,6 +11,7 @@
|
||||||
|
#include "base/logging.h"
|
||||||
|
#include "base/strings/strcat.h"
|
||||||
|
#include "base/strings/string_util.h"
|
||||||
|
+#include "base/strings/stringprintf.h"
|
||||||
|
#include "base/strings/utf_string_conversions.h"
|
||||||
|
#include "build/build_config.h"
|
||||||
|
#include "ui/base/l10n/l10n_util.h"
|
||||||
|
@@ -21,9 +22,7 @@
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#if !defined(OS_WIN) && (defined(USE_AURA) || defined(OS_MACOSX))
|
||||||
|
#include "ui/events/keycodes/keyboard_code_conversion.h"
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
namespace ui {
|
||||||
|
|
||||||
|
@@ -145,7 +144,17 @@ base::string16 Accelerator::GetShortcutText() const {
|
||||||
|
shortcut = KeyCodeToName(key_code_);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+ unsigned int flags = 0;
|
||||||
|
if (shortcut.empty()) {
|
||||||
|
+ if (IsShiftDown())
|
||||||
|
+ flags = ui::EF_SHIFT_DOWN;
|
||||||
|
+ const uint16_t c = DomCodeToUsLayoutCharacter(
|
||||||
|
+ UsLayoutKeyboardCodeToDomCode(key_code_), flags);
|
||||||
|
+ if (c != 0) {
|
||||||
|
+ shortcut =
|
||||||
|
+ static_cast<base::string16::value_type>(
|
||||||
|
+ base::ToUpperASCII(static_cast<base::char16>(c)));
|
||||||
|
+ }
|
||||||
|
#if defined(OS_WIN)
|
||||||
|
// Our fallback is to try translate the key code to a regular character
|
||||||
|
// unless it is one of digits (VK_0 to VK_9). Some keyboard
|
||||||
|
@@ -154,17 +163,20 @@ base::string16 Accelerator::GetShortcutText() const {
|
||||||
|
// accent' for '0'). For display in the menu (e.g. Ctrl-0 for the
|
||||||
|
// default zoom level), we leave VK_[0-9] alone without translation.
|
||||||
|
wchar_t key;
|
||||||
|
- if (base::IsAsciiDigit(key_code_))
|
||||||
|
+ if (base::IsAsciiDigit(key_code_)) {
|
||||||
|
key = static_cast<wchar_t>(key_code_);
|
||||||
|
- else
|
||||||
|
- key = LOWORD(::MapVirtualKeyW(key_code_, MAPVK_VK_TO_CHAR));
|
||||||
|
- shortcut += key;
|
||||||
|
-#elif defined(USE_AURA) || defined(OS_MACOSX)
|
||||||
|
- const uint16_t c = DomCodeToUsLayoutCharacter(
|
||||||
|
- UsLayoutKeyboardCodeToDomCode(key_code_), false);
|
||||||
|
- if (c != 0)
|
||||||
|
- shortcut +=
|
||||||
|
- static_cast<base::string16::value_type>(base::ToUpperASCII(c));
|
||||||
|
+ shortcut = key;
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+ if (key_code_ > VKEY_F1 && key_code_ <= VKEY_F24)
|
||||||
|
+ shortcut = base::UTF8ToUTF16(
|
||||||
|
+ base::StringPrintf("F%d", key_code_ - VKEY_F1 + 1));
|
||||||
|
+ } else if (IsShiftDown()) {
|
||||||
|
+#if defined(OS_MACOSX)
|
||||||
|
+ const base::char16 kShiftSymbol[] = {0x21e7, 0};
|
||||||
|
+ shortcut = kShiftSymbol;
|
||||||
|
+#else
|
||||||
|
+ shortcut = l10n_util::GetStringFUTF16(IDS_APP_SHIFT_MODIFIER, shortcut);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -221,15 +233,12 @@ base::string16 Accelerator::GetShortcutText() const {
|
||||||
|
|
||||||
|
base::string16 Accelerator::ApplyLongFormModifiers(
|
||||||
|
base::string16 shortcut) const {
|
||||||
|
- if (IsShiftDown())
|
||||||
|
- shortcut = l10n_util::GetStringFUTF16(IDS_APP_SHIFT_MODIFIER, shortcut);
|
||||||
|
-
|
||||||
|
// Note that we use 'else-if' in order to avoid using Ctrl+Alt as a shortcut.
|
||||||
|
// See http://blogs.msdn.com/oldnewthing/archive/2004/03/29/101121.aspx for
|
||||||
|
// more information.
|
||||||
|
if (IsCtrlDown())
|
||||||
|
shortcut = l10n_util::GetStringFUTF16(IDS_APP_CONTROL_MODIFIER, shortcut);
|
||||||
|
- else if (IsAltDown())
|
||||||
|
+ if (IsAltDown())
|
||||||
|
shortcut = l10n_util::GetStringFUTF16(IDS_APP_ALT_MODIFIER, shortcut);
|
||||||
|
|
||||||
|
if (IsCmdDown()) {
|
||||||
|
@@ -249,14 +258,12 @@ base::string16 Accelerator::ApplyShortFormModifiers(
|
||||||
|
base::string16 shortcut) const {
|
||||||
|
const base::char16 kCommandSymbol[] = {0x2318, 0};
|
||||||
|
const base::char16 kCtrlSymbol[] = {0x2303, 0};
|
||||||
|
- const base::char16 kShiftSymbol[] = {0x21e7, 0};
|
||||||
|
const base::char16 kOptionSymbol[] = {0x2325, 0};
|
||||||
|
const base::char16 kNoSymbol[] = {0};
|
||||||
|
|
||||||
|
std::vector<base::string16> parts;
|
||||||
|
parts.push_back(base::string16(IsCtrlDown() ? kCtrlSymbol : kNoSymbol));
|
||||||
|
parts.push_back(base::string16(IsAltDown() ? kOptionSymbol : kNoSymbol));
|
||||||
|
- parts.push_back(base::string16(IsShiftDown() ? kShiftSymbol : kNoSymbol));
|
||||||
|
parts.push_back(base::string16(IsCmdDown() ? kCommandSymbol : kNoSymbol));
|
||||||
|
parts.push_back(shortcut);
|
||||||
|
return base::StrCat(parts);
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/base/BUILD.gn b/base/BUILD.gn
|
||||||
|
index b674e703617d..5a7a11d816cf 100644
|
||||||
|
--- a/base/BUILD.gn
|
||||||
|
+++ b/base/BUILD.gn
|
||||||
|
@@ -1131,7 +1131,7 @@ 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.
|
||||||
|
- if (!use_sysroot && (is_android || (is_linux && !is_chromecast)) &&
|
||||||
|
+ if ((is_android || (is_linux && !is_chromecast)) &&
|
||||||
|
host_toolchain != "//build/toolchain/cros:host") {
|
||||||
|
libs = [ "atomic" ]
|
||||||
|
}
|
70
patches/common/chromium/add_realloc.patch
Normal file
70
patches/common/chromium/add_realloc.patch
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
diff --git a/gin/array_buffer.cc b/gin/array_buffer.cc
|
||||||
|
index f84934bfd712..63bce16a9d06 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);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void ArrayBufferAllocator::Free(void* data, size_t length) {
|
||||||
|
free(data);
|
||||||
|
}
|
||||||
|
diff --git a/gin/array_buffer.h b/gin/array_buffer.h
|
||||||
|
index 2aef366ac819..c037808a9bb3 100644
|
||||||
|
--- a/gin/array_buffer.h
|
||||||
|
+++ b/gin/array_buffer.h
|
||||||
|
@@ -21,6 +21,7 @@ class ArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
|
||||||
|
public:
|
||||||
|
void* Allocate(size_t length) override;
|
||||||
|
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/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
|
||||||
|
+++ b/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.cc
|
||||||
|
@@ -121,6 +121,11 @@ void* ArrayBufferContents::AllocateMemoryOrNull(size_t size,
|
||||||
|
return AllocateMemoryWithFlags(size, policy, base::PartitionAllocReturnNull);
|
||||||
|
}
|
||||||
|
|
||||||
|
+void* ArrayBufferContents::Realloc(void* data, size_t size) {
|
||||||
|
+ return Partitions::ArrayBufferPartition()->Realloc(data, size,
|
||||||
|
+ WTF_HEAP_PROFILER_TYPE_NAME(ArrayBufferContents));
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void ArrayBufferContents::FreeMemory(void* data) {
|
||||||
|
Partitions::ArrayBufferPartition()->Free(data);
|
||||||
|
}
|
||||||
|
diff --git a/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.h b/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.h
|
||||||
|
index 809229caa872..6248ad32d6b0 100644
|
||||||
|
--- a/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.h
|
||||||
|
+++ b/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.h
|
||||||
|
@@ -178,6 +178,7 @@ class WTF_EXPORT ArrayBufferContents {
|
||||||
|
void CopyTo(ArrayBufferContents& other);
|
||||||
|
|
||||||
|
static void* AllocateMemoryOrNull(size_t, InitializationPolicy);
|
||||||
|
+ static void* Realloc(void* data, size_t);
|
||||||
|
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);
|
||||||
|
}
|
13
patches/common/chromium/allow_nested_error_trackers.patch
Normal file
13
patches/common/chromium/allow_nested_error_trackers.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/ui/gfx/x/x11_error_tracker.cc b/ui/gfx/x/x11_error_tracker.cc
|
||||||
|
index af031de356c5..2a5c18dc473a 100644
|
||||||
|
--- a/ui/gfx/x/x11_error_tracker.cc
|
||||||
|
+++ b/ui/gfx/x/x11_error_tracker.cc
|
||||||
|
@@ -24,7 +24,7 @@ namespace gfx {
|
||||||
|
X11ErrorTracker::X11ErrorTracker() {
|
||||||
|
// This is a non-exhaustive check for incorrect usage. It disallows nested
|
||||||
|
// X11ErrorTracker instances on the same thread.
|
||||||
|
- DCHECK(g_handler == NULL);
|
||||||
|
+ // DCHECK(g_handler == NULL);
|
||||||
|
g_handler = this;
|
||||||
|
XSync(GetXDisplay(), False);
|
||||||
|
old_handler_ = XSetErrorHandler(X11ErrorHandler);
|
13
patches/common/chromium/allow_new_privs.patch
Normal file
13
patches/common/chromium/allow_new_privs.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/base/process/launch.h b/base/process/launch.h
|
||||||
|
index 20b76fc..9db73bf 100644
|
||||||
|
--- a/base/process/launch.h
|
||||||
|
+++ b/base/process/launch.h
|
||||||
|
@@ -147,7 +147,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.
|
||||||
|
- bool allow_new_privs = false;
|
||||||
|
+ bool allow_new_privs = true;
|
||||||
|
|
||||||
|
// Sets parent process death signal to SIGKILL.
|
||||||
|
bool kill_on_parent_death = false;
|
13
patches/common/chromium/allow_webview_file_url.patch
Normal file
13
patches/common/chromium/allow_webview_file_url.patch
Normal file
|
@ -0,0 +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
|
||||||
|
--- 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(
|
||||||
|
!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,
|
13
patches/common/chromium/app_indicator_icon_menu.patch
Normal file
13
patches/common/chromium/app_indicator_icon_menu.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
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
|
||||||
|
--- 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) {
|
||||||
|
return;
|
||||||
|
|
||||||
|
// The menu item can still be activated by hotkeys even if it is disabled.
|
||||||
|
- if (menu_model_->IsEnabledAt(id))
|
||||||
|
+ if (model->IsEnabledAt(id))
|
||||||
|
ExecuteCommand(model, id);
|
||||||
|
}
|
||||||
|
|
23
patches/common/chromium/backport_35dabc0.patch
Normal file
23
patches/common/chromium/backport_35dabc0.patch
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
|
||||||
|
index 2417abcfdae2..13a06d02e012 100644
|
||||||
|
--- a/content/browser/service_worker/service_worker_version.cc
|
||||||
|
+++ b/content/browser/service_worker/service_worker_version.cc
|
||||||
|
@@ -53,9 +53,6 @@
|
||||||
|
#include "third_party/WebKit/public/web/WebConsoleMessage.h"
|
||||||
|
|
||||||
|
namespace content {
|
||||||
|
-
|
||||||
|
-using StatusCallback = ServiceWorkerVersion::StatusCallback;
|
||||||
|
-
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
// Timeout for an installed worker to start.
|
||||||
|
@@ -103,7 +100,7 @@ void RunCallbacks(ServiceWorkerVersion* version,
|
||||||
|
|
||||||
|
// An adapter to run a |callback| after StartWorker.
|
||||||
|
void RunCallbackAfterStartWorker(base::WeakPtr<ServiceWorkerVersion> version,
|
||||||
|
- StatusCallback callback,
|
||||||
|
+ ServiceWorkerVersion::StatusCallback callback,
|
||||||
|
ServiceWorkerStatusCode status) {
|
||||||
|
if (status == SERVICE_WORKER_OK &&
|
||||||
|
version->running_status() != EmbeddedWorkerStatus::RUNNING) {
|
64
patches/common/chromium/backport_953144.patch
Normal file
64
patches/common/chromium/backport_953144.patch
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
diff --git a/content/shell/browser/shell_devtools_frontend.cc b/content/shell/browser/shell_devtools_frontend.cc
|
||||||
|
index 3b3221a..6447347 100644
|
||||||
|
--- a/content/shell/browser/shell_devtools_frontend.cc
|
||||||
|
+++ b/content/shell/browser/shell_devtools_frontend.cc
|
||||||
|
@@ -19,8 +19,8 @@
|
||||||
|
namespace {
|
||||||
|
static GURL GetFrontendURL() {
|
||||||
|
int port = ShellDevToolsManagerDelegate::GetHttpHandlerPort();
|
||||||
|
- return GURL(
|
||||||
|
- base::StringPrintf("http://127.0.0.1:%d/devtools/inspector.html", port));
|
||||||
|
+ return GURL(base::StringPrintf(
|
||||||
|
+ "http://127.0.0.1:%d/devtools/devtools_app.html", port));
|
||||||
|
}
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
diff --git a/third_party/WebKit/Source/devtools/BUILD.gn b/third_party/WebKit/Source/devtools/BUILD.gn
|
||||||
|
index 952b922..9e7b4bf 100644
|
||||||
|
--- a/third_party/WebKit/Source/devtools/BUILD.gn
|
||||||
|
+++ b/third_party/WebKit/Source/devtools/BUILD.gn
|
||||||
|
@@ -1048,7 +1048,6 @@
|
||||||
|
"$resources_out_dir/cm_modes/cm_modes_module.js",
|
||||||
|
"$resources_out_dir/emulated_devices/emulated_devices_module.js",
|
||||||
|
"$resources_out_dir/product_registry_impl/product_registry_impl_module.js",
|
||||||
|
- "$resources_out_dir/screencast/screencast_module.js",
|
||||||
|
]
|
||||||
|
|
||||||
|
devtools_applications = [
|
||||||
|
diff --git a/third_party/WebKit/Source/devtools/front_end/inspector.json b/third_party/WebKit/Source/devtools/front_end/inspector.json
|
||||||
|
index 36c222f..dc2149a 100644
|
||||||
|
--- a/third_party/WebKit/Source/devtools/front_end/inspector.json
|
||||||
|
+++ b/third_party/WebKit/Source/devtools/front_end/inspector.json
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
{
|
||||||
|
"modules" : [
|
||||||
|
- { "name": "screencast", "type": "remote" }
|
||||||
|
+ { "name": "screencast", "type": "autostart" }
|
||||||
|
],
|
||||||
|
"extends": "devtools_app",
|
||||||
|
"has_html": true
|
||||||
|
diff --git a/third_party/WebKit/Source/devtools/front_end/main/Main.js b/third_party/WebKit/Source/devtools/front_end/main/Main.js
|
||||||
|
index 4c9d9aa..e6d73b1 100644
|
||||||
|
--- a/third_party/WebKit/Source/devtools/front_end/main/Main.js
|
||||||
|
+++ b/third_party/WebKit/Source/devtools/front_end/main/Main.js
|
||||||
|
@@ -212,19 +212,8 @@
|
||||||
|
this._registerForwardedShortcuts();
|
||||||
|
this._registerMessageSinkListener();
|
||||||
|
|
||||||
|
- // Pick first app we could instantiate (for test harness).
|
||||||
|
- for (const extension of self.runtime.extensions(Common.AppProvider)) {
|
||||||
|
- try {
|
||||||
|
- const instance = await extension.instance();
|
||||||
|
- if (instance) {
|
||||||
|
- this._showAppUI(instance);
|
||||||
|
- break;
|
||||||
|
- }
|
||||||
|
- } catch (e) {
|
||||||
|
- console.error(e);
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
Main.Main.timeEnd('Main._createAppUI');
|
||||||
|
+ this._showAppUI(await self.runtime.extension(Common.AppProvider).instance());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
12
patches/common/chromium/backport_d65792a.patch
Normal file
12
patches/common/chromium/backport_d65792a.patch
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc
|
||||||
|
index bf4b1d0..a3b72c4 100644
|
||||||
|
@@ -995,7 +996,8 @@
|
||||||
|
|
||||||
|
void Widget::OnSizeConstraintsChanged() {
|
||||||
|
native_widget_->OnSizeConstraintsChanged();
|
||||||
|
- non_client_view_->SizeConstraintsChanged();
|
||||||
|
+ if (non_client_view_)
|
||||||
|
+ non_client_view_->SizeConstraintsChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Widget::OnOwnerClosing() {}
|
29
patches/common/chromium/backport_ef091c206.patch
Normal file
29
patches/common/chromium/backport_ef091c206.patch
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
ef091c206803ebe507755cb65a1942b097fbeb32
|
||||||
|
diff --git a/gpu/command_buffer/service/sync_point_manager.cc b/gpu/command_buffer/service/sync_point_manager.cc
|
||||||
|
index 7fdf99e7e134..ac0811194c24 100644
|
||||||
|
--- a/gpu/command_buffer/service/sync_point_manager.cc
|
||||||
|
+++ b/gpu/command_buffer/service/sync_point_manager.cc
|
||||||
|
@@ -133,7 +133,6 @@ void SyncPointOrderData::FinishProcessingOrderNumber(uint32_t order_num) {
|
||||||
|
}
|
||||||
|
|
||||||
|
for (OrderFence& order_fence : ensure_releases) {
|
||||||
|
- DLOG(ERROR) << "Client did not release sync token as expected";
|
||||||
|
order_fence.client_state->EnsureWaitReleased(order_fence.fence_release,
|
||||||
|
order_fence.release_callback);
|
||||||
|
}
|
||||||
|
@@ -156,7 +155,6 @@ bool SyncPointOrderData::ValidateReleaseOrderNumber(
|
||||||
|
// We should have an unprocessed order number lower than the wait order
|
||||||
|
// number for the wait to be valid. It's not possible for wait order number to
|
||||||
|
// equal next unprocessed order number, but we handle that defensively.
|
||||||
|
- DCHECK_NE(wait_order_num, unprocessed_order_nums_.front());
|
||||||
|
if (wait_order_num <= unprocessed_order_nums_.front())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
@@ -309,6 +307,7 @@ void SyncPointClientState::EnsureWaitReleased(uint64_t release,
|
||||||
|
|
||||||
|
if (call_callback) {
|
||||||
|
// This effectively releases the wait without releasing the fence.
|
||||||
|
+ DLOG(ERROR) << "Client did not release sync token as expected";
|
||||||
|
callback.Run();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
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
|
||||||
|
--- 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(
|
||||||
|
// document (which is implemented in WorkerMessagingProxy, and
|
||||||
|
// m_contentSecurityPolicy should be left as nullptr to inherit the policy).
|
||||||
|
if (!response.Url().ProtocolIs("blob") &&
|
||||||
|
- !response.Url().ProtocolIs("file") &&
|
||||||
|
!response.Url().ProtocolIs("filesystem")) {
|
||||||
|
content_security_policy_ = ContentSecurityPolicy::Create();
|
||||||
|
content_security_policy_->SetOverrideURLForSelf(response.Url());
|
26
patches/common/chromium/blink_file_path.patch
Normal file
26
patches/common/chromium/blink_file_path.patch
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
diff --git a/third_party/blink/renderer/core/fileapi/file.h b/third_party/blink/renderer/core/fileapi/file.h
|
||||||
|
index 0bfe29512050..81439f7ab8f7 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 {
|
||||||
|
}
|
||||||
|
const String& name() const { return name_; }
|
||||||
|
|
||||||
|
+ // Getter for the path IDL attribute.
|
||||||
|
+ const String& path() const { return GetPath(); }
|
||||||
|
+
|
||||||
|
// Getter for the lastModified IDL attribute,
|
||||||
|
// 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
|
||||||
|
--- a/third_party/blink/renderer/core/fileapi/file.idl
|
||||||
|
+++ b/third_party/blink/renderer/core/fileapi/file.idl
|
||||||
|
@@ -32,6 +32,7 @@
|
||||||
|
Exposed=(Window,Worker)
|
||||||
|
] interface File : Blob {
|
||||||
|
readonly attribute DOMString name;
|
||||||
|
+ readonly attribute DOMString path;
|
||||||
|
readonly attribute long long lastModified;
|
||||||
|
|
||||||
|
// Non-standard APIs
|
17
patches/common/chromium/blink_fix_prototype_assert.patch
Normal file
17
patches/common/chromium/blink_fix_prototype_assert.patch
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
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
|
||||||
|
--- 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(
|
||||||
|
bool get_prototype_value =
|
||||||
|
interface_object->Get(context, V8AtomicString(isolate, "prototype"))
|
||||||
|
.ToLocal(&prototype_value);
|
||||||
|
- CHECK(get_prototype_value);
|
||||||
|
- CHECK(prototype_value->IsObject());
|
||||||
|
+ // CHECK(get_prototype_value);
|
||||||
|
+ // CHECK(prototype_value->IsObject());
|
||||||
|
+ if (!get_prototype_value || !prototype_value->IsObject())
|
||||||
|
+ return v8::Local<v8::Function>();
|
||||||
|
|
||||||
|
prototype_object = prototype_value.As<v8::Object>();
|
||||||
|
if (prototype_object->InternalFieldCount() ==
|
18
patches/common/chromium/blink_initialization_order.patch
Normal file
18
patches/common/chromium/blink_initialization_order.patch
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
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
|
||||||
|
--- 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() {
|
||||||
|
GetFrame()->IsMainFrame());
|
||||||
|
MainThreadDebugger::Instance()->ContextCreated(script_state_.get(),
|
||||||
|
GetFrame(), origin);
|
||||||
|
+
|
||||||
|
+ InstallConditionalFeatures();
|
||||||
|
GetFrame()->Client()->DidCreateScriptContext(context, world_->GetWorldId());
|
||||||
|
}
|
||||||
|
|
||||||
|
- InstallConditionalFeatures();
|
||||||
|
-
|
||||||
|
if (World().IsMainWorld()) {
|
||||||
|
GetFrame()->Loader().DispatchDidClearWindowObjectInMainWorld();
|
||||||
|
}
|
26
patches/common/chromium/blink_local_frame.patch
Normal file
26
patches/common/chromium/blink_local_frame.patch
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
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
|
||||||
|
--- 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) {
|
||||||
|
}
|
||||||
|
CHECK(!view_ || !view_->IsAttached());
|
||||||
|
|
||||||
|
- // This is the earliest that scripting can be disabled:
|
||||||
|
- // - FrameLoader::Detach() can fire XHR abort events
|
||||||
|
- // - Document::Shutdown() can dispose plugins which can run script.
|
||||||
|
- ScriptForbiddenScope forbid_script;
|
||||||
|
if (!Client())
|
||||||
|
return;
|
||||||
|
|
||||||
|
@@ -316,6 +312,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();
|
||||||
|
+ // This is the earliest that scripting can be disabled:
|
||||||
|
+ // - FrameLoader::Detach() can fire XHR abort events
|
||||||
|
+ // - Document::Shutdown() can dispose plugins which can run script.
|
||||||
|
+ ScriptForbiddenScope forbid_script;
|
||||||
|
|
||||||
|
// TODO(crbug.com/729196): Trace why LocalFrameView::DetachFromLayout crashes.
|
||||||
|
CHECK(!view_->IsAttached());
|
45
patches/common/chromium/blink_world_context.patch
Normal file
45
patches/common/chromium/blink_world_context.patch
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
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
|
||||||
|
--- 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 {
|
||||||
|
return MainWorldScriptContext()->Global();
|
||||||
|
}
|
||||||
|
|
||||||
|
+v8::Local<v8::Context> WebLocalFrameImpl::WorldScriptContext(
|
||||||
|
+ v8::Isolate* isolate, int world_id) const {
|
||||||
|
+ scoped_refptr<DOMWrapperWorld> world = DOMWrapperWorld::EnsureIsolatedWorld(
|
||||||
|
+ isolate, world_id);
|
||||||
|
+ return ToScriptState(GetFrame(), *world)->GetContext();
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
bool WebFrame::ScriptCanAccess(WebFrame* target) {
|
||||||
|
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
|
||||||
|
--- 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
|
||||||
|
int argc,
|
||||||
|
v8::Local<v8::Value> argv[]) override;
|
||||||
|
v8::Local<v8::Context> MainWorldScriptContext() const override;
|
||||||
|
+ v8::Local<v8::Context> WorldScriptContext(
|
||||||
|
+ 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.
|
18
patches/common/chromium/boringssl_build_gn.patch
Normal file
18
patches/common/chromium/boringssl_build_gn.patch
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
diff --git a/third_party/boringssl/BUILD.gn b/third_party/boringssl/BUILD.gn
|
||||||
|
index c75fb7c2bb7e..423f4b2ddb10 100644
|
||||||
|
--- a/third_party/boringssl/BUILD.gn
|
||||||
|
+++ b/third_party/boringssl/BUILD.gn
|
||||||
|
@@ -44,6 +44,13 @@ config("no_asm_config") {
|
||||||
|
}
|
||||||
|
|
||||||
|
all_sources = crypto_sources + ssl_sources
|
||||||
|
+if (is_electron_build) {
|
||||||
|
+ # Needed to build a nodejs-compatible boringssl.
|
||||||
|
+ all_sources += [
|
||||||
|
+ "src/decrepit/evp/evp_do_all.c",
|
||||||
|
+ "src/decrepit/xts/xts.c",
|
||||||
|
+ ]
|
||||||
|
+}
|
||||||
|
|
||||||
|
# Windows' assembly is built with Yasm. The other platforms use the platform
|
||||||
|
# assembler.
|
35
patches/common/chromium/browser_compositor_mac.patch
Normal file
35
patches/common/chromium/browser_compositor_mac.patch
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
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
|
||||||
|
--- 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 {
|
||||||
|
// These will not return nullptr until Destroy is called.
|
||||||
|
DelegatedFrameHost* GetDelegatedFrameHost();
|
||||||
|
|
||||||
|
+ ui::Layer* GetRootLayer() { return root_layer_.get(); }
|
||||||
|
+
|
||||||
|
// Ensure that the currect compositor frame be cleared (even if it is
|
||||||
|
// potentially visible).
|
||||||
|
void ClearCompositorFrame();
|
||||||
|
|
||||||
|
+ 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
|
||||||
|
--- 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() {
|
||||||
|
g_spare_recyclable_compositors.Get().clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
+ui::Compositor* BrowserCompositorMac::GetCompositor() {
|
||||||
|
+ if (recyclable_compositor_)
|
||||||
|
+ return recyclable_compositor_->compositor();
|
||||||
|
+ return nullptr;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
gfx::AcceleratedWidget BrowserCompositorMac::GetAcceleratedWidget() {
|
||||||
|
if (recyclable_compositor_) {
|
||||||
|
return recyclable_compositor_->accelerated_widget_mac()
|
18
patches/common/chromium/browser_plugin_guest.patch
Normal file
18
patches/common/chromium/browser_plugin_guest.patch
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
diff --git a/content/browser/browser_plugin/browser_plugin_guest.cc b/content/browser/browser_plugin/browser_plugin_guest.cc
|
||||||
|
index 964c9a093a3b..f3b3d66ff267 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() {
|
||||||
|
|
||||||
|
WebContentsImpl* owner_web_contents = static_cast<WebContentsImpl*>(
|
||||||
|
delegate_->GetOwnerWebContents());
|
||||||
|
- owner_web_contents->CreateBrowserPluginEmbedderIfNecessary();
|
||||||
|
- InitInternal(BrowserPluginHostMsg_Attach_Params(), owner_web_contents);
|
||||||
|
+ if (nullptr != owner_web_contents)
|
||||||
|
+ {
|
||||||
|
+ owner_web_contents->CreateBrowserPluginEmbedderIfNecessary();
|
||||||
|
+ InitInternal(BrowserPluginHostMsg_Attach_Params(), owner_web_contents);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
base::WeakPtr<BrowserPluginGuest> BrowserPluginGuest::AsWeakPtr() {
|
25
patches/common/chromium/browser_plugin_wheel.patch
Normal file
25
patches/common/chromium/browser_plugin_wheel.patch
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin.cc
|
||||||
|
index 06762fb..e89b1f0 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(
|
||||||
|
|
||||||
|
DCHECK(!blink::WebInputEvent::IsTouchEventType(event.GetType()));
|
||||||
|
|
||||||
|
- // With direct event routing turned on, BrowserPlugin should almost never
|
||||||
|
- // see wheel events any more. The two exceptions are (1) scroll bubbling, and
|
||||||
|
- // (2) synthetic mouse wheels generated by touchpad GesturePinch events on
|
||||||
|
- // Mac, which always go to the mainframe and thus may hit BrowserPlugin if
|
||||||
|
- // it's in a top-level embedder. In both cases we should indicate the event
|
||||||
|
- // as not handled (for GesturePinch on Mac, indicating the event has been
|
||||||
|
- // handled leads to touchpad pinch not working).
|
||||||
|
- if (event.GetType() == blink::WebInputEvent::kMouseWheel)
|
||||||
|
- return blink::WebInputEventResult::kNotHandled;
|
||||||
|
+ if (event.GetType() == blink::WebInputEvent::kMouseWheel) {
|
||||||
|
+ auto wheel_event = static_cast<const blink::WebMouseWheelEvent&>(event);
|
||||||
|
+ if (wheel_event.resending_plugin_id == browser_plugin_instance_id_)
|
||||||
|
+ return blink::WebInputEventResult::kNotHandled;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (blink::WebInputEvent::IsGestureEventType(event.GetType())) {
|
||||||
|
auto gesture_event = static_cast<const blink::WebGestureEvent&>(event);
|
91
patches/common/chromium/build_gn.patch
Normal file
91
patches/common/chromium/build_gn.patch
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
diff --git a/.gn b/.gn
|
||||||
|
index 50a8a2fe9f1e..66ced79f1627 100644
|
||||||
|
--- a/.gn
|
||||||
|
+++ b/.gn
|
||||||
|
@@ -259,4 +259,8 @@ exec_script_whitelist =
|
||||||
|
# Not gypi-to-gn.
|
||||||
|
"//google_apis/BUILD.gn",
|
||||||
|
"//printing/BUILD.gn",
|
||||||
|
+ # While electron transitions to GN, we use gypi_to_gn to synchronize
|
||||||
|
+ # file lists
|
||||||
|
+ "//electron/BUILD.gn",
|
||||||
|
+ "//electron/brightray/BUILD.gn",
|
||||||
|
]
|
||||||
|
diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn
|
||||||
|
index 7d60dd920904..d2f2cbc99915 100644
|
||||||
|
--- a/build/config/BUILDCONFIG.gn
|
||||||
|
+++ b/build/config/BUILDCONFIG.gn
|
||||||
|
@@ -123,6 +123,10 @@ if (current_os == "") {
|
||||||
|
# even if the value is overridden, which is wasteful. See first bullet.
|
||||||
|
|
||||||
|
declare_args() {
|
||||||
|
+ is_electron_build = false
|
||||||
|
+ is_electron_gn_build = false
|
||||||
|
+ is_mas_build = false
|
||||||
|
+
|
||||||
|
# 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 +539,7 @@ default_compiler_configs = [
|
||||||
|
"//build/config/compiler:thin_archive",
|
||||||
|
"//build/config/coverage:default_coverage",
|
||||||
|
"//build/config/sanitizers:default_sanitizer_flags",
|
||||||
|
+ "//electron/build/config:mas_build",
|
||||||
|
]
|
||||||
|
|
||||||
|
if (is_win) {
|
||||||
|
@@ -642,6 +645,7 @@ template("component") {
|
||||||
|
_component_mode = "shared_library"
|
||||||
|
} else if (defined(invoker.static_component_type)) {
|
||||||
|
assert(invoker.static_component_type == "static_library" ||
|
||||||
|
+ (is_electron_build && invoker.static_component_type == "shared_library") ||
|
||||||
|
invoker.static_component_type == "source_set")
|
||||||
|
_component_mode = invoker.static_component_type
|
||||||
|
} else if (is_android || !defined(invoker.sources)) {
|
||||||
|
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
|
||||||
|
index 9a10137aa405..bb33e5450eaa 100644
|
||||||
|
--- a/build/config/compiler/BUILD.gn
|
||||||
|
+++ b/build/config/compiler/BUILD.gn
|
||||||
|
@@ -579,10 +579,13 @@ config("compiler") {
|
||||||
|
ldflags += [ "-Wl,--lto-O0" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
- cflags += [ "-fwhole-program-vtables" ]
|
||||||
|
- if (!is_win) {
|
||||||
|
- ldflags += [ "-fwhole-program-vtables" ]
|
||||||
|
- }
|
||||||
|
+ # -fwhole-program-vtables doesn't work well in Electron right now, as it's
|
||||||
|
+ # not a single binary and the optimizations break interfaces used across
|
||||||
|
+ # binary boundaries.
|
||||||
|
+ # cflags += [ "-fwhole-program-vtables" ]
|
||||||
|
+ # if (!is_win) {
|
||||||
|
+ # ldflags += [ "-fwhole-program-vtables" ]
|
||||||
|
+ #}
|
||||||
|
|
||||||
|
# Work-around for http://openradar.appspot.com/20356002
|
||||||
|
if (is_mac) {
|
||||||
|
diff --git a/build/config/win/BUILD.gn b/build/config/win/BUILD.gn
|
||||||
|
index 1f6bc13e087f..4630045ff554 100644
|
||||||
|
--- a/build/config/win/BUILD.gn
|
||||||
|
+++ b/build/config/win/BUILD.gn
|
||||||
|
@@ -314,7 +314,7 @@ config("cfi_linker") {
|
||||||
|
# See https://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx for a reference of
|
||||||
|
# what each value does.
|
||||||
|
config("default_crt") {
|
||||||
|
- if (is_component_build) {
|
||||||
|
+ if (is_component_build || (is_electron_build && !is_electron_gn_build)) {
|
||||||
|
# Component mode: dynamic CRT. Since the library is shared, it requires
|
||||||
|
# exceptions or will give errors about things not matching, so keep
|
||||||
|
# exceptions on.
|
||||||
|
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
|
||||||
|
index bc9fe2cc2000..9173f6f0324c 100644
|
||||||
|
--- a/third_party/blink/renderer/platform/BUILD.gn
|
||||||
|
+++ b/third_party/blink/renderer/platform/BUILD.gn
|
||||||
|
@@ -134,6 +134,7 @@ action("instrumentation_probes") {
|
||||||
|
}
|
||||||
|
|
||||||
|
executable("character_data_generator") {
|
||||||
|
+ configs += [ "//electron/build/config:build_time_executable" ]
|
||||||
|
sources = [
|
||||||
|
"text/character_property_data_generator.cc",
|
||||||
|
"text/character_property_data_generator.h",
|
60
patches/common/chromium/build_toolchain_win_patch.patch
Normal file
60
patches/common/chromium/build_toolchain_win_patch.patch
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
diff --git a/build/toolchain/win/BUILD.gn b/build/toolchain/win/BUILD.gn
|
||||||
|
index 53f767a0bddb..661466b779e8 100644
|
||||||
|
--- a/build/toolchain/win/BUILD.gn
|
||||||
|
+++ b/build/toolchain/win/BUILD.gn
|
||||||
|
@@ -176,6 +176,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\""
|
||||||
|
+
|
||||||
|
+ if (is_electron_build && !is_component_build) {
|
||||||
|
+ pdbdir = "{{target_out_dir}}"
|
||||||
|
+ pdbname = "{{label_name}}_c.pdb"
|
||||||
|
+ command = "$python_path $tool_wrapper_path cl-wrapper $env_wrapper$cl /nologo /showIncludes ${clflags} $sys_include_flags{{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} /c {{source}} /Fo{{output}} $pdbdir \"$pdbname\""
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
tool("cxx") {
|
||||||
|
@@ -192,6 +198,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\""
|
||||||
|
+
|
||||||
|
+ if (is_electron_build && !is_component_build) {
|
||||||
|
+ pdbdir = "{{target_out_dir}}"
|
||||||
|
+ pdbname = "{{label_name}}_cc.pdb"
|
||||||
|
+ command = "$python_path $tool_wrapper_path cl-wrapper $env_wrapper$cl /nologo /showIncludes ${clflags} $sys_include_flags{{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} /c {{source}} /Fo{{output}} $pdbdir \"$pdbname\""
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
tool("rc") {
|
||||||
|
diff --git a/build/toolchain/win/tool_wrapper.py b/build/toolchain/win/tool_wrapper.py
|
||||||
|
index 3a81368f3469..7c5ef1ea5db4 100644
|
||||||
|
--- a/build/toolchain/win/tool_wrapper.py
|
||||||
|
+++ b/build/toolchain/win/tool_wrapper.py
|
||||||
|
@@ -315,6 +315,25 @@ class WinTool(object):
|
||||||
|
dirname = dirname[0] if dirname else None
|
||||||
|
return subprocess.call(args, shell=True, env=env, cwd=dirname)
|
||||||
|
|
||||||
|
+ def ExecClWrapper(self, *args):
|
||||||
|
+ """Invokes cl.exe to compile a C/C++ source file."""
|
||||||
|
+ args = list(args)
|
||||||
|
+ # Incorporate the PDB output dir into the PDB name to ensure the PDB name
|
||||||
|
+ # is unique (see https://github.com/electron/libchromiumcontent/issues/287)
|
||||||
|
+ pdb_name = args.pop()
|
||||||
|
+ pdb_dir = args.pop()
|
||||||
|
+ pdb_filename = '%s/%s_%s' % (pdb_dir, pdb_dir.replace('/', '_'), pdb_name)
|
||||||
|
+ # On Windows when args is a sequence instead of a single string
|
||||||
|
+ # subprocess.call() will use subprocess.list2cmdline() to convert the
|
||||||
|
+ # sequence to a string. Unfortunately the double-quote escaping done by
|
||||||
|
+ # subprocess.list2cmdline() mangles the /Fd"path/to/some.pdb" arg to
|
||||||
|
+ # /Fd\"path/to/some.pdb\", and cl.exe then fails to parse the PDB filename
|
||||||
|
+ # correctly. To work around this we use subprocess.list2cmdline()
|
||||||
|
+ # (even though it's not part of the public API) to construct most of the
|
||||||
|
+ # command line, and then append the /Fd flag.
|
||||||
|
+ pdb_flag = '/Fd"%s"' % pdb_filename
|
||||||
|
+ cmdline = '%s %s' % (subprocess.list2cmdline(args), pdb_flag)
|
||||||
|
+ return subprocess.call(cmdline, shell=False)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.exit(main(sys.argv[1:]))
|
235
patches/common/chromium/can_create_window.patch
Normal file
235
patches/common/chromium/can_create_window.patch
Normal file
|
@ -0,0 +1,235 @@
|
||||||
|
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
|
||||||
|
--- 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(
|
||||||
|
"frame_tree_node", frame_tree_node_->frame_tree_node_id(), "url",
|
||||||
|
params->target_url.possibly_invalid_spec());
|
||||||
|
|
||||||
|
+ scoped_refptr<network::ResourceRequestBody> body;
|
||||||
|
+ if (params->body->has_object) {
|
||||||
|
+ body = new network::ResourceRequestBody;
|
||||||
|
+ std::vector<network::DataElement> elements;
|
||||||
|
+ for (const auto& iter : params->body->elements) {
|
||||||
|
+ network::DataElement element;
|
||||||
|
+ switch (iter->type) {
|
||||||
|
+ case network::DataElement::TYPE_BYTES: {
|
||||||
|
+ element.SetToBytes(iter->bytes.data(), iter->bytes.length());
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ case network::DataElement::TYPE_FILE: {
|
||||||
|
+ element.SetToFilePathRange(iter->path, iter->offset, iter->length,
|
||||||
|
+ iter->expected_modification_time);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ case network::DataElement::TYPE_BLOB: {
|
||||||
|
+ element.SetToBlobRange(iter->blob_uuid, iter->offset, iter->length);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ case network::DataElement::TYPE_DATA_PIPE:
|
||||||
|
+ default:
|
||||||
|
+ NOTREACHED();
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ elements.push_back(std::move(element));
|
||||||
|
+ }
|
||||||
|
+ body->swap_elements(&elements);
|
||||||
|
+ body->set_identifier(params->body->identifier);
|
||||||
|
+ body->set_contains_sensitive_info(params->body->contains_sensitive_info);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
bool no_javascript_access = false;
|
||||||
|
|
||||||
|
// Filter out URLs to which navigation is disallowed from this context.
|
||||||
|
@@ -2896,8 +2928,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,
|
||||||
|
- params->disposition, *params->features, params->user_gesture,
|
||||||
|
- params->opener_suppressed, &no_javascript_access);
|
||||||
|
+ params->disposition, *params->features, params->additional_features,
|
||||||
|
+ body, params->user_gesture, params->opener_suppressed,
|
||||||
|
+ &no_javascript_access);
|
||||||
|
|
||||||
|
if (!can_create_window) {
|
||||||
|
std::move(callback).Run(mojom::CreateNewWindowStatus::kIgnore, nullptr);
|
||||||
|
diff --git a/content/common/frame.mojom b/content/common/frame.mojom
|
||||||
|
index 99ec7e8d7995..26a4040fba97 100644
|
||||||
|
--- a/content/common/frame.mojom
|
||||||
|
+++ b/content/common/frame.mojom
|
||||||
|
@@ -11,6 +11,8 @@ import "content/public/common/resource_type.mojom";
|
||||||
|
import "content/public/common/resource_load_info.mojom";
|
||||||
|
import "content/public/common/transferrable_url_loader.mojom";
|
||||||
|
import "content/public/common/window_container_type.mojom";
|
||||||
|
+import "mojo/public/mojom/base/file_path.mojom";
|
||||||
|
+import "mojo/public/mojom/base/time.mojom";
|
||||||
|
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 {
|
||||||
|
CreateFrame(int32 frame_routing_id, Frame& frame);
|
||||||
|
};
|
||||||
|
|
||||||
|
+struct DataElement {
|
||||||
|
+ int32 type;
|
||||||
|
+ int64 length;
|
||||||
|
+ string bytes;
|
||||||
|
+ mojo_base.mojom.FilePath path;
|
||||||
|
+ int64 offset;
|
||||||
|
+ mojo_base.mojom.Time expected_modification_time;
|
||||||
|
+ url.mojom.Url filesystem_url;
|
||||||
|
+ string blob_uuid;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+struct ResourceRequestBody {
|
||||||
|
+ bool has_object;
|
||||||
|
+ int64 identifier;
|
||||||
|
+ bool contains_sensitive_info;
|
||||||
|
+ array<DataElement> elements;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
struct CreateNewWindowParams {
|
||||||
|
// True if this open request came in the context of a user gesture.
|
||||||
|
bool user_gesture;
|
||||||
|
@@ -182,6 +202,10 @@ struct CreateNewWindowParams {
|
||||||
|
|
||||||
|
// The window features to use for the new window.
|
||||||
|
blink.mojom.WindowFeatures features;
|
||||||
|
+
|
||||||
|
+ // Extra fields added by Electron.
|
||||||
|
+ array<string> additional_features;
|
||||||
|
+ ResourceRequestBody body;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 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
|
||||||
|
--- a/content/public/browser/content_browser_client.cc
|
||||||
|
+++ b/content/public/browser/content_browser_client.cc
|
||||||
|
@@ -382,6 +382,8 @@ bool ContentBrowserClient::CanCreateWindow(
|
||||||
|
const std::string& frame_name,
|
||||||
|
WindowOpenDisposition disposition,
|
||||||
|
const blink::mojom::WindowFeatures& features,
|
||||||
|
+ const std::vector<std::string>& additional_features,
|
||||||
|
+ const scoped_refptr<network::ResourceRequestBody>& body,
|
||||||
|
bool user_gesture,
|
||||||
|
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
|
||||||
|
--- a/content/public/browser/content_browser_client.h
|
||||||
|
+++ b/content/public/browser/content_browser_client.h
|
||||||
|
@@ -151,6 +151,7 @@ class RenderFrameHost;
|
||||||
|
class RenderProcessHost;
|
||||||
|
class RenderViewHost;
|
||||||
|
class ResourceContext;
|
||||||
|
+class ResourceRequestBody;
|
||||||
|
class SiteInstance;
|
||||||
|
class SpeechRecognitionManagerDelegate;
|
||||||
|
class StoragePartition;
|
||||||
|
@@ -625,6 +626,8 @@ class CONTENT_EXPORT ContentBrowserClient {
|
||||||
|
const std::string& frame_name,
|
||||||
|
WindowOpenDisposition disposition,
|
||||||
|
const blink::mojom::WindowFeatures& features,
|
||||||
|
+ const std::vector<std::string>& additional_features,
|
||||||
|
+ const scoped_refptr<network::ResourceRequestBody>& body,
|
||||||
|
bool user_gesture,
|
||||||
|
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
|
||||||
|
--- 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"
|
||||||
|
#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,
|
||||||
|
}
|
||||||
|
params->features = ConvertWebWindowFeaturesToMojoWindowFeatures(features);
|
||||||
|
|
||||||
|
+ params->body = mojom::ResourceRequestBody::New();
|
||||||
|
+ auto body = GetRequestBodyForWebURLRequest(request);
|
||||||
|
+ if (body) {
|
||||||
|
+ params->body->has_object = true;
|
||||||
|
+ params->body->identifier = body->identifier();
|
||||||
|
+ params->body->contains_sensitive_info = body->contains_sensitive_info();
|
||||||
|
+ for (const auto& element : *body->elements()) {
|
||||||
|
+ content::mojom::DataElementPtr ptr = content::mojom::DataElement::New();
|
||||||
|
+ ptr->type = element.type();
|
||||||
|
+ switch (element.type()) {
|
||||||
|
+ case network::DataElement::TYPE_BYTES: {
|
||||||
|
+ ptr->bytes = std::string(element.bytes(), element.length());
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ case network::DataElement::TYPE_FILE: {
|
||||||
|
+ ptr->path = element.path();
|
||||||
|
+ ptr->offset = element.offset();
|
||||||
|
+ ptr->length = element.length();
|
||||||
|
+ ptr->expected_modification_time = element.expected_modification_time();
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ case network::DataElement::TYPE_BLOB: {
|
||||||
|
+ ptr->blob_uuid = element.blob_uuid();
|
||||||
|
+ ptr->offset = element.offset();
|
||||||
|
+ ptr->length = element.length();
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ case network::DataElement::TYPE_CHUNKED_DATA_PIPE:
|
||||||
|
+ case network::DataElement::TYPE_RAW_FILE:
|
||||||
|
+ case network::DataElement::TYPE_DATA_PIPE:
|
||||||
|
+ case network::DataElement::TYPE_UNKNOWN:
|
||||||
|
+ NOTREACHED();
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ params->body->elements.push_back(std::move(ptr));
|
||||||
|
+ }
|
||||||
|
+ } else {
|
||||||
|
+ params->body->has_object = false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
// 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
|
||||||
|
--- 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(
|
||||||
|
const std::string& frame_name,
|
||||||
|
WindowOpenDisposition disposition,
|
||||||
|
const blink::mojom::WindowFeatures& features,
|
||||||
|
+ const std::vector<std::string>& additional_features,
|
||||||
|
+ const scoped_refptr<network::ResourceRequestBody>& body,
|
||||||
|
bool user_gesture,
|
||||||
|
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
|
||||||
|
--- 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 {
|
||||||
|
const std::string& frame_name,
|
||||||
|
WindowOpenDisposition disposition,
|
||||||
|
const blink::mojom::WindowFeatures& features,
|
||||||
|
+ const std::vector<std::string>& additional_features,
|
||||||
|
+ const scoped_refptr<network::ResourceRequestBody>& body,
|
||||||
|
bool user_gesture,
|
||||||
|
bool opener_suppressed,
|
||||||
|
bool* no_javascript_access) override;
|
29
patches/common/chromium/chrome_key_systems.patch
Normal file
29
patches/common/chromium/chrome_key_systems.patch
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
diff --git a/chrome/renderer/media/chrome_key_systems.cc b/chrome/renderer/media/chrome_key_systems.cc
|
||||||
|
index f3033337199b..856bc8f0b143 100644
|
||||||
|
--- a/chrome/renderer/media/chrome_key_systems.cc
|
||||||
|
+++ b/chrome/renderer/media/chrome_key_systems.cc
|
||||||
|
@@ -14,7 +14,9 @@
|
||||||
|
#include "base/strings/string_split.h"
|
||||||
|
#include "base/strings/utf_string_conversions.h"
|
||||||
|
#include "build/build_config.h"
|
||||||
|
+#if 0
|
||||||
|
#include "chrome/renderer/chrome_render_thread_observer.h"
|
||||||
|
+#endif
|
||||||
|
#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(
|
||||||
|
#if defined(WIDEVINE_CDM_AVAILABLE)
|
||||||
|
// Returns persistent-license session support.
|
||||||
|
EmeSessionTypeSupport GetPersistentLicenseSupport(bool supported_by_the_cdm) {
|
||||||
|
+#if 0
|
||||||
|
// Do not support persistent-license if the process cannot persist data.
|
||||||
|
// TODO(crbug.com/457487): Have a better plan on this. See bug for details.
|
||||||
|
if (ChromeRenderThreadObserver::is_incognito_process()) {
|
||||||
|
DVLOG(2) << __func__ << ": Not supported in incognito process.";
|
||||||
|
return EmeSessionTypeSupport::NOT_SUPPORTED;
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
if (!supported_by_the_cdm) {
|
||||||
|
DVLOG(2) << __func__ << ": Not supported by the CDM.";
|
72
patches/common/chromium/compositor_delegate.patch
Normal file
72
patches/common/chromium/compositor_delegate.patch
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
diff --git a/content/browser/compositor/gpu_process_transport_factory.cc b/content/browser/compositor/gpu_process_transport_factory.cc
|
||||||
|
index 7b9fc4114c52..bdbbf93f6f0d 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(
|
||||||
|
// surfaces as they are not following the correct mode.
|
||||||
|
DisableGpuCompositing(compositor.get());
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ std::unique_ptr<viz::SoftwareOutputDevice> output_device;
|
||||||
|
+ if (compositor->delegate()) {
|
||||||
|
+ output_device = compositor->delegate()->CreateSoftwareOutputDevice(
|
||||||
|
+ compositor.get());
|
||||||
|
+ }
|
||||||
|
+ if (!output_device) {
|
||||||
|
+ output_device = CreateSoftwareOutputDevice(compositor->widget());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
display_output_surface =
|
||||||
|
std::make_unique<SoftwareBrowserCompositorOutputSurface>(
|
||||||
|
- CreateSoftwareOutputDevice(compositor->widget()),
|
||||||
|
+ std::move(output_device),
|
||||||
|
std::move(vsync_callback), compositor->task_runner());
|
||||||
|
} else {
|
||||||
|
DCHECK(context_provider);
|
||||||
|
diff --git a/ui/compositor/compositor.h b/ui/compositor/compositor.h
|
||||||
|
index d842aa55175b..2c2131774b71 100644
|
||||||
|
--- a/ui/compositor/compositor.h
|
||||||
|
+++ b/ui/compositor/compositor.h
|
||||||
|
@@ -24,6 +24,7 @@
|
||||||
|
#include "components/viz/common/surfaces/frame_sink_id.h"
|
||||||
|
#include "components/viz/common/surfaces/local_surface_id.h"
|
||||||
|
#include "components/viz/host/host_frame_sink_client.h"
|
||||||
|
+#include "components/viz/service/display/software_output_device.h"
|
||||||
|
#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 {
|
||||||
|
virtual void RemoveObserver(ContextFactoryObserver* observer) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
+class COMPOSITOR_EXPORT CompositorDelegate {
|
||||||
|
+ public:
|
||||||
|
+ virtual std::unique_ptr<viz::SoftwareOutputDevice> CreateSoftwareOutputDevice(
|
||||||
|
+ ui::Compositor* compositor) = 0;
|
||||||
|
+
|
||||||
|
+ protected:
|
||||||
|
+ virtual ~CompositorDelegate() {}
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
// 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,
|
||||||
|
// Schedules a redraw of the layer tree associated with this compositor.
|
||||||
|
void ScheduleDraw();
|
||||||
|
|
||||||
|
+ CompositorDelegate* delegate() const { return delegate_; }
|
||||||
|
+ void SetDelegate(CompositorDelegate* delegate) { delegate_ = delegate; }
|
||||||
|
+
|
||||||
|
// 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,
|
||||||
|
ui::ContextFactory* context_factory_;
|
||||||
|
ui::ContextFactoryPrivate* context_factory_private_;
|
||||||
|
|
||||||
|
+ CompositorDelegate* delegate_ = nullptr;
|
||||||
|
+
|
||||||
|
// The root of the Layer tree drawn by this compositor.
|
||||||
|
Layer* root_layer_ = nullptr;
|
||||||
|
|
12
patches/common/chromium/content_browser_manifest.patch
Normal file
12
patches/common/chromium/content_browser_manifest.patch
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
diff --git a/content/public/app/mojo/content_browser_manifest.json b/content/public/app/mojo/content_browser_manifest.json
|
||||||
|
index 5a217fa9b741..8fd1b39ea6ca 100644
|
||||||
|
--- a/content/public/app/mojo/content_browser_manifest.json
|
||||||
|
+++ b/content/public/app/mojo/content_browser_manifest.json
|
||||||
|
@@ -82,6 +82,7 @@
|
||||||
|
"device:battery_monitor",
|
||||||
|
"device:generic_sensor",
|
||||||
|
"device:geolocation",
|
||||||
|
+ "device:geolocation_control",
|
||||||
|
"device:hid",
|
||||||
|
"device:input_service",
|
||||||
|
"device:nfc",
|
48
patches/common/chromium/crashpad-disabled-windows.patch
Normal file
48
patches/common/chromium/crashpad-disabled-windows.patch
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
diff --git a/components/crash/core/common/BUILD.gn b/components/crash/core/common/BUILD.gn
|
||||||
|
index 4f67529f5c9a..a41bdf709d99 100644
|
||||||
|
--- a/components/crash/core/common/BUILD.gn
|
||||||
|
+++ b/components/crash/core/common/BUILD.gn
|
||||||
|
@@ -13,7 +13,7 @@ group("common") {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-use_crashpad = is_mac || is_win
|
||||||
|
+use_crashpad = is_mac
|
||||||
|
use_stubs = is_fuchsia
|
||||||
|
|
||||||
|
# Crashpad's annotation system can store data on a per-module basis (i.e.,
|
||||||
|
@@ -128,7 +128,7 @@ source_set("unit_tests") {
|
||||||
|
sources += [ "objc_zombie_unittest.mm" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (!is_mac && !is_win && !is_fuchsia) {
|
||||||
|
+ if (!is_mac && !is_fuchsia) {
|
||||||
|
include_dirs = [ "//third_party/breakpad/breakpad/src/" ]
|
||||||
|
sources += [ "crash_key_breakpad_unittest.cc" ]
|
||||||
|
}
|
||||||
|
diff --git a/components/crash/core/common/crash_key.h b/components/crash/core/common/crash_key.h
|
||||||
|
index 951c7e941962..bdf6bb40e1fb 100644
|
||||||
|
--- a/components/crash/core/common/crash_key.h
|
||||||
|
+++ b/components/crash/core/common/crash_key.h
|
||||||
|
@@ -19,7 +19,7 @@
|
||||||
|
// Annotation interface. Because not all platforms use Crashpad yet, a
|
||||||
|
// source-compatible interface is provided on top of the older Breakpad
|
||||||
|
// storage mechanism.
|
||||||
|
-#if (defined(OS_MACOSX) && !defined(OS_IOS)) || defined(OS_WIN)
|
||||||
|
+#if (defined(OS_MACOSX) && !defined(OS_IOS))
|
||||||
|
#define USE_CRASHPAD_ANNOTATION 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
diff --git a/components/crash/core/common/crash_key_breakpad.cc b/components/crash/core/common/crash_key_breakpad.cc
|
||||||
|
index 0351e01fa18f..1c355bd89844 100644
|
||||||
|
--- a/components/crash/core/common/crash_key_breakpad.cc
|
||||||
|
+++ b/components/crash/core/common/crash_key_breakpad.cc
|
||||||
|
@@ -15,7 +15,7 @@
|
||||||
|
#include "components/crash/core/common/crash_key_base_support.h"
|
||||||
|
#include "components/crash/core/common/crash_key_internal.h"
|
||||||
|
|
||||||
|
-#if defined(OS_MACOSX) || defined(OS_IOS) || defined(OS_WIN)
|
||||||
|
+#if defined(OS_MACOSX) || defined(OS_IOS)
|
||||||
|
#error "This file should not be used when Crashpad is available, nor on iOS."
|
||||||
|
#endif
|
||||||
|
|
272
patches/common/chromium/dcheck.patch
Normal file
272
patches/common/chromium/dcheck.patch
Normal file
|
@ -0,0 +1,272 @@
|
||||||
|
diff --git a/base/logging.h b/base/logging.h
|
||||||
|
index 582fb89868cd..24d3e82232b6 100644
|
||||||
|
--- a/base/logging.h
|
||||||
|
+++ b/base/logging.h
|
||||||
|
@@ -850,7 +850,7 @@ const LogSeverity LOG_DCHECK = LOG_INFO;
|
||||||
|
|
||||||
|
#else // !(defined(_PREFAST_) && defined(OS_WIN))
|
||||||
|
|
||||||
|
-#if DCHECK_IS_ON()
|
||||||
|
+#if DCHECK_IS_ON() && !defined(ELECTRON_NO_DCHECK)
|
||||||
|
|
||||||
|
#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
|
||||||
|
--- a/base/memory/weak_ptr.cc
|
||||||
|
+++ b/base/memory/weak_ptr.cc
|
||||||
|
@@ -23,8 +23,8 @@ void WeakReference::Flag::Invalidate() {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool WeakReference::Flag::IsValid() const {
|
||||||
|
- DCHECK(sequence_checker_.CalledOnValidSequence())
|
||||||
|
- << "WeakPtrs must be checked on the same sequenced thread.";
|
||||||
|
+ // DCHECK(sequence_checker_.CalledOnValidSequence())
|
||||||
|
+ // << "WeakPtrs must be checked on the same sequenced thread.";
|
||||||
|
return is_valid_;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/base/process/kill_win.cc b/base/process/kill_win.cc
|
||||||
|
index 6a0038e2c00d..dd00dfb3e5d0 100644
|
||||||
|
--- a/base/process/kill_win.cc
|
||||||
|
+++ b/base/process/kill_win.cc
|
||||||
|
@@ -45,7 +45,7 @@ TerminationStatus GetTerminationStatus(ProcessHandle handle, int* exit_code) {
|
||||||
|
DWORD tmp_exit_code = 0;
|
||||||
|
|
||||||
|
if (!::GetExitCodeProcess(handle, &tmp_exit_code)) {
|
||||||
|
- DPLOG(FATAL) << "GetExitCodeProcess() failed";
|
||||||
|
+ // DPLOG(FATAL) << "GetExitCodeProcess() failed";
|
||||||
|
|
||||||
|
// This really is a random number. We haven't received any
|
||||||
|
// information about the exit code, presumably because this
|
||||||
|
diff --git a/components/viz/service/display/program_binding.h b/components/viz/service/display/program_binding.h
|
||||||
|
index 70f1ff97b1ac..d1abd804e988 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 {
|
||||||
|
if (!ProgramBindingBase::Init(context_provider->ContextGL(),
|
||||||
|
vertex_shader_.GetShaderString(),
|
||||||
|
fragment_shader_.GetShaderString())) {
|
||||||
|
- DCHECK(IsContextLost(context_provider->ContextGL()));
|
||||||
|
+ // DCHECK(IsContextLost(context_provider->ContextGL()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -428,7 +428,7 @@ class VIZ_SERVICE_EXPORT Program : public ProgramBindingBase {
|
||||||
|
|
||||||
|
// Link after binding uniforms
|
||||||
|
if (!Link(context_provider->ContextGL())) {
|
||||||
|
- DCHECK(IsContextLost(context_provider->ContextGL()));
|
||||||
|
+ // DCHECK(IsContextLost(context_provider->ContextGL()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/content/browser/frame_host/navigation_controller_impl.cc b/content/browser/frame_host/navigation_controller_impl.cc
|
||||||
|
index ff1d3fcb6eba..ad6578f645d4 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(
|
||||||
|
return NAVIGATION_TYPE_NEW_SUBFRAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
- // We only clear the session history when navigating to a new page.
|
||||||
|
- DCHECK(!params.history_list_was_cleared);
|
||||||
|
+ // Electron does its own book keeping of navigation entries and we
|
||||||
|
+ // expect content to not track any, by clearing history list for
|
||||||
|
+ // all navigations.
|
||||||
|
+ // DCHECK(!params.history_list_was_cleared);
|
||||||
|
|
||||||
|
if (rfh->GetParent()) {
|
||||||
|
// All manual subframes would be did_create_new_entry and handled above, so
|
||||||
|
@@ -1301,7 +1303,10 @@ void NavigationControllerImpl::RendererDidNavigateToNewPage(
|
||||||
|
new_entry->GetFavicon() = GetLastCommittedEntry()->GetFavicon();
|
||||||
|
}
|
||||||
|
|
||||||
|
- DCHECK(!params.history_list_was_cleared || !replace_entry);
|
||||||
|
+ // Electron does its own book keeping of navigation entries and we
|
||||||
|
+ // expect content to not track any, by clearing history list for
|
||||||
|
+ // all navigations.
|
||||||
|
+ // DCHECK(!params.history_list_was_cleared || !replace_entry);
|
||||||
|
// The browser requested to clear the session history when it initiated the
|
||||||
|
// 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
|
||||||
|
--- 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) {
|
||||||
|
}
|
||||||
|
|
||||||
|
enabled_bindings_ |= bindings_flags;
|
||||||
|
- if (GetParent())
|
||||||
|
- DCHECK_EQ(GetParent()->GetEnabledBindings(), GetEnabledBindings());
|
||||||
|
+ // WebUI in sub frames require binding policy while the parent does not,
|
||||||
|
+ // Fix this when we use OOPIF in Electron.
|
||||||
|
+ // if (GetParent())
|
||||||
|
+ // DCHECK_EQ(GetParent()->GetEnabledBindings(), GetEnabledBindings());
|
||||||
|
|
||||||
|
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
|
||||||
|
--- 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,
|
||||||
|
if (EventIsReservedBySystem(theEvent))
|
||||||
|
return;
|
||||||
|
|
||||||
|
- DCHECK(eventType != NSKeyDown ||
|
||||||
|
- !equiv == !(modifierFlags & NSCommandKeyMask));
|
||||||
|
+ // DCHECK(eventType != NSKeyDown ||
|
||||||
|
+ // !equiv == !(modifierFlags & NSCommandKeyMask));
|
||||||
|
|
||||||
|
if (eventType == NSFlagsChanged) {
|
||||||
|
// Ignore NSFlagsChanged events from the NumLock and Fn keys as
|
||||||
|
diff --git a/ppapi/host/ppapi_host.cc b/ppapi/host/ppapi_host.cc
|
||||||
|
index f3c68fab3de6..b8609daf3ef9 100644
|
||||||
|
--- a/ppapi/host/ppapi_host.cc
|
||||||
|
+++ b/ppapi/host/ppapi_host.cc
|
||||||
|
@@ -240,7 +240,7 @@ void PpapiHost::OnHostMsgResourceCreated(
|
||||||
|
CreateResourceHost(params.pp_resource(), instance, nested_msg);
|
||||||
|
|
||||||
|
if (!resource_host.get()) {
|
||||||
|
- NOTREACHED();
|
||||||
|
+ // NOTREACHED();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
+++ b/third_party/blink/renderer/core/loader/BUILD.gn
|
||||||
|
@@ -129,4 +129,11 @@ blink_core_sources("loader") {
|
||||||
|
public_deps = [
|
||||||
|
"//third_party/blink/renderer/platform",
|
||||||
|
]
|
||||||
|
+
|
||||||
|
+ if (is_electron_build) {
|
||||||
|
+ if (!defined(defines)) {
|
||||||
|
+ defines = []
|
||||||
|
+ }
|
||||||
|
+ 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
|
||||||
|
+++ b/third_party/blink/renderer/platform/wtf/text/string_impl.h
|
||||||
|
@@ -258,21 +258,21 @@ class WTF_EXPORT StringImpl {
|
||||||
|
}
|
||||||
|
|
||||||
|
ALWAYS_INLINE bool HasOneRef() const {
|
||||||
|
-#if DCHECK_IS_ON()
|
||||||
|
+#if 0
|
||||||
|
DCHECK(IsStatic() || verifier_.IsSafeToUse()) << AsciiForDebugging();
|
||||||
|
#endif
|
||||||
|
return ref_count_ == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ALWAYS_INLINE void AddRef() const {
|
||||||
|
-#if DCHECK_IS_ON()
|
||||||
|
+#if 0
|
||||||
|
DCHECK(IsStatic() || verifier_.OnRef(ref_count_)) << AsciiForDebugging();
|
||||||
|
#endif
|
||||||
|
++ref_count_;
|
||||||
|
}
|
||||||
|
|
||||||
|
ALWAYS_INLINE void Release() const {
|
||||||
|
-#if DCHECK_IS_ON()
|
||||||
|
+#if 0
|
||||||
|
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
|
||||||
|
--- a/ui/base/clipboard/clipboard_win.cc
|
||||||
|
+++ b/ui/base/clipboard/clipboard_win.cc
|
||||||
|
@@ -886,9 +886,9 @@ void ClipboardWin::WriteBitmapFromHandle(HBITMAP source_hbitmap,
|
||||||
|
}
|
||||||
|
|
||||||
|
void ClipboardWin::WriteToClipboard(unsigned int format, HANDLE handle) {
|
||||||
|
- DCHECK(clipboard_owner_->hwnd() != NULL);
|
||||||
|
+ // DCHECK(clipboard_owner_->hwnd() != NULL);
|
||||||
|
if (handle && !::SetClipboardData(format, handle)) {
|
||||||
|
- DCHECK(ERROR_CLIPBOARD_NOT_OPEN != GetLastError());
|
||||||
|
+ // DCHECK(ERROR_CLIPBOARD_NOT_OPEN != GetLastError());
|
||||||
|
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/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());
|
||||||
|
}
|
||||||
|
|
||||||
|
ServerSharedBitmapManager* ServerSharedBitmapManager::current() {
|
13
patches/common/chromium/desktop_screen_win.patch
Normal file
13
patches/common/chromium/desktop_screen_win.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
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
|
||||||
|
--- 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(
|
||||||
|
}
|
||||||
|
|
||||||
|
HWND DesktopScreenWin::GetHWNDFromNativeView(gfx::NativeView window) const {
|
||||||
|
+ if (!window)
|
||||||
|
+ return NULL;
|
||||||
|
aura::WindowTreeHost* host = window->GetHost();
|
||||||
|
return host ? host->GetAcceleratedWidget() : NULL;
|
||||||
|
}
|
16
patches/common/chromium/disable-recursive-surface-sync.patch
Normal file
16
patches/common/chromium/disable-recursive-surface-sync.patch
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
|
||||||
|
index a9b9d180b0eb..5ad8b93114a7 100644
|
||||||
|
--- a/content/browser/renderer_host/render_widget_host_impl.cc
|
||||||
|
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
|
||||||
|
@@ -972,6 +975,11 @@ void RenderWidgetHostImpl::PauseForPendingResizeOrRepaints() {
|
||||||
|
if (is_hidden())
|
||||||
|
return;
|
||||||
|
|
||||||
|
+ // Do not pause if there is already a pending operation with the
|
||||||
|
+ // backing store.
|
||||||
|
+ if (in_get_backing_store_)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
// Do not pause if there is not a paint or resize already coming.
|
||||||
|
if (!repaint_ack_pending_ && !resize_ack_pending_)
|
||||||
|
return;
|
60
patches/common/chromium/disable-redraw-lock.patch
Normal file
60
patches/common/chromium/disable-redraw-lock.patch
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
|
||||||
|
index c8fb7eecb9c8..3d995aa331b1 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;
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
+bool HWNDMessageHandlerDelegate::HasNativeFrame() const {
|
||||||
|
+ return false;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
// 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 {
|
||||||
|
cancel_unlock_(false),
|
||||||
|
should_lock_(owner_->IsVisible() && !owner->HasChildRenderingWindow() &&
|
||||||
|
::IsWindow(hwnd_) &&
|
||||||
|
+ !owner_->HasNativeFrame() &&
|
||||||
|
(!(GetWindowLong(hwnd_, GWL_STYLE) & WS_CAPTION) ||
|
||||||
|
!ui::win::IsAeroGlassEnabled())) {
|
||||||
|
if (should_lock_)
|
||||||
|
@@ -903,6 +908,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
|
||||||
|
--- 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,
|
||||||
|
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
|
||||||
|
--- 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)
|
||||||
|
// will handle it or Chrome will custom draw it.
|
||||||
|
virtual FrameMode GetFrameMode() const = 0;
|
17
patches/common/chromium/disable_detach_webview_frame.patch
Normal file
17
patches/common/chromium/disable_detach_webview_frame.patch
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
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
|
||||||
|
--- 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(
|
||||||
|
|
||||||
|
void RenderFrameProxyHost::OnDetach() {
|
||||||
|
if (frame_tree_node_->render_manager()->ForInnerDelegate()) {
|
||||||
|
+ // Don't detach the frame for webview, we will manage the WebContents
|
||||||
|
+ // manually.
|
||||||
|
+ // We should revisit this bug after upgrading to newer versions of Chrome,
|
||||||
|
+ // this patch was introduced in Chrome 66.
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
// Only main frame proxy can detach for inner WebContents.
|
||||||
|
DCHECK(frame_tree_node_->IsMainFrame());
|
||||||
|
frame_tree_node_->render_manager()->RemoveOuterDelegateFrame();
|
28
patches/common/chromium/disable_hidden.patch
Normal file
28
patches/common/chromium/disable_hidden.patch
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
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
|
||||||
|
--- 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() {
|
||||||
|
if (is_hidden_)
|
||||||
|
return;
|
||||||
|
|
||||||
|
+ if (disable_hidden_)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
RejectMouseLockOrUnlockIfNecessary();
|
||||||
|
|
||||||
|
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
|
||||||
|
--- 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,
|
||||||
|
// RenderWidgetHostImpl.
|
||||||
|
static RenderWidgetHostImpl* From(RenderWidgetHost* rwh);
|
||||||
|
|
||||||
|
+ // Electron: Prevents the widget from getting hidden.
|
||||||
|
+ bool disable_hidden_ = false;
|
||||||
|
+
|
||||||
|
void set_hung_renderer_delay(const base::TimeDelta& delay) {
|
||||||
|
hung_renderer_delay_ = delay;
|
||||||
|
}
|
28
patches/common/chromium/disable_scroll_begin_dcheck.patch
Normal file
28
patches/common/chromium/disable_scroll_begin_dcheck.patch
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
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
|
||||||
|
--- 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(
|
||||||
|
(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;
|
||||||
|
|
||||||
|
WebGestureEvent scroll_begin(gesture_update);
|
||||||
|
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
|
||||||
|
--- 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(
|
||||||
|
// 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.
|
||||||
|
- DCHECK(!is_in_gesture_scroll_[gesture_event.SourceDevice()] ||
|
||||||
|
- FlingCancellationIsDeferred());
|
||||||
|
+ // DCHECK(!is_in_gesture_scroll_[gesture_event.SourceDevice()] ||
|
||||||
|
+ // FlingCancellationIsDeferred());
|
||||||
|
is_in_gesture_scroll_[gesture_event.SourceDevice()] = true;
|
||||||
|
} else if (gesture_event.GetType() ==
|
||||||
|
blink::WebInputEvent::kGestureScrollEnd) {
|
|
@ -0,0 +1,15 @@
|
||||||
|
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
|
||||||
|
index a39067db8c52..4a0d69dc3fb5 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,
|
||||||
|
"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"));
|
||||||
|
- return true;
|
||||||
|
+ // TODO(alexeykuzmin): Uncomment `return true` when Electron tests are fixed.
|
||||||
|
+ // See https://github.com/electron/electron/issues/10754
|
||||||
|
+ // return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (did_allow_navigation) {
|
17
patches/common/chromium/dom_storage_map.patch
Normal file
17
patches/common/chromium/dom_storage_map.patch
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
diff --git a/content/common/dom_storage/dom_storage_map.cc b/content/common/dom_storage/dom_storage_map.cc
|
||||||
|
index 0a6b0176a982..35a1c3c11a58 100644
|
||||||
|
--- a/content/common/dom_storage/dom_storage_map.cc
|
||||||
|
+++ b/content/common/dom_storage/dom_storage_map.cc
|
||||||
|
@@ -182,10 +182,12 @@ bool DOMStorageMap::SetItemInternal(MapType* map_type,
|
||||||
|
size_t new_item_size = size_in_storage(key, value);
|
||||||
|
size_t new_storage_used = storage_used_ - old_item_size + new_item_size;
|
||||||
|
|
||||||
|
+#if 0 // Disable localStorage size limit for Electron.
|
||||||
|
// Only check quota if the size is increasing, this allows
|
||||||
|
// shrinking changes to pre-existing files that are over budget.
|
||||||
|
if (new_item_size > old_item_size && new_storage_used > quota_)
|
||||||
|
return false;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
(*map_type)[key] = value;
|
||||||
|
ResetKeyIterator();
|
21
patches/common/chromium/enable_osr_components.patch
Normal file
21
patches/common/chromium/enable_osr_components.patch
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
diff --git a/content/browser/renderer_host/input/mouse_wheel_phase_handler.h b/content/browser/renderer_host/input/mouse_wheel_phase_handler.h
|
||||||
|
index 4f7c03d62930..25b74d9b5236 100644
|
||||||
|
--- a/content/browser/renderer_host/input/mouse_wheel_phase_handler.h
|
||||||
|
+++ b/content/browser/renderer_host/input/mouse_wheel_phase_handler.h
|
||||||
|
@@ -7,6 +7,7 @@
|
||||||
|
|
||||||
|
#include "base/timer/timer.h"
|
||||||
|
#include "content/browser/renderer_host/render_widget_host_delegate.h"
|
||||||
|
+#include "content/common/content_export.h"
|
||||||
|
#include "content/public/common/input_event_ack_state.h"
|
||||||
|
#include "third_party/blink/public/platform/web_mouse_wheel_event.h"
|
||||||
|
|
||||||
|
@@ -55,7 +56,7 @@ enum class FirstScrollUpdateAckState {
|
||||||
|
// The MouseWheelPhaseHandler is responsible for adding the proper phase to
|
||||||
|
// wheel events. Phase information is necessary for wheel scrolling since it
|
||||||
|
// shows the start and end of a scrolling sequence.
|
||||||
|
-class MouseWheelPhaseHandler {
|
||||||
|
+class CONTENT_EXPORT MouseWheelPhaseHandler {
|
||||||
|
public:
|
||||||
|
MouseWheelPhaseHandler(RenderWidgetHostViewBase* const host_view);
|
||||||
|
~MouseWheelPhaseHandler() {}
|
13
patches/common/chromium/enable_widevine.patch
Normal file
13
patches/common/chromium/enable_widevine.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/third_party/widevine/cdm/widevine.gni b/third_party/widevine/cdm/widevine.gni
|
||||||
|
index 82a93622585a..cbd10bed9f3b 100644
|
||||||
|
--- a/third_party/widevine/cdm/widevine.gni
|
||||||
|
+++ b/third_party/widevine/cdm/widevine.gni
|
||||||
|
@@ -7,7 +7,7 @@ import("//media/media_options.gni")
|
||||||
|
|
||||||
|
declare_args() {
|
||||||
|
# Allow Widevine key system support in Chromium.
|
||||||
|
- enable_widevine = false
|
||||||
|
+ enable_widevine = is_mac || is_win
|
||||||
|
}
|
||||||
|
|
||||||
|
enable_widevine_cdm_host_verification =
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/chrome/installer/mini_installer/BUILD.gn b/chrome/installer/mini_installer/BUILD.gn
|
||||||
|
index c44f8a110599..2d48cf1ade70 100644
|
||||||
|
--- a/chrome/installer/mini_installer/BUILD.gn
|
||||||
|
+++ b/chrome/installer/mini_installer/BUILD.gn
|
||||||
|
@@ -331,7 +331,7 @@ if (is_win) {
|
||||||
|
testonly = true
|
||||||
|
data_deps = [
|
||||||
|
":mini_installer",
|
||||||
|
- ":next_version_mini_installer",
|
||||||
|
+ # ":next_version_mini_installer",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
diff --git a/third_party/blink/public/platform/web_display_item_list.h b/third_party/blink/public/platform/web_display_item_list.h
|
||||||
|
index 31a3f6d8d5f4..0b2a13230fbd 100644
|
||||||
|
--- a/third_party/blink/public/platform/web_display_item_list.h
|
||||||
|
+++ b/third_party/blink/public/platform/web_display_item_list.h
|
||||||
|
@@ -6,6 +6,7 @@
|
||||||
|
#define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_DISPLAY_ITEM_LIST_H_
|
||||||
|
|
||||||
|
#include "third_party/blink/public/platform/web_blend_mode.h"
|
||||||
|
+#include "third_party/blink/public/platform/web_common.h"
|
||||||
|
#include "third_party/blink/public/platform/web_float_point.h"
|
||||||
|
#include "third_party/blink/public/platform/web_float_rect.h"
|
||||||
|
#include "third_party/blink/public/platform/web_rect.h"
|
||||||
|
@@ -33,7 +34,7 @@ namespace blink {
|
||||||
|
// 'drawing' items) and operations to be performed when rendering this content
|
||||||
|
// (stored in 'clip', 'transform', 'filter', etc...). For more details see:
|
||||||
|
// http://dev.chromium.org/blink/slimming-paint.
|
||||||
|
-class WebDisplayItemList {
|
||||||
|
+class BLINK_EXPORT WebDisplayItemList {
|
||||||
|
public:
|
||||||
|
virtual ~WebDisplayItemList() = default;
|
||||||
|
|
13
patches/common/chromium/fix-arm64-linking-error.patch
Normal file
13
patches/common/chromium/fix-arm64-linking-error.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/skia/BUILD.gn b/skia/BUILD.gn
|
||||||
|
index c0477a6fe82d..3a020f2e2006 100644
|
||||||
|
--- a/skia/BUILD.gn
|
||||||
|
+++ b/skia/BUILD.gn
|
||||||
|
@@ -125,7 +125,7 @@ config("skia_library_config") {
|
||||||
|
|
||||||
|
defines = []
|
||||||
|
|
||||||
|
- if (!is_ios && !use_system_freetype) {
|
||||||
|
+ if (!is_ios && (is_win || is_mac)) {
|
||||||
|
defines += [ "SK_FREETYPE_MINIMUM_RUNTIME_VERSION=(((FREETYPE_MAJOR) * 0x01000000) | ((FREETYPE_MINOR) * 0x00010000) | ((FREETYPE_PATCH) * 0x00000100))" ]
|
||||||
|
}
|
||||||
|
|
83
patches/common/chromium/frame_host_manager.patch
Normal file
83
patches/common/chromium/frame_host_manager.patch
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
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
|
||||||
|
--- 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(
|
||||||
|
bool was_server_redirect = request.navigation_handle() &&
|
||||||
|
request.navigation_handle()->WasServerRedirect();
|
||||||
|
|
||||||
|
+ BrowserContext* browser_context =
|
||||||
|
+ delegate_->GetControllerForRenderManager().GetBrowserContext();
|
||||||
|
+ // If the navigation can swap SiteInstances, compute the SiteInstance it
|
||||||
|
+ // should use.
|
||||||
|
+ // TODO(clamy): We should also consider as a candidate SiteInstance the
|
||||||
|
+ // speculative SiteInstance that was computed on redirects.
|
||||||
|
+ scoped_refptr<SiteInstance> candidate_site_instance =
|
||||||
|
+ speculative_render_frame_host_
|
||||||
|
+ ? speculative_render_frame_host_->GetSiteInstance()
|
||||||
|
+ : content::SiteInstance::CreateForURL(browser_context,
|
||||||
|
+ request.common_params().url);
|
||||||
|
+
|
||||||
|
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(
|
||||||
|
|
||||||
|
no_renderer_swap_allowed |=
|
||||||
|
request.from_begin_navigation() && !can_renderer_initiate_transfer;
|
||||||
|
+
|
||||||
|
+ bool has_response_started =
|
||||||
|
+ (request.state() == NavigationRequest::RESPONSE_STARTED ||
|
||||||
|
+ request.state() == NavigationRequest::FAILED) &&
|
||||||
|
+ !speculative_render_frame_host_;
|
||||||
|
+ // Gives user a chance to choose a custom site instance.
|
||||||
|
+ SiteInstance* client_custom_instance = nullptr;
|
||||||
|
+ GetContentClient()->browser()->OverrideSiteInstanceForNavigation(
|
||||||
|
+ render_frame_host_.get(), browser_context, request.common_params().url,
|
||||||
|
+ has_response_started, candidate_site_instance.get(),
|
||||||
|
+ &client_custom_instance);
|
||||||
|
+ if (client_custom_instance)
|
||||||
|
+ return scoped_refptr<SiteInstance>(client_custom_instance);
|
||||||
|
} else {
|
||||||
|
// Subframe navigations will use the current renderer, unless specifically
|
||||||
|
// allowed to swap processes.
|
||||||
|
@@ -1861,18 +1886,9 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
|
||||||
|
if (no_renderer_swap_allowed)
|
||||||
|
return scoped_refptr<SiteInstance>(current_site_instance);
|
||||||
|
|
||||||
|
- // If the navigation can swap SiteInstances, compute the SiteInstance it
|
||||||
|
- // should use.
|
||||||
|
- // TODO(clamy): We should also consider as a candidate SiteInstance the
|
||||||
|
- // speculative SiteInstance that was computed on redirects.
|
||||||
|
- SiteInstance* candidate_site_instance =
|
||||||
|
- speculative_render_frame_host_
|
||||||
|
- ? speculative_render_frame_host_->GetSiteInstance()
|
||||||
|
- : nullptr;
|
||||||
|
-
|
||||||
|
scoped_refptr<SiteInstance> dest_site_instance = GetSiteInstanceForNavigation(
|
||||||
|
request.common_params().url, request.source_site_instance(),
|
||||||
|
- request.dest_site_instance(), candidate_site_instance,
|
||||||
|
+ request.dest_site_instance(), candidate_site_instance.get(),
|
||||||
|
request.common_params().transition,
|
||||||
|
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
|
||||||
|
--- a/content/public/browser/content_browser_client.h
|
||||||
|
+++ b/content/public/browser/content_browser_client.h
|
||||||
|
@@ -181,6 +181,15 @@ class CONTENT_EXPORT ContentBrowserClient {
|
||||||
|
public:
|
||||||
|
virtual ~ContentBrowserClient() {}
|
||||||
|
|
||||||
|
+ // Electron: Allows overriding the SiteInstance when navigating.
|
||||||
|
+ virtual void OverrideSiteInstanceForNavigation(
|
||||||
|
+ RenderFrameHost* render_frame_host,
|
||||||
|
+ BrowserContext* browser_context,
|
||||||
|
+ const GURL& dest_url,
|
||||||
|
+ bool has_response_started,
|
||||||
|
+ SiteInstance* candidate_site_instance,
|
||||||
|
+ SiteInstance** new_instance) {}
|
||||||
|
+
|
||||||
|
// Allows the embedder to set any number of custom BrowserMainParts
|
||||||
|
// implementations for the browser startup code. See comments in
|
||||||
|
// browser_main_parts.h.
|
66
patches/common/chromium/gin_enable_disable_v8_platform.patch
Normal file
66
patches/common/chromium/gin_enable_disable_v8_platform.patch
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
diff --git a/gin/isolate_holder.cc b/gin/isolate_holder.cc
|
||||||
|
index 56402d477ca3..8ab11bd18783 100644
|
||||||
|
--- a/gin/isolate_holder.cc
|
||||||
|
+++ b/gin/isolate_holder.cc
|
||||||
|
@@ -116,9 +116,10 @@ IsolateHolder::~IsolateHolder() {
|
||||||
|
void IsolateHolder::Initialize(ScriptMode mode,
|
||||||
|
V8ExtrasMode v8_extras_mode,
|
||||||
|
v8::ArrayBuffer::Allocator* allocator,
|
||||||
|
- const intptr_t* reference_table) {
|
||||||
|
+ const intptr_t* reference_table,
|
||||||
|
+ bool create_v8_platform) {
|
||||||
|
CHECK(allocator);
|
||||||
|
- V8Initializer::Initialize(mode, v8_extras_mode);
|
||||||
|
+ V8Initializer::Initialize(mode, v8_extras_mode, create_v8_platform);
|
||||||
|
g_array_buffer_allocator = allocator;
|
||||||
|
g_reference_table = reference_table;
|
||||||
|
}
|
||||||
|
diff --git a/gin/public/isolate_holder.h b/gin/public/isolate_holder.h
|
||||||
|
index 2509aca609f9..94003c6031cf 100644
|
||||||
|
--- a/gin/public/isolate_holder.h
|
||||||
|
+++ b/gin/public/isolate_holder.h
|
||||||
|
@@ -84,7 +84,8 @@ class GIN_EXPORT IsolateHolder {
|
||||||
|
static void Initialize(ScriptMode mode,
|
||||||
|
V8ExtrasMode v8_extras_mode,
|
||||||
|
v8::ArrayBuffer::Allocator* allocator,
|
||||||
|
- const intptr_t* reference_table = nullptr);
|
||||||
|
+ const intptr_t* reference_table = nullptr,
|
||||||
|
+ bool create_v8_platform = true);
|
||||||
|
|
||||||
|
v8::Isolate* isolate() { return isolate_; }
|
||||||
|
|
||||||
|
diff --git a/gin/v8_initializer.cc b/gin/v8_initializer.cc
|
||||||
|
index 02d4b1cd6521..ec6d51d7e5d8 100644
|
||||||
|
--- a/gin/v8_initializer.cc
|
||||||
|
+++ b/gin/v8_initializer.cc
|
||||||
|
@@ -236,12 +236,14 @@ LoadV8FileResult MapOpenedFile(const OpenedFileMap::mapped_type& file_region,
|
||||||
|
|
||||||
|
// static
|
||||||
|
void V8Initializer::Initialize(IsolateHolder::ScriptMode mode,
|
||||||
|
- IsolateHolder::V8ExtrasMode v8_extras_mode) {
|
||||||
|
+ IsolateHolder::V8ExtrasMode v8_extras_mode,
|
||||||
|
+ bool create_v8_platform) {
|
||||||
|
static bool v8_is_initialized = false;
|
||||||
|
if (v8_is_initialized)
|
||||||
|
return;
|
||||||
|
|
||||||
|
- v8::V8::InitializePlatform(V8Platform::Get());
|
||||||
|
+ if (create_v8_platform)
|
||||||
|
+ v8::V8::InitializePlatform(V8Platform::Get());
|
||||||
|
|
||||||
|
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
|
||||||
|
--- a/gin/v8_initializer.h
|
||||||
|
+++ b/gin/v8_initializer.h
|
||||||
|
@@ -21,7 +21,8 @@ class GIN_EXPORT V8Initializer {
|
||||||
|
public:
|
||||||
|
// This should be called by IsolateHolder::Initialize().
|
||||||
|
static void Initialize(IsolateHolder::ScriptMode mode,
|
||||||
|
- IsolateHolder::V8ExtrasMode v8_extras_mode);
|
||||||
|
+ IsolateHolder::V8ExtrasMode v8_extras_mode,
|
||||||
|
+ bool create_v8_platform = true);
|
||||||
|
|
||||||
|
// Get address and size information for currently loaded snapshot.
|
||||||
|
// If no snapshot is loaded, the return values are null for addresses
|
13
patches/common/chromium/gtk_visibility.patch
Normal file
13
patches/common/chromium/gtk_visibility.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/build/config/linux/gtk/BUILD.gn b/build/config/linux/gtk/BUILD.gn
|
||||||
|
index eb75461..2116f93 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") {
|
||||||
|
visibility = [
|
||||||
|
"//chrome/test:interactive_ui_tests",
|
||||||
|
+ "//electron:*",
|
||||||
|
+ "//electron/brightray:*",
|
||||||
|
"//examples:peerconnection_client",
|
||||||
|
"//gpu/gles2_conform_support:gles2_conform_test_windowless",
|
||||||
|
"//remoting/host",
|
17
patches/common/chromium/ignore_rc_check.patch
Normal file
17
patches/common/chromium/ignore_rc_check.patch
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
diff --git a/build/toolchain/win/tool_wrapper.py b/build/toolchain/win/tool_wrapper.py
|
||||||
|
index a76e926a8681..c43839a01211 100644
|
||||||
|
--- a/build/toolchain/win/tool_wrapper.py
|
||||||
|
+++ b/build/toolchain/win/tool_wrapper.py
|
||||||
|
@@ -258,7 +258,11 @@ class WinTool(object):
|
||||||
|
if rc_exe_exit_code == 0:
|
||||||
|
import filecmp
|
||||||
|
# Strip "/fo" prefix.
|
||||||
|
- assert filecmp.cmp(rc_res_output[3:], rcpy_res_output[3:])
|
||||||
|
+ # ------
|
||||||
|
+ # Temporarily ignore compares
|
||||||
|
+ # Nightly builds use very large version numbers that fail this check
|
||||||
|
+ # FIXME(zacwalk): Enable the assert.
|
||||||
|
+ # assert filecmp.cmp(rc_res_output[3:], rcpy_res_output[3:])
|
||||||
|
return rc_exe_exit_code
|
||||||
|
|
||||||
|
def ExecActionWrapper(self, arch, rspfile, *dirname):
|
101
patches/common/chromium/latency_info.patch
Normal file
101
patches/common/chromium/latency_info.patch
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
diff --git a/ui/latency/BUILD.gn b/ui/latency/BUILD.gn
|
||||||
|
index 2aeebd991ae3..27cacb8748c4 100644
|
||||||
|
--- a/ui/latency/BUILD.gn
|
||||||
|
+++ b/ui/latency/BUILD.gn
|
||||||
|
@@ -5,7 +5,7 @@
|
||||||
|
import("//build/config/jumbo.gni")
|
||||||
|
import("//testing/test.gni")
|
||||||
|
|
||||||
|
-jumbo_source_set("latency") {
|
||||||
|
+component("latency") {
|
||||||
|
sources = [
|
||||||
|
"fixed_point.cc",
|
||||||
|
"fixed_point.h",
|
||||||
|
@@ -18,6 +18,7 @@ jumbo_source_set("latency") {
|
||||||
|
"latency_tracker.h",
|
||||||
|
"stream_analyzer.cc",
|
||||||
|
"stream_analyzer.h",
|
||||||
|
+ "ui_latency_export.h",
|
||||||
|
"windowed_analyzer.cc",
|
||||||
|
"windowed_analyzer.h",
|
||||||
|
]
|
||||||
|
@@ -22,6 +23,8 @@ jumbo_source_set("latency") {
|
||||||
|
public_deps = [
|
||||||
|
"//services/metrics/public/cpp:metrics_cpp",
|
||||||
|
]
|
||||||
|
+
|
||||||
|
+ defines = [ "UI_LATENCY_IMPLEMENTATION" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
jumbo_source_set("test_support") {
|
||||||
|
diff --git a/ui/latency/latency_info.h b/ui/latency/latency_info.h
|
||||||
|
index d9d390861562..7b1aa99e8a9c 100644
|
||||||
|
--- a/ui/latency/latency_info.h
|
||||||
|
+++ b/ui/latency/latency_info.h
|
||||||
|
@@ -16,6 +16,7 @@
|
||||||
|
#include "base/time/time.h"
|
||||||
|
#include "services/metrics/public/cpp/ukm_source_id.h"
|
||||||
|
#include "ui/gfx/geometry/point_f.h"
|
||||||
|
+#include "ui/latency/ui_latency_export.h"
|
||||||
|
|
||||||
|
#if !defined(OS_IOS)
|
||||||
|
#include "ipc/ipc_param_traits.h" // nogncheck
|
||||||
|
@@ -114,7 +115,7 @@ enum SourceEventType {
|
||||||
|
SOURCE_EVENT_TYPE_LAST = OTHER,
|
||||||
|
};
|
||||||
|
|
||||||
|
-class LatencyInfo {
|
||||||
|
+class UI_LATENCY_EXPORT LatencyInfo {
|
||||||
|
public:
|
||||||
|
struct LatencyComponent {
|
||||||
|
// Nondecreasing number that can be used to determine what events happened
|
||||||
|
diff --git a/ui/latency/latency_tracker.h b/ui/latency/latency_tracker.h
|
||||||
|
index 24397fc4ba6d..ad943fa7ccf7 100644
|
||||||
|
--- a/ui/latency/latency_tracker.h
|
||||||
|
+++ b/ui/latency/latency_tracker.h
|
||||||
|
@@ -8,12 +8,13 @@
|
||||||
|
#include "base/macros.h"
|
||||||
|
#include "services/metrics/public/cpp/ukm_source_id.h"
|
||||||
|
#include "ui/latency/latency_info.h"
|
||||||
|
+#include "ui/latency/ui_latency_export.h"
|
||||||
|
|
||||||
|
namespace ui {
|
||||||
|
|
||||||
|
// Utility class for tracking the latency of events. Relies on LatencyInfo
|
||||||
|
// components logged by content::RenderWidgetHostLatencyTracker.
|
||||||
|
-class LatencyTracker {
|
||||||
|
+class UI_LATENCY_EXPORT LatencyTracker {
|
||||||
|
public:
|
||||||
|
explicit LatencyTracker(bool metric_sampling,
|
||||||
|
ukm::SourceId ukm_source_id = ukm::kInvalidSourceId);
|
||||||
|
diff --git a/ui/latency/ui_latency_export.h b/ui/latency/ui_latency_export.h
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..f24ee91
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/ui/latency/ui_latency_export.h
|
||||||
|
@@ -0,0 +1,25 @@
|
||||||
|
+#ifndef UI_LATENCY_UI_LATENCY_EXPORT_H_
|
||||||
|
+#define UI_LATENCY_UI_LATENCY_EXPORT_H_
|
||||||
|
+
|
||||||
|
+#if defined(COMPONENT_BUILD)
|
||||||
|
+#if defined(WIN32)
|
||||||
|
+
|
||||||
|
+#if defined(UI_LATENCY_IMPLEMENTATION)
|
||||||
|
+#define UI_LATENCY_EXPORT __declspec(dllexport)
|
||||||
|
+#else
|
||||||
|
+#define UI_LATENCY_EXPORT __declspec(dllimport)
|
||||||
|
+#endif // defined(UI_LATENCY_IMPLEMENTATION)
|
||||||
|
+
|
||||||
|
+#else // defined(WIN32)
|
||||||
|
+#if defined(UI_LATENCY_IMPLEMENTATION)
|
||||||
|
+#define UI_LATENCY_EXPORT __attribute__((visibility("default")))
|
||||||
|
+#else
|
||||||
|
+#define UI_LATENCY_EXPORT
|
||||||
|
+#endif
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#else // defined(COMPONENT_BUILD)
|
||||||
|
+#define UI_LATENCY_EXPORT
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#endif // UI_LATENCY_UI_LATENCY_EXPORT_H_
|
16
patches/common/chromium/leveldb_ssize_t.patch
Normal file
16
patches/common/chromium/leveldb_ssize_t.patch
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
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
|
||||||
|
@@ -26,7 +26,11 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(OS_WIN)
|
||||||
|
+# if !defined(_SSIZE_T_) && !defined(_SSIZE_T_DEFINED)
|
||||||
|
typedef SSIZE_T ssize_t;
|
||||||
|
+# define _SSIZE_T_
|
||||||
|
+# define _SSIZE_T_DEFINED
|
||||||
|
+# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace leveldb {
|
125
patches/common/chromium/libgtkui_export.patch
Normal file
125
patches/common/chromium/libgtkui_export.patch
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
diff --git a/chrome/browser/ui/libgtkui/app_indicator_icon.h b/chrome/browser/ui/libgtkui/app_indicator_icon.h
|
||||||
|
index 7815fbb..f17a5c5 100644
|
||||||
|
--- a/chrome/browser/ui/libgtkui/app_indicator_icon.h
|
||||||
|
+++ b/chrome/browser/ui/libgtkui/app_indicator_icon.h
|
||||||
|
@@ -12,6 +12,7 @@
|
||||||
|
#include "base/memory/weak_ptr.h"
|
||||||
|
#include "base/nix/xdg_util.h"
|
||||||
|
#include "chrome/browser/ui/libgtkui/gtk_signal.h"
|
||||||
|
+#include "chrome/browser/ui/libgtkui/libgtkui_export.h"
|
||||||
|
#include "ui/views/linux_ui/status_icon_linux.h"
|
||||||
|
|
||||||
|
typedef struct _AppIndicator AppIndicator;
|
||||||
|
@@ -31,7 +32,7 @@ namespace libgtkui {
|
||||||
|
class AppIndicatorIconMenu;
|
||||||
|
|
||||||
|
// Status icon implementation which uses libappindicator.
|
||||||
|
-class AppIndicatorIcon : public views::StatusIconLinux {
|
||||||
|
+class LIBGTKUI_EXPORT AppIndicatorIcon : public views::StatusIconLinux {
|
||||||
|
public:
|
||||||
|
// 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
|
||||||
|
--- a/chrome/browser/ui/libgtkui/gtk_status_icon.h
|
||||||
|
+++ b/chrome/browser/ui/libgtkui/gtk_status_icon.h
|
||||||
|
@@ -10,6 +10,7 @@
|
||||||
|
#include "base/macros.h"
|
||||||
|
#include "base/strings/string16.h"
|
||||||
|
#include "chrome/browser/ui/libgtkui/gtk_signal.h"
|
||||||
|
+#include "chrome/browser/ui/libgtkui/libgtkui_export.h"
|
||||||
|
#include "ui/base/glib/glib_integers.h"
|
||||||
|
#include "ui/base/glib/glib_signal.h"
|
||||||
|
#include "ui/views/linux_ui/status_icon_linux.h"
|
||||||
|
@@ -29,7 +30,7 @@ class AppIndicatorIconMenu;
|
||||||
|
|
||||||
|
// Status icon implementation which uses the system tray X11 spec (via
|
||||||
|
// GtkStatusIcon).
|
||||||
|
-class Gtk2StatusIcon : public views::StatusIconLinux {
|
||||||
|
+class LIBGTKUI_EXPORT Gtk2StatusIcon : public views::StatusIconLinux {
|
||||||
|
public:
|
||||||
|
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
|
||||||
|
--- a/chrome/browser/ui/libgtkui/gtk_util.h
|
||||||
|
+++ b/chrome/browser/ui/libgtkui/gtk_util.h
|
||||||
|
@@ -11,6 +11,7 @@
|
||||||
|
#include "ui/base/glib/scoped_gobject.h"
|
||||||
|
#include "ui/native_theme/native_theme.h"
|
||||||
|
#include "ui/views/window/frame_buttons.h"
|
||||||
|
+#include "chrome/browser/ui/libgtkui/libgtkui_export.h"
|
||||||
|
|
||||||
|
namespace aura {
|
||||||
|
class Window;
|
||||||
|
@@ -51,10 +52,10 @@ SkColor NormalURLColor(SkColor foreground);
|
||||||
|
// saturation than to look exactly like the foreground color.
|
||||||
|
SkColor SelectedURLColor(SkColor foreground, SkColor background);
|
||||||
|
|
||||||
|
-void GtkInitFromCommandLine(const base::CommandLine& command_line);
|
||||||
|
+LIBGTKUI_EXPORT void GtkInitFromCommandLine(const base::CommandLine& command_line);
|
||||||
|
|
||||||
|
// Returns the name of the ".desktop" file associated with our running process.
|
||||||
|
-std::string GetDesktopName(base::Environment* env);
|
||||||
|
+LIBGTKUI_EXPORT std::string GetDesktopName(base::Environment* env);
|
||||||
|
|
||||||
|
guint GetGdkKeyCodeForAccelerator(const ui::Accelerator& accelerator);
|
||||||
|
|
||||||
|
@@ -69,7 +70,7 @@ void TurnButtonBlue(GtkWidget* button);
|
||||||
|
|
||||||
|
// Sets |dialog| as transient for |parent|, which will keep it on top and center
|
||||||
|
// it above |parent|. Do nothing if |parent| is nullptr.
|
||||||
|
-void SetGtkTransientForAura(GtkWidget* dialog, aura::Window* parent);
|
||||||
|
+LIBGTKUI_EXPORT void SetGtkTransientForAura(GtkWidget* dialog, aura::Window* parent);
|
||||||
|
|
||||||
|
// Gets the transient parent aura window for |dialog|.
|
||||||
|
aura::Window* GetAuraTransientParent(GtkWidget* dialog);
|
||||||
|
diff --git a/chrome/browser/ui/libgtkui/skia_utils_gtk.h b/chrome/browser/ui/libgtkui/skia_utils_gtk.h
|
||||||
|
index e05fbe9..3afca9a 100644
|
||||||
|
--- a/chrome/browser/ui/libgtkui/skia_utils_gtk.h
|
||||||
|
+++ b/chrome/browser/ui/libgtkui/skia_utils_gtk.h
|
||||||
|
@@ -7,6 +7,7 @@
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
+#include "chrome/browser/ui/libgtkui/libgtkui_export.h"
|
||||||
|
#include "third_party/skia/include/core/SkColor.h"
|
||||||
|
|
||||||
|
typedef struct _GdkColor GdkColor;
|
||||||
|
@@ -41,7 +42,7 @@ const SkBitmap GdkPixbufToImageSkia(GdkPixbuf* pixbuf);
|
||||||
|
// Convert and copy a SkBitmap to a GdkPixbuf. NOTE: this uses BGRAToRGBA, so
|
||||||
|
// it is an expensive operation. The returned GdkPixbuf will have a refcount of
|
||||||
|
// 1, and the caller is responsible for unrefing it when done.
|
||||||
|
-GdkPixbuf* GdkPixbufFromSkBitmap(const SkBitmap& bitmap);
|
||||||
|
+LIBGTKUI_EXPORT GdkPixbuf* GdkPixbufFromSkBitmap(const SkBitmap& bitmap);
|
||||||
|
|
||||||
|
} // namespace libgtkui
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/ui/libgtkui/unity_service.h b/chrome/browser/ui/libgtkui/unity_service.h
|
||||||
|
index 8d67e14..95fbb27 100644
|
||||||
|
--- a/chrome/browser/ui/libgtkui/unity_service.h
|
||||||
|
+++ b/chrome/browser/ui/libgtkui/unity_service.h
|
||||||
|
@@ -5,18 +5,20 @@
|
||||||
|
#ifndef CHROME_BROWSER_UI_LIBGTKUI_UNITY_SERVICE_H_
|
||||||
|
#define CHROME_BROWSER_UI_LIBGTKUI_UNITY_SERVICE_H_
|
||||||
|
|
||||||
|
+#include "chrome/browser/ui/libgtkui/libgtkui_export.h"
|
||||||
|
+
|
||||||
|
namespace unity {
|
||||||
|
|
||||||
|
// Returns whether unity is currently running.
|
||||||
|
-bool IsRunning();
|
||||||
|
+LIBGTKUI_EXPORT bool IsRunning();
|
||||||
|
|
||||||
|
// If unity is running, sets the download counter in the dock icon. Any value
|
||||||
|
// other than 0 displays the badge.
|
||||||
|
-void SetDownloadCount(int count);
|
||||||
|
+LIBGTKUI_EXPORT void SetDownloadCount(int count);
|
||||||
|
|
||||||
|
// If unity is running, sets the download progress bar in the dock icon. Any
|
||||||
|
// value between 0.0 and 1.0 (exclusive) shows the progress bar.
|
||||||
|
-void SetProgressFraction(float percentage);
|
||||||
|
+LIBGTKUI_EXPORT void SetProgressFraction(float percentage);
|
||||||
|
|
||||||
|
} // namespace unity
|
||||||
|
|
47
patches/common/chromium/mas-audiodeviceduck.patch
Normal file
47
patches/common/chromium/mas-audiodeviceduck.patch
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
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
|
||||||
|
--- a/media/audio/mac/audio_low_latency_input_mac.cc
|
||||||
|
+++ b/media/audio/mac/audio_low_latency_input_mac.cc
|
||||||
|
@@ -28,12 +28,14 @@
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
extern "C" {
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
// See:
|
||||||
|
// https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/PAL/pal/spi/cf/CoreAudioSPI.h?rev=228264
|
||||||
|
OSStatus AudioDeviceDuck(AudioDeviceID inDevice,
|
||||||
|
Float32 inDuckedLevel,
|
||||||
|
const AudioTimeStamp* __nullable inStartTime,
|
||||||
|
Float32 inRampDuration) __attribute__((weak_import));
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
@@ -604,6 +606,7 @@ bool AUAudioInputStream::OpenVoiceProcessingAU() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.17.0
|
||||||
|
|
44
patches/common/chromium/mas-cfisobjc.patch
Normal file
44
patches/common/chromium/mas-cfisobjc.patch
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
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
|
||||||
|
--- a/base/mac/foundation_util.mm
|
||||||
|
+++ b/base/mac/foundation_util.mm
|
||||||
|
@@ -25,7 +25,6 @@
|
||||||
|
extern "C" {
|
||||||
|
CFTypeID SecACLGetTypeID();
|
||||||
|
CFTypeID SecTrustedApplicationGetTypeID();
|
||||||
|
-Boolean _CFIsObjC(CFTypeID typeID, CFTypeRef obj);
|
||||||
|
} // extern "C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -323,8 +322,7 @@ NSFont* CFToNSCast(CTFontRef cf_val) {
|
||||||
|
const_cast<NSFont*>(reinterpret_cast<const NSFont*>(cf_val));
|
||||||
|
DCHECK(!cf_val ||
|
||||||
|
CTFontGetTypeID() == CFGetTypeID(cf_val) ||
|
||||||
|
- (_CFIsObjC(CTFontGetTypeID(), cf_val) &&
|
||||||
|
- [ns_val isKindOfClass:[NSFont class]]));
|
||||||
|
+ ([ns_val isKindOfClass:[NSFont class]]));
|
||||||
|
return ns_val;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -392,9 +390,6 @@ CFCast<CTFontRef>(const CFTypeRef& cf_val) {
|
||||||
|
return (CTFontRef)(cf_val);
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (!_CFIsObjC(CTFontGetTypeID(), cf_val))
|
||||||
|
- return NULL;
|
||||||
|
-
|
||||||
|
id<NSObject> ns_val = reinterpret_cast<id>(const_cast<void*>(cf_val));
|
||||||
|
if ([ns_val isKindOfClass:[NSFont class]]) {
|
||||||
|
return (CTFontRef)(cf_val);
|
||||||
|
--
|
||||||
|
2.17.0
|
||||||
|
|
34
patches/common/chromium/mas-cgdisplayusesforcetogray.patch
Normal file
34
patches/common/chromium/mas-cgdisplayusesforcetogray.patch
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
From 82d0ef64e22c69c0435608276149977d2811a3f7 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
|
||||||
|
|
||||||
|
---
|
||||||
|
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
|
||||||
|
--- a/ui/display/mac/screen_mac.mm
|
||||||
|
+++ b/ui/display/mac/screen_mac.mm
|
||||||
|
@@ -106,7 +106,17 @@ Display BuildDisplayForScreen(NSScreen* screen) {
|
||||||
|
|
||||||
|
display.set_color_depth(NSBitsPerPixelFromDepth([screen depth]));
|
||||||
|
display.set_depth_per_component(NSBitsPerSampleFromDepth([screen depth]));
|
||||||
|
+#ifdef MAS_BUILD
|
||||||
|
+ // This is equivalent to the CGDisplayUsesForceToGray() API as at 2018-08-06,
|
||||||
|
+ // but avoids usage of the private API.
|
||||||
|
+ CFStringRef app = CFSTR("com.apple.CoreGraphics");
|
||||||
|
+ CFStringRef key = CFSTR("DisplayUseForcedGray");
|
||||||
|
+ Boolean key_valid = false;
|
||||||
|
+ display.set_is_monochrome(
|
||||||
|
+ CFPreferencesGetAppBooleanValue(key, app, &key_valid));
|
||||||
|
+#else
|
||||||
|
display.set_is_monochrome(CGDisplayUsesForceToGray());
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
// CGDisplayRotation returns a double. Display::SetRotationAsDegree will
|
||||||
|
// handle the unexpected situations were the angle is not a multiple of 90.
|
||||||
|
--
|
||||||
|
2.17.0
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
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
|
||||||
|
--- a/content/gpu/gpu_main.cc
|
||||||
|
+++ b/content/gpu/gpu_main.cc
|
||||||
|
@@ -276,8 +276,10 @@ int GpuMain(const MainFunctionParams& parameters) {
|
||||||
|
std::unique_ptr<base::MessagePump> pump(new base::MessagePumpNSRunLoop());
|
||||||
|
main_message_loop.reset(new base::MessageLoop(std::move(pump)));
|
||||||
|
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
// Tell LaunchServices to continue without a connection to the daemon.
|
||||||
|
_LSSetApplicationLaunchServicesServerConnectionStatus(0, nullptr);
|
||||||
|
+#endif
|
||||||
|
#else
|
||||||
|
main_message_loop.reset(
|
||||||
|
new base::MessageLoop(base::MessageLoop::TYPE_DEFAULT));
|
||||||
|
--
|
||||||
|
2.17.0
|
||||||
|
|
112
patches/common/chromium/mas_blink_no_private_api.patch
Normal file
112
patches/common/chromium/mas_blink_no_private_api.patch
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
diff --git a/third_party/blink/renderer/core/paint/theme_painter_mac.mm b/third_party/blink/renderer/core/paint/theme_painter_mac.mm
|
||||||
|
index 65e6437c22a6..3b726d196427 100644
|
||||||
|
--- a/third_party/blink/renderer/core/paint/theme_painter_mac.mm
|
||||||
|
+++ b/third_party/blink/renderer/core/paint/theme_painter_mac.mm
|
||||||
|
@@ -43,6 +43,7 @@
|
||||||
|
|
||||||
|
// The methods in this file are specific to the Mac OS X platform.
|
||||||
|
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
// Forward declare Mac SPIs.
|
||||||
|
extern "C" {
|
||||||
|
void _NSDrawCarbonThemeBezel(NSRect frame, BOOL enabled, BOOL flipped);
|
||||||
|
@@ -52,6 +53,7 @@ void _NSDrawCarbonThemeListBox(NSRect frame,
|
||||||
|
BOOL flipped,
|
||||||
|
BOOL always_yes);
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
namespace blink {
|
||||||
|
|
||||||
|
@@ -74,10 +76,12 @@ bool ThemePainterMac::PaintTextField(const Node* node,
|
||||||
|
// behavior change while remaining a fragile solution.
|
||||||
|
// https://bugs.chromium.org/p/chromium/issues/detail?id=658085#c3
|
||||||
|
if (!use_ns_text_field_cell) {
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
_NSDrawCarbonThemeBezel(
|
||||||
|
CGRect(r),
|
||||||
|
LayoutTheme::IsEnabled(node) && !LayoutTheme::IsReadOnlyControl(node),
|
||||||
|
YES);
|
||||||
|
+#endif
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -163,10 +167,12 @@ bool ThemePainterMac::PaintTextArea(const Node* node,
|
||||||
|
const PaintInfo& paint_info,
|
||||||
|
const IntRect& r) {
|
||||||
|
LocalCurrentGraphicsContext local_context(paint_info.context, r);
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
_NSDrawCarbonThemeListBox(
|
||||||
|
CGRect(r),
|
||||||
|
LayoutTheme::IsEnabled(node) && !LayoutTheme::IsReadOnlyControl(node),
|
||||||
|
YES, YES);
|
||||||
|
+#endif
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/third_party/blink/renderer/platform/mac/kill_ring_mac.mm b/third_party/blink/renderer/platform/mac/kill_ring_mac.mm
|
||||||
|
index acf60f09fdb9..6376120a954f 100644
|
||||||
|
--- a/third_party/blink/renderer/platform/mac/kill_ring_mac.mm
|
||||||
|
+++ b/third_party/blink/renderer/platform/mac/kill_ring_mac.mm
|
||||||
|
@@ -27,6 +27,7 @@
|
||||||
|
|
||||||
|
namespace blink {
|
||||||
|
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
extern "C" {
|
||||||
|
|
||||||
|
// Kill ring calls. Would be better to use NSKillRing.h, but that's not
|
||||||
|
@@ -39,38 +40,53 @@ NSString* _NSYankFromKillRing();
|
||||||
|
void _NSNewKillRingSequence();
|
||||||
|
void _NSSetKillRingToYankedState();
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
static void InitializeKillRingIfNeeded() {
|
||||||
|
static bool initialized_kill_ring = false;
|
||||||
|
if (!initialized_kill_ring) {
|
||||||
|
initialized_kill_ring = true;
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
_NSInitializeKillRing();
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KillRing::Append(const String& string) {
|
||||||
|
InitializeKillRingIfNeeded();
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
_NSAppendToKillRing(string);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void KillRing::Prepend(const String& string) {
|
||||||
|
InitializeKillRingIfNeeded();
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
_NSPrependToKillRing(string);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
String KillRing::Yank() {
|
||||||
|
InitializeKillRingIfNeeded();
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
return _NSYankFromKillRing();
|
||||||
|
+#else
|
||||||
|
+ return "";
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void KillRing::StartNewSequence() {
|
||||||
|
InitializeKillRingIfNeeded();
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
_NSNewKillRingSequence();
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void KillRing::SetToYankedState() {
|
||||||
|
InitializeKillRingIfNeeded();
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
_NSSetKillRingToYankedState();
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace blink
|
436
patches/common/chromium/mas_no_private_api.patch
Normal file
436
patches/common/chromium/mas_no_private_api.patch
Normal file
|
@ -0,0 +1,436 @@
|
||||||
|
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.h b/content/browser/accessibility/browser_accessibility_cocoa.h
|
||||||
|
index a03585269db6..e7b028760bba 100644
|
||||||
|
--- a/content/browser/accessibility/browser_accessibility_cocoa.h
|
||||||
|
+++ b/content/browser/accessibility/browser_accessibility_cocoa.h
|
||||||
|
@@ -111,7 +111,9 @@ struct AXTextEdit {
|
||||||
|
@property(nonatomic, readonly) NSNumber* enabled;
|
||||||
|
// Returns a text marker that points to the last character in the document that
|
||||||
|
// can be selected with Voiceover.
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
@property(nonatomic, readonly) id endTextMarker;
|
||||||
|
+#endif
|
||||||
|
@property(nonatomic, readonly) NSNumber* expanded;
|
||||||
|
@property(nonatomic, readonly) NSNumber* focused;
|
||||||
|
@property(nonatomic, readonly) NSNumber* grabbed;
|
||||||
|
@@ -147,12 +149,16 @@ struct AXTextEdit {
|
||||||
|
@property(nonatomic, readonly) NSArray* selectedChildren;
|
||||||
|
@property(nonatomic, readonly) NSString* selectedText;
|
||||||
|
@property(nonatomic, readonly) NSValue* selectedTextRange;
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
@property(nonatomic, readonly) id selectedTextMarkerRange;
|
||||||
|
+#endif
|
||||||
|
@property(nonatomic, readonly) NSValue* size;
|
||||||
|
@property(nonatomic, readonly) NSString* sortDirection;
|
||||||
|
// Returns a text marker that points to the first character in the document that
|
||||||
|
// can be selected with Voiceover.
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
@property(nonatomic, readonly) id startTextMarker;
|
||||||
|
+#endif
|
||||||
|
// A string indicating the subrole of this object as far as accessibility
|
||||||
|
// is concerned.
|
||||||
|
@property(nonatomic, readonly) NSString* subrole;
|
||||||
|
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm
|
||||||
|
index 4cff922f28a3..e9c57f7a0879 100644
|
||||||
|
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm
|
||||||
|
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
|
||||||
|
@@ -119,6 +119,7 @@ NSDictionary* attributeToMethodNameMap = nil;
|
||||||
|
// VoiceOver uses -1 to mean "no limit" for AXResultsLimit.
|
||||||
|
const int kAXResultsLimitNoLimit = -1;
|
||||||
|
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
extern "C" {
|
||||||
|
|
||||||
|
// The following are private accessibility APIs required for cursor navigation
|
||||||
|
@@ -325,6 +326,7 @@ NSAttributedString* GetAttributedTextForTextMarkerRange(
|
||||||
|
AddMisspelledTextAttributes(text_only_objects, attributed_text);
|
||||||
|
return [attributed_text attributedSubstringFromRange:range];
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
// Returns an autoreleased copy of the AXNodeData's attribute.
|
||||||
|
NSString* NSStringForStringAttribute(
|
||||||
|
@@ -578,7 +580,9 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired";
|
||||||
|
{NSAccessibilityDOMIdentifierAttribute, @"domIdentifier"},
|
||||||
|
{NSAccessibilityEditableAncestorAttribute, @"editableAncestor"},
|
||||||
|
{NSAccessibilityEnabledAttribute, @"enabled"},
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
{NSAccessibilityEndTextMarkerAttribute, @"endTextMarker"},
|
||||||
|
+#endif
|
||||||
|
{NSAccessibilityExpandedAttribute, @"expanded"},
|
||||||
|
{NSAccessibilityFocusedAttribute, @"focused"},
|
||||||
|
{NSAccessibilityGrabbedAttribute, @"grabbed"},
|
||||||
|
@@ -609,13 +613,17 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired";
|
||||||
|
{NSAccessibilityRowsAttribute, @"rows"},
|
||||||
|
// TODO(aboxhall): expose
|
||||||
|
// NSAccessibilityServesAsTitleForUIElementsAttribute
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
{NSAccessibilityStartTextMarkerAttribute, @"startTextMarker"},
|
||||||
|
+#endif
|
||||||
|
{NSAccessibilitySelectedAttribute, @"selected"},
|
||||||
|
{NSAccessibilitySelectedChildrenAttribute, @"selectedChildren"},
|
||||||
|
{NSAccessibilitySelectedTextAttribute, @"selectedText"},
|
||||||
|
{NSAccessibilitySelectedTextRangeAttribute, @"selectedTextRange"},
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
{NSAccessibilitySelectedTextMarkerRangeAttribute,
|
||||||
|
@"selectedTextMarkerRange"},
|
||||||
|
+#endif
|
||||||
|
{NSAccessibilitySizeAttribute, @"size"},
|
||||||
|
{NSAccessibilitySortDirectionAttribute, @"sortDirection"},
|
||||||
|
{NSAccessibilitySubroleAttribute, @"subrole"},
|
||||||
|
@@ -1069,6 +1077,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired";
|
||||||
|
ax::mojom::Restriction::kDisabled];
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
// Returns a text marker that points to the last character in the document that
|
||||||
|
// can be selected with VoiceOver.
|
||||||
|
- (id)endTextMarker {
|
||||||
|
@@ -1080,6 +1089,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired";
|
||||||
|
BrowserAccessibilityPositionInstance position = root->CreatePositionAt(0);
|
||||||
|
return CreateTextMarker(position->CreatePositionAtEndOfAnchor());
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
- (NSNumber*)expanded {
|
||||||
|
if (![self instanceActive])
|
||||||
|
@@ -1892,6 +1902,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired";
|
||||||
|
return [NSValue valueWithRange:NSMakeRange(selStart, selLength)];
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
- (id)selectedTextMarkerRange {
|
||||||
|
if (![self instanceActive])
|
||||||
|
return nil;
|
||||||
|
@@ -1924,6 +1935,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired";
|
||||||
|
anchorAffinity, *focusObject,
|
||||||
|
focusOffset, focusAffinity));
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
- (NSValue*)size {
|
||||||
|
if (![self instanceActive])
|
||||||
|
@@ -1956,6 +1968,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired";
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
// Returns a text marker that points to the first character in the document that
|
||||||
|
// can be selected with VoiceOver.
|
||||||
|
- (id)startTextMarker {
|
||||||
|
@@ -1967,6 +1980,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired";
|
||||||
|
BrowserAccessibilityPositionInstance position = root->CreatePositionAt(0);
|
||||||
|
return CreateTextMarker(position->CreatePositionAtStartOfAnchor());
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
// Returns a subrole based upon the role.
|
||||||
|
- (NSString*) subrole {
|
||||||
|
@@ -2247,12 +2261,14 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired";
|
||||||
|
NSMutableAttributedString* attributedValue =
|
||||||
|
[[[NSMutableAttributedString alloc] initWithString:value] autorelease];
|
||||||
|
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
if (!browserAccessibility_->IsTextOnlyObject()) {
|
||||||
|
std::vector<const BrowserAccessibility*> textOnlyObjects =
|
||||||
|
BrowserAccessibilityManager::FindTextOnlyObjectsInRange(
|
||||||
|
*browserAccessibility_, *browserAccessibility_);
|
||||||
|
AddMisspelledTextAttributes(textOnlyObjects, attributedValue);
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
return [attributedValue attributedSubstringFromRange:range];
|
||||||
|
}
|
||||||
|
@@ -2372,6 +2388,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired";
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
if ([attribute isEqualToString:@"AXUIElementForTextMarker"]) {
|
||||||
|
BrowserAccessibilityPositionInstance position =
|
||||||
|
CreatePositionFromTextMarker(parameter);
|
||||||
|
@@ -2549,6 +2566,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired";
|
||||||
|
NSString* text = GetTextForTextMarkerRange(parameter);
|
||||||
|
return [NSNumber numberWithInt:[text length]];
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
if ([attribute isEqualToString:
|
||||||
|
NSAccessibilityBoundsForRangeParameterizedAttribute]) {
|
||||||
|
@@ -2586,6 +2604,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired";
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
if ([attribute isEqualToString:
|
||||||
|
NSAccessibilityLineTextMarkerRangeForTextMarkerParameterizedAttribute]) {
|
||||||
|
BrowserAccessibilityPositionInstance position =
|
||||||
|
@@ -2665,6 +2684,7 @@ NSString* const NSAccessibilityRequiredAttributeChrome = @"AXRequired";
|
||||||
|
|
||||||
|
return @(child->GetIndexInParent());
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
diff --git a/content/browser/accessibility/browser_accessibility_manager_mac.mm b/content/browser/accessibility/browser_accessibility_manager_mac.mm
|
||||||
|
index 134f855de654..d588ed98839d 100644
|
||||||
|
--- a/content/browser/accessibility/browser_accessibility_manager_mac.mm
|
||||||
|
+++ b/content/browser/accessibility/browser_accessibility_manager_mac.mm
|
||||||
|
@@ -441,6 +441,7 @@ NSDictionary* BrowserAccessibilityManagerMac::
|
||||||
|
[user_info setObject:native_focus_object
|
||||||
|
forKey:NSAccessibilityTextChangeElement];
|
||||||
|
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
id selected_text = [native_focus_object selectedTextMarkerRange];
|
||||||
|
if (selected_text) {
|
||||||
|
NSString* const NSAccessibilitySelectedTextMarkerRangeAttribute =
|
||||||
|
@@ -448,6 +449,7 @@ NSDictionary* BrowserAccessibilityManagerMac::
|
||||||
|
[user_info setObject:selected_text
|
||||||
|
forKey:NSAccessibilitySelectedTextMarkerRangeAttribute];
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/content/renderer/renderer_main_platform_delegate_mac.mm b/content/renderer/renderer_main_platform_delegate_mac.mm
|
||||||
|
index 6b955bdb3724..1775f3b3c1d4 100644
|
||||||
|
--- a/content/renderer/renderer_main_platform_delegate_mac.mm
|
||||||
|
+++ b/content/renderer/renderer_main_platform_delegate_mac.mm
|
||||||
|
@@ -22,6 +22,7 @@
|
||||||
|
#include "sandbox/mac/seatbelt.h"
|
||||||
|
#include "services/service_manager/sandbox/mac/sandbox_mac.h"
|
||||||
|
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
extern "C" {
|
||||||
|
void CGSSetDenyWindowServerConnections(bool);
|
||||||
|
void CGSShutdownServerConnections();
|
||||||
|
@@ -30,6 +31,7 @@ void _LSSetApplicationLaunchServicesServerConnectionStatus(
|
||||||
|
uint64_t flags,
|
||||||
|
bool (^connection_allowed)(CFDictionaryRef));
|
||||||
|
};
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
namespace content {
|
||||||
|
|
||||||
|
@@ -38,6 +40,7 @@ namespace {
|
||||||
|
// This disconnects from the window server, and then indicates that Chrome
|
||||||
|
// should continue execution without access to launchservicesd.
|
||||||
|
void DisconnectWindowServer() {
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
// Now disconnect from WindowServer, after all objects have been warmed up.
|
||||||
|
// Shutting down the connection requires connecting to WindowServer,
|
||||||
|
// so do this before actually engaging the sandbox. This may cause two log
|
||||||
|
@@ -51,6 +54,7 @@ void DisconnectWindowServer() {
|
||||||
|
SetApplicationIsDaemon(true);
|
||||||
|
// Tell LaunchServices to continue without a connection to the daemon.
|
||||||
|
_LSSetApplicationLaunchServicesServerConnectionStatus(0, nullptr);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
// You are about to read a pretty disgusting hack. In a static initializer,
|
||||||
|
diff --git a/device/bluetooth/bluetooth_adapter_mac.mm b/device/bluetooth/bluetooth_adapter_mac.mm
|
||||||
|
index 09123af7c2f0..69d6b926576f 100644
|
||||||
|
--- a/device/bluetooth/bluetooth_adapter_mac.mm
|
||||||
|
+++ b/device/bluetooth/bluetooth_adapter_mac.mm
|
||||||
|
@@ -32,6 +32,7 @@
|
||||||
|
#include "device/bluetooth/bluetooth_low_energy_central_manager_delegate.h"
|
||||||
|
#include "device/bluetooth/bluetooth_socket_mac.h"
|
||||||
|
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
extern "C" {
|
||||||
|
// Undocumented IOBluetooth Preference API [1]. Used by `blueutil` [2] and
|
||||||
|
// `Karabiner` [3] to programmatically control the Bluetooth state. Calling the
|
||||||
|
@@ -45,6 +46,7 @@ extern "C" {
|
||||||
|
// [4] https://support.apple.com/kb/PH25091
|
||||||
|
void IOBluetoothPreferenceSetControllerPowerState(int state);
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
@@ -118,8 +120,10 @@ BluetoothAdapterMac::BluetoothAdapterMac()
|
||||||
|
controller_state_function_(
|
||||||
|
base::BindRepeating(&BluetoothAdapterMac::GetHostControllerState,
|
||||||
|
base::Unretained(this))),
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
power_state_function_(
|
||||||
|
base::BindRepeating(IOBluetoothPreferenceSetControllerPowerState)),
|
||||||
|
+#endif
|
||||||
|
should_update_name_(true),
|
||||||
|
classic_discovery_manager_(
|
||||||
|
BluetoothDiscoveryManagerMac::CreateClassic(this)),
|
||||||
|
@@ -302,8 +306,12 @@ bool BluetoothAdapterMac::IsLowEnergyAvailable() {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BluetoothAdapterMac::SetPoweredImpl(bool powered) {
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
power_state_function_.Run(base::strict_cast<int>(powered));
|
||||||
|
return true;
|
||||||
|
+#else
|
||||||
|
+ return false;
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void BluetoothAdapterMac::RemovePairingDelegateInternal(
|
||||||
|
diff --git a/media/audio/BUILD.gn b/media/audio/BUILD.gn
|
||||||
|
index 10d786fded92..10e6c6772351 100644
|
||||||
|
--- a/media/audio/BUILD.gn
|
||||||
|
+++ b/media/audio/BUILD.gn
|
||||||
|
@@ -189,6 +189,12 @@ source_set("audio") {
|
||||||
|
"mac/scoped_audio_unit.cc",
|
||||||
|
"mac/scoped_audio_unit.h",
|
||||||
|
]
|
||||||
|
+ if (is_mas_build) {
|
||||||
|
+ sources -= [
|
||||||
|
+ "mac/coreaudio_dispatch_override.cc",
|
||||||
|
+ "mac/coreaudio_dispatch_override.h",
|
||||||
|
+ ]
|
||||||
|
+ }
|
||||||
|
libs += [
|
||||||
|
"AudioToolbox.framework",
|
||||||
|
"AudioUnit.framework",
|
||||||
|
diff --git a/media/audio/mac/audio_manager_mac.cc b/media/audio/mac/audio_manager_mac.cc
|
||||||
|
index 1a74579e310b..0a15778d6825 100644
|
||||||
|
--- a/media/audio/mac/audio_manager_mac.cc
|
||||||
|
+++ b/media/audio/mac/audio_manager_mac.cc
|
||||||
|
@@ -993,7 +993,7 @@ AudioParameters AudioManagerMac::GetPreferredOutputStreamParameters(
|
||||||
|
|
||||||
|
void AudioManagerMac::InitializeOnAudioThread() {
|
||||||
|
DCHECK(GetTaskRunner()->BelongsToCurrentThread());
|
||||||
|
- InitializeCoreAudioDispatchOverride();
|
||||||
|
+ // InitializeCoreAudioDispatchOverride();
|
||||||
|
power_observer_.reset(new AudioPowerObserver());
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/net/dns/dns_config_service_posix.cc b/net/dns/dns_config_service_posix.cc
|
||||||
|
index 706ba6e8e882..3fbe80c91cd9 100644
|
||||||
|
--- a/net/dns/dns_config_service_posix.cc
|
||||||
|
+++ b/net/dns/dns_config_service_posix.cc
|
||||||
|
@@ -244,6 +244,7 @@ class DnsConfigServicePosix::Watcher {
|
||||||
|
|
||||||
|
bool Watch() {
|
||||||
|
bool success = true;
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
if (!config_watcher_.Watch(base::Bind(&Watcher::OnConfigChanged,
|
||||||
|
base::Unretained(this)))) {
|
||||||
|
LOG(ERROR) << "DNS config watch failed to start.";
|
||||||
|
@@ -265,6 +266,7 @@ class DnsConfigServicePosix::Watcher {
|
||||||
|
DNS_CONFIG_WATCH_MAX);
|
||||||
|
}
|
||||||
|
#endif // !defined(OS_ANDROID) && !defined(OS_IOS)
|
||||||
|
+#endif
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/sandbox/mac/sandbox_compiler.cc b/sandbox/mac/sandbox_compiler.cc
|
||||||
|
index e524aa7b8510..718d3f963da5 100644
|
||||||
|
--- a/sandbox/mac/sandbox_compiler.cc
|
||||||
|
+++ b/sandbox/mac/sandbox_compiler.cc
|
||||||
|
@@ -28,6 +28,7 @@ bool SandboxCompiler::InsertStringParam(const std::string& key,
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SandboxCompiler::CompileAndApplyProfile(std::string* error) {
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
char* error_internal = nullptr;
|
||||||
|
std::vector<const char*> params;
|
||||||
|
|
||||||
|
@@ -44,6 +45,7 @@ bool SandboxCompiler::CompileAndApplyProfile(std::string* error) {
|
||||||
|
sandbox::Seatbelt::FreeError(error_internal);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/sandbox/mac/seatbelt.cc b/sandbox/mac/seatbelt.cc
|
||||||
|
index dfba0bded9e3..876f96999f53 100644
|
||||||
|
--- a/sandbox/mac/seatbelt.cc
|
||||||
|
+++ b/sandbox/mac/seatbelt.cc
|
||||||
|
@@ -64,7 +64,11 @@ void Seatbelt::FreeError(char* errorbuf) {
|
||||||
|
|
||||||
|
// static
|
||||||
|
bool Seatbelt::IsSandboxed() {
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
return ::sandbox_check(getpid(), NULL, 0);
|
||||||
|
+#else
|
||||||
|
+ return true;
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace sandbox
|
||||||
|
diff --git a/sandbox/mac/seatbelt_extension.cc b/sandbox/mac/seatbelt_extension.cc
|
||||||
|
index 9073364142e8..2356add74dfa 100644
|
||||||
|
--- a/sandbox/mac/seatbelt_extension.cc
|
||||||
|
+++ b/sandbox/mac/seatbelt_extension.cc
|
||||||
|
@@ -8,6 +8,7 @@
|
||||||
|
#include "base/memory/ptr_util.h"
|
||||||
|
#include "sandbox/mac/seatbelt_extension_token.h"
|
||||||
|
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
// libsandbox private API.
|
||||||
|
extern "C" {
|
||||||
|
extern const char* APP_SANDBOX_READ;
|
||||||
|
@@ -18,6 +19,7 @@ char* sandbox_extension_issue_file(const char* type,
|
||||||
|
const char* path,
|
||||||
|
uint32_t flags);
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
namespace sandbox {
|
||||||
|
|
||||||
|
@@ -46,7 +48,11 @@ std::unique_ptr<SeatbeltExtension> SeatbeltExtension::FromToken(
|
||||||
|
|
||||||
|
bool SeatbeltExtension::Consume() {
|
||||||
|
DCHECK(!token_.empty());
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
handle_ = sandbox_extension_consume(token_.c_str());
|
||||||
|
+#else
|
||||||
|
+ handle_ = -1;
|
||||||
|
+#endif
|
||||||
|
return handle_ > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -58,7 +64,11 @@ bool SeatbeltExtension::ConsumePermanently() {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SeatbeltExtension::Revoke() {
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
int rv = sandbox_extension_release(handle_);
|
||||||
|
+#else
|
||||||
|
+ int rv = -1;
|
||||||
|
+#endif
|
||||||
|
handle_ = 0;
|
||||||
|
token_.clear();
|
||||||
|
return rv == 0;
|
||||||
|
@@ -76,9 +86,11 @@ SeatbeltExtension::SeatbeltExtension(const std::string& token)
|
||||||
|
char* SeatbeltExtension::IssueToken(SeatbeltExtension::Type type,
|
||||||
|
const std::string& resource) {
|
||||||
|
switch (type) {
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
case FILE_READ:
|
||||||
|
return sandbox_extension_issue_file(APP_SANDBOX_READ, resource.c_str(),
|
||||||
|
0);
|
||||||
|
+#endif
|
||||||
|
default:
|
||||||
|
NOTREACHED();
|
||||||
|
return nullptr;
|
||||||
|
diff --git a/ui/views/cocoa/bridged_native_widget.mm b/ui/views/cocoa/bridged_native_widget.mm
|
||||||
|
index 3c6e9903d7df..ddc9061c64d1 100644
|
||||||
|
--- a/ui/views/cocoa/bridged_native_widget.mm
|
||||||
|
+++ b/ui/views/cocoa/bridged_native_widget.mm
|
||||||
|
@@ -43,6 +43,7 @@
|
||||||
|
#include "ui/views/widget/widget_delegate.h"
|
||||||
|
#include "ui/views/window/dialog_delegate.h"
|
||||||
|
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
extern "C" {
|
||||||
|
|
||||||
|
typedef int32_t CGSConnection;
|
||||||
|
@@ -52,6 +53,7 @@ CGError CGSSetWindowBackgroundBlurRadius(CGSConnection connection,
|
||||||
|
int radius);
|
||||||
|
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
// The NSView that hosts the composited CALayer drawing the UI. It fills the
|
||||||
|
// window but is not hittable so that accessibility hit tests always go to the
|
12
patches/common/chromium/net_url_request_job.patch
Normal file
12
patches/common/chromium/net_url_request_job.patch
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
diff --git a/net/url_request/url_request_job.h b/net/url_request/url_request_job.h
|
||||||
|
index 2341999..3011bf7 100644
|
||||||
|
--- a/net/url_request/url_request_job.h
|
||||||
|
+++ b/net/url_request/url_request_job.h
|
||||||
|
@@ -269,6 +269,7 @@ class NET_EXPORT URLRequestJob : public base::PowerObserver {
|
||||||
|
void OnCallToDelegate();
|
||||||
|
void OnCallToDelegateComplete();
|
||||||
|
|
||||||
|
+ public:
|
||||||
|
// Called to read raw (pre-filtered) data from this Job. Reads at most
|
||||||
|
// |buf_size| bytes into |buf|.
|
||||||
|
// Possible return values:
|
13
patches/common/chromium/no_cache_storage_check.patch
Normal file
13
patches/common/chromium/no_cache_storage_check.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/content/browser/cache_storage/cache_storage.cc b/content/browser/cache_storage/cache_storage.cc
|
||||||
|
index ce6a21b..10a3b18 100644
|
||||||
|
--- a/content/browser/cache_storage/cache_storage.cc
|
||||||
|
+++ b/content/browser/cache_storage/cache_storage.cc
|
||||||
|
@@ -129,7 +129,7 @@ class CacheStorage::CacheLoader {
|
||||||
|
blob_context_(blob_context),
|
||||||
|
cache_storage_(cache_storage),
|
||||||
|
origin_(origin) {
|
||||||
|
- DCHECK(!origin_.unique());
|
||||||
|
+ // DCHECK(!origin_.unique());
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual ~CacheLoader() {}
|
13
patches/common/chromium/no_stack_dumping.patch
Normal file
13
patches/common/chromium/no_stack_dumping.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/content/app/content_main_runner.cc b/content/app/content_main_runner.cc
|
||||||
|
index c283922..397ba80 100644
|
||||||
|
--- a/content/app/content_main_runner.cc
|
||||||
|
+++ b/content/app/content_main_runner.cc
|
||||||
|
@@ -657,7 +657,7 @@ class ContentMainRunnerImpl : public ContentMainRunner {
|
||||||
|
|
||||||
|
InitializeV8IfNeeded(command_line, process_type);
|
||||||
|
|
||||||
|
-#if !defined(OFFICIAL_BUILD)
|
||||||
|
+#if 0
|
||||||
|
#if defined(OS_WIN)
|
||||||
|
bool should_enable_stack_dump = !process_type.empty();
|
||||||
|
#else
|
15
patches/common/chromium/out_of_process_instance.patch
Normal file
15
patches/common/chromium/out_of_process_instance.patch
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
diff --git a/pdf/out_of_process_instance.cc b/pdf/out_of_process_instance.cc
|
||||||
|
index 8b9c9f19a3dd..c4d801135053 100644
|
||||||
|
--- a/pdf/out_of_process_instance.cc
|
||||||
|
+++ b/pdf/out_of_process_instance.cc
|
||||||
|
@@ -333,7 +333,9 @@ bool OutOfProcessInstance::Init(uint32_t argc,
|
||||||
|
std::string document_url = document_url_var.AsString();
|
||||||
|
base::StringPiece document_url_piece(document_url);
|
||||||
|
is_print_preview_ = IsPrintPreviewUrl(document_url_piece);
|
||||||
|
- if (!document_url_piece.starts_with(kChromeExtension) && !is_print_preview_)
|
||||||
|
+ if (!document_url_piece.starts_with(kChromeExtension) &&
|
||||||
|
+ !document_url_piece.starts_with("chrome://pdf-viewer") &&
|
||||||
|
+ !is_print_preview_)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Check if the plugin is full frame. This is passed in from JS.
|
484
patches/common/chromium/pepper_flash.patch
Normal file
484
patches/common/chromium/pepper_flash.patch
Normal file
|
@ -0,0 +1,484 @@
|
||||||
|
diff --git a/chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.h b/chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.h
|
||||||
|
index 735da93c3cab..533f53fbc423 100644
|
||||||
|
--- a/chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.h
|
||||||
|
+++ b/chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.h
|
||||||
|
@@ -5,6 +5,7 @@
|
||||||
|
#ifndef CHROME_BROWSER_RENDERER_HOST_PEPPER_CHROME_BROWSER_PEPPER_HOST_FACTORY_H_
|
||||||
|
#define CHROME_BROWSER_RENDERER_HOST_PEPPER_CHROME_BROWSER_PEPPER_HOST_FACTORY_H_
|
||||||
|
|
||||||
|
+#include "base/component_export.h"
|
||||||
|
#include "base/macros.h"
|
||||||
|
#include "ppapi/host/host_factory.h"
|
||||||
|
|
||||||
|
@@ -12,7 +13,8 @@ namespace content {
|
||||||
|
class BrowserPpapiHost;
|
||||||
|
} // namespace content
|
||||||
|
|
||||||
|
-class ChromeBrowserPepperHostFactory : public ppapi::host::HostFactory {
|
||||||
|
+class COMPONENT_EXPORT(PEPPER_FLASH) ChromeBrowserPepperHostFactory
|
||||||
|
+ : public ppapi::host::HostFactory {
|
||||||
|
public:
|
||||||
|
// Non-owning pointer to the filter must outlive this class.
|
||||||
|
explicit ChromeBrowserPepperHostFactory(content::BrowserPpapiHost* host);
|
||||||
|
diff --git a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc
|
||||||
|
index f4f1741a8ecf..103238cdd53f 100644
|
||||||
|
--- a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc
|
||||||
|
+++ b/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc
|
||||||
|
@@ -6,10 +6,12 @@
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
|
||||||
|
#include "chrome/browser/profiles/profile.h"
|
||||||
|
#include "components/content_settings/core/browser/host_content_settings_map.h"
|
||||||
|
#include "components/content_settings/core/common/content_settings.h"
|
||||||
|
+#endif
|
||||||
|
#include "content/public/browser/browser_ppapi_host.h"
|
||||||
|
#include "content/public/browser/browser_thread.h"
|
||||||
|
#include "content/public/browser/render_process_host.h"
|
||||||
|
@@ -57,6 +59,7 @@ int32_t PepperBrokerMessageFilter::OnIsAllowed(
|
||||||
|
RenderProcessHost::FromID(render_process_id_);
|
||||||
|
if (!render_process_host)
|
||||||
|
return PP_ERROR_FAILED;
|
||||||
|
+#if 0
|
||||||
|
Profile* profile =
|
||||||
|
Profile::FromBrowserContext(render_process_host->GetBrowserContext());
|
||||||
|
HostContentSettingsMap* content_settings =
|
||||||
|
@@ -68,5 +71,6 @@ int32_t PepperBrokerMessageFilter::OnIsAllowed(
|
||||||
|
std::string());
|
||||||
|
if (setting == CONTENT_SETTING_ALLOW)
|
||||||
|
return PP_OK;
|
||||||
|
- return PP_ERROR_FAILED;
|
||||||
|
+#endif
|
||||||
|
+ return PP_OK;
|
||||||
|
}
|
||||||
|
diff --git a/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc b/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc
|
||||||
|
index 1c1844a9eb71..2c9834b11d34 100644
|
||||||
|
--- a/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc
|
||||||
|
+++ b/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc
|
||||||
|
@@ -6,9 +6,11 @@
|
||||||
|
|
||||||
|
#include "base/time/time.h"
|
||||||
|
#include "build/build_config.h"
|
||||||
|
+#if 0
|
||||||
|
#include "chrome/browser/content_settings/cookie_settings_factory.h"
|
||||||
|
#include "chrome/browser/profiles/profile.h"
|
||||||
|
#include "components/content_settings/core/browser/cookie_settings.h"
|
||||||
|
+#endif
|
||||||
|
#include "content/public/browser/browser_context.h"
|
||||||
|
#include "content/public/browser/browser_ppapi_host.h"
|
||||||
|
#include "content/public/browser/browser_thread.h"
|
||||||
|
@@ -40,6 +42,7 @@ using content::ServiceManagerConnection;
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
// Get the CookieSettings on the UI thread for the given render process ID.
|
||||||
|
scoped_refptr<content_settings::CookieSettings> GetCookieSettings(
|
||||||
|
int render_process_id) {
|
||||||
|
@@ -53,6 +56,7 @@ scoped_refptr<content_settings::CookieSettings> GetCookieSettings(
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
void PepperBindConnectorRequest(
|
||||||
|
service_manager::mojom::ConnectorRequest connector_request) {
|
||||||
|
@@ -70,7 +74,9 @@ PepperFlashBrowserHost::PepperFlashBrowserHost(BrowserPpapiHost* host,
|
||||||
|
PP_Instance instance,
|
||||||
|
PP_Resource resource)
|
||||||
|
: ResourceHost(host->GetPpapiHost(), instance, resource),
|
||||||
|
+#if 0
|
||||||
|
host_(host),
|
||||||
|
+#endif
|
||||||
|
delay_timer_(FROM_HERE, base::TimeDelta::FromSeconds(45), this,
|
||||||
|
&PepperFlashBrowserHost::OnDelayTimerFired),
|
||||||
|
weak_factory_(this) {
|
||||||
|
@@ -122,6 +128,7 @@ int32_t PepperFlashBrowserHost::OnGetLocalTimeZoneOffset(
|
||||||
|
|
||||||
|
int32_t PepperFlashBrowserHost::OnGetLocalDataRestrictions(
|
||||||
|
ppapi::host::HostMessageContext* context) {
|
||||||
|
+#if 0
|
||||||
|
// Getting the Flash LSO settings requires using the CookieSettings which
|
||||||
|
// belong to the profile which lives on the UI thread. We lazily initialize
|
||||||
|
// |cookie_settings_| by grabbing the reference from the UI thread and then
|
||||||
|
@@ -144,9 +151,11 @@ int32_t PepperFlashBrowserHost::OnGetLocalDataRestrictions(
|
||||||
|
document_url,
|
||||||
|
plugin_url));
|
||||||
|
}
|
||||||
|
- return PP_OK_COMPLETIONPENDING;
|
||||||
|
+#endif
|
||||||
|
+ return PP_FLASHLSORESTRICTIONS_IN_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
void PepperFlashBrowserHost::GetLocalDataRestrictions(
|
||||||
|
ppapi::host::ReplyMessageContext reply_context,
|
||||||
|
const GURL& document_url,
|
||||||
|
@@ -175,6 +184,7 @@ void PepperFlashBrowserHost::GetLocalDataRestrictions(
|
||||||
|
PpapiPluginMsg_Flash_GetLocalDataRestrictionsReply(
|
||||||
|
static_cast<int32_t>(restrictions)));
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
device::mojom::WakeLock* PepperFlashBrowserHost::GetWakeLock() {
|
||||||
|
// Here is a lazy binding, and will not reconnect after connection error.
|
||||||
|
diff --git a/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.h b/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.h
|
||||||
|
index ff0b687a51b6..ab6d96cbe9f8 100644
|
||||||
|
--- a/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.h
|
||||||
|
+++ b/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.h
|
||||||
|
@@ -23,9 +23,11 @@ namespace content {
|
||||||
|
class BrowserPpapiHost;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
namespace content_settings {
|
||||||
|
class CookieSettings;
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
class GURL;
|
||||||
|
|
||||||
|
@@ -51,15 +53,19 @@ class PepperFlashBrowserHost : public ppapi::host::ResourceHost {
|
||||||
|
const base::Time& t);
|
||||||
|
int32_t OnGetLocalDataRestrictions(ppapi::host::HostMessageContext* context);
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
void GetLocalDataRestrictions(
|
||||||
|
ppapi::host::ReplyMessageContext reply_context,
|
||||||
|
const GURL& document_url,
|
||||||
|
const GURL& plugin_url,
|
||||||
|
scoped_refptr<content_settings::CookieSettings> cookie_settings);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
device::mojom::WakeLock* GetWakeLock();
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
content::BrowserPpapiHost* host_;
|
||||||
|
+#endif
|
||||||
|
int render_process_id_;
|
||||||
|
|
||||||
|
// Requests a wake lock to prevent going to sleep, and a timer to cancel it
|
||||||
|
@@ -67,8 +73,10 @@ class PepperFlashBrowserHost : public ppapi::host::ResourceHost {
|
||||||
|
device::mojom::WakeLockPtr wake_lock_;
|
||||||
|
base::DelayTimer delay_timer_;
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
// For fetching the Flash LSO settings.
|
||||||
|
scoped_refptr<content_settings::CookieSettings> cookie_settings_;
|
||||||
|
+#endif
|
||||||
|
base::WeakPtrFactory<PepperFlashBrowserHost> weak_factory_;
|
||||||
|
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(PepperFlashBrowserHost);
|
||||||
|
diff --git a/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.cc b/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.cc
|
||||||
|
index e267746783bd..bc84b44ceb27 100644
|
||||||
|
--- a/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.cc
|
||||||
|
+++ b/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.cc
|
||||||
|
@@ -18,6 +18,7 @@
|
||||||
|
#include "content/public/browser/child_process_security_policy.h"
|
||||||
|
#include "content/public/browser/render_frame_host.h"
|
||||||
|
#include "content/public/common/pepper_plugin_info.h"
|
||||||
|
+#include "net/base/network_interfaces.h"
|
||||||
|
#include "ppapi/c/pp_errors.h"
|
||||||
|
#include "ppapi/host/dispatch_host_message.h"
|
||||||
|
#include "ppapi/host/host_message_context.h"
|
||||||
|
@@ -127,7 +128,9 @@ PepperFlashDRMHost::PepperFlashDRMHost(BrowserPpapiHost* host,
|
||||||
|
content::ChildProcessSecurityPolicy::GetInstance()->GrantReadFile(
|
||||||
|
render_process_id, voucher_file);
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
fetcher_ = new DeviceIDFetcher(render_process_id);
|
||||||
|
+#endif
|
||||||
|
monitor_finder_ = new MonitorFinder(render_process_id, render_frame_id);
|
||||||
|
monitor_finder_->GetMonitor();
|
||||||
|
}
|
||||||
|
@@ -150,12 +153,18 @@ int32_t PepperFlashDRMHost::OnResourceMessageReceived(
|
||||||
|
|
||||||
|
int32_t PepperFlashDRMHost::OnHostMsgGetDeviceID(
|
||||||
|
ppapi::host::HostMessageContext* context) {
|
||||||
|
+#if 0
|
||||||
|
if (!fetcher_->Start(base::Bind(&PepperFlashDRMHost::GotDeviceID,
|
||||||
|
weak_factory_.GetWeakPtr(),
|
||||||
|
context->MakeReplyMessageContext()))) {
|
||||||
|
return PP_ERROR_INPROGRESS;
|
||||||
|
}
|
||||||
|
- return PP_OK_COMPLETIONPENDING;
|
||||||
|
+#endif
|
||||||
|
+ static std::string id;
|
||||||
|
+ if (id.empty())
|
||||||
|
+ id = net::GetHostName();
|
||||||
|
+ context->reply_msg = PpapiPluginMsg_FlashDRM_GetDeviceIDReply(id);
|
||||||
|
+ return PP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t PepperFlashDRMHost::OnHostMsgGetHmonitor(
|
||||||
|
@@ -184,6 +193,7 @@ int32_t PepperFlashDRMHost::OnHostMsgMonitorIsExternal(
|
||||||
|
return PP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
void PepperFlashDRMHost::GotDeviceID(
|
||||||
|
ppapi::host::ReplyMessageContext reply_context,
|
||||||
|
const std::string& id,
|
||||||
|
@@ -196,3 +206,4 @@ void PepperFlashDRMHost::GotDeviceID(
|
||||||
|
host()->SendReply(reply_context,
|
||||||
|
PpapiPluginMsg_FlashDRM_GetDeviceIDReply(id));
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
diff --git a/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.h b/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.h
|
||||||
|
index faa83c9d32e5..bbae9c21b59a 100644
|
||||||
|
--- a/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.h
|
||||||
|
+++ b/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.h
|
||||||
|
@@ -11,7 +11,9 @@
|
||||||
|
|
||||||
|
#include "base/macros.h"
|
||||||
|
#include "base/memory/weak_ptr.h"
|
||||||
|
+#if 0
|
||||||
|
#include "chrome/browser/renderer_host/pepper/device_id_fetcher.h"
|
||||||
|
+#endif
|
||||||
|
#include "ppapi/host/host_message_context.h"
|
||||||
|
#include "ppapi/host/resource_host.h"
|
||||||
|
|
||||||
|
@@ -50,7 +52,9 @@ class PepperFlashDRMHost : public ppapi::host::ResourceHost {
|
||||||
|
const std::string& id,
|
||||||
|
int32_t result);
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
scoped_refptr<DeviceIDFetcher> fetcher_;
|
||||||
|
+#endif
|
||||||
|
scoped_refptr<MonitorFinder> monitor_finder_;
|
||||||
|
|
||||||
|
base::WeakPtrFactory<PepperFlashDRMHost> weak_factory_;
|
||||||
|
diff --git a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc
|
||||||
|
index 5599a2d3d62f..532c7290cc36 100644
|
||||||
|
--- a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc
|
||||||
|
+++ b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc
|
||||||
|
@@ -7,16 +7,20 @@
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include "base/macros.h"
|
||||||
|
+#if 0
|
||||||
|
#include "chrome/browser/browser_process.h"
|
||||||
|
#include "chrome/browser/profiles/profile.h"
|
||||||
|
#include "chrome/browser/profiles/profile_manager.h"
|
||||||
|
#include "chrome/common/chrome_switches.h"
|
||||||
|
#include "chrome/common/pepper_permission_util.h"
|
||||||
|
+#endif
|
||||||
|
#include "content/public/browser/browser_ppapi_host.h"
|
||||||
|
#include "content/public/browser/browser_thread.h"
|
||||||
|
#include "content/public/browser/child_process_security_policy.h"
|
||||||
|
#include "content/public/browser/render_view_host.h"
|
||||||
|
+#if 0
|
||||||
|
#include "extensions/buildflags/buildflags.h"
|
||||||
|
+#endif
|
||||||
|
#include "ppapi/c/pp_errors.h"
|
||||||
|
#include "ppapi/host/dispatch_host_message.h"
|
||||||
|
#include "ppapi/host/host_message_context.h"
|
||||||
|
@@ -25,12 +29,11 @@
|
||||||
|
#include "ppapi/shared_impl/file_system_util.h"
|
||||||
|
#include "storage/browser/fileapi/isolated_context.h"
|
||||||
|
|
||||||
|
-#if BUILDFLAG(ENABLE_EXTENSIONS)
|
||||||
|
+#if 0
|
||||||
|
#include "extensions/browser/extension_registry.h"
|
||||||
|
#include "extensions/common/constants.h"
|
||||||
|
#include "extensions/common/extension.h"
|
||||||
|
#include "extensions/common/extension_set.h"
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
@@ -40,6 +43,7 @@ const char* kPredefinedAllowedCrxFsOrigins[] = {
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
// static
|
||||||
|
PepperIsolatedFileSystemMessageFilter*
|
||||||
|
@@ -67,8 +71,10 @@ PepperIsolatedFileSystemMessageFilter::PepperIsolatedFileSystemMessageFilter(
|
||||||
|
profile_directory_(profile_directory),
|
||||||
|
document_url_(document_url),
|
||||||
|
ppapi_host_(ppapi_host) {
|
||||||
|
+#if 0
|
||||||
|
for (size_t i = 0; i < arraysize(kPredefinedAllowedCrxFsOrigins); ++i)
|
||||||
|
allowed_crxfs_origins_.insert(kPredefinedAllowedCrxFsOrigins[i]);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
PepperIsolatedFileSystemMessageFilter::
|
||||||
|
@@ -94,6 +100,7 @@ int32_t PepperIsolatedFileSystemMessageFilter::OnResourceMessageReceived(
|
||||||
|
return PP_ERROR_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
Profile* PepperIsolatedFileSystemMessageFilter::GetProfile() {
|
||||||
|
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||||
|
ProfileManager* profile_manager = g_browser_process->profile_manager();
|
||||||
|
@@ -120,6 +127,7 @@ std::string PepperIsolatedFileSystemMessageFilter::CreateCrxFileSystem(
|
||||||
|
return std::string();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
int32_t PepperIsolatedFileSystemMessageFilter::OnOpenFileSystem(
|
||||||
|
ppapi::host::HostMessageContext* context,
|
||||||
|
@@ -128,7 +136,7 @@ int32_t PepperIsolatedFileSystemMessageFilter::OnOpenFileSystem(
|
||||||
|
case PP_ISOLATEDFILESYSTEMTYPE_PRIVATE_INVALID:
|
||||||
|
break;
|
||||||
|
case PP_ISOLATEDFILESYSTEMTYPE_PRIVATE_CRX:
|
||||||
|
- return OpenCrxFileSystem(context);
|
||||||
|
+ return PP_ERROR_NOTSUPPORTED;
|
||||||
|
case PP_ISOLATEDFILESYSTEMTYPE_PRIVATE_PLUGINPRIVATE:
|
||||||
|
return OpenPluginPrivateFileSystem(context);
|
||||||
|
}
|
||||||
|
@@ -138,6 +146,7 @@ int32_t PepperIsolatedFileSystemMessageFilter::OnOpenFileSystem(
|
||||||
|
return PP_ERROR_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
int32_t PepperIsolatedFileSystemMessageFilter::OpenCrxFileSystem(
|
||||||
|
ppapi::host::HostMessageContext* context) {
|
||||||
|
#if BUILDFLAG(ENABLE_EXTENSIONS)
|
||||||
|
@@ -176,6 +185,7 @@ int32_t PepperIsolatedFileSystemMessageFilter::OpenCrxFileSystem(
|
||||||
|
return PP_ERROR_NOTSUPPORTED;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
int32_t PepperIsolatedFileSystemMessageFilter::OpenPluginPrivateFileSystem(
|
||||||
|
ppapi::host::HostMessageContext* context) {
|
||||||
|
diff --git a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h
|
||||||
|
index ca7f87b973e6..f73b596ce78e 100644
|
||||||
|
--- a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h
|
||||||
|
+++ b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h
|
||||||
|
@@ -19,7 +19,9 @@
|
||||||
|
#include "ppapi/host/resource_message_filter.h"
|
||||||
|
#include "url/gurl.h"
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
class Profile;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
namespace content {
|
||||||
|
class BrowserPpapiHost;
|
||||||
|
@@ -53,16 +55,20 @@ class PepperIsolatedFileSystemMessageFilter
|
||||||
|
|
||||||
|
~PepperIsolatedFileSystemMessageFilter() override;
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
Profile* GetProfile();
|
||||||
|
|
||||||
|
// Returns filesystem id of isolated filesystem if valid, or empty string
|
||||||
|
// otherwise. This must run on the UI thread because ProfileManager only
|
||||||
|
// allows access on that thread.
|
||||||
|
std::string CreateCrxFileSystem(Profile* profile);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
int32_t OnOpenFileSystem(ppapi::host::HostMessageContext* context,
|
||||||
|
PP_IsolatedFileSystemType_Private type);
|
||||||
|
+#if 0
|
||||||
|
int32_t OpenCrxFileSystem(ppapi::host::HostMessageContext* context);
|
||||||
|
+#endif
|
||||||
|
int32_t OpenPluginPrivateFileSystem(ppapi::host::HostMessageContext* context);
|
||||||
|
|
||||||
|
const int render_process_id_;
|
||||||
|
@@ -73,8 +79,10 @@ class PepperIsolatedFileSystemMessageFilter
|
||||||
|
// Not owned by this object.
|
||||||
|
ppapi::host::PpapiHost* ppapi_host_;
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
// Set of origins that can use CrxFs private APIs from NaCl.
|
||||||
|
std::set<std::string> allowed_crxfs_origins_;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(PepperIsolatedFileSystemMessageFilter);
|
||||||
|
};
|
||||||
|
diff --git a/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc b/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc
|
||||||
|
index d63e90b6c507..c98a7bd07ddd 100644
|
||||||
|
--- a/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc
|
||||||
|
+++ b/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc
|
||||||
|
@@ -10,8 +10,10 @@
|
||||||
|
#include "chrome/renderer/pepper/pepper_flash_fullscreen_host.h"
|
||||||
|
#include "chrome/renderer/pepper/pepper_flash_menu_host.h"
|
||||||
|
#include "chrome/renderer/pepper/pepper_flash_renderer_host.h"
|
||||||
|
+#if 0
|
||||||
|
#include "chrome/renderer/pepper/pepper_uma_host.h"
|
||||||
|
#include "components/pdf/renderer/pepper_pdf_host.h"
|
||||||
|
+#endif
|
||||||
|
#include "content/public/renderer/renderer_ppapi_host.h"
|
||||||
|
#include "ppapi/host/ppapi_host.h"
|
||||||
|
#include "ppapi/host/resource_host.h"
|
||||||
|
@@ -86,6 +88,7 @@ ChromeRendererPepperHostFactory::CreateResourceHost(
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
if (host_->GetPpapiHost()->permissions().HasPermission(
|
||||||
|
ppapi::PERMISSION_PDF)) {
|
||||||
|
switch (message.type()) {
|
||||||
|
@@ -104,6 +107,7 @@ ChromeRendererPepperHostFactory::CreateResourceHost(
|
||||||
|
return std::make_unique<PepperUMAHost>(host_, instance, resource);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
diff --git a/chrome/renderer/pepper/pepper_flash_renderer_host.cc b/chrome/renderer/pepper/pepper_flash_renderer_host.cc
|
||||||
|
index 66a532e2cb41..e776d0e96c4a 100644
|
||||||
|
--- a/chrome/renderer/pepper/pepper_flash_renderer_host.cc
|
||||||
|
+++ b/chrome/renderer/pepper/pepper_flash_renderer_host.cc
|
||||||
|
@@ -13,7 +13,9 @@
|
||||||
|
#include "base/macros.h"
|
||||||
|
#include "base/metrics/histogram_macros.h"
|
||||||
|
#include "base/strings/string_util.h"
|
||||||
|
+#if 0
|
||||||
|
#include "components/pdf/renderer/pepper_pdf_host.h"
|
||||||
|
+#endif
|
||||||
|
#include "content/public/renderer/pepper_plugin_instance.h"
|
||||||
|
#include "content/public/renderer/render_thread.h"
|
||||||
|
#include "content/public/renderer/renderer_ppapi_host.h"
|
||||||
|
@@ -130,9 +132,11 @@ bool IsSimpleHeader(const std::string& lower_case_header_name,
|
||||||
|
}
|
||||||
|
|
||||||
|
void RecordFlashNavigateUsage(FlashNavigateUsage usage) {
|
||||||
|
+#if 0
|
||||||
|
DCHECK_NE(FLASH_NAVIGATE_USAGE_ENUM_COUNT, usage);
|
||||||
|
UMA_HISTOGRAM_ENUMERATION(
|
||||||
|
"Plugin.FlashNavigateUsage", usage, FLASH_NAVIGATE_USAGE_ENUM_COUNT);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
@@ -374,6 +378,8 @@ int32_t PepperFlashRendererHost::OnIsRectTopmost(
|
||||||
|
|
||||||
|
int32_t PepperFlashRendererHost::OnInvokePrinting(
|
||||||
|
ppapi::host::HostMessageContext* host_context) {
|
||||||
|
+#if 0
|
||||||
|
pdf::PepperPDFHost::InvokePrintingForInstance(pp_instance());
|
||||||
|
- return PP_OK;
|
||||||
|
+#endif
|
||||||
|
+ return PP_ERROR_FAILED;
|
||||||
|
}
|
||||||
|
diff --git a/chrome/renderer/pepper/pepper_helper.h b/chrome/renderer/pepper/pepper_helper.h
|
||||||
|
index e021c964da3d..e035f0fb9e2b 100644
|
||||||
|
--- a/chrome/renderer/pepper/pepper_helper.h
|
||||||
|
+++ b/chrome/renderer/pepper/pepper_helper.h
|
||||||
|
@@ -6,12 +6,14 @@
|
||||||
|
#define CHROME_RENDERER_PEPPER_PEPPER_HELPER_H_
|
||||||
|
|
||||||
|
#include "base/compiler_specific.h"
|
||||||
|
+#include "base/component_export.h"
|
||||||
|
#include "base/macros.h"
|
||||||
|
#include "content/public/renderer/render_frame_observer.h"
|
||||||
|
|
||||||
|
// This class listens for Pepper creation events from the RenderFrame and
|
||||||
|
// attaches the parts required for Chrome-specific plugin support.
|
||||||
|
-class PepperHelper : public content::RenderFrameObserver {
|
||||||
|
+class COMPONENT_EXPORT(PEPPER_FLASH) PepperHelper
|
||||||
|
+ : public content::RenderFrameObserver {
|
||||||
|
public:
|
||||||
|
explicit PepperHelper(content::RenderFrame* render_frame);
|
||||||
|
~PepperHelper() override;
|
16
patches/common/chromium/protobuf_build_gn.patch
Normal file
16
patches/common/chromium/protobuf_build_gn.patch
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
diff --git a/BUILD.gn b/BUILD.gn
|
||||||
|
index 067416ed38f4..9fa07961c5b8 100644
|
||||||
|
--- a/third_party/protobuf/BUILD.gn
|
||||||
|
+++ b/third_party/protobuf/BUILD.gn
|
||||||
|
@@ -599,6 +599,11 @@ if (current_toolchain == host_toolchain) {
|
||||||
|
|
||||||
|
configs -= [ "//build/config/compiler:chromium_code" ]
|
||||||
|
configs += [ "//build/config/compiler:no_chromium_code" ]
|
||||||
|
+ if (is_win) {
|
||||||
|
+ # https://crbug.com/703251
|
||||||
|
+ configs -= [ "//build/config/win:default_incremental_linking" ]
|
||||||
|
+ configs += [ "//build/config/win:no_incremental_linking" ]
|
||||||
|
+ }
|
||||||
|
|
||||||
|
cflags = protobuf_lite_cflags
|
||||||
|
|
70
patches/common/chromium/render_widget_host_view_base.patch
Normal file
70
patches/common/chromium/render_widget_host_view_base.patch
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/content/browser/renderer_host/render_widget_host_view_base.cc
|
||||||
|
index 09a37c1a2c70..ff8c2db3fdae 100644
|
||||||
|
--- a/content/browser/renderer_host/render_widget_host_view_base.cc
|
||||||
|
+++ b/content/browser/renderer_host/render_widget_host_view_base.cc
|
||||||
|
@@ -399,6 +399,15 @@ viz::FrameSinkId RenderWidgetHostViewBase::FrameSinkIdAtPoint(
|
||||||
|
return frame_sink_id.is_valid() ? frame_sink_id : GetFrameSinkId();
|
||||||
|
}
|
||||||
|
|
||||||
|
+RenderWidgetHostViewBase* RenderWidgetHostViewBase::CreateViewForWidget(
|
||||||
|
+ RenderWidgetHost* render_widget_host,
|
||||||
|
+ RenderWidgetHost* embedder_render_widget_host,
|
||||||
|
+ WebContentsView* web_contents_view) {
|
||||||
|
+ return web_contents_view->CreateViewForWidget(
|
||||||
|
+ render_widget_host,
|
||||||
|
+ !!embedder_render_widget_host);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void RenderWidgetHostViewBase::ProcessMouseEvent(
|
||||||
|
const blink::WebMouseEvent& event,
|
||||||
|
const ui::LatencyInfo& latency) {
|
||||||
|
diff --git a/content/browser/renderer_host/render_widget_host_view_base.h b/content/browser/renderer_host/render_widget_host_view_base.h
|
||||||
|
index 8e391207a8a7..d3637c82aba9 100644
|
||||||
|
--- a/content/browser/renderer_host/render_widget_host_view_base.h
|
||||||
|
+++ b/content/browser/renderer_host/render_widget_host_view_base.h
|
||||||
|
@@ -21,8 +21,10 @@
|
||||||
|
#include "components/viz/common/surfaces/scoped_surface_id_allocator.h"
|
||||||
|
#include "components/viz/common/surfaces/surface_id.h"
|
||||||
|
#include "content/browser/renderer_host/event_with_latency_info.h"
|
||||||
|
+#include "content/browser/web_contents/web_contents_view.h"
|
||||||
|
#include "content/common/content_export.h"
|
||||||
|
#include "content/public/browser/render_frame_metadata_provider.h"
|
||||||
|
+#include "content/public/browser/render_widget_host.h"
|
||||||
|
#include "content/public/browser/render_widget_host_view.h"
|
||||||
|
#include "content/public/common/input_event_ack_state.h"
|
||||||
|
#include "content/public/common/screen_info.h"
|
||||||
|
@@ -79,10 +81,12 @@ class BrowserAccessibilityManager;
|
||||||
|
class CursorManager;
|
||||||
|
class RenderWidgetHostImpl;
|
||||||
|
class RenderWidgetHostViewBaseObserver;
|
||||||
|
+class RenderWidgetHostViewGuest;
|
||||||
|
class SyntheticGestureTarget;
|
||||||
|
class TextInputManager;
|
||||||
|
class TouchSelectionControllerClientManager;
|
||||||
|
class WebContentsAccessibility;
|
||||||
|
+class WebContentsView;
|
||||||
|
class WebCursor;
|
||||||
|
struct TextInputState;
|
||||||
|
|
||||||
|
@@ -124,6 +128,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView,
|
||||||
|
float GetDeviceScaleFactor() const final;
|
||||||
|
TouchSelectionControllerClientManager*
|
||||||
|
GetTouchSelectionControllerClientManager() override;
|
||||||
|
+
|
||||||
|
+ virtual void InitAsGuest(RenderWidgetHostView* parent_host_view,
|
||||||
|
+ RenderWidgetHostViewGuest* guest_view) {}
|
||||||
|
|
||||||
|
// This only needs to be overridden by RenderWidgetHostViewBase subclasses
|
||||||
|
// that handle content embedded within other RenderWidgetHostViews.
|
||||||
|
@@ -318,6 +325,11 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView,
|
||||||
|
virtual void ProcessGestureEvent(const blink::WebGestureEvent& event,
|
||||||
|
const ui::LatencyInfo& latency);
|
||||||
|
|
||||||
|
+ virtual RenderWidgetHostViewBase* CreateViewForWidget(
|
||||||
|
+ RenderWidgetHost* render_widget_host,
|
||||||
|
+ RenderWidgetHost* embedder_render_widget_host,
|
||||||
|
+ WebContentsView* web_contents_view);
|
||||||
|
+
|
||||||
|
// Transform a point that is in the coordinate space of a Surface that is
|
||||||
|
// embedded within the RenderWidgetHostViewBase's Surface to the
|
||||||
|
// coordinate space of an embedding, or embedded, Surface. Typically this
|
102
patches/common/chromium/render_widget_host_view_mac.patch
Normal file
102
patches/common/chromium/render_widget_host_view_mac.patch
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
|
||||||
|
index 6a161f0f36c6..349bc78976ad 100644
|
||||||
|
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
|
||||||
|
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
|
||||||
|
@@ -48,6 +48,7 @@
|
||||||
|
#include "ui/gfx/geometry/dip_util.h"
|
||||||
|
#include "ui/gfx/mac/coordinate_conversion.h"
|
||||||
|
#include "ui/gl/gl_switches.h"
|
||||||
|
+#include "ui/gl/gpu_switching_manager.h"
|
||||||
|
|
||||||
|
using blink::WebInputEvent;
|
||||||
|
using blink::WebMouseEvent;
|
||||||
|
@@ -1112,6 +1113,12 @@ void RenderWidgetHostViewMac::SetBackgroundColor(SkColor color) {
|
||||||
|
DCHECK(SkColorGetA(color) == SK_AlphaOPAQUE ||
|
||||||
|
SkColorGetA(color) == SK_AlphaTRANSPARENT);
|
||||||
|
bool opaque = SkColorGetA(color) == SK_AlphaOPAQUE;
|
||||||
|
+ if (opaque) {
|
||||||
|
+ bool wantsTransparent = ui::GpuSwitchingManager::UseTransparent() ||
|
||||||
|
+ ([cocoa_view() window] && ![[cocoa_view() window] isOpaque]);
|
||||||
|
+ if (wantsTransparent)
|
||||||
|
+ opaque = NO;
|
||||||
|
+ }
|
||||||
|
if (background_is_opaque_ != opaque) {
|
||||||
|
background_is_opaque_ = opaque;
|
||||||
|
if (host())
|
||||||
|
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 c7ad6fa8c75f..bdfabc1061bb 100644
|
||||||
|
--- a/content/browser/renderer_host/render_widget_host_view_cocoa.mm
|
||||||
|
+++ b/content/browser/renderer_host/render_widget_host_view_cocoa.mm
|
||||||
|
@@ -178,6 +178,11 @@ void ExtractUnderlines(NSAttributedString* string,
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
+@interface NSWindow (AtomCustomMethods)
|
||||||
|
+- (BOOL)acceptsFirstMouse;
|
||||||
|
+- (BOOL)disableAutoHideCursor;
|
||||||
|
+@end
|
||||||
|
+
|
||||||
|
// These are not documented, so use only after checking -respondsToSelector:.
|
||||||
|
@interface NSApplication (UndocumentedSpeechMethods)
|
||||||
|
- (void)speakString:(NSString*)string;
|
||||||
|
@@ -355,6 +360,9 @@ void ExtractUnderlines(NSAttributedString* string,
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)acceptsFirstMouse:(NSEvent*)theEvent {
|
||||||
|
+ if ([self.window respondsToSelector:@selector(acceptsFirstMouse)] &&
|
||||||
|
+ [self.window acceptsFirstMouse])
|
||||||
|
+ return YES;
|
||||||
|
return [self acceptsMouseEventsWhenInactive];
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -555,6 +563,7 @@ void ExtractUnderlines(NSAttributedString* string,
|
||||||
|
if (EventIsReservedBySystem(theEvent))
|
||||||
|
return NO;
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
// If we return |NO| from this function, cocoa will send the key event to
|
||||||
|
// the menu and only if the menu does not process the event to |keyDown:|. We
|
||||||
|
// want to send the event to a renderer _before_ sending it to the menu, so
|
||||||
|
@@ -568,6 +577,7 @@ void ExtractUnderlines(NSAttributedString* string,
|
||||||
|
DCHECK(![[NSApp mainMenu] performKeyEquivalent:theEvent]);
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
// Command key combinations are sent via performKeyEquivalent rather than
|
||||||
|
// keyDown:. We just forward this on and if WebCore doesn't want to handle
|
||||||
|
@@ -664,6 +674,10 @@ void ExtractUnderlines(NSAttributedString* string,
|
||||||
|
eventType == NSKeyDown &&
|
||||||
|
!(modifierFlags & NSCommandKeyMask);
|
||||||
|
|
||||||
|
+ if ([theEvent.window respondsToSelector:@selector(disableAutoHideCursor)] &&
|
||||||
|
+ [theEvent.window disableAutoHideCursor])
|
||||||
|
+ shouldAutohideCursor = NO;
|
||||||
|
+
|
||||||
|
// We only handle key down events and just simply forward other events.
|
||||||
|
if (eventType != NSKeyDown) {
|
||||||
|
client_->OnNSViewForwardKeyboardEvent(event, latency_info);
|
||||||
|
@@ -1425,9 +1439,11 @@ void ExtractUnderlines(NSAttributedString* string,
|
||||||
|
// Since this implementation doesn't have to wait any IPC calls, this doesn't
|
||||||
|
// make any key-typing jank. --hbono 7/23/09
|
||||||
|
//
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
extern "C" {
|
||||||
|
extern NSString* NSTextInputReplacementRangeAttributeName;
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
- (NSArray*)validAttributesForMarkedText {
|
||||||
|
// This code is just copied from WebKit except renaming variables.
|
||||||
|
@@ -1436,7 +1452,10 @@ extern NSString* NSTextInputReplacementRangeAttributeName;
|
||||||
|
initWithObjects:NSUnderlineStyleAttributeName,
|
||||||
|
NSUnderlineColorAttributeName,
|
||||||
|
NSMarkedClauseSegmentAttributeName,
|
||||||
|
- NSTextInputReplacementRangeAttributeName, nil]);
|
||||||
|
+#ifndef MAS_BUILD
|
||||||
|
+ NSTextInputReplacementRangeAttributeName,
|
||||||
|
+#endif
|
||||||
|
+ nil]);
|
||||||
|
}
|
||||||
|
return validAttributesForMarkedText_.get();
|
||||||
|
}
|
24
patches/common/chromium/resource_file_conflict.patch
Normal file
24
patches/common/chromium/resource_file_conflict.patch
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn
|
||||||
|
index fbcf20c..d2173e2 100644
|
||||||
|
--- a/chrome/BUILD.gn
|
||||||
|
+++ b/chrome/BUILD.gn
|
||||||
|
@@ -1656,6 +1656,11 @@ if (is_chrome_branded && !is_android) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+if (is_electron_gn_build) {
|
||||||
|
+ group("packed_resources") {
|
||||||
|
+ public_deps = [ "//electron:packed_resources" ]
|
||||||
|
+ }
|
||||||
|
+} else {
|
||||||
|
chrome_paks("packed_resources") {
|
||||||
|
if (is_mac) {
|
||||||
|
output_dir = "$root_gen_dir/repack"
|
||||||
|
@@ -1677,6 +1682,7 @@ chrome_paks("packed_resources") {
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+}
|
||||||
|
|
||||||
|
repack("browser_tests_pak") {
|
||||||
|
sources = [
|
57
patches/common/chromium/scoped_clipboard_writer.patch
Normal file
57
patches/common/chromium/scoped_clipboard_writer.patch
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
diff --git a/ui/base/clipboard/scoped_clipboard_writer.cc b/ui/base/clipboard/scoped_clipboard_writer.cc
|
||||||
|
index 6850cd460b1d..6d652cca59b4 100644
|
||||||
|
--- a/ui/base/clipboard/scoped_clipboard_writer.cc
|
||||||
|
+++ b/ui/base/clipboard/scoped_clipboard_writer.cc
|
||||||
|
@@ -102,17 +102,16 @@ void ScopedClipboardWriter::WriteImage(const SkBitmap& bitmap) {
|
||||||
|
objects_[Clipboard::CBF_SMBITMAP] = parameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
-void ScopedClipboardWriter::WritePickledData(
|
||||||
|
- const base::Pickle& pickle,
|
||||||
|
- const Clipboard::FormatType& format) {
|
||||||
|
+void ScopedClipboardWriter::WriteData(const char* data,
|
||||||
|
+ int size,
|
||||||
|
+ const Clipboard::FormatType& format) {
|
||||||
|
std::string format_string = format.Serialize();
|
||||||
|
Clipboard::ObjectMapParam format_parameter(format_string.begin(),
|
||||||
|
format_string.end());
|
||||||
|
Clipboard::ObjectMapParam data_parameter;
|
||||||
|
|
||||||
|
- data_parameter.resize(pickle.size());
|
||||||
|
- memcpy(const_cast<char*>(&data_parameter.front()),
|
||||||
|
- pickle.data(), pickle.size());
|
||||||
|
+ data_parameter.resize(size);
|
||||||
|
+ memcpy(const_cast<char*>(&data_parameter.front()), data, size);
|
||||||
|
|
||||||
|
Clipboard::ObjectMapParams parameters;
|
||||||
|
parameters.push_back(format_parameter);
|
||||||
|
@@ -121,6 +121,13 @@ void ScopedClipboardWriter::WritePickledData(
|
||||||
|
objects_[Clipboard::CBF_DATA] = parameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
+void ScopedClipboardWriter::WritePickledData(
|
||||||
|
+ const base::Pickle& pickle,
|
||||||
|
+ const Clipboard::FormatType& format) {
|
||||||
|
+ WriteData(reinterpret_cast<const char*>(pickle.data()), pickle.size(),
|
||||||
|
+ format);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void ScopedClipboardWriter::Reset() {
|
||||||
|
objects_.clear();
|
||||||
|
bitmap_.reset();
|
||||||
|
diff --git a/ui/base/clipboard/scoped_clipboard_writer.h b/ui/base/clipboard/scoped_clipboard_writer.h
|
||||||
|
index a7e064561ca9..d5a1b76bc6a7 100644
|
||||||
|
--- a/ui/base/clipboard/scoped_clipboard_writer.h
|
||||||
|
+++ b/ui/base/clipboard/scoped_clipboard_writer.h
|
||||||
|
@@ -61,6 +61,11 @@ class UI_BASE_EXPORT ScopedClipboardWriter {
|
||||||
|
// Used by WebKit to determine whether WebKit wrote the clipboard last
|
||||||
|
void WriteWebSmartPaste();
|
||||||
|
|
||||||
|
+ // Adds arbitrary data to clipboard.
|
||||||
|
+ void WriteData(const char* data,
|
||||||
|
+ int size,
|
||||||
|
+ const Clipboard::FormatType& format);
|
||||||
|
+
|
||||||
|
// Adds arbitrary pickled data to clipboard.
|
||||||
|
void WritePickledData(const base::Pickle& pickle,
|
||||||
|
const Clipboard::FormatType& format);
|
13
patches/common/chromium/scroll_bounce_flag.patch
Normal file
13
patches/common/chromium/scroll_bounce_flag.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
|
||||||
|
index 81d3f80..a8c4a57 100644
|
||||||
|
--- a/content/renderer/render_thread_impl.cc
|
||||||
|
+++ b/content/renderer/render_thread_impl.cc
|
||||||
|
@@ -1737,7 +1737,7 @@ bool RenderThreadImpl::IsGpuMemoryBufferCompositorResourcesEnabled() {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RenderThreadImpl::IsElasticOverscrollEnabled() {
|
||||||
|
- return is_elastic_overscroll_enabled_;
|
||||||
|
+ return base::CommandLine::ForCurrentProcess()->HasSwitch("scroll-bounce");
|
||||||
|
}
|
||||||
|
|
||||||
|
scoped_refptr<base::SingleThreadTaskRunner>
|
91
patches/common/chromium/ssl_security_state_tab_helper.patch
Normal file
91
patches/common/chromium/ssl_security_state_tab_helper.patch
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
diff --git a/chrome/browser/ssl/security_state_tab_helper.cc b/chrome/browser/ssl/security_state_tab_helper.cc
|
||||||
|
index a73442a5476c..6cd7ae78b814 100644
|
||||||
|
--- a/chrome/browser/ssl/security_state_tab_helper.cc
|
||||||
|
+++ b/chrome/browser/ssl/security_state_tab_helper.cc
|
||||||
|
@@ -10,15 +10,21 @@
|
||||||
|
#include "base/metrics/histogram_macros.h"
|
||||||
|
#include "base/time/time.h"
|
||||||
|
#include "build/build_config.h"
|
||||||
|
+#if 0
|
||||||
|
#include "chrome/browser/browser_process.h"
|
||||||
|
#include "chrome/browser/profiles/profile.h"
|
||||||
|
#include "chrome/browser/safe_browsing/safe_browsing_service.h"
|
||||||
|
#include "chrome/browser/safe_browsing/ui_manager.h"
|
||||||
|
+#endif
|
||||||
|
#include "components/prefs/pref_service.h"
|
||||||
|
+#if 0
|
||||||
|
#include "components/safe_browsing/features.h"
|
||||||
|
+#endif
|
||||||
|
#include "components/security_state/content/content_utils.h"
|
||||||
|
#include "components/ssl_config/ssl_config_prefs.h"
|
||||||
|
+#if 0
|
||||||
|
#include "components/toolbar/toolbar_field_trial.h"
|
||||||
|
+#endif
|
||||||
|
#include "content/public/browser/browser_context.h"
|
||||||
|
#include "content/public/browser/navigation_entry.h"
|
||||||
|
#include "content/public/browser/navigation_handle.h"
|
||||||
|
@@ -37,7 +43,7 @@
|
||||||
|
#include "chrome/browser/chromeos/policy/policy_cert_service_factory.h"
|
||||||
|
#endif // defined(OS_CHROMEOS)
|
||||||
|
|
||||||
|
-#if defined(SAFE_BROWSING_DB_LOCAL)
|
||||||
|
+#if 0
|
||||||
|
#include "chrome/browser/safe_browsing/chrome_password_protection_service.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -59,7 +65,9 @@ void RecordSecurityLevel(const security_state::SecurityInfo& security_info) {
|
||||||
|
|
||||||
|
DEFINE_WEB_CONTENTS_USER_DATA_KEY(SecurityStateTabHelper);
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
using safe_browsing::SafeBrowsingUIManager;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
SecurityStateTabHelper::SecurityStateTabHelper(
|
||||||
|
content::WebContents* web_contents)
|
||||||
|
@@ -67,8 +75,11 @@ SecurityStateTabHelper::SecurityStateTabHelper(
|
||||||
|
logged_http_warning_on_current_navigation_(false),
|
||||||
|
is_incognito_(false) {
|
||||||
|
content::BrowserContext* context = web_contents->GetBrowserContext();
|
||||||
|
- if (context->IsOffTheRecord() &&
|
||||||
|
- !Profile::FromBrowserContext(context)->IsGuestSession()) {
|
||||||
|
+ if (context->IsOffTheRecord()
|
||||||
|
+#if 0
|
||||||
|
+ && !Profile::FromBrowserContext(context)->IsGuestSession()
|
||||||
|
+#endif
|
||||||
|
+ ) {
|
||||||
|
is_incognito_ = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -150,6 +161,7 @@ void SecurityStateTabHelper::DidFinishNavigation(
|
||||||
|
UMA_HISTOGRAM_BOOLEAN("interstitial.ssl.visited_site_after_warning", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
// Security indicator UI study (https://crbug.com/803501): Show a message in
|
||||||
|
// the console to reduce developer confusion about the experimental UI
|
||||||
|
// treatments for HTTPS pages with EV certificates.
|
||||||
|
@@ -177,6 +189,7 @@ void SecurityStateTabHelper::DidFinishNavigation(
|
||||||
|
"Validation is still valid.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void SecurityStateTabHelper::DidChangeVisibleSecurityState() {
|
||||||
|
@@ -250,6 +263,7 @@ SecurityStateTabHelper::GetMaliciousContentStatus() const {
|
||||||
|
web_contents()->GetController().GetVisibleEntry();
|
||||||
|
if (!entry)
|
||||||
|
return security_state::MALICIOUS_CONTENT_STATUS_NONE;
|
||||||
|
+#if 0
|
||||||
|
safe_browsing::SafeBrowsingService* sb_service =
|
||||||
|
g_browser_process->safe_browsing_service();
|
||||||
|
if (!sb_service)
|
||||||
|
@@ -301,6 +315,7 @@ SecurityStateTabHelper::GetMaliciousContentStatus() const {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
return security_state::MALICIOUS_CONTENT_STATUS_NONE;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
diff --git a/services/device/wake_lock/power_save_blocker/BUILD.gn b/services/device/wake_lock/power_save_blocker/BUILD.gn
|
||||||
|
index e04629ca1a93..299e6efd75f9 100644
|
||||||
|
--- a/services/device/wake_lock/power_save_blocker/BUILD.gn
|
||||||
|
+++ b/services/device/wake_lock/power_save_blocker/BUILD.gn
|
||||||
|
@@ -9,7 +9,7 @@ if (is_android) {
|
||||||
|
import("//build/config/android/rules.gni")
|
||||||
|
}
|
||||||
|
|
||||||
|
-source_set("power_save_blocker") {
|
||||||
|
+static_library("power_save_blocker") {
|
||||||
|
visibility = [
|
||||||
|
# //remoting runs in a separate process which is outside of the context of
|
||||||
|
# the ServiceManager-based world. Instead of embedding a Service Manager
|
||||||
|
@@ -18,6 +18,7 @@ source_set("power_save_blocker") {
|
||||||
|
"//remoting/host:*",
|
||||||
|
"//remoting/host/win:*",
|
||||||
|
"//services/device/wake_lock:*",
|
||||||
|
+ "//electron:*",
|
||||||
|
]
|
||||||
|
|
||||||
|
sources = [
|
21
patches/common/chromium/stream_resource_handler.patch
Normal file
21
patches/common/chromium/stream_resource_handler.patch
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
diff --git a/content/browser/loader/stream_resource_handler.h b/content/browser/loader/stream_resource_handler.h
|
||||||
|
index 9f69994..ae8d1630 100644
|
||||||
|
--- a/content/browser/loader/stream_resource_handler.h
|
||||||
|
+++ b/content/browser/loader/stream_resource_handler.h
|
||||||
|
@@ -11,6 +11,7 @@
|
||||||
|
#include "base/memory/ref_counted.h"
|
||||||
|
#include "content/browser/loader/resource_handler.h"
|
||||||
|
#include "content/browser/loader/stream_writer.h"
|
||||||
|
+#include "content/common/content_export.h"
|
||||||
|
|
||||||
|
namespace net {
|
||||||
|
class URLRequest;
|
||||||
|
@@ -22,7 +23,7 @@ class ResourceController;
|
||||||
|
class StreamRegistry;
|
||||||
|
|
||||||
|
// Redirect this resource to a stream.
|
||||||
|
-class StreamResourceHandler : public ResourceHandler {
|
||||||
|
+class CONTENT_EXPORT StreamResourceHandler : public ResourceHandler {
|
||||||
|
public:
|
||||||
|
// |origin| will be used to construct the URL for the Stream. See
|
||||||
|
// WebCore::BlobURL and and WebCore::SecurityOrigin in Blink to understand
|
126
patches/common/chromium/sysroot.patch
Normal file
126
patches/common/chromium/sysroot.patch
Normal file
|
@ -0,0 +1,126 @@
|
||||||
|
diff --git a/build/config/sysroot.gni b/build/config/sysroot.gni
|
||||||
|
index d5daf2df2e41..46999e2e2198 100644
|
||||||
|
--- a/build/config/sysroot.gni
|
||||||
|
+++ b/build/config/sysroot.gni
|
||||||
|
@@ -32,17 +32,17 @@ if (current_os == target_os && current_cpu == target_cpu &&
|
||||||
|
# By default build against a sysroot image downloaded from Cloud Storage
|
||||||
|
# during gclient runhooks.
|
||||||
|
if (current_cpu == "x64") {
|
||||||
|
- sysroot = "$target_sysroot_dir/debian_sid_amd64-sysroot"
|
||||||
|
+ sysroot = "$target_sysroot_dir/debian_stretch_amd64-sysroot"
|
||||||
|
} else if (current_cpu == "x86") {
|
||||||
|
- sysroot = "$target_sysroot_dir/debian_sid_i386-sysroot"
|
||||||
|
+ sysroot = "$target_sysroot_dir/debian_stretch_i386-sysroot"
|
||||||
|
} else if (current_cpu == "mipsel") {
|
||||||
|
- sysroot = "$target_sysroot_dir/debian_sid_mips-sysroot"
|
||||||
|
+ sysroot = "$target_sysroot_dir/debian_stretch_mips-sysroot"
|
||||||
|
} else if (current_cpu == "mips64el") {
|
||||||
|
- sysroot = "$target_sysroot_dir/debian_sid_mips64el-sysroot"
|
||||||
|
+ sysroot = "$target_sysroot_dir/debian_stretch_mips64el-sysroot"
|
||||||
|
} else if (current_cpu == "arm") {
|
||||||
|
- sysroot = "$target_sysroot_dir/debian_sid_arm-sysroot"
|
||||||
|
+ sysroot = "$target_sysroot_dir/debian_stretch_arm-sysroot"
|
||||||
|
} else if (current_cpu == "arm64") {
|
||||||
|
- sysroot = "$target_sysroot_dir/debian_sid_arm64-sysroot"
|
||||||
|
+ sysroot = "$target_sysroot_dir/debian_stretch_arm64-sysroot"
|
||||||
|
} else {
|
||||||
|
assert(false, "No linux sysroot for cpu: $target_cpu")
|
||||||
|
}
|
||||||
|
diff --git a/build/linux/sysroot_scripts/install-sysroot.py b/build/linux/sysroot_scripts/install-sysroot.py
|
||||||
|
index 58f09950d844..53500a0853a6 100755
|
||||||
|
--- a/build/linux/sysroot_scripts/install-sysroot.py
|
||||||
|
+++ b/build/linux/sysroot_scripts/install-sysroot.py
|
||||||
|
@@ -31,8 +31,8 @@ import urllib2
|
||||||
|
|
||||||
|
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
-URL_PREFIX = 'https://commondatastorage.googleapis.com'
|
||||||
|
-URL_PATH = 'chrome-linux-sysroot/toolchain'
|
||||||
|
+URL_PREFIX = 'http://s3.amazonaws.com'
|
||||||
|
+URL_PATH = 'gh-contractor-zcbenz/toolchain'
|
||||||
|
|
||||||
|
VALID_ARCHS = ('arm', 'arm64', 'i386', 'amd64', 'mips', 'mips64el')
|
||||||
|
|
||||||
|
@@ -43,7 +43,7 @@ ARCH_TRANSLATIONS = {
|
||||||
|
'mips64': 'mips64el',
|
||||||
|
}
|
||||||
|
|
||||||
|
-DEFAULT_TARGET_PLATFORM = 'sid'
|
||||||
|
+DEFAULT_TARGET_PLATFORM = 'stretch'
|
||||||
|
|
||||||
|
class Error(Exception):
|
||||||
|
pass
|
||||||
|
diff --git a/build/linux/sysroot_scripts/sysroots.json b/build/linux/sysroot_scripts/sysroots.json
|
||||||
|
index 48a1d36f0609..91ef1417a1bf 100644
|
||||||
|
--- a/build/linux/sysroot_scripts/sysroots.json
|
||||||
|
+++ b/build/linux/sysroot_scripts/sysroots.json
|
||||||
|
@@ -1,38 +1,38 @@
|
||||||
|
{
|
||||||
|
- "sid_amd64": {
|
||||||
|
- "Revision": "15b7efb900d75f7316c6e713e80f87b9904791b1",
|
||||||
|
- "Sha1Sum": "85ac8d5e0f6cff99fc323fd3d29cb73e2aa970e2",
|
||||||
|
- "SysrootDir": "debian_sid_amd64-sysroot",
|
||||||
|
- "Tarball": "debian_sid_amd64_sysroot.tar.xz"
|
||||||
|
+ "stretch_amd64": {
|
||||||
|
+ "Revision": "02772eaba5440a79c6bd2d9cb7e42fa836950366",
|
||||||
|
+ "Sha1Sum": "69457fddca3500e2dde124f77f8382b0a18d765e",
|
||||||
|
+ "SysrootDir": "debian_stretch_amd64-sysroot",
|
||||||
|
+ "Tarball": "debian_stretch_amd64_sysroot.tgz"
|
||||||
|
},
|
||||||
|
- "sid_arm": {
|
||||||
|
- "Revision": "15b7efb900d75f7316c6e713e80f87b9904791b1",
|
||||||
|
- "Sha1Sum": "ed31924757f11885a21793dc4b928d07ab25740c",
|
||||||
|
- "SysrootDir": "debian_sid_arm-sysroot",
|
||||||
|
- "Tarball": "debian_sid_arm_sysroot.tar.xz"
|
||||||
|
+ "stretch_arm": {
|
||||||
|
+ "Revision": "02772eaba5440a79c6bd2d9cb7e42fa836950366",
|
||||||
|
+ "Sha1Sum": "3e880f69177992ce02b05deeac619f7591b30287",
|
||||||
|
+ "SysrootDir": "debian_stretch_arm-sysroot",
|
||||||
|
+ "Tarball": "debian_stretch_arm_sysroot.tgz"
|
||||||
|
},
|
||||||
|
- "sid_arm64": {
|
||||||
|
- "Revision": "15b7efb900d75f7316c6e713e80f87b9904791b1",
|
||||||
|
- "Sha1Sum": "b9447285e58c5260bd9fa2737d1f0d1f82156738",
|
||||||
|
- "SysrootDir": "debian_sid_arm64-sysroot",
|
||||||
|
- "Tarball": "debian_sid_arm64_sysroot.tar.xz"
|
||||||
|
+ "stretch_arm64": {
|
||||||
|
+ "Revision": "02772eaba5440a79c6bd2d9cb7e42fa836950366",
|
||||||
|
+ "Sha1Sum": "8fd58c7d4b38fa3c6785573c6310cf6ca6c88312",
|
||||||
|
+ "SysrootDir": "debian_stretch_arm64-sysroot",
|
||||||
|
+ "Tarball": "debian_stretch_arm64_sysroot.tgz"
|
||||||
|
},
|
||||||
|
- "sid_i386": {
|
||||||
|
- "Revision": "15b7efb900d75f7316c6e713e80f87b9904791b1",
|
||||||
|
- "Sha1Sum": "f09856d93f39e8df84ffd9c04881f44e6cbc0508",
|
||||||
|
- "SysrootDir": "debian_sid_i386-sysroot",
|
||||||
|
- "Tarball": "debian_sid_i386_sysroot.tar.xz"
|
||||||
|
+ "stretch_i386": {
|
||||||
|
+ "Revision": "02772eaba5440a79c6bd2d9cb7e42fa836950366",
|
||||||
|
+ "Sha1Sum": "1bd14db5eb0466064659126d398b38220013fb38",
|
||||||
|
+ "SysrootDir": "debian_stretch_i386-sysroot",
|
||||||
|
+ "Tarball": "debian_stretch_i386_sysroot.tgz"
|
||||||
|
},
|
||||||
|
- "sid_mips": {
|
||||||
|
- "Revision": "15b7efb900d75f7316c6e713e80f87b9904791b1",
|
||||||
|
- "Sha1Sum": "90586b566b567b2bcf49e7fd112f0c8189bbd07b",
|
||||||
|
- "SysrootDir": "debian_sid_mips-sysroot",
|
||||||
|
- "Tarball": "debian_sid_mips_sysroot.tar.xz"
|
||||||
|
+ "stretch_mips": {
|
||||||
|
+ "Revision": "02772eaba5440a79c6bd2d9cb7e42fa836950366",
|
||||||
|
+ "Sha1Sum": "285751660ffab14e6d052c8ddb5c90752a51704d",
|
||||||
|
+ "SysrootDir": "debian_stretch_mips-sysroot",
|
||||||
|
+ "Tarball": "debian_stretch_mips_sysroot.tgz"
|
||||||
|
},
|
||||||
|
- "sid_mips64el": {
|
||||||
|
- "Revision": "15b7efb900d75f7316c6e713e80f87b9904791b1",
|
||||||
|
- "Sha1Sum": "f90c3b81485ffebb283afddb1a72bc61e14c593d",
|
||||||
|
- "SysrootDir": "debian_sid_mips64el-sysroot",
|
||||||
|
- "Tarball": "debian_sid_mips64el_sysroot.tar.xz"
|
||||||
|
- }
|
||||||
|
+ "stretch_mips64el": {
|
||||||
|
+ "Revision": "02772eaba5440a79c6bd2d9cb7e42fa836950366",
|
||||||
|
+ "Sha1Sum": "23f51f29bc35a550092dde41dc823780fdb50f9e",
|
||||||
|
+ "SysrootDir": "debian_stretch_mips64el-sysroot",
|
||||||
|
+ "Tarball": "debian_stretch_mips64el_sysroot.tgz"
|
||||||
|
+ }
|
||||||
|
}
|
15
patches/common/chromium/thread_capabilities.patch
Normal file
15
patches/common/chromium/thread_capabilities.patch
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
diff --git a/sandbox/linux/services/credentials.cc b/sandbox/linux/services/credentials.cc
|
||||||
|
index 50a109e..3ee9159 100644
|
||||||
|
--- a/sandbox/linux/services/credentials.cc
|
||||||
|
+++ b/sandbox/linux/services/credentials.cc
|
||||||
|
@@ -358,8 +358,10 @@ pid_t Credentials::ForkAndDropCapabilitiesInChild() {
|
||||||
|
return pid;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if 0
|
||||||
|
// Since we just forked, we are single threaded.
|
||||||
|
PCHECK(DropAllCapabilitiesOnCurrentThread());
|
||||||
|
+#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
48
patches/common/chromium/use_transparent_window.patch
Normal file
48
patches/common/chromium/use_transparent_window.patch
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
diff --git a/ui/gl/gpu_switching_manager.cc b/ui/gl/gpu_switching_manager.cc
|
||||||
|
index be7156465809..cee3b1af3dc5 100644
|
||||||
|
--- a/ui/gl/gpu_switching_manager.cc
|
||||||
|
+++ b/ui/gl/gpu_switching_manager.cc
|
||||||
|
@@ -4,6 +4,12 @@
|
||||||
|
|
||||||
|
#include "ui/gl/gpu_switching_manager.h"
|
||||||
|
|
||||||
|
+namespace {
|
||||||
|
+
|
||||||
|
+bool g_use_transparent = false;
|
||||||
|
+
|
||||||
|
+} // namespace
|
||||||
|
+
|
||||||
|
namespace ui {
|
||||||
|
|
||||||
|
// static
|
||||||
|
@@ -11,6 +17,16 @@ GpuSwitchingManager* GpuSwitchingManager::GetInstance() {
|
||||||
|
return base::Singleton<GpuSwitchingManager>::get();
|
||||||
|
}
|
||||||
|
|
||||||
|
+// static
|
||||||
|
+void GpuSwitchingManager::SetTransparent(bool transparent) {
|
||||||
|
+ g_use_transparent = transparent;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+// static
|
||||||
|
+bool GpuSwitchingManager::UseTransparent() {
|
||||||
|
+ return g_use_transparent;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
GpuSwitchingManager::GpuSwitchingManager() {}
|
||||||
|
|
||||||
|
GpuSwitchingManager::~GpuSwitchingManager() {}
|
||||||
|
diff --git a/ui/gl/gpu_switching_manager.h b/ui/gl/gpu_switching_manager.h
|
||||||
|
index 4308bbed9398..a7cafcfccdff 100644
|
||||||
|
--- a/ui/gl/gpu_switching_manager.h
|
||||||
|
+++ b/ui/gl/gpu_switching_manager.h
|
||||||
|
@@ -18,6 +18,9 @@ class GL_EXPORT GpuSwitchingManager {
|
||||||
|
// Getter for the singleton. This will return NULL on failure.
|
||||||
|
static GpuSwitchingManager* GetInstance();
|
||||||
|
|
||||||
|
+ static void SetTransparent(bool transparent);
|
||||||
|
+ static bool UseTransparent();
|
||||||
|
+
|
||||||
|
void AddObserver(GpuSwitchingObserver* observer);
|
||||||
|
void RemoveObserver(GpuSwitchingObserver* observer);
|
||||||
|
|
12
patches/common/chromium/v8_context_snapshot_generator.patch
Normal file
12
patches/common/chromium/v8_context_snapshot_generator.patch
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
diff --git a/tools/v8_context_snapshot/BUILD.gn b/tools/v8_context_snapshot/BUILD.gn
|
||||||
|
index d6691a527f25..000105b86f53 100644
|
||||||
|
--- a/tools/v8_context_snapshot/BUILD.gn
|
||||||
|
+++ b/tools/v8_context_snapshot/BUILD.gn
|
||||||
|
@@ -105,6 +105,7 @@ if (use_v8_context_snapshot) {
|
||||||
|
configs += [
|
||||||
|
"//v8:external_startup_data",
|
||||||
|
":disable_icf",
|
||||||
|
+ "//electron/build/config:build_time_executable"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
115
patches/common/chromium/web_contents.patch
Normal file
115
patches/common/chromium/web_contents.patch
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
|
||||||
|
index 018534073da1..48f3d0e7343b 100644
|
||||||
|
--- a/content/browser/web_contents/web_contents_impl.cc
|
||||||
|
+++ b/content/browser/web_contents/web_contents_impl.cc
|
||||||
|
@@ -1759,6 +1759,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
|
||||||
|
std::string unique_name;
|
||||||
|
frame_tree_.root()->SetFrameName(params.main_frame_name, unique_name);
|
||||||
|
|
||||||
|
+ if (params.view && params.delegate_view) {
|
||||||
|
+ view_.reset(params.view);
|
||||||
|
+ render_view_host_delegate_view_ = params.delegate_view;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!view_) {
|
||||||
|
WebContentsViewDelegate* delegate =
|
||||||
|
GetContentClient()->browser()->GetWebContentsViewDelegate(this);
|
||||||
|
|
||||||
|
@@ -1774,6 +1780,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) {
|
||||||
|
&render_view_host_delegate_view_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ } // !view_
|
||||||
|
CHECK(render_view_host_delegate_view_);
|
||||||
|
CHECK(view_.get());
|
||||||
|
|
||||||
|
diff --git a/content/browser/web_contents/web_contents_view_guest.cc b/content/browser/web_contents/web_contents_view_guest.cc
|
||||||
|
index 699570cc1390..454830098cb9 100644
|
||||||
|
--- a/content/browser/web_contents/web_contents_view_guest.cc
|
||||||
|
+++ b/content/browser/web_contents/web_contents_view_guest.cc
|
||||||
|
@@ -67,21 +67,27 @@ gfx::NativeWindow WebContentsViewGuest::GetTopLevelNativeWindow() const {
|
||||||
|
|
||||||
|
void WebContentsViewGuest::OnGuestAttached(WebContentsView* parent_view) {
|
||||||
|
#if defined(USE_AURA)
|
||||||
|
+ if (!platform_view_->GetNativeView())
|
||||||
|
+ return;
|
||||||
|
// In aura, ScreenPositionClient doesn't work properly if we do
|
||||||
|
// not have the native view associated with this WebContentsViewGuest in the
|
||||||
|
// view hierarchy. We add this view as embedder's child here.
|
||||||
|
// This would go in WebContentsViewGuest::CreateView, but that is too early to
|
||||||
|
// access embedder_web_contents(). Therefore, we do it here.
|
||||||
|
if (!base::FeatureList::IsEnabled(features::kMash))
|
||||||
|
- parent_view->GetNativeView()->AddChild(platform_view_->GetNativeView());
|
||||||
|
+ if (parent_view->GetNativeView() != platform_view_->GetNativeView())
|
||||||
|
+ parent_view->GetNativeView()->AddChild(platform_view_->GetNativeView());
|
||||||
|
#endif // defined(USE_AURA)
|
||||||
|
}
|
||||||
|
|
||||||
|
void WebContentsViewGuest::OnGuestDetached(WebContentsView* old_parent_view) {
|
||||||
|
#if defined(USE_AURA)
|
||||||
|
+ if (!platform_view_->GetNativeView())
|
||||||
|
+ return;
|
||||||
|
if (!base::FeatureList::IsEnabled(features::kMash)) {
|
||||||
|
- old_parent_view->GetNativeView()->RemoveChild(
|
||||||
|
- platform_view_->GetNativeView());
|
||||||
|
+ if (old_parent_view->GetNativeView() != platform_view_->GetNativeView())
|
||||||
|
+ old_parent_view->GetNativeView()->RemoveChild(
|
||||||
|
+ platform_view_->GetNativeView());
|
||||||
|
}
|
||||||
|
#endif // defined(USE_AURA)
|
||||||
|
}
|
||||||
|
@@ -146,11 +152,22 @@ RenderWidgetHostViewBase* WebContentsViewGuest::CreateViewForWidget(
|
||||||
|
render_widget_host->GetView());
|
||||||
|
}
|
||||||
|
|
||||||
|
+ RenderWidgetHost* embedder_render_widget_host =
|
||||||
|
+ guest_->embedder_web_contents()->GetRenderViewHost()->GetWidget();
|
||||||
|
+ RenderWidgetHostViewBase* embedder_render_widget_host_view =
|
||||||
|
+ static_cast<RenderWidgetHostViewBase*>(
|
||||||
|
+ embedder_render_widget_host->GetView());
|
||||||
|
RenderWidgetHostViewBase* platform_widget =
|
||||||
|
- platform_view_->CreateViewForWidget(render_widget_host, true);
|
||||||
|
-
|
||||||
|
- return RenderWidgetHostViewGuest::Create(render_widget_host, guest_,
|
||||||
|
- platform_widget->GetWeakPtr());
|
||||||
|
+ embedder_render_widget_host_view->CreateViewForWidget(
|
||||||
|
+ render_widget_host,
|
||||||
|
+ embedder_render_widget_host,
|
||||||
|
+ platform_view_.get());
|
||||||
|
+ RenderWidgetHostViewGuest* guest_view = RenderWidgetHostViewGuest::Create(
|
||||||
|
+ render_widget_host, guest_, platform_widget->GetWeakPtr());
|
||||||
|
+ platform_widget->InitAsGuest(embedder_render_widget_host->GetView(),
|
||||||
|
+ guest_view);
|
||||||
|
+
|
||||||
|
+ return guest_view;
|
||||||
|
}
|
||||||
|
|
||||||
|
RenderWidgetHostViewBase* WebContentsViewGuest::CreateViewForPopupWidget(
|
||||||
|
diff --git a/content/public/browser/web_contents.h b/content/public/browser/web_contents.h
|
||||||
|
index a13db5f4dd61..621124decfdc 100644
|
||||||
|
--- a/content/public/browser/web_contents.h
|
||||||
|
+++ b/content/public/browser/web_contents.h
|
||||||
|
@@ -69,9 +69,12 @@ class BrowserPluginGuestDelegate;
|
||||||
|
class InterstitialPage;
|
||||||
|
class RenderFrameHost;
|
||||||
|
class RenderViewHost;
|
||||||
|
+class RenderViewHostDelegateView;
|
||||||
|
class RenderWidgetHost;
|
||||||
|
class RenderWidgetHostView;
|
||||||
|
+class RenderWidgetHostViewBase;
|
||||||
|
class WebContentsDelegate;
|
||||||
|
+class WebContentsView;
|
||||||
|
struct CustomContextMenuContext;
|
||||||
|
struct DropData;
|
||||||
|
struct Manifest;
|
||||||
|
@@ -172,6 +175,10 @@ class WebContents : public PageNavigator,
|
||||||
|
// navigation requires a dedicated or privileged process, such as a WebUI.
|
||||||
|
bool initialize_renderer;
|
||||||
|
|
||||||
|
+ // Optionally specify the view and delegate view.
|
||||||
|
+ content::WebContentsView* view = nullptr;
|
||||||
|
+ content::RenderViewHostDelegateView* delegate_view = nullptr;
|
||||||
|
+
|
||||||
|
// Sandboxing flags set on the new WebContents.
|
||||||
|
blink::WebSandboxFlags starting_sandbox_flags;
|
||||||
|
};
|
111
patches/common/chromium/webgl_context_attributes.patch
Normal file
111
patches/common/chromium/webgl_context_attributes.patch
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc
|
||||||
|
index 0affacaa0294..0c321d51364d 100644
|
||||||
|
--- a/content/renderer/renderer_blink_platform_impl.cc
|
||||||
|
+++ b/content/renderer/renderer_blink_platform_impl.cc
|
||||||
|
@@ -1136,8 +1136,10 @@ RendererBlinkPlatformImpl::CreateOffscreenGraphicsContext3DProvider(
|
||||||
|
attributes.sample_buffers = 0;
|
||||||
|
attributes.bind_generates_resource = false;
|
||||||
|
attributes.enable_raster_interface = web_attributes.enable_raster_interface;
|
||||||
|
- // Prefer discrete GPU for WebGL.
|
||||||
|
- attributes.gpu_preference = gl::PreferDiscreteGpu;
|
||||||
|
+
|
||||||
|
+ attributes.gpu_preference = web_attributes.prefer_integrated_gpu
|
||||||
|
+ ? gl::PreferIntegratedGpu
|
||||||
|
+ : gl::PreferDiscreteGpu;
|
||||||
|
|
||||||
|
attributes.fail_if_major_perf_caveat =
|
||||||
|
web_attributes.fail_if_major_performance_caveat;
|
||||||
|
diff --git a/third_party/blink/renderer/core/html/canvas/canvas_context_creation_attributes_core.h b/third_party/blink/renderer/core/html/canvas/canvas_context_creation_attributes_core.h
|
||||||
|
index ca4543a10e69..a1f5e5c9f906 100644
|
||||||
|
--- a/third_party/blink/renderer/core/html/canvas/canvas_context_creation_attributes_core.h
|
||||||
|
+++ b/third_party/blink/renderer/core/html/canvas/canvas_context_creation_attributes_core.h
|
||||||
|
@@ -30,6 +30,7 @@ class CORE_EXPORT CanvasContextCreationAttributesCore {
|
||||||
|
String pixel_format = "8-8-8-8";
|
||||||
|
bool premultiplied_alpha = true;
|
||||||
|
bool preserve_drawing_buffer = false;
|
||||||
|
+ String power_preference = "default";
|
||||||
|
bool stencil = false;
|
||||||
|
|
||||||
|
// This attribute is of type XRDevice, defined in modules/xr/XRDevice.h
|
||||||
|
diff --git a/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl b/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl
|
||||||
|
index 7419bb20d316..5b04af00fab4 100644
|
||||||
|
--- a/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl
|
||||||
|
+++ b/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl
|
||||||
|
@@ -28,6 +28,12 @@ enum CanvasPixelFormat {
|
||||||
|
"float16",
|
||||||
|
};
|
||||||
|
|
||||||
|
+enum CanvasPowerPreference {
|
||||||
|
+ "default",
|
||||||
|
+ "low-power",
|
||||||
|
+ "high-performance",
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
[PermissiveDictionaryConversion]
|
||||||
|
dictionary CanvasContextCreationAttributesModule {
|
||||||
|
// This is an experimental feature, but it is not hidden behind a flag in
|
||||||
|
@@ -47,6 +47,7 @@ dictionary CanvasContextCreationAttributesModule {
|
||||||
|
boolean antialias = true;
|
||||||
|
boolean premultipliedAlpha = true;
|
||||||
|
boolean preserveDrawingBuffer = false;
|
||||||
|
+ CanvasPowerPreference powerPreference = "default";
|
||||||
|
boolean failIfMajorPerformanceCaveat = false;
|
||||||
|
[OriginTrialEnabled=WebXR] XRDevice compatibleXRDevice = null;
|
||||||
|
};
|
||||||
|
diff --git a/third_party/blink/renderer/modules/webgl/webgl_context_attribute_helpers.cc b/third_party/blink/renderer/modules/webgl/webgl_context_attribute_helpers.cc
|
||||||
|
index 332fa9fb0547..e8fae4b01c39 100644
|
||||||
|
--- a/third_party/blink/renderer/modules/webgl/webgl_context_attribute_helpers.cc
|
||||||
|
+++ b/third_party/blink/renderer/modules/webgl/webgl_context_attribute_helpers.cc
|
||||||
|
@@ -18,6 +18,7 @@ WebGLContextAttributes ToWebGLContextAttributes(
|
||||||
|
result.setAntialias(attrs.antialias);
|
||||||
|
result.setPremultipliedAlpha(attrs.premultiplied_alpha);
|
||||||
|
result.setPreserveDrawingBuffer(attrs.preserve_drawing_buffer);
|
||||||
|
+ result.setPowerPreference(attrs.power_preference);
|
||||||
|
result.setFailIfMajorPerformanceCaveat(
|
||||||
|
attrs.fail_if_major_performance_caveat);
|
||||||
|
result.setCompatibleXRDevice(
|
||||||
|
@@ -30,6 +30,7 @@ Platform::ContextAttributes ToPlatformContextAttributes(
|
||||||
|
unsigned web_gl_version,
|
||||||
|
bool support_own_offscreen_surface) {
|
||||||
|
Platform::ContextAttributes result;
|
||||||
|
+ result.prefer_integrated_gpu = attrs.power_preference == "low-power";
|
||||||
|
result.fail_if_major_performance_caveat =
|
||||||
|
attrs.fail_if_major_performance_caveat;
|
||||||
|
result.context_type = web_gl_version == 2 ? Platform::kWebGL2ContextType
|
||||||
|
diff --git a/third_party/blink/renderer/modules/webgl/webgl_context_attributes.idl b/third_party/blink/renderer/modules/webgl/webgl_context_attributes.idl
|
||||||
|
index 180673be9bd0..0af29cbc9402 100644
|
||||||
|
--- a/third_party/blink/renderer/modules/webgl/webgl_context_attributes.idl
|
||||||
|
+++ b/third_party/blink/renderer/modules/webgl/webgl_context_attributes.idl
|
||||||
|
@@ -26,6 +26,12 @@
|
||||||
|
|
||||||
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2
|
||||||
|
|
||||||
|
+enum WebGLPowerPreference {
|
||||||
|
+ "default",
|
||||||
|
+ "low-power",
|
||||||
|
+ "high-performance",
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
dictionary WebGLContextAttributes {
|
||||||
|
boolean alpha = true;
|
||||||
|
boolean depth = true;
|
||||||
|
@@ -33,6 +33,7 @@ dictionary WebGLContextAttributes {
|
||||||
|
boolean antialias = true;
|
||||||
|
boolean premultipliedAlpha = true;
|
||||||
|
boolean preserveDrawingBuffer = false;
|
||||||
|
+ WebGLPowerPreference powerPreference = "default";
|
||||||
|
boolean failIfMajorPerformanceCaveat = false;
|
||||||
|
[OriginTrialEnabled=WebXR] XRDevice compatibleXRDevice = null;
|
||||||
|
};
|
||||||
|
diff --git a/third_party/blink/public/platform/platform.h b/third_party/blink/public/platform/platform.h
|
||||||
|
index d4948345246e..bc277ba6aa5f 100644
|
||||||
|
--- a/third_party/blink/public/platform/platform.h
|
||||||
|
+++ b/third_party/blink/public/platform/platform.h
|
||||||
|
@@ -522,6 +522,7 @@ class BLINK_PLATFORM_EXPORT Platform {
|
||||||
|
kGLES3ContextType, // GLES 3.0 context
|
||||||
|
};
|
||||||
|
struct ContextAttributes {
|
||||||
|
+ bool prefer_integrated_gpu = false;
|
||||||
|
bool fail_if_major_performance_caveat = false;
|
||||||
|
ContextType context_type = kGLES2ContextType;
|
||||||
|
// Offscreen contexts usually share a surface for the default frame buffer
|
138
patches/common/chromium/webui_in_subframes.patch
Normal file
138
patches/common/chromium/webui_in_subframes.patch
Normal file
|
@ -0,0 +1,138 @@
|
||||||
|
diff --git a/content/browser/frame_host/render_frame_host_delegate.cc b/content/browser/frame_host/render_frame_host_delegate.cc
|
||||||
|
index 4d0a8ea553c5..0fac0b22ff2f 100644
|
||||||
|
--- a/content/browser/frame_host/render_frame_host_delegate.cc
|
||||||
|
+++ b/content/browser/frame_host/render_frame_host_delegate.cc
|
||||||
|
@@ -89,8 +89,10 @@ bool RenderFrameHostDelegate::ShouldRouteMessageEvent(
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<WebUIImpl>
|
||||||
|
-RenderFrameHostDelegate::CreateWebUIForRenderFrameHost(const GURL& url) {
|
||||||
|
- return nullptr;
|
||||||
|
+RenderFrameHostDelegate::CreateWebUIForRenderFrameHost(
|
||||||
|
+ const GURL& url,
|
||||||
|
+ const std::string& frame_name) {
|
||||||
|
+ return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RenderFrameHostDelegate::ShouldAllowRunningInsecureContent(
|
||||||
|
diff --git a/content/browser/frame_host/render_frame_host_delegate.h b/content/browser/frame_host/render_frame_host_delegate.h
|
||||||
|
index 197b64b49fd6..2e94b03c4f44 100644
|
||||||
|
--- a/content/browser/frame_host/render_frame_host_delegate.h
|
||||||
|
+++ b/content/browser/frame_host/render_frame_host_delegate.h
|
||||||
|
@@ -234,7 +234,8 @@ class CONTENT_EXPORT RenderFrameHostDelegate {
|
||||||
|
// Creates a WebUI object for a frame navigating to |url|. If no WebUI
|
||||||
|
// applies, returns null.
|
||||||
|
virtual std::unique_ptr<WebUIImpl> CreateWebUIForRenderFrameHost(
|
||||||
|
- const GURL& url);
|
||||||
|
+ const GURL& url,
|
||||||
|
+ const std::string& frame_name);
|
||||||
|
|
||||||
|
// Called by |frame| to notify that it has received an update on focused
|
||||||
|
// element. |bounds_in_root_view| is the rectangle containing the element that
|
||||||
|
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
|
||||||
|
index 1f566ef1f437..bb2f59d62315 100644
|
||||||
|
--- a/content/browser/frame_host/render_frame_host_impl.cc
|
||||||
|
+++ b/content/browser/frame_host/render_frame_host_impl.cc
|
||||||
|
@@ -20,6 +20,7 @@
|
||||||
|
#include "base/process/kill.h"
|
||||||
|
#include "base/task_scheduler/post_task.h"
|
||||||
|
#include "base/time/time.h"
|
||||||
|
+#include "base/unguessable_token.h"
|
||||||
|
#include "build/build_config.h"
|
||||||
|
#include "cc/base/switches.h"
|
||||||
|
#include "content/browser/accessibility/browser_accessibility_manager.h"
|
||||||
|
@@ -3468,8 +3514,23 @@ bool RenderFrameHostImpl::UpdatePendingWebUI(const GURL& dest_url,
|
||||||
|
DCHECK(web_ui_);
|
||||||
|
should_reuse_web_ui_ = true;
|
||||||
|
} else {
|
||||||
|
+ // Give the frame a name if it does not already have one.
|
||||||
|
+ // The reason is web ui code base the frame look up on the frame name.
|
||||||
|
+ std::string frame_name = GetFrameName();
|
||||||
|
+ if (frame_name.empty() && !frame_tree_node_->IsMainFrame()) {
|
||||||
|
+ frame_name = base::StringPrintf("frame_%i", frame_tree_node_->frame_tree_node_id());
|
||||||
|
+ frame_tree_node_->SetFrameName(
|
||||||
|
+ frame_name, frame_name + base::UnguessableToken::Create().ToString());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ // If the web ui is in subframes, the parent frame bindings does not have the web ui binding,
|
||||||
|
+ // so we reset the bindings for the subframes.
|
||||||
|
+ if (!frame_tree_node_->IsMainFrame() && new_web_ui_type != WebUI::kNoWebUI) {
|
||||||
|
+ entry_bindings = NavigationEntryImpl::kInvalidBindings;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
// Otherwise create a new pending WebUI.
|
||||||
|
- pending_web_ui_ = delegate_->CreateWebUIForRenderFrameHost(dest_url);
|
||||||
|
+ pending_web_ui_ = delegate_->CreateWebUIForRenderFrameHost(dest_url, frame_name);
|
||||||
|
DCHECK(pending_web_ui_);
|
||||||
|
pending_web_ui_type_ = new_web_ui_type;
|
||||||
|
|
||||||
|
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
|
||||||
|
index f985ea2bceab..779cfd79312d 100644
|
||||||
|
--- a/content/browser/web_contents/web_contents_impl.cc
|
||||||
|
+++ b/content/browser/web_contents/web_contents_impl.cc
|
||||||
|
@@ -768,6 +768,25 @@ RenderFrameHostManager* WebContentsImpl::GetRenderManagerForTesting() {
|
||||||
|
return GetRenderManager();
|
||||||
|
}
|
||||||
|
|
||||||
|
+void SendMessageToFrameTreeWebUIs(RenderFrameHostImpl* parent_frame_host,
|
||||||
|
+ const IPC::Message& message,
|
||||||
|
+ int& dispatch_count) {
|
||||||
|
+ // Get the web ui or the pending one if it's not yet commited.
|
||||||
|
+ WebUIImpl* web_ui = parent_frame_host->web_ui()
|
||||||
|
+ ? parent_frame_host->web_ui()
|
||||||
|
+ : parent_frame_host->pending_web_ui();
|
||||||
|
+ if (web_ui && web_ui->OnMessageReceived(message, parent_frame_host)) {
|
||||||
|
+ ++dispatch_count;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ size_t child_count = parent_frame_host->frame_tree_node()->child_count();
|
||||||
|
+ for (size_t i = 0; i < child_count; ++i) {
|
||||||
|
+ RenderFrameHostImpl* sub_frame_host =
|
||||||
|
+ parent_frame_host->frame_tree_node()->child_at(i)->current_frame_host();
|
||||||
|
+ SendMessageToFrameTreeWebUIs(sub_frame_host, message, dispatch_count);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
bool WebContentsImpl::OnMessageReceived(RenderViewHostImpl* render_view_host,
|
||||||
|
const IPC::Message& message) {
|
||||||
|
for (auto& observer : observers_) {
|
||||||
|
@@ -809,9 +828,10 @@ bool WebContentsImpl::OnMessageReceived(RenderViewHostImpl* render_view_host,
|
||||||
|
|
||||||
|
bool WebContentsImpl::OnMessageReceived(RenderFrameHostImpl* render_frame_host,
|
||||||
|
const IPC::Message& message) {
|
||||||
|
- {
|
||||||
|
- WebUIImpl* web_ui = render_frame_host->web_ui();
|
||||||
|
- if (web_ui && web_ui->OnMessageReceived(message, render_frame_host))
|
||||||
|
+ int dispatch_count = 0;
|
||||||
|
+ if (render_frame_host) {
|
||||||
|
+ SendMessageToFrameTreeWebUIs(render_frame_host, message, dispatch_count);
|
||||||
|
+ if (dispatch_count > 0)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -5021,8 +5043,9 @@ NavigationControllerImpl& WebContentsImpl::GetControllerForRenderManager() {
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<WebUIImpl> WebContentsImpl::CreateWebUIForRenderFrameHost(
|
||||||
|
- const GURL& url) {
|
||||||
|
- return CreateWebUI(url);
|
||||||
|
+ const GURL& url,
|
||||||
|
+ const std::string& frame_name) {
|
||||||
|
+ return CreateWebUI(url/*, frame_name*/);
|
||||||
|
}
|
||||||
|
|
||||||
|
NavigationEntry*
|
||||||
|
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
|
||||||
|
index 84a01a83c72a..49d0a4b547c2 100644
|
||||||
|
--- a/content/browser/web_contents/web_contents_impl.h
|
||||||
|
+++ b/content/browser/web_contents/web_contents_impl.h
|
||||||
|
@@ -534,7 +534,8 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents,
|
||||||
|
SiteInstance* source_site_instance) const override;
|
||||||
|
void EnsureOpenerProxiesExist(RenderFrameHost* source_rfh) override;
|
||||||
|
std::unique_ptr<WebUIImpl> CreateWebUIForRenderFrameHost(
|
||||||
|
- const GURL& url) override;
|
||||||
|
+ const GURL& url,
|
||||||
|
+ const std::string& frame_name) override;
|
||||||
|
void SetFocusedFrame(FrameTreeNode* node, SiteInstance* source) override;
|
||||||
|
void DidCallFocus() override;
|
||||||
|
RenderFrameHost* GetFocusedFrameIncludingInnerWebContents() override;
|
24
patches/common/chromium/webview_cross_drag.patch
Normal file
24
patches/common/chromium/webview_cross_drag.patch
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
diff --git a/content/browser/web_contents/web_contents_view_aura.cc b/content/browser/web_contents/web_contents_view_aura.cc
|
||||||
|
index 1bfef2c..0ba2260 100644
|
||||||
|
--- a/content/browser/web_contents/web_contents_view_aura.cc
|
||||||
|
+++ b/content/browser/web_contents/web_contents_view_aura.cc
|
||||||
|
@@ -675,6 +675,7 @@ gfx::NativeView WebContentsViewAura::GetRenderWidgetHostViewParent() const {
|
||||||
|
|
||||||
|
bool WebContentsViewAura::IsValidDragTarget(
|
||||||
|
RenderWidgetHostImpl* target_rwh) const {
|
||||||
|
+ return true;
|
||||||
|
return target_rwh->GetProcess()->GetID() == drag_start_process_id_ ||
|
||||||
|
GetRenderViewHostID(web_contents_->GetRenderViewHost()) !=
|
||||||
|
drag_start_view_id_;
|
||||||
|
diff --git a/content/browser/web_contents/web_drag_dest_mac.mm b/content/browser/web_contents/web_drag_dest_mac.mm
|
||||||
|
index 37ed265..814a37d 100644
|
||||||
|
--- a/content/browser/web_contents/web_drag_dest_mac.mm
|
||||||
|
+++ b/content/browser/web_contents/web_drag_dest_mac.mm
|
||||||
|
@@ -348,6 +348,7 @@ - (void)setDragStartTrackersForProcess:(int)processID {
|
||||||
|
}
|
||||||
|
|
||||||
|
- (bool)isValidDragTarget:(content::RenderWidgetHostImpl*)targetRWH {
|
||||||
|
+ return YES;
|
||||||
|
return targetRWH->GetProcess()->GetID() == dragStartProcessID_ ||
|
||||||
|
GetRenderViewHostID(webContents_->GetRenderViewHost()) !=
|
||||||
|
dragStartViewID_;
|
16
patches/common/chromium/webview_reattach.patch
Normal file
16
patches/common/chromium/webview_reattach.patch
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
|
||||||
|
index b2d1e63..bc2cf9a 100644
|
||||||
|
--- a/content/browser/web_contents/web_contents_impl.cc
|
||||||
|
+++ b/content/browser/web_contents/web_contents_impl.cc
|
||||||
|
@@ -4562,6 +4562,11 @@ void WebContentsImpl::NotifyViewSwapped(RenderViewHost* old_host,
|
||||||
|
for (auto& observer : observers_)
|
||||||
|
observer.RenderViewHostChanged(old_host, new_host);
|
||||||
|
|
||||||
|
+ // If this is an inner WebContents that has swapped views, we need to reattach
|
||||||
|
+ // it to its outer WebContents.
|
||||||
|
+ if (node_.outer_web_contents())
|
||||||
|
+ ReattachToOuterWebContentsFrame();
|
||||||
|
+
|
||||||
|
// Ensure that the associated embedder gets cleared after a RenderViewHost
|
||||||
|
// gets swapped, so we don't reuse the same embedder next time a
|
||||||
|
// RenderViewHost is attached to this WebContents.
|
45
patches/common/chromium/windows_cc_wrapper.patch
Normal file
45
patches/common/chromium/windows_cc_wrapper.patch
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
diff --git a/build/toolchain/win/BUILD.gn b/build/toolchain/win/BUILD.gn
|
||||||
|
index a526d47e7786..946df3cd513c 100644
|
||||||
|
--- a/build/toolchain/win/BUILD.gn
|
||||||
|
+++ b/build/toolchain/win/BUILD.gn
|
||||||
|
@@ -6,6 +6,7 @@ import("//build/config/clang/clang.gni")
|
||||||
|
import("//build/config/compiler/compiler.gni")
|
||||||
|
import("//build/config/sanitizers/sanitizers.gni")
|
||||||
|
import("//build/config/win/visual_studio_version.gni")
|
||||||
|
+import("//build/toolchain/cc_wrapper.gni")
|
||||||
|
import("//build/toolchain/clang_static_analyzer.gni")
|
||||||
|
import("//build/toolchain/goma.gni")
|
||||||
|
import("//build/toolchain/toolchain.gni")
|
||||||
|
@@ -28,8 +29,14 @@ if (use_goma) {
|
||||||
|
} else {
|
||||||
|
goma_prefix = "$goma_dir/gomacc "
|
||||||
|
}
|
||||||
|
+ clang_prefix = goma_prefix
|
||||||
|
} else {
|
||||||
|
goma_prefix = ""
|
||||||
|
+ if (cc_wrapper != "") {
|
||||||
|
+ clang_prefix = cc_wrapper + " "
|
||||||
|
+ } else {
|
||||||
|
+ clang_prefix = ""
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (disable_goma) {
|
||||||
|
@@ -389,7 +396,7 @@ if (target_os == "win" &&
|
||||||
|
msvc_toolchain("win_clang_" + target_cpu) {
|
||||||
|
environment = "environment." + target_cpu
|
||||||
|
prefix = rebase_path("$clang_base_path/bin", root_build_dir)
|
||||||
|
- cl = "${goma_prefix}$prefix/${clang_cl}"
|
||||||
|
+ cl = "${clang_prefix}$prefix/${clang_cl}"
|
||||||
|
sys_include_flags = "${target_cpu_toolchain_data.include_flags_imsvc}"
|
||||||
|
|
||||||
|
toolchain_args = {
|
||||||
|
@@ -431,7 +438,7 @@ template("win_x64_toolchains") {
|
||||||
|
msvc_toolchain("win_clang_" + target_name) {
|
||||||
|
environment = "environment.x64"
|
||||||
|
prefix = rebase_path("$clang_base_path/bin", root_build_dir)
|
||||||
|
- cl = "${goma_prefix}$prefix/${clang_cl}"
|
||||||
|
+ cl = "${clang_prefix}$prefix/${clang_cl}"
|
||||||
|
sys_include_flags = "${x64_toolchain_data.include_flags_imsvc}"
|
||||||
|
|
||||||
|
toolchain_args = {
|
74
patches/common/chromium/worker_context_will_destroy.patch
Normal file
74
patches/common/chromium/worker_context_will_destroy.patch
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
diff --git a/content/public/renderer/content_renderer_client.h b/content/public/renderer/content_renderer_client.h
|
||||||
|
index 0e554ba8467a..8e56489a5152 100644
|
||||||
|
--- a/content/public/renderer/content_renderer_client.h
|
||||||
|
+++ b/content/public/renderer/content_renderer_client.h
|
||||||
|
@@ -351,6 +351,11 @@ class CONTENT_EXPORT ContentRendererClient {
|
||||||
|
virtual void DidInitializeWorkerContextOnWorkerThread(
|
||||||
|
v8::Local<v8::Context> context) {}
|
||||||
|
|
||||||
|
+ // Notifies that a worker context will be destroyed. This function is called
|
||||||
|
+ // from the worker thread.
|
||||||
|
+ virtual void WillDestroyWorkerContextOnWorkerThread(
|
||||||
|
+ v8::Local<v8::Context> context) {}
|
||||||
|
+
|
||||||
|
// Overwrites the given URL to use an HTML5 embed if possible.
|
||||||
|
// An empty URL is returned if the URL is not overriden.
|
||||||
|
virtual GURL OverrideFlashEmbedWithHTML(const GURL& url);
|
||||||
|
diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc
|
||||||
|
index 0affacaa0294..eca456faa640 100644
|
||||||
|
--- a/content/renderer/renderer_blink_platform_impl.cc
|
||||||
|
+++ b/content/renderer/renderer_blink_platform_impl.cc
|
||||||
|
@@ -1402,6 +1404,12 @@ void RendererBlinkPlatformImpl::WillStopWorkerThread() {
|
||||||
|
WorkerThreadRegistry::Instance()->WillStopCurrentWorkerThread();
|
||||||
|
}
|
||||||
|
|
||||||
|
+void RendererBlinkPlatformImpl::WorkerContextWillDestroy(
|
||||||
|
+ const v8::Local<v8::Context>& worker) {
|
||||||
|
+ GetContentClient()->renderer()->WillDestroyWorkerContextOnWorkerThread(
|
||||||
|
+ worker);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void RendererBlinkPlatformImpl::WorkerContextCreated(
|
||||||
|
const v8::Local<v8::Context>& worker) {
|
||||||
|
GetContentClient()->renderer()->DidInitializeWorkerContextOnWorkerThread(
|
||||||
|
diff --git a/content/renderer/renderer_blink_platform_impl.h b/content/renderer/renderer_blink_platform_impl.h
|
||||||
|
index e8a4578009d1..e9ba4e7f391f 100644
|
||||||
|
--- a/content/renderer/renderer_blink_platform_impl.h
|
||||||
|
+++ b/content/renderer/renderer_blink_platform_impl.h
|
||||||
|
@@ -219,6 +219,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl {
|
||||||
|
void DidStartWorkerThread() override;
|
||||||
|
void WillStopWorkerThread() override;
|
||||||
|
void WorkerContextCreated(const v8::Local<v8::Context>& worker) override;
|
||||||
|
+ void WorkerContextWillDestroy(const v8::Local<v8::Context>& worker) override;
|
||||||
|
|
||||||
|
// Set the PlatformEventObserverBase in |platform_event_observers_| associated
|
||||||
|
// with |type| to |observer|. If there was already an observer associated to
|
||||||
|
diff --git a/third_party/blink/renderer/core/workers/worker_thread.cc b/third_party/blink/renderer/core/workers/worker_thread.cc
|
||||||
|
index a522ba4dbdf7..6991078b36f5 100644
|
||||||
|
--- a/third_party/blink/renderer/core/workers/worker_thread.cc
|
||||||
|
+++ b/third_party/blink/renderer/core/workers/worker_thread.cc
|
||||||
|
@@ -481,6 +481,12 @@ void WorkerThread::PrepareForShutdownOnWorkerThread() {
|
||||||
|
SetExitCode(ExitCode::kGracefullyTerminated);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ {
|
||||||
|
+ v8::HandleScope handle_scope(GetIsolate());
|
||||||
|
+ Platform::Current()->WorkerContextWillDestroy(
|
||||||
|
+ GlobalScope()->ScriptController()->GetContext());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
inspector_task_runner_->Dispose();
|
||||||
|
GetWorkerReportingProxy().WillDestroyWorkerGlobalScope();
|
||||||
|
probe::AllAsyncTasksCanceled(GlobalScope());
|
||||||
|
diff --git a/third_party/blink/public/platform/platform.h b/third_party/blink/public/platform/platform.h
|
||||||
|
index 98ecb84..0779d4a 100644
|
||||||
|
--- a/third_party/blink/public/platform/platform.h
|
||||||
|
+++ b/third_party/blink/public/platform/platform.h
|
||||||
|
@@ -596,6 +596,7 @@ class BLINK_PLATFORM_EXPORT Platform {
|
||||||
|
virtual void DidStartWorkerThread() {}
|
||||||
|
virtual void WillStopWorkerThread() {}
|
||||||
|
virtual void WorkerContextCreated(const v8::Local<v8::Context>& worker) {}
|
||||||
|
+ virtual void WorkerContextWillDestroy(const v8::Local<v8::Context>& worker) {}
|
||||||
|
virtual bool AllowScriptExtensionForServiceWorker(const WebURL& script_url) {
|
||||||
|
return false;
|
||||||
|
}
|
8
patches/common/crashpad/.patches.yaml
Normal file
8
patches/common/crashpad/.patches.yaml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
repo: src
|
||||||
|
patches:
|
||||||
|
-
|
||||||
|
author: Jeremy Apthorp <nornagon@nornagon.net>
|
||||||
|
file: http_status.patch
|
||||||
|
description: |
|
||||||
|
Accept all HTTP codes in [200, 300) as successful, instead of just 200.
|
||||||
|
For example HockeyApp responds with 202.
|
54
patches/common/crashpad/http_status.patch
Normal file
54
patches/common/crashpad/http_status.patch
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (status != 200) {
|
||||||
|
+ if (status < 200 || status >= 300) {
|
||||||
|
LOG(ERROR) << base::StringPrintf("HTTP status %ld", status);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
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
|
||||||
|
--- 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,
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
NSInteger http_status = [http_response statusCode];
|
||||||
|
- if (http_status != 200) {
|
||||||
|
+ if (http_status < 200 || http_status >= 300) {
|
||||||
|
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_win.cc b/third_party/crashpad/crashpad/util/net/http_transport_win.cc
|
||||||
|
index 18d343c..40c3061 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) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (status_code != 200) {
|
||||||
|
+ if (status_code < 200 || status_code >= 300) {
|
||||||
|
LOG(ERROR) << base::StringPrintf("HTTP status %lu", status_code);
|
||||||
|
return false;
|
||||||
|
}
|
15
patches/common/ffmpeg/.patches.yaml
Normal file
15
patches/common/ffmpeg/.patches.yaml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
repo: src/third_party/ffmpeg
|
||||||
|
patches:
|
||||||
|
-
|
||||||
|
author: Ales Pergl <alpergl@microsoft.com>
|
||||||
|
file: build_gn.patch
|
||||||
|
description: |
|
||||||
|
Chromium's Mac toolchain sets the "install_name" linker parameter only
|
||||||
|
when "is_component_build" is true, but we want to set even if it's false,
|
||||||
|
because we are making a dylib which will be distributed inside a bundle.
|
||||||
|
-
|
||||||
|
author: Aleksei Kuzmin <alkuzmin@microsoft.com>
|
||||||
|
file: fix_build_on_linux_x86.patch
|
||||||
|
description: |
|
||||||
|
Builds on Linux x86 fail with a clang error. See https://crbug.com/796379.
|
||||||
|
Once it's fixed the patch can be removed.
|
15
patches/common/ffmpeg/build_gn.patch
Normal file
15
patches/common/ffmpeg/build_gn.patch
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
diff --git a/BUILD.gn b/BUILD.gn
|
||||||
|
index 5439b39693..6783292c3b 100755
|
||||||
|
--- a/BUILD.gn
|
||||||
|
+++ b/BUILD.gn
|
||||||
|
@@ -393,6 +393,10 @@ if (is_component_ffmpeg) {
|
||||||
|
# So we can append below and assume they're defined.
|
||||||
|
ldflags = []
|
||||||
|
|
||||||
|
+ if (!is_component_build && is_mac) {
|
||||||
|
+ ldflags += [ "-Wl,-install_name,@rpath/libffmpeg.dylib" ]
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (is_fuchsia || (is_posix && !is_mac)) {
|
||||||
|
# Fixes warnings PIC relocation when building as component.
|
||||||
|
ldflags += [
|
13
patches/common/ffmpeg/fix_build_on_linux_x86.patch
Normal file
13
patches/common/ffmpeg/fix_build_on_linux_x86.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/BUILD.gn b/BUILD.gn
|
||||||
|
index ff09111634..fa7712a3a3 100755
|
||||||
|
--- a/BUILD.gn
|
||||||
|
+++ b/BUILD.gn
|
||||||
|
@@ -247,7 +247,7 @@ target(link_target_type, "ffmpeg_internal") {
|
||||||
|
# On POSIX x86, sanitizers will fail to compiler the H264 CABAC code due to
|
||||||
|
# insufficient registers unless we disable EBP usage. crbug.com/786760
|
||||||
|
if (target_cpu == "x86") {
|
||||||
|
- if (using_sanitizer) {
|
||||||
|
+ if (using_sanitizer || is_electron_build) {
|
||||||
|
defines += [ "HAVE_EBP_AVAILABLE=0" ]
|
||||||
|
} else {
|
||||||
|
defines += [ "HAVE_EBP_AVAILABLE=1" ]
|
10
patches/common/icu/.patches.yaml
Normal file
10
patches/common/icu/.patches.yaml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
repo: src/third_party/icu
|
||||||
|
patches:
|
||||||
|
-
|
||||||
|
author: Ales Pergl <alpergl@microsoft.com>
|
||||||
|
file: build_gn.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: no_inline_default_constructor.patch
|
||||||
|
description: null
|
63
patches/common/icu/build_gn.patch
Normal file
63
patches/common/icu/build_gn.patch
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
diff --git a/BUILD.gn b/BUILD.gn
|
||||||
|
index 76914cd7..a44d7896 100644
|
||||||
|
--- a/BUILD.gn
|
||||||
|
+++ b/BUILD.gn
|
||||||
|
@@ -34,7 +34,7 @@ config("icu_config") {
|
||||||
|
"U_ENABLE_DYLOAD=0",
|
||||||
|
]
|
||||||
|
|
||||||
|
- if (!is_component_build) {
|
||||||
|
+ if (!is_component_build && !(is_electron_build && !is_electron_gn_build)) {
|
||||||
|
defines += [ "U_STATIC_IMPLEMENTATION" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -537,6 +537,24 @@ component("icui18n") {
|
||||||
|
":icuuc",
|
||||||
|
]
|
||||||
|
|
||||||
|
+ # In Electron all of ICU is in one binary, hence we must build with
|
||||||
|
+ # U_COMBINED_IMPLEMENTATION defined.
|
||||||
|
+ # Also, for the "static_library" configuration, keep icui18n as
|
||||||
|
+ # a shared library so that other Chromium targets build cleanly.
|
||||||
|
+ if (is_electron_build && !is_electron_gn_build) {
|
||||||
|
+ defines += [ "U_COMBINED_IMPLEMENTATION" ]
|
||||||
|
+
|
||||||
|
+ if (!is_component_build) {
|
||||||
|
+ static_component_type = "shared_library"
|
||||||
|
+
|
||||||
|
+ # Because GN already applied the wrong defaults (see the
|
||||||
|
+ # set_defaults("component") statement in BUILDCONFIG.gn) we must reset
|
||||||
|
+ # the configs and assign those for shared libraries.
|
||||||
|
+ configs = []
|
||||||
|
+ configs = default_shared_library_configs
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
# ICU uses RTTI, replace the default "no rtti" config.
|
||||||
|
configs -= [
|
||||||
|
"//build/config/compiler:no_rtti", # ICU uses RTTI.
|
||||||
|
@@ -945,6 +963,24 @@ component("icuuc") {
|
||||||
|
":icudata",
|
||||||
|
]
|
||||||
|
|
||||||
|
+ # In Electron all of ICU is in one binary, hence we must build with
|
||||||
|
+ # U_COMBINED_IMPLEMENTATION defined.
|
||||||
|
+ # Also, for the "static_library" configuration, keep icuuc as
|
||||||
|
+ # a shared library so that other Chromium targets build cleanly.
|
||||||
|
+ if (is_electron_build && !is_electron_gn_build) {
|
||||||
|
+ defines += [ "U_COMBINED_IMPLEMENTATION" ]
|
||||||
|
+
|
||||||
|
+ if (!is_component_build) {
|
||||||
|
+ static_component_type = "shared_library"
|
||||||
|
+
|
||||||
|
+ # Because GN already applied the wrong defaults (see the
|
||||||
|
+ # set_defaults("component") statement in BUILDCONFIG.gn) we must reset
|
||||||
|
+ # the configs and assign those for shared libraries.
|
||||||
|
+ configs = []
|
||||||
|
+ configs = default_shared_library_configs
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
configs -= [
|
||||||
|
"//build/config/compiler:no_rtti", # ICU uses RTTI.
|
||||||
|
"//build/config/compiler:chromium_code",
|
44
patches/common/icu/no_inline_default_constructor.patch
Normal file
44
patches/common/icu/no_inline_default_constructor.patch
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
diff --git a/source/common/unicode/unistr.h b/source/common/unicode/unistr.h
|
||||||
|
index e0ab0b9e..fe4c673b 100644
|
||||||
|
--- a/source/common/unicode/unistr.h
|
||||||
|
+++ b/source/common/unicode/unistr.h
|
||||||
|
@@ -2957,7 +2957,7 @@ public:
|
||||||
|
/** Construct an empty UnicodeString.
|
||||||
|
* @stable ICU 2.0
|
||||||
|
*/
|
||||||
|
- inline UnicodeString();
|
||||||
|
+ UnicodeString();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a UnicodeString with capacity to hold <TT>capacity</TT> char16_ts
|
||||||
|
@@ -3915,15 +3915,6 @@ UnicodeString::getArrayStart() const {
|
||||||
|
fUnion.fStackFields.fBuffer : fUnion.fFields.fArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
-//========================================
|
||||||
|
-// Default constructor
|
||||||
|
-//========================================
|
||||||
|
-
|
||||||
|
-inline
|
||||||
|
-UnicodeString::UnicodeString() {
|
||||||
|
- fUnion.fStackFields.fLengthAndFlags=kShortString;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
inline UnicodeString::UnicodeString(const std::nullptr_t /*text*/) {
|
||||||
|
fUnion.fStackFields.fLengthAndFlags=kShortString;
|
||||||
|
}
|
||||||
|
diff --git a/source/common/unistr.cpp b/source/common/unistr.cpp
|
||||||
|
index 1bfb71aa..5495ee91 100644
|
||||||
|
--- a/source/common/unistr.cpp
|
||||||
|
+++ b/source/common/unistr.cpp
|
||||||
|
@@ -146,7 +146,9 @@ UnicodeString::releaseArray() {
|
||||||
|
// Constructors
|
||||||
|
//========================================
|
||||||
|
|
||||||
|
-// The default constructor is inline in unistr.h.
|
||||||
|
+UnicodeString::UnicodeString() {
|
||||||
|
+ fUnion.fStackFields.fLengthAndFlags=kShortString;
|
||||||
|
+}
|
||||||
|
|
||||||
|
UnicodeString::UnicodeString(int32_t capacity, UChar32 c, int32_t count) {
|
||||||
|
fUnion.fFields.fLengthAndFlags = 0;
|
6
patches/common/skia/.patches.yaml
Normal file
6
patches/common/skia/.patches.yaml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
repo: src/third_party/skia
|
||||||
|
patches:
|
||||||
|
-
|
||||||
|
author: Ales Pergl <alpergl@microsoft.com>
|
||||||
|
file: dcheck.patch
|
||||||
|
description: null
|
13
patches/common/skia/dcheck.patch
Normal file
13
patches/common/skia/dcheck.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/include/core/SkPostConfig.h b/include/core/SkPostConfig.h
|
||||||
|
index c34397cde6..5a55535eeb 100644
|
||||||
|
--- a/include/core/SkPostConfig.h
|
||||||
|
+++ b/include/core/SkPostConfig.h
|
||||||
|
@@ -18,7 +18,7 @@
|
||||||
|
#ifdef NDEBUG
|
||||||
|
#define SK_RELEASE
|
||||||
|
#else
|
||||||
|
- #define SK_DEBUG
|
||||||
|
+ #define SK_RELEASE
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
87
patches/common/v8/.patches.yaml
Normal file
87
patches/common/v8/.patches.yaml
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
repo: src/v8
|
||||||
|
patches:
|
||||||
|
-
|
||||||
|
author: Shelley Vohr <shelley.vohr@gmail.com>
|
||||||
|
file: add_realloc.patch
|
||||||
|
description: |
|
||||||
|
Blink overrides ArrayBuffer's allocator with its own one, while Node simply
|
||||||
|
uses malloc and free, so we need to use v8's allocator in Node. As part of the
|
||||||
|
10.6.0 upgrade, we needed to make SerializerDelegate accept an allocator
|
||||||
|
argument in its constructor, and override ReallocateBufferMemory and
|
||||||
|
FreeBufferMemory to use the allocator. We cannot simply allocate and then memcpy
|
||||||
|
when we override ReallocateBufferMemory, so we therefore need to implement
|
||||||
|
Realloc on the v8 side.
|
||||||
|
-
|
||||||
|
author: Ales Pergl <alpergl@microsoft.com>
|
||||||
|
file: build_gn.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: array_buffer.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Cheng Zhao <zcbenz@gmail.com>
|
||||||
|
file: ostreams.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Aleksei Kuzmin <alkuzmin@microsoft.com>
|
||||||
|
file: export_platform.patch
|
||||||
|
description: |
|
||||||
|
v8::Platform::SystemClockTimeMillis must be exported so that node::NodePlatform can call it
|
||||||
|
-
|
||||||
|
author: Ales Pergl <alpergl@microsoft.com>
|
||||||
|
file: dcheck.patch
|
||||||
|
description: null
|
||||||
|
-
|
||||||
|
author: Nitish Sakhawalkar <nitsakh@icloud.com>
|
||||||
|
file: disable-warning-win.patch
|
||||||
|
description:
|
||||||
|
Disable unit test windows build warning
|
||||||
|
-
|
||||||
|
author: Aleksei Kuzmin <alkuzmin@microsoft.com>
|
||||||
|
file: backport_39d546a.patch
|
||||||
|
description: Node 10.0.0 needs it.
|
||||||
|
-
|
||||||
|
author: Aleksei Kuzmin <alkuzmin@microsoft.com>
|
||||||
|
file: backport_ff0a97933.patch
|
||||||
|
description: Node 10.2.0 needs it.
|
||||||
|
-
|
||||||
|
author: Aleksei Kuzmin <alkuzmin@microsoft.com>
|
||||||
|
file: backport_9fb02b526.patch
|
||||||
|
description: Node 10.2.0 needs it.
|
||||||
|
-
|
||||||
|
author: Aleksei Kuzmin <alkuzmin@microsoft.com>
|
||||||
|
file: backport_23652c5f.patch
|
||||||
|
description: Node 10.2.0 needs it.
|
||||||
|
-
|
||||||
|
author: Shelley Vohr <shelley.vohr@gmail.com>
|
||||||
|
file: backport_91ddb65d.patch
|
||||||
|
description: Node 10.6.0 needs it.
|
||||||
|
-
|
||||||
|
author: Shelley Vohr <shelley.vohr@gmail.com>
|
||||||
|
file: cherry-pick_6989b3f6d7.patch
|
||||||
|
description: Node 10.6.0 needs it.
|
||||||
|
-
|
||||||
|
author: Shelley Vohr <shelley.vohr@gmail.com>
|
||||||
|
file: cherry-pick_a440efb27f.patch
|
||||||
|
description: Node 10.6.0 needs it.
|
||||||
|
-
|
||||||
|
author: Shelley Vohr <shelley.vohr@gmail.com>
|
||||||
|
file: cherry-pick_5dd3395.patch
|
||||||
|
description: Node 10.6.0 needs it.
|
||||||
|
-
|
||||||
|
author: Shelley Vohr <shelley.vohr@gmail.com>
|
||||||
|
file: backport_aa6ce3e.patch
|
||||||
|
description: Node 10.6.0 needs it.
|
||||||
|
-
|
||||||
|
author: Shelley Vohr <shelley.vohr@gmail.com>
|
||||||
|
file: cherry-pick_b20faff.patch
|
||||||
|
description: Node 10.6.0 needs it.
|
||||||
|
-
|
||||||
|
author: Shelley Vohr <shelley.vohr@gmail.com>
|
||||||
|
file: cherry-pick_acc336c.patch
|
||||||
|
description: Node 10.6.0 needs it.
|
||||||
|
-
|
||||||
|
author: Shelley Vohr <shelley.vohr@gmail.com>
|
||||||
|
file: cherry-pick_70c4340.patch
|
||||||
|
description: Node 10.6.0 needs it.
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue