blob: 04cbff14af3f69bd0e87c7cd64cf2e1a20f8e214 [file] [log] [blame]
// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef v8_npobject_h
#define v8_npobject_h
#include <v8.h>
#if PLATFORM(CHROMIUM)
#include "third_party/npapi/bindings/npruntime.h"
#else
#include "bridge/npruntime.h" // use WebCore version
#endif
// These functions can be replaced by normal JS operation.
// Getters
v8::Handle<v8::Value> NPObjectNamedPropertyGetter(v8::Local<v8::String> name,
const v8::AccessorInfo& info);
v8::Handle<v8::Value> NPObjectIndexedPropertyGetter(uint32_t index,
const v8::AccessorInfo& info);
v8::Handle<v8::Value> NPObjectGetNamedProperty(v8::Local<v8::Object> self,
v8::Local<v8::String> name);
v8::Handle<v8::Value> NPObjectGetIndexedProperty(v8::Local<v8::Object> self,
uint32_t index);
// Setters
v8::Handle<v8::Value> NPObjectNamedPropertySetter(v8::Local<v8::String> name,
v8::Local<v8::Value> value,
const v8::AccessorInfo& info);
v8::Handle<v8::Value> NPObjectIndexedPropertySetter(uint32_t index,
const v8::AccessorInfo& info);
v8::Handle<v8::Value> NPObjectSetNamedProperty(v8::Local<v8::Object> self,
v8::Local<v8::String> name,
v8::Local<v8::Value> value);
v8::Handle<v8::Value> NPObjectSetIndexedProperty(v8::Local<v8::Object> self,
uint32_t index,
v8::Local<v8::Value> value);
v8::Handle<v8::Value> NPObjectInvokeDefaultHandler(const v8::Arguments& args);
// Get a wrapper for a NPObject.
// If the object is already wrapped, the pre-existing wrapper
// will be returned.
// If the object is not wrapped, wrap it, and give V8 a weak
// reference to the wrapper which will cleanup when there are
// no more JS references to the object.
v8::Local<v8::Object> CreateV8ObjectForNPObject(NPObject* object, NPObject *root);
// Tell V8 to forcibly remove an object.
// This is used at plugin teardown so that the caller can
// aggressively unload the plugin library. After calling this
// function, the persistent handle to the wrapper will be
// gone, and the wrapped NPObject will be removed so that
// it cannot be referred to.
void ForgetV8ObjectForNPObject(NPObject*object);
#endif // v8_npobject_h