Changeset 251956 in webkit


Ignore:
Timestamp:
Nov 1, 2019 5:13:04 PM (4 years ago)
Author:
beidson@apple.com
Message:

Promote "_getWebArchive" to API.
<rdar://problem/17317547> and https://bugs.webkit.org/show_bug.cgi?id=203767

Reviewed by Andy Estes.

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebView.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView createWebArchiveDataWithCompletionHandler:]):
(-[WKWebView _getWebArchiveDataWithCompletionHandler:]):

Tools:

  • MiniBrowser/mac/BrowserWindowController.h:
  • MiniBrowser/mac/BrowserWindowController.m:

(-[BrowserWindowController saveAsPDF:]):
(-[BrowserWindowController saveAsWebArchive:]):

  • MiniBrowser/mac/MainMenu.xib:
  • MiniBrowser/mac/WK1BrowserWindowController.m:

(-[WK1BrowserWindowController validateMenuItem:]):

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController validateMenuItem:]):
(-[WK2BrowserWindowController saveAsWebArchive:]):

Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r251952 r251956  
     12019-11-01  Brady Eidson  <beidson@apple.com>
     2
     3        Promote "_getWebArchive" to API.
     4        <rdar://problem/17317547> and https://bugs.webkit.org/show_bug.cgi?id=203767
     5
     6        Reviewed by Andy Estes.
     7
     8        * UIProcess/API/Cocoa/WKWebView.h:
     9        * UIProcess/API/Cocoa/WKWebView.mm:
     10        (-[WKWebView createWebArchiveDataWithCompletionHandler:]):
     11        (-[WKWebView _getWebArchiveDataWithCompletionHandler:]):
     12
    1132019-11-01  Brady Eidson  <beidson@apple.com>
    214
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.h

    r251673 r251956  
    244244- (void)createPDFWithConfiguration:(nullable WKPDFConfiguration *)pdfConfiguration completionHandler:(void (^)(NSData * _Nullable pdfDocumentData, NSError * _Nullable error))completionHandler NS_REFINED_FOR_SWIFT WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
    245245
     246/* @abstract Create WebKit web archive data representing the current web content of the WKWebView
     247@param completionHandler A block to invoke when the web archive data is ready.
     248@discussion WebKit web archive data represents a snapshot of web content.
     249It can be used to represent web content on a pasteboard, loaded into a WKWebView directly, and saved to a file for later use.
     250The uniform type identifier kUTTypeWebArchive can be used get the related pasteboard type and MIME type.
     251*/
     252- (void)createWebArchiveDataWithCompletionHandler:(void (^)(NSData *, NSError *))completionHandler NS_REFINED_FOR_SWIFT WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
     253
    246254/*! @abstract A Boolean value indicating whether horizontal swipe gestures
    247255 will trigger back-forward list navigations.
  • trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm

    r251896 r251956  
    47214721}
    47224722
     4723- (void)createWebArchiveDataWithCompletionHandler:(void (^)(NSData *, NSError *))completionHandler
     4724{
     4725    auto handler = adoptNS([completionHandler copy]);
     4726
     4727    _page->getWebArchiveOfFrame(_page->mainFrame(), [handler](API::Data* data, WebKit::CallbackBase::Error error) {
     4728        void (^completionHandlerBlock)(NSData *, NSError *) = (void (^)(NSData *, NSError *))handler.get();
     4729        if (error != WebKit::CallbackBase::Error::None) {
     4730            // FIXME: Pipe a proper error in from the WebPageProxy.
     4731            completionHandlerBlock(nil, [NSError errorWithDomain:WKErrorDomain code:static_cast<int>(error) userInfo:nil]);
     4732        } else
     4733            completionHandlerBlock(wrapper(*data), nil);
     4734    });
     4735}
     4736
    47234737@end
    47244738
     
    54855499- (void)_getWebArchiveDataWithCompletionHandler:(void (^)(NSData *, NSError *))completionHandler
    54865500{
    5487     auto handler = adoptNS([completionHandler copy]);
    5488 
    5489     _page->getWebArchiveOfFrame(_page->mainFrame(), [handler](API::Data* data, WebKit::CallbackBase::Error error) {
    5490         void (^completionHandlerBlock)(NSData *, NSError *) = (void (^)(NSData *, NSError *))handler.get();
    5491         if (error != WebKit::CallbackBase::Error::None) {
    5492             // FIXME: Pipe a proper error in from the WebPageProxy.
    5493             completionHandlerBlock(nil, [NSError errorWithDomain:WKErrorDomain code:static_cast<int>(error) userInfo:nil]);
    5494         } else
    5495             completionHandlerBlock(wrapper(*data), nil);
    5496     });
     5501    [self createWebArchiveDataWithCompletionHandler:completionHandler];
    54975502}
    54985503
  • trunk/Tools/ChangeLog

    r251955 r251956  
     12019-11-01  Brady Eidson  <beidson@apple.com>
     2
     3        Promote "_getWebArchive" to API.
     4        <rdar://problem/17317547> and https://bugs.webkit.org/show_bug.cgi?id=203767
     5
     6        Reviewed by Andy Estes.
     7
     8        * MiniBrowser/mac/BrowserWindowController.h:
     9        * MiniBrowser/mac/BrowserWindowController.m:
     10        (-[BrowserWindowController saveAsPDF:]):
     11        (-[BrowserWindowController saveAsWebArchive:]):
     12        * MiniBrowser/mac/MainMenu.xib:
     13        * MiniBrowser/mac/WK1BrowserWindowController.m:
     14        (-[WK1BrowserWindowController validateMenuItem:]):
     15        * MiniBrowser/mac/WK2BrowserWindowController.m:
     16        (-[WK2BrowserWindowController validateMenuItem:]):
     17        (-[WK2BrowserWindowController saveAsWebArchive:]):
     18
    1192019-11-01  Jonathan Bedard  <jbedard@apple.com>
    220
  • trunk/Tools/MiniBrowser/mac/BrowserWindowController.h

    r249739 r251956  
    4848
    4949- (IBAction)saveAsPDF:(id)sender;
     50- (IBAction)saveAsWebArchive:(id)sender;
    5051
    5152- (IBAction)fetch:(id)sender;
  • trunk/Tools/MiniBrowser/mac/BrowserWindowController.m

    r249739 r251956  
    9999}
    100100
     101- (IBAction)saveAsWebArchive:(id)sender
     102{
     103    [self doesNotRecognizeSelector:_cmd];
     104}
     105
    101106- (IBAction)goBack:(id)sender
    102107{
  • trunk/Tools/MiniBrowser/mac/MainMenu.xib

    r249739 r251956  
    11<?xml version="1.0" encoding="UTF-8"?>
    2 <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
     2<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14854.2" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
    33    <dependencies>
    4         <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
     4        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14854.2"/>
    55    </dependencies>
    66    <objects>
     
    140140                                </connections>
    141141                            </menuItem>
    142                             <menuItem title="Revert to Saved" id="112">
    143                                 <modifierMask key="keyEquivalentModifierMask"/>
    144                                 <connections>
    145                                     <action selector="revertDocumentToSaved:" target="-1" id="364"/>
     142                            <menuItem title="Save As WebArchive..." id="112">
     143                                <modifierMask key="keyEquivalentModifierMask"/>
     144                                <connections>
     145                                    <action selector="saveAsWebArchive:" target="-1" id="AGx-3e-6Nt"/>
     146                                </connections>
     147                            </menuItem>
     148                            <menuItem title="Revert to Saved" id="nek-8q-bdB">
     149                                <modifierMask key="keyEquivalentModifierMask"/>
     150                                <connections>
     151                                    <action selector="revertDocumentToSaved:" target="-1" id="7iJ-l6-TWs"/>
    146152                                </connections>
    147153                            </menuItem>
     
    887893                </menuItem>
    888894            </items>
     895            <point key="canvasLocation" x="139" y="-50"/>
    889896        </menu>
    890897        <customObject id="494" customClass="BrowserAppDelegate">
  • trunk/Tools/MiniBrowser/mac/WK1BrowserWindowController.m

    r249739 r251956  
    137137    if (action == @selector(saveAsPDF:))
    138138        return NO;
     139    if (action == @selector(saveAsWebArchive:))
     140        return NO;
    139141
    140142    if (action == @selector(zoomIn:))
  • trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m

    r251673 r251956  
    209209
    210210    if (action == @selector(saveAsPDF:))
     211        return YES;
     212    if (action == @selector(saveAsWebArchive:))
    211213        return YES;
    212214
     
    831833}
    832834
     835- (IBAction)saveAsWebArchive:(id)sender
     836{
     837    NSSavePanel *panel = [NSSavePanel savePanel];
     838    panel.allowedFileTypes = @[ @"webarchive" ];
     839    [panel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) {
     840        if (result == NSModalResponseOK) {
     841            [_webView createWebArchiveDataWithCompletionHandler:^(NSData *archiveData, NSError *error) {
     842                [archiveData writeToURL:[panel URL] options:0 error:nil];
     843            }];
     844        }
     845    }];
     846}
     847
    833848@end
Note: See TracChangeset for help on using the changeset viewer.