| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 V8DOMStringMap::toNative(info.Holder())->getNames(names); | 59 V8DOMStringMap::toNative(info.Holder())->getNames(names); |
| 60 v8::Handle<v8::Array> properties = v8::Array::New(names.size()); | 60 v8::Handle<v8::Array> properties = v8::Array::New(names.size()); |
| 61 for (size_t i = 0; i < names.size(); ++i) | 61 for (size_t i = 0; i < names.size(); ++i) |
| 62 properties->Set(v8::Integer::New(i), v8String(names[i])); | 62 properties->Set(v8::Integer::New(i), v8String(names[i])); |
| 63 return properties; | 63 return properties; |
| 64 } | 64 } |
| 65 | 65 |
| 66 v8::Handle<v8::Boolean> V8DOMStringMap::namedPropertyDeleter(v8::Local<v8::Strin
g> name, const v8::AccessorInfo& info) | 66 v8::Handle<v8::Boolean> V8DOMStringMap::namedPropertyDeleter(v8::Local<v8::Strin
g> name, const v8::AccessorInfo& info) |
| 67 { | 67 { |
| 68 INC_STATS("DOM.DOMStringMap.NamedPropertyDeleter"); | 68 INC_STATS("DOM.DOMStringMap.NamedPropertyDeleter"); |
| 69 v8::Handle<v8::Value> value = info.Holder()->GetRealNamedPropertyInPrototype
Chain(name); | 69 |
| 70 if (!value.IsEmpty()) | 70 if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(name).IsEmpty()) |
| 71 return v8::False(); | 71 return v8::False(); |
| 72 if (info.Holder()->HasRealNamedCallbackProperty(name)) | 72 if (info.Holder()->HasRealNamedCallbackProperty(name)) |
| 73 return v8::False(); | 73 return v8::False(); |
| 74 | 74 |
| 75 ExceptionCode ec = 0; | 75 ExceptionCode ec = 0; |
| 76 V8DOMStringMap::toNative(info.Holder())->deleteItem(toWebCoreString(name), e
c); | 76 V8DOMStringMap::toNative(info.Holder())->deleteItem(toWebCoreString(name), e
c); |
| 77 if (ec) | 77 if (ec) |
| 78 throwError(ec); | 78 throwError(ec); |
| 79 return v8::True(); | 79 return v8::True(); |
| 80 } | 80 } |
| 81 | 81 |
| 82 v8::Handle<v8::Value> V8DOMStringMap::namedPropertySetter(v8::Local<v8::String>
name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) | 82 v8::Handle<v8::Value> V8DOMStringMap::namedPropertySetter(v8::Local<v8::String>
name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) |
| 83 { | 83 { |
| 84 INC_STATS("DOM.DOMStringMap.NamedPropertySetter"); | 84 INC_STATS("DOM.DOMStringMap.NamedPropertySetter"); |
| 85 v8::Handle<v8::Value> property = info.Holder()->GetRealNamedPropertyInProtot
ypeChain(name); | 85 |
| 86 if (!property.IsEmpty()) | 86 if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(name).IsEmpty()) |
| 87 return value; | 87 return value; |
| 88 if (info.Holder()->HasRealNamedCallbackProperty(name)) | 88 if (info.Holder()->HasRealNamedCallbackProperty(name)) |
| 89 return value; | 89 return value; |
| 90 | 90 |
| 91 ExceptionCode ec = 0; | 91 ExceptionCode ec = 0; |
| 92 V8DOMStringMap::toNative(info.Holder())->setItem(toWebCoreString(name), toWe
bCoreString(value), ec); | 92 V8DOMStringMap::toNative(info.Holder())->setItem(toWebCoreString(name), toWe
bCoreString(value), ec); |
| 93 if (ec) | 93 if (ec) |
| 94 return throwError(ec); | 94 return throwError(ec); |
| 95 return value; | 95 return value; |
| 96 } | 96 } |
| 97 | 97 |
| 98 v8::Handle<v8::Value> toV8(DOMStringMap* impl) | 98 v8::Handle<v8::Value> toV8(DOMStringMap* impl) |
| 99 { | 99 { |
| 100 if (!impl) | 100 if (!impl) |
| 101 return v8::Null(); | 101 return v8::Null(); |
| 102 v8::Handle<v8::Object> wrapper = V8DOMStringMap::wrap(impl); | 102 v8::Handle<v8::Object> wrapper = V8DOMStringMap::wrap(impl); |
| 103 // Add a hidden reference from the element to the DOMStringMap. | 103 // Add a hidden reference from the element to the DOMStringMap. |
| 104 Element* element = impl->element(); | 104 Element* element = impl->element(); |
| 105 if (!wrapper.IsEmpty() && element) { | 105 if (!wrapper.IsEmpty() && element) { |
| 106 v8::Handle<v8::Value> elementValue = toV8(element); | 106 v8::Handle<v8::Value> elementValue = toV8(element); |
| 107 if (!elementValue.IsEmpty() && elementValue->IsObject()) | 107 if (!elementValue.IsEmpty() && elementValue->IsObject()) |
| 108 V8DOMWrapper::setNamedHiddenReference(elementValue.As<v8::Object>(),
"domStringMap", wrapper); | 108 V8DOMWrapper::setNamedHiddenReference(elementValue.As<v8::Object>(),
"domStringMap", wrapper); |
| 109 } | 109 } |
| 110 return wrapper; | 110 return wrapper; |
| 111 } | 111 } |
| 112 | 112 |
| 113 } // namespace WebCore | 113 } // namespace WebCore |
| OLD | NEW |