| Differences between
and this patch
- a/Source/WebCore/ChangeLog +41 lines
Lines 1-5 a/Source/WebCore/ChangeLog_sec1
1
2012-06-22  Erik Arvidsson  <arv@chromium.org>
1
2012-06-22  Erik Arvidsson  <arv@chromium.org>
2
2
3
        [V8] Bindings for list interfaces are all broken
4
        https://bugs.webkit.org/show_bug.cgi?id=78149
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        WORK IN PROGRESS
9
10
        Tests: fast/dom/Element/client-rect-list-reachable.html
11
               fast/dom/NodeList/nodelist-reachable.html
12
               fast/dom/css-rule-list-reachable.html
13
               fast/files/files-reachable.html
14
15
        * Modules/gamepad/Gamepad.idl:
16
        * Modules/gamepad/GamepadList.idl:
17
        * WebCore.gyp/WebCore.gyp:
18
        * bindings/scripts/CodeGenerator.pm:
19
        (GetInterface):
20
        (ForAllParents):
21
        * bindings/scripts/CodeGeneratorV8.pm:
22
        (GetIndexerType):
23
        (NeedsToVisitDOMWrapper):
24
        (GenerateVisitDOMWrapper):
25
        (GenerateHeader):
26
        (GenerateNormalAttrGetter):
27
        (GenerateConstructorCallback):
28
        (GenerateNamedConstructorCallback):
29
        (GenerateToV8Converters):
30
        (GetDomMapFunction):
31
        (GetDomMapName):
32
        (GetStoreDomMapNameFunction):
33
        * bindings/v8/custom/V8NodeListCustom.cpp:
34
        (WebCore::V8NodeList::visitDOMWrapper):
35
        (WebCore):
36
        * dom/ClientRect.idl:
37
        * dom/ClientRectList.idl:
38
        * dom/NodeList.idl:
39
        * fileapi/File.idl:
40
        * fileapi/FileList.idl:
41
42
2012-06-22  Erik Arvidsson  <arv@chromium.org>
43
3
        [V8] Clean up visitDOMWrapper code
44
        [V8] Clean up visitDOMWrapper code
4
        https://bugs.webkit.org/show_bug.cgi?id=89774
45
        https://bugs.webkit.org/show_bug.cgi?id=89774
