extra/chromium to 105.0.5195.52-1

This commit is contained in:
Kevin Mihelich 2022-08-31 00:41:57 +00:00
parent 891d25364e
commit 88b7566ec2
12 changed files with 357 additions and 714 deletions

View file

@ -1,4 +1,4 @@
From bdd6fbee97e8370a74063edc46be3978747bf867 Mon Sep 17 00:00:00 2001
From cf677b5c83f06a2c43e414c730396bb9b948fa9e Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Thu, 18 Feb 2021 19:35:58 -0700
Subject: [PATCH 1/3] widevine support for arm

View file

@ -1,4 +1,4 @@
From d067f01ffbea91b2714e91a59109813e05befbf7 Mon Sep 17 00:00:00 2001
From 3fe56be59d35a8394d00431b0ea8cc46b193ffcd Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Tue, 2 Feb 2021 13:58:59 -0700
Subject: [PATCH 2/3] Run blink bindings generation single threaded

View file

@ -1,4 +1,4 @@
From 4eb22fd6526566d7e51fd9070e2a58060cd02fa8 Mon Sep 17 00:00:00 2001
From 94e4009ec6278f0cd9f926d9b9c012ecb9d7c2c9 Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Wed, 21 Jul 2021 21:37:31 -0600
Subject: [PATCH 3/3] Fix eu-strip build for newer GCC

View file

