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

Reply via email to