nsScriptablePeer.cpp
上传用户:hongyu5696
上传日期:2018-01-22
资源大小:391k
文件大小:12k
源码类别:
PlugIns编程
开发平台:
Unix_Linux
- /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
- /* ***** BEGIN LICENSE BLOCK *****
- * Version: NPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Netscape Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- * http://www.mozilla.org/NPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1998
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the NPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the NPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
- // ==============================
- // ! Scriptability related code !
- // ==============================
- /////////////////////////////////////////////////////
- //
- // This file implements the nsScriptablePeer object
- // The native methods of this class are supposed to
- // be callable from JavaScript
- //
- #include "plugin.h"
- static NS_DEFINE_IID(kIScriptabledownloadPluginIID,
- NS_ISCRIPTABLEDOWNLOADPLUGIN_IID);
- static NS_DEFINE_IID(kIScriptableWMPPluginIID,
- NS_ISCRIPTABLEWMPPLUGIN_IID);
- static NS_DEFINE_IID(kIClassInfoIID, NS_ICLASSINFO_IID);
- static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
- nsScriptablePeer::nsScriptablePeer(nsPluginInstance * aPlugin)
- {
- mPlugin = aPlugin;
- mRefCnt = 0;
- mControls = NULL;
- }
- nsScriptablePeer::~nsScriptablePeer()
- {
- }
- void nsScriptablePeer::InitControls(nsControlsScriptablePeer * aControls)
- {
- mControls = aControls;
- }
- // AddRef, Release and QueryInterface are common methods and must
- // be implemented for any interface
- NS_IMETHODIMP_(nsrefcnt) nsScriptablePeer::AddRef()
- {
- ++mRefCnt;
- return mRefCnt;
- }
- NS_IMETHODIMP_(nsrefcnt) nsScriptablePeer::Release()
- {
- --mRefCnt;
- if (mRefCnt == 0) {
- delete this;
- return 0;
- }
- return mRefCnt;
- }
- // here nsScriptablePeer should return three interfaces it can be asked for by their iid's
- // static casts are necessary to ensure that correct pointer is returned
- NS_IMETHODIMP nsScriptablePeer::QueryInterface(const nsIID & aIID,
- void **aInstancePtr)
- {
- if (!aInstancePtr)
- return NS_ERROR_NULL_POINTER;
- if (aIID.Equals(kIScriptabledownloadPluginIID)) {
- *aInstancePtr = NS_STATIC_CAST(nsIScriptabledownloadPlugin *, this);
- AddRef();
- return NS_OK;
- }
- if (aIID.Equals(kIClassInfoIID)) {
- *aInstancePtr = NS_STATIC_CAST(nsIClassInfo *, this);
- AddRef();
- return NS_OK;
- }
- if (aIID.Equals(kISupportsIID)) {
- *aInstancePtr =
- NS_STATIC_CAST(nsISupports *,
- (NS_STATIC_CAST
- (nsIScriptabledownloadPlugin *, this)));
- AddRef();
- return NS_OK;
- }
- return NS_NOINTERFACE;
- }
- void nsScriptablePeer::SetInstance(nsPluginInstance * plugin)
- {
- mPlugin = plugin;
- }
- //
- // the following method will be callable from JavaScript
- //
- NS_IMETHODIMP nsScriptablePeer::Play(void)
- {
- printf("JS Play issuedn");
- mPlugin->Play();
- return NS_OK;
- }
- /* void PlayAt (in double value); */
- NS_IMETHODIMP nsScriptablePeer::PlayAt(double value)
- {
- printf("JS Play issuedn");
- mPlugin->PlayAt(value);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::Pause(void)
- {
- printf("JS Pause issuedn");
- mPlugin->Pause();
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::Stop(void)
- {
- printf("JS Stop issuedn");
- mPlugin->Stop();
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::Quit(void)
- {
- printf("JS Quit issuedn");
- mPlugin->Quit();
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::DoPlay(void)
- {
- printf("JS DoPlay issuedn");
- mPlugin->Play();
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::DoPause(void)
- {
- printf("JS DoPause issuedn");
- mPlugin->Pause();
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::FastForward(void)
- {
- printf("JS FastForward issuedn");
- mPlugin->FastForward();
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::FastReverse(void)
- {
- printf("JS FastReverse issuedn");
- mPlugin->FastReverse();
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::Ff(void)
- {
- printf("JS ff issuedn");
- mPlugin->FastForward();
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::Rew(void)
- {
- printf("JS rew issuedn");
- mPlugin->FastReverse();
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::Rewind(void)
- {
- printf("JS Quit issuedn");
- mPlugin->FastReverse();
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::Seek(double counter)
- {
- printf("JS Seek issuedn");
- mPlugin->Seek(counter);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::GetPlayState(PRInt32 * aPlayState)
- {
- printf("JS playState issuedn");
- mPlugin->GetPlayState(aPlayState);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::GetTime(double *_retval)
- {
- printf("JS getTime issuedn");
- mPlugin->GetTime();
- // strcpy(filename,"asd");
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::GetDuration(double *_retval)
- {
- printf("JS getDuration issuedn");
- mPlugin->GetDuration(_retval);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::GetPercent(double *_retval)
- {
- printf("JS getPercent issuedn");
- mPlugin->GetPercent(_retval);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::GetFilename(char **aFilename)
- {
- mPlugin->GetFilename(aFilename);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::SetFilename(const char *aFilename)
- {
- mPlugin->SetFilename(aFilename);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::Open(const char *filename)
- {
- return NS_OK;
- mPlugin->SetFilename(filename);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::SetFileName(const char *filename)
- {
- mPlugin->SetFilename(filename);
- return NS_OK;
- }
- /* void SetIsLooping (in boolean loop); */
- NS_IMETHODIMP nsScriptablePeer::SetIsLooping(PRBool loop)
- {
- printf("JS SetIsLooping issuedn");
- mPlugin->SetLoop(loop);
- return NS_OK;
- }
- /* boolean GetIsLooping (); */
- NS_IMETHODIMP nsScriptablePeer::GetIsLooping(PRBool * _retval)
- {
- printf("JS GetIsLooping issuedn");
- mPlugin->GetLoop(_retval);
- return NS_OK;
- }
- /* void SetAutoPlay (in boolean autoPlay); */
- NS_IMETHODIMP nsScriptablePeer::SetAutoPlay(PRBool autoPlay)
- {
- printf("JS SetAutoPlay issuedn");
- mPlugin->SetAutoPlay(autoPlay);
- return NS_OK;
- }
- /* boolean GetAutoPlay (); */
- NS_IMETHODIMP nsScriptablePeer::GetAutoPlay(PRBool * _retval)
- {
- printf("JS GetAutoPlay issuedn");
- mPlugin->GetAutoPlay(_retval);
- return NS_OK;
- }
- /* boolean isplaying (); */
- NS_IMETHODIMP nsScriptablePeer::Isplaying(PRBool * _retval)
- {
- printf("JS isplaying issuedn");
- mPlugin->GetPlaying(_retval);
- return NS_OK;
- }
- /* void playlistAppend (in string filename); */
- NS_IMETHODIMP nsScriptablePeer::PlaylistAppend(const char *item)
- {
- mPlugin->PlaylistAppend(item);
- return NS_OK;
- }
- /* void playlistClear (PRInt32 *_retval; */
- NS_IMETHODIMP nsScriptablePeer::PlaylistClear(PRBool * _retval)
- {
- printf("JS playlistClear issuedn");
- mPlugin->PlaylistClear(_retval);
- return NS_OK;
- }
- /* void SetHREF (in string url); */
- NS_IMETHODIMP nsScriptablePeer::SetHREF(const char *url)
- {
- mPlugin->SetFilename(url);
- return NS_OK;
- }
- /* string GetHREF (); */
- NS_IMETHODIMP nsScriptablePeer::GetHREF(char **_retval)
- {
- mPlugin->GetFilename(_retval);
- return NS_OK;
- }
- /* void SetURL (in string url); */
- NS_IMETHODIMP nsScriptablePeer::SetURL(const char *url)
- {
- mPlugin->SetFilename(url);
- return NS_OK;
- }
- /* string GetURL (); */
- NS_IMETHODIMP nsScriptablePeer::GetURL(char **_retval)
- {
- mPlugin->GetFilename(_retval);
- return NS_OK;
- }
- /* string GetMIMEType (); */
- NS_IMETHODIMP nsScriptablePeer::GetMIMEType(char **_retval)
- {
- printf("JS GetMIMEType issuedn");
- mPlugin->GetMIMEType(_retval);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::WriteData(char **_retval)
- {
- mPlugin->WriteData(_retval);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::DetectPlugin(const char *filename, char **_retval)
- {
- mPlugin->Detectplugin(filename, _retval);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::GetPlugin(const char *url, char **_retval)
- {
- mPlugin->Getplugin(url, _retval);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::GetData(char **_retval)
- {
- mPlugin->GetData(_retval);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::GetShowControls(PRBool * aShowControls)
- {
- printf("JS GetShowControls issuedn");
- mPlugin->GetShowControls(aShowControls);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::SetShowControls(PRBool aShowControls)
- {
- printf("JS SetShowControls issuedn");
- mPlugin->SetShowControls(aShowControls);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::GetFullscreen(PRBool * aFullscreen)
- {
- printf("JS GetFullscreen issuedn");
- mPlugin->GetFullscreen(aFullscreen);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::SetFullscreen(PRBool aFullscreen)
- {
- printf("JS SetFullscreen issuedn");
- mPlugin->SetFullscreen(aFullscreen);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::GetShowlogo(PRBool * aShowlogo)
- {
- printf("JS GetShowlogo issuedn");
- mPlugin->GetShowlogo(aShowlogo);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::SetShowlogo(PRBool aShowlogo)
- {
- printf("JS SetShowlogo issuedn");
- mPlugin->SetShowlogo(aShowlogo);
- return NS_OK;
- }
- NS_IMETHODIMP nsScriptablePeer::GetControls(nsIScriptableWMPPlugin *
- *aControls)
- {
- *aControls = mControls;
- if (mControls == NULL)
- return NS_ERROR_NULL_POINTER;
- else
- return NS_OK;
- }
- nsControlsScriptablePeer::nsControlsScriptablePeer(nsPluginInstance *
- aPlugin)
- {
- mPlugin = aPlugin;
- mRefCnt = 0;
- }
- nsControlsScriptablePeer::~nsControlsScriptablePeer()
- {
- //printf("~nsScriptablePeer calledn");
- }
- // AddRef, Release and QueryInterface are common methods and must
- // be implemented for any interface
- NS_IMETHODIMP_(nsrefcnt) nsControlsScriptablePeer::AddRef()
- {
- ++mRefCnt;
- return mRefCnt;
- }
- NS_IMETHODIMP_(nsrefcnt) nsControlsScriptablePeer::Release()
- {
- --mRefCnt;
- if (mRefCnt == 0) {
- //delete this;
- return 0;
- }
- return mRefCnt;
- }
- // here nsScriptablePeer should return three interfaces it can be asked for by their iid's
- // static casts are necessary to ensure that correct pointer is returned
- NS_IMETHODIMP nsControlsScriptablePeer::QueryInterface(const nsIID & aIID,
- void **aInstancePtr)
- {
- if (!aInstancePtr)
- return NS_ERROR_NULL_POINTER;
- if (aIID.Equals(kIScriptableWMPPluginIID)) {
- *aInstancePtr = NS_STATIC_CAST(nsIScriptableWMPPlugin *, this);
- AddRef();
- return NS_OK;
- }
- if (aIID.Equals(kIClassInfoIID)) {
- *aInstancePtr = NS_STATIC_CAST(nsIClassInfo *, this);
- AddRef();
- return NS_OK;
- }
- if (aIID.Equals(kISupportsIID)) {
- *aInstancePtr =
- NS_STATIC_CAST(nsISupports *,
- (NS_STATIC_CAST
- (nsIScriptableWMPPlugin *, this)));
- AddRef();
- return NS_OK;
- }
- return NS_NOINTERFACE;
- }
- void nsControlsScriptablePeer::SetInstance(nsPluginInstance * plugin)
- {
- mPlugin = plugin;
- }
- //
- // the following method will be callable from JavaScript
- //
- NS_IMETHODIMP nsControlsScriptablePeer::Play(void)
- {
- printf("JS Play issuedn");
- mPlugin->Play();
- return NS_OK;
- }
- NS_IMETHODIMP nsControlsScriptablePeer::Pause(void)
- {
- printf("JS Pause issuedn");
- mPlugin->Pause();
- return NS_OK;
- }
- NS_IMETHODIMP nsControlsScriptablePeer::Stop(void)
- {
- printf("JS Stop issuedn");
- mPlugin->Stop();
- return NS_OK;
- }