Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Update patches from Chromium 76.0.3809.132 to Chromium 77.0.3865.56 #3304

Closed
wants to merge 63 commits into from

Conversation

@mkarolin
Copy link
Contributor

mkarolin commented Aug 30, 2019

Fixes brave/brave-browser#5375
Related PR: brave/brave-browser#5840

Submitter Checklist:

Test Plan:

Reviewer Checklist:

  • New files have MPL-2.0 license header.
  • Request a security/privacy review as needed.
  • Adequate test coverage exists to prevent regressions
  • Verify test plan is specified in PR before merging to source

After-merge Checklist:

  • The associated issue milestone is set to the smallest version that the
    changes has landed on.
  • All relevant documentation has been updated.
@bsclifton
Copy link
Member

bsclifton commented Sep 3, 2019

will mark as ready for review, just so we can start getting PR builder builds for this (available in our Slack)

@bsclifton bsclifton marked this pull request as ready for review Sep 3, 2019
@bsclifton bsclifton requested a review from bridiver as a code owner Sep 3, 2019
@mkarolin mkarolin force-pushed the 77.0.3865.56 branch 4 times, most recently from 1c2674d to 0f8c3ac Sep 4, 2019
@mkarolin mkarolin requested a review from iefremov as a code owner Sep 4, 2019
@mkarolin mkarolin force-pushed the 77.0.3865.56 branch from 0f8c3ac to 3023af2 Sep 4, 2019
@mkarolin mkarolin force-pushed the 77.0.3865.56 branch from 3023af2 to 34f481d Sep 4, 2019
mkarolin added 7 commits Jul 24, 2019
GN change disallows sources that aren't a source, header, or object file.
We need to pass `process_only` flag to process_version to not create source_set
out of the version file.

GN change:

https://gn.googlesource.com/gn/+/8730b0feb6b991fa47368566501ab9ccfb453c92

commit	8730b0feb6b991fa47368566501ab9ccfb453c92
author	Tom Anderson <thomasanderson@chromium.org>	Thu May 16 11:00:40 2019 -0700
committer	Commit Bot <commit-bot@chromium.org>	Thu May 16 21:36:50 2019 +0000

Disallow non-buildable sources in binary targets

When adding a file that's not a source, header, or object file to a source_set,
loadable_module, shared_library, executable, or static_library, gn will now
generate an error like the following:

ERROR at //third_party/protobuf/proto_library.gni:369:15: Only source, header,
and object files belong in the sources of a
source_set. //out/Test/pyproto/google_apis/gcm/protocol/mcs_pb2.py is not one of
the valid types.
    sources = get_target_outputs(":$action_name")
              ^---------------------------------
