13298a7d84b96ade73c6b170671711a8f2792ae59Steve Block/* 23298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * Copyright 2009, The Android Open Source Project 33298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * 43298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * Redistribution and use in source and binary forms, with or without 53298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * modification, are permitted provided that the following conditions 63298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * are met: 73298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * * Redistributions of source code must retain the above copyright 83298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * notice, this list of conditions and the following disclaimer. 93298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * * Redistributions in binary form must reproduce the above copyright 103298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * notice, this list of conditions and the following disclaimer in the 113298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * documentation and/or other materials provided with the distribution. 123298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * 133298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 143298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 153298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 163298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 173298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 183298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 193298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 203298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 213298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 223298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 233298a7d84b96ade73c6b170671711a8f2792ae59Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 243298a7d84b96ade73c6b170671711a8f2792ae59Steve Block */ 253298a7d84b96ade73c6b170671711a8f2792ae59Steve Block 263d1195ca6a380e5af16e3a505a007369cf18a4dbSteve Block#ifndef ANPSystem_npapi_h 273d1195ca6a380e5af16e3a505a007369cf18a4dbSteve Block#define ANPSystem_npapi_h 28f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger 29f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger#include "android_npapi.h" 30f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger#include <jni.h> 31f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger 32f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenbergerstruct ANPSystemInterfaceV0 : ANPInterface { 33f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger /** Return the path name for the current Application's plugin data directory, 34f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger or NULL if not supported 35f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger */ 36f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger const char* (*getApplicationDataDirectory)(); 37f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger 38f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger /** A helper function to load java classes from the plugin's apk. The 39f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger function looks for a class given the fully qualified and null terminated 40f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger string representing the className. For example, 41f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger 42f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger const char* className = "com.android.mypackage.MyClass"; 43f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger 44f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger If the class cannot be found or there is a problem loading the class 45f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger NULL will be returned. 46f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger */ 47f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger jclass (*loadJavaClass)(NPP instance, const char* className); 48f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger}; 49f2a6f2e2f867d06fd84e859cdc37c3293357a6ffDerek Sollenberger 509bd15c56f90a9621fccfd28b9017ef1c3dba5ad7Derek Sollenbergerenum ANPPowerStates { 519bd15c56f90a9621fccfd28b9017ef1c3dba5ad7Derek Sollenberger kDefault_ANPPowerState = 0, 529bd15c56f90a9621fccfd28b9017ef1c3dba5ad7Derek Sollenberger kScreenOn_ANPPowerState = 1 539bd15c56f90a9621fccfd28b9017ef1c3dba5ad7Derek Sollenberger}; 549bd15c56f90a9621fccfd28b9017ef1c3dba5ad7Derek Sollenbergertypedef int32_t ANPPowerState; 559bd15c56f90a9621fccfd28b9017ef1c3dba5ad7Derek Sollenberger 569bd15c56f90a9621fccfd28b9017ef1c3dba5ad7Derek Sollenbergerstruct ANPSystemInterfaceV1 : ANPSystemInterfaceV0 { 579bd15c56f90a9621fccfd28b9017ef1c3dba5ad7Derek Sollenberger void (*setPowerState)(NPP instance, ANPPowerState powerState); 589bd15c56f90a9621fccfd28b9017ef1c3dba5ad7Derek Sollenberger}; 599bd15c56f90a9621fccfd28b9017ef1c3dba5ad7Derek Sollenberger 602ba37aad78022aacc4d5eca0063532222ed6b444Derek Sollenbergerstruct ANPSystemInterfaceV2 : ANPInterface { 612ba37aad78022aacc4d5eca0063532222ed6b444Derek Sollenberger /** Return the path name for the current Application's plugin data directory, 622ba37aad78022aacc4d5eca0063532222ed6b444Derek Sollenberger or NULL if not supported. This directory will change depending on whether 632ba37aad78022aacc4d5eca0063532222ed6b444Derek Sollenberger or not the plugin is found within an incognito tab. 642ba37aad78022aacc4d5eca0063532222ed6b444Derek Sollenberger */ 652ba37aad78022aacc4d5eca0063532222ed6b444Derek Sollenberger const char* (*getApplicationDataDirectory)(NPP instance); 662ba37aad78022aacc4d5eca0063532222ed6b444Derek Sollenberger 672ba37aad78022aacc4d5eca0063532222ed6b444Derek Sollenberger // redeclaration of existing features 682ba37aad78022aacc4d5eca0063532222ed6b444Derek Sollenberger jclass (*loadJavaClass)(NPP instance, const char* className); 692ba37aad78022aacc4d5eca0063532222ed6b444Derek Sollenberger void (*setPowerState)(NPP instance, ANPPowerState powerState); 702ba37aad78022aacc4d5eca0063532222ed6b444Derek Sollenberger}; 712ba37aad78022aacc4d5eca0063532222ed6b444Derek Sollenberger 723d1195ca6a380e5af16e3a505a007369cf18a4dbSteve Block#endif // ANPSystem_npapi_h 73