Title: [184297] trunk/Source
Revision
184297
Author
[email protected]
Date
2015-05-13 12:28:21 -0700 (Wed, 13 May 2015)

Log Message

Need SPI to set the overlay scroll bar style
https://bugs.webkit.org/show_bug.cgi?id=144928
-and corresponding-
rdar://problem/20143614

Reviewed by Anders Carlsson.

Source/WebCore:

New ChromeClient function preferredScrollbarOverlayStyle() will fetch the 
scrollbar style that was set via the new SPI.
* page/ChromeClient.h:

If the preferredScrollbarOverlayStyle() is anything but None, then use it. None is 
used to indicate that the normal heuristic should compute the appropriate color.
* page/FrameView.cpp:
(WebCore::FrameView::recalculateScrollbarOverlayStyle):
* page/FrameView.h:

Source/WebKit2:

Make scrollbarOverlayStyle a part of the creation parameters. 
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:

New SPI.
* UIProcess/API/Cocoa/WKViewPrivate.h:
* UIProcess/API/Cocoa/_WKOverlayScrollbarStyle.h: Added.
* UIProcess/API/mac/WKView.mm:
(-[WKView _setOverlayScrollbarStyle:]):
(-[WKView _overlayScrollbarStyle]):

Store m_scrollbarOverlayStyle on WebPageProxy, and set it to the WebProcess.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::setOverlayScrollbarStyle):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::overlayScrollbarStyle):
* WebKit2.xcodeproj/project.pbxproj:

Return WebPage’s scrollbarOverlayStyle().
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::preferredScrollbarOverlayStyle):
* WebProcess/WebCoreSupport/WebChromeClient.h:

Cache the scrollbarOverlayStyle() here for the WebProcess. 
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):
(WebKit::WebPage::setScrollbarOverlayStyle):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::scrollbarOverlayStyle):
* WebProcess/WebPage/WebPage.messages.in:

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (184296 => 184297)


--- trunk/Source/WebCore/ChangeLog	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebCore/ChangeLog	2015-05-13 19:28:21 UTC (rev 184297)
@@ -1,3 +1,22 @@
+2015-05-13  Beth Dakin  <[email protected]>
+
+        Need SPI to set the overlay scroll bar style
+        https://bugs.webkit.org/show_bug.cgi?id=144928
+        -and corresponding-
+        rdar://problem/20143614
+
+        Reviewed by Anders Carlsson.
+
+        New ChromeClient function preferredScrollbarOverlayStyle() will fetch the 
+        scrollbar style that was set via the new SPI.
+        * page/ChromeClient.h:
+
+        If the preferredScrollbarOverlayStyle() is anything but None, then use it. None is 
+        used to indicate that the normal heuristic should compute the appropriate color.
+        * page/FrameView.cpp:
+        (WebCore::FrameView::recalculateScrollbarOverlayStyle):
+        * page/FrameView.h:
+
 2015-05-13  Brent Fulgham  <[email protected]>
 
         Scrollbars in overflow regions are not vanishing after scrolling with scroll snap points

Modified: trunk/Source/WebCore/page/ChromeClient.h (184296 => 184297)


--- trunk/Source/WebCore/page/ChromeClient.h	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebCore/page/ChromeClient.h	2015-05-13 19:28:21 UTC (rev 184297)
@@ -385,6 +385,8 @@
     virtual void notifyScrollerThumbIsVisibleInRect(const IntRect&) { }
     virtual void recommendedScrollbarStyleDidChange(ScrollbarStyle) { }
 
