Title: [96943] trunk/Tools
Revision
96943
Author
[email protected]
Date
2011-10-07 09:22:01 -0700 (Fri, 07 Oct 2011)

Log Message

[EFL] DRT: Add DumpRenderTreeChrome.{cpp,h}
https://bugs.webkit.org/show_bug.cgi?id=66380

Patch by Raphael Kubo da Costa <[email protected]> on 2011-10-07
Reviewed by Antonio Gomes.

This encapsulates EWebKit into an object that manages multiple windows
and provides a cleaner interface to EFL's DumpRenderTree.

* DumpRenderTree/efl/DumpRenderTreeChrome.cpp: Added.
(DumpRenderTreeChrome::create):
(DumpRenderTreeChrome::DumpRenderTreeChrome):
(DumpRenderTreeChrome::~DumpRenderTreeChrome):
(DumpRenderTreeChrome::createNewWindow):
(DumpRenderTreeChrome::createView):
(DumpRenderTreeChrome::removeWindow):
(DumpRenderTreeChrome::initialize):
(DumpRenderTreeChrome::extraViews):
(DumpRenderTreeChrome::mainFrame):
(DumpRenderTreeChrome::mainView):
(DumpRenderTreeChrome::resetDefaultsToConsistentValues):
(DumpRenderTreeChrome::onWindowObjectCleared):
(DumpRenderTreeChrome::onLoadStarted):
(DumpRenderTreeChrome::processWork):
(DumpRenderTreeChrome::onLoadFinished):
(DumpRenderTreeChrome::onStatusbarTextSet):
(DumpRenderTreeChrome::onTitleChanged):
(DumpRenderTreeChrome::onDocumentLoadFinished):
* DumpRenderTree/efl/DumpRenderTreeChrome.h: Added.
* DumpRenderTree/efl/EventSender.cpp:
(sendClick): Use browser->mainFrame() instead of mainFrame.
(mouseDownCallback): Ditto.
(mouseUpCallback): Ditto.
(mouseMoveToCallback): Ditto.
(mouseScrollByCallback): Ditto.
(keyDownCallback): Ditto.
(scalePageByCallback): Ditto.
* DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
(LayoutTestController::counterValueForElementById): Use
browser->mainFrame() instead of mainFrame.
(LayoutTestController::pageNumberForElementById): Ditto.
(LayoutTestController::numberOfPages): Ditto.
(LayoutTestController::pauseAnimationAtTimeOnElementWithId): Ditto.
(LayoutTestController::pauseTransitionAtTimeOnElementWithId): Ditto.
(LayoutTestController::sampleSVGAnimationForElementAtTime): Ditto.
(LayoutTestController::numberOfActiveAnimations): Ditto.
(LayoutTestController::suspendAnimations): Ditto.
(LayoutTestController::resumeAnimations): Ditto.
(LayoutTestController::setWebViewEditable): Ditto.
(LayoutTestController::webHistoryItemCount): Use browser->mainView()
instead of browser.
(LayoutTestController::queueLoad): Ditto.
(LayoutTestController::setAcceptsEditing): Ditto.
(LayoutTestController::setUserStyleSheetEnabled): Ditto.
(LayoutTestController::setPrivateBrowsingEnabled): Ditto.
(LayoutTestController::setFrameFlatteningEnabled): Ditto.
(LayoutTestController::setSpatialNavigationEnabled): Ditto.
(LayoutTestController::setPluginsEnabled): Ditto.
(LayoutTestController::findString): Ditto.
(LayoutTestController::setDeveloperExtrasEnabled): Ditto.
* DumpRenderTree/efl/PixelDumpSupportEfl.cpp:
(createBitmapContextFromWebView): Use browser->mainFrame() instead of
mainFrame.
* DumpRenderTree/efl/WorkQueueItemEfl.cpp:
(LoadItem::invoke): Ditto.
(LoadHTMLStringItem::invoke): Ditto.
(ScriptItem::invoke): Ditto.
(ReloadItem::invoke): Use browser->mainView() instead of browser.

Modified Paths

Added Paths

Diff

Modified: trunk/Tools/ChangeLog (96942 => 96943)


--- trunk/Tools/ChangeLog	2011-10-07 16:16:28 UTC (rev 96942)
+++ trunk/Tools/ChangeLog	2011-10-07 16:22:01 UTC (rev 96943)
@@ -1,3 +1,73 @@
+2011-10-07  Raphael Kubo da Costa  <[email protected]>
+
+        [EFL] DRT: Add DumpRenderTreeChrome.{cpp,h}
+        https://bugs.webkit.org/show_bug.cgi?id=66380
+
+        Reviewed by Antonio Gomes.
+
+        This encapsulates EWebKit into an object that manages multiple windows
+        and provides a cleaner interface to EFL's DumpRenderTree.
+
+        * DumpRenderTree/efl/DumpRenderTreeChrome.cpp: Added.
+        (DumpRenderTreeChrome::create):
+        (DumpRenderTreeChrome::DumpRenderTreeChrome):
+        (DumpRenderTreeChrome::~DumpRenderTreeChrome):
+        (DumpRenderTreeChrome::createNewWindow):
+        (DumpRenderTreeChrome::createView):
+        (DumpRenderTreeChrome::removeWindow):
+        (DumpRenderTreeChrome::initialize):
+        (DumpRenderTreeChrome::extraViews):
+        (DumpRenderTreeChrome::mainFrame):
+        (DumpRenderTreeChrome::mainView):
+        (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
+        (DumpRenderTreeChrome::onWindowObjectCleared):
+        (DumpRenderTreeChrome::onLoadStarted):
+        (DumpRenderTreeChrome::processWork):
+        (DumpRenderTreeChrome::onLoadFinished):
+        (DumpRenderTreeChrome::onStatusbarTextSet):
+        (DumpRenderTreeChrome::onTitleChanged):
+        (DumpRenderTreeChrome::onDocumentLoadFinished):
+        * DumpRenderTree/efl/DumpRenderTreeChrome.h: Added.
+        * DumpRenderTree/efl/EventSender.cpp:
+        (sendClick): Use browser->mainFrame() instead of mainFrame.
+        (mouseDownCallback): Ditto.
+        (mouseUpCallback): Ditto.
+        (mouseMoveToCallback): Ditto.
+        (mouseScrollByCallback): Ditto.
+        (keyDownCallback): Ditto.
+        (scalePageByCallback): Ditto.
+        * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
+        (LayoutTestController::counterValueForElementById): Use
+        browser->mainFrame() instead of mainFrame.
+        (LayoutTestController::pageNumberForElementById): Ditto.
+        (LayoutTestController::numberOfPages): Ditto.
+        (LayoutTestController::pauseAnimationAtTimeOnElementWithId): Ditto.
+        (LayoutTestController::pauseTransitionAtTimeOnElementWithId): Ditto.
+        (LayoutTestController::sampleSVGAnimationForElementAtTime): Ditto.
+        (LayoutTestController::numberOfActiveAnimations): Ditto.
+        (LayoutTestController::suspendAnimations): Ditto.
+        (LayoutTestController::resumeAnimations): Ditto.
+        (LayoutTestController::setWebViewEditable): Ditto.
+        (LayoutTestController::webHistoryItemCount): Use browser->mainView()
+        instead of browser.
+        (LayoutTestController::queueLoad): Ditto.
+        (LayoutTestController::setAcceptsEditing): Ditto.
+        (LayoutTestController::setUserStyleSheetEnabled): Ditto.
+        (LayoutTestController::setPrivateBrowsingEnabled): Ditto.
+        (LayoutTestController::setFrameFlatteningEnabled): Ditto.
+        (LayoutTestController::setSpatialNavigationEnabled): Ditto.
+        (LayoutTestController::setPluginsEnabled): Ditto.
+        (LayoutTestController::findString): Ditto.
+        (LayoutTestController::setDeveloperExtrasEnabled): Ditto.
+        * DumpRenderTree/efl/PixelDumpSupportEfl.cpp:
+        (createBitmapContextFromWebView): Use browser->mainFrame() instead of
+        mainFrame.
+        * DumpRenderTree/efl/WorkQueueItemEfl.cpp:
+        (LoadItem::invoke): Ditto.
+        (LoadHTMLStringItem::invoke): Ditto.
+        (ScriptItem::invoke): Ditto.
+        (ReloadItem::invoke): Use browser->mainView() instead of browser.
+
 2011-10-07  Simon Hausmann  <[email protected]>
 
         [Qt][WK2] Touch mocking is broken with Qt 5 post refactor merge

Added: trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp (0 => 96943)


--- trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp	                        (rev 0)
+++ trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp	2011-10-07 16:22:01 UTC (rev 96943)
@@ -0,0 +1,282 @@
+/*
+ * Copyright (C) 2011 ProFUSION Embedded Systems
+ * Copyright (C) 2011 Samsung Electronics
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND ITS CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDERS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "DumpRenderTreeChrome.h"
+
+#include "DumpRenderTree.h"
+#include "DumpRenderTreeView.h"
+#include "EventSender.h"
+#include "GCController.h"
+#include "LayoutTestController.h"
+#include "NotImplemented.h"
+#include "WorkQueue.h"
+#include "ewk_private.h" // FIXME: create some WebCoreSupport/DumpRenderTree.cpp instead
+
+#include <EWebKit.h>
+#include <Ecore.h>
+#include <Eina.h>
+#include <Evas.h>
+#include <cstdio>
+#include <wtf/NotFound.h>
+
+PassOwnPtr<DumpRenderTreeChrome> DumpRenderTreeChrome::create(Evas* evas)
+{
+    OwnPtr<DumpRenderTreeChrome> chrome = adoptPtr(new DumpRenderTreeChrome(evas));
+
+    if (!chrome->initialize())
+        return nullptr;
+
+    return chrome.release();
+}
+
+DumpRenderTreeChrome::DumpRenderTreeChrome(Evas* evas)
+    : m_mainView(0)
+    , m_mainFrame(0)
+    , m_evas(evas)
+    , m_gcController(adoptPtr(new GCController))
+{
+}
+
+DumpRenderTreeChrome::~DumpRenderTreeChrome()
+{
+}
+
+Evas_Object* DumpRenderTreeChrome::createNewWindow()
+{
+    Evas_Object* newView = createView();
+
+    ewk_view_setting_scripts_window_open_set(newView, EINA_TRUE);
+    ewk_view_setting_scripts_can_close_windows_set(newView, EINA_TRUE);
+
+    m_extraViews.append(newView);
+
+    return newView;
+}
+
+Evas_Object* DumpRenderTreeChrome::createView() const
+{
+    Evas_Object* view = drtViewTiledAdd(m_evas);
+    if (!view)
+        return 0;
+
+    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);
+
+    return view;
+}
+
+void DumpRenderTreeChrome::removeWindow(Evas_Object* view)
+{
+    const size_t pos = m_extraViews.find(view);
+
+    if (pos == notFound)
+        return;
+
+    m_extraViews.remove(pos);
+    evas_object_del(view);
+}
+
+bool DumpRenderTreeChrome::initialize()
+{
+    m_mainView = createView();
+    if (!m_mainView)
+        return false;
+
+    ewk_view_theme_set(m_mainView, DATA_DIR"/default.edj");
+
+    evas_object_name_set(m_mainView, "m_mainView");
+    evas_object_move(m_mainView, 0, 0);
+    evas_object_resize(m_mainView, 800, 600);
+    evas_object_layer_set(m_mainView, EVAS_LAYER_MAX);
+    evas_object_show(m_mainView);
+    evas_object_focus_set(m_mainView, EINA_TRUE);
+
+    m_mainFrame = ewk_view_frame_main_get(m_mainView);
+
+    return true;
+}
+
+Vector<Evas_Object*> DumpRenderTreeChrome::extraViews() const
+{
+    return m_extraViews;
+}
+
+Evas_Object* DumpRenderTreeChrome::mainFrame() const
+{
+    return m_mainFrame;
+}
+
+Evas_Object* DumpRenderTreeChrome::mainView() const
+{
+    return m_mainView;
+}
+
+void DumpRenderTreeChrome::resetDefaultsToConsistentValues()
+{
+    Vector<Evas_Object*>::iterator it = m_extraViews.begin();
+    for (; it != m_extraViews.end(); ++it)
+        evas_object_del(*it);
+    m_extraViews.clear();
+
+    ewk_settings_icon_database_clear();
+    ewk_settings_icon_database_path_set(0);
+
+    ewk_view_setting_private_browsing_set(mainView(), EINA_FALSE);
+    ewk_view_setting_spatial_navigation_set(mainView(), EINA_FALSE);
+    ewk_view_setting_enable_frame_flattening_set(mainView(), EINA_FALSE);
+    ewk_view_setting_offline_app_cache_set(mainView(), EINA_TRUE);
+    ewk_view_setting_enable_scripts_set(mainView(), EINA_TRUE);
+    ewk_view_font_family_name_set(mainView(), EWK_FONT_FAMILY_STANDARD, "Times");
+    ewk_view_font_family_name_set(mainView(), EWK_FONT_FAMILY_MONOSPACE, "Courier");
+    ewk_view_font_family_name_set(mainView(), EWK_FONT_FAMILY_SERIF, "Times");
+    ewk_view_font_family_name_set(mainView(), EWK_FONT_FAMILY_SANS_SERIF, "Helvetica");
+    ewk_view_font_family_name_set(mainView(), EWK_FONT_FAMILY_CURSIVE, "cursive");
+    ewk_view_font_family_name_set(mainView(), EWK_FONT_FAMILY_FANTASY, "fantasy");
+    ewk_view_setting_font_default_size_set(mainView(), 16);
+    ewk_view_setting_font_monospace_size_set(mainView(), 13);
+    ewk_view_setting_font_minimum_size_set(mainView(), 0);
+    ewk_view_setting_caret_browsing_set(mainView(), EINA_FALSE);
+    ewk_view_setting_page_cache_set(mainView(), EINA_FALSE);
+    ewk_view_setting_enable_auto_resize_window_set(mainView(), EINA_TRUE);
+    ewk_view_setting_enable_plugins_set(mainView(), EINA_TRUE);
+    ewk_view_setting_scripts_window_open_set(mainView(), EINA_TRUE);
+    ewk_view_setting_scripts_can_close_windows_set(mainView(), EINA_TRUE);
+
+    ewk_view_zoom_set(mainView(), 1.0, 0, 0);
+    ewk_view_page_scale(mainView(), 1.0, 0, 0);
+
+    Ewk_History* history = ewk_view_history_get(mainView());
+    int limit = ewk_history_limit_get(history);
+    ewk_history_limit_set(history, 0);
+    ewk_history_limit_set(history, limit);
+
+    ewk_cookies_clear();
+    ewk_cookies_policy_set(EWK_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY);
+
+    ewk_frame_name_clear(mainFrame());
+    ewk_frame_opener_clear(mainFrame());
+}
+
+// Smart Callbacks
+// ---------------
+
+void DumpRenderTreeChrome::onWindowObjectCleared(void* userData, Evas_Object*, void* eventInfo)
+{
+    Ewk_Window_Object_Cleared_Event* objectClearedInfo = static_cast<Ewk_Window_Object_Cleared_Event*>(eventInfo);
+    JSValueRef exception = 0;
+    ASSERT(gLayoutTestController);
+
+    GCController* gcController = static_cast<GCController*>(userData);
+    ASSERT(gcController);
+
+    gLayoutTestController->makeWindowObject(objectClearedInfo->context, objectClearedInfo->windowObject, &exception);
+    ASSERT(!exception);
+
+    gcController->makeWindowObject(objectClearedInfo->context, objectClearedInfo->windowObject, &exception);
+    ASSERT(!exception);
+
+    JSRetainPtr<JSStringRef> controllerName(JSStringCreateWithUTF8CString("eventSender"));
+    JSObjectSetProperty(objectClearedInfo->context, objectClearedInfo->windowObject,
+                        controllerName.get(),
+                        makeEventSender(objectClearedInfo->context, false), // FIXME: s/false/!get_parent/.
+                        kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, 0);
+}
+
+void DumpRenderTreeChrome::onLoadStarted(void*, Evas_Object* view, void*)
+{
+    // FIXME: we actually need the frame related to this event
+    Evas_Object* frame = ewk_view_frame_main_get(view);
+
+    // Make sure we only set this once per test. If it gets cleared, and then set again, we might
+    // end up doing two dumps for one test.
+    if (!topLoadingFrame && !done)
+        topLoadingFrame = frame;
+}
+
+Eina_Bool DumpRenderTreeChrome::processWork(void* data)
+{
+    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*)
+{
+    // 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);
+    if (gLayoutTestController->waitToDump())
+        return;
+
+    if (WorkQueue::shared()->count())
+        ecore_idler_add(processWork, frame);
+    else
+        dump();
+}
+
+void DumpRenderTreeChrome::onStatusbarTextSet(void*, Evas_Object*, void* eventInfo)
+{
+    if (!gLayoutTestController->dumpStatusCallbacks())
+        return;
+
+    const char* statusbarText = static_cast<const char*>(eventInfo);
+    printf("UI DELEGATE STATUS CALLBACK: setStatusText:%s\n", statusbarText);
+}
+
+void DumpRenderTreeChrome::onTitleChanged(void*, Evas_Object*, void*)
+{
+    notImplemented();
+}
+
+void DumpRenderTreeChrome::onDocumentLoadFinished(void*, Evas_Object*, void* eventInfo)
+{
+    const Evas_Object* frame = static_cast<Evas_Object*>(eventInfo);
+    const String frameName(ewk_frame_suitable_drt_name_get(frame));
+
+    if (!done && gLayoutTestController->dumpFrameLoadCallbacks())
+        printf("%s - didFinishDocumentLoadForFrame\n", frameName.utf8().data());
+    else if (!done) {
+        const unsigned pendingFrameUnloadEvents = ewk_frame_pending_unload_event_count_get(frame);
+        if (pendingFrameUnloadEvents)
+            printf("%s - has %u onunload handler(s)\n", frameName.utf8().data(), pendingFrameUnloadEvents);
+    }
+}

Added: trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h (0 => 96943)


--- trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h	                        (rev 0)
+++ trunk/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h	2011-10-07 16:22:01 UTC (rev 96943)
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2011 ProFUSION Embedded Systems
+ * Copyright (C) 2011 Samsung Electronics
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND ITS CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDERS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef DumpRenderTreeChrome_h
+#define DumpRenderTreeChrome_h
+
+#include "GCController.h"
+
+#include <Eina.h>
+#include <Evas.h>
+#include <wtf/OwnPtr.h>
+#include <wtf/PassOwnPtr.h>
+#include <wtf/Vector.h>
+
+class DumpRenderTreeChrome {
+public:
+    ~DumpRenderTreeChrome();
+
+    static PassOwnPtr<DumpRenderTreeChrome> create(Evas*);
+
+    Evas_Object* createNewWindow();
+    void removeWindow(Evas_Object*);
+
+    Vector<Evas_Object*> extraViews() const;
+    Evas_Object* mainFrame() const;
+    Evas_Object* mainView() const;
+
+    void resetDefaultsToConsistentValues();
+
+private:
+    DumpRenderTreeChrome(Evas*);
+
+    Evas_Object* createView() const;
+    bool initialize();
+
+    Evas_Object* m_mainFrame;
+    Evas_Object* m_mainView;
+    Evas* m_evas;
+    OwnPtr<GCController> m_gcController;
+    Vector<Evas_Object*> m_extraViews;
+
+    // Smart callbacks
+    static void onWindowObjectCleared(void*, Evas_Object*, void*);
+    static void onLoadStarted(void*, Evas_Object*, void*);
+
+    static Eina_Bool processWork(void*);
+
+    static void onLoadFinished(void*, Evas_Object*, void*);
+
+    static void onStatusbarTextSet(void*, Evas_Object*, void*);
+
+    static void onTitleChanged(void*, Evas_Object*, void*);
+
+    static void onDocumentLoadFinished(void*, Evas_Object*, void*);
+};
+
+#endif // DumpRenderTreeChrome_h

Modified: trunk/Tools/DumpRenderTree/efl/EventSender.cpp (96942 => 96943)


--- trunk/Tools/DumpRenderTree/efl/EventSender.cpp	2011-10-07 16:16:28 UTC (rev 96942)
+++ trunk/Tools/DumpRenderTree/efl/EventSender.cpp	2011-10-07 16:22:01 UTC (rev 96943)
@@ -152,7 +152,7 @@
 
 static Eina_Bool sendClick(void*)
 {
-    return !!sendMouseEvent(evas_object_evas_get(mainFrame), EvasMouseEventClick, EvasMouseButtonLeft, EvasKeyModifierNone);
+    return !!sendMouseEvent(evas_object_evas_get(browser->mainFrame()), EvasMouseEventClick, EvasMouseButtonLeft, EvasKeyModifierNone);
 }
 
 static JSValueRef scheduleAsynchronousClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
@@ -223,7 +223,7 @@
     updateClickCount(button);
 
     EvasKeyModifier modifiers = argumentCount >= 2 ? modifiersFromJSValue(context, arguments[1]) : EvasKeyModifierNone;
-    if (!sendMouseEvent(evas_object_evas_get(mainFrame), EvasMouseEventDown, button, modifiers))
+    if (!sendMouseEvent(evas_object_evas_get(browser->mainFrame()), EvasMouseEventDown, button, modifiers))
         return JSValueMakeUndefined(context);
 
     gButtonCurrentlyDown = button;
@@ -246,7 +246,7 @@
     gButtonCurrentlyDown = 0;
 
     EvasKeyModifier modifiers = argumentCount >= 2 ? modifiersFromJSValue(context, arguments[1]) : EvasKeyModifierNone;
-    sendMouseEvent(evas_object_evas_get(mainFrame), EvasMouseEventUp, translateMouseButtonNumber(button), modifiers);
+    sendMouseEvent(evas_object_evas_get(browser->mainFrame()), EvasMouseEventUp, translateMouseButtonNumber(button), modifiers);
     return JSValueMakeUndefined(context);
 }
 
@@ -262,7 +262,7 @@
     if (exception && *exception)
         return JSValueMakeUndefined(context);
 
-    sendMouseEvent(evas_object_evas_get(mainFrame), EvasMouseEventMove, EvasMouseButtonNone, EvasKeyModifierNone);
+    sendMouseEvent(evas_object_evas_get(browser->mainFrame()), EvasMouseEventMove, EvasMouseButtonNone, EvasKeyModifierNone);
     return JSValueMakeUndefined(context);
 }
 
@@ -295,7 +295,7 @@
     if (exception && *exception)
         return JSValueMakeUndefined(context);
 
-    sendMouseEvent(evas_object_evas_get(mainFrame), evasMouseEventFromHorizontalAndVerticalOffsets(horizontal, vertical), EvasMouseButtonNone, EvasKeyModifierNone);
+    sendMouseEvent(evas_object_evas_get(browser->mainFrame()), evasMouseEventFromHorizontalAndVerticalOffsets(horizontal, vertical), EvasMouseButtonNone, EvasKeyModifierNone);
     return JSValueMakeUndefined(context);
 }
 
@@ -400,7 +400,7 @@
 
 static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
 {
-    Evas_Object* view = ewk_frame_view_get(mainFrame);
+    Evas_Object* view = ewk_frame_view_get(browser->mainFrame());
     if (!view)
         return JSValueMakeUndefined(context);
 
@@ -435,7 +435,7 @@
     if (argumentCount < 3)
         return JSValueMakeUndefined(context);
 
-    Evas_Object* view = ewk_frame_view_get(mainFrame);
+    Evas_Object* view = ewk_frame_view_get(browser->mainFrame());
     if (!view)
         return JSValueMakeUndefined(context);
 

Modified: trunk/Tools/DumpRenderTree/efl/LayoutTestControllerEfl.cpp (96942 => 96943)


--- trunk/Tools/DumpRenderTree/efl/LayoutTestControllerEfl.cpp	2011-10-07 16:16:28 UTC (rev 96942)
+++ trunk/Tools/DumpRenderTree/efl/LayoutTestControllerEfl.cpp	2011-10-07 16:22:01 UTC (rev 96943)
@@ -90,7 +90,7 @@
 
 JSRetainPtr<JSStringRef> LayoutTestController::counterValueForElementById(JSStringRef id)
 {
-    OwnFastMallocPtr<char> counterValue(ewk_frame_counter_value_by_element_id_get(mainFrame, id->ustring().utf8().data()));
+    OwnFastMallocPtr<char> counterValue(ewk_frame_counter_value_by_element_id_get(browser->mainFrame(), id->ustring().utf8().data()));
     return JSRetainPtr<JSStringRef>(Adopt, JSStringCreateWithUTF8CString(counterValue.get()));
 }
 
@@ -119,12 +119,12 @@
 
 int LayoutTestController::pageNumberForElementById(JSStringRef id, float pageWidth, float pageHeight)
 {
-    return ewk_frame_page_number_by_element_id_get(mainFrame, id->ustring().utf8().data(), pageWidth, pageHeight);
+    return ewk_frame_page_number_by_element_id_get(browser->mainFrame(), id->ustring().utf8().data(), pageWidth, pageHeight);
 }
 
 int LayoutTestController::numberOfPages(float pageWidth, float pageHeight)
 {
-    return ewk_frame_page_number_get(mainFrame, pageWidth, pageHeight);
+    return ewk_frame_page_number_get(browser->mainFrame(), pageWidth, pageHeight);
 }
 
 JSRetainPtr<JSStringRef> LayoutTestController::pageProperty(const char*, int) const
@@ -147,7 +147,7 @@
 
 size_t LayoutTestController::webHistoryItemCount()
 {
-    const Ewk_History* history = ewk_view_history_get(browser);
+    const Ewk_History* history = ewk_view_history_get(browser->mainView());
     if (!history)
         return -1;
 
@@ -175,7 +175,7 @@
 
 void LayoutTestController::queueLoad(JSStringRef url, JSStringRef target)
 {
-    String absoluteUrl = String::fromUTF8(ewk_frame_uri_get(mainFrame));
+    String absoluteUrl = String::fromUTF8(ewk_frame_uri_get(browser->mainFrame()));
     absoluteUrl.append(url->characters(), url->length());
 
     JSRetainPtr<JSStringRef> jsAbsoluteURL(
@@ -186,7 +186,7 @@
 
 void LayoutTestController::setAcceptsEditing(bool acceptsEditing)
 {
-    ewk_view_editable_set(browser, acceptsEditing);
+    ewk_view_editable_set(browser->mainView(), acceptsEditing);
 }
 
 void LayoutTestController::setAlwaysAcceptCookies(bool alwaysAcceptCookies)
@@ -241,7 +241,7 @@
 void LayoutTestController::setUserStyleSheetEnabled(bool flag)
 {
     gUserStyleSheetEnabled = flag;
-    ewk_view_setting_user_stylesheet_set(browser, flag ? gUserStyleSheet.data() : 0);
+    ewk_view_setting_user_stylesheet_set(browser->mainView(), flag ? gUserStyleSheet.data() : 0);
 }
 
 void LayoutTestController::setUserStyleSheetLocation(JSStringRef path)
@@ -295,7 +295,7 @@
 
 void LayoutTestController::setPrivateBrowsingEnabled(bool flag)
 {
-    ewk_view_setting_private_browsing_set(browser, flag);
+    ewk_view_setting_private_browsing_set(browser->mainView(), flag);
 }
 
 void LayoutTestController::setJavaScriptCanAccessClipboard(bool)
@@ -310,12 +310,12 @@
 
 void LayoutTestController::setFrameFlatteningEnabled(bool flag)
 {
-    ewk_view_setting_enable_frame_flattening_set(browser, flag);
+    ewk_view_setting_enable_frame_flattening_set(browser->mainView(), flag);
 }
 
 void LayoutTestController::setSpatialNavigationEnabled(bool flag)
 {
-    ewk_view_setting_spatial_navigation_set(browser, flag);
+    ewk_view_setting_spatial_navigation_set(browser->mainView(), flag);
 }
 
 void LayoutTestController::setAllowUniversalAccessFromFileURLs(bool)
@@ -432,7 +432,7 @@
 
 void LayoutTestController::setPluginsEnabled(bool flag)
 {
-    ewk_view_setting_enable_plugins_set(browser, flag);
+    ewk_view_setting_enable_plugins_set(browser->mainView(), flag);
 }
 
 bool LayoutTestController::elementDoesAutoCompleteForElementWithId(JSStringRef)
@@ -472,7 +472,7 @@
             wrap = true;
     }
 
-    return !!ewk_view_text_search(browser, target->ustring().utf8().data(), caseSensitive, forward, wrap);
+    return !!ewk_view_text_search(browser->mainView(), target->ustring().utf8().data(), caseSensitive, forward, wrap);
 }
 
 bool LayoutTestController::isCommandEnabled(JSStringRef name)
@@ -593,32 +593,32 @@
 
 bool LayoutTestController::pauseAnimationAtTimeOnElementWithId(JSStringRef animationName, double time, JSStringRef elementId)
 {
-    return ewk_frame_animation_pause(mainFrame, animationName->ustring().utf8().data(), elementId->ustring().utf8().data(), time);
+    return ewk_frame_animation_pause(browser->mainFrame(), animationName->ustring().utf8().data(), elementId->ustring().utf8().data(), time);
 }
 
 bool LayoutTestController::pauseTransitionAtTimeOnElementWithId(JSStringRef propertyName, double time, JSStringRef elementId)
 {
-    return ewk_frame_transition_pause(mainFrame, propertyName->ustring().utf8().data(), elementId->ustring().utf8().data(), time);
+    return ewk_frame_transition_pause(browser->mainFrame(), propertyName->ustring().utf8().data(), elementId->ustring().utf8().data(), time);
 }
 
 bool LayoutTestController::sampleSVGAnimationForElementAtTime(JSStringRef animationId, double time, JSStringRef elementId)
 {
-    return ewk_frame_svg_animation_pause(mainFrame, animationId->ustring().utf8().data(), elementId->ustring().utf8().data(), time);
+    return ewk_frame_svg_animation_pause(browser->mainFrame(), animationId->ustring().utf8().data(), elementId->ustring().utf8().data(), time);
 }
 
 unsigned LayoutTestController::numberOfActiveAnimations() const
 {
-    return ewk_frame_animation_active_number_get(mainFrame);
+    return ewk_frame_animation_active_number_get(browser->mainFrame());
 }
 
 void LayoutTestController::suspendAnimations() const
 {
-    ewk_frame_animation_suspend(mainFrame);
+    ewk_frame_animation_suspend(browser->mainFrame());
 }
 
 void LayoutTestController::resumeAnimations() const
 {
-    ewk_frame_animation_resume(mainFrame);
+    ewk_frame_animation_resume(browser->mainFrame());
 }
 
 void LayoutTestController::overridePreference(JSStringRef, JSStringRef)
@@ -639,7 +639,7 @@
 
 void LayoutTestController::setDeveloperExtrasEnabled(bool enabled)
 {
-    ewk_view_setting_enable_developer_extras_set(browser, enabled);
+    ewk_view_setting_enable_developer_extras_set(browser->mainView(), enabled);
 }
 
 void LayoutTestController::setAsynchronousSpellCheckingEnabled(bool)
@@ -690,7 +690,7 @@
 
 void LayoutTestController::setWebViewEditable(bool)
 {
-    ewk_frame_editable_set(mainFrame, EINA_TRUE);
+    ewk_frame_editable_set(browser->mainFrame(), EINA_TRUE);
 }
 
 JSRetainPtr<JSStringRef> LayoutTestController::markerTextForListItem(JSContextRef, JSValueRef) const

Modified: trunk/Tools/DumpRenderTree/efl/PixelDumpSupportEfl.cpp (96942 => 96943)


--- trunk/Tools/DumpRenderTree/efl/PixelDumpSupportEfl.cpp	2011-10-07 16:16:28 UTC (rev 96942)
+++ trunk/Tools/DumpRenderTree/efl/PixelDumpSupportEfl.cpp	2011-10-07 16:22:01 UTC (rev 96943)
@@ -32,14 +32,16 @@
 #include "config.h"
 
 #include "DumpRenderTree.h"
+#include "DumpRenderTreeChrome.h"
 #include "PixelDumpSupportCairo.h"
 #include "RefPtrCairo.h"
 #include "ewk_private.h"
 
 PassRefPtr<BitmapContext> createBitmapContextFromWebView(bool, bool, bool, bool drawSelectionRect)
 {
-    Ewk_View_Smart_Data* smartData = static_cast<Ewk_View_Smart_Data*>(evas_object_smart_data_get(browser));
+    Ewk_View_Smart_Data* smartData = static_cast<Ewk_View_Smart_Data*>(evas_object_smart_data_get(browser->mainView()));
     Ewk_View_Private_Data* privateData = static_cast<Ewk_View_Private_Data*>(smartData->_priv);
+    const Evas_Object* mainFrame = browser->mainFrame();
 
     int x, y, width, height;
     if (!ewk_frame_visible_content_geometry_get(mainFrame, EINA_TRUE, &x, &y, &width, &height))

Modified: trunk/Tools/DumpRenderTree/efl/WorkQueueItemEfl.cpp (96942 => 96943)


--- trunk/Tools/DumpRenderTree/efl/WorkQueueItemEfl.cpp	2011-10-07 16:16:28 UTC (rev 96942)
+++ trunk/Tools/DumpRenderTree/efl/WorkQueueItemEfl.cpp	2011-10-07 16:22:01 UTC (rev 96943)
@@ -36,9 +36,9 @@
     Evas_Object* targetFrame;
 
     if (!m_target->length())
-        targetFrame = mainFrame;
+        targetFrame = browser->mainFrame();
     else
-        targetFrame = ewk_frame_child_find(mainFrame, m_target->ustring().utf8().data());
+        targetFrame = ewk_frame_child_find(browser->mainFrame(), m_target->ustring().utf8().data());
 
     ewk_frame_uri_set(targetFrame, m_url->ustring().utf8().data());
 
@@ -48,22 +48,22 @@
 bool LoadHTMLStringItem::invoke() const
 {
     if (!m_unreachableURL->length())
-        ewk_frame_contents_set(mainFrame, m_content->ustring().utf8().data(), 0, 0, 0, m_baseURL->ustring().utf8().data());
+        ewk_frame_contents_set(browser->mainFrame(), m_content->ustring().utf8().data(), 0, 0, 0, m_baseURL->ustring().utf8().data());
     else
-        ewk_frame_contents_alternate_set(mainFrame, m_content->ustring().utf8().data(), 0, 0, 0, m_baseURL->ustring().utf8().data(), m_unreachableURL->ustring().utf8().data());
+        ewk_frame_contents_alternate_set(browser->mainFrame(), m_content->ustring().utf8().data(), 0, 0, 0, m_baseURL->ustring().utf8().data(), m_unreachableURL->ustring().utf8().data());
 
     return true;
 }
 
 bool ReloadItem::invoke() const
 {
-    ewk_view_reload(browser);
+    ewk_view_reload(browser->mainView());
     return true;
 }
 
 bool ScriptItem::invoke() const
 {
-    return ewk_frame_script_execute(mainFrame, m_script->ustring().utf8().data());
+    return ewk_frame_script_execute(browser->mainFrame(), m_script->ustring().utf8().data());
 }
 
 bool BackForwardItem::invoke() const
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to