Changeset 84472 in webkit


Ignore:
Timestamp:
Apr 20, 2011 11:33:42 PM (13 years ago)
Author:
commit-queue@webkit.org
Message:

2011-04-20 Dominic Cooney <dominicc@chromium.org>

Reviewed by Dimitri Glazkov.

layoutTestController can create and destroy shadow DOM
https://bugs.webkit.org/show_bug.cgi?id=59058

Exercise the new layoutTestController methods.

  • fast/dom/shadow/layout-tests-can-access-shadow-expected.txt: Added.
  • fast/dom/shadow/layout-tests-can-access-shadow.html: Added.

2011-04-20 Dominic Cooney <dominicc@chromium.org>

Reviewed by Dimitri Glazkov.

layoutTestController can create and destroy shadow DOM
https://bugs.webkit.org/show_bug.cgi?id=59058

Test: fast/dom/shadow/layout-tests-can-access-shadow.html

  • WebCore.exp.in: Mac DRT needs to see Element::ensure/removeShadowRoot

2011-04-20 Dominic Cooney <dominicc@chromium.org>

Reviewed by Dimitri Glazkov.

layoutTestController can create and destroy shadow DOM
https://bugs.webkit.org/show_bug.cgi?id=59058

Chromium DRT relies on the Chromium WebKit API

  • public/WebElement.h:
  • src/WebElement.cpp: (WebKit::WebElement::shadowRoot): don't steal a zero refcount (WebKit::WebElement::ensureShadowRoot): added (WebKit::WebElement::removeShadowRoot): added

2011-04-20 Dominic Cooney <dominicc@chromium.org>

Reviewed by Dimitri Glazkov.

layoutTestController can create and destroy shadow DOM
https://bugs.webkit.org/show_bug.cgi?id=59058

Support for new methods in GTK DRT.

  • WebCoreSupport/DumpRenderTreeSupportGtk.cpp: (DumpRenderTreeSupportGtk::ensureShadowRoot): (DumpRenderTreeSupportGtk::removeShadowRoot):
  • WebCoreSupport/DumpRenderTreeSupportGtk.h:

2011-04-20 Dominic Cooney <dominicc@chromium.org>

Reviewed by Dimitri Glazkov.

layoutTestController can create and destroy shadow DOM
https://bugs.webkit.org/show_bug.cgi?id=59058

Support for new methods in Mac DRT.

  • DOM/WebDOMOperations.mm: (-[DOMElement _ensureShadowRoot:]): (-[DOMElement _removeShadowRoot]):
  • DOM/WebDOMOperationsPrivate.h:

2011-04-20 Dominic Cooney <dominicc@chromium.org>

Reviewed by Dimitri Glazkov.

layoutTestController can create and destroy shadow DOM
https://bugs.webkit.org/show_bug.cgi?id=59058

Support for new methods in Qt DRT.

  • WebCoreSupport/DumpRenderTreeSupportQt.cpp: (DumpRenderTreeSupportQt::ensureShadowRoot): (DumpRenderTreeSupportQt::removeShadowRoot):
  • WebCoreSupport/DumpRenderTreeSupportQt.h:

2011-04-20 Dominic Cooney <dominicc@chromium.org>

Reviewed by Dimitri Glazkov.

layoutTestController can create and destroy shadow DOM
https://bugs.webkit.org/show_bug.cgi?id=59058

Support for new methods in WK2 WebKitTestRunner.

  • WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp: (WKBundleNodeHandleCopyElementEnsureShadowRoot): (WKBundleNodeHandleRemoveShadowRoot):
  • WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h:
  • WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp: (WebKit::InjectedBundleNodeHandle::elementShadowRoot): (WebKit::InjectedBundleNodeHandle::elementEnsureShadowRoot): (WebKit::InjectedBundleNodeHandle::elementRemoveShadowRoot):
  • WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:

2011-04-20 Dominic Cooney <dominicc@chromium.org>

Reviewed by Dimitri Glazkov.

layoutTestController can create and destroy shadow DOM
https://bugs.webkit.org/show_bug.cgi?id=59058

