<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[210796] trunk/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/210796">210796</a></dd>
<dt>Author</dt> <dd>aestes@apple.com</dd>
<dt>Date</dt> <dd>2017-01-16 19:53:57 -0800 (Mon, 16 Jan 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>[QuickLook] QLPreviewConverter should be owned by its delegate
https://bugs.webkit.org/show_bug.cgi?id=167104

Reviewed by Andreas Kling.

Instead of having QuickLookHandle own both the QLPreviewConverter and its delegate, have it
just own the delegate and have the delegate own the QLPreviewConverter.

No change in behavior. Covered by existing tests.

* loader/ios/QuickLook.h:
(WebCore::QuickLookHandle::converter): Moved out-of-line.
* loader/ios/QuickLook.mm: Renamed WebPreviewConverterDelegate to WebPreviewConverter, and
gave it ownership of the QLPreviewConverter, QuickLookHandleClient, and preview response.
(-[WebPreviewConverter initWithResourceLoader:resourceResponse:quickLookHandle:]):
Added a ResourceResponse parameter.
(-[WebPreviewConverter setClient:]): Moved from QuickLookHandle::setClient().
(-[WebPreviewConverter appendDataArray:]): Moved from QuickLookHandle::didReceiveDataArray().
(-[WebPreviewConverter finishedAppending]): Moved from QuickLookHandle::didFinishLoading().
(-[WebPreviewConverter failed]): Moved from QuickLookHandle::didFail().
(-[WebPreviewConverter platformConverter]): Added to return the QLPreviewConverter.
(-[WebPreviewConverter _sendDidReceiveResponseIfNecessary]): Used _previewResponse directly.
(WebCore::QuickLookHandle::~QuickLookHandle): Removed unneeded logging.
(WebCore::QuickLookHandle::didReceiveData): Called -[WebPreviewConverter appendDataArray:].
(WebCore::QuickLookHandle::didReceiveBuffer): Ditto.
(WebCore::QuickLookHandle::didFinishLoading): Called -[WebPreviewConverter finishedAppending].
(WebCore::QuickLookHandle::didFail): Called -[WebPreviewConverter failed].
(WebCore::QuickLookHandle::setClient): Called -[WebPreviewConverter setClient:].
(WebCore::QuickLookHandle::previewFileName): Retrieved the QLPreviewConverter via
-[WebPreviewConverter platformConverter].
(WebCore::QuickLookHandle::previewUTI): Ditto.
(WebCore::QuickLookHandle::previewRequestURL): Ditto.
(WebCore::QuickLookHandle::converter): Ditto.
(WebCore::QuickLookHandle::didReceiveDataArray): Deleted.
(WebCore::QuickLookHandle::previewResponse): Deleted.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreloaderiosQuickLookh">trunk/Source/WebCore/loader/ios/QuickLook.h</a></li>
<li><a href="#trunkSourceWebCoreloaderiosQuickLookmm">trunk/Source/WebCore/loader/ios/QuickLook.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (210795 => 210796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-01-17 03:47:43 UTC (rev 210795)
+++ trunk/Source/WebCore/ChangeLog        2017-01-17 03:53:57 UTC (rev 210796)
</span><span class="lines">@@ -1,3 +1,41 @@
</span><ins>+2017-01-16  Andy Estes  &lt;aestes@apple.com&gt;
+
+        [QuickLook] QLPreviewConverter should be owned by its delegate
+        https://bugs.webkit.org/show_bug.cgi?id=167104
+
+        Reviewed by Andreas Kling.
+        
+        Instead of having QuickLookHandle own both the QLPreviewConverter and its delegate, have it
+        just own the delegate and have the delegate own the QLPreviewConverter.
+
+        No change in behavior. Covered by existing tests.
+
+        * loader/ios/QuickLook.h:
+        (WebCore::QuickLookHandle::converter): Moved out-of-line.
+        * loader/ios/QuickLook.mm: Renamed WebPreviewConverterDelegate to WebPreviewConverter, and
+        gave it ownership of the QLPreviewConverter, QuickLookHandleClient, and preview response.
+        (-[WebPreviewConverter initWithResourceLoader:resourceResponse:quickLookHandle:]):
+        Added a ResourceResponse parameter.
+        (-[WebPreviewConverter setClient:]): Moved from QuickLookHandle::setClient().
+        (-[WebPreviewConverter appendDataArray:]): Moved from QuickLookHandle::didReceiveDataArray().
+        (-[WebPreviewConverter finishedAppending]): Moved from QuickLookHandle::didFinishLoading().
+        (-[WebPreviewConverter failed]): Moved from QuickLookHandle::didFail().
+        (-[WebPreviewConverter platformConverter]): Added to return the QLPreviewConverter.
+        (-[WebPreviewConverter _sendDidReceiveResponseIfNecessary]): Used _previewResponse directly.
+        (WebCore::QuickLookHandle::~QuickLookHandle): Removed unneeded logging.
+        (WebCore::QuickLookHandle::didReceiveData): Called -[WebPreviewConverter appendDataArray:].
+        (WebCore::QuickLookHandle::didReceiveBuffer): Ditto.
+        (WebCore::QuickLookHandle::didFinishLoading): Called -[WebPreviewConverter finishedAppending].
+        (WebCore::QuickLookHandle::didFail): Called -[WebPreviewConverter failed].
+        (WebCore::QuickLookHandle::setClient): Called -[WebPreviewConverter setClient:].
+        (WebCore::QuickLookHandle::previewFileName): Retrieved the QLPreviewConverter via
+        -[WebPreviewConverter platformConverter].
+        (WebCore::QuickLookHandle::previewUTI): Ditto.
+        (WebCore::QuickLookHandle::previewRequestURL): Ditto.
+        (WebCore::QuickLookHandle::converter): Ditto.
+        (WebCore::QuickLookHandle::didReceiveDataArray): Deleted.
+        (WebCore::QuickLookHandle::previewResponse): Deleted.
+
</ins><span class="cx"> 2017-01-16  Antti Koivisto  &lt;antti@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         CrashTracer: com.apple.WebKit.WebContent at JavaScriptCore: WTF::StringImpl::containsOnlyWhitespace
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderiosQuickLookh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/ios/QuickLook.h (210795 => 210796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/ios/QuickLook.h        2017-01-17 03:47:43 UTC (rev 210795)
+++ trunk/Source/WebCore/loader/ios/QuickLook.h        2017-01-17 03:53:57 UTC (rev 210796)
</span><span class="lines">@@ -29,7 +29,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &lt;objc/objc.h&gt;
</span><span class="cx"> #include &lt;wtf/Forward.h&gt;
</span><del>-#include &lt;wtf/Ref.h&gt;
</del><span class="cx"> #include &lt;wtf/RetainPtr.h&gt;
</span><span class="cx"> 
</span><span class="cx"> OBJC_CLASS NSArray;
</span><span class="lines">@@ -41,7 +40,7 @@
</span><span class="cx"> OBJC_CLASS NSURLRequest;
</span><span class="cx"> OBJC_CLASS NSURLResponse;
</span><span class="cx"> OBJC_CLASS QLPreviewConverter;
</span><del>-OBJC_CLASS WebPreviewConverterDelegate;
</del><ins>+OBJC_CLASS WebPreviewConverter;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -87,21 +86,15 @@
</span><span class="cx">     WEBCORE_EXPORT String previewFileName() const;
</span><span class="cx">     WEBCORE_EXPORT String previewUTI() const;
</span><span class="cx">     WEBCORE_EXPORT NSURL *previewRequestURL() const;
</span><del>-    NSURLResponse *previewResponse() const;
</del><ins>+    WEBCORE_EXPORT QLPreviewConverter *converter() const;
</ins><span class="cx">     NSURL *firstRequestURL() const { return m_firstRequestURL.get(); }
</span><del>-    QLPreviewConverter *converter() const { return m_converter.get(); }
</del><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     friend std::unique_ptr&lt;QuickLookHandle&gt; std::make_unique&lt;QuickLookHandle&gt;(ResourceLoader&amp;, const ResourceResponse&amp;);
</span><span class="cx">     QuickLookHandle(ResourceLoader&amp;, const ResourceResponse&amp;);
</span><span class="cx"> 
</span><del>-    void didReceiveDataArray(NSArray *);
-
</del><span class="cx">     RetainPtr&lt;NSURL&gt; m_firstRequestURL;
</span><del>-    RetainPtr&lt;WebPreviewConverterDelegate&gt; m_delegate;
-    RetainPtr&lt;QLPreviewConverter&gt; m_converter;
-    RetainPtr&lt;NSURLResponse&gt; m_previewResponse;
-    Ref&lt;QuickLookHandleClient&gt; m_client;
</del><ins>+    RetainPtr&lt;WebPreviewConverter&gt; m_converter;
</ins><span class="cx">     bool m_finishedLoadingDataIntoConverter { false };
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderiosQuickLookmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/ios/QuickLook.mm (210795 => 210796)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/ios/QuickLook.mm        2017-01-17 03:47:43 UTC (rev 210795)
+++ trunk/Source/WebCore/loader/ios/QuickLook.mm        2017-01-17 03:53:57 UTC (rev 210796)
</span><span class="lines">@@ -178,17 +178,35 @@
</span><span class="cx">     return previewProtocol.get().data();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-@interface WebPreviewConverterDelegate : NSObject {
</del><ins>+static QuickLookHandleClient&amp; emptyClient()
+{
+    static NeverDestroyed&lt;QuickLookHandleClient&gt; emptyClient;
+    return emptyClient.get();
+}
+
+@interface WebPreviewConverter : NSObject {
</ins><span class="cx">     RefPtr&lt;ResourceLoader&gt; _resourceLoader;
</span><del>-    QuickLookHandle* _quickLookHandle;
</del><ins>+    QuickLookHandle* _handle;
+    RefPtr&lt;QuickLookHandleClient&gt; _client;
+    RetainPtr&lt;QLPreviewConverter&gt; _platformConverter;
+    RetainPtr&lt;NSURLResponse&gt; _previewResponse;
</ins><span class="cx">     BOOL _hasSentDidReceiveResponse;
</span><span class="cx">     BOOL _hasFailed;
</span><span class="cx"> }
</span><ins>+
+- (instancetype)initWithResourceLoader:(ResourceLoader&amp;)resourceLoader resourceResponse:(const ResourceResponse&amp;)resourceResponse quickLookHandle:(QuickLookHandle&amp;)quickLookHandle;
+- (void)setClient:(Ref&lt;QuickLookHandleClient&gt;&amp;&amp;)client;
+- (void)appendDataArray:(NSArray&lt;NSData *&gt; *)dataArray;
+- (void)finishedAppending;
+- (void)failed;
+
+@property (nonatomic, readonly) QLPreviewConverter *platformConverter;
+
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><del>-@implementation WebPreviewConverterDelegate
</del><ins>+@implementation WebPreviewConverter
</ins><span class="cx"> 
</span><del>-- (id)initWithResourceLoader:(ResourceLoader&amp;)resourceLoader quickLookHandle:(QuickLookHandle&amp;)quickLookHandle
</del><ins>+- (instancetype)initWithResourceLoader:(ResourceLoader&amp;)resourceLoader resourceResponse:(const ResourceResponse&amp;)resourceResponse quickLookHandle:(QuickLookHandle&amp;)quickLookHandle
</ins><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="cx">     if (!self)
</span><span class="lines">@@ -195,10 +213,46 @@
</span><span class="cx">         return nil;
</span><span class="cx"> 
</span><span class="cx">     _resourceLoader = &amp;resourceLoader;
</span><del>-    _quickLookHandle = &amp;quickLookHandle;
</del><ins>+    _handle = &amp;quickLookHandle;
+    _client = &amp;emptyClient();
+    _platformConverter = adoptNS([allocQLPreviewConverterInstance() initWithConnection:nil delegate:self response:resourceResponse.nsURLResponse() options:nil]);
+    _previewResponse = [_platformConverter previewResponse];
+
+    LOG(Network, &quot;WebPreviewConverter created with preview file name \&quot;%s\&quot;.&quot;, [_platformConverter previewFileName]);
</ins><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (void)setClient:(Ref&lt;QuickLookHandleClient&gt;&amp;&amp;)client
+{
+    _client = WTFMove(client);
+}
+
+- (void)appendDataArray:(NSArray&lt;NSData *&gt; *)dataArray
+{
+    LOG(Network, &quot;WebPreviewConverter appending data array with count %ld.&quot;, dataArray.count);
+    [_platformConverter appendDataArray:dataArray];
+    _client-&gt;didReceiveDataArray((CFArrayRef)dataArray);
+}
+
+- (void)finishedAppending
+{
+    LOG(Network, &quot;WebPreviewConverter finished appending data.&quot;);
+    [_platformConverter finishedAppendingData];
+    _client-&gt;didFinishLoading();
+}
+
+- (void)failed
+{
+    LOG(Network, &quot;WebPreviewConverter failed.&quot;);
+    [_platformConverter finishConverting];
+    _client-&gt;didFail();
+}
+
+- (QLPreviewConverter *)platformConverter
+{
+    return _platformConverter.get();
+}
+
</ins><span class="cx"> - (void)_sendDidReceiveResponseIfNecessary
</span><span class="cx"> {
</span><span class="cx">     if (_hasSentDidReceiveResponse || _hasFailed)
</span><span class="lines">@@ -206,14 +260,13 @@
</span><span class="cx"> 
</span><span class="cx">     // QuickLook might fail to convert a document without calling connection:didFailWithError: (see &lt;rdar://problem/17927972&gt;).
</span><span class="cx">     // A nil MIME type is an indication of such a failure, so stop loading the resource and ignore subsequent delegate messages.
</span><del>-    NSURLResponse *previewResponse = _quickLookHandle-&gt;previewResponse();
-    if (!previewResponse.MIMEType) {
</del><ins>+    if (![_previewResponse MIMEType]) {
</ins><span class="cx">         _hasFailed = YES;
</span><span class="cx">         _resourceLoader-&gt;didFail(_resourceLoader-&gt;cannotShowURLError());
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ResourceResponse response { previewResponse };
</del><ins>+    ResourceResponse response { _previewResponse.get() };
</ins><span class="cx">     response.setIsQuickLook(true);
</span><span class="cx"> 
</span><span class="cx">     _hasSentDidReceiveResponse = YES;
</span><span class="lines">@@ -273,23 +326,17 @@
</span><span class="cx">     return success ? uniqueContentPath : nil;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static inline QuickLookHandleClient&amp; emptyClient()
-{
-    static auto&amp; emptyClient = adoptRef(*new QuickLookHandleClient()).leakRef();
-    return emptyClient;
-}
-
</del><span class="cx"> QuickLookHandle::QuickLookHandle(ResourceLoader&amp; loader, const ResourceResponse&amp; response)
</span><span class="cx">     : m_firstRequestURL { loader.originalRequest().nsURLRequest(DoNotUpdateHTTPBody).URL }
</span><del>-    , m_delegate { adoptNS([[WebPreviewConverterDelegate alloc] initWithResourceLoader:loader quickLookHandle:*this]) }
-    , m_converter { adoptNS([allocQLPreviewConverterInstance() initWithConnection:nil delegate:m_delegate.get() response:response.nsURLResponse() options:nil]) }
-    , m_previewResponse { [m_converter previewResponse] }
-    , m_client { emptyClient() }
</del><ins>+    , m_converter { adoptNS([[WebPreviewConverter alloc] initWithResourceLoader:loader resourceResponse:response quickLookHandle:*this]) }
</ins><span class="cx"> {
</span><del>-    LOG(Network, &quot;QuickLookHandle::QuickLookHandle() - previewFileName: %s&quot;, [m_converter previewFileName]);
</del><span class="cx">     loader.didCreateQuickLookHandle(*this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+QuickLookHandle::~QuickLookHandle()
+{
+}
+
</ins><span class="cx"> bool QuickLookHandle::shouldCreateForMIMEType(const String&amp; mimeType)
</span><span class="cx"> {
</span><span class="cx">     return [QLPreviewGetSupportedMIMETypesSet() containsObject:mimeType];
</span><span class="lines">@@ -306,7 +353,7 @@
</span><span class="cx">     if (m_finishedLoadingDataIntoConverter)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    didReceiveDataArray(@[ [NSData dataWithBytes:data length:length] ]);
</del><ins>+    [m_converter appendDataArray:@[ [NSData dataWithBytes:data length:length] ]];
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -315,66 +362,49 @@
</span><span class="cx">     if (m_finishedLoadingDataIntoConverter)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    didReceiveDataArray(buffer.createNSDataArray().get());
</del><ins>+    [m_converter appendDataArray:buffer.createNSDataArray().get()];
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void QuickLookHandle::didReceiveDataArray(NSArray *dataArray)
-{
-    ASSERT(!m_finishedLoadingDataIntoConverter);
-    LOG(Network, &quot;QuickLookHandle::didReceiveDataArray()&quot;);
-    [m_converter appendDataArray:dataArray];
-    m_client-&gt;didReceiveDataArray((CFArrayRef)dataArray);
-}
-
</del><span class="cx"> bool QuickLookHandle::didFinishLoading()
</span><span class="cx"> {
</span><span class="cx">     if (m_finishedLoadingDataIntoConverter)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    LOG(Network, &quot;QuickLookHandle::didFinishLoading()&quot;);
</del><span class="cx">     m_finishedLoadingDataIntoConverter = true;
</span><del>-    [m_converter finishedAppendingData];
-    m_client-&gt;didFinishLoading();
</del><ins>+    [m_converter finishedAppending];
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void QuickLookHandle::didFail()
</span><span class="cx"> {
</span><del>-    LOG(Network, &quot;QuickLookHandle::didFail()&quot;);
-    m_client-&gt;didFail();
-    [m_converter finishConverting];
</del><ins>+    [m_converter failed];
</ins><span class="cx">     m_converter = nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void QuickLookHandle::setClient(Ref&lt;QuickLookHandleClient&gt;&amp;&amp; client)
</span><span class="cx"> {
</span><del>-    m_client = WTFMove(client);
</del><ins>+    [m_converter setClient:WTFMove(client)];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-QuickLookHandle::~QuickLookHandle()
-{
-    LOG(Network, &quot;QuickLookHandle::~QuickLookHandle()&quot;);
-}
-
</del><span class="cx"> String QuickLookHandle::previewFileName() const
</span><span class="cx"> {
</span><del>-    return [m_converter previewFileName];
</del><ins>+    return [m_converter platformConverter].previewFileName;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String QuickLookHandle::previewUTI() const
</span><span class="cx"> {
</span><del>-    return [m_converter previewUTI];
</del><ins>+    return [m_converter platformConverter].previewUTI;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> NSURL *QuickLookHandle::previewRequestURL() const
</span><span class="cx"> {
</span><del>-    return [m_converter previewRequest].URL;
</del><ins>+    return [m_converter platformConverter].previewRequest.URL;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-NSURLResponse *QuickLookHandle::previewResponse() const
</del><ins>+QLPreviewConverter *QuickLookHandle::converter() const
</ins><span class="cx"> {
</span><del>-    return m_previewResponse.get();
</del><ins>+    return [m_converter platformConverter];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre>
</div>
</div>

</body>
</html>