gecko-dev/dom/plugins/ipc/PPluginScriptableObject.ipdl
2012-05-21 12:12:37 +01:00

107 lines
2.8 KiB
Plaintext

/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
include protocol PPluginInstance;
include protocol PPluginIdentifier;
include "npapi.h";
include "npruntime.h";
include "mozilla/plugins/PluginMessageUtils.h";
using mozilla::void_t;
using mozilla::null_t;
namespace mozilla {
namespace plugins {
union Variant {
void_t;
null_t;
bool;
int;
double;
nsCString;
nullable PPluginScriptableObject;
};
rpc protocol PPluginScriptableObject
{
manager PPluginInstance;
both:
async __delete__();
parent:
rpc NPN_Evaluate(nsCString aScript)
returns (Variant aResult,
bool aSuccess);
child:
rpc Invalidate();
both:
// NPClass methods
rpc HasMethod(PPluginIdentifier aId)
returns (bool aHasMethod);
rpc Invoke(PPluginIdentifier aId,
Variant[] aArgs)
returns (Variant aResult,
bool aSuccess);
rpc InvokeDefault(Variant[] aArgs)
returns (Variant aResult,
bool aSuccess);
rpc HasProperty(PPluginIdentifier aId)
returns (bool aHasProperty);
rpc SetProperty(PPluginIdentifier aId,
Variant aValue)
returns (bool aSuccess);
rpc RemoveProperty(PPluginIdentifier aId)
returns (bool aSuccess);
rpc Enumerate()
returns (PPluginIdentifier[] aProperties,
bool aSuccess);
rpc Construct(Variant[] aArgs)
returns (Variant aResult,
bool aSuccess);
// Objects are initially unprotected, and the Protect and Unprotect functions
// only affect protocol objects that represent NPObjects created in the same
// process (rather than protocol objects that are a proxy for an NPObject
// created in another process). Protocol objects representing local NPObjects
// are protected after an NPObject has been associated with the protocol
// object. Sending the protocol object as an argument to the other process
// temporarily protects the protocol object again for the duration of the call.
async Protect();
async Unprotect();
/**
* GetProperty is slightly wonky due to the way we support NPObjects that have
* methods and properties with the same name. When child calls parent we
* simply return a property. When parent calls child, however, we need to do
* several checks at once and return all the results simultaneously.
*/
parent:
rpc GetParentProperty(PPluginIdentifier aId)
returns (Variant aResult,
bool aSuccess);
child:
rpc GetChildProperty(PPluginIdentifier aId)
returns (bool aHasProperty,
bool aHasMethod,
Variant aResult,
bool aSuccess);
};
} // namespace plugins
} // namespace mozilla