Diff
Modified: trunk/LayoutTests/ChangeLog (122951 => 122952)
--- trunk/LayoutTests/ChangeLog 2012-07-18 12:43:45 UTC (rev 122951)
+++ trunk/LayoutTests/ChangeLog 2012-07-18 12:50:15 UTC (rev 122952)
@@ -1,3 +1,18 @@
+2012-07-18 Seokju Kwon <[email protected]>
+
+ [EFL][DRT] Add support for Web Inspector in WebKit-EFL DRT
+ https://bugs.webkit.org/show_bug.cgi?id=87935
+
+ Reviewed by Andreas Kling.
+
+ Remove the following tests from Skipped list.
+ LayoutTests/inspector
+ LayoutTests/http/test/inspector
+ LayoutTests/http/test/inspector-enabled
+ LayoutTests/http/tests/inspector/network/ping.html
+
+ * platform/efl/Skipped:
+
2012-07-18 Vsevolod Vlasov <[email protected]>
Unreviewed chromium gardening, unskipped tests.
Modified: trunk/LayoutTests/platform/efl/Skipped (122951 => 122952)
--- trunk/LayoutTests/platform/efl/Skipped 2012-07-18 12:43:45 UTC (rev 122951)
+++ trunk/LayoutTests/platform/efl/Skipped 2012-07-18 12:50:15 UTC (rev 122952)
@@ -234,11 +234,6 @@
# The EFL port has no support for accessibility features
accessibility
-# The EFL port has no support for the web inspector
-inspector
-http/tests/inspector
-http/tests/inspector-enabled
-
# The EFL port has no support for device motion and orientation
fast/dom/DeviceMotion
fast/dom/DeviceOrientation
@@ -541,7 +536,6 @@
fast/history/back-forward-reset-after-error-handling.html
fast/repaint/no-caret-repaint-in-non-content-editable-element.html
http/tests/canvas/webgl/origin-clean-conformance.html
-http/tests/inspector/network/ping.html
http/tests/navigation/go-back-to-error-page.html
loader/go-back-to-different-window-size.html
userscripts/user-script-plugin-document.html
Modified: trunk/Source/WebKit/efl/ChangeLog (122951 => 122952)
--- trunk/Source/WebKit/efl/ChangeLog 2012-07-18 12:43:45 UTC (rev 122951)
+++ trunk/Source/WebKit/efl/ChangeLog 2012-07-18 12:50:15 UTC (rev 122952)
@@ -1,3 +1,17 @@
+2012-07-18 Seokju Kwon <[email protected]>
+
+ [EFL][DRT] Add support for Web Inspector in WebKit-EFL DRT
+ https://bugs.webkit.org/show_bug.cgi?id=87935
+
+ Reviewed by Andreas Kling.
+
+ Add implementation of DumpRenderTreeSupportEfl::evaluateInWebInspector().
+ Some scripts for test should be evaluated in frontend.
+
+ * WebCoreSupport/DumpRenderTreeSupportEfl.cpp:
+ (DumpRenderTreeSupportEfl::evaluateInWebInspector):
+ * WebCoreSupport/DumpRenderTreeSupportEfl.h:
+
2012-07-17 Christophe Dumez <[email protected]>
[EFL] Replace 0 by NULL in public headers documentation
Modified: trunk/Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp (122951 => 122952)
--- trunk/Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp 2012-07-18 12:43:45 UTC (rev 122951)
+++ trunk/Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp 2012-07-18 12:50:15 UTC (rev 122952)
@@ -520,6 +520,18 @@
return historyItem->isTargetItem();
}
+void DumpRenderTreeSupportEfl::evaluateInWebInspector(const Evas_Object* ewkView, long callId, const String& script)
+{
+#if ENABLE(INSPECTOR)
+ WebCore::Page* page = EWKPrivate::corePage(ewkView);
+ if (!page)
+ return;
+
+ if (page->inspectorController())
+ page->inspectorController()->evaluateForTestInFrontend(callId, script);
+#endif
+}
+
void DumpRenderTreeSupportEfl::evaluateScriptInIsolatedWorld(const Evas_Object* ewkFrame, int worldID, JSObjectRef globalObject, const String& script)
{
WebCore::Frame* coreFrame = EWKPrivate::coreFrame(ewkFrame);
Modified: trunk/Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.h (122951 => 122952)
--- trunk/Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.h 2012-07-18 12:43:45 UTC (rev 122951)
+++ trunk/Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.h 2012-07-18 12:50:15 UTC (rev 122952)
@@ -94,6 +94,7 @@
static HistoryItemChildrenVector childHistoryItems(const Ewk_History_Item*);
static String historyItemTarget(const Ewk_History_Item*);
static bool isTargetItem(const Ewk_History_Item*);
+ static void evaluateInWebInspector(const Evas_Object* ewkView, long callId, const String& script);
static void evaluateScriptInIsolatedWorld(const Evas_Object* ewkFrame, int worldID, JSObjectRef globalObject, const String& script);
static JSGlobalContextRef globalContextRefForFrame(const Evas_Object* ewkFrame);
Modified: trunk/Tools/ChangeLog (122951 => 122952)
--- trunk/Tools/ChangeLog 2012-07-18 12:43:45 UTC (rev 122951)
+++ trunk/Tools/ChangeLog 2012-07-18 12:50:15 UTC (rev 122952)
@@ -1,3 +1,35 @@
+2012-07-18 Seokju Kwon <[email protected]>
+
+ [EFL][DRT] Add support for Web Inspector in WebKit-EFL DRT
+ https://bugs.webkit.org/show_bug.cgi?id=87935
+
+ Reviewed by Andreas Kling.
+
+ Web Inspector will be shown when path or url contains "inspector/".
+ Dumprendertree should wait util web inspector resources are loaded totally
+ and handle the signals for creating or removing a view of web inspector.
+ ("inspector,view,create" and "inspector,view,close")
+
+ * DumpRenderTree/efl/DumpRenderTree.cpp:
+ (shouldOpenWebInspector):
+ (createLayoutTestController):
+ * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
+ (DumpRenderTreeChrome::createView):
+ (DumpRenderTreeChrome::createWebInspectorView):
+ (DumpRenderTreeChrome::removeWebInspectorView):
+ (DumpRenderTreeChrome::waitInspectorLoadFinished):
+ (DumpRenderTreeChrome::onInspectorViewCreate):
+ (DumpRenderTreeChrome::onInspectorViewClose):
+ (DumpRenderTreeChrome::onInspectorFrameLoadFinished):
+ * DumpRenderTree/efl/DumpRenderTreeChrome.h:
+ (DumpRenderTreeChrome):
+ * DumpRenderTree/efl/DumpRenderTreeView.cpp:
+ (onConsoleMessage):
+ * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
+ (LayoutTestController::showWebInspector):
+ (LayoutTestController::closeWebInspector):
+ (LayoutTestController::evaluateInWebInspector):
+
2012-07-18 Simon Hausmann <[email protected]>
[ANGLE] On QT, use Bison and Flex during ANGLE build
Modified: trunk/Tools/DumpRenderTree/efl/DumpRenderTree.cpp (122951 => 122952)
--- trunk/Tools/DumpRenderTree/efl/DumpRenderTree.cpp 2012-07-18 12:43:45 UTC (rev 122951)
+++ trunk/Tools/DumpRenderTree/efl/DumpRenderTree.cpp 2012-07-18 12:50:15 UTC (rev 122952)
@@ -148,6 +148,11 @@
return pathOrURL.contains("dumpAsText/");
}
+static bool shouldOpenWebInspector(const String& pathOrURL)
+{
+ return pathOrURL.contains("inspector/");
+}
+
static void sendPixelResultsEOF()
{
puts("#EOF");
@@ -251,6 +256,9 @@
gLayoutTestController->setDumpFrameLoadCallbacks(true);
gLayoutTestController->setDeveloperExtrasEnabled(true);
+ if (shouldOpenWebInspector(testURL))
+ gLayoutTestController->showWebInspector();
+
gLayoutTestController->setDumpHistoryDelegateCallbacks(isGlobalHistoryTest(testURL));
if (shouldDumpAsText(testURL)) {
Modified: trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp (122951 => 122952)
--- trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp 2012-07-18 12:43:45 UTC (rev 122951)
+++ trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp 2012-07-18 12:50:15 UTC (rev 122952)
@@ -114,6 +114,8 @@
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 @@
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);
@@ -619,6 +661,25 @@
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()) {
Modified: trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h (122951 => 122952)
--- trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h 2012-07-18 12:43:45 UTC (rev 122951)
+++ trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h 2012-07-18 12:50:15 UTC (rev 122952)
@@ -48,6 +48,10 @@
Evas_Object* createNewWindow();
void removeWindow(Evas_Object*);
+ Evas_Object* createWebInspectorView();
+ void removeWebInspectorView();
+ void waitInspectorLoadFinished();
+
const Vector<Evas_Object*>& extraViews() const;
void clearExtraViews();
@@ -105,6 +109,12 @@
static void onFrameCreated(void*, Evas_Object*, void*);
+ static void onInspectorViewCreate(void*, Evas_Object*, void*);
+
+ static void onInspectorViewClose(void*, Evas_Object*, void*);
+
+ static void onInspectorFrameLoadFinished(void*, Evas_Object*, void*);
+
static void onFrameIconChanged(void*, Evas_Object*, void*);
static void onFrameProvisionalLoad(void*, Evas_Object*, void*);
Modified: trunk/Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp (122951 => 122952)
--- trunk/Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp 2012-07-18 12:43:45 UTC (rev 122951)
+++ trunk/Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp 2012-07-18 12:50:15 UTC (rev 122952)
@@ -65,6 +65,10 @@
newMessage = newMessage.left(fileProtocol) + urlSuitableForTestResult(newMessage.substring(fileProtocol));
}
+ // Ignore simple translation-related messages and unnecessary messages
+ if (newMessage.contains("Localized string") || newMessage.contains("Protocol Error: the message is for non-existing domain 'Profiler'"))
+ return;
+
printf("CONSOLE MESSAGE: ");
if (lineNumber)
printf("line %u: ", lineNumber);
Modified: trunk/Tools/DumpRenderTree/efl/LayoutTestControllerEfl.cpp (122951 => 122952)
--- trunk/Tools/DumpRenderTree/efl/LayoutTestControllerEfl.cpp 2012-07-18 12:43:45 UTC (rev 122951)
+++ trunk/Tools/DumpRenderTree/efl/LayoutTestControllerEfl.cpp 2012-07-18 12:50:15 UTC (rev 122952)
@@ -765,17 +765,18 @@
void LayoutTestController::showWebInspector()
{
- notImplemented();
+ ewk_view_web_inspector_show(browser->mainView());
+ browser->waitInspectorLoadFinished();
}
void LayoutTestController::closeWebInspector()
{
- notImplemented();
+ ewk_view_web_inspector_close(browser->mainView());
}
-void LayoutTestController::evaluateInWebInspector(long, JSStringRef)
+void LayoutTestController::evaluateInWebInspector(long callId, JSStringRef script)
{
- notImplemented();
+ DumpRenderTreeSupportEfl::evaluateInWebInspector(browser->mainView(), callId, String(script->ustring().impl()));
}
void LayoutTestController::evaluateScriptInIsolatedWorldAndReturnValue(unsigned, JSObjectRef, JSStringRef)