5
46
- a/Source/WebCore/Modules/gamepad/Gamepad.idl -1 / +2 lines
Lines 26-32 a/Source/WebCore/Modules/gamepad/Gamepad.idl_sec1
26
module dom {
26
module dom {
27
27
28
    interface [
28
    interface [
29
        Conditional=GAMEPAD
29
        Conditional=GAMEPAD,
30
        V8DependentLifetime
30
    ] Gamepad {
31
    ] Gamepad {
31
        readonly attribute DOMString id;
32
        readonly attribute DOMString id;
32
        readonly attribute unsigned long index;
33
        readonly attribute unsigned long index;
- a/Source/WebCore/Modules/gamepad/GamepadList.idl -1 / +2 lines
Lines 27-33 module dom { a/Source/WebCore/Modules/gamepad/GamepadList.idl_sec1
27
27
28
    interface [
28
    interface [
29
        Conditional=GAMEPAD,
29
        Conditional=GAMEPAD,
30
        IndexedGetter
30
        IndexedGetter,
31
        V8DependentLifetime
31
    ] GamepadList {
32
    ] GamepadList {
32
        readonly attribute unsigned long length;
33
        readonly attribute unsigned long length;
33
        Gamepad item(in [Optional=DefaultIsUndefined] unsigned long index);
34
        Gamepad item(in [Optional=DefaultIsUndefined] unsigned long index);
- a/Source/WebCore/WebCore.gyp/WebCore.gyp +6 lines
Lines 1043-1054 a/Source/WebCore/WebCore.gyp/WebCore.gyp_sec1
1043
          ],
1043
          ],
1044
          'variables': {
1044
          'variables': {
1045
            'generator_include_dirs': [
1045
            'generator_include_dirs': [
1046
              '--include', '../Modules/battery',
1046
              '--include', '../Modules/filesystem',
1047
              '--include', '../Modules/filesystem',
1048
              '--include', '../Modules/gamepad',
1049
              '--include', '../Modules/geolocation',
1047
              '--include', '../Modules/indexeddb',
1050
              '--include', '../Modules/indexeddb',
1048
              '--include', '../Modules/intents',
1051
              '--include', '../Modules/intents',
1049
              '--include', '../Modules/mediastream',
1052
              '--include', '../Modules/mediastream',
1053
              '--include', '../Modules/quota',
1054
              '--include', '../Modules/speech',
1050
              '--include', '../Modules/webaudio',
1055
              '--include', '../Modules/webaudio',
1051
              '--include', '../Modules/webdatabase',
1056
              '--include', '../Modules/webdatabase',
1057
              '--include', '../Modules/websockets',
1052
              '--include', '../css',
1058
              '--include', '../css',
1053
              '--include', '../dom',
1059
              '--include', '../dom',
1054
              '--include', '../fileapi',
1060
              '--include', '../fileapi',
- a/Source/WebCore/bindings/scripts/CodeGenerator.pm -2 / +8 lines
Lines 172-177 sub UpdateFile a/Source/WebCore/bindings/scripts/CodeGenerator.pm_sec1
172
    close FH;
172
    close FH;
173
}
173
}
174
174
175
sub GetInterface
176
{
177
    my ($object, $type, $parentsOnly) = @_;
178
    my $interfaceName = $object->StripModule($type);
179
    return $object->ParseInterface($interfaceName, $parentsOnly);
180
}
181
175
sub ForAllParents
182
sub ForAllParents
176
{
183
{
177
    my $object = shift;
184
    my $object = shift;
Lines 185-192 sub ForAllParents a/Source/WebCore/bindings/scripts/CodeGenerator.pm_sec2
185
        my $interface = shift;
192
        my $interface = shift;
186
193
187
        for (@{$interface->parents}) {
194
        for (@{$interface->parents}) {
188
            my $interfaceName = $object->StripModule($_);
195
            my $parentInterface = $object->GetInterface($_, $parentsOnly);
189
            my $parentInterface = $object->ParseInterface($interfaceName, $parentsOnly);
190
196
191
            if ($beforeRecursion) {
197
            if ($beforeRecursion) {
192
                &$beforeRecursion($parentInterface) eq 'prune' and next;
198
                &$beforeRecursion($parentInterface) eq 'prune' and next;
- a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm -10 / +73 lines
Lines 181-190 sub AddIncludesForType a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm_sec1
181
    }
181
    }
182
}
182
}
183
183
184
sub GetIndexerType
185
{
186
    my $dataNode = shift;
187
188
    my $hasIndexGetter = $dataNode->extendedAttributes->{"IndexedGetter"};
189
    if (!$hasIndexGetter) {
190
        return 0;
191
    }
192
193
    my $indexer;
194
195
    foreach my $function (@{$dataNode->functions}) {
196
        if ($function->signature->name eq "item") {
197
            $indexer = $function->signature;
198
            last;
199
        }
200
    }
201
202
    if (!$indexer) {
203
        $indexer = $codeGenerator->FindSuperMethod($dataNode, "item");
204
    }
205
206
    if (!$indexer) {
207
        return 0;
208
    }
209
210
    my $indexerType = $indexer->type;
211
212
    if (IsWrapperType($indexerType) && !IsDOMNodeType($indexerType)) {
213
        return $indexerType;
214
    }
215
216
    return 0;
217
}
218
184
sub NeedsToVisitDOMWrapper
219
sub NeedsToVisitDOMWrapper
185
{
220
{
186
    my $dataNode = shift;
221
    my $dataNode = shift;
187
    return GetGenerateIsReachable($dataNode) || GetCustomIsReachable($dataNode);
222
    return GetGenerateIsReachable($dataNode) || GetCustomIsReachable($dataNode) || GetIndexerType($dataNode);
188
}
223
}
189
224
190
sub GetGenerateIsReachable
225
sub GetGenerateIsReachable
Lines 232-237 END a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm_sec2
232
END
267
END
233
    }
268
    }
234
269
270
    my $indexerType = GetIndexerType($dataNode);
271
    if ($indexerType) {
272
        # FIXME: This needs to be a $dataNode
273
        my $itemDataNode = $codeGenerator->GetInterface($indexerType);
274
        my $mapName = GetStoreDomMapNameFunction($itemDataNode);
275
        push(@implContent, <<END);
276
    {
277
        Vector<v8::Persistent<v8::Value> > wrappers;
278
        for (unsigned i = 0; i < impl->length(); ++i) {
279
            RefPtr<${indexerType}> item = impl->item(i);
280
            v8::Handle<v8::Object> wrapper = store->$mapName().get(item.get());
281
            if (!wrapper.IsEmpty())
282
                wrappers.append(wrapper);
283
        }
284
        if (!wrappers.isEmpty())
285
            v8::V8::AddImplicitReferences(wrapper, wrappers.data(), wrappers.size());
286
    }
287
END
288
    }
235
    push(@implContent, <<END);
289
    push(@implContent, <<END);
236
}
290
}
237
291
Lines 293-299 sub GenerateHeader a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm_sec3
293
    $codeGenerator->LinkOverloadedFunctions($dataNode);
347
    $codeGenerator->LinkOverloadedFunctions($dataNode);
294
348
295
    my $hasDependentLifetime = $dataNode->extendedAttributes->{"V8DependentLifetime"} || $dataNode->extendedAttributes->{"ActiveDOMObject"}
349
    my $hasDependentLifetime = $dataNode->extendedAttributes->{"V8DependentLifetime"} || $dataNode->extendedAttributes->{"ActiveDOMObject"}
296
         || GetGenerateIsReachable($dataNode) || $className =~ /SVG/;
350
         || GetGenerateIsReachable($dataNode) || GetCustomIsReachable($dataNode) || $className =~ /SVG/;
297
    if (!$hasDependentLifetime) {
351
    if (!$hasDependentLifetime) {
298
        foreach (@{$dataNode->parents}) {
352
        foreach (@{$dataNode->parents}) {
299
            my $parent = $codeGenerator->StripModule($_);
353
            my $parent = $codeGenerator->StripModule($_);
Lines 494-500 v8::Handle<v8::Object> ${className}::wrap(${nativeType}* impl, v8::Isolate* isol a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm_sec4
494
{
548
{
495
END
549
END
496
    push(@headerContent, "    if (!forceNewObject) {\n") if IsDOMNodeType($interfaceName);
550
    push(@headerContent, "    if (!forceNewObject) {\n") if IsDOMNodeType($interfaceName);
497
    my $domMapFunction = GetDomMapFunction($dataNode, $interfaceName, "isolate");
551
    my $domMapFunction = GetDomMapFunction($dataNode, "isolate");
498
    my $getCachedWrapper = IsNodeSubType($dataNode) ? "V8DOMWrapper::getCachedWrapper(impl)" : "${domMapFunction}.get(impl)";
552
    my $getCachedWrapper = IsNodeSubType($dataNode) ? "V8DOMWrapper::getCachedWrapper(impl)" : "${domMapFunction}.get(impl)";
499
    push(@headerContent, <<END);
553
    push(@headerContent, <<END);
500
        v8::Handle<v8::Object> wrapper = $getCachedWrapper;
554
        v8::Handle<v8::Object> wrapper = $getCachedWrapper;
Lines 991-997 END a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm_sec5
991
        # Check for a wrapper in the wrapper cache. If there is one, we know that a hidden reference has already
1045
        # Check for a wrapper in the wrapper cache. If there is one, we know that a hidden reference has already
992
        # been created. If we don't find a wrapper, we create both a wrapper and a hidden reference.
1046
        # been created. If we don't find a wrapper, we create both a wrapper and a hidden reference.
993
        push(@implContentDecls, "    RefPtr<$returnType> result = ${getterString};\n");
1047
        push(@implContentDecls, "    RefPtr<$returnType> result = ${getterString};\n");
994
        my $domMapFunction = GetDomMapFunction($dataNode, $interfaceName, "info.GetIsolate()");
1048
        my $domMapFunction = GetDomMapFunction($dataNode, "info.GetIsolate()");
995
        push(@implContentDecls, "    v8::Handle<v8::Value> wrapper = result.get() ? ${domMapFunction}.get(result.get()) : v8::Handle<v8::Object>();\n");
1049
        push(@implContentDecls, "    v8::Handle<v8::Value> wrapper = result.get() ? ${domMapFunction}.get(result.get()) : v8::Handle<v8::Object>();\n");
996
        push(@implContentDecls, "    if (wrapper.IsEmpty()) {\n");
1050
        push(@implContentDecls, "    if (wrapper.IsEmpty()) {\n");
997
        push(@implContentDecls, "        wrapper = toV8(result.get(), info.GetIsolate());\n");
1051
        push(@implContentDecls, "        wrapper = toV8(result.get(), info.GetIsolate());\n");
Lines 1827-1833 END a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm_sec6
1827
        push(@implContent, "        goto fail;\n");
1881
        push(@implContent, "        goto fail;\n");
1828
    }
1882
    }
1829
1883
1830
    my $DOMObject = GetDomMapName($dataNode, $implClassName);
1884
    my $DOMObject = GetDomMapName($dataNode);
1831
    push(@implContent, <<END);
1885
    push(@implContent, <<END);
1832
1886
1833
    V8DOMWrapper::setDOMWrapper(wrapper, &info, impl.get());
1887
    V8DOMWrapper::setDOMWrapper(wrapper, &info, impl.get());
Lines 2002-2008 END a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm_sec7
2002
        push(@implContent, "        goto fail;\n");
2056
        push(@implContent, "        goto fail;\n");
2003
    }
2057
    }
2004
2058
2005
    my $DOMObject = GetDomMapName($dataNode, $implClassName);
2059
    my $DOMObject = GetDomMapName($dataNode);
2006
    push(@implContent, <<END);
2060
    push(@implContent, <<END);
2007
2061
2008
    V8DOMWrapper::setDOMWrapper(wrapper, &V8${implClassName}Constructor::info, impl.get());
2062
    V8DOMWrapper::setDOMWrapper(wrapper, &V8${implClassName}Constructor::info, impl.get());
Lines 3217-3223 sub GenerateToV8Converters a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm_sec8
3217
    my $className = shift;
3271
    my $className = shift;
3218
    my $nativeType = shift;
3272
    my $nativeType = shift;
3219
3273
3220
    my $domMapName = GetDomMapName($dataNode, $interfaceName);
3274
    my $domMapName = GetDomMapName($dataNode);
3221
    my $forceNewObjectInput = IsDOMNodeType($interfaceName) ? ", bool forceNewObject" : "";
3275
    my $forceNewObjectInput = IsDOMNodeType($interfaceName) ? ", bool forceNewObject" : "";
3222
    my $forceNewObjectCall = IsDOMNodeType($interfaceName) ? ", forceNewObject" : "";
3276
    my $forceNewObjectCall = IsDOMNodeType($interfaceName) ? ", forceNewObject" : "";
3223
    my $wrapSlowArgumentType = GetPassRefPtrType($nativeType);
3277
    my $wrapSlowArgumentType = GetPassRefPtrType($nativeType);
Lines 3315-3330 END a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm_sec9
3315
sub GetDomMapFunction
3369
sub GetDomMapFunction
3316
{
3370
{
3317
    my $dataNode = shift;
3371
    my $dataNode = shift;
3318
    my $interfaceName = shift;
3319
    my $getIsolate = shift;
3372
    my $getIsolate = shift;
3320
3373
3321
    return "get" . GetDomMapName($dataNode, $interfaceName) . "Map(" . $getIsolate . ")";
3374
    return "get" . GetDomMapName($dataNode) . "Map(" . $getIsolate . ")";
3322
}
3375
}
3323
3376
3324
sub GetDomMapName
3377
sub GetDomMapName
3325
{
3378
{
3326
    my $dataNode = shift;
3379
    my $dataNode = shift;
3327
    my $type = shift;
3328
3380
3329
    return "ActiveDOMNode" if (IsNodeSubType($dataNode) && $dataNode->extendedAttributes->{"ActiveDOMObject"});
3381
    return "ActiveDOMNode" if (IsNodeSubType($dataNode) && $dataNode->extendedAttributes->{"ActiveDOMObject"});
3330
    return "DOMNode" if IsNodeSubType($dataNode);
3382
    return "DOMNode" if IsNodeSubType($dataNode);
Lines 3332-3337 sub GetDomMapName a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm_sec10
3332
    return "DOMObject";
3384
    return "DOMObject";
3333
}
3385
}
3334
3386
3387
sub GetStoreDomMapNameFunction
3388
{
3389
    my $dataNode = shift;
3390
    my $domMapName = GetDomMapName($dataNode);
3391
3392
    return "domNodeMap" if ($domMapName eq "DOMNode");
3393
    return "activeDomNodeMap" if ($domMapName eq "ActiveDOMNode");
3394
    return "activeDomObjectMap" if ($domMapName eq "ActiveDOMObject");
3395
    return "domObjectMap" if ($domMapName eq "DOMObject");
3396
}
3397
3335
sub GetNativeTypeForConversions
3398
sub GetNativeTypeForConversions
3336
{
3399
{
3337
    my $dataNode = shift;
3400
    my $dataNode = shift;
- a/Source/WebCore/bindings/v8/custom/V8NodeListCustom.cpp +16 lines
Lines 31-36 a/Source/WebCore/bindings/v8/custom/V8NodeListCustom.cpp_sec1
31
#include "config.h"
31
#include "config.h"
32
#include "V8NodeList.h" 
32
#include "V8NodeList.h" 
33
33
34
#include "DynamicNodeList.h"
34
#include "NodeList.h"
35
#include "NodeList.h"
35
#include "V8Binding.h"
36
#include "V8Binding.h"
36
#include "V8Node.h"
37
#include "V8Node.h"
Lines 59-62 v8::Handle<v8::Value> V8NodeList::namedPropertyGetter(v8::Local<v8::String> name a/Source/WebCore/bindings/v8/custom/V8NodeListCustom.cpp_sec2
59
    return toV8(result.release(), info.GetIsolate());
60
    return toV8(result.release(), info.GetIsolate());
60
}
61
}
61
62
63
void V8NodeList::visitDOMWrapper(DOMDataStore* store, void* object, v8::Persistent<v8::Object> wrapper)
64
{
65
    NodeList* impl = static_cast<NodeList*>(object);
66
    if (impl->isDynamicNodeList()) {
67
        Node* owner = static_cast<DynamicNodeList*>(impl)->ownerNode();
68
        if (owner) {
69
            v8::Persistent<v8::Object> ownerWrapper = store->domNodeMap().get(owner);
70
            if (!ownerWrapper.IsEmpty()) {
71
                v8::Persistent<v8::Value> value = wrapper;
72
                v8::V8::AddImplicitReferences(ownerWrapper, &value, 1);
73
            }
74
        }
75
    }
76
}
77
62
} // namespace WebCore
78
} // namespace WebCore
- a/Source/WebCore/dom/ClientRect.idl -1 / +3 lines
Lines 26-32 a/Source/WebCore/dom/ClientRect.idl_sec1
26
26
27
module view {
27
module view {
28
28
29
    interface ClientRect {
29
    interface [
30
        V8DependentLifetime
31
    ] ClientRect {
30
        readonly attribute float top;
32
        readonly attribute float top;
31
        readonly attribute float right;
33
        readonly attribute float right;
32
        readonly attribute float bottom;
34
        readonly attribute float bottom;
- a/Source/WebCore/dom/ClientRectList.idl -1 / +2 lines
Lines 27-33 a/Source/WebCore/dom/ClientRectList.idl_sec1
27
module view {
27
module view {
28
28
29
    interface [
29
    interface [
30
        IndexedGetter
30
        IndexedGetter,
31
        V8DependentLifetime
31
    ] ClientRectList {
32
    ] ClientRectList {
32
        readonly attribute unsigned long length;
33
        readonly attribute unsigned long length;
33
        ClientRect item(in [IsIndex,Optional=DefaultIsUndefined] unsigned long index);
34
        ClientRect item(in [IsIndex,Optional=DefaultIsUndefined] unsigned long index);
- a/Source/WebCore/dom/NodeList.idl -1 / +1 lines
Lines 21-27 a/Source/WebCore/dom/NodeList.idl_sec1
21
module core {
21
module core {
22
22
23
    interface [
23
    interface [
24
        JSCustomIsReachable,
24
        CustomIsReachable,
25
        IndexedGetter,
25
        IndexedGetter,
26
        NamedGetter
26
        NamedGetter
27
    ] NodeList {
27
    ] NodeList {
- a/Source/WebCore/fileapi/File.idl -1 / +2 lines
Lines 28-34 module html { a/Source/WebCore/fileapi/File.idl_sec1
28
    interface [
28
    interface [
29
        JSGenerateToNativeObject,
29
        JSGenerateToNativeObject,
30
        JSGenerateToJSObject,
30
        JSGenerateToJSObject,
31
        JSNoStaticTables
31
        JSNoStaticTables,
32
        V8DependentLifetime
32
    ] File : Blob {
33
    ] File : Blob {
33
        readonly attribute DOMString name;
34
        readonly attribute DOMString name;
34
#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
35
#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
- a/Source/WebCore/fileapi/FileList.idl -1 / +2 lines
Lines 27-33 module html { a/Source/WebCore/fileapi/FileList.idl_sec1
27
27
28
    interface [
28
    interface [
29
        IndexedGetter,
29
        IndexedGetter,
30
        JSNoStaticTables
30
        JSNoStaticTables,
31
        V8DependentLifetime
31
    ] FileList {
32
    ] FileList {
32
        readonly attribute unsigned long length;
33
        readonly attribute unsigned long length;
33
        File item(in unsigned long index);
34
        File item(in unsigned long index);
- a/LayoutTests/ChangeLog +19 lines
Lines 1-3 a/LayoutTests/ChangeLog_sec1
1
2012-06-22  Erik Arvidsson  <arv@chromium.org>
2
3
        [V8] Bindings for list interfaces are all broken
4
        https://bugs.webkit.org/show_bug.cgi?id=78149
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        WORK IN PROGRESS
9
10
        * fast/dom/Element/client-rect-list-reachable-expected.txt: Added.
11
        * fast/dom/Element/client-rect-list-reachable.html: Added.
12
        * fast/dom/NodeList/nodelist-reachable-expected.txt: Added.
13
        * fast/dom/NodeList/nodelist-reachable.html: Added.
14
        * fast/dom/css-rule-list-reachable-expected.txt: Added.
15
        * fast/dom/css-rule-list-reachable.html: Added.
16
        * fast/files/files-reachable-expected.txt: Added.
17
        * fast/files/files-reachable.html: Added.
18
        * platform/chromium/TestExpectations:
19
1
2012-06-22  Jan Keromnes  <janx@linux.com>
20
2012-06-22  Jan Keromnes  <janx@linux.com>
2
21
3
        Web Inspector: ExtensionPanel.onSearch listener doesn't work
22
        Web Inspector: ExtensionPanel.onSearch listener doesn't work
- a/LayoutTests/fast/dom/Element/client-rect-list-reachable-expected.txt +5 lines
Line 0 a/LayoutTests/fast/dom/Element/client-rect-list-reachable-expected.txt_sec1
1
PASS rects[0].customProperty is 42
2
PASS successfullyParsed is true
3
4
TEST COMPLETE
5
- a/LayoutTests/fast/dom/Element/client-rect-list-reachable.html +13 lines
Line 0 a/LayoutTests/fast/dom/Element/client-rect-list-reachable.html_sec1
1
<!DOCTYPE html>
2
<body>
3
<script src="../../js/resources/js-test-pre.js"></script>
4
<script>
5
6
var rects = document.body.getClientRects();
7
rects[0].customProperty = 42;
8
gc();
9
shouldBe('rects[0].customProperty', '42');
10
11
</script>
12
<script src="../../js/resources/js-test-post.js"></script>
13
</body>
- a/LayoutTests/fast/dom/NodeList/nodelist-reachable-expected.txt +5 lines
Line 0 a/LayoutTests/fast/dom/NodeList/nodelist-reachable-expected.txt_sec1
1
PASS document.body.childNodes.customProperty is 42
2
PASS successfullyParsed is true
3
4
TEST COMPLETE
5
- a/LayoutTests/fast/dom/NodeList/nodelist-reachable.html +12 lines
Line 0 a/LayoutTests/fast/dom/NodeList/nodelist-reachable.html_sec1
1
<!DOCTYPE html>
2
<body>
3
<script src="../../js/resources/js-test-pre.js"></script>
4
<script>
5
6
document.body.childNodes.customProperty = 42;
7
gc();
8
shouldBe('document.body.childNodes.customProperty', '42');
9
10
</script>
11
<script src="../../js/resources/js-test-post.js"></script>
12
</body>
- a/LayoutTests/fast/dom/css-rule-list-reachable-expected.txt +5 lines
Line 0 a/LayoutTests/fast/dom/css-rule-list-reachable-expected.txt_sec1
1
PASS cssRules[0].customProperty is 42
2
PASS successfullyParsed is true
3
4
TEST COMPLETE
5
- a/LayoutTests/fast/dom/css-rule-list-reachable.html +16 lines
Line 0 a/LayoutTests/fast/dom/css-rule-list-reachable.html_sec1
1
<!DOCTYPE html>
2
<body>
3
<style id="test-sheet">
4
body {}
5
</style>
6
<script src="../js/resources/js-test-pre.js"></script>
7
<script>
8
9
var cssRules = document.getElementById('test-sheet').sheet.cssRules;
10
cssRules[0].customProperty = 42;
11
gc();
12
shouldBe('cssRules[0].customProperty', '42');
13
14
</script>
15
<script src="../js/resources/js-test-post.js"></script>
16
</body>
- a/LayoutTests/fast/files/files-reachable-expected.txt +5 lines
Line 0 a/LayoutTests/fast/files/files-reachable-expected.txt_sec1
1
PASS files[0].customProperty is 42
2
PASS successfullyParsed is true
3
4
TEST COMPLETE
5
- a/LayoutTests/fast/files/files-reachable.html +31 lines
Line 0 a/LayoutTests/fast/files/files-reachable.html_sec1
1
<!DOCTYPE html>
2
<script src="../js/resources/js-test-pre.js"></script>
3
<input type="file" id="file" onchange="onInputFileChange()">
4
5
<script>
6
7
var files;
8
9
function onInputFileChange()
10
{
11
    files = document.getElementById('file').files;
12
    files[0].customProperty = 42;
13
    gc();
14
    shouldBe('files[0].customProperty', '42');
15
}
16
17
function moveMouseToCenterOfElement(element)
18
{
19
    var centerX = element.offsetLeft + element.offsetWidth / 2;
20
    var centerY = element.offsetTop + element.offsetHeight / 2;
21
    eventSender.mouseMoveTo(centerX, centerY);
22
}
23
24
if (window.eventSender) {
25
    eventSender.beginDragWithFiles(['resources/abe.png']);
26
    moveMouseToCenterOfElement(document.getElementById('file'));
27
    eventSender.mouseUp();
28
}
29
30
</script>
31
<script src="../js/resources/js-test-post.js"></script>
- a/LayoutTests/platform/chromium/TestExpectations -3 lines
Lines 2974-2982 BUG_SENORBLANCO : platform/chromium/virtual/gpu/fast/canvas/canvas-transforms-fi a/LayoutTests/platform/chromium/TestExpectations_sec1
2974
2974
2975
BUGWK66953 : transitions/default-timing-function.html = IMAGE
2975
BUGWK66953 : transitions/default-timing-function.html = IMAGE
2976
2976
2977
BUGWK73865 : media/track/text-track-cue-is-reachable.html = TEXT
2978
BUGWK73865 : media/track/text-track-is-reachable.html = TEXT
2979
2980
BUGWK81402 WIN : media/track/track-active-cues.html = PASS TIMEOUT
2977
BUGWK81402 WIN : media/track/track-active-cues.html = PASS TIMEOUT
2981
BUGWK83882 : media/track/track-mode.html = PASS TEXT TIMEOUT
2978
BUGWK83882 : media/track/track-mode.html = PASS TEXT TIMEOUT
2982
2979

Return to Bug 78149