Add support for markerTextForListItem() to Chromium's LayoutTestController.
authordumi@chromium.org <dumi@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Aug 2010 04:01:02 +0000 (04:01 +0000)
committerdumi@chromium.org <dumi@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Aug 2010 04:01:02 +0000 (04:01 +0000)
https://bugs.webkit.org/show_bug.cgi?id=44724

Reviewed by Darin Fisher.

* public/WebBindings.h:
* public/WebFrame.h:
* src/WebBindings.cpp:
(WebKit::getElementImpl):
(WebKit::WebBindings::getElement):
* src/WebFrameImpl.cpp:
(WebKit::WebFrameImpl::markerTextForListItem):
* src/WebFrameImpl.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@66176 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/chromium/ChangeLog
WebKit/chromium/public/WebBindings.h
WebKit/chromium/public/WebFrame.h
WebKit/chromium/src/WebBindings.cpp
WebKit/chromium/src/WebFrameImpl.cpp
WebKit/chromium/src/WebFrameImpl.h

index 56c41a7..1ad5160 100644 (file)
@@ -1,3 +1,19 @@
+2010-08-26  Dumitru Daniliuc  <dumi@chromium.org>
+
+        Reviewed by Darin Fisher.
+
+        Add support for markerTextForListItem() to Chromium's LayoutTestController.
+        https://bugs.webkit.org/show_bug.cgi?id=44724
+
+        * public/WebBindings.h:
+        * public/WebFrame.h:
+        * src/WebBindings.cpp:
+        (WebKit::getElementImpl):
+        (WebKit::WebBindings::getElement):
+        * src/WebFrameImpl.cpp:
+        (WebKit::WebFrameImpl::markerTextForListItem):
+        * src/WebFrameImpl.h:
+
 2010-08-26  James Robinson  <jamesr@chromium.org>
 
         Reviewed by Darin Fisher.
index 0fa3bfd..bca4095 100644 (file)
@@ -37,6 +37,7 @@
 namespace WebKit {
 
 class WebDragData;
+class WebElement;
 class WebRange;
 
 // A haphazard collection of functions for dealing with plugins.
@@ -139,6 +140,10 @@ public:
     // If so, return that range as a WebRange object.
     WEBKIT_API static bool getRange(NPObject* range, WebRange*);
 
+    // Return true (success) if the given npobj is an element.
+    // If so, return that element as a WebElement object.
+    WEBKIT_API static bool getElement(NPObject* element, WebElement*);
+
     // Exceptions -------------------------------------------------------------
 
     typedef void (ExceptionHandler)(void* data, const NPUTF8* message);
index c4fa7ae..d8eca6a 100644 (file)
@@ -518,6 +518,8 @@ public:
     // used to support layout tests.
     virtual WebString counterValueForElementById(const WebString& id) const = 0;
 
+    // Calls markerTextForListItem() defined in WebCore/rendering/RenderTreeAsText.h.
+    virtual WebString markerTextForListItem(const WebElement&) const = 0;
 
     // Returns the number of page where the specified element will be put.
     // This method is used to support layout tests.
index 3aaebfd..4bb9022 100644 (file)
@@ -43,6 +43,7 @@
 #include "Range.h"
 #include "V8BindingState.h"
 #include "V8DOMWrapper.h"
+#include "V8Element.h"
 #include "V8Event.h"
 #include "V8Helpers.h"
 #include "V8HiddenPropertyName.h"
@@ -53,6 +54,7 @@
 #include "bridge/c/c_utility.h"
 #endif
 #include "WebDragData.h"
+#include "WebElement.h"
 #include "WebRange.h"
 
 #if USE(JAVASCRIPTCORE_BINDINGS)
@@ -295,6 +297,21 @@ static bool getRangeImpl(NPObject* npobj, WebRange* range)
     return true;
 }
 
+static bool getElementImpl(NPObject* npObj, WebElement* webElement)
+{
+    if (!npObj || (npObj->_class != npScriptObjectClass))
+        return false;
+
+    V8NPObject* v8NPObject = reinterpret_cast<V8NPObject*>(npObj);
+    v8::Handle<v8::Object> v8Object(v8NPObject->v8Object);
+    Element* native = V8Element::toNative(v8Object);
+    if (!native)
+        return false;
+
+    *webElement = WebElement(native);
+    return true;
+}
+
 #endif
 
 bool WebBindings::getDragData(NPObject* event, int* eventId, WebDragData* data)
@@ -323,6 +340,16 @@ bool WebBindings::getRange(NPObject* range, WebRange* webrange)
 #endif
 }
 
+bool WebBindings::getElement(NPObject* element, WebElement* webElement)
+{
+#if USE(V8)
+    return getElementImpl(element, webElement);
+#else
+    // Not supported on other ports (JSC, etc.).
+    return false;
+#endif
+}
+
 void WebBindings::pushExceptionHandler(ExceptionHandler handler, void* data)
 {
     WebCore::pushExceptionHandler(handler, data);
index 4375e73..8c70d73 100644 (file)
@@ -1690,6 +1690,11 @@ WebString WebFrameImpl::counterValueForElementById(const WebString& id) const
     return counterValueForElement(element);
 }
 
+WebString WebFrameImpl::markerTextForListItem(const WebElement& webElement) const
+{
+    return WebCore::markerTextForListItem(webElement.unwrap<Element>());
+}
+
 int WebFrameImpl::pageNumberForElementById(const WebString& id,
                                            float pageWidthInPixels,
                                            float pageHeightInPixels) const
index 00e8ecb..14217fa 100644 (file)
@@ -176,6 +176,7 @@ public:
     virtual WebString contentAsMarkup() const;
     virtual WebString renderTreeAsText() const;
     virtual WebString counterValueForElementById(const WebString& id) const;
+    virtual WebString markerTextForListItem(const WebElement&) const;
     virtual int pageNumberForElementById(const WebString& id,
                                          float pageWidthInPixels,
                                          float pageHeightInPixels) const;