1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/* ***** BEGIN LICENSE BLOCK *****
3
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
5
* The contents of this file are subject to the Mozilla Public License Version
6
* 1.1 (the "License"); you may not use this file except in compliance with
7
* the License. You may obtain a copy of the License at
8
* http://www.mozilla.org/MPL/
10
* Software distributed under the License is distributed on an "AS IS" basis,
11
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12
* for the specific language governing rights and limitations under the
15
* The Original Code is mozilla.org code.
17
* The Initial Developer of the Original Code is
18
* Netscape Communications Corporation.
19
* Portions created by the Initial Developer are Copyright (C) 1998
20
* the Initial Developer. All Rights Reserved.
24
* Alternatively, the contents of this file may be used under the terms of
25
* either the GNU General Public License Version 2 or later (the "GPL"), or
26
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27
* in which case the provisions of the GPL or the LGPL are applicable instead
28
* of those above. If you wish to allow use of your version of this file only
29
* under the terms of either the GPL or the LGPL, and not to allow others to
30
* use your version of this file under the terms of the MPL, indicate your
31
* decision by deleting the provisions above and replace them with the notice
32
* and other provisions required by the GPL or the LGPL. If you do not delete
33
* the provisions above, a recipient may use your version of this file under
34
* the terms of any one of the MPL, the GPL or the LGPL.
36
* ***** END LICENSE BLOCK ***** */
38
// ==============================
39
// ! Scriptability related code !
40
// ==============================
42
// nsScriptablePeer - xpconnect scriptable peer
45
#ifndef __nsScriptablePeer_h__
46
#define __nsScriptablePeer_h__
48
#include "nsIScriptableGeckoMediaPlayer.h"
49
#include "nsIClassInfo.h"
51
class nsPluginInstance;
53
// We must implement nsIClassInfo because it signals the
54
// Mozilla Security Manager to allow calls from JavaScript.
56
class nsClassInfoMixin:public nsIClassInfo {
57
// These flags are used by the DOM and security systems to signal that
58
// JavaScript callers are allowed to call this object's scritable methods.
59
NS_IMETHOD GetFlags(PRUint32 * aFlags) {
60
*aFlags = nsIClassInfo::PLUGIN_OBJECT | nsIClassInfo::DOM_OBJECT;
62
} NS_IMETHOD GetImplementationLanguage(PRUint32 * aImplementationLanguage) {
63
*aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
66
// The rest of the methods can safely return error codes...
67
NS_IMETHOD GetInterfaces(PRUint32 * count, nsIID * **array) {
68
return NS_ERROR_NOT_IMPLEMENTED;
70
NS_IMETHOD GetHelperForLanguage(PRUint32 language, nsISupports ** _retval) {
71
return NS_ERROR_NOT_IMPLEMENTED;
73
NS_IMETHOD GetContractID(char **aContractID) {
74
return NS_ERROR_NOT_IMPLEMENTED;
76
NS_IMETHOD GetClassDescription(char **aClassDescription) {
77
return NS_ERROR_NOT_IMPLEMENTED;
79
NS_IMETHOD GetClassID(nsCID * *aClassID) {
80
return NS_ERROR_NOT_IMPLEMENTED;
82
NS_IMETHOD GetClassIDNoAlloc(nsCID * aClassIDNoAlloc) {
83
return NS_ERROR_NOT_IMPLEMENTED;
87
class nsControlsScriptablePeer:public nsIScriptableGeckoMediaPlayerControls,
88
public nsClassInfoMixin {
90
nsControlsScriptablePeer(nsPluginInstance * plugin);
91
virtual ~ nsControlsScriptablePeer();
94
// methods from nsISupports
95
NS_IMETHOD QueryInterface(const nsIID & aIID, void **aInstancePtr);
96
NS_IMETHOD_(nsrefcnt) AddRef();
97
NS_IMETHOD_(nsrefcnt) Release();
103
// native methods callable from JavaScript
104
NS_DECL_NSISCRIPTABLEGECKOMEDIAPLAYERCONTROLS
105
void SetInstance(nsPluginInstance * plugin);
107
nsPluginInstance * mPlugin;
111
class nsScriptablePeer:public nsIScriptableGeckoMediaPlayer, public nsClassInfoMixin {
113
nsScriptablePeer(nsPluginInstance * plugin);
114
virtual ~ nsScriptablePeer();
117
// methods from nsISupports
118
NS_IMETHOD QueryInterface(const nsIID & aIID, void **aInstancePtr);
119
NS_IMETHOD_(nsrefcnt) AddRef();
120
NS_IMETHOD_(nsrefcnt) Release();
126
// native methods callable from JavaScript
127
NS_DECL_NSISCRIPTABLEGECKOMEDIAPLAYER void SetInstance(nsPluginInstance * plugin);
128
void InitControls(nsControlsScriptablePeer *aControls);
130
nsPluginInstance * mPlugin;
131
nsControlsScriptablePeer *mControls;