Fix regression in dark mode filter creation.
M-87 merge.
There is regression caused by creating dark mode filter in
GraphicsContext ctor. This patch creates dark mode filter
once it is accessed first time.
(cherry picked from commit 5a9ac5706a701b6fc60ffac3aa58083bf24c9023)
Bug: 1134430, 1134476, 1082339
Change-Id: I97521749167fcd1fb7ddfeb1b2fe7e8a7de8846f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2449829
Reviewed-by: Stephen Chenney <[email protected]>
Commit-Queue: Prashant Nevase <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#813730}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2456311
Reviewed-by: Prashant Nevase <[email protected]>
Commit-Queue: Stephen Chenney <[email protected]>
Cr-Commit-Position: refs/branch-heads/4280@{#79}
Cr-Branched-From: ea420fb963f9658c9969b6513c56b8f47efa1a2a-refs/heads/master@{#812852}
diff --git a/third_party/blink/renderer/platform/graphics/graphics_context.cc b/third_party/blink/renderer/platform/graphics/graphics_context.cc
index 09e91221..b062c07 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_context.cc
+++ b/third_party/blink/renderer/platform/graphics/graphics_context.cc
@@ -130,6 +130,7 @@
disable_destruction_checks_(false),
#endif
device_scale_factor_(1.0f),
+ dark_mode_filter_(nullptr),
printing_(false),
is_painting_preview_(false),
in_drawing_recorder_(false),
@@ -138,9 +139,6 @@
// allocate several here.
paint_state_stack_.push_back(std::make_unique<GraphicsContextState>());
paint_state_ = paint_state_stack_.back().get();
-
- dark_mode_filter_ = std::make_unique<DarkModeFilter>();
- dark_mode_filter_->UpdateSettings(GetCurrentDarkModeSettings());
}
GraphicsContext::~GraphicsContext() {
@@ -154,6 +152,15 @@
#endif
}
+DarkModeFilter* GraphicsContext::GetDarkModeFilter() {
+ if (!dark_mode_filter_) {
+ dark_mode_filter_ = std::make_unique<DarkModeFilter>();
+ dark_mode_filter_->UpdateSettings(GetCurrentDarkModeSettings());
+ }
+
+ return dark_mode_filter_.get();
+}
+
void GraphicsContext::UpdateDarkModeSettingsForTest(
const DarkModeSettings& settings) {
GetDarkModeFilter()->UpdateSettings(settings);
diff --git a/third_party/blink/renderer/platform/graphics/graphics_context.h b/third_party/blink/renderer/platform/graphics/graphics_context.h
index 793fd21..4c91577 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_context.h
+++ b/third_party/blink/renderer/platform/graphics/graphics_context.h
@@ -88,7 +88,7 @@
bool IsDarkModeEnabled() const { return is_dark_mode_enabled_; }
void SetDarkModeEnabled(bool enabled) { is_dark_mode_enabled_ = enabled; }
- DarkModeFilter* GetDarkModeFilter() { return dark_mode_filter_.get(); }
+ DarkModeFilter* GetDarkModeFilter();
void UpdateDarkModeSettingsForTest(const DarkModeSettings&);