+    virtual WTF::Optional<ScrollbarOverlayStyle> preferredScrollbarOverlayStyle() { return ScrollbarOverlayStyleDefault; }
+
     enum DialogType {
         AlertDialog = 0,
         ConfirmDialog = 1,

Modified: trunk/Source/WebCore/page/FrameView.cpp (184296 => 184297)


--- trunk/Source/WebCore/page/FrameView.cpp	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebCore/page/FrameView.cpp	2015-05-13 19:28:21 UTC (rev 184297)
@@ -378,8 +378,15 @@
 void FrameView::recalculateScrollbarOverlayStyle()
 {
     ScrollbarOverlayStyle oldOverlayStyle = scrollbarOverlayStyle();
-    ScrollbarOverlayStyle overlayStyle = ScrollbarOverlayStyleDefault;
+    WTF::Optional<ScrollbarOverlayStyle> clientOverlayStyle = frame().page() ? frame().page()->chrome().client().preferredScrollbarOverlayStyle() : ScrollbarOverlayStyleDefault;
+    if (clientOverlayStyle) {
+        if (clientOverlayStyle.value() != oldOverlayStyle)
+            setScrollbarOverlayStyle(clientOverlayStyle.value());
+        return;
+    }
 
+    ScrollbarOverlayStyle computedOverlayStyle = ScrollbarOverlayStyleDefault;
+
     Color backgroundColor = documentBackgroundColor();
     if (backgroundColor.isValid()) {
         // Reduce the background color from RGB to a lightness value
@@ -388,11 +395,11 @@
         double hue, saturation, lightness;
         backgroundColor.getHSL(hue, saturation, lightness);
         if (lightness <= .5 && backgroundColor.alpha() > 0)
-            overlayStyle = ScrollbarOverlayStyleLight;
+            computedOverlayStyle = ScrollbarOverlayStyleLight;
     }
 
-    if (oldOverlayStyle != overlayStyle)
-        setScrollbarOverlayStyle(overlayStyle);
+    if (oldOverlayStyle != computedOverlayStyle)
+        setScrollbarOverlayStyle(computedOverlayStyle);
 }
 
 void FrameView::clear()

Modified: trunk/Source/WebCore/page/FrameView.h (184296 => 184297)


--- trunk/Source/WebCore/page/FrameView.h	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebCore/page/FrameView.h	2015-05-13 19:28:21 UTC (rev 184297)
@@ -187,7 +187,7 @@
     void resetScrollbarsAndClearContentsSize();
     void prepareForDetach();
     void detachCustomScrollbars();
-    void recalculateScrollbarOverlayStyle();
+    WEBCORE_EXPORT void recalculateScrollbarOverlayStyle();
 
     void clear();
 

Modified: trunk/Source/WebKit2/ChangeLog (184296 => 184297)


--- trunk/Source/WebKit2/ChangeLog	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebKit2/ChangeLog	2015-05-13 19:28:21 UTC (rev 184297)
@@ -1,3 +1,47 @@
+2015-05-13  Beth Dakin  <[email protected]>
+
+        Need SPI to set the overlay scroll bar style
+        https://bugs.webkit.org/show_bug.cgi?id=144928
+        -and corresponding-
+        rdar://problem/20143614
+
+        Reviewed by Anders Carlsson.
+
+        Make scrollbarOverlayStyle a part of the creation parameters. 
+        * Shared/WebPageCreationParameters.cpp:
+        (WebKit::WebPageCreationParameters::encode):
+        (WebKit::WebPageCreationParameters::decode):
+        * Shared/WebPageCreationParameters.h:
+
+        New SPI.
+        * UIProcess/API/Cocoa/WKViewPrivate.h:
+        * UIProcess/API/Cocoa/_WKOverlayScrollbarStyle.h: Added.
+        * UIProcess/API/mac/WKView.mm:
+        (-[WKView _setOverlayScrollbarStyle:]):
+        (-[WKView _overlayScrollbarStyle]):
+
+        Store m_scrollbarOverlayStyle on WebPageProxy, and set it to the WebProcess.
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::WebPageProxy):
+        (WebKit::WebPageProxy::creationParameters):
+        (WebKit::WebPageProxy::setOverlayScrollbarStyle):
+        * UIProcess/WebPageProxy.h:
+        (WebKit::WebPageProxy::overlayScrollbarStyle):
+        * WebKit2.xcodeproj/project.pbxproj:
+
+        Return WebPage’s scrollbarOverlayStyle().
+        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+        (WebKit::WebChromeClient::preferredScrollbarOverlayStyle):
+        * WebProcess/WebCoreSupport/WebChromeClient.h:
+
+        Cache the scrollbarOverlayStyle() here for the WebProcess. 
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::WebPage):
+        (WebKit::WebPage::setScrollbarOverlayStyle):
+        * WebProcess/WebPage/WebPage.h:
+        (WebKit::WebPage::scrollbarOverlayStyle):
+        * WebProcess/WebPage/WebPage.messages.in:
+
 2015-05-13  Anders Carlsson  <[email protected]>
 
         Rename some StorageManager functions to indicate that they work on local storage entries

