зеркало из https://github.com/mozilla/pjs.git
Updated to reflect recent modifications
This commit is contained in:
Родитель
a936f5fe48
Коммит
037d54b7e6
|
@ -3,6 +3,10 @@
|
|||
#include "MozillaControl.h"
|
||||
#include "MozillaBrowser.h"
|
||||
|
||||
|
||||
#define NS_DEFAULT_PREFS "prefs.js"
|
||||
#define NS_DEFAULT_PREFS_HOMEPAGE "browser.startup.homepage"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CMozillaBrowser
|
||||
|
||||
|
@ -13,11 +17,17 @@ CMozillaBrowser::CMozillaBrowser()
|
|||
m_bWindowOnly = TRUE;
|
||||
m_bWndLess = FALSE;
|
||||
|
||||
// Initialize layout interfaces
|
||||
m_pIWebShell = nsnull;
|
||||
#ifdef USE_NGPREF
|
||||
m_pIPref = nsnull;
|
||||
#endif
|
||||
|
||||
// Create the container that handles some things for us
|
||||
m_pWebShellContainer = NULL;
|
||||
|
||||
m_bBusy = FALSE;
|
||||
|
||||
PL_InitializeEventsLib("");
|
||||
// Register everything
|
||||
NS_SetupRegistry();
|
||||
|
@ -33,7 +43,7 @@ STDMETHODIMP CMozillaBrowser::InterfaceSupportsErrorInfo(REFIID riid)
|
|||
{
|
||||
static const IID* arr[] =
|
||||
{
|
||||
&IID_IMozillaBrowser,
|
||||
&IID_IWebBrowser,
|
||||
};
|
||||
for (int i=0;i<sizeof(arr)/sizeof(arr[0]);i++)
|
||||
{
|
||||
|
@ -58,14 +68,27 @@ LRESULT CMozillaBrowser::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL&
|
|||
|
||||
LRESULT CMozillaBrowser::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
/* Destroy NGLayout... */
|
||||
/* Destroy layout... */
|
||||
if (m_pIWebShell != nsnull)
|
||||
{
|
||||
m_pIWebShell->Destroy();
|
||||
NS_RELEASE(m_pIWebShell);
|
||||
}
|
||||
|
||||
if (m_pWebShellContainer)
|
||||
{
|
||||
m_pWebShellContainer->Release();
|
||||
m_pWebShellContainer = NULL;
|
||||
}
|
||||
|
||||
#ifdef USE_NGPREF
|
||||
if (m_pIPref)
|
||||
{
|
||||
m_pIPref->Shutdown();
|
||||
NS_RELEASE(m_pIPref);
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -81,6 +104,17 @@ LRESULT CMozillaBrowser::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& b
|
|||
}
|
||||
|
||||
|
||||
BOOL CMozillaBrowser::IsValid()
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
HRESULT CMozillaBrowser::OnDraw(ATL_DRAWINFO& di)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
|
@ -108,6 +142,15 @@ HRESULT CMozillaBrowser::CreateWebShell()
|
|||
|
||||
nsresult rv;
|
||||
|
||||
// Load preferences
|
||||
#ifdef USE_NGPREF
|
||||
rv = nsRepository::CreateInstance(kPrefCID, NULL, kIPrefIID, (void **) &m_pIPref);
|
||||
if (NS_OK != rv) {
|
||||
return E_FAIL;
|
||||
}
|
||||
m_pIPref->Startup(NS_DEFAULT_PREFS);
|
||||
#endif
|
||||
|
||||
rv = nsRepository::CreateInstance(kWebShellCID, nsnull,
|
||||
kIWebShellIID,
|
||||
(void**)&m_pIWebShell);
|
||||
|
@ -115,7 +158,7 @@ HRESULT CMozillaBrowser::CreateWebShell()
|
|||
{
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
|
||||
nsRect r;
|
||||
r.x = 0;
|
||||
r.y = 0;
|
||||
|
@ -130,24 +173,16 @@ HRESULT CMozillaBrowser::CreateWebShell()
|
|||
nsScrollPreference_kAuto, aAllowPlugins);
|
||||
|
||||
// Create the container object
|
||||
m_pWebShellContainer = new CWebShellContainer;
|
||||
m_pWebShellContainer = new CWebShellContainer(this);
|
||||
m_pWebShellContainer->AddRef();
|
||||
|
||||
m_pIWebShell->SetContainer((nsIWebShellContainer*) m_pWebShellContainer);
|
||||
// m_pIWebShell->SetObserver((nsIStreamObserver*)this);
|
||||
// m_pIWebShell->SetPrefs(aPrefs);
|
||||
m_pIWebShell->SetObserver((nsIStreamObserver*) m_pWebShellContainer);
|
||||
#ifdef USE_NGPREF
|
||||
m_pIWebShell->SetPrefs(m_pIPref);
|
||||
#endif
|
||||
m_pIWebShell->Show();
|
||||
|
||||
// TODO
|
||||
// -- remove
|
||||
// Use the IWebBrowser::Navigate() method
|
||||
USES_CONVERSION;
|
||||
LPOLESTR pszUrl = T2OLE(_T("http://www.mozilla.org"));
|
||||
BSTR bstrUrl = ::SysAllocString(pszUrl);
|
||||
Navigate(bstrUrl, NULL, NULL, NULL, NULL);
|
||||
::SysFreeString(bstrUrl);
|
||||
// -- remove
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
@ -156,12 +191,12 @@ HRESULT CMozillaBrowser::CreateWebShell()
|
|||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::GoBack(void)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
if (m_pIWebShell->CanBack())
|
||||
if (m_pIWebShell->CanBack() == NS_OK)
|
||||
{
|
||||
m_pIWebShell->Back();
|
||||
}
|
||||
|
@ -172,12 +207,12 @@ HRESULT STDMETHODCALLTYPE CMozillaBrowser::GoBack(void)
|
|||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::GoForward(void)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
if (m_pIWebShell->CanForward())
|
||||
if (m_pIWebShell->CanForward() == NS_OK)
|
||||
{
|
||||
m_pIWebShell->Forward();
|
||||
}
|
||||
|
@ -188,14 +223,30 @@ HRESULT STDMETHODCALLTYPE CMozillaBrowser::GoForward(void)
|
|||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::GoHome(void)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
// TODO find and navigate to the home page somehow
|
||||
USES_CONVERSION;
|
||||
Navigate(T2OLE(_T("http://home.netscape.com")), NULL, NULL, NULL, NULL);
|
||||
|
||||
// Find the home page stored in prefs
|
||||
TCHAR * sUrl = _T("http://home.netscape.com");
|
||||
#ifdef USE_NGPREF
|
||||
if (m_pIPref)
|
||||
{
|
||||
char szBuffer[512];
|
||||
nsresult rv;
|
||||
memset(szBuffer, 0, sizeof(szBuffer);
|
||||
rv = m_pIPref->GetCharPref(NS_DEFAULT_PREFS_HOMEPAGE, szBuffer, sizeof(szBuffer));
|
||||
if (rv == NS_OK)
|
||||
{
|
||||
sUrl = A2T(szBuffer);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
// Navigate to the home page
|
||||
Navigate(T2OLE(sUrl), NULL, NULL, NULL, NULL);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
@ -203,15 +254,18 @@ HRESULT STDMETHODCALLTYPE CMozillaBrowser::GoHome(void)
|
|||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::GoSearch(void)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
// TODO find and navigate to the search page somehow
|
||||
// TODO find and navigate to the search page stored in prefs
|
||||
// and not this hard coded address
|
||||
|
||||
TCHAR * sUrl = _T("http://search.netscape.com");
|
||||
|
||||
USES_CONVERSION;
|
||||
Navigate(T2OLE(_T("http://search.netscape.com")), NULL, NULL, NULL, NULL);
|
||||
Navigate(T2OLE(sUrl), NULL, NULL, NULL, NULL);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
@ -219,7 +273,7 @@ HRESULT STDMETHODCALLTYPE CMozillaBrowser::GoSearch(void)
|
|||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::Navigate(BSTR URL, VARIANT __RPC_FAR *Flags, VARIANT __RPC_FAR *TargetFrameName, VARIANT __RPC_FAR *PostData, VARIANT __RPC_FAR *Headers)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
@ -228,7 +282,6 @@ HRESULT STDMETHODCALLTYPE CMozillaBrowser::Navigate(BSTR URL, VARIANT __RPC_FAR
|
|||
nsString sUrl;
|
||||
if (URL == NULL)
|
||||
{
|
||||
// ASSERT(0);
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
else
|
||||
|
@ -252,28 +305,18 @@ HRESULT STDMETHODCALLTYPE CMozillaBrowser::Navigate(BSTR URL, VARIANT __RPC_FAR
|
|||
|
||||
// Extract the target frame parameter
|
||||
nsString sTargetFrame;
|
||||
if (TargetFrameName)
|
||||
if (TargetFrameName && TargetFrameName->vt == VT_BSTR)
|
||||
{
|
||||
USES_CONVERSION;
|
||||
CComVariant vTargetFrame;
|
||||
if (VariantChangeType(TargetFrameName, &vTargetFrame, 0, VT_BSTR) != S_OK)
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
sTargetFrame = nsString(OLE2A(vTargetFrame.bstrVal));
|
||||
sTargetFrame = nsString(OLE2A(TargetFrameName->bstrVal));
|
||||
}
|
||||
|
||||
// Extract the post data parameter
|
||||
nsString sPostData;
|
||||
if (PostData)
|
||||
if (PostData && PostData->vt == VT_BSTR)
|
||||
{
|
||||
USES_CONVERSION;
|
||||
CComVariant vPostData;
|
||||
if (VariantChangeType(PostData, &vPostData, 0, VT_BSTR) != S_OK)
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
sPostData = nsString(OLE2A(vPostData.bstrVal));
|
||||
sPostData = nsString(OLE2A(PostData->bstrVal));
|
||||
}
|
||||
|
||||
|
||||
|
@ -314,7 +357,7 @@ HRESULT STDMETHODCALLTYPE CMozillaBrowser::Navigate(BSTR URL, VARIANT __RPC_FAR
|
|||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::Refresh(void)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
@ -327,7 +370,7 @@ HRESULT STDMETHODCALLTYPE CMozillaBrowser::Refresh(void)
|
|||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::Refresh2(VARIANT __RPC_FAR *Level)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
@ -343,7 +386,7 @@ HRESULT STDMETHODCALLTYPE CMozillaBrowser::Refresh2(VARIANT __RPC_FAR *Level)
|
|||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::Stop()
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
@ -356,7 +399,7 @@ HRESULT STDMETHODCALLTYPE CMozillaBrowser::Stop()
|
|||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_Application(IDispatch __RPC_FAR *__RPC_FAR *ppDisp)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
@ -368,7 +411,7 @@ HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_Application(IDispatch __RPC_FAR *
|
|||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_Parent(IDispatch __RPC_FAR *__RPC_FAR *ppDisp)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
@ -380,7 +423,7 @@ HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_Parent(IDispatch __RPC_FAR *__RPC
|
|||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_Container(IDispatch __RPC_FAR *__RPC_FAR *ppDisp)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
@ -392,7 +435,7 @@ HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_Container(IDispatch __RPC_FAR *__
|
|||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_Document(IDispatch __RPC_FAR *__RPC_FAR *ppDisp)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
@ -401,10 +444,9 @@ HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_Document(IDispatch __RPC_FAR *__R
|
|||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_TopLevelContainer(VARIANT_BOOL __RPC_FAR *pBool)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
@ -416,7 +458,7 @@ HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_TopLevelContainer(VARIANT_BOOL __
|
|||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_Type(BSTR __RPC_FAR *Type)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
@ -428,132 +470,187 @@ HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_Type(BSTR __RPC_FAR *Type)
|
|||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_Left(long __RPC_FAR *pl)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
// TODO
|
||||
return E_NOTIMPL;
|
||||
if (pl == NULL)
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
*pl = 0; // TODO
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::put_Left(long Left)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
// TODO
|
||||
return E_NOTIMPL;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_Top(long __RPC_FAR *pl)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
// TODO
|
||||
if (pl == NULL)
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
*pl = 0; // TODO
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::put_Top(long Top)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
// TODO
|
||||
return E_NOTIMPL;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_Width(long __RPC_FAR *pl)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
// TODO
|
||||
return E_NOTIMPL;
|
||||
if (pl == NULL)
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
*pl = 0; // TODO
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::put_Width(long Width)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
// TODO
|
||||
return E_NOTIMPL;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_Height(long __RPC_FAR *pl)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
// TODO
|
||||
return E_NOTIMPL;
|
||||
if (pl == NULL)
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
*pl = 0; // TODO
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::put_Height(long Height)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
// TODO
|
||||
return E_NOTIMPL;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_LocationName(BSTR __RPC_FAR *LocationName)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
// TODO
|
||||
return E_NOTIMPL;
|
||||
if (LocationName == NULL)
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
|
||||
// Get the url from the web shell
|
||||
PRUnichar *pszLocationName = nsnull;
|
||||
m_pIWebShell->GetTitle(&pszLocationName);
|
||||
if (pszLocationName == nsnull)
|
||||
{
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
// Convert the string to a BSTR
|
||||
USES_CONVERSION;
|
||||
LPOLESTR pszConvertedLocationName = W2OLE(pszLocationName);
|
||||
*LocationName = SysAllocString(pszConvertedLocationName);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_LocationURL(BSTR __RPC_FAR *LocationURL)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
// TODO
|
||||
return E_NOTIMPL;
|
||||
if (LocationURL == NULL)
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
|
||||
// Get the url from the web shell
|
||||
PRUnichar *pszUrl = nsnull;
|
||||
m_pIWebShell->GetURL(0, &pszUrl);
|
||||
if (pszUrl == nsnull)
|
||||
{
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
// Convert the string to a BSTR
|
||||
USES_CONVERSION;
|
||||
LPOLESTR pszConvertedUrl = W2OLE(pszUrl);
|
||||
*LocationURL = SysAllocString(pszConvertedUrl);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CMozillaBrowser::get_Busy(VARIANT_BOOL __RPC_FAR *pBool)
|
||||
{
|
||||
if (m_pIWebShell == nsnull)
|
||||
if (!IsValid())
|
||||
{
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
// TODO
|
||||
if (!NgIsValidAddress(pBool, sizeof(*pBool)))
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
|
||||
return E_NOTIMPL;
|
||||
*pBool = (m_bBusy) ? VARIANT_TRUE : VARIANT_FALSE;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ class ATL_NO_VTABLE CMozillaBrowser :
|
|||
public CComCoClass<CMozillaBrowser, &CLSID_MozillaBrowser>,
|
||||
public CComControl<CMozillaBrowser>,
|
||||
public CProxyDWebBrowserEvents<CMozillaBrowser>,
|
||||
public CStockPropImpl<CMozillaBrowser, IMozillaBrowser, &IID_IMozillaBrowser, &LIBID_MOZILLACONTROLLib>,
|
||||
public CStockPropImpl<CMozillaBrowser, IWebBrowser, &IID_IWebBrowser, &LIBID_MOZILLACONTROLLib>,
|
||||
public IProvideClassInfo2Impl<&CLSID_MozillaBrowser, &DIID_DWebBrowserEvents, &LIBID_MOZILLACONTROLLib>,
|
||||
public IPersistStreamInitImpl<CMozillaBrowser>,
|
||||
public IPersistStorageImpl<CMozillaBrowser>,
|
||||
|
@ -31,10 +31,9 @@ class ATL_NO_VTABLE CMozillaBrowser :
|
|||
public IDataObjectImpl<CMozillaBrowser>,
|
||||
public ISupportErrorInfo,
|
||||
public IConnectionPointContainerImpl<CMozillaBrowser>,
|
||||
public ISpecifyPropertyPagesImpl<CMozillaBrowser>,
|
||||
// Support for IE
|
||||
public IDispatchImpl<IWebBrowser, &IID_IWebBrowser, &LIBID_MOZILLACONTROLLib>
|
||||
public ISpecifyPropertyPagesImpl<CMozillaBrowser>
|
||||
{
|
||||
friend CWebShellContainer;
|
||||
public:
|
||||
CMozillaBrowser();
|
||||
virtual ~CMozillaBrowser();
|
||||
|
@ -42,8 +41,10 @@ public:
|
|||
DECLARE_REGISTRY_RESOURCEID(IDR_MOZILLABROWSER)
|
||||
|
||||
BEGIN_COM_MAP(CMozillaBrowser)
|
||||
COM_INTERFACE_ENTRY(IMozillaBrowser)
|
||||
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IMozillaBrowser)
|
||||
// IE web browser interface
|
||||
COM_INTERFACE_ENTRY(IWebBrowser)
|
||||
// COM_INTERFACE_ENTRY(IMozillaBrowser)
|
||||
COM_INTERFACE_ENTRY_IID(IID_IDispatch, IWebBrowser)
|
||||
COM_INTERFACE_ENTRY_IMPL(IViewObjectEx)
|
||||
COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject2, IViewObjectEx)
|
||||
COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject, IViewObjectEx)
|
||||
|
@ -53,7 +54,7 @@ BEGIN_COM_MAP(CMozillaBrowser)
|
|||
COM_INTERFACE_ENTRY_IMPL(IOleInPlaceActiveObject)
|
||||
COM_INTERFACE_ENTRY_IMPL(IOleControl)
|
||||
COM_INTERFACE_ENTRY_IMPL(IOleObject)
|
||||
COM_INTERFACE_ENTRY_IMPL(IQuickActivate)
|
||||
// COM_INTERFACE_ENTRY_IMPL(IQuickActivate)
|
||||
COM_INTERFACE_ENTRY_IMPL(IPersistStorage)
|
||||
COM_INTERFACE_ENTRY_IMPL(IPersistStreamInit)
|
||||
COM_INTERFACE_ENTRY_IMPL(ISpecifyPropertyPages)
|
||||
|
@ -62,8 +63,6 @@ BEGIN_COM_MAP(CMozillaBrowser)
|
|||
COM_INTERFACE_ENTRY(IProvideClassInfo2)
|
||||
COM_INTERFACE_ENTRY(ISupportErrorInfo)
|
||||
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
|
||||
// IE web browser interface
|
||||
COM_INTERFACE_ENTRY(IWebBrowser)
|
||||
END_COM_MAP()
|
||||
|
||||
BEGIN_PROPERTY_MAP(CMozillaBrowser)
|
||||
|
@ -107,9 +106,16 @@ END_MSG_MAP()
|
|||
// Protected members
|
||||
protected:
|
||||
CWebShellContainer * m_pWebShellContainer;
|
||||
|
||||
// Mozilla interfaces
|
||||
nsIWebShell * m_pIWebShell;
|
||||
nsIPref * m_pIPref;
|
||||
|
||||
// Indicates the browser is busy doing something
|
||||
BOOL m_bBusy;
|
||||
|
||||
virtual HRESULT CreateWebShell();
|
||||
virtual BOOL IsValid();
|
||||
|
||||
// IWebBrowser implementation
|
||||
public:
|
||||
|
@ -139,7 +145,6 @@ public:
|
|||
virtual HRESULT STDMETHODCALLTYPE get_LocationURL(BSTR __RPC_FAR *LocationURL);
|
||||
virtual HRESULT STDMETHODCALLTYPE get_Busy(VARIANT_BOOL __RPC_FAR *pBool);
|
||||
|
||||
// IMozillaBrowser
|
||||
public:
|
||||
HRESULT OnDraw(ATL_DRAWINFO& di);
|
||||
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -12,18 +12,6 @@ import "ocidl.idl";
|
|||
// import "exdisp.idl";
|
||||
#include "exdispid.h"
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(1339B54B-3453-11D2-93B9-000000000000),
|
||||
dual,
|
||||
helpstring("IMozillaBrowser Interface"),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IMozillaBrowser : IDispatch
|
||||
{
|
||||
[propget, id(DISPID_HWND)]
|
||||
HRESULT Window([out, retval]long* phwnd);
|
||||
};
|
||||
[
|
||||
uuid(1339B53E-3453-11D2-93B9-000000000000),
|
||||
version(1.0),
|
||||
|
@ -219,7 +207,7 @@ library MOZILLACONTROLLib
|
|||
coclass MozillaBrowser
|
||||
{
|
||||
[default] interface IWebBrowser;
|
||||
interface IMozillaBrowser;
|
||||
interface IDispatch;
|
||||
// [default, source] dispinterface DWebBrowserEvents2;
|
||||
[default, source] dispinterface DWebBrowserEvents;
|
||||
};
|
||||
|
|
|
@ -97,6 +97,15 @@ END
|
|||
|
||||
IDR_MOZILLABROWSER REGISTRY DISCARDABLE "MozillaBrowser.rgs"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_MOZILLABROWSER ICON DISCARDABLE "MozillaBrowser.ico"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
|
|
Двоичные данные
webshell/embed/ActiveX/MozillaControl.tlb
Двоичные данные
webshell/embed/ActiveX/MozillaControl.tlb
Двоичный файл не отображается.
|
@ -1,56 +0,0 @@
|
|||
/* this file contains the actual definitions of */
|
||||
/* the IIDs and CLSIDs */
|
||||
|
||||
/* link this file in with the server and any clients */
|
||||
|
||||
|
||||
/* File created by MIDL compiler version 3.03.0110 */
|
||||
/* at Sun Aug 23 21:54:29 1998
|
||||
*/
|
||||
/* Compiler settings for MozillaControl.idl:
|
||||
Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
|
||||
error checks: none
|
||||
*/
|
||||
//@@MIDL_FILE_HEADING( )
|
||||
#ifdef __cplusplus
|
||||
extern "C"{
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __IID_DEFINED__
|
||||
#define __IID_DEFINED__
|
||||
|
||||
typedef struct _IID
|
||||
{
|
||||
unsigned long x;
|
||||
unsigned short s1;
|
||||
unsigned short s2;
|
||||
unsigned char c[8];
|
||||
} IID;
|
||||
|
||||
#endif // __IID_DEFINED__
|
||||
|
||||
#ifndef CLSID_DEFINED
|
||||
#define CLSID_DEFINED
|
||||
typedef IID CLSID;
|
||||
#endif // CLSID_DEFINED
|
||||
|
||||
const IID IID_IMozillaBrowser = {0x1339B54B,0x3453,0x11D2,{0x93,0xB9,0x00,0x00,0x00,0x00,0x00,0x00}};
|
||||
|
||||
|
||||
const IID LIBID_MOZILLACONTROLLib = {0x1339B53E,0x3453,0x11D2,{0x93,0xB9,0x00,0x00,0x00,0x00,0x00,0x00}};
|
||||
|
||||
|
||||
const IID IID_IWebBrowser = {0xEAB22AC1,0x30C1,0x11CF,{0xA7,0xEB,0x00,0x00,0xC0,0x5B,0xAE,0x0B}};
|
||||
|
||||
|
||||
const IID DIID_DWebBrowserEvents = {0xEAB22AC2,0x30C1,0x11CF,{0xA7,0xEB,0x00,0x00,0xC0,0x5B,0xAE,0x0B}};
|
||||
|
||||
|
||||
const CLSID CLSID_MozillaBrowser = {0x1339B54C,0x3453,0x11D2,{0x93,0xB9,0x00,0x00,0x00,0x00,0x00,0x00}};
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
@ -1,277 +0,0 @@
|
|||
/* this ALWAYS GENERATED file contains the proxy stub code */
|
||||
|
||||
|
||||
/* File created by MIDL compiler version 3.03.0110 */
|
||||
/* at Sun Aug 23 21:54:29 1998
|
||||
*/
|
||||
/* Compiler settings for MozillaControl.idl:
|
||||
Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
|
||||
error checks: none
|
||||
*/
|
||||
//@@MIDL_FILE_HEADING( )
|
||||
|
||||
#define USE_STUBLESS_PROXY
|
||||
|
||||
|
||||
/* verify that the <rpcproxy.h> version is high enough to compile this file*/
|
||||
#ifndef __REDQ_RPCPROXY_H_VERSION__
|
||||
#define __REQUIRED_RPCPROXY_H_VERSION__ 440
|
||||
#endif
|
||||
|
||||
|
||||
#include "rpcproxy.h"
|
||||
#ifndef __RPCPROXY_H_VERSION__
|
||||
#error this stub requires an updated version of <rpcproxy.h>
|
||||
#endif // __RPCPROXY_H_VERSION__
|
||||
|
||||
|
||||
#include "MozillaControl.h"
|
||||
|
||||
#define TYPE_FORMAT_STRING_SIZE 5
|
||||
#define PROC_FORMAT_STRING_SIZE 25
|
||||
|
||||
typedef struct _MIDL_TYPE_FORMAT_STRING
|
||||
{
|
||||
short Pad;
|
||||
unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
|
||||
} MIDL_TYPE_FORMAT_STRING;
|
||||
|
||||
typedef struct _MIDL_PROC_FORMAT_STRING
|
||||
{
|
||||
short Pad;
|
||||
unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
|
||||
} MIDL_PROC_FORMAT_STRING;
|
||||
|
||||
|
||||
extern const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString;
|
||||
extern const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString;
|
||||
|
||||
|
||||
/* Object interface: IUnknown, ver. 0.0,
|
||||
GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
|
||||
|
||||
|
||||
/* Object interface: IDispatch, ver. 0.0,
|
||||
GUID={0x00020400,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
|
||||
|
||||
|
||||
/* Object interface: IMozillaBrowser, ver. 0.0,
|
||||
GUID={0x1339B54B,0x3453,0x11D2,{0x93,0xB9,0x00,0x00,0x00,0x00,0x00,0x00}} */
|
||||
|
||||
|
||||
extern const MIDL_STUB_DESC Object_StubDesc;
|
||||
|
||||
|
||||
extern const MIDL_SERVER_INFO IMozillaBrowser_ServerInfo;
|
||||
|
||||
#pragma code_seg(".orpc")
|
||||
|
||||
static const MIDL_STUB_DESC Object_StubDesc =
|
||||
{
|
||||
0,
|
||||
NdrOleAllocate,
|
||||
NdrOleFree,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
__MIDL_TypeFormatString.Format,
|
||||
0, /* -error bounds_check flag */
|
||||
0x20000, /* Ndr library version */
|
||||
0,
|
||||
0x303006e, /* MIDL Version 3.3.110 */
|
||||
0,
|
||||
0,
|
||||
0, /* Reserved1 */
|
||||
0, /* Reserved2 */
|
||||
0, /* Reserved3 */
|
||||
0, /* Reserved4 */
|
||||
0 /* Reserved5 */
|
||||
};
|
||||
|
||||
static const unsigned short IMozillaBrowser_FormatStringOffsetTable[] =
|
||||
{
|
||||
(unsigned short) -1,
|
||||
(unsigned short) -1,
|
||||
(unsigned short) -1,
|
||||
(unsigned short) -1,
|
||||
0
|
||||
};
|
||||
|
||||
static const MIDL_SERVER_INFO IMozillaBrowser_ServerInfo =
|
||||
{
|
||||
&Object_StubDesc,
|
||||
0,
|
||||
__MIDL_ProcFormatString.Format,
|
||||
&IMozillaBrowser_FormatStringOffsetTable[-3],
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
};
|
||||
|
||||
static const MIDL_STUBLESS_PROXY_INFO IMozillaBrowser_ProxyInfo =
|
||||
{
|
||||
&Object_StubDesc,
|
||||
__MIDL_ProcFormatString.Format,
|
||||
&IMozillaBrowser_FormatStringOffsetTable[-3],
|
||||
0,
|
||||
0,
|
||||
0
|
||||
};
|
||||
|
||||
CINTERFACE_PROXY_VTABLE(8) _IMozillaBrowserProxyVtbl =
|
||||
{
|
||||
&IMozillaBrowser_ProxyInfo,
|
||||
&IID_IMozillaBrowser,
|
||||
IUnknown_QueryInterface_Proxy,
|
||||
IUnknown_AddRef_Proxy,
|
||||
IUnknown_Release_Proxy ,
|
||||
0 /* (void *)-1 /* IDispatch::GetTypeInfoCount */ ,
|
||||
0 /* (void *)-1 /* IDispatch::GetTypeInfo */ ,
|
||||
0 /* (void *)-1 /* IDispatch::GetIDsOfNames */ ,
|
||||
0 /* IDispatch_Invoke_Proxy */ ,
|
||||
(void *)-1 /* IMozillaBrowser::get_Window */
|
||||
};
|
||||
|
||||
|
||||
static const PRPC_STUB_FUNCTION IMozillaBrowser_table[] =
|
||||
{
|
||||
STUB_FORWARDING_FUNCTION,
|
||||
STUB_FORWARDING_FUNCTION,
|
||||
STUB_FORWARDING_FUNCTION,
|
||||
STUB_FORWARDING_FUNCTION,
|
||||
NdrStubCall2
|
||||
};
|
||||
|
||||
CInterfaceStubVtbl _IMozillaBrowserStubVtbl =
|
||||
{
|
||||
&IID_IMozillaBrowser,
|
||||
&IMozillaBrowser_ServerInfo,
|
||||
8,
|
||||
&IMozillaBrowser_table[-3],
|
||||
CStdStubBuffer_DELEGATING_METHODS
|
||||
};
|
||||
|
||||
#pragma data_seg(".rdata")
|
||||
|
||||
#if !defined(__RPC_WIN32__)
|
||||
#error Invalid build platform for this stub.
|
||||
#endif
|
||||
|
||||
#if !(TARGET_IS_NT40_OR_LATER)
|
||||
#error You need a Windows NT 4.0 or later to run this stub because it uses these features:
|
||||
#error -Oif or -Oicf.
|
||||
#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
|
||||
#error This app will die there with the RPC_X_WRONG_STUB_VERSION error.
|
||||
#endif
|
||||
|
||||
|
||||
static const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString =
|
||||
{
|
||||
0,
|
||||
{
|
||||
|
||||
/* Procedure get_Window */
|
||||
|
||||
0x33, /* FC_AUTO_HANDLE */
|
||||
0x64, /* 100 */
|
||||
/* 2 */ NdrFcShort( 0x7 ), /* 7 */
|
||||
#ifndef _ALPHA_
|
||||
/* 4 */ NdrFcShort( 0xc ), /* x86, MIPS, PPC Stack size/offset = 12 */
|
||||
#else
|
||||
NdrFcShort( 0x18 ), /* Alpha Stack size/offset = 24 */
|
||||
#endif
|
||||
/* 6 */ NdrFcShort( 0x0 ), /* 0 */
|
||||
/* 8 */ NdrFcShort( 0x10 ), /* 16 */
|
||||
/* 10 */ 0x4, /* 4 */
|
||||
0x2, /* 2 */
|
||||
|
||||
/* Parameter phwnd */
|
||||
|
||||
/* 12 */ NdrFcShort( 0x2150 ), /* 8528 */
|
||||
#ifndef _ALPHA_
|
||||
/* 14 */ NdrFcShort( 0x4 ), /* x86, MIPS, PPC Stack size/offset = 4 */
|
||||
#else
|
||||
NdrFcShort( 0x8 ), /* Alpha Stack size/offset = 8 */
|
||||
#endif
|
||||
/* 16 */ 0x8, /* FC_LONG */
|
||||
0x0, /* 0 */
|
||||
|
||||
/* Return value */
|
||||
|
||||
/* 18 */ NdrFcShort( 0x70 ), /* 112 */
|
||||
#ifndef _ALPHA_
|
||||
/* 20 */ NdrFcShort( 0x8 ), /* x86, MIPS, PPC Stack size/offset = 8 */
|
||||
#else
|
||||
NdrFcShort( 0x10 ), /* Alpha Stack size/offset = 16 */
|
||||
#endif
|
||||
/* 22 */ 0x8, /* FC_LONG */
|
||||
0x0, /* 0 */
|
||||
|
||||
0x0
|
||||
}
|
||||
};
|
||||
|
||||
static const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString =
|
||||
{
|
||||
0,
|
||||
{
|
||||
0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
|
||||
/* 2 */ 0x8, /* FC_LONG */
|
||||
0x5c, /* FC_PAD */
|
||||
|
||||
0x0
|
||||
}
|
||||
};
|
||||
|
||||
const CInterfaceProxyVtbl * _MozillaControl_ProxyVtblList[] =
|
||||
{
|
||||
( CInterfaceProxyVtbl *) &_IMozillaBrowserProxyVtbl,
|
||||
0
|
||||
};
|
||||
|
||||
const CInterfaceStubVtbl * _MozillaControl_StubVtblList[] =
|
||||
{
|
||||
( CInterfaceStubVtbl *) &_IMozillaBrowserStubVtbl,
|
||||
0
|
||||
};
|
||||
|
||||
PCInterfaceName const _MozillaControl_InterfaceNamesList[] =
|
||||
{
|
||||
"IMozillaBrowser",
|
||||
0
|
||||
};
|
||||
|
||||
const IID * _MozillaControl_BaseIIDList[] =
|
||||
{
|
||||
&IID_IDispatch,
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
#define _MozillaControl_CHECK_IID(n) IID_GENERIC_CHECK_IID( _MozillaControl, pIID, n)
|
||||
|
||||
int __stdcall _MozillaControl_IID_Lookup( const IID * pIID, int * pIndex )
|
||||
{
|
||||
|
||||
if(!_MozillaControl_CHECK_IID(0))
|
||||
{
|
||||
*pIndex = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
const ExtendedProxyFileInfo MozillaControl_ProxyFileInfo =
|
||||
{
|
||||
(PCInterfaceProxyVtblList *) & _MozillaControl_ProxyVtblList,
|
||||
(PCInterfaceStubVtblList *) & _MozillaControl_StubVtblList,
|
||||
(const PCInterfaceName * ) & _MozillaControl_InterfaceNamesList,
|
||||
(const IID ** ) & _MozillaControl_BaseIIDList,
|
||||
& _MozillaControl_IID_Lookup,
|
||||
1,
|
||||
2
|
||||
};
|
|
@ -23,25 +23,37 @@ extern CComModule _Module;
|
|||
#include <atlcom.h>
|
||||
#include <atlctl.h>
|
||||
|
||||
/* Headers from NGLayout... */
|
||||
#include <malloc.h>
|
||||
#ifdef USE_NGPREF
|
||||
#include "nsIPref.h"
|
||||
#endif
|
||||
|
||||
#include "prtypes.h"
|
||||
#include "xp_core.h"
|
||||
#include "jscompat.h"
|
||||
|
||||
#include "prthread.h"
|
||||
#include "prprf.h"
|
||||
#include "plevent.h"
|
||||
#include "nsRepository.h"
|
||||
#include "nsWidgetsCID.h"
|
||||
#include "nsGfxCIID.h"
|
||||
#include "nsViewsCID.h"
|
||||
#include "nsString.h"
|
||||
|
||||
#include "nsGlobalVariables.h"
|
||||
#include "nsIWebShell.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsIDocumentObserver.h"
|
||||
#include "nsIStreamListener.h"
|
||||
#include "nsUnitConversion.h"
|
||||
#include "nsVoidArray.h"
|
||||
#include "nsCRT.h"
|
||||
#include "prthread.h"
|
||||
#include "prprf.h"
|
||||
#include "nsRepository.h"
|
||||
#include "nsWidgetsCID.h"
|
||||
#include "nsGfxCIID.h"
|
||||
#include "nsViewsCID.h"
|
||||
#include "nsString.h"
|
||||
#include "plevent.h"
|
||||
|
||||
#include "BrowserDiagnostics.h"
|
||||
#include "MozillaControl.h"
|
||||
#include "WebShellContainer.h"
|
||||
#include "MozillaBrowser.h"
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
|
||||
|
|
|
@ -4,10 +4,12 @@
|
|||
|
||||
|
||||
static NS_DEFINE_IID(kIWebShellContainerIID, NS_IWEB_SHELL_CONTAINER_IID);
|
||||
static NS_DEFINE_IID(kIStreamObserverIID, NS_ISTREAMOBSERVER_IID);
|
||||
|
||||
|
||||
CWebShellContainer::CWebShellContainer()
|
||||
CWebShellContainer::CWebShellContainer(CMozillaBrowser *pOwner)
|
||||
{
|
||||
m_pOwner = pOwner;
|
||||
}
|
||||
|
||||
|
||||
|
@ -15,6 +17,10 @@ CWebShellContainer::~CWebShellContainer()
|
|||
{
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// nsISupports implementation
|
||||
|
||||
NS_IMPL_ADDREF(CWebShellContainer)
|
||||
NS_IMPL_RELEASE(CWebShellContainer)
|
||||
|
||||
|
@ -31,13 +37,13 @@ nsresult CWebShellContainer::QueryInterface(const nsIID& aIID, void** aInstanceP
|
|||
*aInstancePtrResult = (void*) ((nsIBrowserWindow*)this);
|
||||
AddRef();
|
||||
return NS_OK;
|
||||
}
|
||||
} */
|
||||
if (aIID.Equals(kIStreamObserverIID)) {
|
||||
*aInstancePtrResult = (void*) ((nsIStreamObserver*)this);
|
||||
AddRef();
|
||||
return NS_OK;
|
||||
}
|
||||
*/
|
||||
|
||||
if (aIID.Equals(kIWebShellContainerIID)) {
|
||||
*aInstancePtrResult = (void*) ((nsIWebShellContainer*)this);
|
||||
AddRef();
|
||||
|
@ -57,47 +63,63 @@ nsresult CWebShellContainer::QueryInterface(const nsIID& aIID, void** aInstanceP
|
|||
return NS_NOINTERFACE;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// nsIWebShellContainer implementation
|
||||
|
||||
NS_IMETHODIMP
|
||||
CWebShellContainer::WillLoadURL(nsIWebShell* aShell, const PRUnichar* aURL, nsLoadType aReason)
|
||||
{
|
||||
// if (mStatus) {
|
||||
// nsAutoString url("Connecting to ");
|
||||
// url.Append(aURL);
|
||||
// mStatus->SetText(url);
|
||||
// }
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
CWebShellContainer::BeginLoadURL(nsIWebShell* aShell, const PRUnichar* aURL)
|
||||
{
|
||||
// if (mThrobber) {
|
||||
// mThrobber->Start();
|
||||
// mLocation->SetText(aURL);
|
||||
// }
|
||||
USES_CONVERSION;
|
||||
OLECHAR *pszURL = W2OLE((WCHAR *)aURL);
|
||||
BSTR bstrURL = SysAllocString(pszURL);
|
||||
BSTR bstrTargetFrameName = NULL;
|
||||
BSTR bstrHeaders = NULL;
|
||||
VARIANT *pvPostData = NULL;
|
||||
VARIANT_BOOL bCancel = VARIANT_FALSE;
|
||||
long lFlags = 0;
|
||||
|
||||
m_pOwner->Fire_BeforeNavigate(bstrURL, lFlags, bstrTargetFrameName, pvPostData, bstrHeaders, &bCancel);
|
||||
if (bCancel == VARIANT_TRUE)
|
||||
{
|
||||
// TODO cancel browsing somehow
|
||||
}
|
||||
|
||||
SysFreeString(bstrURL);
|
||||
SysFreeString(bstrTargetFrameName);
|
||||
SysFreeString(bstrHeaders);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
CWebShellContainer::ProgressLoadURL(nsIWebShell* aShell, const PRUnichar* aURL, PRInt32 aProgress, PRInt32 aProgressMax)
|
||||
{
|
||||
m_pOwner->Fire_ProgressChange(aProgress, aProgressMax);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
CWebShellContainer::EndLoadURL(nsIWebShell* aShell, const PRUnichar* aURL, PRInt32 aStatus)
|
||||
{
|
||||
// if (mThrobber) {
|
||||
// mThrobber->Stop();
|
||||
// }
|
||||
USES_CONVERSION;
|
||||
OLECHAR *pszURL = W2OLE((WCHAR *) aURL);
|
||||
BSTR bstrURL = SysAllocString(pszURL);
|
||||
m_pOwner->Fire_NavigateComplete(bstrURL);
|
||||
SysFreeString(bstrURL);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
CWebShellContainer::NewWebShell(nsIWebShell *&aNewWebShell)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
rv = NS_ERROR_OUT_OF_MEMORY;
|
||||
nsresult rv = NS_ERROR_OUT_OF_MEMORY;
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
@ -106,3 +128,32 @@ CWebShellContainer::FindWebShellWithName(const PRUnichar* aName, nsIWebShell*& a
|
|||
{
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// nsIStreamObserver implementation
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
CWebShellContainer::OnStartBinding(nsIURL* aURL, const char *aContentType)
|
||||
{
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
CWebShellContainer::OnProgress(nsIURL* aURL, PRInt32 aProgress, PRInt32 aProgressMax)
|
||||
{
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
CWebShellContainer::OnStatus(nsIURL* aURL, const nsString &aMsg)
|
||||
{
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
CWebShellContainer::OnStopBinding(nsIURL* aURL, PRInt32 aStatus, const nsString &aMsg)
|
||||
{
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
|
|
@ -1,17 +1,21 @@
|
|||
#ifndef WEBSHELLCONTAINER_H
|
||||
#define WEBSHELLCONTAINER_H
|
||||
|
||||
class CMozillaBrowser;
|
||||
|
||||
class CWebShellContainer :
|
||||
public nsIWebShellContainer
|
||||
public nsIWebShellContainer,
|
||||
public nsIStreamObserver
|
||||
{
|
||||
public:
|
||||
CWebShellContainer();
|
||||
CWebShellContainer(CMozillaBrowser *pOwner);
|
||||
protected:
|
||||
virtual ~CWebShellContainer();
|
||||
|
||||
// Protected members
|
||||
protected:
|
||||
nsString m_sTitle;
|
||||
CMozillaBrowser *m_pOwner;
|
||||
|
||||
public:
|
||||
// nsISupports
|
||||
|
@ -23,7 +27,13 @@ public:
|
|||
NS_IMETHOD ProgressLoadURL(nsIWebShell* aShell, const PRUnichar* aURL, PRInt32 aProgress, PRInt32 aProgressMax);
|
||||
NS_IMETHOD EndLoadURL(nsIWebShell* aShell, const PRUnichar* aURL, PRInt32 aStatus);
|
||||
NS_IMETHOD NewWebShell(nsIWebShell *&aNewWebShell);
|
||||
NS_IMETHOD FindWebShellWithName(const PRUnichar* aName, nsIWebShell*& aResult);
|
||||
NS_IMETHOD FindWebShellWithName(const PRUnichar* aName, nsIWebShell*& aResult);
|
||||
|
||||
// nsIStreamObserver
|
||||
NS_IMETHOD OnStartBinding(nsIURL* aURL, const char *aContentType);
|
||||
NS_IMETHOD OnProgress(nsIURL* aURL, PRInt32 aProgress, PRInt32 aProgressMax);
|
||||
NS_IMETHOD OnStatus(nsIURL* aURL, const nsString &aMsg);
|
||||
NS_IMETHOD OnStopBinding(nsIURL* aURL, PRInt32 aStatus, const nsString &aMsg);
|
||||
};
|
||||
|
||||
#endif
|
|
@ -28,17 +28,17 @@ MAKE_OBJ_TYPE = DLL
|
|||
DLL=.\$(OBJDIR)\$(DLLNAME).dll
|
||||
RESFILE = $(DLLNAME).res
|
||||
DEFFILE = $(DLLNAME).def
|
||||
OS_CFLAGS = /D "WIN32"
|
||||
OS_CFLAGS = /D "WIN32"
|
||||
|
||||
OBJS = \
|
||||
OBJS = \
|
||||
.\$(OBJDIR)\StdAfx.obj \
|
||||
.\$(OBJDIR)\nsSetupRegistry.obj \
|
||||
.\$(OBJDIR)\nsSetupRegistry.obj \
|
||||
.\$(OBJDIR)\MozillaControl.obj \
|
||||
.\$(OBJDIR)\MozillaBrowser.obj \
|
||||
.\$(OBJDIR)\WebShellContainer.obj \
|
||||
$(NULL)
|
||||
|
||||
LINCS= \
|
||||
LINCS= \
|
||||
-I$(PUBLIC)\raptor \
|
||||
-I$(PUBLIC)\xpcom \
|
||||
-I$(PUBLIC)\dom \
|
||||
|
@ -82,7 +82,7 @@ MozillaControl_i.c MozillaControl.h: MozillaControl.idl
|
|||
MozillaControl.cpp \
|
||||
MozillaBrowser.cpp \
|
||||
WebShellContainer.cpp \
|
||||
StdAfx.cpp: StdAfx.h MozillaControl.h
|
||||
StdAfx.cpp: StdAfx.h MozillaControl.h MozillaBrowser.h WebShellContainer.h
|
||||
|
||||
clobber::
|
||||
regsvr32 /s /c /u $(DIST)\bin\$(DLLNAME).dll
|
||||
|
|
|
@ -4,12 +4,13 @@
|
|||
//
|
||||
#define IDS_PROJNAME 100
|
||||
#define IDR_MOZILLABROWSER 101
|
||||
#define IDI_MOZILLABROWSER 201
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 201
|
||||
#define _APS_NEXT_RESOURCE_VALUE 202
|
||||
#define _APS_NEXT_COMMAND_VALUE 32768
|
||||
#define _APS_NEXT_CONTROL_VALUE 201
|
||||
#define _APS_NEXT_SYMED_VALUE 102
|
||||
|
|
Загрузка…
Ссылка в новой задаче