15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2009 Google Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions are 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions of source code must retain the above copyright 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions in binary form must reproduce the above 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution. 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * contributors may be used to endorse or promote products derived from 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * this software without specific prior written permission. 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "config.h" 32f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebBindings.h" 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/NPV8Object.h" 35197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/ScriptController.h" 36197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/V8DOMWrapper.h" 37197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/V8Element.h" 38197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/V8NPObject.h" 39197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/V8NPUtils.h" 40197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/V8Range.h" 41197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/custom/V8ArrayBufferCustom.h" 42197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/custom/V8ArrayBufferViewCustom.h" 43197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/npruntime_impl.h" 44197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/npruntime_priv.h" 4553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/Range.h" 4676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)#include "core/frame/LocalDOMWindow.h" 47d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/frame/LocalFrame.h" 480019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch#include "public/platform/WebArrayBuffer.h" 49f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebArrayBufferView.h" 50f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebElement.h" 51f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "public/web/WebRange.h" 52591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/ArrayBufferView.h" 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)namespace blink { 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::construct(NPP npp, NPObject* object, const NPVariant* args, uint32_t argCount, NPVariant* result) 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_Construct(npp, object, args, argCount, result); 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)NPObject* WebBindings::createObject(NPP npp, NPClass* npClass) 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_CreateObject(npp, npClass); 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::enumerate(NPP npp, NPObject* object, NPIdentifier** identifier, uint32_t* identifierCount) 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_Enumerate(npp, object, identifier, identifierCount); 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::evaluate(NPP npp, NPObject* object, NPString* script, NPVariant* result) 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_Evaluate(npp, object, script, result); 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::evaluateHelper(NPP npp, bool popupsAllowed, NPObject* object, NPString* script, NPVariant* result) 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_EvaluateHelper(npp, popupsAllowed, object, script, result); 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)NPIdentifier WebBindings::getIntIdentifier(int32_t number) 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_GetIntIdentifier(number); 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::getProperty(NPP npp, NPObject* object, NPIdentifier property, NPVariant* result) 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_GetProperty(npp, object, property, result); 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)NPIdentifier WebBindings::getStringIdentifier(const NPUTF8* string) 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_GetStringIdentifier(string); 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebBindings::getStringIdentifiers(const NPUTF8** names, int32_t nameCount, NPIdentifier* identifiers) 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _NPN_GetStringIdentifiers(names, nameCount, identifiers); 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::hasMethod(NPP npp, NPObject* object, NPIdentifier method) 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_HasMethod(npp, object, method); 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::hasProperty(NPP npp, NPObject* object, NPIdentifier property) 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_HasProperty(npp, object, property); 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::identifierIsString(NPIdentifier identifier) 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_IdentifierIsString(identifier); 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)int32_t WebBindings::intFromIdentifier(NPIdentifier identifier) 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_IntFromIdentifier(identifier); 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebBindings::initializeVariantWithStringCopy(NPVariant* variant, const NPString* value) 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _NPN_InitializeVariantWithStringCopy(variant, value); 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::invoke(NPP npp, NPObject* object, NPIdentifier method, const NPVariant* args, uint32_t argCount, NPVariant* result) 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_Invoke(npp, object, method, args, argCount, result); 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::invokeDefault(NPP npp, NPObject* object, const NPVariant* args, uint32_t argCount, NPVariant* result) 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_InvokeDefault(npp, object, args, argCount, result); 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebBindings::releaseObject(NPObject* object) 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_ReleaseObject(object); 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebBindings::releaseVariantValue(NPVariant* variant) 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _NPN_ReleaseVariantValue(variant); 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::removeProperty(NPP npp, NPObject* object, NPIdentifier identifier) 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_RemoveProperty(npp, object, identifier); 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)NPObject* WebBindings::retainObject(NPObject* object) 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_RetainObject(object); 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebBindings::setException(NPObject* object, const NPUTF8* message) 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _NPN_SetException(object, message); 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::setProperty(NPP npp, NPObject* object, NPIdentifier identifier, const NPVariant* value) 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_SetProperty(npp, object, identifier, value); 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 166e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochvoid WebBindings::registerObjectOwner(NPP) 16793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles){ 16893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)} 16993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 170e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochvoid WebBindings::unregisterObjectOwner(NPP) 17193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles){ 17293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)} 17393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 174e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochNPP WebBindings::getObjectOwner(NPObject*) 175591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch{ 176e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch return 0; 177591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch} 178591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 179e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochvoid WebBindings::unregisterObject(NPObject* object) 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 181e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch _NPN_UnregisterObject(object); 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 184d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)void WebBindings::dropV8WrapperForObject(NPObject* object) 185d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles){ 1869e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) forgetV8ObjectForNPObject(object); 187d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)} 188d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)NPUTF8* WebBindings::utf8FromIdentifier(NPIdentifier identifier) 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _NPN_UTF8FromIdentifier(identifier); 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebBindings::extractIdentifierData(const NPIdentifier& identifier, const NPUTF8*& string, int32_t& number, bool& isString) 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PrivateIdentifier* data = static_cast<PrivateIdentifier*>(identifier); 1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!data) { 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isString = false; 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) number = 0; 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isString = data->isString; 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (isString) 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) string = data->value.string; 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) number = data->value.number; 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 210926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)static bool getRangeImpl(NPObject* object, WebRange* webRange, v8::Isolate* isolate) 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 212591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!object) 213591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return false; 214591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 215591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch V8NPObject* v8NPObject = npObjectToV8NPObject(object); 216591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!v8NPObject) 2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2195267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) v8::HandleScope handleScope(isolate); 2205267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) v8::Handle<v8::Object> v8Object = v8::Local<v8::Object>::New(isolate, v8NPObject->v8Object); 221591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (v8Object.IsEmpty()) 222591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return false; 223f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) if (!V8Range::wrapperTypeInfo.equals(toWrapperTypeInfo(v8Object))) 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Range* native = V8Range::hasInstance(v8Object, isolate) ? V8Range::toImpl(v8Object) : 0; 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!native) 2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *webRange = WebRange(native); 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 234926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)static bool getNodeImpl(NPObject* object, WebNode* webNode, v8::Isolate* isolate) 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 236591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!object) 237591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return false; 238591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 239591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch V8NPObject* v8NPObject = npObjectToV8NPObject(object); 240591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!v8NPObject) 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2435267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) v8::HandleScope handleScope(isolate); 2445267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) v8::Handle<v8::Object> v8Object = v8::Local<v8::Object>::New(isolate, v8NPObject->v8Object); 245591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (v8Object.IsEmpty()) 246591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return false; 2477242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Node* native = V8Node::hasInstance(v8Object, isolate) ? V8Node::toImpl(v8Object) : 0; 2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!native) 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *webNode = WebNode(native); 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 255926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)static bool getElementImpl(NPObject* object, WebElement* webElement, v8::Isolate* isolate) 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 257591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!object) 258591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return false; 259591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 260591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch V8NPObject* v8NPObject = npObjectToV8NPObject(object); 261591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!v8NPObject) 2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2645267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) v8::HandleScope handleScope(isolate); 2655267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) v8::Handle<v8::Object> v8Object = v8::Local<v8::Object>::New(isolate, v8NPObject->v8Object); 266591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (v8Object.IsEmpty()) 267591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return false; 2687242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Element* native = V8Element::hasInstance(v8Object, isolate) ? V8Element::toImpl(v8Object) : 0; 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!native) 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *webElement = WebElement(native); 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 276926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)static bool getArrayBufferImpl(NPObject* object, WebArrayBuffer* arrayBuffer, v8::Isolate* isolate) 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 278591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!object) 279591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return false; 280591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 281591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch V8NPObject* v8NPObject = npObjectToV8NPObject(object); 282591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!v8NPObject) 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2855267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) v8::HandleScope handleScope(isolate); 2865267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) v8::Handle<v8::Object> v8Object = v8::Local<v8::Object>::New(isolate, v8NPObject->v8Object); 287591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (v8Object.IsEmpty()) 288591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return false; 2897242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci ArrayBuffer* native = V8ArrayBuffer::hasInstance(v8Object, isolate) ? V8ArrayBuffer::toImpl(v8Object) : 0; 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!native) 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *arrayBuffer = WebArrayBuffer(native); 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 297926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)static bool getArrayBufferViewImpl(NPObject* object, WebArrayBufferView* arrayBufferView, v8::Isolate* isolate) 2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 299591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!object) 300591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return false; 301591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 302591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch V8NPObject* v8NPObject = npObjectToV8NPObject(object); 303591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!v8NPObject) 3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3065267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) v8::HandleScope handleScope(isolate); 3075267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) v8::Handle<v8::Object> v8Object = v8::Local<v8::Object>::New(isolate, v8NPObject->v8Object); 308591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (v8Object.IsEmpty()) 309591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return false; 3107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci ArrayBufferView* native = V8ArrayBufferView::hasInstance(v8Object, isolate) ? V8ArrayBufferView::toImpl(v8Object) : 0; 3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!native) 3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *arrayBufferView = WebArrayBufferView(native); 3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3188abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)static NPObject* makeIntArrayImpl(const WebVector<int>& data, v8::Isolate* isolate) 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3208abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) v8::HandleScope handleScope(isolate); 321a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) v8::Handle<v8::Array> result = v8::Array::New(isolate, data.size()); 3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (size_t i = 0; i < data.size(); ++i) 3238abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) result->Set(i, v8::Number::New(isolate, data[i])); 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) LocalDOMWindow* window = currentDOMWindow(isolate); 3269bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) return npCreateV8ScriptObject(0, result, window, isolate); 3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3298abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)static NPObject* makeStringArrayImpl(const WebVector<WebString>& data, v8::Isolate* isolate) 3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3318abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) v8::HandleScope handleScope(isolate); 332a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) v8::Handle<v8::Array> result = v8::Array::New(isolate, data.size()); 3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (size_t i = 0; i < data.size(); ++i) 334a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) result->Set(i, v8String(isolate, data[i])); 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) LocalDOMWindow* window = currentDOMWindow(isolate); 3379bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) return npCreateV8ScriptObject(0, result, window, isolate); 3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::getRange(NPObject* range, WebRange* webRange) 3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 342926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return getRangeImpl(range, webRange, v8::Isolate::GetCurrent()); 3435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::getArrayBuffer(NPObject* arrayBuffer, WebArrayBuffer* webArrayBuffer) 3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 347926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return getArrayBufferImpl(arrayBuffer, webArrayBuffer, v8::Isolate::GetCurrent()); 3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::getArrayBufferView(NPObject* arrayBufferView, WebArrayBufferView* webArrayBufferView) 3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 352926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return getArrayBufferViewImpl(arrayBufferView, webArrayBufferView, v8::Isolate::GetCurrent()); 3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::getNode(NPObject* node, WebNode* webNode) 3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 357926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return getNodeImpl(node, webNode, v8::Isolate::GetCurrent()); 3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)bool WebBindings::getElement(NPObject* element, WebElement* webElement) 3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 362926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return getElementImpl(element, webElement, v8::Isolate::GetCurrent()); 3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)NPObject* WebBindings::makeIntArray(const WebVector<int>& data) 3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3678abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) return makeIntArrayImpl(data, v8::Isolate::GetCurrent()); 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)NPObject* WebBindings::makeStringArray(const WebVector<WebString>& data) 3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3728abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) return makeStringArrayImpl(data, v8::Isolate::GetCurrent()); 3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebBindings::pushExceptionHandler(ExceptionHandler handler, void* data) 3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 377c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) blink::pushExceptionHandler(handler, data); 3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void WebBindings::popExceptionHandler() 3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 382c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) blink::popExceptionHandler(); 3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 385e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochvoid WebBindings::toNPVariant(v8::Local<v8::Value> object, NPObject* root, NPVariant* result) 3865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3879e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) convertV8ObjectToNPVariant(object, root, result, v8::Isolate::GetCurrent()); 3885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)v8::Handle<v8::Value> WebBindings::toV8Value(const NPVariant* variant) 3915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 392926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) v8::Isolate* isolate = v8::Isolate::GetCurrent(); 3935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (variant->type == NPVariantType_Object) { 3945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) NPObject* object = NPVARIANT_TO_OBJECT(*variant); 395591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch V8NPObject* v8Object = npObjectToV8NPObject(object); 396591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (!v8Object) 3979bbd2f5e390b01907d97ecffde80aa1b06113aacTorne (Richard Coles) return v8::Undefined(isolate); 398f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) return convertNPVariantToV8Object(variant, v8Object->rootObject->frame()->script().windowScriptNPObject(), isolate); 3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 400e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch // Safe to pass 0 since we have checked the script object class to make sure the 401e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch // argument is a primitive v8 type. 402e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch return convertNPVariantToV8Object(variant, 0, isolate); 4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} // namespace blink 406