Modified: trunk/Source/WebKit2/Scripts/webkit/messages.py (184296 => 184297)


--- trunk/Source/WebKit2/Scripts/webkit/messages.py	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebKit2/Scripts/webkit/messages.py	2015-05-13 19:28:21 UTC (rev 184297)
@@ -294,8 +294,9 @@
     template_string = template_string.strip()
 
     class_template_types = {
+        'HashMap': {'headers': ['<wtf/HashMap.h>'], 'argument_coder_headers': ['"ArgumentCoders.h"']},
+        'Optional': {'headers': ['<wtf/Optional.h>'], 'argument_coder_headers': ['"ArgumentCoders.h"']},
         'Vector': {'headers': ['<wtf/Vector.h>'], 'argument_coder_headers': ['"ArgumentCoders.h"']},
-        'HashMap': {'headers': ['<wtf/HashMap.h>'], 'argument_coder_headers': ['"ArgumentCoders.h"']},
         'std::pair': {'headers': ['<utility>'], 'argument_coder_headers': ['"ArgumentCoders.h"']},
     }
 

Modified: trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp (184296 => 184297)


--- trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebKit2/Shared/WebPageCreationParameters.cpp	2015-05-13 19:28:21 UTC (rev 184297)
@@ -66,6 +66,7 @@
     encoder << minimumLayoutSize;
     encoder << autoSizingShouldExpandToViewHeight;
     encoder.encodeEnum(scrollPinningBehavior);
+    encoder << scrollbarOverlayStyle;
     encoder << backgroundExtendsBeyondPage;
     encoder.encodeEnum(layerHostingMode);
     encoder << mimeTypesWithCustomContentProviders;
@@ -152,6 +153,8 @@
         return false;
     if (!decoder.decodeEnum(parameters.scrollPinningBehavior))
         return false;
+    if (!decoder.decode(parameters.scrollbarOverlayStyle))
+        return false;
     if (!decoder.decode(parameters.backgroundExtendsBeyondPage))
         return false;
     if (!decoder.decodeEnum(parameters.layerHostingMode))

Modified: trunk/Source/WebKit2/Shared/WebPageCreationParameters.h (184296 => 184297)


--- trunk/Source/WebKit2/Shared/WebPageCreationParameters.h	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebKit2/Shared/WebPageCreationParameters.h	2015-05-13 19:28:21 UTC (rev 184297)
@@ -106,6 +106,10 @@
     
     WebCore::ScrollPinningBehavior scrollPinningBehavior;
 
+    // FIXME: This should be WTF::Optional<WebCore::ScrollbarOverlayStyle>, but we would need to
+    // correctly handle enums inside Optionals when encoding and decoding. 
+    WTF::Optional<uint32_t> scrollbarOverlayStyle;
+
     bool backgroundExtendsBeyondPage;
 
     LayerHostingMode layerHostingMode;

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h (184296 => 184297)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h	2015-05-13 19:28:21 UTC (rev 184297)
@@ -28,6 +28,7 @@
 #import <WebKit/WKImmediateActionTypes.h>
 #import <WebKit/WKLayoutMode.h>
 #import <WebKit/WKView.h>
