<!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>[234673] branches/safari-606.1.36.1-branch/Source</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/234673">234673</a></dd>
<dt>Author</dt> <dd>kocsen_chung@apple.com</dd>
<dt>Date</dt> <dd>2018-08-07 14:29:28 -0700 (Tue, 07 Aug 2018)</dd>
</dl>

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

    [macOS] Scrollbars are not visible when using 3rd party mouse
    https://bugs.webkit.org/show_bug.cgi?id=188372

    Reviewed by Simon Fraser.

    Source/WebCore/PAL:

    Added declaration of NSScrollerImpPair class method. This method updates all NSScrollerImpPairs
    with a new recommended scroller style.

    * pal/spi/mac/NSScrollerImpSPI.h:

    Source/WebKit:

    The scrollbars are not visible because they are not updated with the recommended scroller style
    when a 3rd party mouse is used. They still have the overlay style, but the system is
    recommending the legacy style in this case. The UI process is currently notifying the WebProcess
    about changes in the scroller style, but the current style is not set in the WebProcess on
    startup. This patch sets the initial scroller style in the WebProcess by passing it as part of
    the WebProcess creation parameters. Also, to make sure hot-plugging of a 3rd party mouse is
    is visually changing the scroller style of the current page, a class method in NSScrollerImpPair
    is called to update all NSScrollerImpPairs with the new recommended style. This method was
    previously called by AppKit, but after blocking WindowServer access, AppKit is no longer calling
    this method. This has been manually tested by using a 3rd party mouse.

    * Shared/WebProcessCreationParameters.cpp:
    (WebKit::WebProcessCreationParameters::encode const):
    (WebKit::WebProcessCreationParameters::decode):
    * Shared/WebProcessCreationParameters.h:
    * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
    (WebKit::WebProcessPool::platformInitializeWebProcess):
    * WebProcess/cocoa/WebProcessCocoa.mm:
    (WebKit::WebProcess::platformInitializeWebProcess):
    (WebKit::WebProcess::scrollerStylePreferenceChanged):

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

