Changeset 147700 in webkit


Ignore:
Timestamp:
Apr 4, 2013 7:52:06 PM (11 years ago)
Author:
commit-queue@webkit.org
Message:

[EFL][WK2] Add support for getting page contents as string
https://bugs.webkit.org/show_bug.cgi?id=106752

Patch by KwangYong Choi <ky0.choi@samsung.com> on 2013-04-04
Reviewed by Andreas Kling.

Modified ewk_view_page_contents_get() API to get page contents as string.
EWK_PAGE_CONTENTS_TYPE_STRING is added to Ewk_Page_Contents_Type.
Now, we can use both EWK_PAGE_CONTENTS_TYPE_MHTML and EWK_PAGE_CONTENTS_TYPE_STRING
for getting page contents.

  • UIProcess/API/efl/ewk_view.cpp:

(Ewk_Page_Contents_Context):
(ewkViewPageContentsAsMHTMLCallback):
(ewkViewPageContentsAsStringCallback):
(ewk_view_page_contents_get):

  • UIProcess/API/efl/ewk_view.h:
  • UIProcess/API/efl/tests/test_ewk2_view.cpp:

(PageContentsAsMHTMLCallback):
(PageContentsAsStringCallback):
(TEST_F):

Location:
trunk/Source/WebKit2
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r147683 r147700  
     12013-04-04  KwangYong Choi  <ky0.choi@samsung.com>
     2
     3        [EFL][WK2] Add support for getting page contents as string
     4        https://bugs.webkit.org/show_bug.cgi?id=106752
     5
     6        Reviewed by Andreas Kling.
     7
     8        Modified ewk_view_page_contents_get() API to get page contents as string.
     9        EWK_PAGE_CONTENTS_TYPE_STRING is added to Ewk_Page_Contents_Type.
     10        Now, we can use both EWK_PAGE_CONTENTS_TYPE_MHTML and EWK_PAGE_CONTENTS_TYPE_STRING
     11        for getting page contents.
     12
     13        * UIProcess/API/efl/ewk_view.cpp:
     14        (Ewk_Page_Contents_Context):
     15        (ewkViewPageContentsAsMHTMLCallback):
     16        (ewkViewPageContentsAsStringCallback):
     17        (ewk_view_page_contents_get):
     18        * UIProcess/API/efl/ewk_view.h:
     19        * UIProcess/API/efl/tests/test_ewk2_view.cpp:
     20        (PageContentsAsMHTMLCallback):
     21        (PageContentsAsStringCallback):
     22        (TEST_F):
     23
    1242013-04-04  Christophe Dumez  <ch.dumez@sisa.samsung.com>
    225
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp

    r146265 r147700  
    536536    Ewk_Page_Contents_Type type;
    537537    Ewk_Page_Contents_Cb callback;
     538    void* userData;
    538539};
    539540
     
    542543 * Callback function used for ewk_view_page_contents_get().
    543544 */
    544 static void ewkViewPageContentsCallback(WKDataRef wkData, WKErrorRef, void* context)
     545static void ewkViewPageContentsAsMHTMLCallback(WKDataRef wkData, WKErrorRef, void* context)
    545546{
    546547    EINA_SAFETY_ON_NULL_RETURN(context);
    547548
    548     Ewk_Page_Contents_Context* contentsContext= static_cast<Ewk_Page_Contents_Context*>(context);
    549     contentsContext->callback(contentsContext->type, reinterpret_cast<const char*>(WKDataGetBytes(wkData)));
     549    Ewk_Page_Contents_Context* contentsContext = static_cast<Ewk_Page_Contents_Context*>(context);
     550    contentsContext->callback(contentsContext->type, reinterpret_cast<const char*>(WKDataGetBytes(wkData)), contentsContext->userData);
    550551
    551552    delete contentsContext;
    552553}
    553554
    554 Eina_Bool ewk_view_page_contents_get(const Evas_Object* ewkView, Ewk_Page_Contents_Type type, Ewk_Page_Contents_Cb callback)
     555/**
     556 * @internal
     557 * Callback function used for ewk_view_page_contents_get().
     558 */
     559static void ewkViewPageContentsAsStringCallback(WKStringRef wkString, WKErrorRef, void* context)
     560{
     561    EINA_SAFETY_ON_NULL_RETURN(context);
     562
     563    Ewk_Page_Contents_Context* contentsContext = static_cast<Ewk_Page_Contents_Context*>(context);
     564    contentsContext->callback(contentsContext->type, WKEinaSharedString(wkString), contentsContext->userData);
     565
     566    delete contentsContext;
     567}
     568
     569Eina_Bool ewk_view_page_contents_get(const Evas_Object* ewkView, Ewk_Page_Contents_Type type, Ewk_Page_Contents_Cb callback, void* user_data)
    555570{
    556571    EINA_SAFETY_ON_NULL_RETURN_VAL(callback, false);
    557572    EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, false);
    558 
    559     // We only support MHTML at the moment.
    560     if (type != EWK_PAGE_CONTENTS_TYPE_MHTML)
    561         return false;
    562573
    563574    Ewk_Page_Contents_Context* context = new Ewk_Page_Contents_Context;
    564575    context->type = type;
    565576    context->callback = callback;
    566 
    567     WKPageGetContentsAsMHTMLData(impl->wkPage(), false, context, ewkViewPageContentsCallback);
     577    context->userData = user_data;
     578
     579    switch (context->type) {
     580    case EWK_PAGE_CONTENTS_TYPE_MHTML:
     581        WKPageGetContentsAsMHTMLData(impl->wkPage(), false, context, ewkViewPageContentsAsMHTMLCallback);
     582        break;
     583    case EWK_PAGE_CONTENTS_TYPE_STRING:
     584        WKPageGetContentsAsString(impl->wkPage(), context, ewkViewPageContentsAsStringCallback);
     585        break;
     586    default:
     587        delete context;
     588        ASSERT_NOT_REACHED();
     589        return false;
     590    }
    568591
    569592    return true;
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h

    r145812 r147700  
    103103/// Enum values containing page contents type values.
    104104typedef enum {
    105     EWK_PAGE_CONTENTS_TYPE_MHTML
     105    EWK_PAGE_CONTENTS_TYPE_MHTML,
     106    EWK_PAGE_CONTENTS_TYPE_STRING
    106107} Ewk_Page_Contents_Type;
    107108
     
    282283 * @param type type of the contents
    283284 * @param data string buffer of the contents
    284  */
    285 typedef void (*Ewk_Page_Contents_Cb)(Ewk_Page_Contents_Type type, const char *data);
     285 * @param user_data user data will be passed when ewk_view_page_contents_get is called
     286 */
     287typedef void (*Ewk_Page_Contents_Cb)(Ewk_Page_Contents_Type type, const char *data, void *user_data);
    286288
    287289/**
     
    822824 * @param type type of the page contents
    823825 * @param callback callback function to be called when the operation is finished
     826 * @param user_data user data to be passed to the callback function
    824827 *
    825828 * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
    826829 */
    827 EAPI Eina_Bool ewk_view_page_contents_get(const Evas_Object *o, Ewk_Page_Contents_Type type, Ewk_Page_Contents_Cb callback);
     830EAPI Eina_Bool ewk_view_page_contents_get(const Evas_Object *o, Ewk_Page_Contents_Type type, Ewk_Page_Contents_Cb callback, void *user_data);
    828831
    829832/**
  • trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp

    r145812 r147700  
    927927static bool obtainedPageContents = false;
    928928
    929 static void PageContentsCallback(Ewk_Page_Contents_Type type, const char* data)
     929static void PageContentsAsMHTMLCallback(Ewk_Page_Contents_Type type, const char* data, void*)
    930930{
    931931    // Check the type
     
    944944}
    945945
     946static void PageContentsAsStringCallback(Ewk_Page_Contents_Type type, const char* data, void*)
     947{
     948    // Check the type.
     949    ASSERT_EQ(EWK_PAGE_CONTENTS_TYPE_STRING, type);
     950
     951    // The variable data should be "Simple HTML".
     952    ASSERT_STREQ("Simple HTML", data);
     953
     954    obtainedPageContents = true;
     955}
     956
    946957TEST_F(EWK2UnitTestBase, ewk_view_page_contents_get)
    947958{
     
    950961    waitUntilLoadFinished();
    951962
    952     ASSERT_TRUE(ewk_view_page_contents_get(webView(), EWK_PAGE_CONTENTS_TYPE_MHTML, PageContentsCallback));
     963    ASSERT_TRUE(ewk_view_page_contents_get(webView(), EWK_PAGE_CONTENTS_TYPE_MHTML, PageContentsAsMHTMLCallback, 0));
     964    while (!obtainedPageContents)
     965        ecore_main_loop_iterate();
     966
     967    obtainedPageContents = false;
     968    ASSERT_TRUE(ewk_view_page_contents_get(webView(), EWK_PAGE_CONTENTS_TYPE_STRING, PageContentsAsStringCallback, 0));
    953969    while (!obtainedPageContents)
    954970        ecore_main_loop_iterate();
Note: See TracChangeset for help on using the changeset viewer.