+#import <WebKit/_WKOverlayScrollbarStyle.h>
 
 @interface WKView (Private)
 
@@ -89,6 +90,8 @@
 @property (nonatomic, setter=_setTopContentInset:) CGFloat _topContentInset;
 @property (nonatomic, setter=_setTotalHeightOfBanners:) CGFloat _totalHeightOfBanners;
 
+@property (nonatomic, setter=_setOverlayScrollbarStyle:) _WKOverlayScrollbarStyle _overlayScrollbarStyle;
+
 @property (nonatomic, setter=_setLayoutMode:) WKLayoutMode _layoutMode;
 // For use with _layoutMode = kWKLayoutModeFixedSize:
 @property (nonatomic, setter=_setFixedLayoutSize:) CGSize _fixedLayoutSize;

Added: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKOverlayScrollbarStyle.h (0 => 184297)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKOverlayScrollbarStyle.h	                        (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKOverlayScrollbarStyle.h	2015-05-13 19:28:21 UTC (rev 184297)
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <WebKit/WKFoundation.h>
+
+#if WK_API_ENABLED
+
+typedef NS_ENUM(NSUInteger, _WKOverlayScrollbarStyle) {
+    _WKOverlayScrollbarStyleDefault,
+    _WKOverlayScrollbarStyleDark,
+    _WKOverlayScrollbarStyleLight,
+
+    // Setting the overlay scrollbar style to automatic will cause WebKit to use its normal
+    // heuristic to choose an appropriate color.
+    _WKOverlayScrollbarStyleAutomatic
+
+} WK_ENUM_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
+
+#endif

Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (184296 => 184297)


--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm	2015-05-13 19:28:21 UTC (rev 184297)
@@ -4442,6 +4442,47 @@
     return _data->_totalHeightOfBanners;
 }
 
+- (void)_setOverlayScrollbarStyle:(_WKOverlayScrollbarStyle)scrollbarStyle
+{
+    WTF::Optional<WebCore::ScrollbarOverlayStyle> coreScrollbarStyle;
+
+    switch (scrollbarStyle) {
+    case _WKOverlayScrollbarStyleDark:
+        coreScrollbarStyle = ScrollbarOverlayStyleDark;
+        break;
+    case _WKOverlayScrollbarStyleLight:
+        coreScrollbarStyle = ScrollbarOverlayStyleLight;
+        break;
+    case _WKOverlayScrollbarStyleDefault:
+        coreScrollbarStyle = ScrollbarOverlayStyleDefault;
+        break;
+    case _WKOverlayScrollbarStyleAutomatic:
+    default:
+        break;
+    }
+
+    _data->_page->setOverlayScrollbarStyle(coreScrollbarStyle);
+}
+
+- (_WKOverlayScrollbarStyle)_overlayScrollbarStyle
+{
+    WTF::Optional<WebCore::ScrollbarOverlayStyle> coreScrollbarStyle = _data->_page->overlayScrollbarStyle();
+
+    if (!coreScrollbarStyle)
+        return _WKOverlayScrollbarStyleAutomatic;
+
+    switch (coreScrollbarStyle.value()) {
+    case ScrollbarOverlayStyleDark:
+        return _WKOverlayScrollbarStyleDark;
+    case ScrollbarOverlayStyleLight:
+        return _WKOverlayScrollbarStyleLight;
+    case ScrollbarOverlayStyleDefault:
+        return _WKOverlayScrollbarStyleDefault;
+    default:
+        return _WKOverlayScrollbarStyleAutomatic;
+    }
+}
+
 - (NSColor *)_pageExtendedBackgroundColor
 {
     WebCore::Color color = _data->_page->pageExtendedBackgroundColor();

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (184296 => 184297)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2015-05-13 19:28:21 UTC (rev 184297)
@@ -5000,6 +5000,10 @@
     parameters.minimumLayoutSize = m_minimumLayoutSize;
     parameters.autoSizingShouldExpandToViewHeight = m_autoSizingShouldExpandToViewHeight;
     parameters.scrollPinningBehavior = m_scrollPinningBehavior;
+    if (m_scrollbarOverlayStyle)
+        parameters.scrollbarOverlayStyle = m_scrollbarOverlayStyle.value();
+    else
+        parameters.scrollbarOverlayStyle = Nullopt;
     parameters.backgroundExtendsBeyondPage = m_backgroundExtendsBeyondPage;
     parameters.layerHostingMode = m_layerHostingMode;
 #if ENABLE(REMOTE_INSPECTOR)
@@ -5550,6 +5554,24 @@
         m_process->send(Messages::WebPage::SetScrollPinningBehavior(pinning), m_pageID);
 }
 
