Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(89)

Side by Side Diff: Source/bindings/v8/custom/V8HTMLAllCollectionCustom.cpp

Issue 158563004: Make HTMLAllCollection named property getter behave more according to spec (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase and get rid of code duplication Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 RefPtr<Element> result = collection->item(index->Uint32Value()); 74 RefPtr<Element> result = collection->item(index->Uint32Value());
75 return toV8(result.release(), info.Holder(), info.GetIsolate()); 75 return toV8(result.release(), info.Holder(), info.GetIsolate());
76 } 76 }
77 77
78 void V8HTMLAllCollection::itemMethodCustom(const v8::FunctionCallbackInfo<v8::Va lue>& info) 78 void V8HTMLAllCollection::itemMethodCustom(const v8::FunctionCallbackInfo<v8::Va lue>& info)
79 { 79 {
80 HTMLAllCollection* imp = V8HTMLAllCollection::toNative(info.Holder()); 80 HTMLAllCollection* imp = V8HTMLAllCollection::toNative(info.Holder());
81 v8SetReturnValue(info, getItem(imp, info[0], info)); 81 v8SetReturnValue(info, getItem(imp, info[0], info));
82 } 82 }
83 83
84 void V8HTMLAllCollection::namedItemMethodCustom(const v8::FunctionCallbackInfo<v 8::Value>& info)
85 {
86 V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<>, name, info[0]);
87
88 HTMLAllCollection* imp = V8HTMLAllCollection::toNative(info.Holder());
89 v8::Handle<v8::Value> result = getNamedItems(imp, name, info);
90
91 if (result.IsEmpty()) {
92 v8SetReturnValueNull(info);
93 return;
94 }
95
96 v8SetReturnValue(info, result);
97 }
98
99 void V8HTMLAllCollection::legacyCallCustom(const v8::FunctionCallbackInfo<v8::Va lue>& info) 84 void V8HTMLAllCollection::legacyCallCustom(const v8::FunctionCallbackInfo<v8::Va lue>& info)
100 { 85 {
101 if (info.Length() < 1) 86 if (info.Length() < 1)
102 return; 87 return;
103 88
104 HTMLAllCollection* imp = V8HTMLAllCollection::toNative(info.Holder()); 89 HTMLAllCollection* imp = V8HTMLAllCollection::toNative(info.Holder());
105 Node* ownerNode = imp->ownerNode(); 90 Node* ownerNode = imp->ownerNode();
106 ASSERT(ownerNode); 91 ASSERT(ownerNode);
107 92
108 UseCounter::count(ownerNode->document(), UseCounter::DocumentAllLegacyCall); 93 UseCounter::count(ownerNode->document(), UseCounter::DocumentAllLegacyCall);
109 94
110 if (info.Length() == 1) { 95 if (info.Length() == 1) {
111 v8SetReturnValue(info, getItem(imp, info[0], info)); 96 v8SetReturnValue(info, getItem(imp, info[0], info));
112 return; 97 return;
113 } 98 }
114 99
115 // If there is a second argument it is the index of the item we want. 100 // If there is a second argument it is the index of the item we want.
116 V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<>, name, info[0]); 101 V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<>, name, info[0]);
117 v8::Local<v8::Uint32> index = info[1]->ToArrayIndex(); 102 v8::Local<v8::Uint32> index = info[1]->ToArrayIndex();
118 if (index.IsEmpty()) 103 if (index.IsEmpty())
119 return; 104 return;
120 105
121 if (Node* node = imp->namedItemWithIndex(name, index->Uint32Value())) { 106 if (Node* node = imp->namedItemWithIndex(name, index->Uint32Value())) {
122 v8SetReturnValueFast(info, node, imp); 107 v8SetReturnValueFast(info, node, imp);
123 return; 108 return;
124 } 109 }
125 } 110 }
126 111
127 } // namespace WebCore 112 } // namespace WebCore
OLDNEW
« no previous file with comments | « LayoutTests/inspector/console/console-format-collections-expected.txt ('k') | Source/core/html/HTMLAllCollection.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698