Chromium, Mac, GTK and Qt DRT; and WK2 test runner.

  • DumpRenderTree/LayoutTestController.cpp: (ensureShadowRootCallback): (removeShadowRootCallback): (LayoutTestController::staticFunctions):
  • DumpRenderTree/LayoutTestController.h:
  • DumpRenderTree/chromium/LayoutTestController.cpp: (LayoutTestController::LayoutTestController): (LayoutTestController::ensureShadowRoot): (LayoutTestController::removeShadowRoot):
  • DumpRenderTree/chromium/LayoutTestController.h:
  • DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: (LayoutTestController::ensureShadowRoot): (LayoutTestController::removeShadowRoot):
  • DumpRenderTree/mac/LayoutTestControllerMac.mm: (LayoutTestController::shadowRoot): (LayoutTestController::ensureShadowRoot): (LayoutTestController::removeShadowRoot):
  • DumpRenderTree/qt/LayoutTestControllerQt.cpp: (LayoutTestController::ensureShadowRoot): (LayoutTestController::removeShadowRoot):
  • DumpRenderTree/qt/LayoutTestControllerQt.h:
  • DumpRenderTree/win/LayoutTestControllerWin.cpp: (LayoutTestController::ensureShadowRoot): (LayoutTestController::removeShadowRoot):
  • WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
  • WebKitTestRunner/InjectedBundle/LayoutTestController.cpp: (WTR::LayoutTestController::shadowRoot): (WTR::LayoutTestController::ensureShadowRoot): (WTR::LayoutTestController::removeShadowRoot):
  • WebKitTestRunner/InjectedBundle/LayoutTestController.h:
