Diff
Modified: trunk/LayoutTests/ChangeLog (114385 => 114386)
--- trunk/LayoutTests/ChangeLog 2012-04-17 16:12:25 UTC (rev 114385)
+++ trunk/LayoutTests/ChangeLog 2012-04-17 16:13:19 UTC (rev 114386)
@@ -1,3 +1,15 @@
+2012-04-17 Christophe Dumez <[email protected]>
+
+ [EFL] DRT should support LayoutTestController's dumpFrameLoadCallbacks()
+ https://bugs.webkit.org/show_bug.cgi?id=83030
+
+ Reviewed by Antonio Gomes.
+
+ Unskip the test cases in EFL which needed dumpFrameLoadCallbacks()
+ support in the DumpRenderTree now that it is implemented.
+
+ * platform/efl/Skipped:
+
2012-04-17 Sheriff Bot <[email protected]>
Unreviewed, rolling out r114376.
Modified: trunk/LayoutTests/platform/efl/Skipped (114385 => 114386)
--- trunk/LayoutTests/platform/efl/Skipped 2012-04-17 16:12:25 UTC (rev 114385)
+++ trunk/LayoutTests/platform/efl/Skipped 2012-04-17 16:13:19 UTC (rev 114386)
@@ -1163,7 +1163,6 @@
# Failing http tests (via GTK+)
http/tests/loading/bad-scheme-subframe.html
http/tests/loading/bad-server-subframe.html
-http/tests/loading/gmail-assert-on-load.html
http/tests/loading/redirect-with-no-location-crash.html
http/tests/loading/text-content-type-with-binary-extension.html
http/tests/media/video-play-stall-seek.html
@@ -1368,7 +1367,6 @@
fast/html/tab-order.html
fast/inline/skipped-whitespace-boundingBox.html
fast/loader/fragment-after-redirect-gets-back-entry.html
-fast/loader/subframe-removes-itself.html
fast/multicol/client-rects.html
fast/multicol/single-line.html
fast/overflow/overflow-y-scroll.html
@@ -2335,7 +2333,6 @@
http/tests/security/mixedContent/data-url-iframe-in-main-frame.html
http/tests/security/mixedContent/data-url-script-in-iframe.html
http/tests/security/mixedContent/insecure-css-in-iframe.html
-http/tests/security/mixedContent/insecure-css-in-main-frame.html
http/tests/security/mixedContent/insecure-iframe-in-iframe.html
http/tests/security/mixedContent/insecure-iframe-in-main-frame.html
http/tests/security/mixedContent/insecure-image-in-iframe.html
Modified: trunk/Source/WebKit/efl/ChangeLog (114385 => 114386)
--- trunk/Source/WebKit/efl/ChangeLog 2012-04-17 16:12:25 UTC (rev 114385)
+++ trunk/Source/WebKit/efl/ChangeLog 2012-04-17 16:13:19 UTC (rev 114386)
@@ -1,3 +1,28 @@
+2012-04-17 Christophe Dumez <[email protected]>
+
+ [EFL] DRT should support LayoutTestController's dumpFrameLoadCallbacks()
+ https://bugs.webkit.org/show_bug.cgi?id=83030
+
+ Reviewed by Antonio Gomes.
+
+ Emit "load,started" and "onload,event" signals needed to support
+ LayoutTestController's dumpFrameLoadCallbacks() in EFL's DumpRenderTree.
+
+ * WebCoreSupport/FrameLoaderClientEfl.cpp:
+ (WebCore::FrameLoaderClientEfl::dispatchDidHandleOnloadEvents):
+ (WebCore::FrameLoaderClientEfl::dispatchDidCommitLoad):
+ (WebCore::FrameLoaderClientEfl::dispatchDidFailLoad):
+ * ewk/ewk_frame.cpp:
+ (ewk_frame_load_committed):
+ (ewk_frame_load_started):
+ * ewk/ewk_frame.h:
+ * ewk/ewk_private.h:
+ * ewk/ewk_view.cpp:
+ (_Ewk_View_Private_Data):
+ (ewk_view_load_started):
+ (ewk_view_onload_event):
+ * ewk/ewk_view.h:
+
2012-04-17 Sheriff Bot <[email protected]>
Unreviewed, rolling out r114376.
Modified: trunk/Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp (114385 => 114386)
--- trunk/Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp 2012-04-17 16:12:25 UTC (rev 114385)
+++ trunk/Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp 2012-04-17 16:13:19 UTC (rev 114386)
@@ -544,7 +544,7 @@
void FrameLoaderClientEfl::dispatchDidHandleOnloadEvents()
{
- notImplemented();
+ ewk_view_onload_event(m_view, m_frame);
}
void FrameLoaderClientEfl::dispatchDidReceiveServerRedirectForProvisionalLoad()
@@ -611,6 +611,7 @@
void FrameLoaderClientEfl::dispatchDidCommitLoad()
{
ewk_frame_uri_changed(m_frame);
+ ewk_frame_load_committed(m_frame);
if (ewk_view_frame_main_get(m_view) != m_frame)
return;
ewk_view_title_set(m_view, 0);
@@ -761,9 +762,6 @@
void FrameLoaderClientEfl::dispatchDidFailLoad(const ResourceError& err)
{
- if (!shouldFallBack(err))
- return;
-
m_loadError = err;
ewk_frame_load_error(m_frame,
m_loadError.domain().utf8().data(),
Modified: trunk/Source/WebKit/efl/ewk/ewk_frame.cpp (114385 => 114386)
--- trunk/Source/WebKit/efl/ewk/ewk_frame.cpp 2012-04-17 16:12:25 UTC (rev 114385)
+++ trunk/Source/WebKit/efl/ewk/ewk_frame.cpp 2012-04-17 16:13:19 UTC (rev 114386)
@@ -1261,6 +1261,17 @@
/**
* @internal
+ * Reports the frame committed load.
+ *
+ * Emits signal: "load,committed" with no parameters.
+ */
+void ewk_frame_load_committed(Evas_Object* ewkFrame)
+{
+ evas_object_smart_callback_call(ewkFrame, "load,committed", 0);
+}
+
+/**
+ * @internal
* Reports the frame started loading something.
*
* Emits signal: "load,started" with no parameters.
@@ -1271,7 +1282,7 @@
DBG("ewkFrame=%p", ewkFrame);
evas_object_smart_callback_call(ewkFrame, "load,started", 0);
EWK_FRAME_SD_GET_OR_RETURN(ewkFrame, smartData);
- ewk_view_load_started(smartData->view);
+ ewk_view_load_started(smartData->view, ewkFrame);
mainFrame = ewk_view_frame_main_get(smartData->view);
if (mainFrame == ewkFrame)
Modified: trunk/Source/WebKit/efl/ewk/ewk_frame.h (114385 => 114386)
--- trunk/Source/WebKit/efl/ewk/ewk_frame.h 2012-04-17 16:12:25 UTC (rev 114385)
+++ trunk/Source/WebKit/efl/ewk/ewk_frame.h 2012-04-17 16:13:19 UTC (rev 114386)
@@ -39,6 +39,7 @@
* were changed due new layout, script actions or any other events.
* - "editorclient,contents,changed", void: reports that editor client's
* contents were changed
+ * - "load,committed", void: reports load committed.
* - "load,document,finished", void: frame finished loading the document.
* - "load,error", const Ewk_Frame_Load_Error*: reports load failed
* and it gives a pointer to structure defining the error as an argument.
Modified: trunk/Source/WebKit/efl/ewk/ewk_private.h (114385 => 114386)
--- trunk/Source/WebKit/efl/ewk/ewk_private.h 2012-04-17 16:12:25 UTC (rev 114385)
+++ trunk/Source/WebKit/efl/ewk/ewk_private.h 2012-04-17 16:13:19 UTC (rev 114386)
@@ -109,7 +109,7 @@
void ewk_view_title_set(Evas_Object* ewkView, const char* title);
void ewk_view_uri_changed(Evas_Object* ewkView);
void ewk_view_load_document_finished(Evas_Object* ewkView, Evas_Object* frame);
-void ewk_view_load_started(Evas_Object* ewkView);
+void ewk_view_load_started(Evas_Object* ewkView, Evas_Object* ewkFrame);
void ewk_view_load_provisional(Evas_Object* ewkView);
void ewk_view_frame_main_load_started(Evas_Object* ewkView);
void ewk_view_frame_main_cleared(Evas_Object* ewkView);
@@ -118,6 +118,7 @@
void ewk_view_load_error(Evas_Object* ewkView, const Ewk_Frame_Load_Error* error);
void ewk_view_load_progress_changed(Evas_Object* ewkView);
void ewk_view_load_show(Evas_Object* ewkView);
+void ewk_view_onload_event(Evas_Object* ewkView, Evas_Object* frame);
void ewk_view_restore_state(Evas_Object* ewkView, Evas_Object* frame);
Evas_Object* ewk_view_window_create(Evas_Object* ewkView, bool _javascript_, const WebCore::WindowFeatures* coreFeatures);
void ewk_view_window_close(Evas_Object* ewkView);
@@ -211,6 +212,7 @@
void ewk_frame_core_gone(Evas_Object* ewkFrame);
+void ewk_frame_load_committed(Evas_Object* ewkFrame);
void ewk_frame_load_started(Evas_Object* ewkFrame);
void ewk_frame_load_provisional(Evas_Object* ewkFrame);
void ewk_frame_load_firstlayout_finished(Evas_Object* ewkFrame);
Modified: trunk/Source/WebKit/efl/ewk/ewk_view.cpp (114385 => 114386)
--- trunk/Source/WebKit/efl/ewk/ewk_view.cpp 2012-04-17 16:12:25 UTC (rev 114385)
+++ trunk/Source/WebKit/efl/ewk/ewk_view.cpp 2012-04-17 16:13:19 UTC (rev 114386)
@@ -2813,13 +2813,14 @@
* Reports the view started loading something.
*
* @param ewkView View.
+ * @param ewkFrame Frame being loaded.
*
* Emits signal: "load,started" with no parameters.
*/
-void ewk_view_load_started(Evas_Object* ewkView)
+void ewk_view_load_started(Evas_Object* ewkView, Evas_Object* ewkFrame)
{
- DBG("ewkView=%p", ewkView);
- evas_object_smart_callback_call(ewkView, "load,started", 0);
+ DBG("ewkView=%p, ewkFrame=%p", ewkView, ewkFrame);
+ evas_object_smart_callback_call(ewkView, "load,started", ewkFrame);
}
/**
@@ -2864,6 +2865,19 @@
evas_object_smart_callback_call(ewkView, "load,newwindow,show", 0);
}
+/**
+ * @internal
+ * Reports an onload event for @p frame.
+ *
+ * @param ewkView View which contains the frame.
+ * @param frame The frame whose onload event was received.
+ *
+ * Emits signal: "onload,event" with @p frame as the parameter.
+ */
+void ewk_view_onload_event(Evas_Object* ewkView, Evas_Object* frame)
+{
+ evas_object_smart_callback_call(ewkView, "onload,event", frame);
+}
/**
* @internal
Modified: trunk/Source/WebKit/efl/ewk/ewk_view.h (114385 => 114386)
--- trunk/Source/WebKit/efl/ewk/ewk_view.h 2012-04-17 16:12:25 UTC (rev 114385)
+++ trunk/Source/WebKit/efl/ewk/ewk_view.h 2012-04-17 16:13:19 UTC (rev 114386)
@@ -60,12 +60,13 @@
* - "load,progress", double*: load progress is changed (overall value
* from 0.0 to 1.0, connect to individual frames for fine grained).
* - "load,provisional", void: view started provisional load.
- * - "load,started", void: frame started loading the document.
+ * - "load,started", Evas_Object*: frame started loading the document.
* - "menubar,visible,get", Eina_Bool *: expects a @c EINA_TRUE if menubar is
* visible; @c EINA_FALSE, otherwise.
* - "menubar,visible,set", Eina_Bool: sets menubar visibility.
* - "mixedcontent,displayed", void: any of the containing frames has loaded and displayed mixed content.
* - "mixedcontent,run", void: any of the containing frames has loaded and run mixed content.
+ * - "onload,event", Evas_Object*: a frame onload event has been received.
* - "ready", void: page is fully loaded.
* - "resource,request,willsend", Ewk_Frame_Resource_Request*: a resource will
* be requested.
Modified: trunk/Tools/ChangeLog (114385 => 114386)
--- trunk/Tools/ChangeLog 2012-04-17 16:12:25 UTC (rev 114385)
+++ trunk/Tools/ChangeLog 2012-04-17 16:13:19 UTC (rev 114386)
@@ -1,3 +1,30 @@
+2012-04-17 Christophe Dumez <[email protected]>
+
+ [EFL] DRT should support LayoutTestController's dumpFrameLoadCallbacks()
+ https://bugs.webkit.org/show_bug.cgi?id=83030
+
+ Reviewed by Antonio Gomes.
+
+ Implement support for LayoutTestController's dumpFrameLoadCallbacks()
+ in EFL's DumpRenderTree. Make use of the new frame argument passed to
+ the "load,started" and "load,finished" signals.
+
+ * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
+ (DumpRenderTreeChrome::createView):
+ (DumpRenderTreeChrome::onLoadStarted):
+ (DumpRenderTreeChrome::processWork):
+ (DumpRenderTreeChrome::topLoadingFrameLoadFinished):
+ (DumpRenderTreeChrome::onWebViewOnloadEvent):
+ (DumpRenderTreeChrome::onInsecureContentRun):
+ (DumpRenderTreeChrome::onInsecureContentDisplayed):
+ (DumpRenderTreeChrome::onFrameCreated):
+ (DumpRenderTreeChrome::onFrameProvisionalLoad):
+ (DumpRenderTreeChrome::onFrameLoadCommitted):
+ (DumpRenderTreeChrome::onFrameLoadFinished):
+ (DumpRenderTreeChrome::onFrameLoadError):
+ * DumpRenderTree/efl/DumpRenderTreeChrome.h:
+ (DumpRenderTreeChrome):
+
2012-04-17 Sheriff Bot <[email protected]>
Unreviewed, rolling out r114376.
Modified: trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp (114385 => 114386)
--- trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp 2012-04-17 16:12:25 UTC (rev 114385)
+++ trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp 2012-04-17 16:13:19 UTC (rev 114386)
@@ -90,13 +90,22 @@
ewk_view_theme_set(view, DATA_DIR"/default.edj");
evas_object_smart_callback_add(view, "load,started", onLoadStarted, 0);
- evas_object_smart_callback_add(view, "load,finished", onLoadFinished, 0);
evas_object_smart_callback_add(view, "title,changed", onTitleChanged, 0);
evas_object_smart_callback_add(view, "window,object,cleared", onWindowObjectCleared, m_gcController.get());
evas_object_smart_callback_add(view, "statusbar,text,set", onStatusbarTextSet, 0);
evas_object_smart_callback_add(view, "load,document,finished", onDocumentLoadFinished, 0);
evas_object_smart_callback_add(view, "resource,request,willsend", onWillSendRequest, 0);
+ evas_object_smart_callback_add(view, "onload,event", onWebViewOnloadEvent, 0);
+ evas_object_smart_callback_add(view, "mixedcontent,run", onInsecureContentRun, 0);
+ evas_object_smart_callback_add(view, "mixedcontent,displayed", onInsecureContentDisplayed, 0);
+ evas_object_smart_callback_add(view, "frame,created", onFrameCreated, 0);
+ Evas_Object* mainFrame = ewk_view_frame_main_get(view);
+ evas_object_smart_callback_add(mainFrame, "load,provisional", onFrameProvisionalLoad, 0);
+ evas_object_smart_callback_add(mainFrame, "load,committed", onFrameLoadCommitted, 0);
+ evas_object_smart_callback_add(mainFrame, "load,finished", onFrameLoadFinished, 0);
+ evas_object_smart_callback_add(mainFrame, "load,error", onFrameLoadError, 0);
+
return view;
}
@@ -220,10 +229,9 @@
WebCoreTestSupport::injectInternalsObject(objectClearedInfo->context);
}
-void DumpRenderTreeChrome::onLoadStarted(void*, Evas_Object* view, void*)
+void DumpRenderTreeChrome::onLoadStarted(void*, Evas_Object* view, void* eventInfo)
{
- // FIXME: we actually need the frame related to this event
- Evas_Object* frame = ewk_view_frame_main_get(view);
+ Evas_Object* frame = static_cast<Evas_Object*>(eventInfo);
// Make sure we only set this once per test. If it gets cleared, and then set again, we might
// end up doing two dumps for one test.
@@ -231,24 +239,16 @@
topLoadingFrame = frame;
}
-Eina_Bool DumpRenderTreeChrome::processWork(void* data)
+Eina_Bool DumpRenderTreeChrome::processWork(void*)
{
- Evas_Object* frame = static_cast<Evas_Object*>(data);
-
if (WorkQueue::shared()->processWork() && !gLayoutTestController->waitToDump())
dump();
return ECORE_CALLBACK_CANCEL;
}
-void DumpRenderTreeChrome::onLoadFinished(void*, Evas_Object* view, void*)
+void DumpRenderTreeChrome::topLoadingFrameLoadFinished()
{
- // FIXME: we actually need the frame related to this event
- Evas_Object* frame = ewk_view_frame_main_get(view);
-
- if (topLoadingFrame != frame)
- return;
-
topLoadingFrame = 0;
WorkQueue::shared()->setFrozen(true);
@@ -256,7 +256,7 @@
return;
if (WorkQueue::shared()->count())
- ecore_idler_add(processWork, frame);
+ ecore_idler_add(processWork, 0 /*frame*/);
else
dump();
}
@@ -314,3 +314,81 @@
request->url = ""
}
}
+
+void DumpRenderTreeChrome::onWebViewOnloadEvent(void*, Evas_Object*, void* eventInfo)
+{
+ const Evas_Object* frame = static_cast<Evas_Object*>(eventInfo);
+
+ if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
+ const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
+ printf("%s - didHandleOnloadEventsForFrame\n", frameName.utf8().data());
+ }
+}
+
+void DumpRenderTreeChrome::onInsecureContentRun(void*, Evas_Object*, void*)
+{
+ if (!done && gLayoutTestController->dumpFrameLoadCallbacks())
+ printf("didRunInsecureContent\n");
+}
+
+void DumpRenderTreeChrome::onInsecureContentDisplayed(void*, Evas_Object*, void*)
+{
+ if (!done && gLayoutTestController->dumpFrameLoadCallbacks())
+ printf("didDisplayInsecureContent\n");
+}
+
+void DumpRenderTreeChrome::onFrameCreated(void*, Evas_Object*, void* eventInfo)
+{
+ Evas_Object* frame = static_cast<Evas_Object*>(eventInfo);
+
+ evas_object_smart_callback_add(frame, "load,provisional", onFrameProvisionalLoad, 0);
+ evas_object_smart_callback_add(frame, "load,committed", onFrameLoadCommitted, 0);
+ evas_object_smart_callback_add(frame, "load,finished", onFrameLoadFinished, 0);
+ evas_object_smart_callback_add(frame, "load,error", onFrameLoadError, 0);
+}
+
+void DumpRenderTreeChrome::onFrameProvisionalLoad(void*, Evas_Object* frame, void*)
+{
+ if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
+ const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
+ printf("%s - didStartProvisionalLoadForFrame\n", frameName.utf8().data());
+ }
+}
+
+void DumpRenderTreeChrome::onFrameLoadCommitted(void*, Evas_Object* frame, void*)
+{
+ if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
+ const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
+ printf("%s - didCommitLoadForFrame\n", frameName.utf8().data());
+ }
+}
+
+void DumpRenderTreeChrome::onFrameLoadFinished(void*, Evas_Object* frame, void* eventInfo)
+{
+ const Ewk_Frame_Load_Error* error = static_cast<Ewk_Frame_Load_Error*>(eventInfo);
+
+ // EFL port emits both "load,finished" and "load,error" signals in error case.
+ // Error case is therefore already handled in onFrameLoadError() and we don't need
+ // to handle it here.
+ if (error)
+ return;
+
+ if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
+ const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
+ printf("%s - didFinishLoadForFrame\n", frameName.utf8().data());
+ }
+
+ if (frame == topLoadingFrame)
+ topLoadingFrameLoadFinished();
+}
+
+void DumpRenderTreeChrome::onFrameLoadError(void*, Evas_Object* frame, void*)
+{
+ if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {
+ const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
+ printf("%s - didFailLoadWithError\n", frameName.utf8().data());
+ }
+
+ if (frame == topLoadingFrame)
+ topLoadingFrameLoadFinished();
+}
Modified: trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h (114385 => 114386)
--- trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h 2012-04-17 16:12:25 UTC (rev 114385)
+++ trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h 2012-04-17 16:13:19 UTC (rev 114386)
@@ -68,7 +68,7 @@
static Eina_Bool processWork(void*);
- static void onLoadFinished(void*, Evas_Object*, void*);
+ static void topLoadingFrameLoadFinished();
static void onStatusbarTextSet(void*, Evas_Object*, void*);
@@ -77,6 +77,22 @@
static void onDocumentLoadFinished(void*, Evas_Object*, void*);
static void onWillSendRequest(void*, Evas_Object*, void*);
+
+ static void onWebViewOnloadEvent(void*, Evas_Object*, void*);
+
+ static void onInsecureContentRun(void*, Evas_Object*, void*);
+
+ static void onInsecureContentDisplayed(void*, Evas_Object*, void*);
+
+ static void onFrameCreated(void*, Evas_Object*, void*);
+
+ static void onFrameProvisionalLoad(void*, Evas_Object*, void*);
+
+ static void onFrameLoadCommitted(void*, Evas_Object*, void*);
+
+ static void onFrameLoadFinished(void*, Evas_Object*, void*);
+
+ static void onFrameLoadError(void*, Evas_Object*, void*);
};
#endif // DumpRenderTreeChrome_h