+void WebPageProxy::setOverlayScrollbarStyle(WTF::Optional<WebCore::ScrollbarOverlayStyle> scrollbarStyle)
+{
+    if (!m_scrollbarOverlayStyle && !scrollbarStyle)
+        return;
+
+    if ((m_scrollbarOverlayStyle && scrollbarStyle) && m_scrollbarOverlayStyle.value() == scrollbarStyle.value())
+        return;
+
+    m_scrollbarOverlayStyle = scrollbarStyle;
+
+    WTF::Optional<uint32_t> scrollbarStyleForMessage;
+    if (scrollbarStyle)
+        scrollbarStyleForMessage = static_cast<ScrollbarOverlayStyle>(scrollbarStyle.value());
+
+    if (isValid())
+        m_process->send(Messages::WebPage::SetScrollbarOverlayStyle(scrollbarStyleForMessage), m_pageID);
+}
+
 #if ENABLE(SUBTLE_CRYPTO)
 void WebPageProxy::wrapCryptoKey(const Vector<uint8_t>& key, bool& succeeded, Vector<uint8_t>& wrappedKey)
 {

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (184296 => 184297)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2015-05-13 19:28:21 UTC (rev 184297)
@@ -972,6 +972,9 @@
     void setScrollPinningBehavior(WebCore::ScrollPinningBehavior);
     WebCore::ScrollPinningBehavior scrollPinningBehavior() { return m_scrollPinningBehavior; }
 
+    void setOverlayScrollbarStyle(WTF::Optional<WebCore::ScrollbarOverlayStyle>);
+    WTF::Optional<WebCore::ScrollbarOverlayStyle> overlayScrollbarStyle() { return m_scrollbarOverlayStyle; }
+
     bool shouldRecordNavigationSnapshots() const { return m_shouldRecordNavigationSnapshots; }
     void setShouldRecordNavigationSnapshots(bool shouldRecordSnapshots) { m_shouldRecordNavigationSnapshots = shouldRecordSnapshots; }
     void recordNavigationSnapshot();
@@ -1719,6 +1722,7 @@
     ProcessSuppressionDisabledToken m_preventProcessSuppressionCount;
         
     WebCore::ScrollPinningBehavior m_scrollPinningBehavior;
+    WTF::Optional<WebCore::ScrollbarOverlayStyle> m_scrollbarOverlayStyle;
 
     uint64_t m_navigationID;
 

Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (184296 => 184297)


--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj	2015-05-13 19:28:21 UTC (rev 184297)
@@ -1211,6 +1211,7 @@
 		9321D5861A38EE3C008052BE /* WKImmediateActionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 9321D5851A38EE3C008052BE /* WKImmediateActionController.h */; };
 		9321D5881A38EE74008052BE /* WKImmediateActionController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9321D5871A38EE74008052BE /* WKImmediateActionController.mm */; };
 		9321D58A1A38F196008052BE /* WKImmediateActionTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 9321D5891A38F196008052BE /* WKImmediateActionTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		9323611E1B015DA800FA9232 /* _WKOverlayScrollbarStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 9323611D1B015DA800FA9232 /* _WKOverlayScrollbarStyle.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		934B724419F5B9BE00AE96D6 /* WKActionMenuItemTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 934B724319F5B9BE00AE96D6 /* WKActionMenuItemTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		935EEB9B1277617C003322B8 /* WKBundleBackForwardListItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 935EEB981277616D003322B8 /* WKBundleBackForwardListItem.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		935EEB9E127761AC003322B8 /* WKBundleBackForwardList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 935EEB951277616D003322B8 /* WKBundleBackForwardList.cpp */; };
