Title: [279078] trunk/Source
Revision
279078
Author
megan_gard...@apple.com
Date
2021-06-21 13:44:49 -0700 (Mon, 21 Jun 2021)

Log Message

AppHighlights disappear on page reload
https://bugs.webkit.org/show_bug.cgi?id=227141
rdar://78190331

Reviewed by Devin Rousso.

Source/WebCore:

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):

Source/WebKit:

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):

Modified Paths

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)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to