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&);