@@ -3434,6 +3435,7 @@
 		9321D5851A38EE3C008052BE /* WKImmediateActionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKImmediateActionController.h; sourceTree = "<group>"; };
 		9321D5871A38EE74008052BE /* WKImmediateActionController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKImmediateActionController.mm; sourceTree = "<group>"; };
 		9321D5891A38F196008052BE /* WKImmediateActionTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKImmediateActionTypes.h; sourceTree = "<group>"; };
+		9323611D1B015DA800FA9232 /* _WKOverlayScrollbarStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKOverlayScrollbarStyle.h; sourceTree = "<group>"; };
 		934B724319F5B9BE00AE96D6 /* WKActionMenuItemTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKActionMenuItemTypes.h; sourceTree = "<group>"; };
 		935EEB8F1277615D003322B8 /* InjectedBundleBackForwardList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleBackForwardList.cpp; sourceTree = "<group>"; };
 		935EEB901277615D003322B8 /* InjectedBundleBackForwardList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedBundleBackForwardList.h; sourceTree = "<group>"; };
@@ -5360,6 +5362,7 @@
 				37A64E5418F38E3C00EB30F1 /* _WKFormDelegate.h */,
 				37A64E5618F38F4600EB30F1 /* _WKFormInputSession.h */,
 				2D790A9C1AD7050D00AB90B3 /* _WKLayoutMode.h */,
+				9323611D1B015DA800FA9232 /* _WKOverlayScrollbarStyle.h */,
 				1A43E828188F3CDC009E4D30 /* _WKProcessPoolConfiguration.h */,
 				1A43E827188F3CDC009E4D30 /* _WKProcessPoolConfiguration.mm */,
 				7C89D2D61A6C6BE6003A5FDE /* _WKProcessPoolConfigurationInternal.h */,
@@ -7879,6 +7882,7 @@
 				7C3F8C91173AF52D007B7F39 /* PluginInformation.h in Headers */,
 				1AEFCC1211D01F96008219D3 /* PluginInfoStore.h in Headers */,
 				1A3D610213A7CC2A00F95D4E /* PluginModuleInfo.h in Headers */,
+				9323611E1B015DA800FA9232 /* _WKOverlayScrollbarStyle.h in Headers */,
 				1A043976124D034800FFBFB5 /* PluginProcess.h in Headers */,
 				1AC5FFC2174BFD1B0001483D /* PluginProcessAttributes.h in Headers */,
 				1A0EC906124C0AB8007EF4A5 /* PluginProcessConnection.h in Headers */,

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp (184296 => 184297)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp	2015-05-13 19:28:21 UTC (rev 184297)
@@ -980,6 +980,11 @@
     m_page->send(Messages::WebPageProxy::RecommendedScrollbarStyleDidChange(static_cast<int32_t>(newStyle)));
 }
 
