Changeset 165930 in webkit


Ignore:
Timestamp:
Mar 19, 2014, 4:44:39 PM (12 years ago)
Author:
Simon Fraser
Message:

Expose text and page zoom in WK2 SPI, and hook them up in MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=130476

Source/WebKit2:

Reviewed by Anders Carlsson.

Expose page and text zoom as SPI.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _supportsTextZoom]):
(-[WKWebView _textZoomFactor]):
(-[WKWebView _setTextZoomFactor:]):
(-[WKWebView _pageZoomFactor]):
(-[WKWebView _setPageZoomFactor:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:

Tools:

Reviewed by Anders Carlsson.

Hook up page/text zoom in MiniBrowser, make reload work, remove some logging.

  • MiniBrowser/mac/WK1BrowserWindowController.m:

(-[WK1BrowserWindowController webView:decidePolicyForNavigationAction:request:frame:decisionListener:]):
Remove log.

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController awakeFromNib]):
(-[WK2BrowserWindowController validateMenuItem:]):
(-[WK2BrowserWindowController reload:]):
Hook up reload.
(-[WK2BrowserWindowController toggleZoomMode:]):
(-[WK2BrowserWindowController resetZoom:]):
(-[WK2BrowserWindowController canResetZoom]):
(-[WK2BrowserWindowController currentZoomFactor]):
(-[WK2BrowserWindowController setCurrentZoomFactor:]):
(-[WK2BrowserWindowController canZoomIn]):
(-[WK2BrowserWindowController canZoomOut]):

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r165925 r165930  
     12014-03-19  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Expose text and page zoom in WK2 SPI, and hook them up in MiniBrowser
     4        https://bugs.webkit.org/show_bug.cgi?id=130476
     5
     6        Reviewed by Anders Carlsson.
     7       
     8        Expose page and text zoom as SPI.
     9
     10        * UIProcess/API/Cocoa/WKWebView.mm:
     11        (-[WKWebView _supportsTextZoom]):
     12        (-[WKWebView _textZoomFactor]):
     13        (-[WKWebView _setTextZoomFactor:]):
     14        (-[WKWebView _pageZoomFactor]):
     15        (-[WKWebView _setPageZoomFactor:]):
     16        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
     17
    1182014-03-19  Benjamin Poulain  <bpoulain@apple.com>
    219
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm

    r165925 r165930  
    10101010}
    10111011
     1012- (BOOL)_supportsTextZoom
     1013{
     1014    return _page->supportsTextZoom();
     1015}
     1016
     1017- (double)_textZoomFactor
     1018{
     1019    return _page->textZoomFactor();
     1020}
     1021
     1022- (void)_setTextZoomFactor:(double)zoomFactor
     1023{
     1024    _page->setTextZoomFactor(zoomFactor);
     1025}
     1026
     1027- (double)_pageZoomFactor
     1028{
     1029    return _page->pageZoomFactor();
     1030}
     1031
     1032- (void)_setPageZoomFactor:(double)zoomFactor
     1033{
     1034    _page->setPageZoomFactor(zoomFactor);
     1035}
     1036
    10121037#pragma mark iOS-specific methods
    10131038
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h

    r165872 r165930  
    108108@property (readonly) NSUInteger _pageCount;
    109109
     110@property (nonatomic, readonly) BOOL _supportsTextZoom;
     111@property (nonatomic, setter=_setTextZoomFactor:) double _textZoomFactor;
     112@property (nonatomic, setter=_setPageZoomFactor:) double _pageZoomFactor;
     113
    110114@end
    111115
  • trunk/Tools/ChangeLog

    r165899 r165930  
     12014-03-19  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Expose text and page zoom in WK2 SPI, and hook them up in MiniBrowser
     4        https://bugs.webkit.org/show_bug.cgi?id=130476
     5
     6        Reviewed by Anders Carlsson.
     7       
     8        Hook up page/text zoom in MiniBrowser, make reload work, remove some logging.
     9
     10        * MiniBrowser/mac/WK1BrowserWindowController.m:
     11        (-[WK1BrowserWindowController webView:decidePolicyForNavigationAction:request:frame:decisionListener:]):
     12        Remove log.
     13        * MiniBrowser/mac/WK2BrowserWindowController.m:
     14        (-[WK2BrowserWindowController awakeFromNib]):
     15        (-[WK2BrowserWindowController validateMenuItem:]):
     16        (-[WK2BrowserWindowController reload:]):
     17        Hook up reload.
     18        (-[WK2BrowserWindowController toggleZoomMode:]):
     19        (-[WK2BrowserWindowController resetZoom:]):
     20        (-[WK2BrowserWindowController canResetZoom]):
     21        (-[WK2BrowserWindowController currentZoomFactor]):
     22        (-[WK2BrowserWindowController setCurrentZoomFactor:]):
     23        (-[WK2BrowserWindowController canZoomIn]):
     24        (-[WK2BrowserWindowController canZoomOut]):
     25
    1262014-03-19  Alexey Proskuryakov  <ap@apple.com>
    227
  • trunk/Tools/MiniBrowser/mac/WK1BrowserWindowController.m

    r164624 r165930  
    261261- (void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id<WebPolicyDecisionListener>)listener
    262262{
    263     NSLog(@"request %@ actionInformation %@", request, actionInformation);
    264 
    265263    [listener use];
    266264}
  • trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m

    r165817 r165930  
    4343@implementation WK2BrowserWindowController {
    4444    WKWebView *_webView;
     45    BOOL _zoomTextOnly;
    4546}
    4647
     
    6364    _webView.navigationDelegate = self;
    6465    _webView.UIDelegate = self;
     66   
     67    _zoomTextOnly = NO;
    6568}
    6669
     
    115118   
    116119    // Disabled until missing WK2 functionality is exposed via API/SPI.
    117     if (action == @selector(reload:)
    118         || action == @selector(toggleZoomMode:)
    119         || action == @selector(resetZoom:)
    120         || action == @selector(dumpSourceToConsole:)
     120    if (action == @selector(dumpSourceToConsole:)
    121121        || action == @selector(find:))
    122122        return NO;
     
    126126    else if (action == @selector(removeReinsertWebView:))
    127127        [menuItem setTitle:[_webView window] ? @"Remove Web View" : @"Insert Web View"];
     128    else if (action == @selector(toggleZoomMode:))
     129        [menuItem setState:_zoomTextOnly ? NSOnState : NSOffState];
    128130    else if ([menuItem action] == @selector(togglePaginationMode:))
    129131        [menuItem setState:[self isPaginated] ? NSOnState : NSOffState];
     
    138140- (IBAction)reload:(id)sender
    139141{
     142    [_webView _reload];
    140143}
    141144
     
    157160- (IBAction)toggleZoomMode:(id)sender
    158161{
     162    if (_zoomTextOnly) {
     163        _zoomTextOnly = NO;
     164        double currentTextZoom = _webView._textZoomFactor;
     165        _webView._textZoomFactor = 1;
     166        _webView._pageZoomFactor = currentTextZoom;
     167    } else {
     168        _zoomTextOnly = YES;
     169        double currentPageZoom = _webView._pageZoomFactor;
     170        _webView._textZoomFactor = currentPageZoom;
     171        _webView._pageZoomFactor = 1;
     172    }
    159173}
    160174
    161175- (IBAction)resetZoom:(id)sender
    162176{
     177    if (![self canResetZoom])
     178        return;
     179
     180    if (_zoomTextOnly)
     181        _webView._textZoomFactor = 1;
     182    else
     183        _webView._pageZoomFactor = 1;
    163184}
    164185
    165186- (BOOL)canResetZoom
    166187{
    167     return NO;
     188    return _zoomTextOnly ? (_webView._textZoomFactor != 1) : (_webView._pageZoomFactor != 1);
    168189}
    169190
     
    211232- (CGFloat)currentZoomFactor
    212233{
    213     return 1;
     234    return _zoomTextOnly ? _webView._textZoomFactor : _webView._pageZoomFactor;
    214235}
    215236
    216237- (void)setCurrentZoomFactor:(CGFloat)factor
    217238{
     239    if (_zoomTextOnly)
     240        _webView._textZoomFactor = factor;
     241    else
     242        _webView._pageZoomFactor = factor;
    218243}
    219244
    220245- (BOOL)canZoomIn
    221246{
    222     return NO;
     247    return self.currentZoomFactor * DefaultZoomFactorRatio < DefaultMaximumZoomFactor;
    223248}
    224249
    225250- (void)zoomIn:(id)sender
    226251{
    227     if (![self canZoomIn])
    228         return;
    229 
    230     CGFloat factor = [self currentZoomFactor] * DefaultZoomFactorRatio;
    231     [self setCurrentZoomFactor:factor];
     252    if (!self.canZoomIn)
     253        return;
     254
     255    self.currentZoomFactor *= DefaultZoomFactorRatio;
    232256}
    233257
    234258- (BOOL)canZoomOut
    235259{
    236     return NO;
     260    return self.currentZoomFactor / DefaultZoomFactorRatio > DefaultMinimumZoomFactor;
    237261}
    238262
    239263- (void)zoomOut:(id)sender
    240264{
    241     if (![self canZoomIn])
    242         return;
    243 
    244     CGFloat factor = [self currentZoomFactor] / DefaultZoomFactorRatio;
    245     [self setCurrentZoomFactor:factor];
     265    if (!self.canZoomIn)
     266        return;
     267
     268    self.currentZoomFactor /= DefaultZoomFactorRatio;
    246269}
    247270
     
    253276- (IBAction)togglePaginationMode:(id)sender
    254277{
    255     if ([self isPaginated])
     278    if (self.isPaginated)
    256279        _webView._paginationMode = _WKPaginationModeUnpaginated;
    257280    else {
Note: See TracChangeset for help on using the changeset viewer.