<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[280145] branches/safari-612.1.24.0-branch/Source/WebKit</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/280145">280145</a></dd>
<dt>Author</dt> <dd>alancoon@apple.com</dd>
<dt>Date</dt> <dd>2021-07-21 10:03:04 -0700 (Wed, 21 Jul 2021)</dd>
</dl>

<h3>Log Message</h3>
<pre>Cherry-pick <a href="http://trac.webkit.org/projects/webkit/changeset/280119">r280119</a>. rdar://problem/80902802

    [iOS] Add SPI for internal clients to consult whether or not viewport quirks should be enabled
    https://bugs.webkit.org/show_bug.cgi?id=228123
    rdar://80397679

    Reviewed by Tim Horton.

    Add support for an SPI property on WKWebView that indicates whether site-specific quirks should be enabled.
    For now, this flag is only updated whenever we commit a mainframe load, which is sufficient for the purposes of
    Safari to determine whether or not to use quirked viewport behaviors for tab pill behavior.

    If needed in the future, this property should probably:
    1. Support KVO, and...
    2. Change eagerly when the option is toggled via Web Inspector.

    * UIProcess/API/Cocoa/WKWebView.mm:
    (-[WKWebView _needsSiteSpecificQuirks]):
    * UIProcess/API/Cocoa/WKWebViewPrivate.h:
    * UIProcess/WebPageProxy.cpp:
    (WebKit::WebPageProxy::resetStateAfterProcessTermination):

    Maintain a corresponding flag on the WebPageProxy in the UI process, which starts out as `true` and is reset
    if the web process terminates.

    * UIProcess/WebPageProxy.h:
    * UIProcess/WebPageProxy.messages.in:
    * WebProcess/WebPage/WebPage.cpp:

    Add plumbing to propagate changes in the boolean flag to the UI process.

    (WebKit::WebPage::didCommitLoad):

    Update the flag on WebPage.

    * WebProcess/WebPage/WebPage.h:

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@280119 268f45cc-cd09-0410-ab3c-d52691b4dbfc</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branchessafari6121240branchSourceWebKitChangeLog">branches/safari-612.1.24.0-branch/Source/WebKit/ChangeLog</a></li>
<li><a href="#branchessafari6121240branchSourceWebKitUIProcessAPICocoaWKWebViewmm">branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm</a></li>
<li><a href="#branchessafari6121240branchSourceWebKitUIProcessAPICocoaWKWebViewPrivateh">branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h</a></li>
<li><a href="#branchessafari6121240branchSourceWebKitUIProcessWebPageProxycpp">branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#branchessafari6121240branchSourceWebKitUIProcessWebPageProxyh">branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/WebPageProxy.h</a></li>
<li><a href="#branchessafari6121240branchSourceWebKitUIProcessWebPageProxymessagesin">branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/WebPageProxy.messages.in</a></li>
<li><a href="#branchessafari6121240branchSourceWebKitWebProcessWebPageWebPagecpp">branches/safari-612.1.24.0-branch/Source/WebKit/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#branchessafari6121240branchSourceWebKitWebProcessWebPageWebPageh">branches/safari-612.1.24.0-branch/Source/WebKit/WebProcess/WebPage/WebPage.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchessafari6121240branchSourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.24.0-branch/Source/WebKit/ChangeLog (280144 => 280145)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.24.0-branch/Source/WebKit/ChangeLog        2021-07-21 17:01:47 UTC (rev 280144)
+++ branches/safari-612.1.24.0-branch/Source/WebKit/ChangeLog   2021-07-21 17:03:04 UTC (rev 280145)
</span><span class="lines">@@ -1,3 +1,82 @@
</span><ins>+2021-07-21  Alan Coon  <alancoon@apple.com>
+
+        Cherry-pick r280119. rdar://problem/80902802
+
+    [iOS] Add SPI for internal clients to consult whether or not viewport quirks should be enabled
+    https://bugs.webkit.org/show_bug.cgi?id=228123
+    rdar://80397679
+    
+    Reviewed by Tim Horton.
+    
+    Add support for an SPI property on WKWebView that indicates whether site-specific quirks should be enabled.
+    For now, this flag is only updated whenever we commit a mainframe load, which is sufficient for the purposes of
+    Safari to determine whether or not to use quirked viewport behaviors for tab pill behavior.
+    
+    If needed in the future, this property should probably:
+    1. Support KVO, and...
+    2. Change eagerly when the option is toggled via Web Inspector.
+    
+    * UIProcess/API/Cocoa/WKWebView.mm:
+    (-[WKWebView _needsSiteSpecificQuirks]):
+    * UIProcess/API/Cocoa/WKWebViewPrivate.h:
+    * UIProcess/WebPageProxy.cpp:
+    (WebKit::WebPageProxy::resetStateAfterProcessTermination):
+    
+    Maintain a corresponding flag on the WebPageProxy in the UI process, which starts out as `true` and is reset
+    if the web process terminates.
+    
+    * UIProcess/WebPageProxy.h:
+    * UIProcess/WebPageProxy.messages.in:
+    * WebProcess/WebPage/WebPage.cpp:
+    
+    Add plumbing to propagate changes in the boolean flag to the UI process.
+    
+    (WebKit::WebPage::didCommitLoad):
+    
+    Update the flag on WebPage.
+    
+    * WebProcess/WebPage/WebPage.h:
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@280119 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-07-20  Wenson Hsieh  <wenson_hsieh@apple.com>
+
+            [iOS] Add SPI for internal clients to consult whether or not viewport quirks should be enabled
+            https://bugs.webkit.org/show_bug.cgi?id=228123
+            rdar://80397679
+
+            Reviewed by Tim Horton.
+
+            Add support for an SPI property on WKWebView that indicates whether site-specific quirks should be enabled.
+            For now, this flag is only updated whenever we commit a mainframe load, which is sufficient for the purposes of
+            Safari to determine whether or not to use quirked viewport behaviors for tab pill behavior.
+
+            If needed in the future, this property should probably:
+            1. Support KVO, and...
+            2. Change eagerly when the option is toggled via Web Inspector.
+
+            * UIProcess/API/Cocoa/WKWebView.mm:
+            (-[WKWebView _needsSiteSpecificQuirks]):
+            * UIProcess/API/Cocoa/WKWebViewPrivate.h:
+            * UIProcess/WebPageProxy.cpp:
+            (WebKit::WebPageProxy::resetStateAfterProcessTermination):
+
+            Maintain a corresponding flag on the WebPageProxy in the UI process, which starts out as `true` and is reset
+            if the web process terminates.
+
+            * UIProcess/WebPageProxy.h:
+            * UIProcess/WebPageProxy.messages.in:
+            * WebProcess/WebPage/WebPage.cpp:
+
+            Add plumbing to propagate changes in the boolean flag to the UI process.
+
+            (WebKit::WebPage::didCommitLoad):
+
+            Update the flag on WebPage.
+
+            * WebProcess/WebPage/WebPage.h:
+
</ins><span class="cx"> 2021-07-19  Russell Epstein  <repstein@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Cherry-pick r280019. rdar://problem/80788628
</span></span></pre></div>
<a id="branchessafari6121240branchSourceWebKitUIProcessAPICocoaWKWebViewmm"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (280144 => 280145)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2021-07-21 17:01:47 UTC (rev 280144)
+++ branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm    2021-07-21 17:03:04 UTC (rev 280145)
</span><span class="lines">@@ -2518,6 +2518,11 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (BOOL)_needsSiteSpecificQuirks
+{
+    return _page && _page->needsSiteSpecificQuirks();
+}
+
</ins><span class="cx"> - (pid_t)_webProcessIdentifier
</span><span class="cx"> {
</span><span class="cx">     if (![self _isValid])
</span></span></pre></div>
<a id="branchessafari6121240branchSourceWebKitUIProcessAPICocoaWKWebViewPrivateh"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h (280144 => 280145)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h   2021-07-21 17:01:47 UTC (rev 280144)
+++ branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h      2021-07-21 17:03:04 UTC (rev 280145)
</span><span class="lines">@@ -412,6 +412,8 @@
</span><span class="cx"> - (void)_suspendPage:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(12.0), ios(15.0));
</span><span class="cx"> - (void)_resumePage:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(12.0), ios(15.0));
</span><span class="cx"> 
</span><ins>+@property (nonatomic, readonly) BOOL _needsSiteSpecificQuirks WK_API_AVAILABLE(macos(12.0), ios(15.0));
+
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> #if TARGET_OS_IPHONE
</span></span></pre></div>
<a id="branchessafari6121240branchSourceWebKitUIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/WebPageProxy.cpp (280144 => 280145)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/WebPageProxy.cpp       2021-07-21 17:01:47 UTC (rev 280144)
+++ branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/WebPageProxy.cpp  2021-07-21 17:03:04 UTC (rev 280145)
</span><span class="lines">@@ -7627,6 +7627,8 @@
</span><span class="cx">         if (auto* automationSession = process().processPool().automationSession())
</span><span class="cx">             automationSession->terminate();
</span><span class="cx">     }
</span><ins>+
+    m_needsSiteSpecificQuirks = true;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::provisionalProcessDidTerminate()
</span></span></pre></div>
<a id="branchessafari6121240branchSourceWebKitUIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/WebPageProxy.h (280144 => 280145)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/WebPageProxy.h 2021-07-21 17:01:47 UTC (rev 280144)
+++ branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/WebPageProxy.h    2021-07-21 17:03:04 UTC (rev 280145)
</span><span class="lines">@@ -1958,6 +1958,9 @@
</span><span class="cx">     WKQuickLookPreviewController *quickLookPreviewController() const { return m_quickLookPreviewController.get(); }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    bool needsSiteSpecificQuirks() const { return m_needsSiteSpecificQuirks; }
+    void setNeedsSiteSpecificQuirks(bool value) { m_needsSiteSpecificQuirks = value; }
+
</ins><span class="cx"> private:
</span><span class="cx">     WebPageProxy(PageClient&, WebProcessProxy&, Ref<API::PageConfiguration>&&);
</span><span class="cx">     void platformInitialize();
</span><span class="lines">@@ -3071,6 +3074,8 @@
</span><span class="cx"> #if ENABLE(IMAGE_ANALYSIS) && PLATFORM(MAC)
</span><span class="cx">     RetainPtr<WKQuickLookPreviewController> m_quickLookPreviewController;
</span><span class="cx"> #endif
</span><ins>+
+    bool m_needsSiteSpecificQuirks { true };
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> #ifdef __OBJC__
</span></span></pre></div>
<a id="branchessafari6121240branchSourceWebKitUIProcessWebPageProxymessagesin"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/WebPageProxy.messages.in (280144 => 280145)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/WebPageProxy.messages.in       2021-07-21 17:01:47 UTC (rev 280144)
+++ branches/safari-612.1.24.0-branch/Source/WebKit/UIProcess/WebPageProxy.messages.in  2021-07-21 17:03:04 UTC (rev 280145)
</span><span class="lines">@@ -415,6 +415,8 @@
</span><span class="cx">     ShowDataDetectorsUIForPositionInformation(struct WebKit::InteractionInformationAtPosition information)
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+    SetNeedsSiteSpecificQuirks(bool needsSiteSpecificQuirks)
+
</ins><span class="cx">     DidChangeInspectorFrontendCount(uint64_t count)
</span><span class="cx"> 
</span><span class="cx">     CreateInspectorTarget(String targetId, enum:uint8_t Inspector::InspectorTargetType type)
</span></span></pre></div>
<a id="branchessafari6121240branchSourceWebKitWebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.24.0-branch/Source/WebKit/WebProcess/WebPage/WebPage.cpp (280144 => 280145)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.24.0-branch/Source/WebKit/WebProcess/WebPage/WebPage.cpp   2021-07-21 17:01:47 UTC (rev 280144)
+++ branches/safari-612.1.24.0-branch/Source/WebKit/WebProcess/WebPage/WebPage.cpp      2021-07-21 17:03:04 UTC (rev 280145)
</span><span class="lines">@@ -6266,6 +6266,12 @@
</span><span class="cx">     if (!frame->isMainFrame())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><ins>+    bool needsSiteSpecificQuirks = frame->coreFrame()->settings().needsSiteSpecificQuirks();
+    if (m_needsSiteSpecificQuirks != needsSiteSpecificQuirks) {
+        m_needsSiteSpecificQuirks = needsSiteSpecificQuirks;
+        send(Messages::WebPageProxy::SetNeedsSiteSpecificQuirks(needsSiteSpecificQuirks));
+    }
+
</ins><span class="cx">     if (m_drawingArea)
</span><span class="cx">         m_drawingArea->sendEnterAcceleratedCompositingModeIfNeeded();
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari6121240branchSourceWebKitWebProcessWebPageWebPageh"></a>
<div class="modfile"><h4>Modified: branches/safari-612.1.24.0-branch/Source/WebKit/WebProcess/WebPage/WebPage.h (280144 => 280145)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-612.1.24.0-branch/Source/WebKit/WebProcess/WebPage/WebPage.h     2021-07-21 17:01:47 UTC (rev 280144)
+++ branches/safari-612.1.24.0-branch/Source/WebKit/WebProcess/WebPage/WebPage.h        2021-07-21 17:03:04 UTC (rev 280145)
</span><span class="lines">@@ -2382,6 +2382,8 @@
</span><span class="cx"> #if ENABLE(APP_HIGHLIGHTS)
</span><span class="cx">     WebCore::HighlightVisibility m_appHighlightsVisible { false };
</span><span class="cx"> #endif
</span><ins>+
+    bool m_needsSiteSpecificQuirks { true };
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> #if !PLATFORM(IOS_FAMILY)
</span></span></pre>
</div>
</div>

</body>
</html>