See //google_apis/gcm/BUILD.gn:78:1: whence it was called.
proto_library("proto") {
^-----------------------
See //BUILD.gn:89:7: which caused the file to be included.
      "//google_apis/gcm:gcm_unit_tests",
      ^---------------------------------

BUG=77
Chrominum changes:

https://chromium.googlesource.com/chromium/src/+/b2720ad134127a6fdd35f92f44b5b2b946452c1b

commit	b2720ad134127a6fdd35f92f44b5b2b946452c1b
author	Nick Harper <nharper@chromium.org>	Fri Jul 12 22:07:10 2019
committer	Commit Bot <commit-bot@chromium.org>	Fri Jul 12 22:07:10 2019
tree	f850eb08e89e08373a37378fb43ea76064672a00
parent	f070ecdf7436215ee672ff7b84a89f4eee90863c [diff]
Remove Channel ID deletion code

Bug: 903642, 975114

https://chromium.googlesource.com/chromium/src/+/d1d11f3957428a77097d49e5fb2971b873d11f5d

commit	d1d11f3957428a77097d49e5fb2971b873d11f5d	[log] [tgz]
author	Xing Liu <xingliu@chromium.org>	Tue Apr 30 21:09:55 2019
committer	Commit Bot <commit-bot@chromium.org>	Tue Apr 30 21:09:55 2019
tree	d8778d132d6b3559a7c91fc12ff2873492e8b948
parent	5e42b1a0fb34030b2e78b6453977cf4801bff761 [diff]
Notification scheduler: Plumb dependencies to glue class.

This CL plumbs dependencies into scheduler glue class, and starts to
connects several subsystems together.

Tests will be added in following CLs to keep this CL smaller, and
there are still many things not implemented in the glue layer yet.

TBR=peter@chromium.org

Bug: 930968
Chromium change:

https://chromium.googlesource.com/chromium/src/+/e31e15795d599fd8a53d04ed2bf8832e36fa0ead

commit	e31e15795d599fd8a53d04ed2bf8832e36fa0ead
author	Yue Ru Sun <yrsun@chromium.org>	Fri Jul 19 17:09:57 2019
committer	Commit Bot <commit-bot@chromium.org>	Fri Jul 19 17:09:57 2019
tree	b5d9b74dae9b156ce8c6abb4d635f8d84480ea88
parent	fb39b07fe2369060544e7cadc86f82cba2e43bb8 [diff]
Sync omnibox type proto change

Field name has changed from INVALID to EMPTY in cl/255470920, this patch syncs that change and fix all occurrences.

See https://bugs.chromium.org/p/chromium/issues/detail?id=983220

Bug: 983220
Chromium change:

https://chromium.googlesource.com/chromium/src/+/b6042ed37a482983111cdf1f9d0b09ffe972c309

commit b6042ed37a482983111cdf1f9d0b09ffe972c309
Author: Clark DuVall <cduvall@chromium.org>
Date:   Mon Jul 15 17:20:45 2019 +0000

    Support HandleExternalProtocol on UI thread

    This allows HandleExternalProtocol to be used on the UI thread in
    android_webview. This is part of migrating the navigation loader to the
    UI thread.

    Bug: 824840
…rkRequest.

Chromium change:

https://chromium.googlesource.com/chromium/src/+/1d81619dbd351cb570943140bddac7a80559dd76

commit 1d81619dbd351cb570943140bddac7a80559dd76
Author: Clark DuVall <cduvall@chromium.org>
Date:   Fri Jul 19 19:54:42 2019 +0000

    Move WebRequest to the UI thread

    Now that network service is launched, there is no reason to have
    WebRequest run on the IO thread. This moves all WebRequest code and
    the WebRequestProxyingURLLoaderFactory to the UI thread, which
    eliminates thread hops. For more info, see the Chrome IO Thread
    Simplification: Planning doc:
    https://docs.google.com/document/d/1fowGQ8xWBv4YqHj_YbK-S3wpmJQDE7L0-GwNR_vAkHE/edit#

    Change-Id: I5ba8954c5d91c98c96a66558ecb659b59ff4386c
    Bug: 980774
For Brave importer profile writer added a nullptr optional for tab group.

Chromium change:

https://chromium.googlesource.com/chromium/src/+/81999fd6a771e38cccc487364728ba91f5fc17f2

commit 81999fd6a771e38cccc487364728ba91f5fc17f2
Author: Collin Baker <collinbaker@chromium.org>
Date:   Wed Jun 5 23:12:27 2019 +0000

    Save and restore tab groups

    This implements basic session restore functionality for tab
    groups. Currently, only whole browser session restore is supported;
    restoring a window or a tab from the history menu won't restore
    groups.

    Bug: 905491
mkarolin and others added 20 commits Aug 21, 2019
Chromium change:

https://chromium.googlesource.com/chromium/src/+/d6b794c59f423ead8b1f2633c7fd879710aa1382

commit d6b794c59f423ead8b1f2633c7fd879710aa1382
Author: Himanshu Jaju <himanshujaju@chromium.org>
Date:   Tue Jul 16 19:31:46 2019 +0000

    Context menu for click to call
    Add tel scheme to list of schemes in url

    Screenshot for multiple devices: https://storage.cloud.google.com/chromium-translation-screenshots/d3ea7c88529dd93e5f403fa57d5df3bfadf8936a

    Screenshot for single device: https://storage.cloud.google.com/chromium-translation-screenshots/bc5be9872a3e0a2c30bbb9a80ac370cafa339988

    Bug: 972060
This function was removed along with url_request_mock_util.h.

Chromium change:

https://chromium.googlesource.com/chromium/src/+/779c64cbc9bf21539fe7b712df43b79952086704

commit 779c64cbc9bf21539fe7b712df43b79952086704
Author: Clark DuVall <cduvall@chromium.org>
Date:   Wed Jun 12 22:31:58 2019 +0000

    Cleanup unnecessary non-network service code

    Bug: 934009
…sService

Chromium change:

https://chromium.googlesource.com/chromium/src/+/06ec26ae93ec896440311c705d994d356a02897a

commit 06ec26ae93ec896440311c705d994d356a02897a
Author: Tommy C. Li <tommycli@chromium.org>
Date:   Mon Jun 10 18:01:42 2019 +0000

    [omnibox] Rename ContextualSuggestionsService => RemoteSuggestionsService

    These suggestions requests are not always contextual, but always remote.

    This CL corrects a misnomer and is a followup to:
    https://chromium-review.googlesource.com/c/chromium/src/+/1640160

    Bug: 963173
Chromium now enforces no renderer crashes assertion on browser tests. To
allow an intentional crash test ScopedAllowRendererCrashes needs to be
added.

Chromium changes:

https://chromium.googlesource.com/chromium/src/+/922389129506cc063b83ffddc7e27e0314ead777

commit 922389129506cc063b83ffddc7e27e0314ead777
Author: Lukasz Anforowicz <lukasza@chromium.org>
Date:   Mon Jun 17 20:26:46 2019 +0000

    Start enforcing NoRendererCrashesAssertion in browser tests.

    Change-Id: Iec1b1090a675ff6af74661f5a000c41a9a8df940
    Bug: 972220

https://chromium.googlesource.com/chromium/src/+/96eca2d491cd1153b0674c8e6983312a83d55dcf

commit 96eca2d491cd1153b0674c8e6983312a83d55dcf
Author: Lukasz Anforowicz <lukasza@chromium.org>
Date:   Thu Jun 13 20:46:42 2019 +0000

    Prepare browser tests for NoRendererCrashesAssertion.

    This CL adds ScopedAllowRendererCrashes to browser tests that
    (expectedly or unexpectedly) might trigger a renderer crash.

    Right now a browser test might pass, even if a renderer process crashed
    during the test execution.  After https://crrev.com/c/1650463 a renderer
    crash will trigger an explicit test failure, but before this enforcement
    can start, existing tests that experience renderer crashes (expectedly
    or unexpectedly) need to declare this via ScopedAllowRendererCrashes.

    This CL was uploaded by git cl split.

    R=bengr@chromium.org

    Bug: 972220
It used to be disabled by default, but enabled by experiments,
so we explicitly disabled it. When we got rid of experiments
we removed the explicit disablement as it was just disabled by
default. Now Chromium flipped it to be enabled by default, so
we need to explicitly disable it again.

Removed from being explicitly disabled by us in this commit:

commit 78c8700
Author: Pranjal Jumde <pranjal.jumde@gmail.com>
Date:   Tue May 21 00:04:17 2019 -0700

    Issue 4552: Restore features to correct state after disabling field trials

Chromium change:

https://chromium.googlesource.com/chromium/src/+/0a4ecf746ae7ffb2659ae2857a730ea17c68f754

commit 0a4ecf746ae7ffb2659ae2857a730ea17c68f754
Author: Mustafa Emre Acer <meacer@chromium.org>
Date:   Wed Jun 26 23:29:50 2019 +0000

    Enable Lookalike URLs interstitial by default

    This CL enables the interstitial by default for lookalike domains in
    user's navigation history (i.e. site engagement). Matching with top
    domains is controlled by the topsites parameter.
We populate this field from `network::ResourceRequest`s
`top_frame_origin`, but it is being phased out in favor
of `net::NetworkIsolationKey`. The transition has not fully
completed yet, so in some cases `top_frame_origin` is populated
while in others `trusted_network_isolation_key` is.

cc: @iefremov

Chromium change:

https://chromium.googlesource.com/chromium/src/+/1b5366c62c02fd6edfe83703e57e4fcd14d38f64

commit 1b5366c62c02fd6edfe83703e57e4fcd14d38f64
Author: Shivani Sharma <shivanisha@chromium.org>
Date:   Tue Jul 16 20:08:13 2019 +0000

    Split cache: Network Isolation key for navigation resources

    Adds network isolation key in the ResourceRequest for navigations to be
    propagated to net::URLRequest. The key is also updated for redirects.

    Updates NavigationRequestInfo to have a network isolation key as a
    member instead of top frame origin. Also updated the corresponding
    intercepting browser tests in navigation_browsertest.

    Added browser tests to verify if the navigation resources (both main
    frame and sub frame) are expected to be cached including the redirect use
    case.

    Also removing the code in url_request_http_job.cc that was using top frame
    origin to create NIK if it was not already populated. This is because with
    this change we would have NIK being created in browser process for subresources,
    navigation resources and dedicated worker resources which were earlier using the
    top frame origin.

    (Note that sub-resources URL requests do not use this path and have their
    network isolation key filled up in the URLLoaderFactory).

    Bug: 984130
This commit is a squash of 4 commits from #3281.

- Fix setting preferred color scheme logic for brave theme change
- Fix system dark mode change affect brave theme on Win10
    When brave theme is set to dark or light, system dark mode change
    should not affect brave theme.
- CleanUp: Delete SystemThemeSupportDarkMode
    Upstream added ui::NativeTheme::SystemDarkModeSupported().
    Replace ours with upstream one.
- Add dark mode change test by modifying reg value for Windows
    This test can verify whether theme change notification is delivered
    or not.
    If brave theme option is not default, system dark theme change should
    not trigger theme change notificagtion delivery.

Chromium change:

https://chromium.googlesource.com/chromium/src/+/67fd4d9f35650a079f6a636b5d19de77856bd2cf

commit 67fd4d9f35650a079f6a636b5d19de77856bd2cf
Author: Alison Maher <almaher@microsoft.com>
Date:   Fri Jul 12 18:34:21 2019 +0000

    Set preferred color scheme for high contrast

    This change adds logic to update the preferred color scheme based on
    the OS high contrast theme. If high contrast is not enabled, preferred
    color scheme will continue to be based on the OS dark mode state.

    A PreferredColorScheme enum was added to NativeTheme to keep track
    of the current high contrast/dark mode preferred color scheme.

    The updated preferred color scheme is used to evaluate the
    prefers-color-scheme media query.

    Bug: 970285
Can't use it as is right now. The proxy is commented out in
`BraveContentBrowserClient::CreateWebSocket`.

Chromium changes:

https://chromium.googlesource.com/chromium/src/+/c570adabe2a390ad16b8bbab2b9ffdd864ff7156

commit c570adabe2a390ad16b8bbab2b9ffdd864ff7156
Author: Yoichi Osato <yoichio@chromium.org>
Date:   Tue Jun 4 05:28:31 2019 +0000

    [websocket] Reland: "Split interface mojom::WebSocketClient"

    This CL splits the interface to two parts so that WebRequestProxyingWebSocket or
    extensions proxy only handshake of WebSocket:

    interface WebSocketHandshakeClient {
      OnStartOpeningHandshake(WebSocketHandshakeRequest request);
      OnFinishOpeningHandshake(WebSocketHandshakeResponse response);
      OnAddChannelResponse(string selected_protocol, string extensions);
    };

    interface WebSocketClient {
      OnDataFrame(bool fin, WebSocketMessageType type, array<uint8> data);
      OnFlowControl(int64 quota);
      OnDropChannel(bool was_clean, uint16 code, string reason);
      OnClosingHandshake();
      OnFailChannel(string reason);
    };

    Performance gain of receive-arraybuffer-1MBx100.html:
    Mine: 1050 ms
    ToT : 1221 ms

    Relanding:
     The previous patch was reverted because of a browser test
    of "--disable-features=NetworkService". This patch fixes it to adapt
    a WebRequestAPI test to both expectations.
     Reverted-change: https://chromium-review.googlesource.com/c/chromium/src/+/1628497

    Bug: 865001, 942989

https://chromium.googlesource.com/chromium/src/+/7ce089524dc096357034700d2e5b76ff29d50388

commit 7ce089524dc096357034700d2e5b76ff29d50388
Author: Yoichi Osato <yoichio@chromium.org>
Date:   Tue Jun 18 02:10:34 2019 +0000

    Reland "[WebSocket] Add --websocket-renderer-receive-quota-max command line flag."

    Reason for reland: the culprit was not this patch.

    This patch was reverted because of compile failure on android:
    https://chromium-review.googlesource.com/c/chromium/src/+/1660391

    However, relanding this don't cause compile failure.

    Bug: 865001

commit 04d43cf58c3473d83adfed27fb8dcb2ead6f4c3a
Author: Yoichi Osato <yoichio@chromium.org>
Date:   Fri Jun 14 04:04:21 2019 +0000

    [WebSocket] Add --websocket-renderer-receive-quota-max command line flag.

    This patch adds the flag that overrides default threshold value
    that the renderer calls AddReceiveFlowControlQuota() to the browser per
    receiving this amount of data so that the browser can continue sending
    remaining data to the renderer.
    Default value is 32k Bytes.

    The more the value is, browser tends the less stop sending packets
    and then consumes more memory.

    This flag will be used to investigate the performance issue.
    You can use this flag both on chrome and content_shell:
    $ ./chrome.exe --websocket-renderer-receive-quota-max=3000000
    This flag sets the threshold 3M Bytes.

    Implementation detail:
    This patch moves the default value constant from blink to
    net/websockets/websocket_channel.h so that we can pass the command line
    flag to the renderer.
    This change also enables us to modify the value while considering sent buffer
    from a server later on for further optimization.

    Bug: 865001

https://chromium.googlesource.com/chromium/src/+/6894c69a9c069d2175794c8d11743298dddd65cf

commit 6894c69a9c069d2175794c8d11743298dddd65cf
Author: Yutaka Hirano <yhirano@chromium.org>
Date:   Fri Jun 28 12:54:45 2019 +0000

    Rename WebSocketHandshakeClient messages

    In preparation to removing AddChannelRequest, rename AddChannelResponse
    to OnConnectionEstablished. OnFinishOpeningHandshake has been confusing
    because it doesn't mean successful handshake finish (i.e., connection
    establishment). Rename it to OnResponseReceived. Rename
    OnStartOpeningHandshake to OnOpeningHandshakeStarted for consistency.

    Bug: 967524

