OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2006 Apple Computer, Inc. All rights reserved. | 2 * Copyright (C) 2004, 2006 Apple Computer, Inc. All rights reserved. |
3 * Copyright (C) 2007, 2008, 2009 Google, Inc. All rights reserved. | 3 * Copyright (C) 2007, 2008, 2009 Google, Inc. All rights reserved. |
4 * Copyright (C) 2014 Opera Software ASA. All rights reserved. | 4 * Copyright (C) 2014 Opera Software ASA. All rights reserved. |
5 * | 5 * |
6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
8 * are met: | 8 * are met: |
9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
554 " }" | 554 " }" |
555 " return props;" | 555 " return props;" |
556 "});"; | 556 "});"; |
557 v8::Local<v8::String> source = v8AtomicString(isolate, enumeratorCode); | 557 v8::Local<v8::String> source = v8AtomicString(isolate, enumeratorCode); |
558 v8::Local<v8::Value> result; | 558 v8::Local<v8::Value> result; |
559 if (!V8ScriptRunner::compileAndRunInternalScript(source, isolate).ToLoca
l(&result)) | 559 if (!V8ScriptRunner::compileAndRunInternalScript(source, isolate).ToLoca
l(&result)) |
560 return false; | 560 return false; |
561 ASSERT(result->IsFunction()); | 561 ASSERT(result->IsFunction()); |
562 v8::Local<v8::Function> enumerator = v8::Local<v8::Function>::Cast(resul
t); | 562 v8::Local<v8::Function> enumerator = v8::Local<v8::Function>::Cast(resul
t); |
563 v8::Local<v8::Value> argv[] = { obj }; | 563 v8::Local<v8::Value> argv[] = { obj }; |
564 v8::Local<v8::Value> propsObj = V8ScriptRunner::callInternalFunction(enu
merator, v8::Local<v8::Object>::Cast(result), WTF_ARRAY_LENGTH(argv), argv, isol
ate); | 564 v8::Local<v8::Value> propsObj; |
565 if (propsObj.IsEmpty()) | 565 if (!V8ScriptRunner::callInternalFunction(enumerator, v8::Local<v8::Obje
ct>::Cast(result), WTF_ARRAY_LENGTH(argv), argv, isolate).ToLocal(&propsObj)) |
566 return false; | 566 return false; |
567 | 567 |
568 // Convert the results into an array of NPIdentifiers. | 568 // Convert the results into an array of NPIdentifiers. |
569 v8::Local<v8::Array> props = v8::Local<v8::Array>::Cast(propsObj); | 569 v8::Local<v8::Array> props = v8::Local<v8::Array>::Cast(propsObj); |
570 *count = props->Length(); | 570 *count = props->Length(); |
571 *identifier = static_cast<NPIdentifier*>(calloc(*count, sizeof(NPIdentif
ier))); | 571 *identifier = static_cast<NPIdentifier*>(calloc(*count, sizeof(NPIdentif
ier))); |
572 for (uint32_t i = 0; i < *count; ++i) { | 572 for (uint32_t i = 0; i < *count; ++i) { |
573 v8::Local<v8::Value> name = props->Get(v8::Integer::New(isolate, i))
; | 573 v8::Local<v8::Value> name = props->Get(v8::Integer::New(isolate, i))
; |
574 (*identifier)[i] = getStringIdentifier(v8::Local<v8::String>::Cast(n
ame)); | 574 (*identifier)[i] = getStringIdentifier(v8::Local<v8::String>::Cast(n
ame)); |
575 } | 575 } |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
616 | 616 |
617 convertV8ObjectToNPVariant(isolate, resultObject, npObject, result); | 617 convertV8ObjectToNPVariant(isolate, resultObject, npObject, result); |
618 return true; | 618 return true; |
619 } | 619 } |
620 | 620 |
621 if (NP_CLASS_STRUCT_VERSION_HAS_CTOR(npObject->_class) && npObject->_class->
construct) | 621 if (NP_CLASS_STRUCT_VERSION_HAS_CTOR(npObject->_class) && npObject->_class->
construct) |
622 return npObject->_class->construct(npObject, arguments, argumentCount, r
esult); | 622 return npObject->_class->construct(npObject, arguments, argumentCount, r
esult); |
623 | 623 |
624 return false; | 624 return false; |
625 } | 625 } |
OLD | NEW |