Changeset 125002 in webkit


Ignore:
Timestamp:
Aug 8, 2012 12:12:26 AM (12 years ago)
Author:
mario@webkit.org
Message:

[WK2] Add new C API to generate MHTML data from the UI process
https://bugs.webkit.org/show_bug.cgi?id=89872

Reviewed by Anders Carlsson.

Add new C API in the UI Process, using ENABLE(MHTML) guards as needed.

  • UIProcess/API/C/WKPage.cpp:

(WKPageGetContentsAsMHTMLData):

  • UIProcess/API/C/WKPage.h:

Implementation in the UI Process's WebPage proxy object.

  • UIProcess/WebPageProxy.cpp:

(WebKit):
(WebKit::WebPageProxy::getContentsAsMHTMLData):

  • UIProcess/WebPageProxy.h:

(WebPageProxy):

Implementation in the WebProcess, relying in WebCore::MHTMLArchive.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit):
(WebKit::WebPage::getContentsAsMHTMLData):

  • WebProcess/WebPage/WebPage.h:

(WebPage):

  • WebProcess/WebPage/WebPage.messages.in:
Location:
trunk/Source/WebKit2
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r124989 r125002  
     12012-08-08  Mario Sanchez Prada  <msanchez@igalia.com>
     2
     3        [WK2] Add new C API to generate MHTML data from the UI process
     4        https://bugs.webkit.org/show_bug.cgi?id=89872
     5
     6        Reviewed by Anders Carlsson.
     7
     8        Add new C API in the UI Process, using ENABLE(MHTML) guards as needed.
     9
     10        * UIProcess/API/C/WKPage.cpp:
     11        (WKPageGetContentsAsMHTMLData):
     12        * UIProcess/API/C/WKPage.h:
     13
     14        Implementation in the UI Process's WebPage proxy object.
     15
     16        * UIProcess/WebPageProxy.cpp:
     17        (WebKit):
     18        (WebKit::WebPageProxy::getContentsAsMHTMLData):
     19        * UIProcess/WebPageProxy.h:
     20        (WebPageProxy):
     21
     22        Implementation in the WebProcess, relying in WebCore::MHTMLArchive.
     23
     24        * WebProcess/WebPage/WebPage.cpp:
     25        (WebKit):
     26        (WebKit::WebPage::getContentsAsMHTMLData):
     27        * WebProcess/WebPage/WebPage.h:
     28        (WebPage):
     29        * WebProcess/WebPage/WebPage.messages.in:
     30
    1312012-08-07  YoungTaeck Song  <youngtaeck.song@samsung.com>
    232
  • trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp

    r121590 r125002  
    583583#endif
    584584
     585void WKPageGetContentsAsMHTMLData(WKPageRef pageRef, bool useBinaryEncoding, void* context, WKPageGetContentsAsMHTMLDataFunction callback)
     586{
     587#if ENABLE(MHTML)
     588    toImpl(pageRef)->getContentsAsMHTMLData(DataCallback::create(context, callback), useBinaryEncoding);
     589#endif
     590}
     591
    585592void WKPageForceRepaint(WKPageRef pageRef, void* context, WKPageForceRepaintFunction callback)
    586593{
  • trunk/Source/WebKit2/UIProcess/API/C/WKPage.h

    r123374 r125002  
    466466#endif
    467467
     468typedef void (*WKPageGetContentsAsMHTMLDataFunction)(WKDataRef, WKErrorRef, void*);
     469WK_EXPORT void WKPageGetContentsAsMHTMLData(WKPageRef page, bool useBinaryEncoding, void* context, WKPageGetContentsAsMHTMLDataFunction function);
     470
    468471typedef void (*WKPageForceRepaintFunction)(WKErrorRef, void*);
    469472WK_EXPORT void WKPageForceRepaint(WKPageRef page, void* context, WKPageForceRepaintFunction function);
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r124989 r125002  
    16571657}
    16581658
     1659#if ENABLE(MHTML)
     1660void WebPageProxy::getContentsAsMHTMLData(PassRefPtr<DataCallback> prpCallback, bool useBinaryEncoding)
     1661{
     1662    RefPtr<DataCallback> callback = prpCallback;
     1663    if (!isValid()) {
     1664        callback->invalidate();
     1665        return;
     1666    }
     1667
     1668    uint64_t callbackID = callback->callbackID();
     1669    m_dataCallbacks.set(callbackID, callback.get());
     1670    process()->send(Messages::WebPage::GetContentsAsMHTMLData(callbackID, useBinaryEncoding), m_pageID);
     1671}
     1672#endif
     1673
    16591674void WebPageProxy::getSelectionOrContentsAsString(PassRefPtr<StringCallback> prpCallback)
    16601675{
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r124989 r125002  
    529529
    530530    void getContentsAsString(PassRefPtr<StringCallback>);
     531#if ENABLE(MHTML)
     532    void getContentsAsMHTMLData(PassRefPtr<DataCallback>, bool useBinaryEncoding);
     533#endif
    531534    void getMainResourceDataOfFrame(WebFrameProxy*, PassRefPtr<DataCallback>);
    532535    void getResourceDataFromFrame(WebFrameProxy*, WebURL*, PassRefPtr<DataCallback>);
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r124649 r125002  
    121121#include <WebCore/VisiblePosition.h>
    122122
     123#if ENABLE(MHTML)
     124#include <WebCore/MHTMLArchive.h>
     125#endif
     126
    123127#if ENABLE(PLUGIN_PROCESS)
    124128#if PLATFORM(MAC)
     
    18581862}
    18591863
     1864#if ENABLE(MHTML)
     1865void WebPage::getContentsAsMHTMLData(uint64_t callbackID, bool useBinaryEncoding)
     1866{
     1867    CoreIPC::DataReference dataReference;
     1868
     1869    RefPtr<SharedBuffer> buffer = useBinaryEncoding
     1870        ? MHTMLArchive::generateMHTMLDataUsingBinaryEncoding(m_page.get())
     1871        : MHTMLArchive::generateMHTMLData(m_page.get());
     1872
     1873    if (buffer)
     1874        dataReference = CoreIPC::DataReference(reinterpret_cast<const uint8_t*>(buffer->data()), buffer->size());
     1875
     1876    send(Messages::WebPageProxy::DataCallback(dataReference, callbackID));
     1877}
     1878#endif
     1879
    18601880void WebPage::getRenderTreeExternalRepresentation(uint64_t callbackID)
    18611881{
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h

    r124649 r125002  
    658658
    659659    void getContentsAsString(uint64_t callbackID);
     660#if ENABLE(MHTML)
     661    void getContentsAsMHTMLData(uint64_t callbackID, bool useBinaryEncoding);
     662#endif
    660663    void getMainResourceDataOfFrame(uint64_t frameID, uint64_t callbackID);
    661664    void getResourceDataFromFrame(uint64_t frameID, const String& resourceURL, uint64_t callbackID);
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in

    r123216 r125002  
    9292    # Callbacks.
    9393    GetContentsAsString(uint64_t callbackID)
     94#if ENABLE(MHTML)
     95    GetContentsAsMHTMLData(uint64_t callbackID, bool useBinaryEncoding)
     96#endif
    9497    GetMainResourceDataOfFrame(uint64_t frameID, uint64_t callbackID)
    9598    GetResourceDataFromFrame(uint64_t frameID, WTF::String resourceURL, uint64_t callbackID)
Note: See TracChangeset for help on using the changeset viewer.