+WTF::Optional<ScrollbarOverlayStyle> WebChromeClient::preferredScrollbarOverlayStyle()
+{
+    return m_page->scrollbarOverlayStyle(); 
+}
+
 Color WebChromeClient::underlayColor() const
 {
     return m_page->underlayColor();

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h (184296 => 184297)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h	2015-05-13 19:28:21 UTC (rev 184297)
@@ -276,6 +276,8 @@
     virtual void notifyScrollerThumbIsVisibleInRect(const WebCore::IntRect&) override;
     virtual void recommendedScrollbarStyleDidChange(WebCore::ScrollbarStyle newStyle) override;
 
+    virtual WTF::Optional<WebCore::ScrollbarOverlayStyle> preferredScrollbarOverlayStyle() override;
+
     virtual WebCore::Color underlayColor() const override;
 
     virtual void pageExtendedBackgroundColorDidChange(WebCore::Color) const override;

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (184296 => 184297)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2015-05-13 19:28:21 UTC (rev 184297)
@@ -450,6 +450,11 @@
     setAutoSizingShouldExpandToViewHeight(parameters.autoSizingShouldExpandToViewHeight);
     
     setScrollPinningBehavior(parameters.scrollPinningBehavior);
+    if (parameters.scrollbarOverlayStyle)
+        m_scrollbarOverlayStyle = static_cast<ScrollbarOverlayStyle>(parameters.scrollbarOverlayStyle.value());
+    else
+        m_scrollbarOverlayStyle = WTF::Optional<ScrollbarOverlayStyle>();
+
     setBackgroundExtendsBeyondPage(parameters.backgroundExtendsBeyondPage);
 
     setTopContentInset(parameters.topContentInset);
@@ -4849,6 +4854,15 @@
     m_page->mainFrame().view()->setScrollPinningBehavior(m_scrollPinningBehavior);
 }
 
+void WebPage::setScrollbarOverlayStyle(WTF::Optional<uint32_t> scrollbarStyle)
+{
+    if (scrollbarStyle)
+        m_scrollbarOverlayStyle = static_cast<ScrollbarOverlayStyle>(scrollbarStyle.value());
+    else
+        m_scrollbarOverlayStyle = WTF::Optional<ScrollbarOverlayStyle>();
+    m_page->mainFrame().view()->recalculateScrollbarOverlayStyle();
+}
+
 PassRefPtr<DocumentLoader> WebPage::createDocumentLoader(Frame& frame, const ResourceRequest& request, const SubstituteData& substituteData)
 {
     RefPtr<WebDocumentLoader> documentLoader = WebDocumentLoader::create(request, substituteData);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (184296 => 184297)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2015-05-13 19:28:21 UTC (rev 184297)
@@ -860,6 +860,9 @@
     WebCore::ScrollPinningBehavior scrollPinningBehavior() { return m_scrollPinningBehavior; }
     void setScrollPinningBehavior(uint32_t /* WebCore::ScrollPinningBehavior */ pinning);
 
+    WTF::Optional<WebCore::ScrollbarOverlayStyle> scrollbarOverlayStyle() { return m_scrollbarOverlayStyle; }
+    void setScrollbarOverlayStyle(WTF::Optional<uint32_t /* WebCore::ScrollbarOverlayStyle */> scrollbarStyle);
+
     PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(WebCore::Frame&, const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
 
     void getBytecodeProfile(uint64_t callbackID);
@@ -1348,6 +1351,7 @@
     unsigned m_maximumRenderingSuppressionToken;
     
     WebCore::ScrollPinningBehavior m_scrollPinningBehavior;
+    WTF::Optional<WebCore::ScrollbarOverlayStyle> m_scrollbarOverlayStyle;
 
     bool m_useAsyncScrolling;
 

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (184296 => 184297)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in	2015-05-13 19:26:50 UTC (rev 184296)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in	2015-05-13 19:28:21 UTC (rev 184297)
@@ -407,6 +407,7 @@
 #endif
 
     SetScrollPinningBehavior(uint32_t pinning)
+    SetScrollbarOverlayStyle(Optional<uint32_t> scrollbarStyle)
 
     GetBytecodeProfile(uint64_t callbackID)
     
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to