| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007-2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2007-2011 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 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 168 ASSERT(!key.isNull()); | 168 ASSERT(!key.isNull()); |
| 169 if (!v8CallBoolean(properties->CreateDataProperty(context, i, v8String(i
nfo.GetIsolate(), key)))) | 169 if (!v8CallBoolean(properties->CreateDataProperty(context, i, v8String(i
nfo.GetIsolate(), key)))) |
| 170 return; | 170 return; |
| 171 } | 171 } |
| 172 | 172 |
| 173 v8SetReturnValue(info, properties); | 173 v8SetReturnValue(info, properties); |
| 174 } | 174 } |
| 175 | 175 |
| 176 void V8CSSStyleDeclaration::namedPropertyQueryCustom(v8::Local<v8::Name> v8Name,
const v8::PropertyCallbackInfo<v8::Integer>& info) | 176 void V8CSSStyleDeclaration::namedPropertyQueryCustom(v8::Local<v8::Name> v8Name,
const v8::PropertyCallbackInfo<v8::Integer>& info) |
| 177 { | 177 { |
| 178 if (!v8Name->IsString()) | |
| 179 return; | |
| 180 // NOTE: cssPropertyInfo lookups incur several mallocs. | 178 // NOTE: cssPropertyInfo lookups incur several mallocs. |
| 181 // Successful lookups have the same cost the first time, but are cached. | 179 // Successful lookups have the same cost the first time, but are cached. |
| 182 if (cssPropertyInfo(v8Name.As<v8::String>())) { | 180 if (cssPropertyInfo(v8Name.As<v8::String>())) { |
| 183 v8SetReturnValueInt(info, 0); | 181 v8SetReturnValueInt(info, 0); |
| 184 return; | 182 return; |
| 185 } | 183 } |
| 186 } | 184 } |
| 187 | 185 |
| 188 void V8CSSStyleDeclaration::namedPropertyGetterCustom(v8::Local<v8::Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) | 186 void V8CSSStyleDeclaration::namedPropertyGetterCustom(v8::Local<v8::Name> name,
const v8::PropertyCallbackInfo<v8::Value>& info) |
| 189 { | 187 { |
| 190 if (!name->IsString()) | |
| 191 return; | |
| 192 | |
| 193 // Search the style declaration. | 188 // Search the style declaration. |
| 194 CSSPropertyID unresolvedProperty = cssPropertyInfo(name.As<v8::String>()); | 189 CSSPropertyID unresolvedProperty = cssPropertyInfo(name.As<v8::String>()); |
| 195 | 190 |
| 196 // Do not handle non-property names. | 191 // Do not handle non-property names. |
| 197 if (!unresolvedProperty) | 192 if (!unresolvedProperty) |
| 198 return; | 193 return; |
| 199 CSSPropertyID resolvedProperty = resolveCSSPropertyID(unresolvedProperty); | 194 CSSPropertyID resolvedProperty = resolveCSSPropertyID(unresolvedProperty); |
| 200 | 195 |
| 201 CSSStyleDeclaration* impl = V8CSSStyleDeclaration::toImpl(info.Holder()); | 196 CSSStyleDeclaration* impl = V8CSSStyleDeclaration::toImpl(info.Holder()); |
| 202 // TODO(leviw): This API doesn't support custom properties. | 197 // TODO(leviw): This API doesn't support custom properties. |
| 203 CSSValue* cssValue = impl->getPropertyCSSValueInternal(resolvedProperty); | 198 CSSValue* cssValue = impl->getPropertyCSSValueInternal(resolvedProperty); |
| 204 if (cssValue) { | 199 if (cssValue) { |
| 205 v8SetReturnValueStringOrNull(info, cssValue->cssText(), info.GetIsolate(
)); | 200 v8SetReturnValueStringOrNull(info, cssValue->cssText(), info.GetIsolate(
)); |
| 206 return; | 201 return; |
| 207 } | 202 } |
| 208 | 203 |
| 209 String result = impl->getPropertyValueInternal(resolvedProperty); | 204 String result = impl->getPropertyValueInternal(resolvedProperty); |
| 210 v8SetReturnValueString(info, result, info.GetIsolate()); | 205 v8SetReturnValueString(info, result, info.GetIsolate()); |
| 211 } | 206 } |
| 212 | 207 |
| 213 void V8CSSStyleDeclaration::namedPropertySetterCustom(v8::Local<v8::Name> name,
v8::Local<v8::Value> value, const v8::PropertyCallbackInfo<v8::Value>& info) | 208 void V8CSSStyleDeclaration::namedPropertySetterCustom(v8::Local<v8::Name> name,
v8::Local<v8::Value> value, const v8::PropertyCallbackInfo<v8::Value>& info) |
| 214 { | 209 { |
| 215 if (!name->IsString()) | |
| 216 return; | |
| 217 CSSStyleDeclaration* impl = V8CSSStyleDeclaration::toImpl(info.Holder()); | 210 CSSStyleDeclaration* impl = V8CSSStyleDeclaration::toImpl(info.Holder()); |
| 218 CSSPropertyID unresolvedProperty = cssPropertyInfo(name.As<v8::String>()); | 211 CSSPropertyID unresolvedProperty = cssPropertyInfo(name.As<v8::String>()); |
| 219 if (!unresolvedProperty) | 212 if (!unresolvedProperty) |
| 220 return; | 213 return; |
| 221 | 214 |
| 222 TOSTRING_VOID(V8StringResource<TreatNullAsNullString>, propertyValue, value)
; | 215 TOSTRING_VOID(V8StringResource<TreatNullAsNullString>, propertyValue, value)
; |
| 223 ExceptionState exceptionState(ExceptionState::SetterContext, getPropertyName
(resolveCSSPropertyID(unresolvedProperty)), "CSSStyleDeclaration", info.Holder()
, info.GetIsolate()); | 216 ExceptionState exceptionState(ExceptionState::SetterContext, getPropertyName
(resolveCSSPropertyID(unresolvedProperty)), "CSSStyleDeclaration", info.Holder()
, info.GetIsolate()); |
| 224 // TODO(leviw): This API doesn't support custom properties. | 217 // TODO(leviw): This API doesn't support custom properties. |
| 225 impl->setPropertyInternal(unresolvedProperty, String(), propertyValue, false
, exceptionState); | 218 impl->setPropertyInternal(unresolvedProperty, String(), propertyValue, false
, exceptionState); |
| 226 | 219 |
| 227 if (exceptionState.throwIfNeeded()) | 220 if (exceptionState.throwIfNeeded()) |
| 228 return; | 221 return; |
| 229 | 222 |
| 230 v8SetReturnValue(info, value); | 223 v8SetReturnValue(info, value); |
| 231 } | 224 } |
| 232 | 225 |
| 233 } // namespace blink | 226 } // namespace blink |
| OLD | NEW |