diff options
Diffstat (limited to 'Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp')
| -rw-r--r-- | Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp | 86 |
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()) { |
