From 0f6e5619f91635f7bbaac9f5da8cd15edc499e60 Mon Sep 17 00:00:00 2001 From: KeeGitee Date: Tue, 3 Jun 2025 14:24:12 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BC=BA=E5=88=B6?= =?UTF-8?q?=E6=B7=B1=E8=89=B2=E6=A8=A1=E5=BC=8F=E4=B8=8B=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E9=97=AA=E7=99=BD=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: KeeGitee --- .../declarative_frontend/jsview/js_web.cpp | 5 ++-- .../web/cross_platform/web_pattern.cpp | 5 ++++ .../pattern/web/cross_platform/web_pattern.h | 3 ++- .../components_ng/pattern/web/web_model.h | 1 + .../pattern/web/web_model_ng.cpp | 7 ++++++ .../components_ng/pattern/web/web_model_ng.h | 1 + .../components_ng/pattern/web/web_pattern.cpp | 20 ++++++++++----- .../components_ng/pattern/web/web_pattern.h | 2 ++ .../core/pattern/web/web_model_test_ng.cpp | 22 ++++++++++++++++ .../core/pattern/web/web_pattern_test_ng.cpp | 25 +++++++++++++++++++ 10 files changed, 82 insertions(+), 9 deletions(-) diff --git a/frameworks/bridge/declarative_frontend/jsview/js_web.cpp b/frameworks/bridge/declarative_frontend/jsview/js_web.cpp index d470886b946..f7f4c1af6a0 100644 --- a/frameworks/bridge/declarative_frontend/jsview/js_web.cpp +++ b/frameworks/bridge/declarative_frontend/jsview/js_web.cpp @@ -3931,9 +3931,10 @@ void JSWeb::BackgroundColor(const JSCallbackInfo& info) } Color backgroundColor; if (!ParseJsColor(info[0], backgroundColor)) { - backgroundColor = WebModel::GetInstance()->GetDefaultBackgroundColor(); + WebModel::GetInstance()->SetDefaultBackgroundColor(); + } else { + WebModel::GetInstance()->SetBackgroundColor(backgroundColor); } - WebModel::GetInstance()->SetBackgroundColor(backgroundColor); } void JSWeb::InitialScale(float scale) diff --git a/frameworks/core/components_ng/pattern/web/cross_platform/web_pattern.cpp b/frameworks/core/components_ng/pattern/web/cross_platform/web_pattern.cpp index 3e689474c15..3617d6ce131 100644 --- a/frameworks/core/components_ng/pattern/web/cross_platform/web_pattern.cpp +++ b/frameworks/core/components_ng/pattern/web/cross_platform/web_pattern.cpp @@ -1426,4 +1426,9 @@ void WebPattern::OnEnableFollowSystemFontWeightUpdate(bool value) { // cross platform is not support now; } + +void WebPattern::SetDefaultBackgroundColor() +{ + // cross platform is not support now; +} } // namespace OHOS::Ace::NG diff --git a/frameworks/core/components_ng/pattern/web/cross_platform/web_pattern.h b/frameworks/core/components_ng/pattern/web/cross_platform/web_pattern.h index c80f3c7ffae..e7d36985cf4 100644 --- a/frameworks/core/components_ng/pattern/web/cross_platform/web_pattern.h +++ b/frameworks/core/components_ng/pattern/web/cross_platform/web_pattern.h @@ -503,7 +503,7 @@ public: const ScriptItemsByOrder& scriptItemsByOrder); void OnWebMediaAVSessionEnabledUpdate(bool enable); - + void SetDefaultBackgroundColor(); private: void RegistVirtualKeyBoardListener(); bool ProcessVirtualKeyBoard(int32_t width, int32_t height, double keyboard); @@ -688,6 +688,7 @@ private: int32_t rootLayerHeight_ = 0; bool richTextInit_ = false; ACE_DISALLOW_COPY_AND_MOVE(WebPattern); + bool needSetDefaultBackgroundColor_ = false; }; } // namespace OHOS::Ace::NG diff --git a/frameworks/core/components_ng/pattern/web/web_model.h b/frameworks/core/components_ng/pattern/web/web_model.h index 0150754fd88..b82f520f6ad 100644 --- a/frameworks/core/components_ng/pattern/web/web_model.h +++ b/frameworks/core/components_ng/pattern/web/web_model.h @@ -208,6 +208,7 @@ public: virtual void SetEnableDataDetector(bool isEnabled) {}; virtual void SetDataDetectorConfig(const TextDetectConfig& config) {}; virtual void SetEnableFollowSystemFontWeight(bool enableFollowSystemFontWeight) {}; + virtual void SetDefaultBackgroundColor() {}; private: static std::unique_ptr instance_; static std::mutex mutex_; diff --git a/frameworks/core/components_ng/pattern/web/web_model_ng.cpp b/frameworks/core/components_ng/pattern/web/web_model_ng.cpp index 81b38692379..ed2bf8c0313 100644 --- a/frameworks/core/components_ng/pattern/web/web_model_ng.cpp +++ b/frameworks/core/components_ng/pattern/web/web_model_ng.cpp @@ -709,6 +709,13 @@ void WebModelNG::SetBackgroundColor(Color backgroundColor) webPattern->UpdateBackgroundColor(backgroundColor.GetValue()); } +void WebModelNG::SetDefaultBackgroundColor() +{ + auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern(); + CHECK_NULL_VOID(webPattern); + webPattern->SetDefaultBackgroundColor(); +} + void WebModelNG::InitialScale(float scale) { auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern(); diff --git a/frameworks/core/components_ng/pattern/web/web_model_ng.h b/frameworks/core/components_ng/pattern/web/web_model_ng.h index b339d777b1c..5f6cfb48dba 100644 --- a/frameworks/core/components_ng/pattern/web/web_model_ng.h +++ b/frameworks/core/components_ng/pattern/web/web_model_ng.h @@ -121,6 +121,7 @@ public: void SetPermissionRequestEventId(std::function&& jsCallback) override; void SetScreenCaptureRequestEventId(std::function&& jsCallback) override; void SetBackgroundColor(Color backgroundColor) override; + void SetDefaultBackgroundColor() override; void InitialScale(float scale) override; void SetSearchResultReceiveEventId(std::function&& jsCallback) override; void SetWebDebuggingAccessEnabled(bool isWebDebuggingAccessEnabled) override; diff --git a/frameworks/core/components_ng/pattern/web/web_pattern.cpp b/frameworks/core/components_ng/pattern/web/web_pattern.cpp index ee1f7ab7998..129ccacedb4 100644 --- a/frameworks/core/components_ng/pattern/web/web_pattern.cpp +++ b/frameworks/core/components_ng/pattern/web/web_pattern.cpp @@ -2917,6 +2917,7 @@ void WebPattern::OnPinchSmoothModeEnabledUpdate(bool value) void WebPattern::OnBackgroundColorUpdate(int32_t value) { + needSetDefaultBackgroundColor_ = false; UpdateBackgroundColorRightNow(value); if (delegate_) { delegate_->UpdateBackgroundColor(value); @@ -3272,8 +3273,8 @@ void WebPattern::OnModifyDone() delegate_->SetEnhanceSurfaceFlag(isEnhanceSurface_); delegate_->SetPopup(isPopup_); delegate_->SetParentNWebId(parentNWebId_); - delegate_->SetBackgroundColor(GetBackgroundColorValue( - static_cast(renderContext->GetBackgroundColor().value_or(Color::WHITE).GetValue()))); + delegate_->SetBackgroundColor(GetBackgroundColorValue(static_cast( + renderContext->GetBackgroundColor().value_or(GetDefaultBackgroundColor()).GetValue()))); if (isEnhanceSurface_) { auto drawSize = Size(1, 1); delegate_->SetDrawSize(drawSize); @@ -3334,8 +3335,8 @@ void WebPattern::OnModifyDone() bool isApiGteTwelve = AceApplicationInfo::GetInstance().GreatOrEqualTargetAPIVersion(PlatformVersion::VERSION_TWELVE); - delegate_->UpdateBackgroundColor(GetBackgroundColorValue( - static_cast(renderContext->GetBackgroundColor().value_or(Color::WHITE).GetValue()))); + delegate_->UpdateBackgroundColor(GetBackgroundColorValue(static_cast( + renderContext->GetBackgroundColor().value_or(GetDefaultBackgroundColor()).GetValue()))); delegate_->UpdateJavaScriptEnabled(GetJsEnabledValue(true)); delegate_->UpdateBlockNetworkImage(!GetOnLineImageAccessEnabledValue(true)); delegate_->UpdateLoadsImagesAutomatically(GetImageAccessEnabledValue(true)); @@ -3418,8 +3419,10 @@ void WebPattern::OnModifyDone() } } - if (!GetBackgroundColor()) { - UpdateBackgroundColorRightNow(GetDefaultBackgroundColor().GetValue()); + // Set the default background color when the component did not set backgroundColor() + // or needSetDefaultBackgroundColor_ is true. + if (!renderContext->GetBackgroundColor() || needSetDefaultBackgroundColor_) { + OnBackgroundColorUpdate(GetDefaultBackgroundColor().GetValue()); } // Initialize events such as keyboard, focus, etc. @@ -7549,4 +7552,9 @@ bool WebPattern::UpdateKeyboardSafeArea(bool hideOrClose, double height) return true; } +void WebPattern::SetDefaultBackgroundColor() +{ + needSetDefaultBackgroundColor_ = true; +} + } // namespace OHOS::Ace::NG diff --git a/frameworks/core/components_ng/pattern/web/web_pattern.h b/frameworks/core/components_ng/pattern/web/web_pattern.h index 503701c4606..fe249cd658e 100644 --- a/frameworks/core/components_ng/pattern/web/web_pattern.h +++ b/frameworks/core/components_ng/pattern/web/web_pattern.h @@ -789,6 +789,7 @@ public: void InitDataDetector(); void CloseDataDetectorMenu(); + void SetDefaultBackgroundColor(); private: friend class WebContextSelectOverlay; friend class WebSelectOverlay; @@ -1265,6 +1266,7 @@ private: bool isRotating_ {false}; int32_t rotationEndCallbackId_ = 0; + bool needSetDefaultBackgroundColor_ = false; protected: OnCreateMenuCallback onCreateMenuCallback_; OnMenuItemClickCallback onMenuItemClick_; diff --git a/test/unittest/core/pattern/web/web_model_test_ng.cpp b/test/unittest/core/pattern/web/web_model_test_ng.cpp index bbd82cf80be..b08c6769da7 100644 --- a/test/unittest/core/pattern/web/web_model_test_ng.cpp +++ b/test/unittest/core/pattern/web/web_model_test_ng.cpp @@ -3312,4 +3312,26 @@ HWTEST_F(WebModelTestNg, SetMediaOptions001, TestSize.Level1) EXPECT_EQ(webPattern->GetOrCreateWebProperty()->CheckAudioExclusive(true), true); #endif } + +/** + * @tc.name: SetDefaultBackgroundColor001 + * @tc.desc: Test Test web_model_ng.cpp + * @tc.type: FUNC + */ +HWTEST_F(WebModelTestNg, SetDefaultBackgroundColor001, TestSize.Level1) +{ +#ifdef OHOS_STANDARD_SYSTEM + auto* stack = ViewStackProcessor::GetInstance(); + auto nodeId = stack->ClaimNodeId(); + auto frameNode = + FrameNode::GetOrCreateFrameNode(V2::WEB_ETS_TAG, nodeId, []() { return AceType::MakeRefPtr(); }); + ASSERT_NE(frameNode, nullptr); + stack->Push(frameNode); + auto webPattern = ViewStackProcessor::GetInstance()->GetMainFrameNodePattern(); + + WebModelNG webModelNG; + webModelNG.SetDefaultBackgroundColor(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, true); +#endif +} } // namespace OHOS::Ace::NG diff --git a/test/unittest/core/pattern/web/web_pattern_test_ng.cpp b/test/unittest/core/pattern/web/web_pattern_test_ng.cpp index 25e3abb0a4e..838b2ff584e 100755 --- a/test/unittest/core/pattern/web/web_pattern_test_ng.cpp +++ b/test/unittest/core/pattern/web/web_pattern_test_ng.cpp @@ -2714,4 +2714,29 @@ HWTEST_F(WebPatternTestNg, InitDataDetector_001, TestSize.Level1) ASSERT_EQ(ret, false); #endif } + +/** + * @tc.name: SetDefaultBackgroundColor001 + * @tc.desc: SetDefaultBackgroundColor. + * @tc.type: FUNC + */ +HWTEST_F(WebPatternTestNg, SetDefaultBackgroundColor001, TestSize.Level1) +{ +#ifdef OHOS_STANDARD_SYSTEM + auto* stack = ViewStackProcessor::GetInstance(); + ASSERT_NE(stack, nullptr); + auto nodeId = stack->ClaimNodeId(); + auto frameNode = + FrameNode::GetOrCreateFrameNode( + V2::WEB_ETS_TAG, nodeId, []() { return AceType::MakeRefPtr(); }); + stack->Push(frameNode); + auto webPattern = frameNode->GetPattern(); + ASSERT_NE(webPattern, nullptr); + webPattern->SetDefaultBackgroundColor(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, true); + + webPattern->OnBackgroundColorUpdate(Color::RED.GetValue()); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, false); +#endif +} } // namespace OHOS::Ace::NG \ No newline at end of file -- Gitee From 08036cb81769dc1b5e116ba6f6814bdf641b3592 Mon Sep 17 00:00:00 2001 From: KeeGitee Date: Fri, 27 Jun 2025 18:19:24 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BC=BA=E5=88=B6?= =?UTF-8?q?=E6=B7=B1=E8=89=B2=E6=A8=A1=E5=BC=8F=E4=B8=8B=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E6=B7=B1=E8=89=B2=E6=A8=A1=E5=BC=8F=E9=A1=B5=E9=9D=A2=E6=9C=AA?= =?UTF-8?q?=E6=81=A2=E5=A4=8D=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: KeeGitee --- .../components_ng/pattern/web/web_pattern.cpp | 3 +- .../core/pattern/web/web_pattern_test_ng.cpp | 174 +++++++++++++++++- 2 files changed, 175 insertions(+), 2 deletions(-) diff --git a/frameworks/core/components_ng/pattern/web/web_pattern.cpp b/frameworks/core/components_ng/pattern/web/web_pattern.cpp index 129ccacedb4..91642d080ea 100644 --- a/frameworks/core/components_ng/pattern/web/web_pattern.cpp +++ b/frameworks/core/components_ng/pattern/web/web_pattern.cpp @@ -3422,7 +3422,8 @@ void WebPattern::OnModifyDone() // Set the default background color when the component did not set backgroundColor() // or needSetDefaultBackgroundColor_ is true. if (!renderContext->GetBackgroundColor() || needSetDefaultBackgroundColor_) { - OnBackgroundColorUpdate(GetDefaultBackgroundColor().GetValue()); + UpdateBackgroundColor(GetDefaultBackgroundColor().GetValue()); + needSetDefaultBackgroundColor_ = true; } // Initialize events such as keyboard, focus, etc. diff --git a/test/unittest/core/pattern/web/web_pattern_test_ng.cpp b/test/unittest/core/pattern/web/web_pattern_test_ng.cpp index 838b2ff584e..a71753d30ff 100755 --- a/test/unittest/core/pattern/web/web_pattern_test_ng.cpp +++ b/test/unittest/core/pattern/web/web_pattern_test_ng.cpp @@ -2739,4 +2739,176 @@ HWTEST_F(WebPatternTestNg, SetDefaultBackgroundColor001, TestSize.Level1) EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, false); #endif } -} // namespace OHOS::Ace::NG \ No newline at end of file + +/** + * @tc.name: DarkModeBackgroundColor001 + * @tc.desc: Test DarkModeBackgroundColor001. + * @tc.type: FUNC + */ +HWTEST_F(WebPatternTestNg, DarkModeBackgroundColor001, TestSize.Level1) +{ +#ifdef OHOS_STANDARD_SYSTEM + auto* stack = ViewStackProcessor::GetInstance(); + ASSERT_NE(stack, nullptr); + auto nodeId = stack->ClaimNodeId(); + auto frameNode = + FrameNode::GetOrCreateFrameNode( + V2::WEB_ETS_TAG, nodeId, []() { return AceType::MakeRefPtr(); }); + stack->Push(frameNode); + auto webPattern = frameNode->GetPattern(); + ASSERT_NE(webPattern, nullptr); + webPattern->OnModifyDone(); + ASSERT_NE(webPattern->delegate_, nullptr); + ASSERT_NE(webPattern->GetHost()->GetRenderContext(), nullptr); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, false); + EXPECT_FALSE(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor()); + + // Test that the default background color is based on darkMode() and forceDarkAccess() + // when not set backgroundColor(). + webPattern->UpdateDarkMode(WebDarkMode::On); + webPattern->UpdateForceDarkAccess(true); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, true); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::BLACK); + + webPattern->UpdateForceDarkAccess(false); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, true); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::WHITE); + + webPattern->UpdateDarkMode(WebDarkMode::Off); + webPattern->UpdateForceDarkAccess(true); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, true); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::WHITE); + + webPattern->UpdateBackgroundColor(Color::RED.GetValue()); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, false); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::RED); + + webPattern->SetDefaultBackgroundColor(); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, true); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::WHITE); + + webPattern->UpdateDarkMode(WebDarkMode::On); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, true); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::BLACK); + + webPattern->UpdateBackgroundColor(Color::RED.GetValue()); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, false); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::RED); +#endif +} + +/** + * @tc.name: DarkModeBackgroundColor002 + * @tc.desc: Test DarkModeBackgroundColor002. + * @tc.type: FUNC + */ +HWTEST_F(WebPatternTestNg, DarkModeBackgroundColor002, TestSize.Level1) +{ +#ifdef OHOS_STANDARD_SYSTEM + auto* stack = ViewStackProcessor::GetInstance(); + ASSERT_NE(stack, nullptr); + auto nodeId = stack->ClaimNodeId(); + auto frameNode = + FrameNode::GetOrCreateFrameNode( + V2::WEB_ETS_TAG, nodeId, []() { return AceType::MakeRefPtr(); }); + stack->Push(frameNode); + auto webPattern = frameNode->GetPattern(); + ASSERT_NE(webPattern, nullptr); + webPattern->OnModifyDone(); + ASSERT_NE(webPattern->delegate_, nullptr); + ASSERT_NE(webPattern->GetHost()->GetRenderContext(), nullptr); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, false); + EXPECT_FALSE(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor()); + + // Tests that when the backgroundColor is set to null or undefined, + // it resets the backgroundColor to the default color. + webPattern->SetDefaultBackgroundColor(); + webPattern->UpdateDarkMode(WebDarkMode::On); + webPattern->UpdateForceDarkAccess(true); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, true); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::BLACK); + + webPattern->UpdateBackgroundColor(Color::RED.GetValue()); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, false); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::RED); + + webPattern->UpdateForceDarkAccess(false); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, false); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::RED); + + webPattern->SetDefaultBackgroundColor(); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, true); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::WHITE); + + webPattern->UpdateForceDarkAccess(true); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, true); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::BLACK); + + webPattern->UpdateBackgroundColor(Color::BLUE.GetValue()); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, false); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::BLUE); +#endif +} + +/** + * @tc.name: DarkModeBackgroundColor003 + * @tc.desc: Test DarkModeBackgroundColor003. + * @tc.type: FUNC + */ +HWTEST_F(WebPatternTestNg, DarkModeBackgroundColor003, TestSize.Level1) +{ +#ifdef OHOS_STANDARD_SYSTEM + auto* stack = ViewStackProcessor::GetInstance(); + ASSERT_NE(stack, nullptr); + auto nodeId = stack->ClaimNodeId(); + auto frameNode = + FrameNode::GetOrCreateFrameNode( + V2::WEB_ETS_TAG, nodeId, []() { return AceType::MakeRefPtr(); }); + stack->Push(frameNode); + auto webPattern = frameNode->GetPattern(); + ASSERT_NE(webPattern, nullptr); + webPattern->OnModifyDone(); + ASSERT_NE(webPattern->delegate_, nullptr); + ASSERT_NE(webPattern->GetHost()->GetRenderContext(), nullptr); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, false); + EXPECT_FALSE(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor()); + + // In the case of richText, tests that when renderContext sets the backgroundColor, GetBackgroundColor() is null, + // the defaultBackgroundColor will not be set. + webPattern->GetHost()->GetRenderContext()->UpdateBackgroundColor(Color::BLUE); + webPattern->UpdateDarkMode(WebDarkMode::Off); + webPattern->UpdateForceDarkAccess(true); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, false); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::BLUE); + + webPattern->OnBackgroundColorUpdate(Color::RED.GetValue()); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, false); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::RED); + + webPattern->SetDefaultBackgroundColor(); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, true); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::WHITE); + + webPattern->UpdateDarkMode(WebDarkMode::On); + webPattern->OnModifyDone(); + EXPECT_EQ(webPattern->needSetDefaultBackgroundColor_, true); + EXPECT_EQ(webPattern->GetHost()->GetRenderContext()->GetBackgroundColor(), Color::BLACK); +#endif +} +} // namespace OHOS::Ace::NG -- Gitee