https://chromium.googlesource.com/chromium/src/+/8e0b4d43cebd21a0be442187fe33d325939857e1

commit 8e0b4d43cebd21a0be442187fe33d325939857e1
Author: Yutaka Hirano <yhirano@chromium.org>
Date:   Thu Jul 4 07:12:38 2019 +0000

    Remove mojom::WebSocket::AddChannelRequest

    ...in order to remove the unnecessary overhead on the browser process
    when downloading / uploading payloads. With this CL, both
    mojom::WebSocket and mojom::WebSocketClient only pass though the proxy
    interface implemented in extensions/browser/api/web_request.

    With this CL,

    1) NetworkContext::CreateWebSocket takes additional parameters. This
    makes the state transition in network::WebSocket a bit simpler.

    2) blink::mojom::WebSocketConnector is introduced.
    mojom::WebSocketConnector::Connector corresponds to
    mojom::WebSocket::AddChannelRequest.

    3) mojom::WebSocket is passed as a parameter of
    mojom::WebSocketHandshakeClient::OnConnectionEstablished.

    4) Instead of mojom::WebSocket, the extensions module now receives
    a function to initiate a WebSocket opening handshake.

    5) ContentBrowserClient::WillCreateWebSocket is split into three:
    WillInterceptWebSocket, GetWebSocketOptions and CreateWebSocket. This
    incurs an additional thread hop, but it will be fixed once the
    extensions module for WebSocket is moved to the UI thread.

    This improves [1] in my environment.

    Without the change: 318MB/s
    With the change   : 389MB/s

    1: third_party/blink/perf_tests/websocket/receive-arraybuffer-1MBx100.html

    Bug: 865001, 967524, 942989
