- Revision
- 121944
- Author
- [email protected]
- Date
- 2012-07-05 23:07:52 -0700 (Thu, 05 Jul 2012)
Log Message
[WK2][EFL] Ewk_View needs to report load status changes
https://bugs.webkit.org/show_bug.cgi?id=90566
Patch by Christophe Dumez <[email protected]> on 2012-07-05
Reviewed by Kenneth Rohde Christiansen.
Add new "load,finished", "load,provisional,failed",
"load,provisional,redirect" and "load,provisional,started"
signals on the Ewk_View to notify the client of different
load state changes.
* UIProcess/API/efl/ewk_view.cpp:
(ewk_view_load_finished):
(ewk_view_load_provisional_failed):
(ewk_view_load_provisional_redirect):
(ewk_view_load_provisional_started):
* UIProcess/API/efl/ewk_view.h:
* UIProcess/API/efl/ewk_view_loader_client.cpp:
(didFinishLoadForFrame):
(didFailLoadWithErrorForFrame):
(didStartProvisionalLoadForFrame):
(didReceiveServerRedirectForProvisionalLoadForFrame):
(didFailProvisionalLoadWithErrorForFrame):
(ewk_view_loader_client_attach):
* UIProcess/API/efl/ewk_view_private.h:
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (121943 => 121944)
--- trunk/Source/WebKit2/ChangeLog 2012-07-06 04:52:26 UTC (rev 121943)
+++ trunk/Source/WebKit2/ChangeLog 2012-07-06 06:07:52 UTC (rev 121944)
@@ -1,3 +1,30 @@
+2012-07-05 Christophe Dumez <[email protected]>
+
+ [WK2][EFL] Ewk_View needs to report load status changes
+ https://bugs.webkit.org/show_bug.cgi?id=90566
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Add new "load,finished", "load,provisional,failed",
+ "load,provisional,redirect" and "load,provisional,started"
+ signals on the Ewk_View to notify the client of different
+ load state changes.
+
+ * UIProcess/API/efl/ewk_view.cpp:
+ (ewk_view_load_finished):
+ (ewk_view_load_provisional_failed):
+ (ewk_view_load_provisional_redirect):
+ (ewk_view_load_provisional_started):
+ * UIProcess/API/efl/ewk_view.h:
+ * UIProcess/API/efl/ewk_view_loader_client.cpp:
+ (didFinishLoadForFrame):
+ (didFailLoadWithErrorForFrame):
+ (didStartProvisionalLoadForFrame):
+ (didReceiveServerRedirectForProvisionalLoadForFrame):
+ (didFailProvisionalLoadWithErrorForFrame):
+ (ewk_view_loader_client_attach):
+ * UIProcess/API/efl/ewk_view_private.h:
+
2012-07-05 Luiz Agostini <[email protected]>
[Qt] Transform should be applied to the clip rect in QRawWebView::paint
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp (121943 => 121944)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp 2012-07-06 04:52:26 UTC (rev 121943)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp 2012-07-06 06:07:52 UTC (rev 121944)
@@ -732,6 +732,50 @@
evas_object_smart_callback_call(ewkView, "load,error", const_cast<Ewk_Web_Error*>(error));
}
+/**
+ * @internal
+ * Reports load finished.
+ *
+ * Emits signal: "load,finished".
+ */
+void ewk_view_load_finished(Evas_Object* ewkView)
+{
+ evas_object_smart_callback_call(ewkView, "load,finished", 0);
+}
+
+/**
+ * @internal
+ * Reports view provisional load failed with error information.
+ *
+ * Emits signal: "load,provisional,failed" with pointer to Ewk_Web_Error.
+ */
+void ewk_view_load_provisional_failed(Evas_Object* ewkView, const Ewk_Web_Error* error)
+{
+ evas_object_smart_callback_call(ewkView, "load,provisional,failed", const_cast<Ewk_Web_Error*>(error));
+}
+
+/**
+ * @internal
+ * Reports view received redirect for provisional load.
+ *
+ * Emits signal: "load,provisional,redirect".
+ */
+void ewk_view_load_provisional_redirect(Evas_Object* ewkView)
+{
+ evas_object_smart_callback_call(ewkView, "load,provisional,redirect", 0);
+}
+
+/**
+ * @internal
+ * Reports view provisional load started.
+ *
+ * Emits signal: "load,provisional,started".
+ */
+void ewk_view_load_provisional_started(Evas_Object* ewkView)
+{
+ evas_object_smart_callback_call(ewkView, "load,provisional,started", 0);
+}
+
Eina_Bool ewk_view_html_string_load(Evas_Object* ewkView, const char* html, const char* baseUrl, const char* unreachableUrl)
{
EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false);
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h (121943 => 121944)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h 2012-07-06 04:52:26 UTC (rev 121943)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h 2012-07-06 06:07:52 UTC (rev 121944)
@@ -29,7 +29,11 @@
* - "intent,request,new", Ewk_Intent_Request*: reports new Web intent request.
* - "intent,service,register", Ewk_Intent_Service*: reports new Web intent service registration.
* - "load,error", const Ewk_Web_Error*: reports main frame load failed.
+ * - "load,finished", void: reports load finished.
* - "load,progress", double*: load progress has changed (value from 0.0 to 1.0).
+ * - "load,provisional,failed", const Ewk_Web_Error*: view provisional load failed.
+ * - "load,provisional,redirect", void: view received redirect for provisional load.
+ * - "load,provisional,started", void: view started provisional load.
* - "resource,request,new", const Ewk_Web_Resource_Request*: a resource request was initiated.
* - "title,changed", const char*: title of the main frame was changed.
*/
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_loader_client.cpp (121943 => 121944)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_loader_client.cpp 2012-07-06 04:52:26 UTC (rev 121943)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_loader_client.cpp 2012-07-06 06:07:52 UTC (rev 121944)
@@ -73,6 +73,15 @@
ewk_view_load_progress_changed(ewkView, WKPageGetEstimatedProgress(page));
}
+static void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
+{
+ if (!WKFrameIsMainFrame(frame))
+ return;
+
+ Evas_Object* ewkView = static_cast<Evas_Object*>(const_cast<void*>(clientInfo));
+ ewk_view_load_finished(ewkView);
+}
+
static void didFailLoadWithErrorForFrame(WKPageRef page, WKFrameRef frame, WKErrorRef error, WKTypeRef, const void *clientInfo)
{
if (!WKFrameIsMainFrame(frame))
@@ -81,9 +90,39 @@
Evas_Object* ewkView = static_cast<Evas_Object*>(const_cast<void*>(clientInfo));
Ewk_Web_Error* ewkError = ewk_web_error_new(error);
ewk_view_load_error(ewkView, ewkError);
+ ewk_view_load_finished(ewkView);
ewk_web_error_free(ewkError);
}
+static void didStartProvisionalLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
+{
+ if (!WKFrameIsMainFrame(frame))
+ return;
+
+ Evas_Object* ewkView = static_cast<Evas_Object*>(const_cast<void*>(clientInfo));
+ ewk_view_load_provisional_started(ewkView);
+}
+
+static void didReceiveServerRedirectForProvisionalLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
+{
+ if (!WKFrameIsMainFrame(frame))
+ return;
+
+ Evas_Object* ewkView = static_cast<Evas_Object*>(const_cast<void*>(clientInfo));
+ ewk_view_load_provisional_redirect(ewkView);
+}
+
+static void didFailProvisionalLoadWithErrorForFrame(WKPageRef page, WKFrameRef frame, WKErrorRef error, WKTypeRef userData, const void* clientInfo)
+{
+ if (!WKFrameIsMainFrame(frame))
+ return;
+
+ Evas_Object* ewkView = static_cast<Evas_Object*>(const_cast<void*>(clientInfo));
+ Ewk_Web_Error* ewkError = ewk_web_error_new(error);
+ ewk_view_load_provisional_failed(ewkView, ewkError);
+ ewk_web_error_free(ewkError);
+}
+
void ewk_view_loader_client_attach(WKPageRef pageRef, Evas_Object* ewkView)
{
WKPageLoaderClient loadClient;
@@ -100,6 +139,10 @@
loadClient.didStartProgress = didChangeProgress;
loadClient.didChangeProgress = didChangeProgress;
loadClient.didFinishProgress = didChangeProgress;
+ loadClient.didFinishLoadForFrame = didFinishLoadForFrame;
loadClient.didFailLoadWithErrorForFrame = didFailLoadWithErrorForFrame;
+ loadClient.didStartProvisionalLoadForFrame = didStartProvisionalLoadForFrame;
+ loadClient.didReceiveServerRedirectForProvisionalLoadForFrame = didReceiveServerRedirectForProvisionalLoadForFrame;
+ loadClient.didFailProvisionalLoadWithErrorForFrame = didFailProvisionalLoadWithErrorForFrame;
WKPageSetPageLoaderClient(pageRef, &loadClient);
}
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_private.h (121943 => 121944)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_private.h 2012-07-06 04:52:26 UTC (rev 121943)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_private.h 2012-07-06 06:07:52 UTC (rev 121944)
@@ -43,7 +43,11 @@
void ewk_view_display(Evas_Object* ewkView, const WebCore::IntRect& rect);
void ewk_view_image_data_set(Evas_Object* ewkView, void* imageData, const WebCore::IntSize& size);
void ewk_view_load_error(Evas_Object* ewkView, const Ewk_Web_Error* error);
+void ewk_view_load_finished(Evas_Object* ewkView);
void ewk_view_load_progress_changed(Evas_Object* ewkView, double progress);
+void ewk_view_load_provisional_failed(Evas_Object* ewkView, const Ewk_Web_Error* error);
+void ewk_view_load_provisional_redirect(Evas_Object* ewkView);
+void ewk_view_load_provisional_started(Evas_Object* ewkView);
void ewk_view_title_changed(Evas_Object* ewkView, const char* title);
void ewk_view_resource_load_initiated(Evas_Object* ewkView, uint64_t resourceIdentifier, Ewk_Web_Resource* resource, Ewk_Url_Request* request);