Diff
Modified: trunk/LayoutTests/ChangeLog (114375 => 114376)
--- trunk/LayoutTests/ChangeLog 2012-04-17 14:15:38 UTC (rev 114375)
+++ trunk/LayoutTests/ChangeLog 2012-04-17 15:02:36 UTC (rev 114376)
@@ -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 Allan Sandfeld Jensen <[email protected]>
Asserts in XMLHttpRequestProgressEventThrottle
Modified: trunk/LayoutTests/platform/efl/Skipped (114375 => 114376)
--- trunk/LayoutTests/platform/efl/Skipped 2012-04-17 14:15:38 UTC (rev 114375)
+++ trunk/LayoutTests/platform/efl/Skipped 2012-04-17 15:02:36 UTC (rev 114376)
@@ -754,7 +754,6 @@
fast/history/back-forward-reset-after-error-handling.html
# Missing delegates: tests which need proper frame loader callbacks reporting
-http/tests/security/mixedContent/empty-url-plugin-in-frame.html
fast/loader/file-protocol-fragment.html
# Missing delegates: tests failing because of missing resource load delegate callbacks.
@@ -1163,7 +1162,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 +1366,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
@@ -2331,21 +2328,11 @@
http/tests/security/frameNavigation/not-opener.html
http/tests/security/local-image-from-remote-whitelisted.html
http/tests/security/local-user-CSS-from-remote.html
-http/tests/security/mixedContent/about-blank-iframe-in-main-frame.html
-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
http/tests/security/mixedContent/insecure-image-in-main-frame.html
http/tests/security/mixedContent/insecure-plugin-in-iframe.html
http/tests/security/mixedContent/insecure-script-in-iframe.html
http/tests/security/mixedContent/redirect-http-to-https-iframe-in-main-frame.html
-http/tests/security/mixedContent/redirect-http-to-https-script-in-iframe.html
http/tests/security/mixedContent/redirect-https-to-http-iframe-in-main-frame.html
-http/tests/security/mixedContent/redirect-https-to-http-script-in-iframe.html
http/tests/security/no-referrer.html
http/tests/security/originHeader/origin-header-for-empty.html
http/tests/security/originHeader/origin-header-for-https.html
Modified: trunk/Source/WebKit/efl/ChangeLog (114375 => 114376)
--- trunk/Source/WebKit/efl/ChangeLog 2012-04-17 14:15:38 UTC (rev 114375)
+++ trunk/Source/WebKit/efl/ChangeLog 2012-04-17 15:02:36 UTC (rev 114376)
@@ -1,3 +1,34 @@
+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. We no longer emit the "load,finished" signal
+ from postProgressFinishedNotification() since it is already emitted
+ from dispatchDidFinishLoad(). This avoids unwanted extra signals we
+ prevent some tests from passing (e.g.
+ http/tests/security/mixedContent/about-blank-iframe-in-main-frame.html).
+
+ * WebCoreSupport/FrameLoaderClientEfl.cpp:
+ (WebCore::FrameLoaderClientEfl::postProgressFinishedNotification):
+ (WebCore::FrameLoaderClientEfl::dispatchDidFinishLoad):
+ (WebCore::FrameLoaderClientEfl::dispatchDidHandleOnloadEvents):
+ (WebCore::FrameLoaderClientEfl::dispatchDidCommitLoad):
+ (WebCore::FrameLoaderClientEfl::dispatchDidFailLoad):
+ * WebCoreSupport/FrameLoaderClientEfl.h:
+ (FrameLoaderClientEfl):
+ * ewk/ewk_frame.cpp:
+ (ewk_frame_load_committed):
+ * ewk/ewk_frame.h:
+ * ewk/ewk_private.h:
+ * ewk/ewk_view.cpp:
+ (_Ewk_View_Private_Data):
+ (ewk_view_onload_event):
+ * ewk/ewk_view.h:
+
2012-04-17 Mariusz Grzegorczyk <[email protected]>
[EFL][WK2] Fix build break when CONTEXT_MENUS is disabled.
Modified: trunk/Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp (114375 => 114376)
--- trunk/Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp 2012-04-17 14:15:38 UTC (rev 114375)
+++ trunk/Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp 2012-04-17 15:02:36 UTC (rev 114376)
@@ -232,16 +232,7 @@
void FrameLoaderClientEfl::postProgressFinishedNotification()
{
- if (m_loadError.isNull())
- ewk_frame_load_finished(m_frame, 0, 0, 0, 0, 0);
- else {
- ewk_frame_load_finished(m_frame,
- m_loadError.domain().utf8().data(),
- m_loadError.errorCode(),
- m_loadError.isCancellation(),
- m_loadError.localizedDescription().utf8().data(),
- m_loadError.failingURL().utf8().data());
- }
+ notImplemented();
}
void FrameLoaderClientEfl::frameLoaderDestroyed()
@@ -457,7 +448,7 @@
void FrameLoaderClientEfl::dispatchDidFinishLoad()
{
- m_loadError = ResourceError(); /* clears previous error */
+ ewk_frame_load_finished(m_frame, 0, 0, 0, 0, 0);
}
void FrameLoaderClientEfl::frameLoadCompleted()
@@ -544,7 +535,7 @@
void FrameLoaderClientEfl::dispatchDidHandleOnloadEvents()
{
- notImplemented();
+ ewk_view_onload_event(m_view, m_frame);
}
void FrameLoaderClientEfl::dispatchDidReceiveServerRedirectForProvisionalLoad()
@@ -611,6 +602,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,15 +753,18 @@
void FrameLoaderClientEfl::dispatchDidFailLoad(const ResourceError& err)
{
- if (!shouldFallBack(err))
- return;
-
- m_loadError = err;
ewk_frame_load_error(m_frame,
- m_loadError.domain().utf8().data(),
- m_loadError.errorCode(), m_loadError.isCancellation(),
- m_loadError.localizedDescription().utf8().data(),
- m_loadError.failingURL().utf8().data());
+ err.domain().utf8().data(),
+ err.errorCode(), err.isCancellation(),
+ err.localizedDescription().utf8().data(),
+ err.failingURL().utf8().data());
+
+ ewk_frame_load_finished(m_frame,
+ err.domain().utf8().data(),
+ err.errorCode(),
+ err.isCancellation(),
+ err.localizedDescription().utf8().data(),
+ err.failingURL().utf8().data());
}
void FrameLoaderClientEfl::download(ResourceHandle*, const ResourceRequest& request, const ResourceResponse&)
Modified: trunk/Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.h (114375 => 114376)
--- trunk/Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.h 2012-04-17 14:15:38 UTC (rev 114375)
+++ trunk/Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.h 2012-04-17 15:02:36 UTC (rev 114376)
@@ -212,8 +212,6 @@
String m_userAgent;
String m_customUserAgent;
- ResourceError m_loadError;
-
// Plugin view to redirect data to
PluginView* m_pluginView;
bool m_hasSentResponseToPlugin;
Modified: trunk/Source/WebKit/efl/ewk/ewk_frame.cpp (114375 => 114376)
--- trunk/Source/WebKit/efl/ewk/ewk_frame.cpp 2012-04-17 14:15:38 UTC (rev 114375)
+++ trunk/Source/WebKit/efl/ewk/ewk_frame.cpp 2012-04-17 15:02:36 UTC (rev 114376)
@@ -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.
Modified: trunk/Source/WebKit/efl/ewk/ewk_frame.h (114375 => 114376)
--- trunk/Source/WebKit/efl/ewk/ewk_frame.h 2012-04-17 14:15:38 UTC (rev 114375)
+++ trunk/Source/WebKit/efl/ewk/ewk_frame.h 2012-04-17 15:02:36 UTC (rev 114376)
@@ -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 (114375 => 114376)
--- trunk/Source/WebKit/efl/ewk/ewk_private.h 2012-04-17 14:15:38 UTC (rev 114375)
+++ trunk/Source/WebKit/efl/ewk/ewk_private.h 2012-04-17 15:02:36 UTC (rev 114376)
@@ -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 (114375 => 114376)
--- trunk/Source/WebKit/efl/ewk/ewk_view.cpp 2012-04-17 14:15:38 UTC (rev 114375)
+++ trunk/Source/WebKit/efl/ewk/ewk_view.cpp 2012-04-17 15:02:36 UTC (rev 114376)
@@ -2864,6 +2864,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 (114375 => 114376)
--- trunk/Source/WebKit/efl/ewk/ewk_view.h 2012-04-17 14:15:38 UTC (rev 114375)
+++ trunk/Source/WebKit/efl/ewk/ewk_view.h 2012-04-17 15:02:36 UTC (rev 114376)
@@ -66,6 +66,7 @@
* - "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 (114375 => 114376)
--- trunk/Tools/ChangeLog 2012-04-17 14:15:38 UTC (rev 114375)
+++ trunk/Tools/ChangeLog 2012-04-17 15:02:36 UTC (rev 114376)
@@ -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.
+
+ Implement support for LayoutTestController's dumpFrameLoadCallbacks()
+ in EFL's DumpRenderTree.
+
+ * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
+ (DumpRenderTreeChrome::createView):
+ (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 Michael BrĂ¼ning <[email protected]>
[Qt] Fix builds with force_static_libs_as_shared for non-linux builds.
Modified: trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp (114375 => 114376)
--- trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp 2012-04-17 14:15:38 UTC (rev 114375)
+++ trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp 2012-04-17 15:02:36 UTC (rev 114376)
@@ -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;
}
@@ -231,24 +240,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 +257,7 @@
return;
if (WorkQueue::shared()->count())
- ecore_idler_add(processWork, frame);
+ ecore_idler_add(processWork, 0 /*frame*/);
else
dump();
}
@@ -314,3 +315,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 (114375 => 114376)
--- trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h 2012-04-17 14:15:38 UTC (rev 114375)
+++ trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h 2012-04-17 15:02:36 UTC (rev 114376)
@@ -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