It was causing an error:

ERROR at //brave/build/android/BUILD.gn:99:17: Assignment had no effect.
  jni_package = "brave"
                ^------
You set the variable "jni_package" here and it was unused before it went
out of scope.
See //brave/build/android/BUILD.gn:93:1: whence it was called.
generate_jni("jni_headers") {
^----------------------------
See //brave/BUILD.gn:55:11: which caused the file to be included.
  deps = ["build/$target_os:brave"]
          ^-----------------------
The feature used to be disabled by default but enabled in experiments.
When we disabled experiments we removed the explicit disablement of the
feature. Now the feaure has been flipped enabled by default on Linux and
Mac/Windows are being enabled by default in upstream versions.
Explicitly disabling it again, assuming we still want to. @jumde

Chromium change:

https://chromium.googlesource.com/chromium/src/+/65932d46ee07af807713aaca6f8f081412d26db8

commit 65932d46ee07af807713aaca6f8f081412d26db8
Author: Henrik Grunell <grunell@chromium.org>
Date:   Wed Jun 12 09:05:03 2019 +0000

    Enable AudioServiceAudioStreams and AudioServiceOutOfProcess by default on Linux.

    Bug: 672469,832666

Upstream changes:

https://chromium.googlesource.com/chromium/src/+/f1623e97a8c7174f684e32267cc85872199a7a22

commit f1623e97a8c7174f684e32267cc85872199a7a22
Author: Henrik Grunell <grunell@chromium.org>
Date:   Mon Aug 12 20:58:24 2019 +0000

    Enable audio process with kill at hang by default on Mac.

    Enables features AudioServiceOutOfProcess and
    AudioServiceOutOfProcessKillAtHang by default on Mac.

    Also
    * Fixes audio process study names for Win and Linux in field trial
      config.
    * Sets default audio service teardown to 15 minutes on all
      platforms since it has been launched on all platforms (corrects
      a miss in some of the previous launches).

    This change is similar to the previous launch for Linux:
    https://chromium-review.googlesource.com/c/chromium/src/+/1648499

    Bug: 974450

https://chromium.googlesource.com/chromium/src/+/8a41113b970a3b6c892d97a0f54a76da674a216a

commit 8a41113b970a3b6c892d97a0f54a76da674a216a
Author: Henrik Grunell <grunell@chromium.org>
Date:   Mon Aug 19 09:25:19 2019 +0000

    Enable audio process with kill at hang by default on Windows.

    Bug: 974448
@mkarolin
Copy link
Contributor Author

mkarolin commented Sep 4, 2019

Closing in favor of #3358

@mkarolin mkarolin closed this Sep 4, 2019
@bsclifton bsclifton deleted the 77.0.3865.56 branch Oct 8, 2019
fmarier pushed a commit that referenced this pull request Oct 29, 2019
Modifying audit whitelist to include CRLSet URLs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

4 participants
You can’t perform that action at this time.