Title: [165817] trunk
- Revision
- 165817
- Author
- [email protected]
- Date
- 2014-03-18 10:57:19 -0700 (Tue, 18 Mar 2014)
Log Message
Renable pagination mode in WK2 MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=130374
Source/WebKit2:
Reviewed by Anders Carlsson.
Add SPI for pagination mode.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _paginationMode]):
(-[WKWebView _setPaginationMode:]):
(-[WKWebView _paginationBehavesLikeColumns]):
(-[WKWebView _setPaginationBehavesLikeColumns:]):
(-[WKWebView _pageLength]):
(-[WKWebView _setPageLength:]):
(-[WKWebView _gapBetweenPages]):
(-[WKWebView _setGapBetweenPages:]):
(-[WKWebView _pageCount]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
(NS_ENUM):
Tools:
Reviewed by Anders Carlsson.
Put the implementation of togglePaginationMode: back, and correctly
enable the menu item.
* MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController validateMenuItem:]):
(-[WK2BrowserWindowController isPaginated]):
(-[WK2BrowserWindowController togglePaginationMode:]):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (165816 => 165817)
--- trunk/Source/WebKit2/ChangeLog 2014-03-18 17:54:53 UTC (rev 165816)
+++ trunk/Source/WebKit2/ChangeLog 2014-03-18 17:57:19 UTC (rev 165817)
@@ -1,3 +1,25 @@
+2014-03-17 Simon Fraser <[email protected]>
+
+ Renable pagination mode in WK2 MiniBrowser
+ https://bugs.webkit.org/show_bug.cgi?id=130374
+
+ Reviewed by Anders Carlsson.
+
+ Add SPI for pagination mode.
+
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView _paginationMode]):
+ (-[WKWebView _setPaginationMode:]):
+ (-[WKWebView _paginationBehavesLikeColumns]):
+ (-[WKWebView _setPaginationBehavesLikeColumns:]):
+ (-[WKWebView _pageLength]):
+ (-[WKWebView _setPageLength:]):
+ (-[WKWebView _gapBetweenPages]):
+ (-[WKWebView _setGapBetweenPages:]):
+ (-[WKWebView _pageCount]):
+ * UIProcess/API/Cocoa/WKWebViewPrivate.h:
+ (NS_ENUM):
+
2014-03-18 Ryuan Choi <[email protected]>
[CMAKE][WK2]Move CoordinatedGraphics related files out of WebKit2/CMakeLists.txt
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (165816 => 165817)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2014-03-18 17:54:53 UTC (rev 165816)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2014-03-18 17:57:19 UTC (rev 165817)
@@ -901,6 +901,86 @@
_page->runJavaScriptInMainFrame(scriptString, WebKit::ScriptValueCallback::create([](bool, WebKit::WebSerializedScriptValue*){}));
}
+- (_WKPaginationMode)_paginationMode
+{
+ switch (_page->paginationMode()) {
+ case WebCore::Pagination::Unpaginated:
+ return _WKPaginationModeUnpaginated;
+ case WebCore::Pagination::LeftToRightPaginated:
+ return _WKPaginationModeLeftToRight;
+ case WebCore::Pagination::RightToLeftPaginated:
+ return _WKPaginationModeRightToLeft;
+ case WebCore::Pagination::TopToBottomPaginated:
+ return _WKPaginationModeTopToBottom;
+ case WebCore::Pagination::BottomToTopPaginated:
+ return _WKPaginationModeBottomToTop;
+ }
+
+ ASSERT_NOT_REACHED();
+ return _WKPaginationModeUnpaginated;
+}
+
+- (void)_setPaginationMode:(_WKPaginationMode)paginationMode
+{
+ WebCore::Pagination::Mode mode;
+ switch (paginationMode) {
+ case _WKPaginationModeUnpaginated:
+ mode = WebCore::Pagination::Unpaginated;
+ break;
+ case _WKPaginationModeLeftToRight:
+ mode = WebCore::Pagination::LeftToRightPaginated;
+ break;
+ case _WKPaginationModeRightToLeft:
+ mode = WebCore::Pagination::RightToLeftPaginated;
+ break;
+ case _WKPaginationModeTopToBottom:
+ mode = WebCore::Pagination::TopToBottomPaginated;
+ break;
+ case _WKPaginationModeBottomToTop:
+ mode = WebCore::Pagination::BottomToTopPaginated;
+ break;
+ default:
+ return;
+ }
+
+ _page->setPaginationMode(mode);
+}
+
+- (BOOL)_paginationBehavesLikeColumns
+{
+ return _page->paginationBehavesLikeColumns();
+}
+
+- (void)_setPaginationBehavesLikeColumns:(BOOL)behavesLikeColumns
+{
+ _page->setPaginationBehavesLikeColumns(behavesLikeColumns);
+}
+
+- (CGFloat)_pageLength
+{
+ return _page->pageLength();
+}
+
+- (void)_setPageLength:(CGFloat)pageLength
+{
+ _page->setPageLength(pageLength);
+}
+
+- (CGFloat)_gapBetweenPages
+{
+ return _page->gapBetweenPages();
+}
+
+- (void)_setGapBetweenPages:(CGFloat)gapBetweenPages
+{
+ _page->setGapBetweenPages(gapBetweenPages);
+}
+
+- (NSUInteger)_pageCount
+{
+ return _page->pageCount();
+}
+
#pragma mark iOS-specific methods
#if PLATFORM(IOS)
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h (165816 => 165817)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h 2014-03-18 17:54:53 UTC (rev 165816)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h 2014-03-18 17:57:19 UTC (rev 165817)
@@ -32,6 +32,14 @@
_WKRenderingProgressEventFirstPaintWithSignificantArea = 1 << 2,
};
+typedef NS_ENUM(NSUInteger, _WKPaginationMode) {
+ _WKPaginationModeUnpaginated,
+ _WKPaginationModeLeftToRight,
+ _WKPaginationModeRightToLeft,
+ _WKPaginationModeTopToBottom,
+ _WKPaginationModeBottomToTop,
+};
+
@class WKBrowsingContextHandle;
@class WKRemoteObjectRegistry;
@protocol WKHistoryDelegatePrivate;
@@ -86,6 +94,15 @@
- (void)_runJavaScriptInMainFrame:(NSString *)scriptString;
+@property (nonatomic, setter=_setPaginationMode:) _WKPaginationMode _paginationMode;
+// Whether the column-break-{before,after} properties are respected instead of the
+// page-break-{before,after} properties.
+@property (nonatomic, setter=_setPaginationBehavesLikeColumns:) BOOL _paginationBehavesLikeColumns;
+// Set to 0 to have the page length equal the view length.
+@property (nonatomic, setter=_setPageLength:) CGFloat _pageLength;
+@property (nonatomic, setter=_setGapBetweenPages:) CGFloat _gapBetweenPages;
+@property (readonly) NSUInteger _pageCount;
+
@end
#endif
Modified: trunk/Tools/ChangeLog (165816 => 165817)
--- trunk/Tools/ChangeLog 2014-03-18 17:54:53 UTC (rev 165816)
+++ trunk/Tools/ChangeLog 2014-03-18 17:57:19 UTC (rev 165817)
@@ -1,3 +1,18 @@
+2014-03-17 Simon Fraser <[email protected]>
+
+ Renable pagination mode in WK2 MiniBrowser
+ https://bugs.webkit.org/show_bug.cgi?id=130374
+
+ Reviewed by Anders Carlsson.
+
+ Put the implementation of togglePaginationMode: back, and correctly
+ enable the menu item.
+
+ * MiniBrowser/mac/WK2BrowserWindowController.m:
+ (-[WK2BrowserWindowController validateMenuItem:]):
+ (-[WK2BrowserWindowController isPaginated]):
+ (-[WK2BrowserWindowController togglePaginationMode:]):
+
2014-03-18 Eva Balazsfalvi <[email protected]>
Add --reset option to Tools/Scripts/set-webkit-configuration script
Modified: trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m (165816 => 165817)
--- trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m 2014-03-18 17:54:53 UTC (rev 165816)
+++ trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m 2014-03-18 17:57:19 UTC (rev 165817)
@@ -118,14 +118,15 @@
|| action == @selector(toggleZoomMode:)
|| action == @selector(resetZoom:)
|| action == @selector(dumpSourceToConsole:)
- || action == @selector(find:)
- || action == @selector(togglePaginationMode:))
+ || action == @selector(find:))
return NO;
if (action == @selector(showHideWebView:))
[menuItem setTitle:[_webView isHidden] ? @"Show Web View" : @"Hide Web View"];
else if (action == @selector(removeReinsertWebView:))
[menuItem setTitle:[_webView window] ? @"Remove Web View" : @"Insert Web View"];
+ else if ([menuItem action] == @selector(togglePaginationMode:))
+ [menuItem setState:[self isPaginated] ? NSOnState : NSOffState];
else if ([menuItem action] == @selector(toggleTransparentWindow:))
[menuItem setState:[[self window] isOpaque] ? NSOffState : NSOnState];
else if ([menuItem action] == @selector(toggleUISideCompositing:))
@@ -170,10 +171,6 @@
{
}
-- (IBAction)togglePaginationMode:(id)sender
-{
-}
-
- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)item
{
SEL action = "" action];
@@ -248,6 +245,22 @@
[self setCurrentZoomFactor:factor];
}
+- (BOOL)isPaginated
+{
+ return _webView._paginationMode != _WKPaginationModeUnpaginated;
+}
+
+- (IBAction)togglePaginationMode:(id)sender
+{
+ if ([self isPaginated])
+ _webView._paginationMode = _WKPaginationModeUnpaginated;
+ else {
+ _webView._paginationMode = _WKPaginationModeLeftToRight;
+ _webView._pageLength = _webView.bounds.size.width / 2;
+ _webView._gapBetweenPages = 10;
+ }
+}
+
- (IBAction)toggleTransparentWindow:(id)sender
{
BOOL isTransparent = _webView._drawsTransparentBackground;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes