Skip to content
Permalink
Browse files
2011-02-03 Martin Robinson <mrobinson@igalia.com>
        Reviewed by Eric Seidel.

        [GTK] The GTK+ DRT needs an implementation of the PlainTextController
        https://bugs.webkit.org/show_bug.cgi?id=53605

        * platform/gtk/Skipped: Unskipped test which is now passing.
2011-02-03  Martin Robinson  <mrobinson@igalia.com>

        Reviewed by Eric Seidel.

        [GTK] The GTK+ DRT needs an implementation of the PlainTextController
        https://bugs.webkit.org/show_bug.cgi?id=53605

        Added jsValueToDOMRange to DumpRenderTreeSupportGtk. This static method can convert
        a JSValueRef to a WebKitDOMRange. When it's possible to do this with the public
        API, we can remove this method.

        * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
        (DumpRenderTreeSupportGtk::jsValueToDOMRange): Added.
        * WebCoreSupport/DumpRenderTreeSupportGtk.h: Added declaration.
2011-02-03  Martin Robinson  <mrobinson@igalia.com>

        Reviewed by Eric Seidel.

        [GTK] The GTK+ DRT needs an implementation of the PlainTextController
        https://bugs.webkit.org/show_bug.cgi?id=53605

        Add an implementation of the PlainTextController for the GTK+ DRT.

        * DumpRenderTree/gtk/DumpRenderTree.cpp:
        (addControllerToWindow): Added this helper method.
        (webViewWindowObjectCleared): Use the new helper to add EventSender
        and the PlainTextController to the window object.
        * GNUmakefile.am: Added PlainTextController source files.
        * DumpRenderTree/gtk/PlainTextController.cpp: Added. This will rely
        on DumpRenderTreeSupportGtk to convert a JSValueRef into a WebKitDOMRange
        until that functionality exists somewhere in the WebKitGTK+ stack.
        * DumpRenderTree/gtk/PlainTextController.h: Added.

Canonical link: https://commits.webkit.org/73292@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@83530 268f45cc-cd09-0410-ab3c-d52691b4dbfc
  • Loading branch information
mrobinson committed Apr 11, 2011
1 parent d087fd5 commit 26dec6f61576d9dd06683d2755915d2cd50dacc0
Showing 11 changed files with 177 additions and 16 deletions.
@@ -1,3 +1,12 @@
2011-02-03 Martin Robinson <mrobinson@igalia.com>

Reviewed by Eric Seidel.

[GTK] The GTK+ DRT needs an implementation of the PlainTextController
https://bugs.webkit.org/show_bug.cgi?id=53605

* platform/gtk/Skipped: Unskipped test which is now passing.

2011-04-11 Stephen White <senorblanco@chromium.org>

Unreviewed; new chromium baselines.
@@ -1305,10 +1305,6 @@ http/tests/security/local-iFrame-from-remote.html
http/tests/security/local-image-from-remote.html
http/tests/security/local-user-CSS-from-remote.html

# Need an implementation of PlainTextController
# https://bugs.webkit.org/show_bug.cgi?id=53605
editing/text-iterator/basic-iteration.html

# LayoutTestController needs layoutTestController.displayInvalidatedRegion
# https://bugs.webkit.org/show_bug.cgi?id=54073
plugins/invalidate_rect.html
@@ -1,3 +1,18 @@
2011-02-03 Martin Robinson <mrobinson@igalia.com>

Reviewed by Eric Seidel.

[GTK] The GTK+ DRT needs an implementation of the PlainTextController
https://bugs.webkit.org/show_bug.cgi?id=53605

Added jsValueToDOMRange to DumpRenderTreeSupportGtk. This static method can convert
a JSValueRef to a WebKitDOMRange. When it's possible to do this with the public
API, we can remove this method.

* WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
(DumpRenderTreeSupportGtk::jsValueToDOMRange): Added.
* WebCoreSupport/DumpRenderTreeSupportGtk.h: Added declaration.

2011-04-11 Mario Sanchez Prada <msanchez@igalia.com>

Reviewed by Chris Fleizach.
@@ -42,6 +42,7 @@
#include "JSElement.h"
#include "JSLock.h"
#include "JSNodeList.h"
#include "JSRange.h"
#include "JSValue.h"
#include "NodeList.h"
#include "PageGroup.h"
@@ -53,6 +54,7 @@
#include "SecurityOrigin.h"
#include "Settings.h"
#include "TextIterator.h"
#include "WebKitDOMRangePrivate.h"
#include "WorkerThread.h"
#include "webkitglobalsprivate.h"
#include "webkitwebframe.h"
@@ -127,6 +129,20 @@ JSValueRef DumpRenderTreeSupportGtk::nodesFromRect(JSContextRef context, JSValue
return toRef(exec, toJS(exec, jsDocument->globalObject(), nodes.get()));
}

WebKitDOMRange* DumpRenderTreeSupportGtk::jsValueToDOMRange(JSContextRef context, JSValueRef value)
{
if (!value)
return 0;

JSLock lock(SilenceAssertionsOnly);
ExecState* exec = toJS(context);

Range* range = toRange(toJS(exec, value));
if (!range)
return 0;
return kit(range);
}

/**
* getFrameChildren:
* @frame: a #WebKitWebFrame
@@ -20,12 +20,10 @@
#define DumpRenderTreeSupportGtk_h

#include "JSStringRef.h"
#include <webkit/webkitdefines.h>

#include <atk/atk.h>
#include <glib.h>
#include <webkit/webkitdefines.h>
#include <webkit/webkitwebframe.h>
#include <webkit/webkitdomdefines.h>
#include <wtf/text/CString.h>

namespace WebKit {
@@ -62,6 +60,7 @@ class DumpRenderTreeSupportGtk {
static void clearOpener(WebKitWebFrame*);

static JSValueRef shadowRoot(JSContextRef, JSValueRef);
static WebKitDOMRange* jsValueToDOMRange(JSContextRef, JSValueRef);

// FIXME: Move these to webkitwebframe.h once their API has been discussed.
static GSList* getFrameChildren(WebKitWebFrame*);
@@ -1,3 +1,22 @@
2011-02-03 Martin Robinson <mrobinson@igalia.com>

Reviewed by Eric Seidel.

[GTK] The GTK+ DRT needs an implementation of the PlainTextController
https://bugs.webkit.org/show_bug.cgi?id=53605

Add an implementation of the PlainTextController for the GTK+ DRT.

* DumpRenderTree/gtk/DumpRenderTree.cpp:
(addControllerToWindow): Added this helper method.
(webViewWindowObjectCleared): Use the new helper to add EventSender
and the PlainTextController to the window object.
* GNUmakefile.am: Added PlainTextController source files.
* DumpRenderTree/gtk/PlainTextController.cpp: Added. This will rely
on DumpRenderTreeSupportGtk to convert a JSValueRef into a WebKitDOMRange
until that functionality exists somewhere in the WebKitGTK+ stack.
* DumpRenderTree/gtk/PlainTextController.h: Added.

2011-04-11 Yael Aharon <yael.aharon@nokia.com>

Unreviewed.
@@ -39,6 +39,7 @@
#include "GOwnPtr.h"
#include "LayoutTestController.h"
#include "PixelDumpSupport.h"
#include "PlainTextController.h"
#include "TextInputController.h"
#include "WebCoreSupport/DumpRenderTreeSupportGtk.h"
#include "WorkQueue.h"
@@ -814,6 +815,13 @@ static void webViewOnloadEvent(WebKitWebView* view, WebKitWebFrame* frame, void*
}
}

static void addControllerToWindow(JSContextRef context, JSObjectRef windowObject, const char* controllerName, JSValueRef controller)
{
JSStringRef controllerNameStr = JSStringCreateWithUTF8CString(controllerName);
JSObjectSetProperty(context, windowObject, controllerNameStr, controller, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, 0);
JSStringRelease(controllerNameStr);
}

static void webViewWindowObjectCleared(WebKitWebView* view, WebKitWebFrame* frame, JSGlobalContextRef context, JSObjectRef windowObject, gpointer data)
{
JSValueRef exception = 0;
@@ -828,15 +836,9 @@ static void webViewWindowObjectCleared(WebKitWebView* view, WebKitWebFrame* fram
axController->makeWindowObject(context, windowObject, &exception);
ASSERT(!exception);

JSStringRef eventSenderStr = JSStringCreateWithUTF8CString("eventSender");
JSValueRef eventSender = makeEventSender(context, !webkit_web_frame_get_parent(frame));
JSObjectSetProperty(context, windowObject, eventSenderStr, eventSender, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, 0);
JSStringRelease(eventSenderStr);

JSStringRef textInputControllerStr = JSStringCreateWithUTF8CString("textInputController");
JSValueRef textInputController = makeTextInputController(context);
JSObjectSetProperty(context, windowObject, textInputControllerStr, textInputController, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, 0);
JSStringRelease(textInputControllerStr);
addControllerToWindow(context, windowObject, "eventSender", makeEventSender(context, !webkit_web_frame_get_parent(frame)));
addControllerToWindow(context, windowObject, "plainText", makePlainTextController(context));
addControllerToWindow(context, windowObject, "textInputController", makeTextInputController(context));
}

static gboolean webViewConsoleMessage(WebKitWebView* view, const gchar* message, unsigned int line, const gchar* sourceId, gpointer data)
@@ -0,0 +1,65 @@
/*
* Copyright (C) 2011 Igalia S.L.
*
* 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.
* 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY APPLE 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 APPLE 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 "PlainTextController.h"

#include "DumpRenderTree.h"
#include "WebCoreSupport/DumpRenderTreeSupportGtk.h"
#include <GOwnPtrGtk.h>
#include <JavaScriptCore/JSObjectRef.h>
#include <JavaScriptCore/JSRetainPtr.h>
#include <JavaScriptCore/JSStringRef.h>
#include <webkit/webkit.h>

static JSValueRef plainTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
g_return_val_if_fail(argumentCount == 1, JSValueMakeUndefined(context));
WebKitDOMRange* kitRange = DumpRenderTreeSupportGtk::jsValueToDOMRange(context, arguments[0]);
g_return_val_if_fail(kitRange, JSValueMakeUndefined(context));

GOwnPtr<gchar> text(webkit_dom_range_get_text(kitRange));
JSRetainPtr<JSStringRef> jsText(Adopt, JSStringCreateWithUTF8CString(text.get()));
return JSValueMakeString(context, jsText.get());
}

JSObjectRef makePlainTextController(JSContextRef context)
{
static JSStaticFunction staticFunctions[] = {
{ "plainText", plainTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ 0, 0, 0 }
};

static JSClassRef plainTextControllerClass = 0;
if (!plainTextControllerClass) {
JSClassDefinition classDefinition = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
classDefinition.staticFunctions = staticFunctions;
plainTextControllerClass = JSClassCreate(&classDefinition);
}
return JSObjectMake(context, plainTextControllerClass, 0);
}
@@ -0,0 +1,37 @@
/*
* Copyright (C) 2011 Igalia S.L.
*
* 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.
* 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY APPLE 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 APPLE 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 PlainTextController_h
#define PlainTextController_h

typedef const struct OpaqueJSContext* JSContextRef;
typedef struct OpaqueJSValue* JSObjectRef;

JSObjectRef makePlainTextController(JSContextRef);

#endif
@@ -36,6 +36,7 @@
#include <JavaScriptCore/JSRetainPtr.h>
#include <JavaScriptCore/JSStringRef.h>
#include <cstring>
#include <webkit/webkit.h>

static JSValueRef setMarkedTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
@@ -84,6 +84,8 @@ Programs_DumpRenderTree_SOURCES = \
Tools/DumpRenderTree/gtk/GCControllerGtk.cpp \
Tools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp \
Tools/DumpRenderTree/gtk/PixelDumpSupportGtk.cpp \
Tools/DumpRenderTree/gtk/PlainTextController.cpp \
Tools/DumpRenderTree/gtk/PlainTextController.h \
Tools/DumpRenderTree/gtk/TextInputController.h \
Tools/DumpRenderTree/gtk/TextInputController.cpp \
Tools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp \

0 comments on commit 26dec6f

Please sign in to comment.