Back to index

lightning-sunbird  0.9+nobinonly
EmbeddedFramePluginInstance.cpp
Go to the documentation of this file.
00001 /* ***** BEGIN LICENSE BLOCK *****
00002  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00003  *
00004  * The contents of this file are subject to the Mozilla Public License Version
00005  * 1.1 (the "License"); you may not use this file except in compliance with
00006  * the License. You may obtain a copy of the License at
00007  * http://www.mozilla.org/MPL/
00008  *
00009  * Software distributed under the License is distributed on an "AS IS" basis,
00010  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00011  * for the specific language governing rights and limitations under the
00012  * License.
00013  *
00014  * The Original Code is mozilla.org code.
00015  *
00016  * The Initial Developer of the Original Code is
00017  * Netscape Communications Corporation.
00018  * Portions created by the Initial Developer are Copyright (C) 1998
00019  * the Initial Developer. All Rights Reserved.
00020  *
00021  * Contributor(s):
00022  *
00023  * Alternatively, the contents of this file may be used under the terms of
00024  * either of the GNU General Public License Version 2 or later (the "GPL"),
00025  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00026  * in which case the provisions of the GPL or the LGPL are applicable instead
00027  * of those above. If you wish to allow use of your version of this file only
00028  * under the terms of either the GPL or the LGPL, and not to allow others to
00029  * use your version of this file under the terms of the MPL, indicate your
00030  * decision by deleting the provisions above and replace them with the notice
00031  * and other provisions required by the GPL or the LGPL. If you do not delete
00032  * the provisions above, a recipient may use your version of this file under
00033  * the terms of any one of the MPL, the GPL or the LGPL.
00034  *
00035  * ***** END LICENSE BLOCK ***** */
00036 
00037 /*
00038        EmbeddedFramePluginInstance.cpp
00039  */
00040 
00041 #include "EmbeddedFramePluginInstance.h"
00042 #include "EmbeddedFrame.h"
00043 #include "MRJPlugin.h"
00044 
00045 #include "nsIPluginInstancePeer.h"
00046 #include "nsIPluginTagInfo.h"
00047 
00048 #include <stdio.h>
00049 
00050 EmbeddedFramePluginInstance::EmbeddedFramePluginInstance()
00051        :      mPeer(NULL), mFrame(NULL)
00052 {
00053 }
00054 
00055 EmbeddedFramePluginInstance::~EmbeddedFramePluginInstance()
00056 {
00057        if (mFrame != NULL)
00058               delete mFrame;
00059 }
00060 
00061 NS_METHOD EmbeddedFramePluginInstance::Initialize(nsIPluginInstancePeer* peer)
00062 {
00063        mPeer = peer;
00064        NS_ADDREF(mPeer);
00065 
00066        nsIPluginTagInfo* tagInfo = NULL;
00067        if (mPeer->QueryInterface(NS_GET_IID(nsIPluginTagInfo), (void **)&tagInfo) == NS_OK) {
00068               const char* frameValue = NULL;
00069               if (tagInfo->GetAttribute("JAVAFRAME", &frameValue) == NS_OK) {
00070                      sscanf(frameValue, "%X", &mFrame);
00071               }
00072               if (mFrame != NULL)
00073                      mFrame->setPluginInstance(this);
00074               NS_RELEASE(tagInfo);
00075        }
00076 
00077        return NS_OK;
00078 }
00079 
00080 NS_METHOD EmbeddedFramePluginInstance::GetPeer(nsIPluginInstancePeer* *resultingPeer)
00081 {
00082        if (mPeer != NULL) {
00083               *resultingPeer = mPeer;
00084               mPeer->AddRef();
00085        }
00086        return NS_OK;
00087 }
00088 
00089 NS_METHOD EmbeddedFramePluginInstance::Destroy()
00090 {
00091        NS_IF_RELEASE(mPeer);
00092 
00093        // assume that Java will release this frame.
00094        if (mFrame != NULL) {
00095               mFrame->showHide(false);
00096               // delete mFrame;
00097               mFrame = NULL;
00098        }
00099 
00100        return NS_OK;
00101 }
00102 
00103 NS_METHOD EmbeddedFramePluginInstance::SetWindow(nsPluginWindow* pluginWindow)
00104 {
00105        if (mFrame != NULL) {
00106               if (pluginWindow != NULL)
00107                      mFrame->setWindow(WindowRef(pluginWindow->window->port));
00108               else
00109                      mFrame->setWindow(NULL);
00110        }
00111        return NS_OK;
00112 }
00113 
00114 NS_METHOD EmbeddedFramePluginInstance::HandleEvent(nsPluginEvent* pluginEvent, PRBool* eventHandled)
00115 {
00116        if (mFrame != NULL)
00117               *eventHandled = mFrame->handleEvent(pluginEvent->event);
00118        return NS_OK;
00119 }
00120 
00121 void EmbeddedFramePluginInstance::setFrame(EmbeddedFrame* frame)
00122 {
00123        mFrame = frame;
00124 }
00125 
00126 NS_IMPL_ISUPPORTS1(EmbeddedFramePluginInstance, nsIPluginInstance)