WebKit Bugzilla
Attachment 369403 Details for
Bug 197699
: Add plumbing for inactive system colors in RenderTheme cache
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-197699-20190508120147.patch (text/plain), 24.78 KB, created by
Timothy Hatcher
on 2019-05-08 12:01:48 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Timothy Hatcher
Created:
2019-05-08 12:01:48 PDT
Size:
24.78 KB
patch
obsolete
>Subversion Revision: 245009 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 26177d0480c0ee5f982bbef8fd38d16ff051bbee..33183df1e19ad8c0475ace4492bb688acad7de61 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,24 @@ >+2019-05-08 Timothy Hatcher <timothy@apple.com> >+ >+ Add plumbing for inactive system colors in RenderTheme cache. >+ https://bugs.webkit.org/show_bug.cgi?id=197699 >+ rdar://problem/49406936 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * css/StyleColor.h: >+ * page/Page.cpp: >+ (WebCore::Page::effectiveAppearanceDidChange): Renamed from setUseDarkAppearance. >+ * page/Page.h: >+ (WebCore::Page::useInactiveAppearance const): >+ * rendering/RenderTheme.cpp: >+ (WebCore::RenderTheme::purgeCaches): >+ (WebCore::RenderTheme::platformColorsDidChange): >+ (WebCore::RenderTheme::colorCache const): >+ * rendering/RenderTheme.h: >+ * testing/InternalSettings.cpp: >+ (WebCore::InternalSettings::setUseDarkAppearanceInternal): >+ > 2019-05-07 Antti Koivisto <antti@apple.com> > > <body> with overflow:hidden CSS is scrollable on iOS >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 88ce45ee303d8a8e33e9b3d41a62ad179616778e..2936ecb7d9a9f582767dd6ebef638497c6ff5b61 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,74 @@ >+2019-05-08 Timothy Hatcher <timothy@apple.com> >+ >+ Add plumbing for inactive system colors in RenderTheme cache. >+ https://bugs.webkit.org/show_bug.cgi?id=197699 >+ rdar://problem/49406936 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * Shared/WebPageCreationParameters.cpp: >+ (WebKit::WebPageCreationParameters::encode const): >+ (WebKit::WebPageCreationParameters::decode): >+ * Shared/WebPageCreationParameters.h: >+ * UIProcess/Cocoa/WebViewImpl.h: >+ * UIProcess/Cocoa/WebViewImpl.mm: >+ (WebKit::WebViewImpl::effectiveAppearanceIsInactive): >+ * UIProcess/PageClient.h: >+ (WebKit::PageClient::effectiveAppearanceIsInactive const): >+ * UIProcess/WebPageProxy.cpp: >+ (WebKit::WebPageProxy::creationParameters): >+ (WebKit::WebPageProxy::useInactiveAppearance const): >+ (WebKit::WebPageProxy::effectiveAppearanceDidChange): >+ * UIProcess/WebPageProxy.h: >+ * UIProcess/mac/PageClientImplMac.h: >+ * UIProcess/mac/PageClientImplMac.mm: >+ (WebKit::PageClientImpl::effectiveAppearanceIsInactive const): >+ * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: >+ (WKBundlePageSetUseDarkAppearance): >+ * WebProcess/WebPage/WebPage.cpp: >+ (WebKit::m_shrinkToFitContentTimer): >+ (WebKit::WebPage::effectiveAppearanceDidChange): Renamed from setUseDarkAppearance. >+ * WebProcess/WebPage/WebPage.h: >+ * WebProcess/WebPage/WebPage.messages.in: >+ * WebProcess/WebPage/gtk/WebPageGtk.cpp: >+ (WebKit::WebPage::effectiveAppearanceDidChange): Renamed from setUseDarkAppearance. >+ >+2019-05-08 Timothy Hatcher <timothy@apple.com> >+ >+ Add plumbing for inactive system colors for RenderTheme cache. >+ https://bugs.webkit.org/show_bug.cgi?id=197699 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * Shared/WebPageCreationParameters.cpp: >+ (WebKit::WebPageCreationParameters::encode const): >+ (WebKit::WebPageCreationParameters::decode): >+ * Shared/WebPageCreationParameters.h: >+ * UIProcess/Cocoa/WebViewImpl.h: >+ * UIProcess/Cocoa/WebViewImpl.mm: >+ (WebKit::WebViewImpl::effectiveAppearanceIsInactive): >+ * UIProcess/PageClient.h: >+ (WebKit::PageClient::effectiveAppearanceIsInactive const): >+ * UIProcess/WebPageProxy.cpp: >+ (WebKit::WebPageProxy::creationParameters): >+ (WebKit::WebPageProxy::useInactiveAppearance const): >+ (WebKit::WebPageProxy::effectiveAppearanceDidChange): >+ * UIProcess/WebPageProxy.h: >+ * UIProcess/mac/PageClientImplMac.h: >+ * UIProcess/mac/PageClientImplMac.mm: >+ (WebKit::PageClientImpl::effectiveAppearanceIsInactive const): >+ * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: >+ (WKBundlePageSetUseDarkAppearance): >+ * WebProcess/WebPage/WebPage.cpp: >+ (WebKit::m_shrinkToFitContentTimer): >+ (WebKit::WebPage::effectiveAppearanceDidChange): >+ (WebKit::WebPage::setUseDarkAppearance): Deleted. >+ * WebProcess/WebPage/WebPage.h: >+ * WebProcess/WebPage/WebPage.messages.in: >+ * WebProcess/WebPage/gtk/WebPageGtk.cpp: >+ (WebKit::WebPage::effectiveAppearanceDidChange): >+ (WebKit::WebPage::setUseDarkAppearance): Deleted. >+ > 2019-05-07 Wenson Hsieh <wenson_hsieh@apple.com> > > [macOS] Avoid crashing the UI process when writing empty data to the pasteboard >diff --git a/Source/WebKitLegacy/mac/ChangeLog b/Source/WebKitLegacy/mac/ChangeLog >index 69e157754216da898485ca21ad9a436a3d4cbf83..b07a301b43ecf45a99be0748f44c8255183e839d 100644 >--- a/Source/WebKitLegacy/mac/ChangeLog >+++ b/Source/WebKitLegacy/mac/ChangeLog >@@ -1,3 +1,21 @@ >+2019-05-08 Timothy Hatcher <timothy@apple.com> >+ >+ Add plumbing for inactive system colors in RenderTheme cache. >+ https://bugs.webkit.org/show_bug.cgi?id=197699 >+ rdar://problem/49406936 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * WebView/WebView.mm: >+ (-[WebView _commonInitializationWithFrameName:groupName:]): >+ (-[WebView _setUseDarkAppearance:]): >+ (-[WebView _useInactiveAppearance]): >+ (-[WebView _setUseInactiveAppearance:]): >+ (-[WebView _setUseDarkAppearance:useInactiveAppearance:]): >+ (-[WebView _effectiveAppearanceIsInactive]): >+ (-[WebView viewDidChangeEffectiveAppearance]): >+ * WebView/WebViewPrivate.h: >+ > 2019-05-03 Daniel Bates <dabates@apple.com> > > Pass KeyboardEvent by reference in more places >diff --git a/Source/WebCore/css/StyleColor.h b/Source/WebCore/css/StyleColor.h >index d7bf5a537ad8dabba6c3175b15e3b88d162dccb2..853e4ab3fdf42938673a6c3b0fc840bd703b3d65 100644 >--- a/Source/WebCore/css/StyleColor.h >+++ b/Source/WebCore/css/StyleColor.h >@@ -54,7 +54,8 @@ public: > enum class Options : uint8_t { > ForVisitedLink = 1 << 0, > UseSystemAppearance = 1 << 1, >- UseDarkAppearance = 1 << 2 >+ UseDarkAppearance = 1 << 2, >+ UseInactiveAppearance = 1 << 3 > }; > > static Color colorFromKeyword(CSSValueID, OptionSet<Options>); >diff --git a/Source/WebCore/page/Page.cpp b/Source/WebCore/page/Page.cpp >index c9e7722e3410e09bbdba91725c5fbd4b8b31215d..6d0bdfdad53800a915a5135c26d1a9512738b197 100644 >--- a/Source/WebCore/page/Page.cpp >+++ b/Source/WebCore/page/Page.cpp >@@ -2726,19 +2726,27 @@ void Page::setUseSystemAppearance(bool value) > } > } > >-void Page::setUseDarkAppearance(bool value) >+void Page::effectiveAppearanceDidChange(bool useDarkAppearance, bool useInactiveAppearance) > { > #if HAVE(OS_DARK_MODE_SUPPORT) >- if (m_useDarkAppearance == value) >+ if (m_useDarkAppearance == useDarkAppearance && m_useInactiveAppearance == useInactiveAppearance) > return; > >- m_useDarkAppearance = value; >+ m_useDarkAppearance = useDarkAppearance; >+ m_useInactiveAppearance = useInactiveAppearance; > >- InspectorInstrumentation::defaultAppearanceDidChange(*this, value); >+ InspectorInstrumentation::defaultAppearanceDidChange(*this, useDarkAppearance); > > appearanceDidChange(); > #else >- UNUSED_PARAM(value); >+ UNUSED_PARAM(useDarkAppearance); >+ >+ if (m_useInactiveAppearance == useInactiveAppearance) >+ return; >+ >+ m_useInactiveAppearance = useInactiveAppearance; >+ >+ appearanceDidChange(); > #endif > } > >diff --git a/Source/WebCore/page/Page.h b/Source/WebCore/page/Page.h >index fcf3f77590f6a69213c80c5b0e7b6269c31d9883..ec3f53c8288265bf8e6fcf9d1b1ce9911dc6dd45 100644 >--- a/Source/WebCore/page/Page.h >+++ b/Source/WebCore/page/Page.h >@@ -380,7 +380,8 @@ public: > WEBCORE_EXPORT void setUseSystemAppearance(bool); > > WEBCORE_EXPORT bool useDarkAppearance() const; >- WEBCORE_EXPORT void setUseDarkAppearance(bool); >+ bool useInactiveAppearance() const { return m_useInactiveAppearance; } >+ WEBCORE_EXPORT void effectiveAppearanceDidChange(bool useDarkAppearance, bool useInactiveAppearance); > bool defaultUseDarkAppearance() const { return m_useDarkAppearance; } > void setUseDarkAppearanceOverride(Optional<bool>); > >@@ -834,6 +835,7 @@ private: > #endif > > bool m_useSystemAppearance { false }; >+ bool m_useInactiveAppearance { false }; > bool m_useDarkAppearance { false }; > Optional<bool> m_useDarkAppearanceOverride; > >diff --git a/Source/WebCore/rendering/RenderTheme.cpp b/Source/WebCore/rendering/RenderTheme.cpp >index 585ef88ee1770aaa15590a7ab7482e72ba0f742d..437f4c5589ff304f0d59c9abcaf5e93347640aaf 100644 >--- a/Source/WebCore/rendering/RenderTheme.cpp >+++ b/Source/WebCore/rendering/RenderTheme.cpp >@@ -1212,23 +1212,24 @@ void RenderTheme::adjustSearchFieldResultsButtonStyle(StyleResolver&, RenderStyl > > void RenderTheme::purgeCaches() > { >- m_colorCache = ColorCache(); >- m_darkColorCache = ColorCache(); >+ m_colorCacheMap.clear(); > } > > void RenderTheme::platformColorsDidChange() > { >- m_colorCache = ColorCache(); >- m_darkColorCache = ColorCache(); >+ m_colorCacheMap.clear(); > > Page::updateStyleForAllPagesAfterGlobalChangeInEnvironment(); > } > > auto RenderTheme::colorCache(OptionSet<StyleColor::Options> options) const -> ColorCache& > { >- if (options.contains(StyleColor::Options::UseDarkAppearance)) >- return m_darkColorCache; >- return m_colorCache; >+ auto optionsIgnoringVisitedLink = options; >+ optionsIgnoringVisitedLink.remove(StyleColor::Options::ForVisitedLink); >+ >+ return m_colorCacheMap.ensure(optionsIgnoringVisitedLink.toRaw(), [] { >+ return ColorCache(); >+ }).iterator->value; > } > > FontCascadeDescription& RenderTheme::cachedSystemFontDescription(CSSValueID systemFontID) const >diff --git a/Source/WebCore/rendering/RenderTheme.h b/Source/WebCore/rendering/RenderTheme.h >index 471a9a3a4b53caf929464b8664075a10c19f20d6..1d61e48471ec8df57421d68bca61ed2c5b9b9edd 100644 >--- a/Source/WebCore/rendering/RenderTheme.h >+++ b/Source/WebCore/rendering/RenderTheme.h >@@ -441,8 +441,7 @@ protected: > virtual ColorCache& colorCache(OptionSet<StyleColor::Options>) const; > > private: >- mutable ColorCache m_colorCache; >- mutable ColorCache m_darkColorCache; >+ mutable HashMap<uint8_t, ColorCache, DefaultHash<uint8_t>::Hash, WTF::UnsignedWithZeroKeyHashTraits<uint8_t>> m_colorCacheMap; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/testing/InternalSettings.cpp b/Source/WebCore/testing/InternalSettings.cpp >index 13ccd5db902e79beee59ce8c19fa5d319d27f708..792be75e2e431e43954bdfff44ad23983ed07139 100644 >--- a/Source/WebCore/testing/InternalSettings.cpp >+++ b/Source/WebCore/testing/InternalSettings.cpp >@@ -546,7 +546,7 @@ void InternalSettings::setUseDarkAppearanceInternal(bool useDarkAppearance) > } > #endif > ASSERT(m_page); >- m_page->setUseDarkAppearance(useDarkAppearance); >+ m_page->effectiveAppearanceDidChange(useDarkAppearance, m_page->useInactiveAppearance()); > } > > ExceptionOr<void> InternalSettings::setUseDarkAppearance(bool useDarkAppearance) >diff --git a/Source/WebKit/Shared/WebPageCreationParameters.cpp b/Source/WebKit/Shared/WebPageCreationParameters.cpp >index 47c6ed62bc0bec089690669a45d168f0dc2af563..bd9db403b39a5ad6f76cf6360971407b3cc96dd8 100644 >--- a/Source/WebKit/Shared/WebPageCreationParameters.cpp >+++ b/Source/WebKit/Shared/WebPageCreationParameters.cpp >@@ -77,6 +77,7 @@ void WebPageCreationParameters::encode(IPC::Encoder& encoder) const > encoder << controlledByAutomation; > encoder << isProcessSwap; > encoder << useDarkAppearance; >+ encoder << useInactiveAppearance; > > #if PLATFORM(MAC) > encoder << colorSpace; >@@ -247,6 +248,8 @@ Optional<WebPageCreationParameters> WebPageCreationParameters::decode(IPC::Decod > return WTF::nullopt; > if (!decoder.decode(parameters.useDarkAppearance)) > return WTF::nullopt; >+ if (!decoder.decode(parameters.useInactiveAppearance)) >+ return WTF::nullopt; > > #if PLATFORM(MAC) > if (!decoder.decode(parameters.colorSpace)) >diff --git a/Source/WebKit/Shared/WebPageCreationParameters.h b/Source/WebKit/Shared/WebPageCreationParameters.h >index 159fdeede4f906c84263bc3646313b63e0ff2b9a..0243bd1cbacc59f286052e98e867e6a332df12e5 100644 >--- a/Source/WebKit/Shared/WebPageCreationParameters.h >+++ b/Source/WebKit/Shared/WebPageCreationParameters.h >@@ -136,6 +136,7 @@ struct WebPageCreationParameters { > bool isProcessSwap { false }; > > bool useDarkAppearance { false }; >+ bool useInactiveAppearance { false }; > > #if PLATFORM(MAC) > ColorSpaceData colorSpace; >diff --git a/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h b/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h >index 44d9c9d6d2db967eeeb54211906ac1aeeb432123..dfa37ab1209a137488e10758887ab3225c033cc6 100644 >--- a/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h >+++ b/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h >@@ -598,6 +598,7 @@ public: > > void effectiveAppearanceDidChange(); > bool effectiveAppearanceIsDark(); >+ bool effectiveAppearanceIsInactive(); > > void takeFocus(WebCore::FocusDirection); > >diff --git a/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm b/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm >index 0044be50817da1b0d86f42c7fb34a79e44a413c8..338d10730dc00555c799bf4030af1e32e61dc352 100644 >--- a/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm >+++ b/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm >@@ -5316,6 +5316,12 @@ bool WebViewImpl::effectiveAppearanceIsDark() > #endif > } > >+bool WebViewImpl::effectiveAppearanceIsInactive() >+{ >+ // FIXME: Use the window isKeyWindow state or view first responder status? >+ return false; >+} >+ > } // namespace WebKit > > #endif // PLATFORM(MAC) >diff --git a/Source/WebKit/UIProcess/PageClient.h b/Source/WebKit/UIProcess/PageClient.h >index c89cbb1f237b6f149fc5519cdfe2fdbc43fb691e..e767f5e0c26fe6e404bc313889fe1b82d202b09a 100644 >--- a/Source/WebKit/UIProcess/PageClient.h >+++ b/Source/WebKit/UIProcess/PageClient.h >@@ -327,6 +327,7 @@ public: > #endif > > virtual bool effectiveAppearanceIsDark() const { return false; } >+ virtual bool effectiveAppearanceIsInactive() const { return false; } > > virtual void enterAcceleratedCompositingMode(const LayerTreeContext&) = 0; > virtual void exitAcceleratedCompositingMode() = 0; >diff --git a/Source/WebKit/UIProcess/WebPageProxy.cpp b/Source/WebKit/UIProcess/WebPageProxy.cpp >index 4e1aef9a6b4452f31659088b1e7cc94919ac6e94..b9e6b2acea54254ff89c096418ceb1a458a5e197 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.cpp >+++ b/Source/WebKit/UIProcess/WebPageProxy.cpp >@@ -7097,6 +7097,7 @@ WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& proc > parameters.layerHostingMode = m_layerHostingMode; > parameters.controlledByAutomation = m_controlledByAutomation; > parameters.useDarkAppearance = useDarkAppearance(); >+ parameters.useInactiveAppearance = useInactiveAppearance(); > #if PLATFORM(MAC) > parameters.colorSpace = pageClient().colorSpace(); > parameters.useSystemAppearance = m_useSystemAppearance; >@@ -8584,12 +8585,17 @@ bool WebPageProxy::useDarkAppearance() const > return pageClient().effectiveAppearanceIsDark(); > } > >+bool WebPageProxy::useInactiveAppearance() const >+{ >+ return pageClient().effectiveAppearanceIsInactive(); >+} >+ > void WebPageProxy::effectiveAppearanceDidChange() > { > if (!hasRunningProcess()) > return; > >- m_process->send(Messages::WebPage::SetUseDarkAppearance(useDarkAppearance()), m_pageID); >+ m_process->send(Messages::WebPage::EffectiveAppearanceDidChange(useDarkAppearance(), useInactiveAppearance()), m_pageID); > } > > #if PLATFORM(COCOA) >diff --git a/Source/WebKit/UIProcess/WebPageProxy.h b/Source/WebKit/UIProcess/WebPageProxy.h >index 8720eebd7fb7ccf0b37388ab8bf2fdfed7b1c19b..c4621202057fb0327da80e0e47fddee5b3b5fc7c 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.h >+++ b/Source/WebKit/UIProcess/WebPageProxy.h >@@ -942,6 +942,7 @@ public: > > void effectiveAppearanceDidChange(); > bool useDarkAppearance() const; >+ bool useInactiveAppearance() const; > > #if PLATFORM(COCOA) > // Called by the web process through a message. >diff --git a/Source/WebKit/UIProcess/mac/PageClientImplMac.h b/Source/WebKit/UIProcess/mac/PageClientImplMac.h >index 8dea5e21a386c34ddab31f49b9809d497bfe167c..b767fa931fd1f5973e57fd98f60d5ba8d9b8b1c2 100644 >--- a/Source/WebKit/UIProcess/mac/PageClientImplMac.h >+++ b/Source/WebKit/UIProcess/mac/PageClientImplMac.h >@@ -241,6 +241,7 @@ private: > > WebCore::UserInterfaceLayoutDirection userInterfaceLayoutDirection() override; > bool effectiveAppearanceIsDark() const override; >+ bool effectiveAppearanceIsInactive() const override; > > #if ENABLE(DRAG_SUPPORT) > void didPerformDragOperation(bool handled) final; >diff --git a/Source/WebKit/UIProcess/mac/PageClientImplMac.mm b/Source/WebKit/UIProcess/mac/PageClientImplMac.mm >index 38f1cfbd92647d56fd08e92542fe9bae512d89e8..8124ec4e62c30011761781d9f2b38ab1eec65027 100644 >--- a/Source/WebKit/UIProcess/mac/PageClientImplMac.mm >+++ b/Source/WebKit/UIProcess/mac/PageClientImplMac.mm >@@ -944,6 +944,11 @@ bool PageClientImpl::effectiveAppearanceIsDark() const > return m_impl->effectiveAppearanceIsDark(); > } > >+bool PageClientImpl::effectiveAppearanceIsInactive() const >+{ >+ return m_impl->effectiveAppearanceIsInactive(); >+} >+ > void PageClientImpl::takeFocus(WebCore::FocusDirection direction) > { > m_impl->takeFocus(direction); >diff --git a/Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp b/Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp >index 7471bcea92c4989afecb0a90873dcee62a47c4b7..ac7be19e1022808836c62544606fbb5dc8f519ce 100644 >--- a/Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp >+++ b/Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp >@@ -593,7 +593,7 @@ void WKBundlePageSetUseDarkAppearance(WKBundlePageRef pageRef, bool useDarkAppea > { > WebKit::WebPage* webPage = WebKit::toImpl(pageRef); > if (WebCore::Page* page = webPage ? webPage->corePage() : nullptr) >- page->setUseDarkAppearance(useDarkAppearance); >+ page->effectiveAppearanceDidChange(useDarkAppearance, page->useInactiveAppearance()); > } > > bool WKBundlePageIsUsingDarkAppearance(WKBundlePageRef pageRef) >diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.cpp b/Source/WebKit/WebProcess/WebPage/WebPage.cpp >index 4370222ae8d38776799307f8903916735cf80a80..e462a5164207ec917adfb0e2c181a0d32cd199f2 100644 >--- a/Source/WebKit/WebProcess/WebPage/WebPage.cpp >+++ b/Source/WebKit/WebProcess/WebPage/WebPage.cpp >@@ -558,7 +558,7 @@ WebPage::WebPage(uint64_t pageID, WebPageCreationParameters&& parameters) > setGapBetweenPages(parameters.gapBetweenPages); > setPaginationLineGridEnabled(parameters.paginationLineGridEnabled); > >- setUseDarkAppearance(parameters.useDarkAppearance); >+ effectiveAppearanceDidChange(parameters.useDarkAppearance, parameters.useInactiveAppearance); > > if (parameters.isEditable) > setEditable(true); >@@ -4609,9 +4609,9 @@ void WebPage::setUseSystemAppearance(bool useSystemAppearance) > #endif > > #if !PLATFORM(GTK) >-void WebPage::setUseDarkAppearance(bool useDarkAppearance) >+void WebPage::effectiveAppearanceDidChange(bool useDarkAppearance, bool useInactiveAppearance) > { >- corePage()->setUseDarkAppearance(useDarkAppearance); >+ corePage()->effectiveAppearanceDidChange(useDarkAppearance, useInactiveAppearance); > } > #endif > >diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.h b/Source/WebKit/WebProcess/WebPage/WebPage.h >index d9d804cbd637991052c8c6d2c1ce229e67d36a98..24b982520077302e0534ed69426937f5f41f56fd 100644 >--- a/Source/WebKit/WebProcess/WebPage/WebPage.h >+++ b/Source/WebKit/WebProcess/WebPage/WebPage.h >@@ -545,7 +545,7 @@ public: > void setUseSystemAppearance(bool); > #endif > >- void setUseDarkAppearance(bool); >+ void effectiveAppearanceDidChange(bool useDarkAppearance, bool useInactiveAppearance); > > bool windowIsFocused() const; > bool windowAndWebPageAreFocused() const; >diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.messages.in b/Source/WebKit/WebProcess/WebPage/WebPage.messages.in >index 0123fd9d4fb4b0a19097677046c4dceed6c980ac..4935672bc9e5324d0a2c2b5f06c747dab1780bfd 100644 >--- a/Source/WebKit/WebProcess/WebPage/WebPage.messages.in >+++ b/Source/WebKit/WebProcess/WebPage/WebPage.messages.in >@@ -487,7 +487,7 @@ messages -> WebPage LegacyReceiver { > SetFooterBannerHeightForTesting(int height); > #endif > >- SetUseDarkAppearance(bool useDarkAppearance); >+ EffectiveAppearanceDidChange(bool useDarkAppearance, bool useInactiveAppearance); > > #if PLATFORM(COCOA) > RequestActiveNowPlayingSessionInfo(WebKit::CallbackID callbackID) >diff --git a/Source/WebKit/WebProcess/WebPage/gtk/WebPageGtk.cpp b/Source/WebKit/WebProcess/WebPage/gtk/WebPageGtk.cpp >index b46699f72806578eb694596065d9d3b082c0ae23..47e25325d72ddc0080754d3117dabb08c7f002eb 100644 >--- a/Source/WebKit/WebProcess/WebPage/gtk/WebPageGtk.cpp >+++ b/Source/WebKit/WebProcess/WebPage/gtk/WebPageGtk.cpp >@@ -195,11 +195,11 @@ void WebPage::collapseSelectionInFrame(uint64_t frameID) > frame->coreFrame()->selection().setBase(selection.extent(), selection.affinity()); > } > >-void WebPage::setUseDarkAppearance(bool useDarkAppearance) >+void WebPage::effectiveAppearanceDidChange(bool useDarkAppearance, bool useInactiveAppearance) > { > if (auto* settings = gtk_settings_get_default()) > g_object_set(settings, "gtk-application-prefer-dark-theme", useDarkAppearance, nullptr); >- corePage()->setUseDarkAppearance(useDarkAppearance); >+ corePage()->effectiveAppearanceDidChange(useDarkAppearance, useInactiveAppearance); > } > > } // namespace WebKit >diff --git a/Source/WebKitLegacy/mac/WebView/WebView.mm b/Source/WebKitLegacy/mac/WebView/WebView.mm >index 16dd65bba1f40d96e2a39e6b903e880e82664044..9d6eea41c5a7a92a394350254e79f4f612042fea 100644 >--- a/Source/WebKitLegacy/mac/WebView/WebView.mm >+++ b/Source/WebKitLegacy/mac/WebView/WebView.mm >@@ -1589,7 +1589,7 @@ - (void)_commonInitializationWithFrameName:(NSString *)frameName groupName:(NSSt > #endif > > #if HAVE(OS_DARK_MODE_SUPPORT) && PLATFORM(MAC) >- _private->page->setUseDarkAppearance(self._effectiveAppearanceIsDark); >+ _private->page->effectiveAppearanceDidChange(self._effectiveAppearanceIsDark, self._effectiveAppearanceIsInactive); > #endif > > _private->page->settings().setContentDispositionAttachmentSandboxEnabled(true); >@@ -2500,7 +2500,28 @@ - (void)_setUseDarkAppearance:(BOOL)useDarkAppearance > { > if (!_private || !_private->page) > return; >- _private->page->setUseDarkAppearance(useDarkAppearance); >+ [self _setUseDarkAppearance:useDarkAppearance useInactiveAppearance:_private->page->useInactiveAppearance()]; >+} >+ >+- (BOOL)_useInactiveAppearance >+{ >+ if (!_private || !_private->page) >+ return NO; >+ return _private->page->useInactiveAppearance(); >+} >+ >+- (void)_setUseInactiveAppearance:(BOOL)useInactiveAppearance >+{ >+ if (!_private || !_private->page) >+ return; >+ [self _setUseDarkAppearance:_private->page->useDarkAppearance() useInactiveAppearance:useInactiveAppearance]; >+} >+ >+- (void)_setUseDarkAppearance:(BOOL)useDarkAppearance useInactiveAppearance:(BOOL)useInactiveAppearance >+{ >+ if (!_private || !_private->page) >+ return; >+ _private->page->effectiveAppearanceDidChange(useDarkAppearance, useInactiveAppearance); > } > > + (void)_setIconLoadingEnabled:(BOOL)enabled >@@ -5330,6 +5351,12 @@ - (bool)_effectiveAppearanceIsDark > NSAppearanceName appearance = [[self effectiveAppearance] bestMatchFromAppearancesWithNames:@[ NSAppearanceNameAqua, NSAppearanceNameDarkAqua ]]; > return [appearance isEqualToString:NSAppearanceNameDarkAqua]; > } >+ >+- (bool)_effectiveAppearanceIsInactive >+{ >+ // FIXME: Use the window isKeyWindow state or view first responder status? >+ return false; >+} > #endif > > - (void)_setUseSystemAppearance:(BOOL)useSystemAppearance >@@ -5354,7 +5381,7 @@ - (void)viewDidChangeEffectiveAppearance > if (!_private || !_private->page) > return; > >- _private->page->setUseDarkAppearance(self._effectiveAppearanceIsDark); >+ _private->page->effectiveAppearanceDidChange(self._effectiveAppearanceIsDark, self._effectiveAppearanceIsInactive); > } > #endif > >diff --git a/Source/WebKitLegacy/mac/WebView/WebViewPrivate.h b/Source/WebKitLegacy/mac/WebView/WebViewPrivate.h >index c25ee83b432b735f7e8318aa0f5645a244efa83b..8db2159ef6e1244032c4700cb280887a86f3e89f 100644 >--- a/Source/WebKitLegacy/mac/WebView/WebViewPrivate.h >+++ b/Source/WebKitLegacy/mac/WebView/WebViewPrivate.h >@@ -323,6 +323,9 @@ typedef enum { > + (BOOL)_isIconLoadingEnabled; > > @property (nonatomic, assign, setter=_setUseDarkAppearance:) BOOL _useDarkAppearance; >+@property (nonatomic, assign, setter=_setUseInactiveAppearance:) BOOL _useInactiveAppearance; >+ >+- (void)_setUseDarkAppearance:(BOOL)useDarkAppearance useInactiveAppearance:(BOOL)useInactiveAppearance; > > - (WebInspector *)inspector; >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 197699
:
369403
|
369423
|
369433