@ -15,10 +15,10 @@
highmem=1
pkgname=chromium
pkgver=104.0.5112.101
pkgver=105.0.5195.52
pkgrel=1
_launcher_ver=8
_gcc_patchset=2
_gcc_patchset=1
pkgdesc="A web browser built for speed, simplicity, and security"
arch=('x86_64')
url="https://www.chromium.org/Home"
@ -36,40 +36,43 @@ options=('!lto') # Chromium adds its own flags for ThinLTO
source=(https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$pkgver.tar.xz
https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver/chromium-launcher-$_launcher_ver.tar.gz
https://github.com/stha09/chromium-patches/releases/download/chromium-${pkgver%%.*}-patchset-$_gcc_patchset/chromium-${pkgver%%.*}-patchset-$_gcc_patchset.tar.xz
x11-ozone-fix-X11-screensaver-suspension.patch
fix-TFLite-build-on-linux-with-system-zlib.patch
enable-GlobalMediaControlsCastStartStop.patch
roll-src-third_party-ffmpeg.patch
chromium-tflite-system-zlib.patch
remove-no-opaque-pointers-flag.patch
angle-wayland-include-protocol.patch
use-oauth2-client-switches-as-default.patch
0001-widevine-support-for-arm.patch
0002-Run-blink-bindings-generation-single-threaded.patch
0003-Fix-eu-strip-build-for-newer-GCC.patch)
sha256sums=('60f015e1559de4044cdfa3bdc1f8fde535927c8ab15b0959ccc9b6feec832f5b'
sha256sums=('dc71b2be9c30c2a7a250b3dbfb26f9b0d1aa2df7335b53ed44a203ff69947c42'
'213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a'
'ce702099849465927cf47f7bc3a4a27045d0e35e16b17481ebf35e14506bafa7'
'9956a843bc8a765c130080616ccd3ebc46ea95c3a2324c4b403bc293a8705eb2'
'f0c437c02cab7a6efc958f82fbb4ea35d5440f73d65731bad7c0dcaecb932121'
'5db1fae8a452774b5b177e493a2d1a435b980137b16ed74616d1fb86fe342ec7'
'779fb13f2494209d3a7f1f23a823e59b9dded601866d3ab095937a1a04e19ac6'
'30df59a9e2d95dcb720357ec4a83d9be51e59cc5551365da4c0073e68ccdec44'
'588c166bf748793758a7df438cfa665b32e09ca8fbd6380be28bc5984a33523c'
'ab46b2c26a4dfe86486fd7e31bfc7211c515994a61a8c0cbd742f9c9e3c91873'
'cd0d9d2a1d6a522d47c3c0891dabe4ad72eabbebc0fe5642b9e22efa3d5ee572'
'e393174d7695d0bafed69e868c5fbfecf07aa6969f3b64596d0bae8b067e1711'
'7fc0eb593ccb82ce2003ad32662e925f300a9042ef8d560ba437691c4fba12cf'
'a2df732e49f7395fceda3acb781b1b3fc4d2826461b772a6cc9ce9dfe9c1e33a'
'601c57358026bd4dd31f075b445698ccb9b730b73a50ff2b46d64b1812ebb141')
'f2c5e08e05ab6a63aba6f6ba408a5ed7b692876bb85adffeea1ac9037b8cf756'
'bfd9793c43ead48068c1f1021e9b43aec0105827100ed62a16424e49e9d49b70'
'34e038012db6e4d2bd1c5352c916e003db71e5830fe6c349449e9b4832df68f9')
# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py
# Keys are the names in the above script; values are the dependencies in Arch
declare -gA _system_libs=(
[brotli]=brotli
[dav1d]=dav1d
[ffmpeg]=ffmpeg
[flac]=flac
[fontconfig]=fontconfig
[freetype]=freetype2
[harfbuzz-ng]=harfbuzz
[icu]=icu
[jsoncpp]=jsoncpp
[libaom]=aom
[libavif]=libavif
[libdrm]=
[libjpeg]=libjpeg
[libpng]=libpng # https://crbug.com/752403#c10
[libpng]=libpng
#[libvpx]=libvpx
[libwebp]=libwebp
[libxml]=libxml2
@ -77,6 +80,7 @@ declare -gA _system_libs=(
[opus]=opus
[re2]=re2
[snappy]=snappy
[woff2]=woff2
[zlib]=minizip
)
_unwanted_bundled_libs=(
@ -125,14 +129,8 @@ prepare() {
# runtime -- this allows signing into Chromium without baked-in values
patch -Np1 -i ../use-oauth2-client-switches-as-default.patch
# Remove '-Xclang -no-opaque-pointers' flag not supported by our clang
patch -Np1 -i ../remove-no-opaque-pointers-flag.patch
# Fix build with unbundled zlip (patch from Gentoo)
patch -Np1 -i ../chromium-tflite-system-zlib.patch
# Upstream fixes
patch -Np1 -i ../x11-ozone-fix-X11-screensaver-suspension.patch
patch -Np1 -i ../fix-TFLite-build-on-linux-with-system-zlib.patch
# Revert kGlobalMediaControlsCastStartStop enabled by default
# https://crbug.com/1314342
@ -142,8 +140,14 @@ prepare() {
# https://crbug.com/1325301
patch -Rp1 -i ../roll-src-third_party-ffmpeg.patch
# https://crbug.com/angleproject/7582
patch -Np0 -i ../angle-wayland-include-protocol.patch
# Fixes for building with libstdc++ instead of libc++
patch -Np1 -i ../patches/chromium-103-VirtualCursor-std-layout.patch
patch -Np1 -i ../patches/chromium-105-Bitmap-include.patch
patch -Np1 -i ../patches/chromium-105-browser_finder-include.patch
patch -Np1 -i ../patches/chromium-105-AdjustMaskLayerGeometry-ceilf.patch
# Link to system tools required by the build
mkdir -p third_party/node/linux/node-linux-x64/bin

View file

@ -0,0 +1,38 @@
diff -upr third_party/angle.orig/BUILD.gn third_party/angle/BUILD.gn
--- third_party/angle.orig/BUILD.gn 2022-08-17 19:38:11.000000000 +0000
+++ third_party/angle/BUILD.gn 2022-08-18 11:04:09.061751111 +0000
@@ -489,6 +489,12 @@ config("angle_vulkan_wayland_config") {
if (angle_enable_vulkan && angle_use_wayland &&
defined(vulkan_wayland_include_dirs)) {
include_dirs = vulkan_wayland_include_dirs
+ } else if (angle_enable_vulkan && angle_use_wayland) {
+ include_dirs = [
+ "$wayland_gn_dir/src/src",
+ "$wayland_gn_dir/include/src",
+ "$wayland_gn_dir/include/protocol",
+ ]
}
}
@@ -1073,6 +1079,7 @@ if (angle_use_wayland) {
include_dirs = [
"$wayland_dir/egl",
"$wayland_dir/src",
+ "$wayland_gn_dir/include/protocol",
]
}
diff -upr third_party/angle.orig/src/third_party/volk/BUILD.gn third_party/angle/src/third_party/volk/BUILD.gn
--- third_party/angle.orig/src/third_party/volk/BUILD.gn 2022-08-17 19:38:12.000000000 +0000
+++ third_party/angle/src/third_party/volk/BUILD.gn 2022-08-18 11:04:36.499828006 +0000
@@ -21,6 +21,9 @@ source_set("volk") {
configs += [ "$angle_root:angle_no_cfi_icall" ]
public_deps = [ "$angle_vulkan_headers_dir:vulkan_headers" ]
if (angle_use_wayland) {
- include_dirs = [ "$wayland_dir/src" ]
+ include_dirs = [
+ "$wayland_dir/src",
+ "$wayland_gn_dir/include/protocol",
+ ]
}
}

View file

@ -1,70 +0,0 @@
--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_extractor.cc
+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_extractor.cc
@@ -21,8 +21,8 @@ limitations under the License.
#include "absl/status/status.h" // from @com_google_absl
#include "absl/strings/str_format.h" // from @com_google_absl
#include "absl/strings/string_view.h" // from @com_google_absl
-#include "contrib/minizip/ioapi.h"
-#include "contrib/minizip/unzip.h"
+#include "third_party/zlib/contrib/minizip/ioapi.h"
+#include "third_party/zlib/contrib/minizip/unzip.h"
#include "flatbuffers/flatbuffers.h" // from @flatbuffers
#include "tensorflow/lite/schema/schema_generated.h"
#include "tensorflow_lite_support/cc/common.h"
--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_populator.cc
+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_populator.cc
@@ -19,8 +19,8 @@ limitations under the License.
#include <cstring>
#include <functional>
-#include "contrib/minizip/ioapi.h"
-#include "contrib/minizip/zip.h"
+#include "third_party/zlib/contrib/minizip/ioapi.h"
+#include "third_party/zlib/contrib/minizip/zip.h"
#include "flatbuffers/flatbuffers.h" // from @flatbuffers
#include "tensorflow/lite/schema/schema_generated.h"
#include "tensorflow_lite_support/cc/common.h"
--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc
+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc
@@ -19,7 +19,7 @@ limitations under the License.
#include <cstdio>
#include "absl/strings/string_view.h" // from @com_google_absl
-#include "contrib/minizip/ioapi.h"
+#include "third_party/zlib/contrib/minizip/ioapi.h"
namespace tflite {
namespace metadata {
--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h
+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h
@@ -19,7 +19,7 @@ limitations under the License.
#include <cstdlib>
#include "absl/strings/string_view.h" // from @com_google_absl
-#include "contrib/minizip/ioapi.h"
+#include "third_party/zlib/contrib/minizip/ioapi.h"
namespace tflite {
namespace metadata {
--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.cc
+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.cc
@@ -19,7 +19,7 @@ limitations under the License.
#include <cstdio>
#include "absl/strings/string_view.h" // from @com_google_absl
-#include "contrib/minizip/ioapi.h"
+#include "third_party/zlib/contrib/minizip/ioapi.h"
namespace tflite {
namespace metadata {
--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h
+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h
@@ -19,7 +19,7 @@ limitations under the License.
#include <cstdlib>
#include "absl/strings/string_view.h" // from @com_google_absl
-#include "contrib/minizip/ioapi.h"
+#include "third_party/zlib/contrib/minizip/ioapi.h"
namespace tflite {
namespace metadata {

View file

@ -0,0 +1,291 @@
From ae0f9adb7e14c0d19ca695ef6ad40b321a8cb64c Mon Sep 17 00:00:00 2001
From: Andres Salomon <dilinger@queued.net>
Date: Mon, 8 Aug 2022 23:01:53 +0000
Subject: [PATCH] Fix TFLite build errors on linux when using the system zlib
The commit a3be9805c1601d3fabe1e5adb6b9199c033aa2c5 updated TFLite,
which included the new zip_*_mem_file.* files that include minizip's
ioapi.h. To support that, it also declared that tflite_support depends
on minizip (in third_party/tflite_support/BUILD.gn). However, that's not
enough, and results in a build error when building using the stub linux
zlib build scripts.
Other places that depend on minizip use a longer path to its header
files. For example, chrome/chrome_cleaner/zip_archiver/'s test_support
depends on minizip, and
chrome/chrome_cleaner/zip_archiver/target/zip_archiver_impl.cc
includes "third_party/zlib/contrib/minizip/ioapi.h".
The new tensorflow stuff should do the same, instead of just including
"contrib/minizip/ioapi.h". This patch fixes that, as well as other
places where ioapi.h or zip.h/unzip.h are included without a fuller
path.
Note: if you prefer to not modify the tflite code, let me know and I
can instead do a change that adds third_party/zlib as an include path
for minizip.
R=mcrouse@chromium.org, robertogden@chromium.org, sesse@chromium.org, thestig@chromium.org
Bug: 1348787
Change-Id: I922d18b3d1c0e459437624fd248c21afc1be6bb8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3797828
Commit-Queue: Andres Salomon <dilinger@queued.net>
Auto-Submit: Andres Salomon <dilinger@queued.net>
Reviewed-by: Michael Crouse <mcrouse@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1032774}
---
third_party/tflite_support/README.chromium | 2 +
...-errors-on-linux-when-using-the-syst.patch | 129 ++++++++++++++++++
.../metadata/cc/metadata_extractor.cc | 4 +-
.../metadata/cc/metadata_populator.cc | 4 +-
.../cc/utils/zip_readonly_mem_file.cc | 2 +-
.../metadata/cc/utils/zip_readonly_mem_file.h | 2 +-
.../cc/utils/zip_writable_mem_file.cc | 2 +-
.../metadata/cc/utils/zip_writable_mem_file.h | 2 +-
8 files changed, 139 insertions(+), 8 deletions(-)
create mode 100644 third_party/tflite_support/patches/0010-Fix-TFLite-build-errors-on-linux-when-using-the-syst.patch
diff --git a/third_party/tflite_support/README.chromium b/third_party/tflite_support/README.chromium
index cfaf220adb..91f4baf82b 100644
--- a/third_party/tflite_support/README.chromium
+++ b/third_party/tflite_support/README.chromium
@@ -36,6 +36,8 @@ is a no-op in chromium builds and upsets clang.
* This patch intentionally does not apply because it was made with
`--irreversible-delete` because it is deleting a large .tflite file causing
the chromium-presubmit bot to fail.
+10) Fix minizip path inclusion. Upstream uses contrib/minizip/, but chromium
+uses third_party/zlib/contrib/minizip/.
Update Process (internal: http://shortn/_nwz8liqimy):
1) Run these commands:
diff --git a/third_party/tflite_support/patches/0010-Fix-TFLite-build-errors-on-linux-when-using-the-syst.patch b/third_party/tflite_support/patches/0010-Fix-TFLite-build-errors-on-linux-when-using-the-syst.patch
new file mode 100644
index 0000000000..34acf277fc
--- /dev/null
+++ b/third_party/tflite_support/patches/0010-Fix-TFLite-build-errors-on-linux-when-using-the-syst.patch
@@ -0,0 +1,129 @@
+From 12da2fa8f2d779e2fc14f48de73af79e9040c141 Mon Sep 17 00:00:00 2001
+From: Andres Salomon <dilinger@queued.net>
+Date: Sun, 31 Jul 2022 19:07:24 -0400
+Subject: [PATCH] Fix TFLite build errors on linux when using the system zlib
+
+The commit a3be9805c1601d3fabe1e5adb6b9199c033aa2c5 updated TFLite,
+which included the new zip_*_mem_file.* files that include minizip's
+ioapi.h. To support that, it also declared that tflite_support depends
+on minizip (in third_party/tflite_support/BUILD.gn). However, that's not
+enough, and results in a build error when building using the stub linux
+zlib build scripts.
+
+Other places that depend on minizip use a longer path to its header
+files. For example, chrome/chrome_cleaner/zip_archiver/'s test_support
+depends on minizip, and
+chrome/chrome_cleaner/zip_archiver/target/zip_archiver_impl.cc
+includes "third_party/zlib/contrib/minizip/ioapi.h".
+
+The new tensorflow stuff should do the same, instead of just including
+"contrib/minizip/ioapi.h". This patch fixes that, as well as other
+places where ioapi.h or zip.h/unzip.h are included without a fuller
+path.
+---
+ .../tensorflow_lite_support/metadata/cc/metadata_extractor.cc | 4 ++--
+ .../tensorflow_lite_support/metadata/cc/metadata_populator.cc | 4 ++--
+ .../metadata/cc/utils/zip_readonly_mem_file.cc | 2 +-
+ .../metadata/cc/utils/zip_readonly_mem_file.h | 2 +-
+ .../metadata/cc/utils/zip_writable_mem_file.cc | 2 +-
+ .../metadata/cc/utils/zip_writable_mem_file.h | 2 +-
+ 6 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_extractor.cc b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_extractor.cc
+index 2a72338741626..62d0910182877 100644
+--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_extractor.cc
++++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_extractor.cc
+@@ -21,14 +21,14 @@ limitations under the License.
+ #include "absl/status/status.h" // from @com_google_absl
+ #include "absl/strings/str_format.h" // from @com_google_absl
+ #include "absl/strings/string_view.h" // from @com_google_absl
+-#include "contrib/minizip/ioapi.h"
+-#include "contrib/minizip/unzip.h"
+ #include "flatbuffers/flatbuffers.h" // from @flatbuffers
+ #include "tensorflow/lite/schema/schema_generated.h"
+ #include "tensorflow_lite_support/cc/common.h"
+ #include "tensorflow_lite_support/cc/port/status_macros.h"
+ #include "tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h"
+ #include "tensorflow_lite_support/metadata/metadata_schema_generated.h"
++#include "third_party/zlib/contrib/minizip/ioapi.h"
++#include "third_party/zlib/contrib/minizip/unzip.h"
+
+ namespace tflite {
+ namespace metadata {
+diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_populator.cc b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_populator.cc
+index 299ade3e95d54..8e13fa63dafbc 100644
+--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_populator.cc
++++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_populator.cc
+@@ -19,8 +19,6 @@ limitations under the License.
+ #include <cstring>
+ #include <functional>
+
+-#include "contrib/minizip/ioapi.h"
+-#include "contrib/minizip/zip.h"
+ #include "flatbuffers/flatbuffers.h" // from @flatbuffers
+ #include "tensorflow/lite/schema/schema_generated.h"
+ #include "tensorflow_lite_support/cc/common.h"
+@@ -28,6 +26,8 @@ limitations under the License.
+ #include "tensorflow_lite_support/cc/port/statusor.h"
+ #include "tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h"
+ #include "tensorflow_lite_support/metadata/metadata_schema_generated.h"
++#include "third_party/zlib/contrib/minizip/ioapi.h"
++#include "third_party/zlib/contrib/minizip/zip.h"
+
+ namespace tflite {
+ namespace metadata {
+diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc
+index 392b6b411fe03..525ae4a2b45bd 100644
+--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc
++++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc
+@@ -19,7 +19,7 @@ limitations under the License.
+ #include <cstdio>
+
+ #include "absl/strings/string_view.h" // from @com_google_absl
+-#include "contrib/minizip/ioapi.h"
++#include "third_party/zlib/contrib/minizip/ioapi.h"
+
+ namespace tflite {
+ namespace metadata {
+diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h
+index a1799ff509de5..72413a0a56252 100644
+--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h
++++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h
+@@ -19,7 +19,7 @@ limitations under the License.
+ #include <cstdlib>
+
+ #include "absl/strings/string_view.h" // from @com_google_absl
+-#include "contrib/minizip/ioapi.h"
++#include "third_party/zlib/contrib/minizip/ioapi.h"
+
+ namespace tflite {
+ namespace metadata {
+diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.cc b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.cc
+index 38ad17ad8935c..3ba91b5e22890 100644
+--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.cc
++++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.cc
+@@ -19,7 +19,7 @@ limitations under the License.
+ #include <cstdio>
+
+ #include "absl/strings/string_view.h" // from @com_google_absl
+-#include "contrib/minizip/ioapi.h"
++#include "third_party/zlib/contrib/minizip/ioapi.h"
+
+ namespace tflite {
+ namespace metadata {
+diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h
+index 30e42fdb72a31..3d329925df756 100644
+--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h
++++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h
+@@ -19,7 +19,7 @@ limitations under the License.
+ #include <cstdlib>
+
+ #include "absl/strings/string_view.h" // from @com_google_absl
+-#include "contrib/minizip/ioapi.h"
++#include "third_party/zlib/contrib/minizip/ioapi.h"
+
+ namespace tflite {
+ namespace metadata {
+--
+2.30.2
+
diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_extractor.cc b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_extractor.cc
index 2a72338741..62d0910182 100644
--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_extractor.cc
+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_extractor.cc
@@ -21,14 +21,14 @@ limitations under the License.
#include "absl/status/status.h" // from @com_google_absl
#include "absl/strings/str_format.h" // from @com_google_absl
#include "absl/strings/string_view.h" // from @com_google_absl
-#include "contrib/minizip/ioapi.h"
-#include "contrib/minizip/unzip.h"
#include "flatbuffers/flatbuffers.h" // from @flatbuffers
#include "tensorflow/lite/schema/schema_generated.h"
#include "tensorflow_lite_support/cc/common.h"
#include "tensorflow_lite_support/cc/port/status_macros.h"
#include "tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h"
#include "tensorflow_lite_support/metadata/metadata_schema_generated.h"
+#include "third_party/zlib/contrib/minizip/ioapi.h"
+#include "third_party/zlib/contrib/minizip/unzip.h"
namespace tflite {
namespace metadata {
diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_populator.cc b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_populator.cc
index 299ade3e95..8e13fa63da 100644
--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_populator.cc
+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/metadata_populator.cc
@@ -19,8 +19,6 @@ limitations under the License.
#include <cstring>
#include <functional>
-#include "contrib/minizip/ioapi.h"
-#include "contrib/minizip/zip.h"
#include "flatbuffers/flatbuffers.h" // from @flatbuffers
#include "tensorflow/lite/schema/schema_generated.h"
#include "tensorflow_lite_support/cc/common.h"
@@ -28,6 +26,8 @@ limitations under the License.
#include "tensorflow_lite_support/cc/port/statusor.h"
#include "tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h"
#include "tensorflow_lite_support/metadata/metadata_schema_generated.h"
+#include "third_party/zlib/contrib/minizip/ioapi.h"
+#include "third_party/zlib/contrib/minizip/zip.h"
namespace tflite {
namespace metadata {
diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc
index 392b6b411f..525ae4a2b4 100644
--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc
+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.cc
@@ -19,7 +19,7 @@ limitations under the License.
#include <cstdio>
#include "absl/strings/string_view.h" // from @com_google_absl
-#include "contrib/minizip/ioapi.h"
+#include "third_party/zlib/contrib/minizip/ioapi.h"
namespace tflite {
namespace metadata {
diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h
index a1799ff509..72413a0a56 100644
--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h
+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_readonly_mem_file.h
@@ -19,7 +19,7 @@ limitations under the License.
#include <cstdlib>
#include "absl/strings/string_view.h" // from @com_google_absl
-#include "contrib/minizip/ioapi.h"
+#include "third_party/zlib/contrib/minizip/ioapi.h"
namespace tflite {
namespace metadata {
diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.cc b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.cc
index 38ad17ad89..3ba91b5e22 100644
--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.cc
+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.cc
@@ -19,7 +19,7 @@ limitations under the License.
#include <cstdio>
#include "absl/strings/string_view.h" // from @com_google_absl
-#include "contrib/minizip/ioapi.h"
+#include "third_party/zlib/contrib/minizip/ioapi.h"
namespace tflite {
namespace metadata {
diff --git a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h
index 30e42fdb72..3d329925df 100644
--- a/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h
+++ b/third_party/tflite_support/src/tensorflow_lite_support/metadata/cc/utils/zip_writable_mem_file.h
@@ -19,7 +19,7 @@ limitations under the License.
#include <cstdlib>
#include "absl/strings/string_view.h" // from @com_google_absl
-#include "contrib/minizip/ioapi.h"
+#include "third_party/zlib/contrib/minizip/ioapi.h"
namespace tflite {
namespace metadata {

View file

@ -1,45 +0,0 @@
From c2d0133f47afb59b4ce64e42215d1d053f15250a Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
Date: Tue, 13 Apr 2021 23:21:42 +0000
Subject: [PATCH] fix crash in ThemeService
ThemeSyncableService and ThemeService are owned by each other. On
destruction of ThemeService, ThemeSyncableService gets destructed as
well, but calls RemoveObserver of partly destructed ThemeService object.
To avoid already destructed |observers_| list, move it before
|theme_syncable_service_| definition.
Bug: 1190561
Change-Id: I4dc2c990d589071d97b7fa737afef54463c84751
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2821311
Commit-Queue: Peter Kasting <pkasting@chromium.org>
Reviewed-by: Peter Kasting <pkasting@chromium.org>
Cr-Commit-Position: refs/heads/master@{#872164}
---
chrome/browser/themes/theme_service.h | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/chrome/browser/themes/theme_service.h b/chrome/browser/themes/theme_service.h
index 592d40ae9de0f..337dfac9a040f 100644
--- a/chrome/browser/themes/theme_service.h
+++ b/chrome/browser/themes/theme_service.h
@@ -299,6 +299,10 @@ class ThemeService : public KeyedService,
// The number of infobars currently displayed.
int number_of_reinstallers_ = 0;
+ // Declared before |theme_syncable_service_|, because ThemeSyncableService
+ // removes itself from the |observers_| list on destruction.
+ base::ObserverList<ThemeServiceObserver> observers_;
+
std::unique_ptr<ThemeSyncableService> theme_syncable_service_;
#if BUILDFLAG(ENABLE_EXTENSIONS)
@@ -320,8 +324,6 @@ class ThemeService : public KeyedService,
ScopedObserver<ui::NativeTheme, ui::NativeThemeObserver>
native_theme_observer_{this};
- base::ObserverList<ThemeServiceObserver> observers_;
-
base::WeakPtrFactory<ThemeService> weak_ptr_factory_{this};
DISALLOW_COPY_AND_ASSIGN(ThemeService);

View file

@ -1,37 +0,0 @@
From 359b22d3f775afa33cca9e4f8fb57eadd0ec4118 Mon Sep 17 00:00:00 2001
From: Nico Weber <thakis@chromium.org>
Date: Fri, 23 Apr 2021 16:22:19 +0000
Subject: [PATCH] Make dom distiller protoc plugin explicitly call py2.7
With this, chrome builds with when `/usr/bin/env python` is py3.
Bug: 1202134
Change-Id: Ibbd97a1311ccb34d46f266912c871fd0522f9535
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2848445
Commit-Queue: Nico Weber <thakis@chromium.org>
Commit-Queue: Yaron Friedman <yfriedman@chromium.org>
Commit-Queue: Dirk Pranke <dpranke@google.com>
Auto-Submit: Nico Weber <thakis@chromium.org>
Reviewed-by: Yaron Friedman <yfriedman@chromium.org>
Reviewed-by: Dirk Pranke <dpranke@google.com>
Cr-Commit-Position: refs/heads/master@{#875702}
---
.../dom_distiller_js/protoc_plugins/json_values_converter.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/third_party/dom_distiller_js/protoc_plugins/json_values_converter.py b/third_party/dom_distiller_js/protoc_plugins/json_values_converter.py
index e86a88c759fcb..cae1a998c4650 100755
--- a/third_party/dom_distiller_js/protoc_plugins/json_values_converter.py
+++ b/third_party/dom_distiller_js/protoc_plugins/json_values_converter.py
@@ -1,7 +1,10 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2.7
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+#
+# TODO(crbug.com/1202134): Switch run line back to just "python"
+# once things are py3-compatible.
"""protoc plugin to create C++ reader/writer for JSON-encoded protobufs

View file

@ -1,18 +0,0 @@
--- chromium-104.0.5112.57/build/config/compiler/BUILD.gn.orig 2022-07-26 08:11:54.192788877 +0000
+++ chromium-104.0.5112.57/build/config/compiler/BUILD.gn 2022-07-26 08:12:10.019328155 +0000
@@ -1540,15 +1540,6 @@ config("default_warnings") {
cflags += [ "-Wno-unqualified-std-cast-call" ]
}
- if (!is_nacl && !(is_chromeos ||
- default_toolchain == "//build/toolchain/cros:target")) {
- # TODO(https://crbug.com/1322823): Remove flags once potential miscompile is investigated.
- cflags += [
- "-Xclang",
- "-no-opaque-pointers",
- ]
- }
-
if (is_fuchsia) {
# TODO(https://bugs.chromium.org/p/fuchsia/issues/detail?id=77383)
cflags += [ "-Wno-deprecated-copy" ]

View file

@ -1,30 +0,0 @@
From 79819c94f27524005889def53740c97a32cd7747 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
Date: Fri, 16 Apr 2021 20:57:15 +0000
Subject: [PATCH] [unbundle] Use char16_t as UCHAR_TYPE
Overriding UCHAR_TYPE was dropped with:
https://chromium-review.googlesource.com/c/chromium/deps/icu/+/2732628
Bug: 911896
Change-Id: I4c1172aab445c82ba247b1162b8484ed0db9c381
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2830820
Commit-Queue: Stephan Hartmann <stha09@googlemail.com>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#873470}
---
build/linux/unbundle/icu.gn | 1 -
1 file changed, 1 deletion(-)
diff --git a/build/linux/unbundle/icu.gn b/build/linux/unbundle/icu.gn
index 0f52fc11e79e6..6f3f8438bd854 100644
--- a/build/linux/unbundle/icu.gn
+++ b/build/linux/unbundle/icu.gn
@@ -16,7 +16,6 @@ config("icu_config") {
defines = [
"USING_SYSTEM_ICU=1",
"ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC",
- "UCHAR_TYPE=uint16_t",
# U_EXPORT (defined in unicode/platform.h) is used to set public visibility
# on classes through the U_COMMON_API and U_I18N_API macros (among others).

View file

@ -1,490 +0,0 @@
From 8c1ebea5f601b0b5247535dcdfd01755f3e6e1a6 Mon Sep 17 00:00:00 2001
From: Andrew Wolfers <aswolfers@chromium.org>
Date: Tue, 19 Jul 2022 15:01:25 +0000
Subject: [PATCH] [x11][ozone] Fix X11 screensaver suspension.
X11 screensaver suspension was broken by https://crrev.com/c/3507472,
in which usage patterns were migrated to a non-stacking paradigm.
"Non-stacking" screensaver suspension describes an overriding behavior,
such that the last suspending or un-suspending call defines the current
state. Conversely, a "stacking" screensaver suspension paradigm allows
for parallel suspension, such that suspending calls are expected to be
matched by an equal number of un-suspending calls.
Documentation for `PlatformScreen::SetScreenSaverSuspended` (inherited
by `X11ScreenOzone`) explains that it should be used in a non-stacking
manner [1], which contradicts the child class's underlying
implementation [2].
> If XScreenSaverSuspend is called multiple times with suspend set to
> 'True', it must be called an equal number of times with suspend set
> to 'False' in order for the screensaver timer to be restarted.
This change updates the documentation/API of the `PlatformScreen`
parent class to correctly describe the stacking behavior of child class
`X11ScreenOzone`. This change also updates the implementation of
`WaylandScreen` to a stacking version. Lastly, this change updates the
call sites of `PlatformScreen` according to the API change.
[1] https://crsrc.org/c/ui/ozone/public/platform_screen.h;l=96
[2] https://linux.die.net/man/3/xscreensaverunsetattributes
Bug: b:193670013
Bug: b:196213351
Bug: 1329573
Bug: 1339361
Change-Id: I60975c8da9f86a0f26f3c32cf49c4a7eeeea6a12
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3759067
Commit-Queue: Andrew Wolfers <aswolfers@chromium.org>
Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1025717}
(cherry picked from commit e61f08f8dbf1ec7cead427f3c497934e9d0db35f)
---
ui/aura/screen_ozone.cc | 14 ++++++--
ui/aura/screen_ozone.h | 29 ++++++++++++----
ui/base/x/x11_util.h | 4 ++-
ui/display/screen.cc | 21 ++----------
ui/display/screen.h | 34 ++++++-------------
.../platform/wayland/host/wayland_screen.cc | 31 +++++++++++++++++
.../platform/wayland/host/wayland_screen.h | 30 +++++++++++++++-
ui/ozone/platform/x11/x11_screen_ozone.cc | 27 +++++++++++++--
ui/ozone/platform/x11/x11_screen_ozone.h | 19 ++++++++++-
ui/ozone/public/platform_screen.cc | 8 +++--
ui/ozone/public/platform_screen.h | 26 +++++++++++---
11 files changed, 182 insertions(+), 61 deletions(-)
diff --git a/ui/aura/screen_ozone.cc b/ui/aura/screen_ozone.cc
index a78a6a48f1..09f62dc982 100644
--- a/ui/aura/screen_ozone.cc
+++ b/ui/aura/screen_ozone.cc
@@ -4,6 +4,8 @@
#include "ui/aura/screen_ozone.h"
+#include <memory>
+
#include "ui/aura/client/screen_position_client.h"
#include "ui/aura/window.h"
#include "ui/aura/window_tree_host.h"
@@ -108,8 +110,16 @@ display::Display ScreenOzone::GetPrimaryDisplay() const {
}
#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX)
-bool ScreenOzone::SetScreenSaverSuspended(bool suspend) {
- return platform_screen_->SetScreenSaverSuspended(suspend);
+ScreenOzone::ScreenSaverSuspenderOzone::ScreenSaverSuspenderOzone(
+ std::unique_ptr<ui::PlatformScreen::PlatformScreenSaverSuspender> suspender)
+ : suspender_(std::move(suspender)) {}
+
+ScreenOzone::ScreenSaverSuspenderOzone::~ScreenSaverSuspenderOzone() = default;
+
+std::unique_ptr<display::Screen::ScreenSaverSuspender>
+ScreenOzone::SuspendScreenSaver() {
+ return std::make_unique<ScreenSaverSuspenderOzone>(
+ platform_screen_->SuspendScreenSaver());
}
#endif // BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX)
diff --git a/ui/aura/screen_ozone.h b/ui/aura/screen_ozone.h
index 2970a0e0e7..d033abf366 100644
--- a/ui/aura/screen_ozone.h
+++ b/ui/aura/screen_ozone.h
@@ -11,10 +11,7 @@
#include "build/chromeos_buildflags.h"
#include "ui/aura/aura_export.h"
#include "ui/display/screen.h"
-
-namespace ui {
-class PlatformScreen;
-}
+#include "ui/ozone/public/platform_screen.h"
namespace aura {
@@ -48,6 +45,10 @@ class AURA_EXPORT ScreenOzone : public display::Screen {
display::Display GetDisplayMatching(
const gfx::Rect& match_rect) const override;
display::Display GetPrimaryDisplay() const override;
+#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX)
+ std::unique_ptr<display::Screen::ScreenSaverSuspender> SuspendScreenSaver()
+ override;
+#endif // BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX)
bool IsScreenSaverActive() const override;
base::TimeDelta CalculateIdleTime() const override;
void AddObserver(display::DisplayObserver* observer) override;
@@ -65,11 +66,27 @@ class AURA_EXPORT ScreenOzone : public display::Screen {
protected:
ui::PlatformScreen* platform_screen() { return platform_screen_.get(); }
+ private:
#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX)
- bool SetScreenSaverSuspended(bool suspend) override;
+ class ScreenSaverSuspenderOzone
+ : public display::Screen::ScreenSaverSuspender {
+ public:
+ explicit ScreenSaverSuspenderOzone(
+ std::unique_ptr<ui::PlatformScreen::PlatformScreenSaverSuspender>
+ suspender);
+
+ ScreenSaverSuspenderOzone(const ScreenSaverSuspenderOzone&) = delete;
+ ScreenSaverSuspenderOzone& operator=(const ScreenSaverSuspenderOzone&) =
+ delete;
+
+ ~ScreenSaverSuspenderOzone() override;
+
+ private:
+ std::unique_ptr<ui::PlatformScreen::PlatformScreenSaverSuspender>
+ suspender_;
+ };
#endif // BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX)
- private:
gfx::AcceleratedWidget GetAcceleratedWidgetForWindow(
aura::Window* window) const;
diff --git a/ui/base/x/x11_util.h b/ui/base/x/x11_util.h
index bf36efe170..0692571582 100644
--- a/ui/base/x/x11_util.h
+++ b/ui/base/x/x11_util.h
@@ -337,7 +337,9 @@ COMPONENT_EXPORT(UI_BASE_X) bool IsCompositingManagerPresent();
COMPONENT_EXPORT(UI_BASE_X) bool IsX11WindowFullScreen(x11::Window window);
// Suspends or resumes the X screen saver, and returns whether the operation was
-// successful. Must be called on the UI thread.
+// successful. Must be called on the UI thread. If called multiple times with
+// |suspend| set to true, the screen saver is not un-suspended until this method
+// is called an equal number of times with |suspend| set to false.
COMPONENT_EXPORT(UI_BASE_X) bool SuspendX11ScreenSaver(bool suspend);
// Returns true if the window manager supports the given hint.
diff --git a/ui/display/screen.cc b/ui/display/screen.cc
index b9723889ce..70dc0a9f5c 100644
--- a/ui/display/screen.cc
+++ b/ui/display/screen.cc
@@ -85,26 +85,11 @@ void Screen::SetDisplayForNewWindows(int64_t display_id) {
}
#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX)
-std::unique_ptr<Screen::ScreenSaverSuspender> Screen::SuspendScreenSaver() {
- SetScreenSaverSuspended(true);
- screen_saver_suspension_count_++;
- return base::WrapUnique(new Screen::ScreenSaverSuspender(this));
-}
-
-Screen::ScreenSaverSuspender::~ScreenSaverSuspender() {
- // Check that this suspender still refers to the active screen. Particularly
- // in tests, the screen might be destructed before the suspender.
- if (screen_ == GetScreen()) {
- screen_->screen_saver_suspension_count_--;
- if (screen_->screen_saver_suspension_count_ == 0) {
- screen_->SetScreenSaverSuspended(false);
- }
- }
-}
+Screen::ScreenSaverSuspender::~ScreenSaverSuspender() = default;
-bool Screen::SetScreenSaverSuspended(bool suspend) {
+std::unique_ptr<Screen::ScreenSaverSuspender> Screen::SuspendScreenSaver() {
NOTIMPLEMENTED_LOG_ONCE();
- return false;
+ return nullptr;
}
#endif // BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX)
diff --git a/ui/display/screen.h b/ui/display/screen.h
index a86c5b63cc..d04534006f 100644
--- a/ui/display/screen.h
+++ b/ui/display/screen.h
@@ -133,28 +133,22 @@ class DISPLAY_EXPORT Screen {
// its existence.
class ScreenSaverSuspender {
public:
- ScreenSaverSuspender(const Screen&) = delete;
- ScreenSaverSuspender& operator=(const Screen&) = delete;
+ ScreenSaverSuspender() = default;
- // Notifies |screen_| that this instance is being destructed, and causes its
- // platform-specific screensaver to be un-suspended if this is the last such
- // remaining instance.
- ~ScreenSaverSuspender();
+ ScreenSaverSuspender(const ScreenSaverSuspender&) = delete;
+ ScreenSaverSuspender& operator=(const ScreenSaverSuspender&) = delete;
- private:
- friend class Screen;
-
- explicit ScreenSaverSuspender(Screen* screen) : screen_(screen) {}
-
- Screen* screen_;
+ // Causes the platform-specific screensaver to be un-suspended iff this is
+ // the last remaining instance.
+ virtual ~ScreenSaverSuspender() = 0;
};
// Suspends the platform-specific screensaver until the returned
- // |ScreenSaverSuspender| is destructed. This method allows stacking multiple
- // overlapping calls, such that the platform-specific screensaver will not be
- // un-suspended until all returned |SreenSaverSuspender| instances have been
- // destructed.
- std::unique_ptr<ScreenSaverSuspender> SuspendScreenSaver();
+ // |ScreenSaverSuspender| is destructed, or returns nullptr if suspension
+ // failed. This method allows stacking multiple overlapping calls, such that
+ // the platform-specific screensaver will not be un-suspended until all
+ // returned |ScreenSaverSuspender| instances have been destructed.
+ virtual std::unique_ptr<ScreenSaverSuspender> SuspendScreenSaver();
#endif // BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX)
// Returns whether the screensaver is currently running.
@@ -200,12 +194,6 @@ class DISPLAY_EXPORT Screen {
const gfx::GpuExtraInfo& gpu_extra_info);
protected:
-#if BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX)
- // Suspends or un-suspends the platform-specific screensaver, and returns
- // whether the operation was successful.
- virtual bool SetScreenSaverSuspended(bool suspend);
-#endif // BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(IS_LINUX)
-
void set_shutdown(bool shutdown) { shutdown_ = shutdown; }
private:
diff --git a/ui/ozone/platform/wayland/host/wayland_screen.cc b/ui/ozone/platform/wayland/host/wayland_screen.cc
index 0c7dc5c02b..18cd81b472 100644
--- a/ui/ozone/platform/wayland/host/wayland_screen.cc
+++ b/ui/ozone/platform/wayland/host/wayland_screen.cc
@@ -327,6 +327,37 @@ display::Display WaylandScreen::GetDisplayMatching(
return display_matching ? *display_matching : GetPrimaryDisplay();
}
+std::unique_ptr<WaylandScreen::WaylandScreenSaverSuspender>
+WaylandScreen::WaylandScreenSaverSuspender::Create(WaylandScreen& screen) {
+ auto suspender = base::WrapUnique(new WaylandScreenSaverSuspender(screen));
+ if (suspender->is_suspending_) {
+ screen.screen_saver_suspension_count_++;
+ return suspender;
+ }
+
+ return nullptr;
+}
+
+WaylandScreen::WaylandScreenSaverSuspender::WaylandScreenSaverSuspender(
+ WaylandScreen& screen)
+ : screen_(screen.GetWeakPtr()) {
+ is_suspending_ = screen.SetScreenSaverSuspended(true);
+}
+
+WaylandScreen::WaylandScreenSaverSuspender::~WaylandScreenSaverSuspender() {
+ if (screen_ && is_suspending_) {
+ screen_->screen_saver_suspension_count_--;
+ if (screen_->screen_saver_suspension_count_ == 0) {
+ screen_->SetScreenSaverSuspended(false);
+ }
+ }
+}
+
+std::unique_ptr<PlatformScreen::PlatformScreenSaverSuspender>
+WaylandScreen::SuspendScreenSaver() {
+ return WaylandScreenSaverSuspender::Create(*this);
+}
+
bool WaylandScreen::SetScreenSaverSuspended(bool suspend) {
if (!connection_->zwp_idle_inhibit_manager())
return false;
diff --git a/ui/ozone/platform/wayland/host/wayland_screen.h b/ui/ozone/platform/wayland/host/wayland_screen.h
index 87358f4f06..8e5515104a 100644
--- a/ui/ozone/platform/wayland/host/wayland_screen.h
+++ b/ui/ozone/platform/wayland/host/wayland_screen.h
@@ -68,7 +68,8 @@ class WaylandScreen : public PlatformScreen {
const gfx::Point& point) const override;
display::Display GetDisplayMatching(
const gfx::Rect& match_rect) const override;
- bool SetScreenSaverSuspended(bool suspend) override;
+ std::unique_ptr<PlatformScreen::PlatformScreenSaverSuspender>
+ SuspendScreenSaver() override;
bool IsScreenSaverActive() const override;
base::TimeDelta CalculateIdleTime() const override;
void AddObserver(display::DisplayObserver* observer) override;
@@ -76,7 +77,33 @@ class WaylandScreen : public PlatformScreen {
std::vector<base::Value> GetGpuExtraInfo(
const gfx::GpuExtraInfo& gpu_extra_info) override;
+ protected:
+ // Suspends or un-suspends the platform-specific screensaver, and returns
+ // whether the operation was successful. Can be called more than once with the
+ // same value for |suspend|, but those states should not stack: the first
+ // alternating value should toggle the state of the suspend.
+ bool SetScreenSaverSuspended(bool suspend);
+
private:
+ class WaylandScreenSaverSuspender
+ : public PlatformScreen::PlatformScreenSaverSuspender {
+ public:
+ WaylandScreenSaverSuspender(const WaylandScreenSaverSuspender&) = delete;
+ WaylandScreenSaverSuspender& operator=(const WaylandScreenSaverSuspender&) =
+ delete;
+
+ ~WaylandScreenSaverSuspender() override;
+
+ static std::unique_ptr<WaylandScreenSaverSuspender> Create(
+ WaylandScreen& screen);
+
+ private:
+ explicit WaylandScreenSaverSuspender(WaylandScreen& screen);
+
+ base::WeakPtr<WaylandScreen> screen_;
+ bool is_suspending_ = false;
+ };
+
// All parameters are in DIP screen coordinates/units except |physical_size|,
// which is in physical pixels.
void AddOrUpdateDisplay(uint32_t output_id,
@@ -103,6 +130,7 @@ class WaylandScreen : public PlatformScreen {
#endif
wl::Object<zwp_idle_inhibitor_v1> idle_inhibitor_;
+ uint32_t screen_saver_suspension_count_ = 0;
base::WeakPtrFactory<WaylandScreen> weak_factory_;
};
diff --git a/ui/ozone/platform/x11/x11_screen_ozone.cc b/ui/ozone/platform/x11/x11_screen_ozone.cc
index 53265ab58a..b450df9c83 100644
--- a/ui/ozone/platform/x11/x11_screen_ozone.cc
+++ b/ui/ozone/platform/x11/x11_screen_ozone.cc
@@ -4,6 +4,8 @@
#include "ui/ozone/platform/x11/x11_screen_ozone.h"
+#include <memory>
+
#include "base/containers/flat_set.h"
#include "ui/base/linux/linux_desktop.h"
#include "ui/base/x/x11_idle_query.h"
@@ -131,8 +133,29 @@ display::Display X11ScreenOzone::GetDisplayMatching(
return matching_display ? *matching_display : GetPrimaryDisplay();
}
-bool X11ScreenOzone::SetScreenSaverSuspended(bool suspend) {
- return SuspendX11ScreenSaver(suspend);
+X11ScreenOzone::X11ScreenSaverSuspender::X11ScreenSaverSuspender() {
+ is_suspending_ = SuspendX11ScreenSaver(true);
+}
+
+std::unique_ptr<X11ScreenOzone::X11ScreenSaverSuspender>
+X11ScreenOzone::X11ScreenSaverSuspender::Create() {
+ auto suspender = base::WrapUnique(new X11ScreenSaverSuspender());
+ if (suspender->is_suspending_) {
+ return suspender;
+ }
+
+ return nullptr;
+}
+
+X11ScreenOzone::X11ScreenSaverSuspender::~X11ScreenSaverSuspender() {
+ if (is_suspending_) {
+ SuspendX11ScreenSaver(false);
+ }
+}
+
+std::unique_ptr<PlatformScreen::PlatformScreenSaverSuspender>
+X11ScreenOzone::SuspendScreenSaver() {
+ return X11ScreenSaverSuspender::Create();
}
bool X11ScreenOzone::IsScreenSaverActive() const {
diff --git a/ui/ozone/platform/x11/x11_screen_ozone.h b/ui/ozone/platform/x11/x11_screen_ozone.h
index d86acae9aa..81e0fd13d8 100644
--- a/ui/ozone/platform/x11/x11_screen_ozone.h
+++ b/ui/ozone/platform/x11/x11_screen_ozone.h
@@ -50,7 +50,8 @@ class X11ScreenOzone : public PlatformScreen,
const gfx::Point& point) const override;
display::Display GetDisplayMatching(
const gfx::Rect& match_rect) const override;
- bool SetScreenSaverSuspended(bool suspend) override;
+ std::unique_ptr<PlatformScreen::PlatformScreenSaverSuspender>
+ SuspendScreenSaver() override;
bool IsScreenSaverActive() const override;
base::TimeDelta CalculateIdleTime() const override;
void AddObserver(display::DisplayObserver* observer) override;
@@ -66,6 +67,22 @@ class X11ScreenOzone : public PlatformScreen,
private:
friend class X11ScreenOzoneTest;
+ class X11ScreenSaverSuspender
+ : public PlatformScreen::PlatformScreenSaverSuspender {
+ public:
+ X11ScreenSaverSuspender(const X11ScreenSaverSuspender&) = delete;
+ X11ScreenSaverSuspender& operator=(const X11ScreenSaverSuspender&) = delete;
+
+ ~X11ScreenSaverSuspender() override;
+
+ static std::unique_ptr<X11ScreenSaverSuspender> Create();
+
+ private:
+ X11ScreenSaverSuspender();
+
+ bool is_suspending_ = false;
+ };
+
// Overridden from ui::XDisplayManager::Delegate:
void OnXDisplayListUpdated() override;
float GetXDisplayScaleFactor() const override;
diff --git a/ui/ozone/public/platform_screen.cc b/ui/ozone/public/platform_screen.cc
index 98f599aa41..2353208396 100644
--- a/ui/ozone/public/platform_screen.cc
+++ b/ui/ozone/public/platform_screen.cc
@@ -30,9 +30,13 @@ std::string PlatformScreen::GetCurrentWorkspace() {
return {};
}
-bool PlatformScreen::SetScreenSaverSuspended(bool suspend) {
+PlatformScreen::PlatformScreenSaverSuspender::~PlatformScreenSaverSuspender() =
+ default;
+
+std::unique_ptr<PlatformScreen::PlatformScreenSaverSuspender>
+PlatformScreen::SuspendScreenSaver() {
NOTIMPLEMENTED_LOG_ONCE();
- return false;
+ return nullptr;
}
bool PlatformScreen::IsScreenSaverActive() const {
diff --git a/ui/ozone/public/platform_screen.h b/ui/ozone/public/platform_screen.h
index 091220a99f..e4adfafce3 100644
--- a/ui/ozone/public/platform_screen.h
+++ b/ui/ozone/public/platform_screen.h
@@ -89,11 +89,27 @@ class COMPONENT_EXPORT(OZONE_BASE) PlatformScreen {
virtual display::Display GetDisplayMatching(
const gfx::Rect& match_rect) const = 0;
- // Suspends or un-suspends the platform-specific screensaver, and returns
- // whether the operation was successful. Can be called more than once with the
- // same value for |suspend|, but those states should not stack: the first
- // alternating value should toggle the state of the suspend.
- virtual bool SetScreenSaverSuspended(bool suspend);
+ // Object which suspends the platform-specific screensaver for the duration of
+ // its existence.
+ class PlatformScreenSaverSuspender {
+ public:
+ PlatformScreenSaverSuspender() = default;
+
+ PlatformScreenSaverSuspender(const PlatformScreenSaverSuspender&) = delete;
+ PlatformScreenSaverSuspender& operator=(
+ const PlatformScreenSaverSuspender&) = delete;
+
+ // Causes the platform-specific screensaver to be un-suspended iff this is
+ // the last remaining instance.
+ virtual ~PlatformScreenSaverSuspender() = 0;
+ };
+
+ // Suspends the platform-specific screensaver until the returned
+ // |PlatformScreenSaverSuspender| is destructed, or returns nullptr if
+ // suspension failed. This method allows stacking multiple overlapping calls,
+ // such that the platform-specific screensaver will not be un-suspended until
+ // all returned |PlatformScreenSaverSuspender| instances have been destructed.
+ virtual std::unique_ptr<PlatformScreenSaverSuspender> SuspendScreenSaver();
// Returns whether the screensaver is currently running.
virtual bool IsScreenSaverActive() const;