Location:
trunk
Files:
2 added
33 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r84471 r84472  
     12011-04-20  Dominic Cooney  <dominicc@chromium.org>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        layoutTestController can create and destroy shadow DOM
     6        https://bugs.webkit.org/show_bug.cgi?id=59058
     7
     8        Exercise the new layoutTestController methods.
     9
     10        * fast/dom/shadow/layout-tests-can-access-shadow-expected.txt: Added.
     11        * fast/dom/shadow/layout-tests-can-access-shadow.html: Added.
     12
    1132011-04-20  Dirk Pranke  <dpranke@chromium.org>
    214
  • trunk/Source/WebCore/ChangeLog

    r84468 r84472  
     12011-04-20  Dominic Cooney  <dominicc@chromium.org>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        layoutTestController can create and destroy shadow DOM
     6        https://bugs.webkit.org/show_bug.cgi?id=59058
     7
     8        Test: fast/dom/shadow/layout-tests-can-access-shadow.html
     9
     10        * WebCore.exp.in: Mac DRT needs to see Element::ensure/removeShadowRoot
     11
    1122011-04-20  Pratik Solanki  <psolanki@apple.com>
    213
  • trunk/Source/WebCore/WebCore.exp.in

    r84415 r84472  
    803803__ZN7WebCore7Console21shouldPrintExceptionsEv
    804804__ZN7WebCore7Console24setShouldPrintExceptionsEb
     805__ZN7WebCore7Element16ensureShadowRootEv
     806__ZN7WebCore7Element16removeShadowRootEv
    805807__ZN7WebCore7IntRect5scaleEf
    806808__ZN7WebCore7IntRect5uniteERKS0_
  • trunk/Source/WebKit/chromium/ChangeLog

    r84449 r84472  
     12011-04-20  Dominic Cooney  <dominicc@chromium.org>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        layoutTestController can create and destroy shadow DOM
     6        https://bugs.webkit.org/show_bug.cgi?id=59058
     7
     8        Chromium DRT relies on the Chromium WebKit API
     9
     10        * public/WebElement.h:
     11        * src/WebElement.cpp:
     12        (WebKit::WebElement::shadowRoot): don't steal a zero refcount
     13        (WebKit::WebElement::ensureShadowRoot): added
     14        (WebKit::WebElement::removeShadowRoot): added
     15
    1162011-04-20  Alexey Marinichev  <amarinichev@chromium.org>
    217
  • trunk/Source/WebKit/chromium/public/WebElement.h

    r82469 r84472  
    5959        WEBKIT_API WebNamedNodeMap attributes() const;
    6060        WEBKIT_API WebString innerText() const;
     61
    6162        WEBKIT_API WebNode shadowRoot();
     63        WEBKIT_API WebNode ensureShadowRoot();
     64        WEBKIT_API void removeShadowRoot();
    6265
    6366        // Returns the language code specified for this element.  This attribute
  • trunk/Source/WebKit/chromium/src/WebElement.cpp

    r83256 r84472  
    9393WebNode WebElement::shadowRoot()
    9494{
    95     return adoptRef(static_cast<Node*>(unwrap<Element>()->shadowRoot()));
     95    return PassRefPtr<Node>(static_cast<Node*>(unwrap<Element>()->shadowRoot()));
     96}
     97
     98WebNode WebElement::ensureShadowRoot()
     99{
     100    return PassRefPtr<Node>(static_cast<Node*>(unwrap<Element>()->ensureShadowRoot()));
     101}
     102
     103void WebElement::removeShadowRoot()
     104{
     105    unwrap<Element>()->removeShadowRoot();
    96106}
    97107
  • trunk/Source/WebKit/gtk/ChangeLog

    r84381 r84472  
     12011-04-20  Dominic Cooney  <dominicc@chromium.org>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        layoutTestController can create and destroy shadow DOM
     6        https://bugs.webkit.org/show_bug.cgi?id=59058
     7
     8        Support for new methods in GTK DRT.
     9
     10        * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
     11        (DumpRenderTreeSupportGtk::ensureShadowRoot):
     12        (DumpRenderTreeSupportGtk::removeShadowRoot):
     13        * WebCoreSupport/DumpRenderTreeSupportGtk.h:
     14
    1152011-04-20  Carlos Garcia Campos  <cgarcia@igalia.com>
    216
  • trunk/Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp

    r84221 r84472  
    665665}
    666666
     667JSValueRef DumpRenderTreeSupportGtk::ensureShadowRoot(JSContextRef context, JSValueRef value)
     668{
     669    JSLock lock(SilenceAssertionsOnly);
     670    JSC::ExecState* exec = toJS(context);
     671    Element* element = toElement(toJS(exec, value));
     672    if (!element)
     673        return JSValueMakeNull(context);
     674
     675    return toRef(exec, toJS(exec, element->ensureShadowRoot()));
     676}
     677
     678void DumpRenderTreeSupportGtk::removeShadowRoot(JSContextRef context, JSValueRef value)
     679{
     680    JSLock lock(SilenceAssertionsOnly);
     681    JSC::ExecState* exec = toJS(context);
     682    Element* element = toElement(toJS(exec, value));
     683    if (!element)
     684        return;
     685
     686    element->removeShadowRoot();
     687}
     688
    667689unsigned int DumpRenderTreeSupportGtk::workerThreadCount()
    668690{
  • trunk/Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.h

    r84221 r84472  
    6161
    6262    static JSValueRef shadowRoot(JSContextRef, JSValueRef);
     63    static JSValueRef ensureShadowRoot(JSContextRef, JSValueRef);
     64    static void removeShadowRoot(JSContextRef, JSValueRef);
     65
    6366    static WebKitDOMRange* jsValueToDOMRange(JSContextRef, JSValueRef);
    6467
  • trunk/Source/WebKit/mac/ChangeLog

    r84415 r84472  
     12011-04-20  Dominic Cooney  <dominicc@chromium.org>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        layoutTestController can create and destroy shadow DOM
     6        https://bugs.webkit.org/show_bug.cgi?id=59058
     7
     8        Support for new methods in Mac DRT.
     9
     10        * DOM/WebDOMOperations.mm:
     11        (-[DOMElement _ensureShadowRoot:]):
     12        (-[DOMElement _removeShadowRoot]):
     13        * DOM/WebDOMOperationsPrivate.h:
     14
    1152011-04-20  Eric Carlson  <eric.carlson@apple.com>
    216
  • trunk/Source/WebKit/mac/DOM/WebDOMOperations.mm

    r82536 r84472  
    8282}
    8383
     84- (JSValueRef)_ensureShadowRoot:(JSContextRef)context
     85{
     86    JSLock lock(SilenceAssertionsOnly);
     87    ExecState* execState = toJS(context);
     88    return toRef(execState, toJS(execState, core(self)->ensureShadowRoot()));
     89}
     90
     91- (void)_removeShadowRoot
     92{
     93    core(self)->removeShadowRoot();
     94}
     95
    8496@end
    8597
  • trunk/Source/WebKit/mac/DOM/WebDOMOperationsPrivate.h

    r82536 r84472  
    3434- (NSString *)_markerTextForListItem;
    3535- (JSValueRef)_shadowRoot:(JSContextRef)context;
     36- (JSValueRef)_ensureShadowRoot:(JSContextRef)context;
     37- (void)_removeShadowRoot;
    3638@end
    3739
  • trunk/Source/WebKit/qt/ChangeLog

    r84364 r84472  
     12011-04-20  Dominic Cooney  <dominicc@chromium.org>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        layoutTestController can create and destroy shadow DOM
     6        https://bugs.webkit.org/show_bug.cgi?id=59058
     7
     8        Support for new methods in Qt DRT.
     9
     10        * WebCoreSupport/DumpRenderTreeSupportQt.cpp:
     11        (DumpRenderTreeSupportQt::ensureShadowRoot):
     12        (DumpRenderTreeSupportQt::removeShadowRoot):
     13        * WebCoreSupport/DumpRenderTreeSupportQt.h:
     14
    1152011-04-20  Balazs Kelemen  <kbalazs@webkit.org>
    216
  • trunk/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.cpp

    r84139 r84472  
    10781078}
    10791079
     1080QVariant DumpRenderTreeSupportQt::ensureShadowRoot(const QWebElement& element)
     1081{
     1082    WebCore::Element* webElement = element.m_element;
     1083    if (!webElement)
     1084        return QVariant();
     1085
     1086    return QVariant::fromValue(QDRTNode(webElement->ensureShadowRoot()));
     1087}
     1088
     1089void DumpRenderTreeSupportQt::removeShadowRoot(const QWebElement& element)
     1090{
     1091    WebCore::Element* webElement = element.m_element;
     1092    if (!webElement)
     1093        return;
     1094    webElement->removeShadowRoot();
     1095}
     1096
    10801097// Provide a backward compatibility with previously exported private symbols as of QtWebKit 4.6 release
    10811098
  • trunk/Source/WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h

    r84139 r84472  
    203203
    204204    static QVariant shadowRoot(const QWebElement&);
     205    static QVariant ensureShadowRoot(const QWebElement&);
     206    static void removeShadowRoot(const QWebElement&);
    205207};
    206208
  • trunk/Source/WebKit2/ChangeLog

    r84437 r84472  
     12011-04-20  Dominic Cooney  <dominicc@chromium.org>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        layoutTestController can create and destroy shadow DOM
     6        https://bugs.webkit.org/show_bug.cgi?id=59058
     7
     8        Support for new methods in WK2 WebKitTestRunner.
     9
     10        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp:
     11        (WKBundleNodeHandleCopyElementEnsureShadowRoot):
     12        (WKBundleNodeHandleRemoveShadowRoot):
     13        * WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h:
     14        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
     15        (WebKit::InjectedBundleNodeHandle::elementShadowRoot):
     16        (WebKit::InjectedBundleNodeHandle::elementEnsureShadowRoot):
     17        (WebKit::InjectedBundleNodeHandle::elementRemoveShadowRoot):
     18        * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:
     19
    1202011-04-20  Anders Carlsson  <andersca@apple.com>
    221
  • trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp

    r82719 r84472  
    6868}
    6969
     70WKBundleNodeHandleRef WKBundleNodeHandleCopyElementEnsureShadowRoot(WKBundleNodeHandleRef elementHandleRef)
     71{
     72    RefPtr<InjectedBundleNodeHandle> nodeHandle = toImpl(elementHandleRef)->elementEnsureShadowRoot();
     73    return toAPI(nodeHandle.release().releaseRef());
     74}
     75
     76void WKBundleNodeHandleRemoveShadowRoot(WKBundleNodeHandleRef elementHandleRef)
     77{
     78    toImpl(elementHandleRef)->elementRemoveShadowRoot();
     79}
     80
    7081void WKBundleNodeHandleSetHTMLInputElementValueForUser(WKBundleNodeHandleRef htmlInputElementHandleRef, WKStringRef valueRef)
    7182{
  • trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h

    r82719 r84472  
    4848WK_EXPORT WKRect WKBundleNodeHandleGetElementBounds(WKBundleNodeHandleRef elementHandle);
    4949WK_EXPORT WKBundleNodeHandleRef WKBundleNodeHandleCopyElementShadowRoot(WKBundleNodeHandleRef elementHandle);
     50WK_EXPORT WKBundleNodeHandleRef WKBundleNodeHandleCopyElementEnsureShadowRoot(WKBundleNodeHandleRef elementHandle);
     51WK_EXPORT void WKBundleNodeHandleRemoveShadowRoot(WKBundleNodeHandleRef elementHandle);
    5052
    5153/* HTMLInputElement Specific Operations */
  • trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp

    r82719 r84472  
    174174}
    175175
     176PassRefPtr<InjectedBundleNodeHandle> InjectedBundleNodeHandle::elementEnsureShadowRoot()
     177{
     178    if (!m_node->isElementNode())
     179        return 0;
     180
     181    return getOrCreate(static_cast<Element*>(m_node.get())->ensureShadowRoot());
     182}
     183
     184void InjectedBundleNodeHandle::elementRemoveShadowRoot()
     185{
     186    if (!m_node->isElementNode())
     187        return;
     188
     189    static_cast<Element*>(m_node.get())->removeShadowRoot();
     190}
     191
    176192PassRefPtr<WebFrame> InjectedBundleNodeHandle::documentFrame()
    177193{
  • trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h

    r82719 r84472  
    7070
    7171    PassRefPtr<InjectedBundleNodeHandle> elementShadowRoot();
     72    PassRefPtr<InjectedBundleNodeHandle> elementEnsureShadowRoot();
     73    void elementRemoveShadowRoot();
    7274
    7375    PassRefPtr<WebFrame> documentFrame();
  • trunk/Tools/ChangeLog

    r84467 r84472  
     12011-04-20  Dominic Cooney  <dominicc@chromium.org>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        layoutTestController can create and destroy shadow DOM
     6        https://bugs.webkit.org/show_bug.cgi?id=59058
     7
     8        Chromium, Mac, GTK and Qt DRT; and WK2 test runner.
     9
     10        * DumpRenderTree/LayoutTestController.cpp:
     11        (ensureShadowRootCallback):
     12        (removeShadowRootCallback):
     13        (LayoutTestController::staticFunctions):
     14        * DumpRenderTree/LayoutTestController.h:
     15        * DumpRenderTree/chromium/LayoutTestController.cpp:
     16        (LayoutTestController::LayoutTestController):
     17        (LayoutTestController::ensureShadowRoot):
     18        (LayoutTestController::removeShadowRoot):
     19        * DumpRenderTree/chromium/LayoutTestController.h:
     20        * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
     21        (LayoutTestController::ensureShadowRoot):
     22        (LayoutTestController::removeShadowRoot):
     23        * DumpRenderTree/mac/LayoutTestControllerMac.mm:
     24        (LayoutTestController::shadowRoot):
     25        (LayoutTestController::ensureShadowRoot):
     26        (LayoutTestController::removeShadowRoot):
     27        * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
     28        (LayoutTestController::ensureShadowRoot):
     29        (LayoutTestController::removeShadowRoot):
     30        * DumpRenderTree/qt/LayoutTestControllerQt.h:
     31        * DumpRenderTree/win/LayoutTestControllerWin.cpp:
     32        (LayoutTestController::ensureShadowRoot):
     33        (LayoutTestController::removeShadowRoot):
     34        * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
     35        * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
     36        (WTR::LayoutTestController::shadowRoot):
     37        (WTR::LayoutTestController::ensureShadowRoot):
     38        (WTR::LayoutTestController::removeShadowRoot):
     39        * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
     40
    1412011-04-20  Dirk Pranke  <dpranke@chromium.org>
    242
  • trunk/Tools/DumpRenderTree/LayoutTestController.cpp

    r83138 r84472  
    17161716}
    17171717
     1718static JSValueRef ensureShadowRootCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
     1719{
     1720    if (argumentCount != 1)
     1721        return JSValueMakeUndefined(context);
     1722    LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
     1723    return controller->ensureShadowRoot(context, arguments[0]);
     1724}
     1725
     1726static JSValueRef removeShadowRootCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
     1727{
     1728    if (argumentCount != 1)
     1729        return JSValueMakeUndefined(context);
     1730
     1731    LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
     1732    controller->removeShadowRoot(context, arguments[0]);
     1733
     1734    return JSValueMakeUndefined(context);
     1735}
     1736
    17181737static JSValueRef showWebInspectorCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
    17191738{
     
    21972216        { "elementDoesAutoCompleteForElementWithId", elementDoesAutoCompleteForElementWithIdCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
    21982217        { "encodeHostName", encodeHostNameCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
     2218        { "ensureShadowRoot", ensureShadowRootCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
    21992219        { "evaluateInWebInspector", evaluateInWebInspectorCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
    22002220        { "evaluateScriptInIsolatedWorld", evaluateScriptInIsolatedWorldCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
     
    22172237        { "suspendAnimations", suspendAnimationsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
    22182238        { "resumeAnimations", resumeAnimationsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
     2239        { "removeShadowRoot", removeShadowRootCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
    22192240        { "overridePreference", overridePreferenceCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
    22202241        { "pageNumberForElementById", pageNumberForElementByIdCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
  • trunk/Tools/DumpRenderTree/LayoutTestController.h

    r83138 r84472  
    123123    void setScrollbarPolicy(JSStringRef orientation, JSStringRef policy);
    124124    void setEditingBehavior(const char* editingBehavior);
     125
    125126    JSValueRef shadowRoot(JSContextRef, JSValueRef);
     127    JSValueRef ensureShadowRoot(JSContextRef, JSValueRef);
     128    void removeShadowRoot(JSContextRef, JSValueRef);
    126129
    127130    void waitForPolicyDelegate();
  • trunk/Tools/DumpRenderTree/chromium/LayoutTestController.cpp

    r84199 r84472  
    106106    bindMethod("dumpTitleChanges", &LayoutTestController::dumpTitleChanges);
    107107    bindMethod("elementDoesAutoCompleteForElementWithId", &LayoutTestController::elementDoesAutoCompleteForElementWithId);
     108    bindMethod("ensureShadowRoot", &LayoutTestController::ensureShadowRoot);
    108109    bindMethod("evaluateInWebInspector", &LayoutTestController::evaluateInWebInspector);
    109110    bindMethod("evaluateScriptInIsolatedWorld", &LayoutTestController::evaluateScriptInIsolatedWorld);
     
    132133    bindMethod("queueReload", &LayoutTestController::queueReload);
    133134    bindMethod("removeOriginAccessWhitelistEntry", &LayoutTestController::removeOriginAccessWhitelistEntry);
     135    bindMethod("removeShadowRoot", &LayoutTestController::removeShadowRoot);
    134136    bindMethod("repaintSweepHorizontally", &LayoutTestController::repaintSweepHorizontally);
    135137    bindMethod("resumeAnimations", &LayoutTestController::resumeAnimations);
     
    671673
    672674    result->set(WebBindings::makeNode(shadowRoot));
     675}
     676
     677void LayoutTestController::ensureShadowRoot(const CppArgumentList& arguments, CppVariant* result)
     678{
     679    if (arguments.size() != 1 || !arguments[0].isObject()) {
     680        result->setNull();
     681        return;
     682    }
     683
     684    WebElement element;
     685    if (!WebBindings::getElement(arguments[0].value.objectValue, &element)) {
     686        result->setNull();
     687        return;
     688    }
     689
     690    result->set(WebBindings::makeNode(element.ensureShadowRoot()));
     691}
     692
     693void LayoutTestController::removeShadowRoot(const CppArgumentList& arguments, CppVariant* result)
     694{
     695    if (arguments.size() != 1 || !arguments[0].isObject())
     696        return;
     697
     698    WebElement element;
     699    if (!WebBindings::getElement(arguments[0].value.objectValue, &element))
     700        return;
     701
     702    element.removeShadowRoot();
    673703}
    674704
  • trunk/Tools/DumpRenderTree/chromium/LayoutTestController.h

    r84199 r84472  
    273273
    274274    void shadowRoot(const CppArgumentList&, CppVariant*);
     275    void ensureShadowRoot(const CppArgumentList&, CppVariant*);
     276    void removeShadowRoot(const CppArgumentList&, CppVariant*);
    275277
    276278    // The fallback method is called when a nonexistent method is called on
  • trunk/Tools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp

    r82878 r84472  
    925925}
    926926
     927JSValueRef LayoutTestController::ensureShadowRoot(JSContextRef context, JSValueRef element)
     928{
     929    return DumpRenderTreeSupportGtk::ensureShadowRoot(context, element);
     930}
     931
     932void LayoutTestController::removeShadowRoot(JSContextRef context, JSValueRef element)
     933{
     934    DumpRenderTreeSupportGtk::removeShadowRoot(context, element);
     935}
     936
    927937void LayoutTestController::abortModal()
    928938{
  • trunk/Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm

    r83333 r84472  
    10711071JSValueRef LayoutTestController::shadowRoot(JSContextRef context, JSValueRef jsElement)
    10721072{
    1073     DOMElement *element = [DOMElement _DOMElementFromJSContext:context value:jsElement];
     1073    DOMElement* element = [DOMElement _DOMElementFromJSContext:context value:jsElement];
    10741074    if (!element)
    10751075        return JSValueMakeNull(context);
     
    10771077}
    10781078
     1079JSValueRef LayoutTestController::ensureShadowRoot(JSContextRef context, JSValueRef jsElement)
     1080{
     1081    DOMElement* element = [DOMElement _DOMElementFromJSContext:context value:jsElement];
     1082    if (!element)
     1083        return JSValueMakeNull(context);
     1084    return [element _ensureShadowRoot:context];
     1085}
     1086
     1087void LayoutTestController::removeShadowRoot(JSContextRef context, JSValueRef jsElement)
     1088{
     1089    DOMElement* element = [DOMElement _DOMElementFromJSContext:context value:jsElement];
     1090    if (!element)
     1091        return;
     1092    [element _removeShadowRoot];
     1093}
     1094
    10791095void LayoutTestController::abortModal()
    10801096{
  • trunk/Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp

    r84139 r84472  
    786786}
    787787
     788QVariant LayoutTestController::ensureShadowRoot(const QWebElement& element)
     789{
     790    return DumpRenderTreeSupportQt::ensureShadowRoot(element);
     791}
     792
     793void LayoutTestController::removeShadowRoot(const QWebElement& element)
     794{
     795    DumpRenderTreeSupportQt::removeShadowRoot(element);
     796}
     797
    788798int LayoutTestController::numberOfPendingGeolocationPermissionRequests()
    789799{
  • trunk/Tools/DumpRenderTree/qt/LayoutTestControllerQt.h

    r84139 r84472  
    251251
    252252    QVariant shadowRoot(const QWebElement&);
     253    QVariant ensureShadowRoot(const QWebElement&);
     254    void removeShadowRoot(const QWebElement&);
    253255
    254256    void evaluateScriptInIsolatedWorld(int worldID, const QString& script);
  • trunk/Tools/DumpRenderTree/win/LayoutTestControllerWin.cpp

    r82536 r84472  
    14481448}
    14491449
     1450JSValueRef LayoutTestController::ensureShadowRoot(JSContextRef context, JSValueRef jsElement)
     1451{
     1452    // FIXME: Implement this.
     1453    return JSValueMakeUndefined(context);
     1454}
     1455
     1456void LayoutTestController::removeShadowRoot(JSContextRef context, JSValueRef jsElement)
     1457{
     1458    // FIXME: Implement this.
     1459}
     1460
    14501461void LayoutTestController::abortModal()
    14511462{
  • trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl

    r84262 r84472  
    5959        DOMString markerTextForListItem(in object element);
    6060        unsigned long windowCount();
     61
     62        // Shadow DOM.
    6163        object shadowRoot(in object element);
     64        object ensureShadowRoot(in object element);
     65        void removeShadowRoot(in object element);
    6266
    6367        // Repaint testing.
  • trunk/Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.cpp

    r84262 r84472  
    368368        return JSValueMakeNull(context);
    369369
    370     WKRetainPtr<WKBundleNodeHandleRef> shadowRootDOMElement = adoptWK(WKBundleNodeHandleCopyElementShadowRoot(domElement.get()));
    371     if (!shadowRootDOMElement)
    372         return JSValueMakeNull(context);
    373 
    374     return WKBundleFrameGetJavaScriptWrapperForNodeForWorld(mainFrame, shadowRootDOMElement.get(), WKBundleScriptWorldNormalWorld());
     370    WKRetainPtr<WKBundleNodeHandleRef> shadowRootDOMNode = adoptWK(WKBundleNodeHandleCopyElementShadowRoot(domElement.get()));
     371    if (!shadowRootDOMNode)
     372        return JSValueMakeNull(context);
     373
     374    return WKBundleFrameGetJavaScriptWrapperForNodeForWorld(mainFrame, shadowRootDOMNode.get(), WKBundleScriptWorldNormalWorld());
     375}
     376
     377JSValueRef LayoutTestController::ensureShadowRoot(JSValueRef element)
     378{
     379    WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::shared().page()->page());
     380    JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
     381
     382    if (!element || !JSValueIsObject(context, element))
     383        return JSValueMakeNull(context);
     384
     385    WKRetainPtr<WKBundleNodeHandleRef> domElement = adoptWK(WKBundleNodeHandleCreate(context, const_cast<JSObjectRef>(element)));
     386    if (!domElement)
     387        return JSValueMakeNull(context);
     388
     389    WKRetainPtr<WKBundleNodeHandleRef> shadowRootDOMNode = adoptWK(WKBundleNodeHandleCopyElementEnsureShadowRoot(domElement.get()));
     390    if (!shadowRootDOMNode)
     391        return JSValueMakeNull(context);
     392
     393    return WKBundleFrameGetJavaScriptWrapperForNodeForWorld(mainFrame, shadowRootDOMNode.get(), WKBundleScriptWorldNormalWorld());
     394}
     395
     396void LayoutTestController::removeShadowRoot(JSValueRef element)
     397{
     398    WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::shared().page()->page());
     399    JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
     400
     401    if (!element || !JSValueIsObject(context, element))
     402        return;
     403
     404    WKRetainPtr<WKBundleNodeHandleRef> domElement = adoptWK(WKBundleNodeHandleCreate(context, const_cast<JSObjectRef>(element)));
     405    if (!domElement)
     406        return;
     407
     408    WKBundleNodeHandleRemoveShadowRoot(domElement.get());
    375409}
    376410
  • trunk/Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.h

    r84262 r84472  
    8787    JSRetainPtr<JSStringRef> markerTextForListItem(JSValueRef element);
    8888    unsigned windowCount();
     89
     90    // Shadow DOM.
    8991    JSValueRef shadowRoot(JSValueRef element);
     92    JSValueRef ensureShadowRoot(JSValueRef element);
     93    void removeShadowRoot(JSValueRef element);
    9094
    9195    // Repaint testing.
Note: See TracChangeset for help on using the changeset viewer.