summaryrefslogtreecommitdiff
path: root/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp')
-rw-r--r--Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp86
1 files changed, 77 insertions, 9 deletions
diff --git a/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp b/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp
index 8a901c41d..cc2f05bc2 100644
--- a/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp
+++ b/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp
@@ -114,6 +114,8 @@ Evas_Object* DumpRenderTreeChrome::createView() const
evas_object_smart_callback_add(view, "perform,server,redirect", onWebViewServerRedirect, 0);
evas_object_smart_callback_add(view, "perform,client,redirect", onWebViewClientRedirect, 0);
evas_object_smart_callback_add(view, "populate,visited,links", onWebViewPopulateVisitedLinks, 0);
+ evas_object_smart_callback_add(view, "inspector,view,create", onInspectorViewCreate, 0);
+ evas_object_smart_callback_add(view, "inspector,view,close", onInspectorViewClose, 0);
connectEditingCallbacks(view);
@@ -135,6 +137,46 @@ Evas_Object* DumpRenderTreeChrome::createView() const
return view;
}
+Evas_Object* DumpRenderTreeChrome::createWebInspectorView()
+{
+ Evas_Object* inspectorView = drtViewAdd(m_evas);
+ if (!inspectorView)
+ return 0;
+
+ ewk_view_theme_set(inspectorView, DATA_DIR"/default.edj");
+
+ Evas_Object* mainFrame = ewk_view_frame_main_get(inspectorView);
+ evas_object_smart_callback_add(mainFrame, "load,finished", onInspectorFrameLoadFinished, 0);
+
+ evas_object_resize(inspectorView, LayoutTestController::maxViewWidth, LayoutTestController::maxViewHeight);
+ evas_object_show(inspectorView);
+ evas_object_focus_set(inspectorView, true);
+
+ return inspectorView;
+}
+
+void DumpRenderTreeChrome::removeWebInspectorView()
+{
+ Evas_Object* inspectorView = ewk_view_web_inspector_view_get(mainView());
+ if (!inspectorView)
+ return;
+
+ Evas_Object* mainFrame = ewk_view_frame_main_get(inspectorView);
+ evas_object_smart_callback_del(mainFrame, "load,finished", onInspectorFrameLoadFinished);
+
+ evas_object_del(inspectorView);
+ ewk_view_web_inspector_view_set(mainView(), 0);
+}
+
+void DumpRenderTreeChrome::waitInspectorLoadFinished()
+{
+ // Waits until the page has finished loading.
+ // Because it can't complete loading inspector.html before loading testURL.
+ Evas_Object* inspectorView = ewk_view_web_inspector_view_get(mainView());
+ if (inspectorView)
+ ecore_main_loop_begin();
+}
+
void DumpRenderTreeChrome::removeWindow(Evas_Object* view)
{
const size_t pos = m_extraViews.find(view);
@@ -359,16 +401,23 @@ static CString descriptionSuitableForTestResult(const Ewk_Frame_Resource_Respons
static CString descriptionSuitableForTestResult(Ewk_Frame_Load_Error* error)
{
- String ret = "<NSError domain ";
- ret += error->domain;
- ret += ", code ";
- ret += String::number(error->code);
- if (error->failing_url && *error->failing_url != '\0') {
- ret += ", failing URL \"";
- ret += error->failing_url;
- ret += "\"";
+ const char* errorDomain = error->domain;
+ int errorCode = error->code;
+
+ // We need to do some error mapping here to match
+ // the test expectations.
+ if (!strcmp(error->domain, "WebKitNetworkError")) {
+ errorDomain = "NSURLErrorDomain";
+ errorCode = -999;
}
- ret += ">";
+
+ if (!strcmp(errorDomain, "WebKitPolicyError"))
+ errorDomain = "WebKitErrorDomain";
+
+ String ret = makeString("<NSError domain ", errorDomain, ", code ", String::number(errorCode));
+ if (error->failing_url && *error->failing_url != '\0')
+ ret = makeString(ret, ", failing URL \"", error->failing_url, "\"");
+ ret = makeString(ret, ">");
return ret.utf8();
}
@@ -619,6 +668,25 @@ void DumpRenderTreeChrome::onWebViewPopulateVisitedLinks(void*, Evas_Object* ewk
printf("Asked to populate visited links for WebView \"%s\"\n", ewk_view_uri_get(ewkView));
}
+void DumpRenderTreeChrome::onInspectorViewCreate(void*, Evas_Object*, void*)
+{
+ Evas_Object* inspectorView = browser->createWebInspectorView();
+ if (inspectorView)
+ ewk_view_web_inspector_view_set(browser->mainView(), inspectorView);
+}
+
+void DumpRenderTreeChrome::onInspectorViewClose(void*, Evas_Object*, void*)
+{
+ browser->removeWebInspectorView();
+}
+
+void DumpRenderTreeChrome::onInspectorFrameLoadFinished(void*, Evas_Object*, void*)
+{
+ Evas_Object* inspectorView = ewk_view_web_inspector_view_get(browser->mainView());
+ if (inspectorView)
+ ecore_main_loop_quit();
+}
+
void DumpRenderTreeChrome::onFrameProvisionalLoad(void*, Evas_Object* frame, void*)
{
if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) {