<h3>Modified Paths</h3>
<ul>
<li><a href="#branchessafari6061361branchSourceWebCorePALChangeLog">branches/safari-606.1.36.1-branch/Source/WebCore/PAL/ChangeLog</a></li>
<li><a href="#branchessafari6061361branchSourceWebCorePALpalspimacNSScrollerImpSPIh">branches/safari-606.1.36.1-branch/Source/WebCore/PAL/pal/spi/mac/NSScrollerImpSPI.h</a></li>
<li><a href="#branchessafari6061361branchSourceWebKitChangeLog">branches/safari-606.1.36.1-branch/Source/WebKit/ChangeLog</a></li>
<li><a href="#branchessafari6061361branchSourceWebKitSharedWebProcessCreationParameterscpp">branches/safari-606.1.36.1-branch/Source/WebKit/Shared/WebProcessCreationParameters.cpp</a></li>
<li><a href="#branchessafari6061361branchSourceWebKitSharedWebProcessCreationParametersh">branches/safari-606.1.36.1-branch/Source/WebKit/Shared/WebProcessCreationParameters.h</a></li>
<li><a href="#branchessafari6061361branchSourceWebKitUIProcessCocoaWebProcessPoolCocoamm">branches/safari-606.1.36.1-branch/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm</a></li>
<li><a href="#branchessafari6061361branchSourceWebKitWebProcesscocoaWebProcessCocoamm">branches/safari-606.1.36.1-branch/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchessafari6061361branchSourceWebCorePALChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-606.1.36.1-branch/Source/WebCore/PAL/ChangeLog (234672 => 234673)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-606.1.36.1-branch/Source/WebCore/PAL/ChangeLog   2018-08-07 21:29:25 UTC (rev 234672)
+++ branches/safari-606.1.36.1-branch/Source/WebCore/PAL/ChangeLog      2018-08-07 21:29:28 UTC (rev 234673)
</span><span class="lines">@@ -1,3 +1,57 @@
</span><ins>+2018-08-07  Kocsen Chung  <kocsen_chung@apple.com>
+
+        Cherry-pick r234652. rdar://problem/43009927
+
+    [macOS] Scrollbars are not visible when using 3rd party mouse
+    https://bugs.webkit.org/show_bug.cgi?id=188372
+    
+    Reviewed by Simon Fraser.
+    
+    Source/WebCore/PAL:
+    
+    Added declaration of NSScrollerImpPair class method. This method updates all NSScrollerImpPairs
+    with a new recommended scroller style.
+    
+    * pal/spi/mac/NSScrollerImpSPI.h:
+    
+    Source/WebKit:
+    
+    The scrollbars are not visible because they are not updated with the recommended scroller style
+    when a 3rd party mouse is used. They still have the overlay style, but the system is
+    recommending the legacy style in this case. The UI process is currently notifying the WebProcess
+    about changes in the scroller style, but the current style is not set in the WebProcess on
+    startup. This patch sets the initial scroller style in the WebProcess by passing it as part of
+    the WebProcess creation parameters. Also, to make sure hot-plugging of a 3rd party mouse is
+    is visually changing the scroller style of the current page, a class method in NSScrollerImpPair
+    is called to update all NSScrollerImpPairs with the new recommended style. This method was
+    previously called by AppKit, but after blocking WindowServer access, AppKit is no longer calling
+    this method. This has been manually tested by using a 3rd party mouse.
+    
+    * Shared/WebProcessCreationParameters.cpp:
+    (WebKit::WebProcessCreationParameters::encode const):
+    (WebKit::WebProcessCreationParameters::decode):
+    * Shared/WebProcessCreationParameters.h:
+    * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+    (WebKit::WebProcessPool::platformInitializeWebProcess):
+    * WebProcess/cocoa/WebProcessCocoa.mm:
+    (WebKit::WebProcess::platformInitializeWebProcess):
+    (WebKit::WebProcess::scrollerStylePreferenceChanged):
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234652 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2018-08-07  Per Arne Vollan  <pvollan@apple.com>
+
+            [macOS] Scrollbars are not visible when using 3rd party mouse
+            https://bugs.webkit.org/show_bug.cgi?id=188372
+
+            Reviewed by Simon Fraser.
+
+            Added declaration of NSScrollerImpPair class method. This method updates all NSScrollerImpPairs
+            with a new recommended scroller style.
+
+            * pal/spi/mac/NSScrollerImpSPI.h:
+
</ins><span class="cx"> 2018-07-30  Babak Shafiei  <bshafiei@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Revert r233926. rdar://problem/42354941
</span></span></pre></div>
<a id="branchessafari6061361branchSourceWebCorePALpalspimacNSScrollerImpSPIh"></a>
<div class="modfile"><h4>Modified: branches/safari-606.1.36.1-branch/Source/WebCore/PAL/pal/spi/mac/NSScrollerImpSPI.h (234672 => 234673)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-606.1.36.1-branch/Source/WebCore/PAL/pal/spi/mac/NSScrollerImpSPI.h      2018-08-07 21:29:25 UTC (rev 234672)
+++ branches/safari-606.1.36.1-branch/Source/WebCore/PAL/pal/spi/mac/NSScrollerImpSPI.h 2018-08-07 21:29:28 UTC (rev 234673)
</span><span class="lines">@@ -38,6 +38,7 @@
</span><span class="cx"> 
</span><span class="cx"> @interface NSScrollerImpPair ()
</span><span class="cx"> + (NSUserInterfaceLayoutDirection)scrollerLayoutDirection;
</span><ins>++ (void)_updateAllScrollerImpPairsForNewRecommendedScrollerStyle:(NSScrollerStyle)newRecommendedScrollerStyle;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> #else
</span><span class="lines">@@ -133,6 +134,7 @@
</span><span class="cx"> - (void)endLiveResize;
</span><span class="cx"> - (void)beginScrollGesture;
</span><span class="cx"> - (void)endScrollGesture;
</span><ins>++ (void)_updateAllScrollerImpPairsForNewRecommendedScrollerStyle:(NSScrollerStyle)newRecommendedScrollerStyle;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @protocol NSScrollerImpPairDelegate
</span></span></pre></div>
<a id="branchessafari6061361branchSourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-606.1.36.1-branch/Source/WebKit/ChangeLog (234672 => 234673)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-606.1.36.1-branch/Source/WebKit/ChangeLog        2018-08-07 21:29:25 UTC (rev 234672)
+++ branches/safari-606.1.36.1-branch/Source/WebKit/ChangeLog   2018-08-07 21:29:28 UTC (rev 234673)
</span><span class="lines">@@ -1,5 +1,75 @@
</span><span class="cx"> 2018-08-07  Kocsen Chung  <kocsen_chung@apple.com>
</span><span class="cx"> 
</span><ins>+        Cherry-pick r234652. rdar://problem/43009927
+
+    [macOS] Scrollbars are not visible when using 3rd party mouse
+    https://bugs.webkit.org/show_bug.cgi?id=188372
+    
+    Reviewed by Simon Fraser.
+    
+    Source/WebCore/PAL:
+    
+    Added declaration of NSScrollerImpPair class method. This method updates all NSScrollerImpPairs
+    with a new recommended scroller style.
+    
+    * pal/spi/mac/NSScrollerImpSPI.h:
+    
+    Source/WebKit:
+    
+    The scrollbars are not visible because they are not updated with the recommended scroller style
+    when a 3rd party mouse is used. They still have the overlay style, but the system is
+    recommending the legacy style in this case. The UI process is currently notifying the WebProcess
+    about changes in the scroller style, but the current style is not set in the WebProcess on
+    startup. This patch sets the initial scroller style in the WebProcess by passing it as part of
+    the WebProcess creation parameters. Also, to make sure hot-plugging of a 3rd party mouse is
+    is visually changing the scroller style of the current page, a class method in NSScrollerImpPair
+    is called to update all NSScrollerImpPairs with the new recommended style. This method was
+    previously called by AppKit, but after blocking WindowServer access, AppKit is no longer calling
+    this method. This has been manually tested by using a 3rd party mouse.
+    
+    * Shared/WebProcessCreationParameters.cpp:
+    (WebKit::WebProcessCreationParameters::encode const):
+    (WebKit::WebProcessCreationParameters::decode):
+    * Shared/WebProcessCreationParameters.h:
+    * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+    (WebKit::WebProcessPool::platformInitializeWebProcess):
+    * WebProcess/cocoa/WebProcessCocoa.mm:
+    (WebKit::WebProcess::platformInitializeWebProcess):
+    (WebKit::WebProcess::scrollerStylePreferenceChanged):
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234652 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2018-08-07  Per Arne Vollan  <pvollan@apple.com>
+
+            [macOS] Scrollbars are not visible when using 3rd party mouse
+            https://bugs.webkit.org/show_bug.cgi?id=188372
+
+            Reviewed by Simon Fraser.
+
+            The scrollbars are not visible because they are not updated with the recommended scroller style
+            when a 3rd party mouse is used. They still have the overlay style, but the system is
+            recommending the legacy style in this case. The UI process is currently notifying the WebProcess
+            about changes in the scroller style, but the current style is not set in the WebProcess on
+            startup. This patch sets the initial scroller style in the WebProcess by passing it as part of
+            the WebProcess creation parameters. Also, to make sure hot-plugging of a 3rd party mouse is
+            is visually changing the scroller style of the current page, a class method in NSScrollerImpPair
+            is called to update all NSScrollerImpPairs with the new recommended style. This method was
+            previously called by AppKit, but after blocking WindowServer access, AppKit is no longer calling
+            this method. This has been manually tested by using a 3rd party mouse.
+
+            * Shared/WebProcessCreationParameters.cpp:
+            (WebKit::WebProcessCreationParameters::encode const):
+            (WebKit::WebProcessCreationParameters::decode):
+            * Shared/WebProcessCreationParameters.h:
+            * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+            (WebKit::WebProcessPool::platformInitializeWebProcess):
+            * WebProcess/cocoa/WebProcessCocoa.mm:
+            (WebKit::WebProcess::platformInitializeWebProcess):
+            (WebKit::WebProcess::scrollerStylePreferenceChanged):
+
+2018-08-07  Kocsen Chung  <kocsen_chung@apple.com>
+
</ins><span class="cx">         Cherry-pick r234626. rdar://problem/43009894
</span><span class="cx"> 
</span><span class="cx">     Regression(NetworkLoadChecker): CORS preflights are no longer able to deal with client certificate authentication
</span></span></pre></div>
<a id="branchessafari6061361branchSourceWebKitSharedWebProcessCreationParameterscpp"></a>
<div class="modfile"><h4>Modified: branches/safari-606.1.36.1-branch/Source/WebKit/Shared/WebProcessCreationParameters.cpp (234672 => 234673)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-606.1.36.1-branch/Source/WebKit/Shared/WebProcessCreationParameters.cpp  2018-08-07 21:29:25 UTC (rev 234672)
+++ branches/safari-606.1.36.1-branch/Source/WebKit/Shared/WebProcessCreationParameters.cpp     2018-08-07 21:29:28 UTC (rev 234673)
</span><span class="lines">@@ -158,6 +158,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx">     encoder << screenProperties;
</span><ins>+    encoder << useOverlayScrollbars;
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -414,6 +415,8 @@
</span><span class="cx">     if (!screenProperties)
</span><span class="cx">         return false;
</span><span class="cx">     parameters.screenProperties = WTFMove(*screenProperties);
</span><ins>+    if (!decoder.decode(parameters.useOverlayScrollbars))
+        return false;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     return true;
</span></span></pre></div>
<a id="branchessafari6061361branchSourceWebKitSharedWebProcessCreationParametersh"></a>
<div class="modfile"><h4>Modified: branches/safari-606.1.36.1-branch/Source/WebKit/Shared/WebProcessCreationParameters.h (234672 => 234673)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-606.1.36.1-branch/Source/WebKit/Shared/WebProcessCreationParameters.h    2018-08-07 21:29:25 UTC (rev 234672)
+++ branches/safari-606.1.36.1-branch/Source/WebKit/Shared/WebProcessCreationParameters.h       2018-08-07 21:29:28 UTC (rev 234673)
</span><span class="lines">@@ -197,6 +197,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx">     WebCore::ScreenProperties screenProperties;
</span><ins>+    bool useOverlayScrollbars { true };
</ins><span class="cx"> #endif
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari6061361branchSourceWebKitUIProcessCocoaWebProcessPoolCocoamm"></a>
<div class="modfile"><h4>Modified: branches/safari-606.1.36.1-branch/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (234672 => 234673)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-606.1.36.1-branch/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm   2018-08-07 21:29:25 UTC (rev 234672)
+++ branches/safari-606.1.36.1-branch/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm      2018-08-07 21:29:28 UTC (rev 234673)
</span><span class="lines">@@ -286,6 +286,7 @@
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx">     auto screenProperties = WebCore::collectScreenProperties();
</span><span class="cx">     parameters.screenProperties = WTFMove(screenProperties);
</span><ins>+    parameters.useOverlayScrollbars = ([NSScroller preferredScrollerStyle] == NSScrollerStyleOverlay);
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchessafari6061361branchSourceWebKitWebProcesscocoaWebProcessCocoamm"></a>
<div class="modfile"><h4>Modified: branches/safari-606.1.36.1-branch/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (234672 => 234673)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-606.1.36.1-branch/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm      2018-08-07 21:29:25 UTC (rev 234672)
+++ branches/safari-606.1.36.1-branch/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2018-08-07 21:29:28 UTC (rev 234673)
</span><span class="lines">@@ -86,6 +86,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx"> #import <WebCore/ScrollbarThemeMac.h>
</span><ins>+#import <pal/spi/mac/NSScrollerImpSPI.h>
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if USE(OS_STATE)
</span><span class="lines">@@ -196,7 +197,10 @@
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx">     WebCore::setScreenProperties(parameters.screenProperties);
</span><ins>+#if ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING)
+    scrollerStylePreferenceChanged(parameters.useOverlayScrollbars);
</ins><span class="cx"> #endif
</span><ins>+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebProcess::initializeProcessName(const ChildProcessInitializationParameters& parameters)
</span><span class="lines">@@ -591,6 +595,9 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     static_cast<ScrollbarThemeMac&>(theme).preferencesChanged();
</span><ins>+    
+    NSScrollerStyle style = useOverlayScrollbars ? NSScrollerStyleOverlay : NSScrollerStyleLegacy;
+    [NSScrollerImpPair _updateAllScrollerImpPairsForNewRecommendedScrollerStyle:style];
</ins><span class="cx"> }
</span><span class="cx"> #endif    
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>