chromium: update to 105.0.5195.102.

This commit is contained in:
Duncaen 2022-08-31 14:50:21 +02:00
parent ca332f15e6
commit 8281aacb49
No known key found for this signature in database
GPG Key ID: 335C1D17EC3D6E35
15 changed files with 183 additions and 564 deletions

View File

@ -77,16 +77,3 @@ index 80f02c0..21fbe21 100644
case __NR_unshare:
#if !defined(__mips__) && !defined(__aarch64__)
case __NR_vfork:
--- sandbox/policy/linux/bpf_renderer_policy_linux.cc
+++ sandbox/policy/linux/bpf_renderer_policy_linux.cc
@@ -100,9 +100,9 @@
case __NR_uname:
case __NR_sched_getparam:
case __NR_sched_getscheduler:
+ case __NR_sched_setscheduler:
return Allow();
case __NR_sched_getaffinity:
- case __NR_sched_setscheduler:
return RestrictSchedTarget(GetPolicyPid(), sysno);
case __NR_prlimit64:
// See crbug.com/662450 and setrlimit comment above.

View File

@ -1,11 +1,11 @@
--- base/trace_event/malloc_dump_provider.cc.orig
+++ base/trace_event/malloc_dump_provider.cc
@@ -174,7 +174,8 @@
@@ -189,7 +189,8 @@
#if (BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && BUILDFLAG(IS_ANDROID)) || \
(!BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && !BUILDFLAG(IS_WIN) && \
- !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_FUCHSIA))
+ !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_FUCHSIA) && \
- !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_FUCHSIA))
+ !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_FUCHSIA) && \
+ !(BUILDFLAG(IS_LINUX) && !defined(__GLIBC__)))
void ReportMallinfoStats(ProcessMemoryDump* pmd,
size_t* total_virtual_size,

View File

@ -0,0 +1,39 @@
Patch-Source: https://github.com/archlinux/svntogit-packages/blob/a353833a5a731abfaa465b658f61894a516aa49b/trunk/angle-wayland-include-protocol.patch
diff -upr third_party/angle.orig/BUILD.gn third_party/angle/BUILD.gn
--- a/third_party/angle.orig/BUILD.gn 2022-08-17 19:38:11.000000000 +0000
+++ b/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
--- a/third_party/angle.orig/src/third_party/volk/BUILD.gn 2022-08-17 19:38:12.000000000 +0000
+++ b/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

@ -0,0 +1,27 @@
Patch-Source: https://github.com/stha09/chromium-patches/blob/cd45403f83a2305d388e1b1f930ca05c13535636/chromium-105-Bitmap-include.patch
From 8959d9d1c6e4ed083c278ab9e8def20a409052b9 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
Date: Fri, 22 Jul 2022 16:51:28 +0000
Subject: [PATCH] IWYU: add memory for std::unique_ptr in disk_cache::Bitmap
Bug: 957519
Change-Id: I123198345e5f9062329b7eabe980f312525c268b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3779530
Reviewed-by: Maks Orlovich <morlovich@chromium.org>
Commit-Queue: Stephan Hartmann <stha09@googlemail.com>
Cr-Commit-Position: refs/heads/main@{#1027289}
---
diff --git a/net/disk_cache/blockfile/bitmap.h b/net/disk_cache/blockfile/bitmap.h
index 07806cf..9ffa98b9 100644
--- a/net/disk_cache/blockfile/bitmap.h
+++ b/net/disk_cache/blockfile/bitmap.h
@@ -8,6 +8,8 @@
#include <stdint.h>
#include <string.h>
+#include <memory>
+
#include "base/memory/raw_ptr.h"
#include "net/base/net_export.h"

View File

@ -0,0 +1,25 @@
Patch-Source: https://github.com/stha09/chromium-patches/blob/cd45403f83a2305d388e1b1f930ca05c13535636/chromium-105-browser_finder-include.patch
From 41dca8bd0c5e8ac5197d7477c6f01556fb88fb43 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
Date: Sun, 14 Aug 2022 08:41:11 +0000
Subject: [PATCH] IWYU: add vector for std::vector in browser_finder.h
---
chrome/browser/ui/browser_finder.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/chrome/browser/ui/browser_finder.h b/chrome/browser/ui/browser_finder.h
index f885be0..ad7a184 100644
--- a/chrome/browser/ui/browser_finder.h
+++ b/chrome/browser/ui/browser_finder.h
@@ -6,6 +6,7 @@
#define CHROME_BROWSER_UI_BROWSER_FINDER_H_
#include <stddef.h>
+#include <vector>
#include "ui/display/types/display_constants.h"
#include "ui/gfx/native_widget_types.h"
--
2.35.1

View File

@ -0,0 +1,42 @@
Patch-Source: https://github.com/stha09/chromium-patches/blob/cd45403f83a2305d388e1b1f930ca05c13535636/chromium-105-AdjustMaskLayerGeometry-ceilf.patch
From 385068e1eb1cde9629d18ceee1fd13255c70c806 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
Date: Fri, 22 Jul 2022 18:29:24 +0000
Subject: [PATCH] libstdc++: use math.h in blink::AdjustMaskLayerGeometry
libstdc++ does not implement std::ceilf. Use ceilf from math.h
instead.
Bug: 957519
Change-Id: I03b5e0a1eb73fdeae34d5f3d2f2e9c8871c52543
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3782841
Commit-Queue: Stephan Hartmann <stha09@googlemail.com>
Reviewed-by: Juanmi Huertas <juanmihd@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1027342}
---
diff --git a/third_party/blink/renderer/platform/graphics/compositing/adjust_mask_layer_geometry.cc b/third_party/blink/renderer/platform/graphics/compositing/adjust_mask_layer_geometry.cc
index 4abe1d9..b5b43da 100644
--- a/third_party/blink/renderer/platform/graphics/compositing/adjust_mask_layer_geometry.cc
+++ b/third_party/blink/renderer/platform/graphics/compositing/adjust_mask_layer_geometry.cc
@@ -4,8 +4,9 @@
#include "third_party/blink/renderer/platform/graphics/compositing/adjust_mask_layer_geometry.h"
+#include <math.h>
#include <algorithm>
-#include <cmath>
+
#include "third_party/blink/renderer/platform/graphics/paint/geometry_mapper.h"
#include "third_party/blink/renderer/platform/graphics/paint/transform_paint_property_node.h"
#include "ui/gfx/geometry/size.h"
@@ -29,8 +30,7 @@
// Map a screen pixel into the layer.
GeometryMapper::SourceToDestinationRect(TransformPaintPropertyNode::Root(),
transform, pixel_rect);
- int outset =
- std::ceilf(std::max(pixel_rect.width(), pixel_rect.height()) * 2);
+ int outset = ceilf(std::max(pixel_rect.width(), pixel_rect.height()) * 2);
// Don't expand too far in extreme cases.
constexpr int kMaxOutset = 1000;
outset = std::min(kMaxOutset, outset);

View File

@ -1,6 +1,6 @@
--- a/build/config/compiler/BUILD.gn.orig
+++ b/build/config/compiler/BUILD.gn
@@ -58,6 +58,10 @@
@@ -55,6 +55,10 @@
}
declare_args() {
@ -11,10 +11,10 @@
# Normally, Android builds are lightly optimized, even for debug builds, to
# keep binary size down. Setting this flag to true disables such optimization
android_full_debug = false
@@ -880,8 +884,13 @@
}
@@ -917,8 +917,13 @@
} else if (current_cpu == "arm64") {
if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
if (is_clang && !is_android && !is_nacl && !is_fuchsia &&
!(is_chromeos_lacros && is_chromeos_device)) {
- cflags += [ "--target=aarch64-linux-gnu" ]
- ldflags += [ "--target=aarch64-linux-gnu" ]
+ if (is_musl) {
@ -25,8 +25,8 @@
+ ldflags += [ "--target=aarch64-linux-gnu" ]
+ }
}
} else if (current_cpu == "mipsel" && !is_nacl) {
ldflags += [ "-Wl,--hash-style=sysv" ]
if (is_android) {
# Outline atomics crash on Exynos 9810. http://crbug.com/1272795
--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
+++ b/build/toolchain/linux/unbundle/BUILD.gn
@@ -39,3 +39,22 @@

View File

@ -1,6 +1,6 @@
--- a/BUILD.gn
--- a/BUILD.gn.orig
+++ b/BUILD.gn
@@ -1522,14 +1522,6 @@
@@ -1616,16 +1616,6 @@
}
}
@ -8,8 +8,10 @@
-is_valid_x86_target =
- target_os != "ios" && target_os != "mac" &&
- (target_os != "linux" || use_libfuzzer || !build_with_chromium)
-
-# Note: v8_target_cpu == arm allows using the V8 arm simulator on x86 for fuzzing.
-assert(
- is_valid_x86_target || target_cpu != "x86",
- is_valid_x86_target || target_cpu != "x86" || v8_target_cpu == "arm",
- "'target_cpu=x86' is not supported for 'target_os=$target_os'. Consider omitting 'target_cpu' (default) or using 'target_cpu=x64' instead.")
-
group("chromium_builder_perf") {

View File

@ -1,18 +0,0 @@
--- chromium-102.0.5005.61/build/config/compiler/BUILD.gn.orig 2022-05-19 10:35:52.991415777 +0000
+++ chromium-102.0.5005.61/build/config/compiler/BUILD.gn 2022-05-19 10:36:11.102017131 +0000
@@ -1538,15 +1538,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

@ -3,18 +3,19 @@ musl uses them for pthread_getschedparam()
source: https://git.alpinelinux.org/aports/commit/community/chromium?id=54af9f8ac24f52d382c5758e2445bf0206eff40e
--- a/sandbox/policy/linux/bpf_renderer_policy_linux.cc 2019-10-08 21:03:18.253080425 +0200
+++ b/sandbox/policy/linux/bpf_renderer_policy_linux.cc 2019-10-08 21:04:19.648549718 +0200
@@ -88,10 +88,10 @@
case __NR_sysinfo:
case __NR_times:
case __NR_uname:
--- a/sandbox/policy/linux/bpf_renderer_policy_linux.cc
+++ b/sandbox/policy/linux/bpf_renderer_policy_linux.cc
@@ -102,11 +102,11 @@
#if defined(__arm__) || defined(__aarch64__)
case __NR_getcpu:
#endif
- return Allow();
- case __NR_sched_getaffinity:
case __NR_sched_getparam:
case __NR_sched_getscheduler:
case __NR_sched_setscheduler:
+ return Allow();
+ case __NR_sched_getaffinity:
case __NR_sched_setscheduler:
return sandbox::RestrictSchedTarget(GetPolicyPid(), sysno);
return RestrictSchedTarget(GetPolicyPid(), sysno);
case __NR_prlimit64:
// See crbug.com/662450 and setrlimit comment above.

View File

@ -1,6 +1,6 @@
diff -Naur chromium-83.0.4103.97.orig/media/BUILD.gn chromium-83.0.4103.97/media/BUILD.gn
--- a/media/BUILD.gn 2020-06-03 20:40:26.000000000 +0200
+++ b/media/BUILD.gn 2020-06-13 17:32:28.510395975 +0200
+++ b/media/BUILD.gn 2021-06-13 17:32:28.510395975 +0200
@@ -65,6 +65,9 @@
defines += [ "DLOPEN_PULSEAUDIO" ]
}
@ -863,15 +863,15 @@ diff -Naur chromium-83.0.4103.97.orig/media/audio/sndio/sndio_output.h chromium-
+
+#endif // MEDIA_AUDIO_SNDIO_SNDIO_OUTPUT_H_
diff -Naur chromium-83.0.4103.97.orig/media/media_options.gni chromium-83.0.4103.97/media/media_options.gni
--- a/media/media_options.gni 2020-06-03 20:40:26.000000000 +0200
+++ b/media/media_options.gni 2020-06-13 17:32:28.512395963 +0200
@@ -125,6 +125,9 @@
--- a/media/media_options.gni
+++ b/media/media_options.gni
@@ -158,6 +158,9 @@
# Enables runtime selection of ALSA library for audio.
use_alsa = false
+ # Enable runtime selection of sndio(7)
+ use_sndio = false
+
# Alsa should be used on non-Android, non-Mac POSIX systems (excluding CastOS
# video builds).
if (is_posix && !is_android && !is_mac &&
# Alsa should be used on all non-Android, non-Mac POSIX systems - with the
# exception of CastOS desktop builds.
#

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;

View File

@ -38,19 +38,23 @@ index 0b9260d..3e054ec 100644
#elif (BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_64_BITS)) || \
(BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64))
PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR PA_ALWAYS_INLINE size_t
diff --git a/base/allocator/partition_allocator/partition_alloc_forward.h b/base/allocator/partition_allocator/partition_alloc_forward.h
index 938ea38..9414b41 100644
--- a/base/allocator/partition_allocator/partition_alloc_forward.h
+++ b/base/allocator/partition_allocator/partition_alloc_forward.h
@@ -26,7 +26,10 @@ namespace base {
//
// __STDCPP_DEFAULT_NEW_ALIGNMENT__ is C++17. As such, it is not defined on all
// platforms, as Chrome's requirement is C++14 as of 2020.
-#if defined(__STDCPP_DEFAULT_NEW_ALIGNMENT__)
@@ -25,12 +25,17 @@
// the second one 16. We could technically return something different for
// malloc() and operator new(), but this would complicate things, and most of
// our allocations are presumably coming from operator new() anyway.
+#if defined(__powerpc64__)
+/* we want this to be 16 here always */
+constexpr size_t kAlignment = 16;
+#elif defined(__STDCPP_DEFAULT_NEW_ALIGNMENT__)
+#else
constexpr size_t kAlignment =
std::max(alignof(max_align_t), __STDCPP_DEFAULT_NEW_ALIGNMENT__);
#else
std::max(alignof(max_align_t),
static_cast<size_t>(__STDCPP_DEFAULT_NEW_ALIGNMENT__));
static_assert(kAlignment <= 16,
"PartitionAlloc doesn't support a fundamental alignment larger "
"than 16 bytes.");
+#endif
constexpr bool ThreadSafe = true;

View File

@ -3551,16 +3551,16 @@ diff --git a/v8/test/BUILD.gn b/v8/test/BUILD.gn
index fb872ad39..45fc585dd 100644
--- a/v8/test/BUILD.gn
+++ b/v8/test/BUILD.gn
@@ -36,7 +36,7 @@ group("gn_all") {
@@ -42,7 +42,7 @@ group("gn_all") {
"benchmarks/cpp:gn_all",
"cctest:cctest",
"cctest:generate-bytecode-expectations",
"unittests:generate-bytecode-expectations",
- "unittests:unittests",
+ #"unittests:unittests",
]
}
}
@@ -83,7 +83,7 @@
@@ -84,7 +84,7 @@
"message:v8_message",
"mjsunit:v8_mjsunit",
"mkgrokdump:mkgrokdump",
@ -3569,7 +3569,7 @@ index fb872ad39..45fc585dd 100644
"webkit:v8_webkit",
]
@@ -108,7 +108,7 @@
@@ -109,7 +109,7 @@
"message:v8_message",
"mjsunit:v8_mjsunit",
"mkgrokdump:mkgrokdump",

View File

@ -1,7 +1,7 @@
# Template file for 'chromium'
pkgname=chromium
# See https://chromiumdash.appspot.com/releases?platform=Linux for the latest version
version=104.0.5112.101
version=105.0.5195.102
revision=1
archs="i686* x86_64* aarch64* armv7l* ppc64le*"
short_desc="Google's attempt at creating a safer, faster, and more stable browser"
@ -9,7 +9,7 @@ maintainer="Duncaen <duncaen@voidlinux.org>"
license="BSD-3-Clause"
homepage="https://www.chromium.org/"
distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz"
checksum=60f015e1559de4044cdfa3bdc1f8fde535927c8ab15b0959ccc9b6feec832f5b
checksum=1cba0527c951e3c506ade96cf6ec2507ee9d43661764731ed896348182369262
lib32disabled=yes