Diff
Modified: trunk/Source/WebCore/ChangeLog (279077 => 279078)
--- trunk/Source/WebCore/ChangeLog 2021-06-21 19:37:00 UTC (rev 279077)
+++ trunk/Source/WebCore/ChangeLog 2021-06-21 20:44:49 UTC (rev 279078)
@@ -1,3 +1,18 @@
+2021-06-21 Megan Gardner <megan_gard...@apple.com>
+
+ AppHighlights disappear on page reload
+ https://bugs.webkit.org/show_bug.cgi?id=227141
+ rdar://78190331
+
+ Reviewed by Devin Rousso.
+
+ Preserve the state of highlight visibility so that is correct on page-reload.
+
+ * dom/Document.cpp:
+ (WebCore::Document::appHighlightRegister):
+ * page/ChromeClient.h:
+ (WebCore::ChromeClient::appHighlightsVisiblility const):
+
2021-06-21 Rob Buis <rb...@igalia.com>
CSSOM test for serializing font-variant fails
Modified: trunk/Source/WebCore/dom/Document.cpp (279077 => 279078)
--- trunk/Source/WebCore/dom/Document.cpp 2021-06-21 19:37:00 UTC (rev 279077)
+++ trunk/Source/WebCore/dom/Document.cpp 2021-06-21 20:44:49 UTC (rev 279078)
@@ -2822,8 +2822,11 @@
#if ENABLE(APP_HIGHLIGHTS)
HighlightRegister& Document::appHighlightRegister()
{
- if (!m_appHighlightRegister)
+ if (!m_appHighlightRegister) {
m_appHighlightRegister = HighlightRegister::create();
+ if (auto* currentPage = page())
+ m_appHighlightRegister->setHighlightVisibility(currentPage->chrome().client().appHighlightsVisiblility());
+ }
return *m_appHighlightRegister;
}
Modified: trunk/Source/WebCore/page/ChromeClient.h (279077 => 279078)
--- trunk/Source/WebCore/page/ChromeClient.h 2021-06-21 19:37:00 UTC (rev 279077)
+++ trunk/Source/WebCore/page/ChromeClient.h 2021-06-21 20:44:49 UTC (rev 279078)
@@ -35,6 +35,7 @@
#include "GraphicsContext.h"
#include "GraphicsLayer.h"
#include "HTMLMediaElementEnums.h"
+#include "HighlightVisibility.h"
#include "HostWindow.h"
#include "Icon.h"
#include "ImageBuffer.h"
@@ -236,6 +237,10 @@
virtual void themeColorChanged() const { }
virtual void pageExtendedBackgroundColorDidChange() const { }
virtual void sampledPageTopColorChanged() const { }
+
+#if ENABLE(APP_HIGHLIGHTS)
+ virtual WebCore::HighlightVisibility appHighlightsVisiblility() const { return HighlightVisibility::Hidden; };
+#endif
virtual void exceededDatabaseQuota(Frame&, const String& databaseName, DatabaseDetails) = 0;
Modified: trunk/Source/WebKit/ChangeLog (279077 => 279078)
--- trunk/Source/WebKit/ChangeLog 2021-06-21 19:37:00 UTC (rev 279077)
+++ trunk/Source/WebKit/ChangeLog 2021-06-21 20:44:49 UTC (rev 279078)
@@ -1,3 +1,29 @@
+2021-06-21 Megan Gardner <megan_gard...@apple.com>
+
+ AppHighlights disappear on page reload
+ https://bugs.webkit.org/show_bug.cgi?id=227141
+ rdar://78190331
+
+ Reviewed by Devin Rousso.
+
+ When a page is reloaded, a new set of highlights is loaded, but the state of visibility of
+ the highlights is not preserved.
+ We need to preserve the state of highlights so they are correctly shown on reload.
+
+ * Shared/WebPageCreationParameters.cpp:
+ (WebKit::WebPageCreationParameters::encode const):
+ (WebKit::WebPageCreationParameters::decode):
+ * Shared/WebPageCreationParameters.h:
+ * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+ (WebKit::WebChromeClient::appHighlightsVisiblility const):
+ * WebProcess/WebCoreSupport/WebChromeClient.h:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::m_appHighlightsVisible):
+ (WebKit::WebPage::setAppHighlightsVisibility):
+ (WebKit::m_lastNavigationWasAppBound): Deleted.
+ * WebProcess/WebPage/WebPage.h:
+ (WebKit::WebPage::appHighlightsVisiblility const):
+
2021-06-21 Alex Christensen <achristen...@webkit.org>
Break ref cycle between API::HTTPCookieStore and WebKit::WebsiteDataStore
Modified: trunk/Source/WebKit/Shared/WebPageCreationParameters.cpp (279077 => 279078)
--- trunk/Source/WebKit/Shared/WebPageCreationParameters.cpp 2021-06-21 19:37:00 UTC (rev 279077)
+++ trunk/Source/WebKit/Shared/WebPageCreationParameters.cpp 2021-06-21 20:44:49 UTC (rev 279078)
@@ -185,6 +185,10 @@
#if PLATFORM(IOS)
encoder << allowsDeprecatedSynchronousXMLHttpRequestDuringUnload;
#endif
+
+#if ENABLE(APP_HIGHLIGHTS)
+ encoder << appHighlightsVisible;
+#endif
}
std::optional<WebPageCreationParameters> WebPageCreationParameters::decode(IPC::Decoder& decoder)
@@ -598,6 +602,11 @@
if (!decoder.decode(parameters.allowsDeprecatedSynchronousXMLHttpRequestDuringUnload))
return std::nullopt;
#endif
+
+#if ENABLE(APP_HIGHLIGHTS)
+ if (!decoder.decode(parameters.appHighlightsVisible))
+ return std::nullopt;
+#endif
return parameters;
}
Modified: trunk/Source/WebKit/Shared/WebPageCreationParameters.h (279077 => 279078)
--- trunk/Source/WebKit/Shared/WebPageCreationParameters.h 2021-06-21 19:37:00 UTC (rev 279077)
+++ trunk/Source/WebKit/Shared/WebPageCreationParameters.h 2021-06-21 20:44:49 UTC (rev 279078)
@@ -38,6 +38,7 @@
#include <WebCore/Color.h>
#include <WebCore/DestinationColorSpace.h>
#include <WebCore/FloatSize.h>
+#include <WebCore/HighlightVisibility.h>
#include <WebCore/IntSize.h>
#include <WebCore/LayoutMilestone.h>
#include <WebCore/MediaProducer.h>
@@ -255,6 +256,11 @@
#if PLATFORM(IOS)
bool allowsDeprecatedSynchronousXMLHttpRequestDuringUnload { false };
#endif
+
+#if ENABLE(APP_HIGHLIGHTS)
+ WebCore::HighlightVisibility appHighlightsVisible { WebCore::HighlightVisibility::Hidden };
+#endif
+
};
} // namespace WebKit
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (279077 => 279078)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-06-21 19:37:00 UTC (rev 279077)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-06-21 20:44:49 UTC (rev 279078)
@@ -301,6 +301,10 @@
#include "MediaSessionCoordinatorProxyPrivate.h"
#include "RemoteMediaSessionCoordinatorProxy.h"
+#if ENABLE(APP_HIGHLIGHTS)
+#include "HighlightVisibility.h"
+#endif
+
#if USE(APPLE_INTERNAL_SDK)
#import <WebKitAdditions/WKCoordinatorAdditions.h>
#else
@@ -8210,6 +8214,10 @@
// FIXME: This is also being passed over the to WebProcess via the PreferencesStore.
parameters.allowsDeprecatedSynchronousXMLHttpRequestDuringUnload = allowsDeprecatedSynchronousXMLHttpRequestDuringUnload();
#endif
+
+#if ENABLE(APP_HIGHLIGHTS)
+ parameters.appHighlightsVisible = appHighlightsVisibility() ? HighlightVisibility::Visible : HighlightVisibility::Hidden;
+#endif
return parameters;
}
Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp (279077 => 279078)
--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp 2021-06-21 19:37:00 UTC (rev 279077)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp 2021-06-21 20:44:49 UTC (rev 279078)
@@ -1173,6 +1173,13 @@
m_page.sampledPageTopColorChanged();
}
+#if ENABLE(APP_HIGHLIGHTS)
+WebCore::HighlightVisibility WebChromeClient::appHighlightsVisiblility() const
+{
+ return m_page.appHighlightsVisiblility();
+}
+#endif
+
void WebChromeClient::wheelEventHandlersChanged(bool hasHandlers)
{
m_page.wheelEventHandlersChanged(hasHandlers);
Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h (279077 => 279078)
--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h 2021-06-21 19:37:00 UTC (rev 279077)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h 2021-06-21 20:44:49 UTC (rev 279078)
@@ -334,6 +334,10 @@
void pageExtendedBackgroundColorDidChange() const final;
void sampledPageTopColorChanged() const final;
+#if ENABLE(APP_HIGHLIGHTS)
+ WebCore::HighlightVisibility appHighlightsVisiblility() const final;
+#endif
+
void wheelEventHandlersChanged(bool) final;
String plugInStartLabelTitle(const String& mimeType) const final;
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (279077 => 279078)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-06-21 19:37:00 UTC (rev 279077)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-06-21 20:44:49 UTC (rev 279078)
@@ -535,6 +535,9 @@
, m_limitsNavigationsToAppBoundDomains(parameters.limitsNavigationsToAppBoundDomains)
#endif
, m_lastNavigationWasAppBound(parameters.lastNavigationWasAppBound)
+#if ENABLE(APP_HIGHLIGHTS)
+ , m_appHighlightsVisible(parameters.appHighlightsVisible)
+#endif
{
ASSERT(m_identifier);
@@ -7617,6 +7620,7 @@
void WebPage::setAppHighlightsVisibility(WebCore::HighlightVisibility appHighlightVisibility)
{
+ m_appHighlightsVisible = appHighlightVisibility;
for (RefPtr<Frame> frame = m_mainFrame->coreFrame(); frame; frame = frame->tree().traverseNextRendered()) {
if (auto document = makeRefPtr(frame->document()))
document->appHighlightRegister().setHighlightVisibility(appHighlightVisibility);
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (279077 => 279078)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2021-06-21 19:37:00 UTC (rev 279077)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2021-06-21 20:44:49 UTC (rev 279078)
@@ -1430,6 +1430,7 @@
#if ENABLE(APP_HIGHLIGHTS)
WebCore::CreateNewGroupForHighlight highlightIsNewGroup() const { return m_highlightIsNewGroup; }
WebCore::HighlightRequestOriginatedInApp highlightRequestOriginatedInApp() const { return m_highlightRequestOriginatedInApp; }
+ WebCore::HighlightVisibility appHighlightsVisiblility() const { return m_appHighlightsVisible; }
bool createAppHighlightInSelectedRange(WebCore::CreateNewGroupForHighlight, WebCore::HighlightRequestOriginatedInApp);
void restoreAppHighlightsAndScrollToIndex(const Vector<SharedMemory::IPCHandle>&&, const std::optional<unsigned> index);
@@ -2352,6 +2353,10 @@
#if ENABLE(WEBXR) && PLATFORM(COCOA)
std::unique_ptr<PlatformXRSystemProxy> m_xrSystemProxy;
#endif
+
+#if ENABLE(APP_HIGHLIGHTS)
+ WebCore::HighlightVisibility m_appHighlightsVisible { false };
+#endif
};
#if !PLATFORM(IOS_FAMILY)