⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 287053 in webkit


Ignore:
Timestamp:
Dec 14, 2021, 3:04:49 PM (5 years ago)
Author:
Jean-Yves Avenard
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:
Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r287051 r287053  
     12021-12-14  Jean-Yves Avenard  <jya@apple.com>
     2
     3        Make PreviewConverterProvider not modify the SharedBuffer once returned
     4        https://bugs.webkit.org/show_bug.cgi?id=233923
     5        rdar://problem/86149850
     6
     7        Reviewed by Youenn Fablet.
     8
     9        Covered by existing API tests.
     10
     11        * loader/ios/LegacyPreviewLoader.h:
     12        * loader/ios/LegacyPreviewLoader.mm:
     13        (WebCore::LegacyPreviewLoader::previewConverterDidStartConverting):
     14        (WebCore::LegacyPreviewLoader::provideMainResourceForPreviewConverter):
     15        * platform/PreviewConverter.cpp:
     16        (WebCore::PreviewConverter::updateMainResource):
     17        * platform/PreviewConverterProvider.h:
     18
    1192021-12-14  Basuke Suzuki  <basuke.suzuki@sony.com>
    220
  • trunk/Source/WebCore/loader/ios/LegacyPreviewLoader.h

    r287021 r287053  
    6666
    6767    // PreviewConverterProvider
    68     void provideMainResourceForPreviewConverter(PreviewConverter&, CompletionHandler<void(const FragmentedSharedBuffer*)>&&) final;
     68    void provideMainResourceForPreviewConverter(PreviewConverter&, CompletionHandler<void(Ref<FragmentedSharedBuffer>&&)>&&) final;
    6969    void providePasswordForPreviewConverter(PreviewConverter&, CompletionHandler<void(const String&)>&&) final;
    7070
  • trunk/Source/WebCore/loader/ios/LegacyPreviewLoader.mm

    r287021 r287053  
    110110
    111111    ASSERT(!m_hasProcessedResponse);
    112     m_originalData.empty();
     112    m_originalData.reset();
    113113    resourceLoader->documentLoader()->setPreviewConverter(WTFMove(m_converter));
    114114    auto response { converter.previewResponse() };
     
    225225}
    226226
    227 void LegacyPreviewLoader::provideMainResourceForPreviewConverter(PreviewConverter& converter, CompletionHandler<void(const FragmentedSharedBuffer*)>&& completionHandler)
     227void LegacyPreviewLoader::provideMainResourceForPreviewConverter(PreviewConverter& converter, CompletionHandler<void(Ref<FragmentedSharedBuffer>&&)>&& completionHandler)
    228228{
    229229    ASSERT_UNUSED(converter, &converter == m_converter);
    230     completionHandler(m_originalData.get().get());
     230    completionHandler(m_originalData.copy());
    231231}
    232232
     
    236236    : m_converter { PreviewConverter::create(response, *this) }
    237237    , m_client { makeClient(loader, m_converter->previewFileName(), m_converter->previewUTI()) }
    238     , m_originalData { FragmentedSharedBuffer::create() }
    239238    , m_resourceLoader { loader }
    240239    , m_shouldDecidePolicyBeforeLoading { loader.frame()->settings().shouldDecidePolicyBeforeLoadingQuickLookPreview() }
  • trunk/Source/WebCore/platform/PreviewConverter.cpp

    r287021 r287053  
    8282    }
    8383
    84     provider->provideMainResourceForPreviewConverter(*this, [this, protectedThis = Ref { *this }](auto buffer) {
    85         if (buffer)
    86             appendFromBuffer(*buffer);
    87         else
    88             didFailUpdating();
     84    provider->provideMainResourceForPreviewConverter(*this, [this, protectedThis = Ref { *this }](auto&& buffer) {
     85        appendFromBuffer(WTFMove(buffer));
    8986    });
    9087}
  • trunk/Source/WebCore/platform/PreviewConverterProvider.h

    r287021 r287053  
    3333    virtual ~PreviewConverterProvider() = default;
    3434
    35     virtual void provideMainResourceForPreviewConverter(PreviewConverter&, CompletionHandler<void(const FragmentedSharedBuffer*)>&&) = 0;
     35    virtual void provideMainResourceForPreviewConverter(PreviewConverter&, CompletionHandler<void(Ref<FragmentedSharedBuffer>&&)>&&) = 0;
    3636    virtual void providePasswordForPreviewConverter(PreviewConverter&, CompletionHandler<void(const String&)>&&) = 0;
    3737};
Note: See TracChangeset for help on using the changeset viewer.