- Revision
- 234268
- Author
- [email protected]
- Date
- 2018-07-26 12:49:09 -0700 (Thu, 26 Jul 2018)
Log Message
ERROR: Unhandled web process message 'WebPage:SetUseDarkAppearance' when browsing in dark mode
https://bugs.webkit.org/show_bug.cgi?id=188028
Reviewed by Wenson Hsieh.
The issue was that the WebViewImpl constructor was calling setUseDarkAppearance() *before* calling
initializeWebPage(), which would cause us to send IPC the WebContent process for a pageID that does
not exist on WebProcess side yet.
To address the issue, the WebViewImpl constructor no longer calls setUseDarkAppearance() and WebPageProxy
no longer holds a flag indicates is dark appearance is used. Instead, the WebPageProxy asks the WebView
for the value whenever it needs to, via the PageClient.
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::WebViewImpl):
(WebKit::WebViewImpl::effectiveAppearanceDidChange):
(WebKit::WebViewImpl::setUseDarkAppearance): Deleted.
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::useDarkAppearance const):
(WebKit::WebPageProxy::effectiveAppearanceDidChange):
(WebKit::WebPageProxy::showPlaybackTargetPicker):
(WebKit::WebPageProxy::setUseDarkAppearance): Deleted.
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::useDarkAppearance const): Deleted.
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::effectiveAppearanceIsDark const):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (234267 => 234268)
--- trunk/Source/WebKit/ChangeLog 2018-07-26 17:50:04 UTC (rev 234267)
+++ trunk/Source/WebKit/ChangeLog 2018-07-26 19:49:09 UTC (rev 234268)
@@ -1,3 +1,36 @@
+2018-07-26 Chris Dumez <[email protected]>
+
+ ERROR: Unhandled web process message 'WebPage:SetUseDarkAppearance' when browsing in dark mode
+ https://bugs.webkit.org/show_bug.cgi?id=188028
+
+ Reviewed by Wenson Hsieh.
+
+ The issue was that the WebViewImpl constructor was calling setUseDarkAppearance() *before* calling
+ initializeWebPage(), which would cause us to send IPC the WebContent process for a pageID that does
+ not exist on WebProcess side yet.
+
+ To address the issue, the WebViewImpl constructor no longer calls setUseDarkAppearance() and WebPageProxy
+ no longer holds a flag indicates is dark appearance is used. Instead, the WebPageProxy asks the WebView
+ for the value whenever it needs to, via the PageClient.
+
+ * UIProcess/Cocoa/WebViewImpl.h:
+ * UIProcess/Cocoa/WebViewImpl.mm:
+ (WebKit::WebViewImpl::WebViewImpl):
+ (WebKit::WebViewImpl::effectiveAppearanceDidChange):
+ (WebKit::WebViewImpl::setUseDarkAppearance): Deleted.
+ * UIProcess/PageClient.h:
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::creationParameters):
+ (WebKit::WebPageProxy::useDarkAppearance const):
+ (WebKit::WebPageProxy::effectiveAppearanceDidChange):
+ (WebKit::WebPageProxy::showPlaybackTargetPicker):
+ (WebKit::WebPageProxy::setUseDarkAppearance): Deleted.
+ * UIProcess/WebPageProxy.h:
+ (WebKit::WebPageProxy::useDarkAppearance const): Deleted.
+ * UIProcess/mac/PageClientImplMac.h:
+ * UIProcess/mac/PageClientImplMac.mm:
+ (WebKit::PageClientImpl::effectiveAppearanceIsDark const):
+
2018-07-26 Sihui Liu <[email protected]>
Remove a forward protocol declaration of '_WKWebViewPrintProvider'
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h (234267 => 234268)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h 2018-07-26 17:50:04 UTC (rev 234267)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.h 2018-07-26 19:49:09 UTC (rev 234268)
@@ -539,8 +539,6 @@
void setUseSystemAppearance(bool);
bool useSystemAppearance();
- void setUseDarkAppearance(bool);
-
void effectiveAppearanceDidChange();
bool effectiveAppearanceIsDark();
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm (234267 => 234268)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm 2018-07-26 17:50:04 UTC (rev 234267)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm 2018-07-26 19:49:09 UTC (rev 234268)
@@ -1312,8 +1312,6 @@
m_page->setAddsVisitedLinks(processPool.historyClient().addsVisitedLinks());
- m_page->setUseDarkAppearance(effectiveAppearanceIsDark());
-
m_page->initializeWebPage();
registerDraggedTypes();
@@ -5023,7 +5021,7 @@
void WebViewImpl::effectiveAppearanceDidChange()
{
- setUseDarkAppearance(effectiveAppearanceIsDark());
+ m_page->effectiveAppearanceDidChange();
}
bool WebViewImpl::effectiveAppearanceIsDark()
@@ -5036,11 +5034,6 @@
#endif
}
-void WebViewImpl::setUseDarkAppearance(bool useDarkAppearance)
-{
- m_page->setUseDarkAppearance(useDarkAppearance);
-}
-
} // namespace WebKit
#endif // PLATFORM(MAC)
Modified: trunk/Source/WebKit/UIProcess/PageClient.h (234267 => 234268)
--- trunk/Source/WebKit/UIProcess/PageClient.h 2018-07-26 17:50:04 UTC (rev 234267)
+++ trunk/Source/WebKit/UIProcess/PageClient.h 2018-07-26 19:49:09 UTC (rev 234268)
@@ -266,6 +266,8 @@
virtual NSWindow *platformWindow() = 0;
virtual void setShouldSuppressFirstResponderChanges(bool) = 0;
+ virtual bool effectiveAppearanceIsDark() const = 0;
+
#if WK_API_ENABLED
virtual NSView *inspectorAttachmentView() = 0;
virtual _WKRemoteObjectRegistry *remoteObjectRegistry() = 0;
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (234267 => 234268)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2018-07-26 17:50:04 UTC (rev 234267)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2018-07-26 19:49:09 UTC (rev 234268)
@@ -6247,7 +6247,7 @@
#if PLATFORM(MAC)
parameters.colorSpace = m_pageClient.colorSpace();
parameters.useSystemAppearance = m_useSystemAppearance;
- parameters.useDarkAppearance = m_useDarkAppearance;
+ parameters.useDarkAppearance = useDarkAppearance();
#endif
#if PLATFORM(IOS)
parameters.screenSize = screenSize();
@@ -6862,6 +6862,11 @@
m_process->send(Messages::WebPage::HandleAlternativeTextUIResult(result), m_pageID);
}
+bool WebPageProxy::useDarkAppearance() const
+{
+ return m_pageClient.effectiveAppearanceIsDark();
+}
+
#if USE(DICTATION_ALTERNATIVES)
void WebPageProxy::showDictationAlternativeUI(const WebCore::FloatRect& boundingBoxOfDictatedText, uint64_t dictationContext)
{
@@ -7371,16 +7376,12 @@
m_process->send(Messages::WebPage::SetUseSystemAppearance(useSystemAppearance), m_pageID);
}
-void WebPageProxy::setUseDarkAppearance(bool useDarkAppearance)
+void WebPageProxy::effectiveAppearanceDidChange()
{
if (!isValid())
return;
- if (useDarkAppearance == m_useDarkAppearance)
- return;
-
- m_useDarkAppearance = useDarkAppearance;
- m_process->send(Messages::WebPage::SetUseDarkAppearance(useDarkAppearance), m_pageID);
+ m_process->send(Messages::WebPage::SetUseDarkAppearance(useDarkAppearance()), m_pageID);
}
void WebPageProxy::setHeaderBannerHeightForTesting(int height)
@@ -7428,7 +7429,7 @@
void WebPageProxy::showPlaybackTargetPicker(uint64_t contextId, const WebCore::FloatRect& rect, bool hasVideo)
{
- m_pageClient.mediaSessionManager().showPlaybackTargetPicker(*this, contextId, m_pageClient.rootViewToScreen(IntRect(rect)), hasVideo, m_useDarkAppearance);
+ m_pageClient.mediaSessionManager().showPlaybackTargetPicker(*this, contextId, m_pageClient.rootViewToScreen(IntRect(rect)), hasVideo, useDarkAppearance());
}
void WebPageProxy::playbackTargetPickerClientStateDidChange(uint64_t contextId, WebCore::MediaProducer::MediaStateFlags state)
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (234267 => 234268)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2018-07-26 17:50:04 UTC (rev 234267)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2018-07-26 19:49:09 UTC (rev 234268)
@@ -836,8 +836,8 @@
#if PLATFORM(MAC)
void setUseSystemAppearance(bool);
bool useSystemAppearance() const { return m_useSystemAppearance; }
- void setUseDarkAppearance(bool);
- bool useDarkAppearance() const { return m_useDarkAppearance; }
+ void effectiveAppearanceDidChange();
+ bool useDarkAppearance() const;
#endif
#if PLATFORM(COCOA)
@@ -1891,7 +1891,6 @@
#if PLATFORM(MAC)
bool m_useSystemAppearance { false };
- bool m_useDarkAppearance { false };
#endif
#if ENABLE(APPLE_PAY)
Modified: trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h (234267 => 234268)
--- trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h 2018-07-26 17:50:04 UTC (rev 234267)
+++ trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h 2018-07-26 19:49:09 UTC (rev 234268)
@@ -231,6 +231,7 @@
NSWindow *platformWindow() override;
WebCore::UserInterfaceLayoutDirection userInterfaceLayoutDirection() override;
+ bool effectiveAppearanceIsDark() const override;
#if WK_API_ENABLED
NSView *inspectorAttachmentView() override;
Modified: trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.mm (234267 => 234268)
--- trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.mm 2018-07-26 17:50:04 UTC (rev 234267)
+++ trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.mm 2018-07-26 19:49:09 UTC (rev 234268)
@@ -894,6 +894,11 @@
return (m_view.userInterfaceLayoutDirection == NSUserInterfaceLayoutDirectionLeftToRight) ? WebCore::UserInterfaceLayoutDirection::LTR : WebCore::UserInterfaceLayoutDirection::RTL;
}
+bool PageClientImpl::effectiveAppearanceIsDark() const
+{
+ return m_impl->effectiveAppearanceIsDark();
+}
+
} // namespace WebKit
#endif // PLATFORM(MAC)