Title: [287053] trunk/Source/WebCore
Revision
287053
Author
[email protected]
Date
2021-12-14 15:04:49 -0800 (Tue, 14 Dec 2021)

Log Message

Make PreviewConverterProvider not modify the SharedBuffer once returned
https://bugs.webkit.org/show_bug.cgi?id=233923
rdar://problem/86149850

Reviewed by Youenn Fablet.

Covered by existing API tests.

* loader/ios/LegacyPreviewLoader.h:
* loader/ios/LegacyPreviewLoader.mm:
(WebCore::LegacyPreviewLoader::previewConverterDidStartConverting):
(WebCore::LegacyPreviewLoader::provideMainResourceForPreviewConverter):
* platform/PreviewConverter.cpp:
(WebCore::PreviewConverter::updateMainResource):
* platform/PreviewConverterProvider.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (287052 => 287053)


--- trunk/Source/WebCore/ChangeLog	2021-12-14 23:00:28 UTC (rev 287052)
+++ trunk/Source/WebCore/ChangeLog	2021-12-14 23:04:49 UTC (rev 287053)
@@ -1,3 +1,21 @@
+2021-12-14  Jean-Yves Avenard  <[email protected]>
+
+        Make PreviewConverterProvider not modify the SharedBuffer once returned
+        https://bugs.webkit.org/show_bug.cgi?id=233923
+        rdar://problem/86149850
+
+        Reviewed by Youenn Fablet.
+
+        Covered by existing API tests.
+
+        * loader/ios/LegacyPreviewLoader.h:
+        * loader/ios/LegacyPreviewLoader.mm:
+        (WebCore::LegacyPreviewLoader::previewConverterDidStartConverting):
+        (WebCore::LegacyPreviewLoader::provideMainResourceForPreviewConverter):
+        * platform/PreviewConverter.cpp:
+        (WebCore::PreviewConverter::updateMainResource):
+        * platform/PreviewConverterProvider.h:
+
 2021-12-14  Basuke Suzuki  <[email protected]>
 
         [Playstation] Fix build break after r286908

Modified: trunk/Source/WebCore/loader/ios/LegacyPreviewLoader.h (287052 => 287053)


--- trunk/Source/WebCore/loader/ios/LegacyPreviewLoader.h	2021-12-14 23:00:28 UTC (rev 287052)
+++ trunk/Source/WebCore/loader/ios/LegacyPreviewLoader.h	2021-12-14 23:04:49 UTC (rev 287053)
@@ -65,7 +65,7 @@
     void previewConverterDidFailConverting(PreviewConverter&) final;
 
     // PreviewConverterProvider
-    void provideMainResourceForPreviewConverter(PreviewConverter&, CompletionHandler<void(const FragmentedSharedBuffer*)>&&) final;
+    void provideMainResourceForPreviewConverter(PreviewConverter&, CompletionHandler<void(Ref<FragmentedSharedBuffer>&&)>&&) final;
     void providePasswordForPreviewConverter(PreviewConverter&, CompletionHandler<void(const String&)>&&) final;
 
     RefPtr<PreviewConverter> m_converter;

Modified: trunk/Source/WebCore/loader/ios/LegacyPreviewLoader.mm (287052 => 287053)


--- trunk/Source/WebCore/loader/ios/LegacyPreviewLoader.mm	2021-12-14 23:00:28 UTC (rev 287052)
+++ trunk/Source/WebCore/loader/ios/LegacyPreviewLoader.mm	2021-12-14 23:04:49 UTC (rev 287053)
@@ -109,7 +109,7 @@
         return;
 
     ASSERT(!m_hasProcessedResponse);
-    m_originalData.empty();
+    m_originalData.reset();
     resourceLoader->documentLoader()->setPreviewConverter(WTFMove(m_converter));
     auto response { converter.previewResponse() };
 
@@ -224,10 +224,10 @@
     m_client->didRequestPassword(WTFMove(completionHandler));
 }
 
-void LegacyPreviewLoader::provideMainResourceForPreviewConverter(PreviewConverter& converter, CompletionHandler<void(const FragmentedSharedBuffer*)>&& completionHandler)
+void LegacyPreviewLoader::provideMainResourceForPreviewConverter(PreviewConverter& converter, CompletionHandler<void(Ref<FragmentedSharedBuffer>&&)>&& completionHandler)
 {
     ASSERT_UNUSED(converter, &converter == m_converter);
-    completionHandler(m_originalData.get().get());
+    completionHandler(m_originalData.copy());
 }
 
 LegacyPreviewLoader::~LegacyPreviewLoader() = default;
@@ -235,7 +235,6 @@
 LegacyPreviewLoader::LegacyPreviewLoader(ResourceLoader& loader, const ResourceResponse& response)
     : m_converter { PreviewConverter::create(response, *this) }
     , m_client { makeClient(loader, m_converter->previewFileName(), m_converter->previewUTI()) }
-    , m_originalData { FragmentedSharedBuffer::create() }
     , m_resourceLoader { loader }
     , m_shouldDecidePolicyBeforeLoading { loader.frame()->settings().shouldDecidePolicyBeforeLoadingQuickLookPreview() }
 {

Modified: trunk/Source/WebCore/platform/PreviewConverter.cpp (287052 => 287053)


--- trunk/Source/WebCore/platform/PreviewConverter.cpp	2021-12-14 23:00:28 UTC (rev 287052)
+++ trunk/Source/WebCore/platform/PreviewConverter.cpp	2021-12-14 23:04:49 UTC (rev 287053)
@@ -81,11 +81,8 @@
         return;
     }
 
-    provider->provideMainResourceForPreviewConverter(*this, [this, protectedThis = Ref { *this }](auto buffer) {
-        if (buffer)
-            appendFromBuffer(*buffer);
-        else
-            didFailUpdating();
+    provider->provideMainResourceForPreviewConverter(*this, [this, protectedThis = Ref { *this }](auto&& buffer) {
+        appendFromBuffer(WTFMove(buffer));
     });
 }
 

Modified: trunk/Source/WebCore/platform/PreviewConverterProvider.h (287052 => 287053)


--- trunk/Source/WebCore/platform/PreviewConverterProvider.h	2021-12-14 23:00:28 UTC (rev 287052)
+++ trunk/Source/WebCore/platform/PreviewConverterProvider.h	2021-12-14 23:04:49 UTC (rev 287053)
@@ -32,7 +32,7 @@
 struct PreviewConverterProvider : CanMakeWeakPtr<PreviewConverterProvider> {
     virtual ~PreviewConverterProvider() = default;
 
-    virtual void provideMainResourceForPreviewConverter(PreviewConverter&, CompletionHandler<void(const FragmentedSharedBuffer*)>&&) = 0;
+    virtual void provideMainResourceForPreviewConverter(PreviewConverter&, CompletionHandler<void(Ref<FragmentedSharedBuffer>&&)>&&) = 0;
     virtual void providePasswordForPreviewConverter(PreviewConverter&, CompletionHandler<void(const String&)>&&) = 0;
 };
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to