Title: [121944] trunk/Source/WebKit2
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);
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to