Changeset 122952 in webkit


Ignore:
Timestamp:
Jul 18, 2012, 5:50:15 AM (13 years ago)
Author:
commit-queue@webkit.org
Message:

[EFL][DRT] Add support for Web Inspector in WebKit-EFL DRT
https://bugs.webkit.org/show_bug.cgi?id=87935

Patch by Seokju Kwon <seokju.kwon@samsung.com> on 2012-07-18
Reviewed by Andreas Kling.

Source/WebKit/efl:

Add implementation of DumpRenderTreeSupportEfl::evaluateInWebInspector().
Some scripts for test should be evaluated in frontend.

  • WebCoreSupport/DumpRenderTreeSupportEfl.cpp:

(DumpRenderTreeSupportEfl::evaluateInWebInspector):

  • WebCoreSupport/DumpRenderTreeSupportEfl.h:

Tools:

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):

LayoutTests:

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:
Location:
trunk
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r122951 r122952  
     12012-07-18  Seokju Kwon  <seokju.kwon@samsung.com>
     2
     3        [EFL][DRT] Add support for Web Inspector in WebKit-EFL DRT
     4        https://bugs.webkit.org/show_bug.cgi?id=87935
     5
     6        Reviewed by Andreas Kling.
     7
     8        Remove the following tests from Skipped list.
     9        LayoutTests/inspector
     10        LayoutTests/http/test/inspector
     11        LayoutTests/http/test/inspector-enabled
     12        LayoutTests/http/tests/inspector/network/ping.html
     13
     14        * platform/efl/Skipped:
     15
    1162012-07-18  Vsevolod Vlasov  <vsevik@chromium.org>
    217
  • trunk/LayoutTests/platform/efl/Skipped

    r122843 r122952  
    235235accessibility
    236236
    237 # The EFL port has no support for the web inspector
    238 inspector
    239 http/tests/inspector
    240 http/tests/inspector-enabled
    241 
    242237# The EFL port has no support for device motion and orientation
    243238fast/dom/DeviceMotion
     
    542537fast/repaint/no-caret-repaint-in-non-content-editable-element.html
    543538http/tests/canvas/webgl/origin-clean-conformance.html
    544 http/tests/inspector/network/ping.html
    545539http/tests/navigation/go-back-to-error-page.html
    546540loader/go-back-to-different-window-size.html
  • trunk/Source/WebKit/efl/ChangeLog

    r122868 r122952  
     12012-07-18  Seokju Kwon  <seokju.kwon@samsung.com>
     2
     3        [EFL][DRT] Add support for Web Inspector in WebKit-EFL DRT
     4        https://bugs.webkit.org/show_bug.cgi?id=87935
     5
     6        Reviewed by Andreas Kling.
     7
     8        Add implementation of DumpRenderTreeSupportEfl::evaluateInWebInspector().
     9        Some scripts for test should be evaluated in frontend.
     10
     11        * WebCoreSupport/DumpRenderTreeSupportEfl.cpp:
     12        (DumpRenderTreeSupportEfl::evaluateInWebInspector):
     13        * WebCoreSupport/DumpRenderTreeSupportEfl.h:
     14
    1152012-07-17  Christophe Dumez  <christophe.dumez@intel.com>
    216
  • trunk/Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp

    r122204 r122952  
    521521}
    522522
     523void DumpRenderTreeSupportEfl::evaluateInWebInspector(const Evas_Object* ewkView, long callId, const String& script)
     524{
     525#if ENABLE(INSPECTOR)
     526    WebCore::Page* page = EWKPrivate::corePage(ewkView);
     527    if (!page)
     528        return;
     529
     530    if (page->inspectorController())
     531        page->inspectorController()->evaluateForTestInFrontend(callId, script);
     532#endif
     533}
     534
    523535void DumpRenderTreeSupportEfl::evaluateScriptInIsolatedWorld(const Evas_Object* ewkFrame, int worldID, JSObjectRef globalObject, const String& script)
    524536{
  • trunk/Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.h

    r122204 r122952  
    9595    static String historyItemTarget(const Ewk_History_Item*);
    9696    static bool isTargetItem(const Ewk_History_Item*);
     97    static void evaluateInWebInspector(const Evas_Object* ewkView, long callId, const String& script);
    9798    static void evaluateScriptInIsolatedWorld(const Evas_Object* ewkFrame, int worldID, JSObjectRef globalObject, const String& script);
    9899    static JSGlobalContextRef globalContextRefForFrame(const Evas_Object* ewkFrame);
  • trunk/Tools/ChangeLog

    r122947 r122952  
     12012-07-18  Seokju Kwon  <seokju.kwon@samsung.com>
     2
     3        [EFL][DRT] Add support for Web Inspector in WebKit-EFL DRT
     4        https://bugs.webkit.org/show_bug.cgi?id=87935
     5
     6        Reviewed by Andreas Kling.
     7
     8        Web Inspector will be shown when path or url contains "inspector/".
     9        Dumprendertree should wait util web inspector resources are loaded totally
     10        and handle the signals for creating or removing a view of web inspector.
     11        ("inspector,view,create" and "inspector,view,close")
     12
     13        * DumpRenderTree/efl/DumpRenderTree.cpp:
     14        (shouldOpenWebInspector):
     15        (createLayoutTestController):
     16        * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
     17        (DumpRenderTreeChrome::createView):
     18        (DumpRenderTreeChrome::createWebInspectorView):
     19        (DumpRenderTreeChrome::removeWebInspectorView):
     20        (DumpRenderTreeChrome::waitInspectorLoadFinished):
     21        (DumpRenderTreeChrome::onInspectorViewCreate):
     22        (DumpRenderTreeChrome::onInspectorViewClose):
     23        (DumpRenderTreeChrome::onInspectorFrameLoadFinished):
     24        * DumpRenderTree/efl/DumpRenderTreeChrome.h:
     25        (DumpRenderTreeChrome):
     26        * DumpRenderTree/efl/DumpRenderTreeView.cpp:
     27        (onConsoleMessage):
     28        * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
     29        (LayoutTestController::showWebInspector):
     30        (LayoutTestController::closeWebInspector):
     31        (LayoutTestController::evaluateInWebInspector):
     32
    1332012-07-18  Simon Hausmann  <simon.hausmann@nokia.com>
    234
  • trunk/Tools/DumpRenderTree/efl/DumpRenderTree.cpp

    r122798 r122952  
    149149}
    150150
     151static bool shouldOpenWebInspector(const String& pathOrURL)
     152{
     153    return pathOrURL.contains("inspector/");
     154}
     155
    151156static void sendPixelResultsEOF()
    152157{
     
    252257
    253258    gLayoutTestController->setDeveloperExtrasEnabled(true);
     259    if (shouldOpenWebInspector(testURL))
     260        gLayoutTestController->showWebInspector();
     261
    254262    gLayoutTestController->setDumpHistoryDelegateCallbacks(isGlobalHistoryTest(testURL));
    255263
  • trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp

    r120692 r122952  
    115115    evas_object_smart_callback_add(view, "perform,client,redirect", onWebViewClientRedirect, 0);
    116116    evas_object_smart_callback_add(view, "populate,visited,links", onWebViewPopulateVisitedLinks, 0);
     117    evas_object_smart_callback_add(view, "inspector,view,create", onInspectorViewCreate, 0);
     118    evas_object_smart_callback_add(view, "inspector,view,close", onInspectorViewClose, 0);
    117119
    118120    connectEditingCallbacks(view);
     
    134136
    135137    return view;
     138}
     139
     140Evas_Object* DumpRenderTreeChrome::createWebInspectorView()
     141{
     142    Evas_Object* inspectorView = drtViewAdd(m_evas);
     143    if (!inspectorView)
     144        return 0;
     145
     146    ewk_view_theme_set(inspectorView, DATA_DIR"/default.edj");
     147
     148    Evas_Object* mainFrame = ewk_view_frame_main_get(inspectorView);
     149    evas_object_smart_callback_add(mainFrame, "load,finished", onInspectorFrameLoadFinished, 0);
     150
     151    evas_object_resize(inspectorView, LayoutTestController::maxViewWidth, LayoutTestController::maxViewHeight);
     152    evas_object_show(inspectorView);
     153    evas_object_focus_set(inspectorView, true);
     154
     155    return inspectorView;
     156}
     157
     158void DumpRenderTreeChrome::removeWebInspectorView()
     159{
     160    Evas_Object* inspectorView = ewk_view_web_inspector_view_get(mainView());
     161    if (!inspectorView)
     162        return;
     163
     164    Evas_Object* mainFrame = ewk_view_frame_main_get(inspectorView);
     165    evas_object_smart_callback_del(mainFrame, "load,finished", onInspectorFrameLoadFinished);
     166
     167    evas_object_del(inspectorView);
     168    ewk_view_web_inspector_view_set(mainView(), 0);
     169}
     170
     171void DumpRenderTreeChrome::waitInspectorLoadFinished()
     172{
     173    // Waits until the page has finished loading.
     174    // Because it can't complete loading inspector.html before loading testURL.
     175    Evas_Object* inspectorView = ewk_view_web_inspector_view_get(mainView());
     176    if (inspectorView)
     177        ecore_main_loop_begin();
    136178}
    137179
     
    620662}
    621663
     664void DumpRenderTreeChrome::onInspectorViewCreate(void*, Evas_Object*, void*)
     665{
     666    Evas_Object* inspectorView = browser->createWebInspectorView();
     667    if (inspectorView)
     668        ewk_view_web_inspector_view_set(browser->mainView(), inspectorView);
     669}
     670
     671void DumpRenderTreeChrome::onInspectorViewClose(void*, Evas_Object*, void*)
     672{
     673    browser->removeWebInspectorView();
     674}
     675
     676void DumpRenderTreeChrome::onInspectorFrameLoadFinished(void*, Evas_Object*, void*)
     677{
     678    Evas_Object* inspectorView = ewk_view_web_inspector_view_get(browser->mainView());
     679    if (inspectorView)
     680        ecore_main_loop_quit();
     681}
     682
    622683void DumpRenderTreeChrome::onFrameProvisionalLoad(void*, Evas_Object* frame, void*)
    623684{
  • trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h

    r119590 r122952  
    4848    Evas_Object* createNewWindow();
    4949    void removeWindow(Evas_Object*);
     50
     51    Evas_Object* createWebInspectorView();
     52    void removeWebInspectorView();
     53    void waitInspectorLoadFinished();
    5054
    5155    const Vector<Evas_Object*>& extraViews() const;
     
    106110    static void onFrameCreated(void*, Evas_Object*, void*);
    107111
     112    static void onInspectorViewCreate(void*, Evas_Object*, void*);
     113
     114    static void onInspectorViewClose(void*, Evas_Object*, void*);
     115
     116    static void onInspectorFrameLoadFinished(void*, Evas_Object*, void*);
     117
    108118    static void onFrameIconChanged(void*, Evas_Object*, void*);
    109119
  • trunk/Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp

    r120144 r122952  
    6666    }
    6767
     68    // Ignore simple translation-related messages and unnecessary messages
     69    if (newMessage.contains("Localized string") || newMessage.contains("Protocol Error: the message is for non-existing domain 'Profiler'"))
     70        return;
     71
    6872    printf("CONSOLE MESSAGE: ");
    6973    if (lineNumber)
  • trunk/Tools/DumpRenderTree/efl/LayoutTestControllerEfl.cpp

    r122204 r122952  
    766766void LayoutTestController::showWebInspector()
    767767{
    768     notImplemented();
     768    ewk_view_web_inspector_show(browser->mainView());
     769    browser->waitInspectorLoadFinished();
    769770}
    770771
    771772void LayoutTestController::closeWebInspector()
    772773{
    773     notImplemented();
    774 }
    775 
    776 void LayoutTestController::evaluateInWebInspector(long, JSStringRef)
    777 {
    778     notImplemented();
     774    ewk_view_web_inspector_close(browser->mainView());
     775}
     776
     777void LayoutTestController::evaluateInWebInspector(long callId, JSStringRef script)
     778{
     779    DumpRenderTreeSupportEfl::evaluateInWebInspector(browser->mainView(), callId, String(script->ustring().impl()));
    779780}
    780781
Note: See TracChangeset for help on using the changeset viewer.