1b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian/*
254dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Block * Copyright 2010, The Android Open Source Project
3b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian *
4b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian * Redistribution and use in source and binary forms, with or without
5b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian * modification, are permitted provided that the following conditions
6b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian * are met:
7b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian *  * Redistributions of source code must retain the above copyright
8b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian *    notice, this list of conditions and the following disclaimer.
9b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian *  * Redistributions in binary form must reproduce the above copyright
10b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian *    notice, this list of conditions and the following disclaimer in the
11b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian *    documentation and/or other materials provided with the distribution.
12b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian *
13b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
14b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1609e3a0d3e5e0725e32330137c505146270a2fc84Steve Block * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
17b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24b2318f335c407832166c7568f3e50afedad5b9dbFeng Qian */
257fa30a60f66c19c8e6fb91ef799bca4d8d6f57f2Feng Qian
2654dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Block#ifndef JavaNPObjectV8_h
2754dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Block#define JavaNPObjectV8_h
287fa30a60f66c19c8e6fb91ef799bca4d8d6f57f2Feng Qian
2981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if ENABLE(JAVA_BRIDGE)
3081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
3154dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Block#include "npruntime.h"
3254dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Block#include <wtf/RefPtr.h>
337fa30a60f66c19c8e6fb91ef799bca4d8d6f57f2Feng Qian
3454dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Block
3554dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Blocknamespace JSC {
3654dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Block
3754dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Blocknamespace Bindings {
3854dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Block
3954dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Blockclass JavaInstance;
407fa30a60f66c19c8e6fb91ef799bca4d8d6f57f2Feng Qian
417fa30a60f66c19c8e6fb91ef799bca4d8d6f57f2Feng Qianstruct JavaNPObject {
4254dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Block    NPObject m_object;
4354dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Block    RefPtr<JavaInstance> m_instance;
447fa30a60f66c19c8e6fb91ef799bca4d8d6f57f2Feng Qian};
457fa30a60f66c19c8e6fb91ef799bca4d8d6f57f2Feng Qian
4649a6d4f2c272010e14806805cb2ca55e6fe8a782Steve BlockNPObject* JavaInstanceToNPObject(JavaInstance*);
4754dec9637e20bfba1857f3d54df3c43ce94ff97bSteve BlockJavaInstance* ExtractJavaInstance(NPObject*);
4854dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Block
4909e3a0d3e5e0725e32330137c505146270a2fc84Steve Blockbool JavaNPObjectHasMethod(NPObject*, NPIdentifier name);
5009e3a0d3e5e0725e32330137c505146270a2fc84Steve Blockbool JavaNPObjectInvoke(NPObject*, NPIdentifier methodName, const NPVariant* args, uint32_t argCount, NPVariant* result);
5109e3a0d3e5e0725e32330137c505146270a2fc84Steve Blockbool JavaNPObjectHasProperty(NPObject*, NPIdentifier name);
5209e3a0d3e5e0725e32330137c505146270a2fc84Steve Blockbool JavaNPObjectGetProperty(NPObject*, NPIdentifier name, NPVariant* result);
537fa30a60f66c19c8e6fb91ef799bca4d8d6f57f2Feng Qian
5454dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Block} // namespace Bindings
557fa30a60f66c19c8e6fb91ef799bca4d8d6f57f2Feng Qian
5654dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Block} // namespace JSC
577fa30a60f66c19c8e6fb91ef799bca4d8d6f57f2Feng Qian
5881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif // ENABLE(JAVA_BRIDGE)
5981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
6054dec9637e20bfba1857f3d54df3c43ce94ff97bSteve Block#endif // JavaNPObjectV8_h
61