WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
diff (text/plain), 7.95 KB, created by
KwangYong Choi
on 2013-01-27 16:49:22 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
KwangYong Choi
Created:
2013-01-27 16:49:22 PST
Size:
7.95 KB
patch
obsolete
>diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog >index 230c468..233c158 100644 >--- a/Source/WebKit2/ChangeLog >+++ b/Source/WebKit2/ChangeLog >@@ -1,3 +1,28 @@ >+2013-01-23 KwangYong Choi <ky0.choi@samsung.com> >+ >+ [EFL][WK2] Add support for getting page contents as string >+ https://bugs.webkit.org/show_bug.cgi?id=106752 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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. >+ >+ ewk_view_page_contents_get() API is changed to pass the user data to the >+ callback function. And replace internal API usage with C API. >+ >+ * UIProcess/API/efl/ewk_view.cpp: >+ (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): >+ > 2013-01-23 Seokju Kwon <seokju.kwon@gmail.com> > > [EFL] Unreviewed build fix after r140605 >diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp >index 4bbe4e7..b719845 100644 >--- a/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp >+++ b/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp >@@ -156,6 +156,7 @@ typedef struct Ewk_Page_Contents_Context Ewk_Page_Contents_Context; > struct Ewk_Page_Contents_Context { > Ewk_Page_Contents_Type type; > Ewk_Page_Contents_Cb callback; >+ void* userData; > }; > > static void _ewk_view_smart_changed(Ewk_View_Smart_Data* smartData) >@@ -961,31 +962,53 @@ void ewk_view_draws_page_background_set(Evas_Object *ewkView, Eina_Bool enabled) > * @internal > * Callback function used for ewk_view_page_contents_get(). > */ >-static void ewkViewPageContentsCallback(WKDataRef wkData, WKErrorRef, void* context) >+static void ewkViewPageContentsAsMHTMLCallback(WKDataRef wkData, WKErrorRef, void* context) > { > EINA_SAFETY_ON_NULL_RETURN(context); > > RefPtr<WebData> webData = toImpl(wkData); >- Ewk_Page_Contents_Context* contentsContext= static_cast<Ewk_Page_Contents_Context*>(context); >- contentsContext->callback(contentsContext->type, reinterpret_cast<const char*>(webData->bytes())); >+ Ewk_Page_Contents_Context* contentsContext = static_cast<Ewk_Page_Contents_Context*>(context); >+ contentsContext->callback(contentsContext->type, reinterpret_cast<const char*>(webData->bytes()), contentsContext->userData); > > delete contentsContext; > } > >-Eina_Bool ewk_view_page_contents_get(const Evas_Object* ewkView, Ewk_Page_Contents_Type type, Ewk_Page_Contents_Cb callback) >+/** >+ * @internal >+ * Callback function used for ewk_view_page_contents_get(). >+ */ >+static void ewkViewPageContentsAsStringCallback(WKStringRef wkString, WKErrorRef, void* context) >+{ >+ EINA_SAFETY_ON_NULL_RETURN(context); >+ >+ Ewk_Page_Contents_Context* contentsContext = static_cast<Ewk_Page_Contents_Context*>(context); >+ contentsContext->callback(contentsContext->type, WKEinaSharedString(wkString), contentsContext->userData); >+ >+ delete contentsContext; >+} >+ >+Eina_Bool ewk_view_page_contents_get(const Evas_Object* ewkView, Ewk_Page_Contents_Type type, Ewk_Page_Contents_Cb callback, void* user_data) > { > EINA_SAFETY_ON_NULL_RETURN_VAL(callback, false); > EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, false); > >- // We only support MHTML at the moment. >- if (type != EWK_PAGE_CONTENTS_TYPE_MHTML) >- return false; >- > Ewk_Page_Contents_Context* context = new Ewk_Page_Contents_Context; > context->type = type; > context->callback = callback; >- >- impl->page()->getContentsAsMHTMLData(DataCallback::create(context, ewkViewPageContentsCallback), false); >+ context->userData = user_data; >+ >+ switch (context->type) { >+ case EWK_PAGE_CONTENTS_TYPE_MHTML: >+ WKPageGetContentsAsMHTMLData(impl->wkPage(), false, context, ewkViewPageContentsAsMHTMLCallback); >+ break; >+ case EWK_PAGE_CONTENTS_TYPE_STRING: >+ WKPageGetContentsAsString(impl->wkPage(), context, ewkViewPageContentsAsStringCallback); >+ break; >+ default: >+ delete context; >+ ASSERT_NOT_REACHED(); >+ return false; >+ } > > return true; > } >diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view.h b/Source/WebKit2/UIProcess/API/efl/ewk_view.h >index 1246204..c9b2897 100644 >--- a/Source/WebKit2/UIProcess/API/efl/ewk_view.h >+++ b/Source/WebKit2/UIProcess/API/efl/ewk_view.h >@@ -103,7 +103,8 @@ typedef enum { > > /// Enum values containing page contents type values. > typedef enum { >- EWK_PAGE_CONTENTS_TYPE_MHTML >+ EWK_PAGE_CONTENTS_TYPE_MHTML, >+ EWK_PAGE_CONTENTS_TYPE_STRING > } Ewk_Page_Contents_Type; > > typedef struct Ewk_View_Smart_Data Ewk_View_Smart_Data; >@@ -282,8 +283,9 @@ typedef enum { > * > * @param type type of the contents > * @param data string buffer of the contents >+ * @param user_data user_data will be passed when ewk_view_page_contents_get is called > */ >-typedef void (*Ewk_Page_Contents_Cb)(Ewk_Page_Contents_Type type, const char *data); >+typedef void (*Ewk_Page_Contents_Cb)(Ewk_Page_Contents_Type type, const char *data, void *user_data); > > /** > * Sets the smart class APIs, enabling view to be inherited. >@@ -823,10 +825,11 @@ EAPI void ewk_view_draws_page_background_set(Evas_Object *o, Eina_Bool enabled); > * @param o view object to get the page contents > * @param type type of the page contents > * @param callback callback function to be called when the operation is finished >+ * @param user_data user data to be passed to the callback function > * > * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise > */ >-EAPI Eina_Bool ewk_view_page_contents_get(const Evas_Object *o, Ewk_Page_Contents_Type type, Ewk_Page_Contents_Cb callback); >+EAPI Eina_Bool ewk_view_page_contents_get(const Evas_Object *o, Ewk_Page_Contents_Type type, Ewk_Page_Contents_Cb callback, void *user_data); > > /** > * Sets the source mode as EINA_TRUE to display the web source code >diff --git a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp >index ac89821..7759ff4 100644 >--- a/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp >+++ b/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp >@@ -919,7 +919,7 @@ TEST_F(EWK2UnitTestBase, ewk_view_contents_size_changed) > > static bool isObtainedPageContents = false; > >-static void PageContentsCallback(Ewk_Page_Contents_Type type, const char* data) >+static void PageContentsAsMHTMLCallback(Ewk_Page_Contents_Type type, const char* data, void*) > { > // Check the type > ASSERT_EQ(EWK_PAGE_CONTENTS_TYPE_MHTML, type); >@@ -935,13 +935,29 @@ static void PageContentsCallback(Ewk_Page_Contents_Type type, const char* data) > isObtainedPageContents = true; > } > >+static void PageContentsAsStringCallback(Ewk_Page_Contents_Type type, const char* data, void*) >+{ >+ // Check the type >+ ASSERT_EQ(EWK_PAGE_CONTENTS_TYPE_STRING, type); >+ >+ // The variable data should be "Simple HTML" >+ ASSERT_EQ(0, strcmp(data, "Simple HTML")); >+ >+ isObtainedPageContents = true; >+} >+ > TEST_F(EWK2UnitTestBase, ewk_view_page_contents_get) > { > const char content[] = "<p>Simple HTML</p>"; > ewk_view_html_string_load(webView(), content, 0, 0); > waitUntilLoadFinished(); > >- ASSERT_TRUE(ewk_view_page_contents_get(webView(), EWK_PAGE_CONTENTS_TYPE_MHTML, PageContentsCallback)); >+ ASSERT_TRUE(ewk_view_page_contents_get(webView(), EWK_PAGE_CONTENTS_TYPE_MHTML, PageContentsAsMHTMLCallback, 0)); >+ while (!isObtainedPageContents) >+ ecore_main_loop_iterate(); >+ >+ isObtainedPageContents = false; >+ ASSERT_TRUE(ewk_view_page_contents_get(webView(), EWK_PAGE_CONTENTS_TYPE_STRING, PageContentsAsStringCallback, 0)); > while (!isObtainedPageContents) > ecore_main_loop_iterate(); > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 106752
:
182502
|
183116
|
183119
|
183140
|
183157
|
183307
|
183366
|
184137
|
184433
|
184615
|
184925
|
188792
|
188800
|
189684