Diff
Modified: trunk/Source/WebCore/ChangeLog (226007 => 226008)
--- trunk/Source/WebCore/ChangeLog 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebCore/ChangeLog 2017-12-16 20:57:11 UTC (rev 226008)
@@ -1,3 +1,15 @@
+2017-12-16 Dan Bernstein <m...@apple.com>
+
+ WKWebView has no equivalent of -[WebView setAlwaysShowVerticalScroller:]
+ https://bugs.webkit.org/show_bug.cgi?id=180613
+ <rdar://problem/35946124>
+
+ Reviewed by Geoff Garen.
+
+ Test: TestWebKitAPI/Tests/WebKitCocoa/WKWebViewAlwaysShowsScroller.mm
+
+ * platform/ScrollView.h: Exported setScrollbarModes.
+
2017-12-16 Antti Koivisto <an...@apple.com>
Introduce RenderTreeBuilder
Modified: trunk/Source/WebCore/platform/ScrollView.h (226007 => 226008)
--- trunk/Source/WebCore/platform/ScrollView.h 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebCore/platform/ScrollView.h 2017-12-16 20:57:11 UTC (rev 226008)
@@ -103,7 +103,7 @@
// Auto means show a scrollbar only when one is needed.
// Note that for platforms with native widgets, these modes are considered advisory. In other words the underlying native
// widget may choose not to honor the requested modes.
- void setScrollbarModes(ScrollbarMode horizontalMode, ScrollbarMode verticalMode, bool horizontalLock = false, bool verticalLock = false);
+ WEBCORE_EXPORT void setScrollbarModes(ScrollbarMode horizontalMode, ScrollbarMode verticalMode, bool horizontalLock = false, bool verticalLock = false);
void setHorizontalScrollbarMode(ScrollbarMode mode, bool lock = false) { setScrollbarModes(mode, verticalScrollbarMode(), lock, verticalScrollbarLock()); }
void setVerticalScrollbarMode(ScrollbarMode mode, bool lock = false) { setScrollbarModes(horizontalScrollbarMode(), mode, horizontalScrollbarLock(), lock); };
WEBCORE_EXPORT void scrollbarModes(ScrollbarMode& horizontalMode, ScrollbarMode& verticalMode) const;
Modified: trunk/Source/WebKit/ChangeLog (226007 => 226008)
--- trunk/Source/WebKit/ChangeLog 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebKit/ChangeLog 2017-12-16 20:57:11 UTC (rev 226008)
@@ -1,3 +1,61 @@
+2017-12-16 Dan Bernstein <m...@apple.com>
+
+ WKWebView has no equivalent of -[WebView setAlwaysShowVerticalScroller:]
+ https://bugs.webkit.org/show_bug.cgi?id=180613
+ <rdar://problem/35946124>
+
+ Reviewed by Geoff Garen.
+
+ Added _alwaysShowsHorizontalScroller and _alwaysShowsVerticalScroller properties to
+ WKWebView.
+
+ * Shared/WebPageCreationParameters.cpp:
+ (WebKit::WebPageCreationParameters::encode const): Encode new alwaysShowsHorizontalScroller
+ and alwaysShowsVerticalScroller parameters.
+ (WebKit::WebPageCreationParameters::decode): Decode new parameters.
+
+ * Shared/WebPageCreationParameters.h: Added new alwaysShowsHorizontalScroller and
+ alwaysShowsVerticalScroller boolean parameters.
+
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView _alwaysShowsHorizontalScroller]): New accessor that calls through to the
+ WebPageProxy.
+ (-[WKWebView _setAlwaysShowsHorizontalScroller:]): Ditto.
+ (-[WKWebView _alwaysShowsVerticalScroller]): Ditto.
+ (-[WKWebView _setAlwaysShowsVerticalScroller:]): Ditto.
+
+ * UIProcess/API/Cocoa/WKWebViewPrivate.h: Declare new properties.
+
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::setAlwaysShowsHorizontalScroller): Update member variable and send
+ a message to the page.
+ (WebKit::WebPageProxy::setAlwaysShowsVerticalScroller): Ditto.
+ (WebKit::WebPageProxy::creationParameters): Initialize new parameters from the new member
+ variables.
+
+ * UIProcess/WebPageProxy.h:
+ (WebKit::WebPageProxy::alwaysShowsHorizontalScroller const): New getter.
+ (WebKit::WebPageProxy::alwaysShowsVerticalScroller const): Ditto.
+
+ * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+ (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): Factor
+ alwaysShowsHorizontalScroller and alwaysShowsVerticalScroller into the initial scroller
+ modes and scroller locks when creating the FrameView.
+
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::WebPage): Initialize new m_alwaysShowsHorizontalScroller and
+ m_alwaysShowsVerticalScroller member variables from the corresponding new creation
+ parameters.
+ (WebKit::WebPage::setAlwaysShowsHorizontalScroller): Update the member variable and set
+ new scrollbar mode on the frame view if needed.
+ (WebKit::WebPage::setAlwaysShowsVerticalScroller): Ditto.
+
+ * WebProcess/WebPage/WebPage.h:
+ (WebKit::WebPage::alwaysShowsHorizontalScroller const): New getter.
+ (WebKit::WebPage::alwaysShowsVerticalScroller const): Ditto.
+
+ * WebProcess/WebPage/WebPage.messages.in: Added new messages.
+
2017-12-16 Brady Eidson <beid...@apple.com>
Implement getting ServiceWorker registrations for the WKWebsiteDataStore API
Modified: trunk/Source/WebKit/Shared/WebPageCreationParameters.cpp (226007 => 226008)
--- trunk/Source/WebKit/Shared/WebPageCreationParameters.cpp 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebKit/Shared/WebPageCreationParameters.cpp 2017-12-16 20:57:11 UTC (rev 226008)
@@ -43,6 +43,8 @@
encoder << underlayColor;
encoder << useFixedLayout;
encoder << fixedLayoutSize;
+ encoder << alwaysShowsHorizontalScroller;
+ encoder << alwaysShowsVerticalScroller;
encoder.encodeEnum(paginationMode);
encoder << paginationBehavesLikeColumns;
encoder << pageLength;
@@ -136,6 +138,10 @@
return std::nullopt;
if (!decoder.decode(parameters.fixedLayoutSize))
return std::nullopt;
+ if (!decoder.decode(parameters.alwaysShowsHorizontalScroller))
+ return std::nullopt;
+ if (!decoder.decode(parameters.alwaysShowsVerticalScroller))
+ return std::nullopt;
if (!decoder.decodeEnum(parameters.paginationMode))
return std::nullopt;
if (!decoder.decode(parameters.paginationBehavesLikeColumns))
Modified: trunk/Source/WebKit/Shared/WebPageCreationParameters.h (226007 => 226008)
--- trunk/Source/WebKit/Shared/WebPageCreationParameters.h 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebKit/Shared/WebPageCreationParameters.h 2017-12-16 20:57:11 UTC (rev 226008)
@@ -81,6 +81,9 @@
bool useFixedLayout;
WebCore::IntSize fixedLayoutSize;
+ bool alwaysShowsHorizontalScroller;
+ bool alwaysShowsVerticalScroller;
+
bool suppressScrollbarAnimations;
WebCore::Pagination::Mode paginationMode;
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (226007 => 226008)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2017-12-16 20:57:11 UTC (rev 226008)
@@ -5518,6 +5518,26 @@
return _impl->setShouldExpandToViewHeightForAutoLayout(shouldExpand);
}
+- (BOOL)_alwaysShowsHorizontalScroller
+{
+ return _page->alwaysShowsHorizontalScroller();
+}
+
+- (void)_setAlwaysShowsHorizontalScroller:(BOOL)alwaysShowsHorizontalScroller
+{
+ _page->setAlwaysShowsHorizontalScroller(alwaysShowsHorizontalScroller);
+}
+
+- (BOOL)_alwaysShowsVerticalScroller
+{
+ return _page->alwaysShowsVerticalScroller();
+}
+
+- (void)_setAlwaysShowsVerticalScroller:(BOOL)alwaysShowsVerticalScroller
+{
+ _page->setAlwaysShowsVerticalScroller(alwaysShowsVerticalScroller);
+}
+
- (NSPrintOperation *)_printOperationWithPrintInfo:(NSPrintInfo *)printInfo
{
if (auto webFrameProxy = _page->mainFrame())
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h (226007 => 226008)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h 2017-12-16 20:57:11 UTC (rev 226008)
@@ -280,6 +280,9 @@
// of the content; use this property to force it to lay out to the height of the view instead.
@property (nonatomic, setter=_setShouldExpandContentToViewHeightForAutoLayout:) BOOL _shouldExpandContentToViewHeightForAutoLayout WK_API_AVAILABLE(macosx(10.12));
+@property (nonatomic, setter=_setAlwaysShowsHorizontalScroller:) BOOL _alwaysShowsHorizontalScroller WK_API_AVAILABLE(macosx(WK_MAC_TBA));
+@property (nonatomic, setter=_setAlwaysShowsVerticalScroller:) BOOL _alwaysShowsVerticalScroller WK_API_AVAILABLE(macosx(WK_MAC_TBA));
+
- (NSPrintOperation *)_printOperationWithPrintInfo:(NSPrintInfo *)printInfo;
- (NSPrintOperation *)_printOperationWithPrintInfo:(NSPrintInfo *)printInfo forFrame:(_WKFrameHandle *)frameHandle WK_API_AVAILABLE(macosx(10.12), ios(10.0));
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (226007 => 226008)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2017-12-16 20:57:11 UTC (rev 226008)
@@ -2652,6 +2652,30 @@
m_process->send(Messages::WebPage::SetFixedLayoutSize(size), m_pageID);
}
+void WebPageProxy::setAlwaysShowsHorizontalScroller(bool alwaysShowsHorizontalScroller)
+{
+ if (!isValid())
+ return;
+
+ if (alwaysShowsHorizontalScroller == m_alwaysShowsHorizontalScroller)
+ return;
+
+ m_alwaysShowsHorizontalScroller = alwaysShowsHorizontalScroller;
+ m_process->send(Messages::WebPage::SetAlwaysShowsHorizontalScroller(alwaysShowsHorizontalScroller), m_pageID);
+}
+
+void WebPageProxy::setAlwaysShowsVerticalScroller(bool alwaysShowsVerticalScroller)
+{
+ if (!isValid())
+ return;
+
+ if (alwaysShowsVerticalScroller == m_alwaysShowsVerticalScroller)
+ return;
+
+ m_alwaysShowsVerticalScroller = alwaysShowsVerticalScroller;
+ m_process->send(Messages::WebPage::SetAlwaysShowsVerticalScroller(alwaysShowsVerticalScroller), m_pageID);
+}
+
void WebPageProxy::listenForLayoutMilestones(WebCore::LayoutMilestones milestones)
{
if (!isValid())
@@ -5745,6 +5769,8 @@
parameters.underlayColor = m_underlayColor;
parameters.useFixedLayout = m_useFixedLayout;
parameters.fixedLayoutSize = m_fixedLayoutSize;
+ parameters.alwaysShowsHorizontalScroller = m_alwaysShowsHorizontalScroller;
+ parameters.alwaysShowsVerticalScroller = m_alwaysShowsVerticalScroller;
parameters.suppressScrollbarAnimations = m_suppressScrollbarAnimations;
parameters.paginationMode = m_paginationMode;
parameters.paginationBehavesLikeColumns = m_paginationBehavesLikeColumns;
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (226007 => 226008)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2017-12-16 20:57:11 UTC (rev 226008)
@@ -732,6 +732,11 @@
bool useFixedLayout() const { return m_useFixedLayout; };
const WebCore::IntSize& fixedLayoutSize() const { return m_fixedLayoutSize; };
+ void setAlwaysShowsHorizontalScroller(bool);
+ void setAlwaysShowsVerticalScroller(bool);
+ bool alwaysShowsHorizontalScroller() const { return m_alwaysShowsHorizontalScroller; }
+ bool alwaysShowsVerticalScroller() const { return m_alwaysShowsVerticalScroller; }
+
void listenForLayoutMilestones(WebCore::LayoutMilestones);
bool hasHorizontalScrollbar() const { return m_mainFrameHasHorizontalScrollbar; }
@@ -1834,6 +1839,9 @@
bool m_useFixedLayout { false };
WebCore::IntSize m_fixedLayoutSize;
+ bool m_alwaysShowsHorizontalScroller { false };
+ bool m_alwaysShowsVerticalScroller { false };
+
WebCore::LayoutMilestones m_observedLayoutMilestones { 0 };
bool m_suppressScrollbarAnimations { false };
Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (226007 => 226008)
--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2017-12-16 20:57:11 UTC (rev 226008)
@@ -1385,9 +1385,15 @@
ScrollbarMode defaultScrollbarMode = shouldHideScrollbars ? ScrollbarAlwaysOff : ScrollbarAuto;
+ ScrollbarMode horizontalScrollbarMode = webPage->alwaysShowsHorizontalScroller() ? ScrollbarAlwaysOn : defaultScrollbarMode;
+ ScrollbarMode verticalScrollbarMode = webPage->alwaysShowsVerticalScroller() ? ScrollbarAlwaysOn : defaultScrollbarMode;
+
+ bool horizontalLock = shouldHideScrollbars || webPage->alwaysShowsHorizontalScroller();
+ bool verticalLock = shouldHideScrollbars || webPage->alwaysShowsVerticalScroller();
+
m_frame->coreFrame()->createView(webPage->size(), backgroundColor, isTransparent,
webPage->fixedLayoutSize(), fixedVisibleContentRect, shouldUseFixedLayout,
- defaultScrollbarMode, /* lock */ shouldHideScrollbars, defaultScrollbarMode, /* lock */ shouldHideScrollbars);
+ horizontalScrollbarMode, horizontalLock, verticalScrollbarMode, verticalLock);
if (int minimumLayoutWidth = webPage->minimumLayoutSize().width()) {
int minimumLayoutHeight = std::max(webPage->minimumLayoutSize().height(), 1);
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (226007 => 226008)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2017-12-16 20:57:11 UTC (rev 226008)
@@ -323,6 +323,8 @@
WebPage::WebPage(uint64_t pageID, WebPageCreationParameters&& parameters)
: m_pageID(pageID)
, m_viewSize(parameters.viewSize)
+ , m_alwaysShowsHorizontalScroller { parameters.alwaysShowsHorizontalScroller }
+ , m_alwaysShowsVerticalScroller { parameters.alwaysShowsVerticalScroller }
#if ENABLE(PRIMARY_SNAPSHOTTED_PLUGIN_HEURISTIC)
, m_determinePrimarySnapshottedPlugInTimer(RunLoop::main(), this, &WebPage::determinePrimarySnapshottedPlugInTimerFired)
#endif
@@ -4914,6 +4916,30 @@
sendEditorStateUpdate();
}
+void WebPage::setAlwaysShowsHorizontalScroller(bool alwaysShowsHorizontalScroller)
+{
+ if (alwaysShowsHorizontalScroller == m_alwaysShowsHorizontalScroller)
+ return;
+
+ m_alwaysShowsHorizontalScroller = alwaysShowsHorizontalScroller;
+ auto view = corePage()->mainFrame().view();
+ if (!alwaysShowsHorizontalScroller)
+ view->setHorizontalScrollbarLock(false);
+ view->setHorizontalScrollbarMode(alwaysShowsHorizontalScroller ? ScrollbarAlwaysOn : m_mainFrameIsScrollable ? ScrollbarAuto : ScrollbarAlwaysOff, alwaysShowsHorizontalScroller || !m_mainFrameIsScrollable);
+}
+
+void WebPage::setAlwaysShowsVerticalScroller(bool alwaysShowsVerticalScroller)
+{
+ if (alwaysShowsVerticalScroller == m_alwaysShowsVerticalScroller)
+ return;
+
+ m_alwaysShowsVerticalScroller = alwaysShowsVerticalScroller;
+ auto view = corePage()->mainFrame().view();
+ if (!alwaysShowsVerticalScroller)
+ view->setVerticalScrollbarLock(false);
+ view->setVerticalScrollbarMode(alwaysShowsVerticalScroller ? ScrollbarAlwaysOn : m_mainFrameIsScrollable ? ScrollbarAuto : ScrollbarAlwaysOff, alwaysShowsVerticalScroller || !m_mainFrameIsScrollable);
+}
+
void WebPage::setMinimumLayoutSize(const IntSize& minimumLayoutSize)
{
if (m_minimumLayoutSize == minimumLayoutSize)
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (226007 => 226008)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2017-12-16 20:57:11 UTC (rev 226008)
@@ -913,6 +913,12 @@
bool mainFrameIsScrollable() const { return m_mainFrameIsScrollable; }
+ void setAlwaysShowsHorizontalScroller(bool);
+ void setAlwaysShowsVerticalScroller(bool);
+
+ bool alwaysShowsHorizontalScroller() const { return m_alwaysShowsHorizontalScroller; };
+ bool alwaysShowsVerticalScroller() const { return m_alwaysShowsVerticalScroller; };
+
void setMinimumLayoutSize(const WebCore::IntSize&);
WebCore::IntSize minimumLayoutSize() const { return m_minimumLayoutSize; }
@@ -1396,6 +1402,9 @@
bool m_scrollingPerformanceLoggingEnabled { false };
bool m_mainFrameIsScrollable { true };
+ bool m_alwaysShowsHorizontalScroller { false };
+ bool m_alwaysShowsVerticalScroller { false };
+
#if PLATFORM(IOS)
bool m_ignoreViewportScalingConstraints { false };
#endif
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in (226007 => 226008)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2017-12-16 20:57:11 UTC (rev 226008)
@@ -399,6 +399,9 @@
FontAtSelection(WebKit::CallbackID callbackID);
#endif
+ SetAlwaysShowsHorizontalScroller(bool alwaysShowsHorizontalScroller)
+ SetAlwaysShowsVerticalScroller(bool alwaysShowsVerticalScroller)
+
SetMinimumLayoutSize(WebCore::IntSize minimumLayoutSize)
SetAutoSizingShouldExpandToViewHeight(bool shouldExpand)
Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (226007 => 226008)
--- trunk/Source/WebKitLegacy/mac/ChangeLog 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog 2017-12-16 20:57:11 UTC (rev 226008)
@@ -1,3 +1,16 @@
+2017-12-16 Dan Bernstein <m...@apple.com>
+
+ WKWebView has no equivalent of -[WebView setAlwaysShowVerticalScroller:]
+ https://bugs.webkit.org/show_bug.cgi?id=180613
+ <rdar://problem/35946124>
+
+ Reviewed by Geoff Garen.
+
+ * WebKit.mac.exp: Removed WebCoreScrollbarAlwaysOn, which is no longer being used by any
+ clients.
+ * WebView/WebDynamicScrollBarsView.h: Ditto.
+ * WebView/WebDynamicScrollBarsView.mm: Ditto.
+
2017-12-14 David Kilzer <ddkil...@apple.com>
Enable -Wstrict-prototypes for WebKit
Modified: trunk/Source/WebKitLegacy/mac/WebKit.mac.exp (226007 => 226008)
--- trunk/Source/WebKitLegacy/mac/WebKit.mac.exp 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebKitLegacy/mac/WebKit.mac.exp 2017-12-16 20:57:11 UTC (rev 226008)
@@ -8,7 +8,6 @@
_HIWebViewCreate
_HIWebViewGetWebView
_WebConvertNSImageToCGImageRef
-_WebCoreScrollbarAlwaysOn
_WebIconDatabaseDidAddIconNotification
_WebIconDatabaseDidRemoveAllIconsNotification
_WebIconDatabaseDirectoryDefaultsKey
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebDynamicScrollBarsView.h (226007 => 226008)
--- trunk/Source/WebKitLegacy/mac/WebView/WebDynamicScrollBarsView.h 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebDynamicScrollBarsView.h 2017-12-16 20:57:11 UTC (rev 226008)
@@ -32,9 +32,6 @@
#import <AppKit/NSScrollView.h>
-// FIXME: <rdar://problem/5898985> Mail currently expects this header to define WebCoreScrollbarAlwaysOn.
-extern const int WebCoreScrollbarAlwaysOn;
-
struct WebDynamicScrollBarsViewPrivate;
@interface WebDynamicScrollBarsView : NSScrollView {
@private
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebDynamicScrollBarsView.mm (226007 => 226008)
--- trunk/Source/WebKitLegacy/mac/WebView/WebDynamicScrollBarsView.mm 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebDynamicScrollBarsView.mm 2017-12-16 20:57:11 UTC (rev 226008)
@@ -36,9 +36,6 @@
using namespace WebCore;
-// FIXME: <rdar://problem/5898985> Mail expects a constant of this name to exist.
-const int WebCoreScrollbarAlwaysOn = ScrollbarAlwaysOn;
-
#ifndef __OBJC2__
// In <rdar://problem/7814899> we saw crashes because WebDynamicScrollBarsView increased in size, breaking ABI compatiblity.
COMPILE_ASSERT(sizeof(WebDynamicScrollBarsView) == 0x8c, WebDynamicScrollBarsView_is_expected_size);
Modified: trunk/Tools/ChangeLog (226007 => 226008)
--- trunk/Tools/ChangeLog 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Tools/ChangeLog 2017-12-16 20:57:11 UTC (rev 226008)
@@ -1,3 +1,30 @@
+2017-12-16 Dan Bernstein <m...@apple.com>
+
+ WKWebView has no equivalent of -[WebView setAlwaysShowVerticalScroller:]
+ https://bugs.webkit.org/show_bug.cgi?id=180613
+ <rdar://problem/35946124>
+
+ Reviewed by Geoff Garen.
+
+ * MiniBrowser/mac/MainMenu.xib: Added Always Show {Horizontal,Vertical} Scroller menu items
+ to the View menu.
+
+ * MiniBrowser/mac/WK1BrowserWindowController.m:
+ (-[WK1BrowserWindowController validateMenuItem:]): Set the state of the new menu items based
+ on -alwaysShow{Horizontal,Vertical}Scroller.
+ (-[WK1BrowserWindowController toggleAlwaysShowsHorizontalScroller:]): Toggle the value.
+ (-[WK1BrowserWindowController toggleAlwaysShowsVerticalScroller:]): Ditto.
+
+ * MiniBrowser/mac/WK2BrowserWindowController.m:
+ (-[WK2BrowserWindowController validateMenuItem:]): Set the state of the new menu items based
+ on the new property.
+ (-[WK2BrowserWindowController toggleAlwaysShowsHorizontalScroller:]): Toggle the property.
+ (-[WK2BrowserWindowController toggleAlwaysShowsVerticalScroller:]): Ditto.
+
+ * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
+ * TestWebKitAPI/Tests/WebKitCocoa/WKWebViewAlwaysShowsScroller.mm: Added.
+ (TEST):
+
2017-12-16 Basuke Suzuki <basuke.suz...@sony.com>
[WinCairo] Move the destination of WinCairoRequirements.zip into WebKitLibraries and register it and related files as git ignore files.
Modified: trunk/Tools/MiniBrowser/mac/MainMenu.xib (226007 => 226008)
--- trunk/Tools/MiniBrowser/mac/MainMenu.xib 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Tools/MiniBrowser/mac/MainMenu.xib 2017-12-16 20:57:11 UTC (rev 226008)
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13168.4" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13771" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
- <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13168.4"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13771"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
@@ -735,6 +735,18 @@
</items>
</menu>
</menuItem>
+ <menuItem title="Always Show Horizontal Scroller" id="vTs-1N-5Cb">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="toggleAlwaysShowsHorizontalScroller:" target="-1" id="WAH-WK-kRY"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Always Show Vertical Scroller" id="dad-Bl-adD">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="toggleAlwaysShowsVerticalScroller:" target="-1" id="zGl-OI-HH6"/>
+ </connections>
+ </menuItem>
<menuItem isSeparatorItem="YES" id="581"/>
<menuItem title="Reload Page" keyEquivalent="r" id="579">
<connections>
Modified: trunk/Tools/MiniBrowser/mac/WK1BrowserWindowController.m (226007 => 226008)
--- trunk/Tools/MiniBrowser/mac/WK1BrowserWindowController.m 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Tools/MiniBrowser/mac/WK1BrowserWindowController.m 2017-12-16 20:57:11 UTC (rev 226008)
@@ -151,6 +151,10 @@
[menuItem setState:self.isEditable ? NSOnState : NSOffState];
else if (action == @selector(showHideWebInspector:))
[menuItem setTitle:_webView.inspector.isOpen ? @"Close Web Inspector" : @"Show Web Inspector"];
+ else if (action == @selector(toggleAlwaysShowsHorizontalScroller:))
+ menuItem.state = _webView.alwaysShowHorizontalScroller ? NSOnState : NSOffState;
+ else if (action == @selector(toggleAlwaysShowsVerticalScroller:))
+ menuItem.state = _webView.alwaysShowVerticalScroller ? NSOnState : NSOffState;
if (action == @selector(setPageScale:))
[menuItem setState:areEssentiallyEqual([_webView _viewScaleFactor], [self pageScaleForMenuItemTag:[menuItem tag]])];
@@ -264,6 +268,16 @@
[inspector show:sender];
}
+- (IBAction)toggleAlwaysShowsHorizontalScroller:(id)sender
+{
+ _webView.alwaysShowHorizontalScroller = !_webView.alwaysShowHorizontalScroller;
+}
+
+- (IBAction)toggleAlwaysShowsVerticalScroller:(id)sender
+{
+ _webView.alwaysShowVerticalScroller = !_webView.alwaysShowVerticalScroller;
+}
+
- (NSURL *)currentURL
{
return _webView.mainFrame.dataSource.request.URL;
Modified: trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m (226007 => 226008)
--- trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m 2017-12-16 20:57:11 UTC (rev 226008)
@@ -209,6 +209,10 @@
[menuItem setState:self.isEditable ? NSOnState : NSOffState];
else if (action == @selector(showHideWebInspector:))
[menuItem setTitle:WKInspectorIsVisible(WKPageGetInspector(_webView._pageRefForTransitionToWKWebView)) ? @"Close Web Inspector" : @"Show Web Inspector"];
+ else if (action == @selector(toggleAlwaysShowsHorizontalScroller:))
+ menuItem.state = _webView._alwaysShowsHorizontalScroller ? NSOnState : NSOffState;
+ else if (action == @selector(toggleAlwaysShowsVerticalScroller:))
+ menuItem.state = _webView._alwaysShowsVerticalScroller ? NSOnState : NSOffState;
if (action == @selector(setPageScale:))
[menuItem setState:areEssentiallyEqual([_webView _pageScale], [self pageScaleForMenuItemTag:[menuItem tag]])];
@@ -291,6 +295,16 @@
WKInspectorShow(inspectorRef);
}
+- (IBAction)toggleAlwaysShowsHorizontalScroller:(id)sender
+{
+ _webView._alwaysShowsHorizontalScroller = !_webView._alwaysShowsHorizontalScroller;
+}
+
+- (IBAction)toggleAlwaysShowsVerticalScroller:(id)sender
+{
+ _webView._alwaysShowsVerticalScroller = !_webView._alwaysShowsVerticalScroller;
+}
+
- (NSURL *)currentURL
{
return _webView.URL;
Modified: trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (226007 => 226008)
--- trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2017-12-16 19:07:55 UTC (rev 226007)
+++ trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2017-12-16 20:57:11 UTC (rev 226008)
@@ -121,6 +121,7 @@
33DC89141419579F00747EF7 /* LoadCanceledNoServerRedirectCallback_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33DC89131419579F00747EF7 /* LoadCanceledNoServerRedirectCallback_Bundle.cpp */; };
33E79E06137B5FD900E32D99 /* mouse-move-listener.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 33E79E05137B5FCE00E32D99 /* mouse-move-listener.html */; };
370CE22A1F57343400E7410B /* WKContentViewTargetForAction.mm in Sources */ = {isa = PBXBuildFile; fileRef = 370CE2291F57343400E7410B /* WKContentViewTargetForAction.mm */; };
+ 371195AB1FE5797700A1FB92 /* WKWebViewAlwaysShowsScroller.mm in Sources */ = {isa = PBXBuildFile; fileRef = 371195AA1FE5797700A1FB92 /* WKWebViewAlwaysShowsScroller.mm */; };
374B7A601DF36EEE00ACCB6C /* BundleEditingDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 374B7A5E1DF36EEE00ACCB6C /* BundleEditingDelegate.mm */; };
374B7A611DF371CF00ACCB6C /* BundleEditingDelegatePlugIn.mm in Sources */ = {isa = PBXBuildFile; fileRef = 374B7A5F1DF36EEE00ACCB6C /* BundleEditingDelegatePlugIn.mm */; };
375E0E171D66674400EFEC2C /* WKNSNumber.mm in Sources */ = {isa = PBXBuildFile; fileRef = 375E0E151D66674400EFEC2C /* WKNSNumber.mm */; };
@@ -1224,6 +1225,7 @@
33DC89131419579F00747EF7 /* LoadCanceledNoServerRedirectCallback_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoadCanceledNoServerRedirectCallback_Bundle.cpp; sourceTree = "<group>"; };
33E79E05137B5FCE00E32D99 /* mouse-move-listener.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "mouse-move-listener.html"; sourceTree = "<group>"; };
370CE2291F57343400E7410B /* WKContentViewTargetForAction.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WKContentViewTargetForAction.mm; sourceTree = "<group>"; };
+ 371195AA1FE5797700A1FB92 /* WKWebViewAlwaysShowsScroller.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebViewAlwaysShowsScroller.mm; sourceTree = "<group>"; };
3722C8681461E03E00C45D00 /* RenderedImageFromDOMRange.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RenderedImageFromDOMRange.mm; sourceTree = "<group>"; };
374B7A5E1DF36EEE00ACCB6C /* BundleEditingDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BundleEditingDelegate.mm; sourceTree = "<group>"; };
374B7A5F1DF36EEE00ACCB6C /* BundleEditingDelegatePlugIn.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BundleEditingDelegatePlugIn.mm; sourceTree = "<group>"; };
@@ -2128,6 +2130,7 @@
5E4B1D2C1D404C6100053621 /* WKScrollViewDelegateCrash.mm */,
51C683DD1EA134DB00650183 /* WKURLSchemeHandler-1.mm */,
5182C22D1F2BCB410059BA7C /* WKURLSchemeHandler-leaks.mm */,
+ 371195AA1FE5797700A1FB92 /* WKWebViewAlwaysShowsScroller.mm */,
2EFF06D61D8AF34A0004BB30 /* WKWebViewCandidateTests.mm */,
5CB3CE381FA1691700C3A2D6 /* WKWebViewConfiguration.mm */,
7C417F311D19E14800B8EF53 /* WKWebViewDefaultNavigationDelegate.mm */,
@@ -3176,7 +3179,9 @@
1ADAD1501D77A9F600212586 /* BlockPtr.mm in Sources */,
7C83DE9C1D0A590C00FEBCF3 /* BloomFilter.cpp in Sources */,
7C83DEA01D0A590C00FEBCF3 /* CheckedArithmeticOperations.cpp in Sources */,
+ 0F30CB5C1FCE1796004B5323 /* ConcurrentPtrHashSet.cpp in Sources */,
7C83DEC31D0A590C00FEBCF3 /* Condition.cpp in Sources */,
+ FE05FAF11FE08CD400093230 /* ConstExprPoisoned.cpp in Sources */,
7C83DEA61D0A590C00FEBCF3 /* Counters.cpp in Sources */,
7C83DEA91D0A590C00FEBCF3 /* CString.cpp in Sources */,
7C83DEAD1D0A590C00FEBCF3 /* Deque.cpp in Sources */,
@@ -3196,17 +3201,16 @@
7C83DF1D1D0A590C00FEBCF3 /* Lock.cpp in Sources */,
A57D54F61F3395D000A97AA7 /* Logger.cpp in Sources */,
7C83DEED1D0A590C00FEBCF3 /* MathExtras.cpp in Sources */,
- FE05FAF11FE08CD400093230 /* ConstExprPoisoned.cpp in Sources */,
7C83DEEF1D0A590C00FEBCF3 /* MD5.cpp in Sources */,
7C83DEF11D0A590C00FEBCF3 /* MediaTime.cpp in Sources */,
7C83DEF61D0A590C00FEBCF3 /* MetaAllocator.cpp in Sources */,
7C83DEFE1D0A590C00FEBCF3 /* NakedPtr.cpp in Sources */,
A57D54F31F338C3600A97AA7 /* NeverDestroyed.cpp in Sources */,
- 0F30CB5C1FCE1796004B5323 /* ConcurrentPtrHashSet.cpp in Sources */,
7C83DF011D0A590C00FEBCF3 /* Optional.cpp in Sources */,
1A77BAA31D9AFFFC005FC568 /* OptionSet.cpp in Sources */,
7C83DF021D0A590C00FEBCF3 /* OSObjectPtr.cpp in Sources */,
7C83DF591D0A590C00FEBCF3 /* ParkingLot.cpp in Sources */,
+ FE05FAEF1FE0645B00093230 /* Poisoned.cpp in Sources */,
53EC25411E96FD87000831B9 /* PriorityQueue.cpp in Sources */,
7C83DF131D0A590C00FEBCF3 /* RedBlackTree.cpp in Sources */,
7C83DF141D0A590C00FEBCF3 /* Ref.cpp in Sources */,
@@ -3217,7 +3221,6 @@
7C83DF051D0A590C00FEBCF3 /* RunLoop.cpp in Sources */,
7C83DF261D0A590C00FEBCF3 /* SaturatedArithmeticOperations.cpp in Sources */,
1A3524AE1D63A4FB0031729B /* Scope.cpp in Sources */,
- FE05FAEF1FE0645B00093230 /* Poisoned.cpp in Sources */,
7C83DF121D0A590C00FEBCF3 /* ScopedLambda.cpp in Sources */,
7C83DF3D1D0A590C00FEBCF3 /* SetForScope.cpp in Sources */,
7C83DF2A1D0A590C00FEBCF3 /* SHA1.cpp in Sources */,
@@ -3604,6 +3607,7 @@
2D4CF8BD1D8360CC0001CE8D /* WKThumbnailView.mm in Sources */,
51C683DE1EA134E800650183 /* WKURLSchemeHandler-1.mm in Sources */,
5182C22E1F2BCE540059BA7C /* WKURLSchemeHandler-leaks.mm in Sources */,
+ 371195AB1FE5797700A1FB92 /* WKWebViewAlwaysShowsScroller.mm in Sources */,
514958BE1F7427AC00E87BAD /* WKWebViewAutofillTests.mm in Sources */,
2EFF06D71D8AF34A0004BB30 /* WKWebViewCandidateTests.mm in Sources */,
5CB3CE391FA1697F00C3A2D6 /* WKWebViewConfiguration.mm in Sources */,
Added: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewAlwaysShowsScroller.mm (0 => 226008)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewAlwaysShowsScroller.mm (rev 0)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewAlwaysShowsScroller.mm 2017-12-16 20:57:11 UTC (rev 226008)
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2017 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 "config.h"
+
+#if WK_API_ENABLED && PLATFORM(MAC)
+
+#import "PlatformUtilities.h"
+#import "TestWKWebView.h"
+#import <WebKit/WKWebViewPrivate.h>
+#import <wtf/RetainPtr.h>
+
+TEST(WKWebView, AlwaysShowsScroller)
+{
+ RetainPtr<TestWKWebView> webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 300, 300)]);
+ [webView synchronouslyLoadHTMLString:@"<style>::-webkit-scrollbar { width: 20px; height: 20px; }</style>"];
+
+ ASSERT_EQ(300, [webView stringByEvaluatingJavaScript:@"document.body.scrollWidth"].integerValue);
+ ASSERT_EQ(300, [webView stringByEvaluatingJavaScript:@"document.body.scrollHeight"].integerValue);
+
+ [webView _setAlwaysShowsHorizontalScroller:YES];
+ ASSERT_EQ(300, [webView stringByEvaluatingJavaScript:@"document.body.scrollWidth"].integerValue);
+ ASSERT_EQ(280, [webView stringByEvaluatingJavaScript:@"document.body.scrollHeight"].integerValue);
+
+ [webView _setAlwaysShowsVerticalScroller:YES];
+ // When using custom scrollers, WebKit fails to dirty layout when we change this, so force it.
+ [webView evaluateJavaScript:@"document.body.appendChild(document.createElement(\"div\"))" completionHandler:nil];
+ ASSERT_EQ(280, [webView stringByEvaluatingJavaScript:@"document.body.scrollWidth"].integerValue);
+ ASSERT_EQ(280, [webView stringByEvaluatingJavaScript:@"document.body.scrollHeight"].integerValue);
+
+ [webView _setAlwaysShowsHorizontalScroller:NO];
+ ASSERT_EQ(280, [webView stringByEvaluatingJavaScript:@"document.body.scrollWidth"].integerValue);
+ ASSERT_EQ(300, [webView stringByEvaluatingJavaScript:@"document.body.scrollHeight"].integerValue);
+}
+
+#endif