1 /* ***** BEGIN LICENSE BLOCK *****
2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4 * The contents of this file are subject to the Mozilla Public License Version
5 * 1.1 (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 * http://www.mozilla.org/MPL/
9 * Software distributed under the License is distributed on an "AS IS" basis,
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 * for the specific language governing rights and limitations under the
14 * The Original Code is the Netscape security libraries.
16 * The Initial Developer of the Original Code is
17 * Netscape Communications Corporation.
18 * Portions created by the Initial Developer are Copyright (C) 1994-2000
19 * the Initial Developer. All Rights Reserved.
22 * Adam Lock <adamlock@eircom.net>
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 ***** */
39 #include "Pluginhostctrl.h"
40 #include "nsPluginHostCtrl.h"
42 /////////////////////////////////////////////////////////////////////////////
45 nsPluginHostCtrl::nsPluginHostCtrl()
50 nsPluginHostCtrl::~nsPluginHostCtrl()
55 HRESULT
nsPluginHostCtrl::GetWebBrowserApp(IWebBrowserApp
**pBrowser
)
63 // Get the web browser through the site the control is attached to.
64 // Note: The control could be running in some other container than IE
65 // so code shouldn't expect this function to work all the time.
67 CComPtr
<IWebBrowserApp
> cpWebBrowser
;
68 CComQIPtr
<IServiceProvider
, &IID_IServiceProvider
> cpServiceProvider
= m_spClientSite
;
71 if (cpServiceProvider
)
73 hr
= cpServiceProvider
->QueryService(IID_IWebBrowserApp
, &cpWebBrowser
);
80 *pBrowser
= cpWebBrowser
;
81 (*pBrowser
)->AddRef();
86 ///////////////////////////////////////////////////////////////////////////////
89 STDMETHODIMP
nsPluginHostCtrl::Load(LPPROPERTYBAG pPropBag
, LPERRORLOG pErrorLog
)
91 CComQIPtr
<IPropertyBag2
> cpPropBag2
= pPropBag
;
94 // Read *all* the properties via IPropertyBag2 and store them somewhere
95 // so they can be fed into the plugin instance at creation..
97 cpPropBag2
->CountProperties(&nProperties
);
100 PROPBAG2
*pProperties
= (PROPBAG2
*) malloc(sizeof(PROPBAG2
) * nProperties
);
101 ULONG nPropertiesGotten
= 0;
102 cpPropBag2
->GetPropertyInfo(0, nProperties
, pProperties
, &nPropertiesGotten
);
103 for (ULONG i
= 0; i
< nPropertiesGotten
; i
++)
105 if (pProperties
[i
].vt
== VT_BSTR
)
110 cpPropBag2
->Read(1, &pProperties
[i
], NULL
, &v
, &hrRead
);
111 AddPluginParam(OLE2A(pProperties
[i
].pstrName
), OLE2A(v
.bstrVal
));
113 if (pProperties
[i
].pstrName
)
115 CoTaskMemFree(pProperties
[i
].pstrName
);
121 return IPersistPropertyBagImpl
<nsPluginHostCtrl
>::Load(pPropBag
, pErrorLog
);
124 ///////////////////////////////////////////////////////////////////////////////
125 // IMozPluginHostCtrl
127 STDMETHODIMP
nsPluginHostCtrl::get_PluginContentType(BSTR
*pVal
)
129 return GetPluginContentType(pVal
);
132 STDMETHODIMP
nsPluginHostCtrl::put_PluginContentType(BSTR newVal
)
134 return SetPluginContentType(newVal
);
137 STDMETHODIMP
nsPluginHostCtrl::get_PluginSource(BSTR
*pVal
)
139 return GetPluginSource(pVal
);
142 STDMETHODIMP
nsPluginHostCtrl::put_PluginSource(BSTR newVal
)
144 return SetPluginSource(newVal
);
147 STDMETHODIMP
nsPluginHostCtrl::get_PluginsPage(BSTR
*pVal
)
149 return GetPluginsPage(pVal
);
152 STDMETHODIMP
nsPluginHostCtrl::put_PluginsPage(BSTR newVal
)
154 return SetPluginsPage(newVal
);