Chromium Code Reviews| 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 | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 84 return !isUndefinedOrNull() && m_options->IsObject(); | 84 return !isUndefinedOrNull() && m_options->IsObject(); |
| 85 } | 85 } |
| 86 | 86 |
| 87 bool Dictionary::isUndefinedOrNull() const | 87 bool Dictionary::isUndefinedOrNull() const |
| 88 { | 88 { |
| 89 if (m_options.IsEmpty()) | 89 if (m_options.IsEmpty()) |
| 90 return true; | 90 return true; |
| 91 return WebCore::isUndefinedOrNull(m_options); | 91 return WebCore::isUndefinedOrNull(m_options); |
| 92 } | 92 } |
| 93 | 93 |
| 94 bool Dictionary::hasProperty(const String& key) const | |
| 95 { | |
| 96 if (isUndefinedOrNull()) | |
| 97 return false; | |
| 98 v8::Local<v8::Object> options = m_options->ToObject(); | |
| 99 ASSERT(!options.IsEmpty()); | |
| 100 | |
| 101 ASSERT(m_isolate); | |
| 102 ASSERT(m_isolate == v8::Isolate::GetCurrent()); | |
| 103 v8::Handle<v8::String> v8Key = v8String(key, m_isolate); | |
| 104 if (!options->Has(v8Key)) | |
| 105 return false; | |
| 106 | |
| 107 return true; | |
| 108 } | |
| 109 | |
| 94 bool Dictionary::getKey(const String& key, v8::Local<v8::Value>& value) const | 110 bool Dictionary::getKey(const String& key, v8::Local<v8::Value>& value) const |
| 95 { | 111 { |
| 96 if (isUndefinedOrNull()) | 112 if (isUndefinedOrNull()) |
| 97 return false; | 113 return false; |
| 98 v8::Local<v8::Object> options = m_options->ToObject(); | 114 v8::Local<v8::Object> options = m_options->ToObject(); |
| 99 ASSERT(!options.IsEmpty()); | 115 ASSERT(!options.IsEmpty()); |
| 100 | 116 |
| 101 ASSERT(m_isolate); | 117 ASSERT(m_isolate); |
| 102 ASSERT(m_isolate == v8::Isolate::GetCurrent()); | 118 ASSERT(m_isolate == v8::Isolate::GetCurrent()); |
| 103 v8::Handle<v8::String> v8Key = v8String(key, m_isolate); | 119 v8::Handle<v8::String> v8Key = v8String(key, m_isolate); |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 120 if (!getKey(key, v8Value)) | 136 if (!getKey(key, v8Value)) |
| 121 return false; | 137 return false; |
| 122 | 138 |
| 123 v8::Local<v8::Boolean> v8Bool = v8Value->ToBoolean(); | 139 v8::Local<v8::Boolean> v8Bool = v8Value->ToBoolean(); |
| 124 if (v8Bool.IsEmpty()) | 140 if (v8Bool.IsEmpty()) |
| 125 return false; | 141 return false; |
| 126 value = v8Bool->Value(); | 142 value = v8Bool->Value(); |
| 127 return true; | 143 return true; |
| 128 } | 144 } |
| 129 | 145 |
| 146 bool Dictionary::convert(const String& key, bool& value, ExceptionState&) const | |
| 147 { | |
| 148 get(key, value); | |
| 149 return true; | |
| 150 } | |
| 151 | |
| 130 bool Dictionary::get(const String& key, int32_t& value) const | 152 bool Dictionary::get(const String& key, int32_t& value) const |
| 131 { | 153 { |
| 132 v8::Local<v8::Value> v8Value; | 154 v8::Local<v8::Value> v8Value; |
| 133 if (!getKey(key, v8Value)) | 155 if (!getKey(key, v8Value)) |
| 134 return false; | 156 return false; |
| 135 | 157 |
| 136 v8::Local<v8::Int32> v8Int32 = v8Value->ToInt32(); | 158 v8::Local<v8::Int32> v8Int32 = v8Value->ToInt32(); |
| 137 if (v8Int32.IsEmpty()) | 159 if (v8Int32.IsEmpty()) |
| 138 return false; | 160 return false; |
| 139 value = v8Int32->Value(); | 161 value = v8Int32->Value(); |
| 140 return true; | 162 return true; |
| 141 } | 163 } |
| 142 | 164 |
| 143 bool Dictionary::get(const String& key, double& value, bool& hasValue) const | 165 bool Dictionary::get(const String& key, double& value, bool& hasValue) const |
| 144 { | 166 { |
| 145 v8::Local<v8::Value> v8Value; | 167 v8::Local<v8::Value> v8Value; |
| 146 if (!getKey(key, v8Value)) { | 168 if (!getKey(key, v8Value)) { |
| 147 hasValue = false; | 169 hasValue = false; |
| 148 return false; | 170 return false; |
| 149 } | 171 } |
| 150 | 172 |
| 151 hasValue = true; | 173 hasValue = true; |
| 152 v8::Local<v8::Number> v8Number = v8Value->ToNumber(); | 174 V8TRYCATCH_RETURN(v8::Local<v8::Number>, v8Number, v8Value->ToNumber(), fals e); |
| 153 if (v8Number.IsEmpty()) | 175 if (v8Number.IsEmpty()) |
| 154 return false; | 176 return false; |
| 155 value = v8Number->Value(); | 177 value = v8Number->Value(); |
| 156 return true; | 178 return true; |
| 157 } | 179 } |
| 158 | 180 |
| 159 bool Dictionary::get(const String& key, double& value) const | 181 bool Dictionary::get(const String& key, double& value) const |
| 160 { | 182 { |
| 161 bool unused; | 183 bool unused; |
| 162 return get(key, value, unused); | 184 return get(key, value, unused); |
| 163 } | 185 } |
| 164 | 186 |
| 187 bool Dictionary::convert(const String& key, double& value, ExceptionState& excep tionState) const | |
| 188 { | |
| 189 bool hasValue = false; | |
| 190 if (!get(key, value, hasValue) && hasValue) { | |
| 191 exceptionState.throwTypeError(ExceptionMessages::illTypedProperty(key, " is not of type 'double'.")); | |
|
Mike West
2013/11/25 08:22:48
So, as I noted in an earlier comment, I'd like to
sof
2013/11/25 11:57:23
I like the suggestion, we should do it. I'm reason
sof
2013/11/25 23:24:05
Done.
| |
| 192 return false; | |
| 193 } | |
| 194 return true; | |
| 195 } | |
| 196 | |
| 165 bool Dictionary::get(const String& key, String& value) const | 197 bool Dictionary::get(const String& key, String& value) const |
| 166 { | 198 { |
| 167 v8::Local<v8::Value> v8Value; | 199 v8::Local<v8::Value> v8Value; |
| 168 if (!getKey(key, v8Value)) | 200 if (!getKey(key, v8Value)) |
| 169 return false; | 201 return false; |
| 170 | 202 |
| 171 V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringValue, v8Va lue, false); | 203 V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringValue, v8Va lue, false); |
| 172 value = stringValue; | 204 value = stringValue; |
| 173 return true; | 205 return true; |
| 174 } | 206 } |
| 175 | 207 |
| 208 bool Dictionary::convert(const String& key, String& value, ExceptionState& excep tionState) const | |
| 209 { | |
| 210 v8::Local<v8::Value> v8Value; | |
| 211 if (!getKey(key, v8Value)) | |
| 212 return true; | |
| 213 | |
| 214 V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringValue, v8Va lue, false); | |
| 215 value = stringValue; | |
| 216 return true; | |
| 217 } | |
| 218 | |
| 176 bool Dictionary::get(const String& key, ScriptValue& value) const | 219 bool Dictionary::get(const String& key, ScriptValue& value) const |
| 177 { | 220 { |
| 178 v8::Local<v8::Value> v8Value; | 221 v8::Local<v8::Value> v8Value; |
| 179 if (!getKey(key, v8Value)) | 222 if (!getKey(key, v8Value)) |
| 180 return false; | 223 return false; |
| 181 | 224 |
| 182 value = ScriptValue(v8Value, m_isolate); | 225 value = ScriptValue(v8Value, m_isolate); |
| 183 return true; | 226 return true; |
| 184 } | 227 } |
| 185 | 228 |
| 229 bool Dictionary::convert(const String& key, ScriptValue& value, ExceptionState&) const | |
| 230 { | |
| 231 get(key, value); | |
| 232 return true; | |
| 233 } | |
| 234 | |
| 186 bool Dictionary::get(const String& key, unsigned short& value) const | 235 bool Dictionary::get(const String& key, unsigned short& value) const |
| 187 { | 236 { |
| 188 v8::Local<v8::Value> v8Value; | 237 v8::Local<v8::Value> v8Value; |
| 189 if (!getKey(key, v8Value)) | 238 if (!getKey(key, v8Value)) |
| 190 return false; | 239 return false; |
| 191 | 240 |
| 192 v8::Local<v8::Int32> v8Int32 = v8Value->ToInt32(); | 241 v8::Local<v8::Int32> v8Int32 = v8Value->ToInt32(); |
| 193 if (v8Int32.IsEmpty()) | 242 if (v8Int32.IsEmpty()) |
| 194 return false; | 243 return false; |
| 195 value = static_cast<unsigned short>(v8Int32->Value()); | 244 value = static_cast<unsigned short>(v8Int32->Value()); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 234 value = static_cast<unsigned long>(v8Integer->Value()); | 283 value = static_cast<unsigned long>(v8Integer->Value()); |
| 235 return true; | 284 return true; |
| 236 } | 285 } |
| 237 | 286 |
| 238 bool Dictionary::get(const String& key, unsigned long long& value) const | 287 bool Dictionary::get(const String& key, unsigned long long& value) const |
| 239 { | 288 { |
| 240 v8::Local<v8::Value> v8Value; | 289 v8::Local<v8::Value> v8Value; |
| 241 if (!getKey(key, v8Value)) | 290 if (!getKey(key, v8Value)) |
| 242 return false; | 291 return false; |
| 243 | 292 |
| 244 v8::Local<v8::Number> v8Number = v8Value->ToNumber(); | 293 V8TRYCATCH_RETURN(v8::Local<v8::Number>, v8Number, v8Value->ToNumber(), fals e); |
| 245 if (v8Number.IsEmpty()) | 294 if (v8Number.IsEmpty()) |
| 246 return false; | 295 return false; |
| 247 double d = v8Number->Value(); | 296 double d = v8Number->Value(); |
| 248 doubleToInteger(d, value); | 297 doubleToInteger(d, value); |
| 249 return true; | 298 return true; |
| 250 } | 299 } |
| 251 | 300 |
| 252 bool Dictionary::get(const String& key, RefPtr<DOMWindow>& value) const | 301 bool Dictionary::get(const String& key, RefPtr<DOMWindow>& value) const |
| 253 { | 302 { |
| 254 v8::Local<v8::Value> v8Value; | 303 v8::Local<v8::Value> v8Value; |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 283 { | 332 { |
| 284 v8::Local<v8::Value> v8Value; | 333 v8::Local<v8::Value> v8Value; |
| 285 if (!getKey(key, v8Value)) | 334 if (!getKey(key, v8Value)) |
| 286 return false; | 335 return false; |
| 287 | 336 |
| 288 ASSERT(m_isolate); | 337 ASSERT(m_isolate); |
| 289 ASSERT(m_isolate == v8::Isolate::GetCurrent()); | 338 ASSERT(m_isolate == v8::Isolate::GetCurrent()); |
| 290 return getMessagePortArray(v8Value, key, value, m_isolate); | 339 return getMessagePortArray(v8Value, key, value, m_isolate); |
| 291 } | 340 } |
| 292 | 341 |
| 342 bool Dictionary::convert(const String& key, const String&, bool isNullable, Mess agePortArray& value, ExceptionState& exceptionState) const | |
| 343 { | |
| 344 v8::Local<v8::Value> v8Value; | |
| 345 if (!getKey(key, v8Value)) | |
| 346 return true; | |
| 347 | |
| 348 return get(key, value); | |
| 349 } | |
| 350 | |
| 293 bool Dictionary::get(const String& key, HashSet<AtomicString>& value) const | 351 bool Dictionary::get(const String& key, HashSet<AtomicString>& value) const |
| 294 { | 352 { |
| 295 v8::Local<v8::Value> v8Value; | 353 v8::Local<v8::Value> v8Value; |
| 296 if (!getKey(key, v8Value)) | 354 if (!getKey(key, v8Value)) |
| 297 return false; | 355 return false; |
| 298 | 356 |
| 299 // FIXME: Support array-like objects | 357 // FIXME: Support array-like objects |
| 300 if (!v8Value->IsArray()) | 358 if (!v8Value->IsArray()) |
| 301 return false; | 359 return false; |
| 302 | 360 |
| 303 ASSERT(m_isolate); | 361 ASSERT(m_isolate); |
| 304 ASSERT(m_isolate == v8::Isolate::GetCurrent()); | 362 ASSERT(m_isolate == v8::Isolate::GetCurrent()); |
| 305 v8::Local<v8::Array> v8Array = v8::Local<v8::Array>::Cast(v8Value); | 363 v8::Local<v8::Array> v8Array = v8::Local<v8::Array>::Cast(v8Value); |
| 306 for (size_t i = 0; i < v8Array->Length(); ++i) { | 364 for (size_t i = 0; i < v8Array->Length(); ++i) { |
| 307 v8::Local<v8::Value> indexedValue = v8Array->Get(v8::Integer::New(i, m_i solate)); | 365 v8::Local<v8::Value> indexedValue = v8Array->Get(v8::Integer::New(i, m_i solate)); |
| 308 V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringValue, indexedValue, false); | 366 V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringValue, indexedValue, false); |
| 309 value.add(stringValue); | 367 value.add(stringValue); |
| 310 } | 368 } |
| 311 | 369 |
| 312 return true; | 370 return true; |
| 313 } | 371 } |
| 314 | 372 |
| 373 bool Dictionary::convert(const String& key, const String&, bool isNullable, Hash Set<AtomicString>& value, ExceptionState& exceptionState) const | |
| 374 { | |
| 375 v8::Local<v8::Value> v8Value; | |
| 376 if (!getKey(key, v8Value)) | |
| 377 return true; | |
| 378 | |
| 379 if (isNullable && WebCore::isUndefinedOrNull(v8Value)) | |
| 380 return true; | |
| 381 | |
| 382 if (!v8Value->IsArray()) { | |
| 383 exceptionState.throwTypeError(ExceptionMessages::notASequenceTypePropert y(key)); | |
| 384 return false; | |
| 385 } | |
| 386 | |
| 387 return get(key, value); | |
| 388 } | |
| 389 | |
| 315 bool Dictionary::getWithUndefinedOrNullCheck(const String& key, String& value) c onst | 390 bool Dictionary::getWithUndefinedOrNullCheck(const String& key, String& value) c onst |
| 316 { | 391 { |
| 317 v8::Local<v8::Value> v8Value; | 392 v8::Local<v8::Value> v8Value; |
| 318 if (!getKey(key, v8Value) || v8Value->IsNull() || v8Value->IsUndefined()) | 393 if (!getKey(key, v8Value) || WebCore::isUndefinedOrNull(v8Value)) |
| 319 return false; | 394 return false; |
| 320 | 395 |
| 321 if (WebCore::isUndefinedOrNull(v8Value)) { | |
| 322 value = String(); | |
| 323 return true; | |
| 324 } | |
| 325 | |
| 326 V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringValue, v8Va lue, false); | 396 V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringValue, v8Va lue, false); |
| 327 value = stringValue; | 397 value = stringValue; |
| 328 return true; | 398 return true; |
| 329 } | 399 } |
| 330 | 400 |
| 331 bool Dictionary::get(const String& key, RefPtr<Uint8Array>& value) const | 401 bool Dictionary::get(const String& key, RefPtr<Uint8Array>& value) const |
| 332 { | 402 { |
| 333 v8::Local<v8::Value> v8Value; | 403 v8::Local<v8::Value> v8Value; |
| 334 if (!getKey(key, v8Value)) | 404 if (!getKey(key, v8Value)) |
| 335 return false; | 405 return false; |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 477 | 547 |
| 478 if (v8Value->IsObject()) { | 548 if (v8Value->IsObject()) { |
| 479 ASSERT(m_isolate); | 549 ASSERT(m_isolate); |
| 480 ASSERT(m_isolate == v8::Isolate::GetCurrent()); | 550 ASSERT(m_isolate == v8::Isolate::GetCurrent()); |
| 481 value = Dictionary(v8Value, m_isolate); | 551 value = Dictionary(v8Value, m_isolate); |
| 482 } | 552 } |
| 483 | 553 |
| 484 return true; | 554 return true; |
| 485 } | 555 } |
| 486 | 556 |
| 557 bool Dictionary::convert(const String& key, const String&, bool isNullable, Dict ionary& value, ExceptionState& exceptionState) const | |
| 558 { | |
| 559 v8::Local<v8::Value> v8Value; | |
| 560 if (!getKey(key, v8Value)) | |
| 561 return true; | |
| 562 | |
| 563 if (v8Value->IsObject()) | |
| 564 return get(key, value); | |
| 565 | |
| 566 if (isNullable && WebCore::isUndefinedOrNull(v8Value)) | |
| 567 return true; | |
| 568 | |
| 569 exceptionState.throwTypeError(ExceptionMessages::illTypedProperty(key, "does not have a Dictionary type.")); | |
| 570 return false; | |
| 571 } | |
| 572 | |
| 487 bool Dictionary::get(const String& key, Vector<String>& value) const | 573 bool Dictionary::get(const String& key, Vector<String>& value) const |
| 488 { | 574 { |
| 489 v8::Local<v8::Value> v8Value; | 575 v8::Local<v8::Value> v8Value; |
| 490 if (!getKey(key, v8Value)) | 576 if (!getKey(key, v8Value)) |
| 491 return false; | 577 return false; |
| 492 | 578 |
| 493 if (!v8Value->IsArray()) | 579 if (!v8Value->IsArray()) |
| 494 return false; | 580 return false; |
| 495 | 581 |
| 496 v8::Local<v8::Array> v8Array = v8::Local<v8::Array>::Cast(v8Value); | 582 v8::Local<v8::Array> v8Array = v8::Local<v8::Array>::Cast(v8Value); |
| 497 for (size_t i = 0; i < v8Array->Length(); ++i) { | 583 for (size_t i = 0; i < v8Array->Length(); ++i) { |
| 498 v8::Local<v8::Value> indexedValue = v8Array->Get(v8::Uint32::New(i, m_is olate)); | 584 v8::Local<v8::Value> indexedValue = v8Array->Get(v8::Uint32::New(i, m_is olate)); |
| 499 V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringValue, indexedValue, false); | 585 V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringValue, indexedValue, false); |
| 500 value.append(stringValue); | 586 value.append(stringValue); |
| 501 } | 587 } |
| 502 | 588 |
| 503 return true; | 589 return true; |
| 504 } | 590 } |
| 505 | 591 |
| 592 bool Dictionary::convert(const String& key, const String&, bool isNullable, Vect or<String>& value, ExceptionState& exceptionState) const | |
| 593 { | |
| 594 v8::Local<v8::Value> v8Value; | |
| 595 if (!getKey(key, v8Value)) | |
| 596 return true; | |
| 597 | |
| 598 if (isNullable && WebCore::isUndefinedOrNull(v8Value)) | |
| 599 return true; | |
| 600 | |
| 601 if (!v8Value->IsArray()) { | |
| 602 exceptionState.throwTypeError(ExceptionMessages::notASequenceTypePropert y(key)); | |
| 603 return false; | |
| 604 } | |
| 605 | |
| 606 return get(key, value); | |
| 607 } | |
| 608 | |
| 506 bool Dictionary::get(const String& key, ArrayValue& value) const | 609 bool Dictionary::get(const String& key, ArrayValue& value) const |
| 507 { | 610 { |
| 508 v8::Local<v8::Value> v8Value; | 611 v8::Local<v8::Value> v8Value; |
| 509 if (!getKey(key, v8Value)) | 612 if (!getKey(key, v8Value)) |
| 510 return false; | 613 return false; |
| 511 | 614 |
| 512 if (!v8Value->IsArray()) | 615 if (!v8Value->IsArray()) |
| 513 return false; | 616 return false; |
| 514 | 617 |
| 515 ASSERT(m_isolate); | 618 ASSERT(m_isolate); |
| 516 ASSERT(m_isolate == v8::Isolate::GetCurrent()); | 619 ASSERT(m_isolate == v8::Isolate::GetCurrent()); |
| 517 value = ArrayValue(v8::Local<v8::Array>::Cast(v8Value), m_isolate); | 620 value = ArrayValue(v8::Local<v8::Array>::Cast(v8Value), m_isolate); |
| 518 return true; | 621 return true; |
| 519 } | 622 } |
| 520 | 623 |
| 624 bool Dictionary::convert(const String& key, const String&, bool isNullable, Arra yValue& value, ExceptionState& exceptionState) const | |
| 625 { | |
| 626 v8::Local<v8::Value> v8Value; | |
| 627 if (!getKey(key, v8Value)) | |
| 628 return true; | |
| 629 | |
| 630 if (isNullable && WebCore::isUndefinedOrNull(v8Value)) | |
| 631 return true; | |
| 632 | |
| 633 if (!v8Value->IsArray()) { | |
| 634 exceptionState.throwTypeError(ExceptionMessages::notASequenceTypePropert y(key)); | |
| 635 return false; | |
| 636 } | |
| 637 | |
| 638 return get(key, value); | |
| 639 } | |
| 640 | |
| 521 bool Dictionary::get(const String& key, RefPtr<DOMError>& value) const | 641 bool Dictionary::get(const String& key, RefPtr<DOMError>& value) const |
| 522 { | 642 { |
| 523 v8::Local<v8::Value> v8Value; | 643 v8::Local<v8::Value> v8Value; |
| 524 if (!getKey(key, v8Value)) | 644 if (!getKey(key, v8Value)) |
| 525 return false; | 645 return false; |
| 526 | 646 |
| 527 DOMError* error = 0; | 647 DOMError* error = 0; |
| 528 if (v8Value->IsObject()) { | 648 if (v8Value->IsObject()) { |
| 529 v8::Handle<v8::Object> wrapper = v8::Handle<v8::Object>::Cast(v8Value); | 649 v8::Handle<v8::Object> wrapper = v8::Handle<v8::Object>::Cast(v8Value); |
| 530 v8::Handle<v8::Object> domError = wrapper->FindInstanceInPrototypeChain( V8DOMError::GetTemplate(m_isolate, worldType(m_isolate))); | 650 v8::Handle<v8::Object> domError = wrapper->FindInstanceInPrototypeChain( V8DOMError::GetTemplate(m_isolate, worldType(m_isolate))); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 592 if (!options->Has(key)) | 712 if (!options->Has(key)) |
| 593 continue; | 713 continue; |
| 594 V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringKey, ke y, false); | 714 V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringKey, ke y, false); |
| 595 names.append(stringKey); | 715 names.append(stringKey); |
| 596 } | 716 } |
| 597 | 717 |
| 598 return true; | 718 return true; |
| 599 } | 719 } |
| 600 | 720 |
| 601 } // namespace WebCore | 721 } // namespace WebCore |
| OLD | NEW |