зеркало из https://github.com/mozilla/pjs.git
NOT PART OF BUILD (Photon port only)
- added new prompt service - new history resource.
This commit is contained in:
Родитель
ccb8817a18
Коммит
afd9368f28
|
@ -33,6 +33,7 @@ CPPSRCS = \
|
||||||
PhMozEmbedStream.cpp \
|
PhMozEmbedStream.cpp \
|
||||||
PtMozilla.cpp \
|
PtMozilla.cpp \
|
||||||
WebBrowserContainer.cpp \
|
WebBrowserContainer.cpp \
|
||||||
|
PromptService.cpp \
|
||||||
nsUnknownContentTypeHandler.cpp
|
nsUnknownContentTypeHandler.cpp
|
||||||
|
|
||||||
SHARED_LIBRARY_LIBS= \
|
SHARED_LIBRARY_LIBS= \
|
||||||
|
|
|
@ -0,0 +1,331 @@
|
||||||
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||||
|
*
|
||||||
|
* 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 Netscape are
|
||||||
|
* Copyright (C) 2001 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* PromptService is intended to override the default Mozilla PromptService,
|
||||||
|
giving nsIPrompt implementations of our own design, rather than using
|
||||||
|
Mozilla's. Do this by building this into a component and registering the
|
||||||
|
factory with the same CID/ContractID as Mozilla's (see MfcEmbed.cpp).
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "PromptService.h"
|
||||||
|
#include "nsCOMPtr.h"
|
||||||
|
#include "nsMemory.h"
|
||||||
|
#include "nsString.h"
|
||||||
|
#include "nsIDOMWindow.h"
|
||||||
|
#include "nsIEmbeddingSiteWindow.h"
|
||||||
|
#include "nsIFactory.h"
|
||||||
|
#include "nsIPromptService.h"
|
||||||
|
#include "nsIServiceManager.h"
|
||||||
|
#include "nsIWebBrowserChrome.h"
|
||||||
|
#include "nsIWindowWatcher.h"
|
||||||
|
#include "PtMozilla.h"
|
||||||
|
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
// CPromptService
|
||||||
|
//*****************************************************************************
|
||||||
|
|
||||||
|
class CPromptService: public nsIPromptService {
|
||||||
|
public:
|
||||||
|
CPromptService();
|
||||||
|
virtual ~CPromptService();
|
||||||
|
|
||||||
|
NS_DECL_ISUPPORTS
|
||||||
|
NS_DECL_NSIPROMPTSERVICE
|
||||||
|
|
||||||
|
private:
|
||||||
|
nsCOMPtr<nsIWindowWatcher> mWWatch;
|
||||||
|
CWebBrowserContainer *GetWebBrowser(nsIDOMWindow *aWindow);
|
||||||
|
};
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
|
||||||
|
NS_IMPL_ISUPPORTS1(CPromptService, nsIPromptService)
|
||||||
|
|
||||||
|
CPromptService::CPromptService() :
|
||||||
|
mWWatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")) {
|
||||||
|
NS_INIT_REFCNT();
|
||||||
|
}
|
||||||
|
|
||||||
|
CPromptService::~CPromptService() {
|
||||||
|
}
|
||||||
|
|
||||||
|
CWebBrowserContainer *CPromptService::GetWebBrowser(nsIDOMWindow *aWindow)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIWebBrowserChrome> chrome;
|
||||||
|
CWebBrowserContainer *val = 0;
|
||||||
|
|
||||||
|
nsCOMPtr<nsIWindowWatcher> wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1"));
|
||||||
|
if (!wwatch) return nsnull;
|
||||||
|
|
||||||
|
if( wwatch ) {
|
||||||
|
nsCOMPtr<nsIDOMWindow> fosterParent;
|
||||||
|
if (!aWindow) { // it will be a dependent window. try to find a foster parent.
|
||||||
|
wwatch->GetActiveWindow(getter_AddRefs(fosterParent));
|
||||||
|
aWindow = fosterParent;
|
||||||
|
}
|
||||||
|
nsresult rv = wwatch->GetChromeForWindow(aWindow, getter_AddRefs(chrome));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (chrome) {
|
||||||
|
nsCOMPtr<nsIEmbeddingSiteWindow> site(do_QueryInterface(chrome));
|
||||||
|
if (site) {
|
||||||
|
site->GetSiteWindow(reinterpret_cast<void **>(&val));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NS_IMETHODIMP CPromptService::Alert(nsIDOMWindow *parent, const PRUnichar *dialogTitle,
|
||||||
|
const PRUnichar *text)
|
||||||
|
{
|
||||||
|
nsString mTitle(dialogTitle);
|
||||||
|
nsString mText(text);
|
||||||
|
CWebBrowserContainer *w = GetWebBrowser( parent );
|
||||||
|
w->InvokeDialogCallback(Pt_MOZ_DIALOG_ALERT, mTitle.ToNewCString(), mText.ToNewCString(), nsnull, nsnull);
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP CPromptService::AlertCheck(nsIDOMWindow *parent,
|
||||||
|
const PRUnichar *dialogTitle,
|
||||||
|
const PRUnichar *text,
|
||||||
|
const PRUnichar *checkboxMsg,
|
||||||
|
PRBool *checkValue)
|
||||||
|
{
|
||||||
|
nsString mTitle(dialogTitle);
|
||||||
|
nsString mText(text);
|
||||||
|
nsString mMsg(checkboxMsg);
|
||||||
|
int ret;
|
||||||
|
CWebBrowserContainer *w = GetWebBrowser( parent );
|
||||||
|
|
||||||
|
w->InvokeDialogCallback(Pt_MOZ_DIALOG_ALERT, mTitle.ToNewCString(), mText.ToNewCString(), \
|
||||||
|
mMsg.ToNewCString(), &ret);
|
||||||
|
*checkValue = ret;
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NS_IMETHODIMP CPromptService::Confirm(nsIDOMWindow *parent,
|
||||||
|
const PRUnichar *dialogTitle,
|
||||||
|
const PRUnichar *text,
|
||||||
|
PRBool *_retval)
|
||||||
|
{
|
||||||
|
nsString mTitle(dialogTitle);
|
||||||
|
nsString mText(text);
|
||||||
|
CWebBrowserContainer *w = GetWebBrowser( parent );
|
||||||
|
|
||||||
|
if (w->InvokeDialogCallback(Pt_MOZ_DIALOG_CONFIRM, mTitle.ToNewCString(), mText.ToNewCString(), nsnull, nsnull) == Pt_CONTINUE)
|
||||||
|
*_retval = PR_TRUE;
|
||||||
|
else
|
||||||
|
*_retval = PR_FALSE;
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP CPromptService::ConfirmCheck(nsIDOMWindow *parent,
|
||||||
|
const PRUnichar *dialogTitle,
|
||||||
|
const PRUnichar *text,
|
||||||
|
const PRUnichar *checkboxMsg,
|
||||||
|
PRBool *checkValue,
|
||||||
|
PRBool *_retval)
|
||||||
|
{
|
||||||
|
// TODO implement proper confirmation checkbox dialog
|
||||||
|
return Confirm(parent, dialogTitle, text, _retval);
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP CPromptService::Prompt(nsIDOMWindow *parent,
|
||||||
|
const PRUnichar *dialogTitle,
|
||||||
|
const PRUnichar *text,
|
||||||
|
PRUnichar **value,
|
||||||
|
const PRUnichar *checkboxMsg,
|
||||||
|
PRBool *checkValue,
|
||||||
|
PRBool *_retval)
|
||||||
|
{
|
||||||
|
nsString mTitle(dialogTitle);
|
||||||
|
nsString mText(text);
|
||||||
|
nsString mMsg(checkboxMsg);
|
||||||
|
int ret;
|
||||||
|
CWebBrowserContainer *w = GetWebBrowser( parent );
|
||||||
|
|
||||||
|
|
||||||
|
if (w->InvokeDialogCallback(Pt_MOZ_DIALOG_CONFIRM, mTitle.ToNewCString(), mText.ToNewCString(), \
|
||||||
|
mMsg.ToNewCString(), &ret) == Pt_CONTINUE)
|
||||||
|
*_retval = PR_TRUE;
|
||||||
|
else
|
||||||
|
*_retval = PR_FALSE;
|
||||||
|
*checkValue = ret;
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP CPromptService::PromptUsernameAndPassword(nsIDOMWindow *parent,
|
||||||
|
const PRUnichar *dialogTitle,
|
||||||
|
const PRUnichar *text,
|
||||||
|
PRUnichar **username,
|
||||||
|
PRUnichar **password,
|
||||||
|
const PRUnichar *checkboxMsg,
|
||||||
|
PRBool *checkValue,
|
||||||
|
PRBool *_retval)
|
||||||
|
{
|
||||||
|
CWebBrowserContainer *w = GetWebBrowser( parent );
|
||||||
|
PtMozillaWidget_t *moz = (PtMozillaWidget_t *) w->m_pOwner;
|
||||||
|
PtCallbackList_t *cb;
|
||||||
|
PtCallbackInfo_t cbinfo;
|
||||||
|
PtMozillaAuthenticateCb_t auth;
|
||||||
|
nsString mTitle(dialogTitle);
|
||||||
|
nsString mRealm(checkboxMsg);
|
||||||
|
|
||||||
|
/* ATENTIE */ printf( "CWebBrowserContainer::PromptUsernameAndPassword\n" );
|
||||||
|
|
||||||
|
if (!moz->auth_cb)
|
||||||
|
return NS_OK;
|
||||||
|
|
||||||
|
cb = moz->auth_cb;
|
||||||
|
memset(&cbinfo, 0, sizeof(cbinfo));
|
||||||
|
cbinfo.reason = Pt_CB_MOZ_AUTHENTICATE;
|
||||||
|
cbinfo.cbdata = &auth;
|
||||||
|
|
||||||
|
memset(&auth, 0, sizeof(PtMozillaAuthenticateCb_t));
|
||||||
|
auth.title = mTitle.ToNewCString();
|
||||||
|
auth.realm = mRealm.ToNewCString();
|
||||||
|
|
||||||
|
if (PtInvokeCallbackList(cb, (PtWidget_t *)moz, &cbinfo) == Pt_CONTINUE)
|
||||||
|
{
|
||||||
|
nsCString mUser(auth.user);
|
||||||
|
nsCString mPass(auth.pass);
|
||||||
|
*username = mUser.ToNewUnicode();
|
||||||
|
*password = mPass.ToNewUnicode();
|
||||||
|
*_retval = PR_TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
*_retval = PR_FALSE;
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP CPromptService::PromptPassword(nsIDOMWindow *parent,
|
||||||
|
const PRUnichar *dialogTitle,
|
||||||
|
const PRUnichar *text,
|
||||||
|
PRUnichar **password,
|
||||||
|
const PRUnichar *checkboxMsg,
|
||||||
|
PRBool *checkValue,
|
||||||
|
PRBool *_retval)
|
||||||
|
{
|
||||||
|
/* ATENTIE */ printf( "CWebBrowserContainer::PromptPassword\n" );
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP CPromptService::Select(nsIDOMWindow *parent,
|
||||||
|
const PRUnichar *dialogTitle,
|
||||||
|
const PRUnichar *text, PRUint32 count,
|
||||||
|
const PRUnichar **selectList,
|
||||||
|
PRInt32 *outSelection,
|
||||||
|
PRBool *_retval)
|
||||||
|
{
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP CPromptService::ConfirmEx(nsIDOMWindow *parent,
|
||||||
|
const PRUnichar *dialogTitle,
|
||||||
|
const PRUnichar *text,
|
||||||
|
PRUint32 buttonFlags,
|
||||||
|
const PRUnichar *button0Title,
|
||||||
|
const PRUnichar *button1Title,
|
||||||
|
const PRUnichar *button2Title,
|
||||||
|
const PRUnichar *checkMsg,
|
||||||
|
PRBool *checkValue,
|
||||||
|
PRInt32 *buttonPressed)
|
||||||
|
{
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
// CPromptServiceFactory
|
||||||
|
//*****************************************************************************
|
||||||
|
|
||||||
|
class CPromptServiceFactory : public nsIFactory {
|
||||||
|
public:
|
||||||
|
NS_DECL_ISUPPORTS
|
||||||
|
NS_DECL_NSIFACTORY
|
||||||
|
|
||||||
|
CPromptServiceFactory();
|
||||||
|
virtual ~CPromptServiceFactory();
|
||||||
|
};
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
|
||||||
|
NS_IMPL_ISUPPORTS1(CPromptServiceFactory, nsIFactory)
|
||||||
|
|
||||||
|
CPromptServiceFactory::CPromptServiceFactory() {
|
||||||
|
|
||||||
|
NS_INIT_ISUPPORTS();
|
||||||
|
}
|
||||||
|
|
||||||
|
CPromptServiceFactory::~CPromptServiceFactory() {
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP CPromptServiceFactory::CreateInstance(nsISupports *aOuter, const nsIID & aIID, void **aResult)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aResult);
|
||||||
|
|
||||||
|
*aResult = NULL;
|
||||||
|
CPromptService *inst = new CPromptService;
|
||||||
|
if (!inst)
|
||||||
|
return NS_ERROR_OUT_OF_MEMORY;
|
||||||
|
|
||||||
|
nsresult rv = inst->QueryInterface(aIID, aResult);
|
||||||
|
if (rv != NS_OK) {
|
||||||
|
// We didn't get the right interface, so clean up
|
||||||
|
delete inst;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP CPromptServiceFactory::LockFactory(PRBool lock)
|
||||||
|
{
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
|
||||||
|
void InitPromptService( ) {
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult NS_NewPromptServiceFactory(nsIFactory** aFactory)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aFactory);
|
||||||
|
*aFactory = nsnull;
|
||||||
|
|
||||||
|
CPromptServiceFactory *result = new CPromptServiceFactory;
|
||||||
|
if (!result)
|
||||||
|
return NS_ERROR_OUT_OF_MEMORY;
|
||||||
|
|
||||||
|
NS_ADDREF(result);
|
||||||
|
*aFactory = result;
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||||
|
*
|
||||||
|
* 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 Netscape are
|
||||||
|
* Copyright (C) 2001 Netscape Communications Corporation. All
|
||||||
|
* Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __PromptService_h
|
||||||
|
#define __PromptService_h
|
||||||
|
|
||||||
|
#include "nsError.h"
|
||||||
|
|
||||||
|
class nsIFactory;
|
||||||
|
|
||||||
|
extern "C" NS_EXPORT nsresult NS_NewPromptServiceFactory(nsIFactory** aFactory);
|
||||||
|
#define kPromptServiceFactoryFuncName "NS_NewPromptServiceFactory"
|
||||||
|
|
||||||
|
extern "C" NS_EXPORT void InitPromptService( );
|
||||||
|
#define kPromptServiceInitFuncName "InitPromptService"
|
||||||
|
|
||||||
|
#endif
|
|
@ -55,6 +55,7 @@
|
||||||
#include "nsNetUtil.h"
|
#include "nsNetUtil.h"
|
||||||
#include "nsMPFileLocProvider.h"
|
#include "nsMPFileLocProvider.h"
|
||||||
#include "nsIFocusController.h"
|
#include "nsIFocusController.h"
|
||||||
|
#include "PromptService.h"
|
||||||
|
|
||||||
|
|
||||||
#include "nsIViewManager.h"
|
#include "nsIViewManager.h"
|
||||||
|
@ -76,7 +77,6 @@
|
||||||
#define NS_TO_PH_RGB(ns) (ns & 0xff) << 16 | (ns & 0xff00) | ((ns >> 16) & 0xff)
|
#define NS_TO_PH_RGB(ns) (ns & 0xff) << 16 | (ns & 0xff00) | ((ns >> 16) & 0xff)
|
||||||
#define PH_TO_NS_RGB(ns) (ns & 0xff) << 16 | (ns & 0xff00) | ((ns >> 16) & 0xff)
|
#define PH_TO_NS_RGB(ns) (ns & 0xff) << 16 | (ns & 0xff00) | ((ns >> 16) & 0xff)
|
||||||
|
|
||||||
|
|
||||||
#define NS_EXTERN_IID(_name) \
|
#define NS_EXTERN_IID(_name) \
|
||||||
extern const nsIID _name;
|
extern const nsIID _name;
|
||||||
|
|
||||||
|
@ -84,7 +84,6 @@
|
||||||
NS_EXTERN_IID(kHTMLEditorCID);
|
NS_EXTERN_IID(kHTMLEditorCID);
|
||||||
NS_EXTERN_IID(kCookieServiceCID);
|
NS_EXTERN_IID(kCookieServiceCID);
|
||||||
NS_EXTERN_IID(kWindowCID);
|
NS_EXTERN_IID(kWindowCID);
|
||||||
|
|
||||||
static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID);
|
static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID);
|
||||||
static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID);
|
static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID);
|
||||||
static NS_DEFINE_CID(kAppShellServiceCID, NS_APPSHELL_SERVICE_CID);
|
static NS_DEFINE_CID(kAppShellServiceCID, NS_APPSHELL_SERVICE_CID);
|
||||||
|
@ -92,6 +91,10 @@ static NS_DEFINE_CID(kPrefCID, NS_PREF_CID);
|
||||||
static NS_DEFINE_CID(kSimpleURICID, NS_SIMPLEURI_CID);
|
static NS_DEFINE_CID(kSimpleURICID, NS_SIMPLEURI_CID);
|
||||||
static NS_DEFINE_CID(kPrintOptionsCID, NS_PRINTOPTIONS_CID);
|
static NS_DEFINE_CID(kPrintOptionsCID, NS_PRINTOPTIONS_CID);
|
||||||
|
|
||||||
|
#define NS_PROMPTSERVICE_CID \
|
||||||
|
{0xa2112d6a, 0x0e28, 0x421f, {0xb4, 0x6a, 0x25, 0xc0, 0xb3, 0x8, 0xcb, 0xd0}}
|
||||||
|
static NS_DEFINE_CID(kPromptServiceCID, NS_PROMPTSERVICE_CID);
|
||||||
|
|
||||||
static void mozilla_set_pref( PtWidget_t *widget, char *option, char *value );
|
static void mozilla_set_pref( PtWidget_t *widget, char *option, char *value );
|
||||||
static void mozilla_get_pref( PtWidget_t *widget, char *option, char *value );
|
static void mozilla_get_pref( PtWidget_t *widget, char *option, char *value );
|
||||||
|
|
||||||
|
@ -114,9 +117,19 @@ static void MozCreateWindow(PtMozillaWidget_t *moz)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
//moz->MyBrowser->WebBrowser->SetContainerWindow(NS_STATIC_CAST(nsIWebBrowserChrome*, this));
|
|
||||||
//nsCOMPtr<nsIDocShellTreeItem> dsti = do_QueryInterface(moz->MyBrowser->WebBrowser);
|
// Create the container object
|
||||||
//dsti->SetItemType(nsIDocShellTreeItem::typeContentWrapper);
|
moz->MyBrowser->WebBrowserContainer = new CWebBrowserContainer((PtWidget_t *)moz);
|
||||||
|
if (moz->MyBrowser->WebBrowserContainer == NULL) {
|
||||||
|
printf("Could not create webbrowsercontainer\n");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
moz->MyBrowser->WebBrowserContainer->AddRef();
|
||||||
|
|
||||||
|
|
||||||
|
moz->MyBrowser->WebBrowser->SetContainerWindow( NS_STATIC_CAST( nsIWebBrowserChrome*, moz->MyBrowser->WebBrowserContainer ) );
|
||||||
|
//nsCOMPtr<nsIDocShellTreeItem> dsti = do_QueryInterface(moz->MyBrowser->WebBrowser);
|
||||||
|
//dsti->SetItemType(nsIDocShellTreeItem::typeContentWrapper);
|
||||||
|
|
||||||
// Create the webbrowser window
|
// Create the webbrowser window
|
||||||
moz->MyBrowser->WebBrowserAsWin = do_QueryInterface(moz->MyBrowser->WebBrowser);
|
moz->MyBrowser->WebBrowserAsWin = do_QueryInterface(moz->MyBrowser->WebBrowser);
|
||||||
|
@ -128,29 +141,21 @@ static void MozCreateWindow(PtMozillaWidget_t *moz)
|
||||||
// webBrowserAsSetup->SetProperty(nsIWebBrowserSetup::SETUP_ALLOW_PLUGINS, aAllowPlugins);
|
// webBrowserAsSetup->SetProperty(nsIWebBrowserSetup::SETUP_ALLOW_PLUGINS, aAllowPlugins);
|
||||||
// webBrowserAsSetup->SetProperty(nsIWebBrowserSetup::SETUP_CONTAINS_CHROME, PR_TRUE);
|
// webBrowserAsSetup->SetProperty(nsIWebBrowserSetup::SETUP_CONTAINS_CHROME, PR_TRUE);
|
||||||
|
|
||||||
// Create the container object
|
|
||||||
moz->MyBrowser->WebBrowserContainer = new CWebBrowserContainer((PtWidget_t *)moz);
|
|
||||||
if (moz->MyBrowser->WebBrowserContainer == NULL)
|
|
||||||
{
|
|
||||||
printf("Could not create webbrowsercontainer\n");
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
moz->MyBrowser->WebBrowserContainer->AddRef();
|
|
||||||
|
|
||||||
// Set up the web shell
|
|
||||||
moz->MyBrowser->WebBrowser->SetParentURIContentListener(moz->MyBrowser->WebBrowserContainer);
|
|
||||||
|
|
||||||
// XXX delete when tree owner is not necessary (to receive context menu events)
|
// Set up the web shell
|
||||||
nsCOMPtr<nsIDocShellTreeItem> browserAsItem = do_QueryInterface(moz->MyBrowser->WebBrowser);
|
// ATENTIE moz->MyBrowser->WebBrowser->SetParentURIContentListener( (nsIURIContentListener*) moz );
|
||||||
browserAsItem->SetTreeOwner(NS_STATIC_CAST(nsIDocShellTreeOwner *, moz->MyBrowser->WebBrowserContainer));
|
|
||||||
|
// XXX delete when tree owner is not necessary (to receive context menu events)
|
||||||
|
nsCOMPtr<nsIDocShellTreeItem> browserAsItem = do_QueryInterface(moz->MyBrowser->WebBrowser);
|
||||||
|
browserAsItem->SetTreeOwner(NS_STATIC_CAST(nsIDocShellTreeOwner *, moz->MyBrowser->WebBrowserContainer));
|
||||||
|
|
||||||
// XXX delete when docshell becomes inaccessible
|
// XXX delete when docshell becomes inaccessible
|
||||||
moz->MyBrowser->rootDocShell = do_GetInterface(moz->MyBrowser->WebBrowser);
|
moz->MyBrowser->rootDocShell = do_GetInterface(moz->MyBrowser->WebBrowser);
|
||||||
if (moz->MyBrowser->rootDocShell == nsnull)
|
if (moz->MyBrowser->rootDocShell == nsnull) {
|
||||||
{
|
printf("Could not get root docshell object\n");
|
||||||
printf("Could not get root docshell object\n");
|
exit(-1);
|
||||||
exit(-1);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
nsServiceManager::GetService(kPrefCID, NS_GET_IID(nsIPref), (nsISupports **)&(moz->MyBrowser->mPrefs));
|
nsServiceManager::GetService(kPrefCID, NS_GET_IID(nsIPref), (nsISupports **)&(moz->MyBrowser->mPrefs));
|
||||||
|
|
||||||
|
@ -523,18 +528,18 @@ static void mozilla_modify( PtWidget_t *widget, PtArg_t const *argt ) {
|
||||||
nsCOMPtr<nsIDOMWindow> window;
|
nsCOMPtr<nsIDOMWindow> window;
|
||||||
moz->MyBrowser->WebBrowser->GetContentDOMWindow(getter_AddRefs(window));
|
moz->MyBrowser->WebBrowser->GetContentDOMWindow(getter_AddRefs(window));
|
||||||
nsCOMPtr<nsIWebBrowserPrint> print( do_GetInterface( moz->MyBrowser->WebBrowser ) );
|
nsCOMPtr<nsIWebBrowserPrint> print( do_GetInterface( moz->MyBrowser->WebBrowser ) );
|
||||||
|
|
||||||
|
|
||||||
WWWRequest *pPageInfo = ( WWWRequest * ) argt->value;
|
WWWRequest *pPageInfo = ( WWWRequest * ) argt->value;
|
||||||
PpPrintContext_t *pc = moz_construct_print_context( pPageInfo );
|
PpPrintContext_t *pc = moz_construct_print_context( pPageInfo );
|
||||||
|
|
||||||
nsresult rv;
|
nsresult rv;
|
||||||
nsCOMPtr<nsIPrintOptions> printService =
|
nsCOMPtr<nsIPrintOptions> printService =
|
||||||
do_GetService(kPrintOptionsCID, &rv);
|
do_GetService(kPrintOptionsCID, &rv);
|
||||||
printService->SetEndPageRange( (PRInt32) pc ); /* use SetEndPageRange/GetEndPageRange to convey the print context */
|
printService->SetEndPageRange( (PRInt32) pc ); /* use SetEndPageRange/GetEndPageRange to convey the print context */
|
||||||
print->Print( window, printService, moz->MyBrowser->WebBrowserContainer );
|
print->Print( window, printService, moz->MyBrowser->WebBrowserContainer );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Pt_ARG_MOZ_OPTION:
|
case Pt_ARG_MOZ_OPTION:
|
||||||
mozilla_set_pref( widget, (char*)argt->len, (char*)argt->value );
|
mozilla_set_pref( widget, (char*)argt->len, (char*)argt->value );
|
||||||
|
@ -741,6 +746,34 @@ static int mozilla_get_info(PtWidget_t *widget, PtArg_t *argt)
|
||||||
strcpy( (char*)argt->value, s );
|
strcpy( (char*)argt->value, s );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Pt_ARG_MOZ_GET_HISTORY: {
|
||||||
|
WWWRequest *req = ( WWWRequest * ) argt->len;
|
||||||
|
PtWebClientHistoryData_t *HistoryReplyBuf = (PtWebClientHistoryData_t *) argt->value;
|
||||||
|
int i, j;
|
||||||
|
PRInt32 total;
|
||||||
|
moz->MyBrowser->mSessionHistory->GetCount( &total );
|
||||||
|
|
||||||
|
for( i=total-2, j=0; i>=0 && j<req->History.num; i--, j++) {
|
||||||
|
nsIHistoryEntry *entry;
|
||||||
|
moz->MyBrowser->mSessionHistory->GetEntryAtIndex( i, PR_FALSE, &entry );
|
||||||
|
|
||||||
|
PRUnichar *title;
|
||||||
|
nsIURI *url;
|
||||||
|
entry->GetTitle( &title );
|
||||||
|
entry->GetURI( &url );
|
||||||
|
|
||||||
|
nsString stitle( title );
|
||||||
|
strncpy( HistoryReplyBuf[j].title, stitle.ToNewCString(), 127 );
|
||||||
|
HistoryReplyBuf[j].title[127] = '\0';
|
||||||
|
|
||||||
|
char *urlspec;
|
||||||
|
url->GetSpec( &urlspec );
|
||||||
|
strcpy( HistoryReplyBuf[j].url, urlspec );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (Pt_CONTINUE);
|
return (Pt_CONTINUE);
|
||||||
|
@ -1180,6 +1213,7 @@ PtWidgetClass_t *PtCreateMozillaClass( void )
|
||||||
{ Pt_ARG_MOZ_COMMAND, mozilla_modify, Pt_QUERY_PREVENT },
|
{ Pt_ARG_MOZ_COMMAND, mozilla_modify, Pt_QUERY_PREVENT },
|
||||||
{ Pt_ARG_MOZ_OPTION, mozilla_modify, mozilla_get_info },
|
{ Pt_ARG_MOZ_OPTION, mozilla_modify, mozilla_get_info },
|
||||||
{ Pt_ARG_MOZ_GET_CONTEXT, NULL, mozilla_get_info },
|
{ Pt_ARG_MOZ_GET_CONTEXT, NULL, mozilla_get_info },
|
||||||
|
{ Pt_ARG_MOZ_GET_HISTORY, NULL, mozilla_get_info },
|
||||||
{ Pt_ARG_MOZ_ENCODING, mozilla_modify, mozilla_get_info },
|
{ Pt_ARG_MOZ_ENCODING, mozilla_modify, mozilla_get_info },
|
||||||
{ Pt_ARG_MOZ_WEB_DATA_URL, mozilla_modify, Pt_QUERY_PREVENT },
|
{ Pt_ARG_MOZ_WEB_DATA_URL, mozilla_modify, Pt_QUERY_PREVENT },
|
||||||
{ Pt_ARG_MOZ_WEB_DATA, mozilla_modify, Pt_QUERY_PREVENT },
|
{ Pt_ARG_MOZ_WEB_DATA, mozilla_modify, Pt_QUERY_PREVENT },
|
||||||
|
@ -1256,5 +1290,15 @@ PtWidgetClass_t *PtCreateMozillaClass( void )
|
||||||
InitProfiles( getenv( "HOME" ), ".mozilla" );
|
InitProfiles( getenv( "HOME" ), ".mozilla" );
|
||||||
Init_nsUnknownContentTypeHandler_Factory( );
|
Init_nsUnknownContentTypeHandler_Factory( );
|
||||||
|
|
||||||
|
nsCOMPtr<nsIFactory> promptFactory;
|
||||||
|
NS_NewPromptServiceFactory(getter_AddRefs(promptFactory));
|
||||||
|
nsComponentManager::RegisterFactory(kPromptServiceCID,
|
||||||
|
"Prompt Service",
|
||||||
|
"@mozilla.org/embedcomp/prompt-service;1",
|
||||||
|
promptFactory,
|
||||||
|
PR_TRUE); // replace existing
|
||||||
|
|
||||||
|
InitializeWindowCreator( );
|
||||||
|
|
||||||
return (PtMozilla->wclass);
|
return (PtMozilla->wclass);
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
#include "nsIStreamListener.h"
|
#include "nsIStreamListener.h"
|
||||||
#include "nsIExternalHelperAppService.h"
|
#include "nsIExternalHelperAppService.h"
|
||||||
#include "nsISHistory.h"
|
#include "nsISHistory.h"
|
||||||
|
#include "nsIHistoryEntry.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PtMozilla public
|
* PtMozilla public
|
||||||
|
@ -57,6 +58,7 @@ extern PtWidgetClassRef_t *PtMozilla;
|
||||||
#define Pt_ARG_MOZ_GET_CONTEXT Pt_RESOURCE( 104, 10 )
|
#define Pt_ARG_MOZ_GET_CONTEXT Pt_RESOURCE( 104, 10 )
|
||||||
#define Pt_ARG_MOZ_UNKNOWN_RESP Pt_RESOURCE( 104, 11 )
|
#define Pt_ARG_MOZ_UNKNOWN_RESP Pt_RESOURCE( 104, 11 )
|
||||||
#define Pt_ARG_MOZ_DOWNLOAD Pt_RESOURCE( 104, 12 )
|
#define Pt_ARG_MOZ_DOWNLOAD Pt_RESOURCE( 104, 12 )
|
||||||
|
#define Pt_ARG_MOZ_GET_HISTORY Pt_RESOURCE( 104, 13 )
|
||||||
|
|
||||||
#define Pt_CB_MOZ_PROGRESS Pt_RESOURCE( 104, 20 )
|
#define Pt_CB_MOZ_PROGRESS Pt_RESOURCE( 104, 20 )
|
||||||
#define Pt_CB_MOZ_START Pt_RESOURCE( 104, 21 )
|
#define Pt_CB_MOZ_START Pt_RESOURCE( 104, 21 )
|
||||||
|
|
|
@ -31,6 +31,8 @@
|
||||||
#include "nsIDOMHTMLHtmlElement.h"
|
#include "nsIDOMHTMLHtmlElement.h"
|
||||||
#include "nsIDOMElement.h"
|
#include "nsIDOMElement.h"
|
||||||
#include "nsIDOMNamedNodeMap.h"
|
#include "nsIDOMNamedNodeMap.h"
|
||||||
|
#include "nsIWindowCreator.h"
|
||||||
|
#include "nsIWindowWatcher.h"
|
||||||
|
|
||||||
CWebBrowserContainer::CWebBrowserContainer(PtWidget_t *pOwner)
|
CWebBrowserContainer::CWebBrowserContainer(PtWidget_t *pOwner)
|
||||||
{
|
{
|
||||||
|
@ -114,7 +116,6 @@ NS_INTERFACE_MAP_BEGIN(CWebBrowserContainer)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsIDocShellTreeOwner)
|
NS_INTERFACE_MAP_ENTRY(nsIDocShellTreeOwner)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsIRequestObserver)
|
NS_INTERFACE_MAP_ENTRY(nsIRequestObserver)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener)
|
NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsIPrompt)
|
|
||||||
NS_INTERFACE_MAP_ENTRY(nsIContextMenuListener)
|
NS_INTERFACE_MAP_ENTRY(nsIContextMenuListener)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsICommandHandler)
|
NS_INTERFACE_MAP_ENTRY(nsICommandHandler)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
|
NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
|
||||||
|
@ -126,13 +127,6 @@ NS_INTERFACE_MAP_END
|
||||||
|
|
||||||
NS_IMETHODIMP CWebBrowserContainer::GetInterface(const nsIID & uuid, void * *result)
|
NS_IMETHODIMP CWebBrowserContainer::GetInterface(const nsIID & uuid, void * *result)
|
||||||
{
|
{
|
||||||
const nsIID &iid = NS_GET_IID(nsIPrompt);
|
|
||||||
if (memcmp(&uuid, &iid, sizeof(nsIID)) == 0)
|
|
||||||
{
|
|
||||||
*result = (nsIPrompt *) this;
|
|
||||||
AddRef();
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
return QueryInterface(uuid, result);
|
return QueryInterface(uuid, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -199,165 +193,6 @@ NS_IMETHODIMP CWebBrowserContainer::OnShowContextMenu(PRUint32 aContextFlags, ns
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
// nsIPrompt
|
|
||||||
|
|
||||||
/* void alert (in wstring text); */
|
|
||||||
NS_IMETHODIMP CWebBrowserContainer::Alert(const PRUnichar* dialogTitle, const PRUnichar *text)
|
|
||||||
{
|
|
||||||
nsString mTitle(dialogTitle);
|
|
||||||
nsString mText(text);
|
|
||||||
|
|
||||||
InvokeDialogCallback(Pt_MOZ_DIALOG_ALERT, mTitle.ToNewCString(), mText.ToNewCString(), nsnull, nsnull);
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* boolean confirmCheck (in wstring text, in wstring checkMsg, out boolean checkValue); */
|
|
||||||
NS_IMETHODIMP CWebBrowserContainer::AlertCheck(const PRUnichar* dialogTitle, const PRUnichar *text, const PRUnichar *checkMsg, PRBool *checkValue)
|
|
||||||
{
|
|
||||||
nsString mTitle(dialogTitle);
|
|
||||||
nsString mText(text);
|
|
||||||
nsString mMsg(checkMsg);
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
InvokeDialogCallback(Pt_MOZ_DIALOG_ALERT, mTitle.ToNewCString(), mText.ToNewCString(), \
|
|
||||||
mMsg.ToNewCString(), &ret);
|
|
||||||
*checkValue = ret;
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* boolean confirm (in wstring text); */
|
|
||||||
NS_IMETHODIMP CWebBrowserContainer::Confirm(const PRUnichar* dialogTitle, const PRUnichar *text, PRBool *_retval)
|
|
||||||
{
|
|
||||||
nsString mTitle(dialogTitle);
|
|
||||||
nsString mText(text);
|
|
||||||
|
|
||||||
if (InvokeDialogCallback(Pt_MOZ_DIALOG_CONFIRM, mTitle.ToNewCString(), mText.ToNewCString(), nsnull, nsnull) == Pt_CONTINUE)
|
|
||||||
*_retval = PR_TRUE;
|
|
||||||
else
|
|
||||||
*_retval = PR_FALSE;
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* boolean confirmCheck (in wstring text, in wstring checkMsg, out boolean checkValue); */
|
|
||||||
NS_IMETHODIMP CWebBrowserContainer::ConfirmCheck(const PRUnichar* dialogTitle, const PRUnichar *text, const PRUnichar *checkMsg, PRBool *checkValue, PRBool *_retval)
|
|
||||||
{
|
|
||||||
nsString mTitle(dialogTitle);
|
|
||||||
nsString mText(text);
|
|
||||||
nsString mMsg(checkMsg);
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
|
|
||||||
if (InvokeDialogCallback(Pt_MOZ_DIALOG_CONFIRM, mTitle.ToNewCString(), mText.ToNewCString(), \
|
|
||||||
mMsg.ToNewCString(), &ret) == Pt_CONTINUE)
|
|
||||||
*_retval = PR_TRUE;
|
|
||||||
else
|
|
||||||
*_retval = PR_FALSE;
|
|
||||||
*checkValue = ret;
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP CWebBrowserContainer::ConfirmEx(const PRUnichar *dialogTitle, const PRUnichar *text, PRUint32 buttonFlags, const PRUnichar *button0Title, const PRUnichar *button1Title,
|
|
||||||
const PRUnichar *button2Title, const PRUnichar *checkMsg, PRBool *checkValue, PRInt32 *buttonPressed) {
|
|
||||||
return NS_ERROR_NOT_IMPLEMENTED;;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP CWebBrowserContainer::Prompt(const PRUnichar *dialogTitle, const PRUnichar *text, PRUnichar **value, const PRUnichar *checkMsg,
|
|
||||||
PRBool *checkValue, PRBool *_retval )
|
|
||||||
{
|
|
||||||
PtMozillaWidget_t *moz = (PtMozillaWidget_t *) m_pOwner;
|
|
||||||
PtCallbackList_t *cb;
|
|
||||||
PtCallbackInfo_t cbinfo;
|
|
||||||
PtMozillaPromptCb_t pr;
|
|
||||||
nsString mTitle(dialogTitle);
|
|
||||||
nsString mText(text);
|
|
||||||
nsString mDflt(checkMsg);
|
|
||||||
|
|
||||||
if (!moz->prompt_cb)
|
|
||||||
return NS_OK;
|
|
||||||
|
|
||||||
cb = moz->prompt_cb;
|
|
||||||
memset(&cbinfo, 0, sizeof(cbinfo));
|
|
||||||
cbinfo.reason = Pt_CB_MOZ_PROMPT;
|
|
||||||
cbinfo.cbdata = ≺
|
|
||||||
|
|
||||||
memset(&pr, 0, sizeof(PtMozillaPromptCb_t));
|
|
||||||
pr.title = mTitle.ToNewCString();
|
|
||||||
pr.text = mText.ToNewCString();
|
|
||||||
pr.dflt_resp = mDflt.ToNewCString();
|
|
||||||
|
|
||||||
if (PtInvokeCallbackList(cb, (PtWidget_t *)moz, &cbinfo) == Pt_END)
|
|
||||||
*_retval = PR_FALSE;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
nsCString mResp(pr.response);
|
|
||||||
*value = mResp.ToNewUnicode();
|
|
||||||
*_retval = PR_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* boolean promptUsernameAndPassword (in wstring text, out wstring user, out wstring pwd); */
|
|
||||||
NS_IMETHODIMP CWebBrowserContainer::PromptUsernameAndPassword(
|
|
||||||
const PRUnichar *dialogTitle,
|
|
||||||
const PRUnichar *text,
|
|
||||||
PRUnichar **username,
|
|
||||||
PRUnichar **password, const PRUnichar *checkMsg, PRBool *checkValue, PRBool *_retval)
|
|
||||||
{
|
|
||||||
PtMozillaWidget_t *moz = (PtMozillaWidget_t *) m_pOwner;
|
|
||||||
PtCallbackList_t *cb;
|
|
||||||
PtCallbackInfo_t cbinfo;
|
|
||||||
PtMozillaAuthenticateCb_t auth;
|
|
||||||
nsString mTitle(dialogTitle);
|
|
||||||
nsString mRealm(checkMsg);
|
|
||||||
|
|
||||||
if (!moz->auth_cb)
|
|
||||||
return NS_OK;
|
|
||||||
|
|
||||||
cb = moz->auth_cb;
|
|
||||||
memset(&cbinfo, 0, sizeof(cbinfo));
|
|
||||||
cbinfo.reason = Pt_CB_MOZ_AUTHENTICATE;
|
|
||||||
cbinfo.cbdata = &auth;
|
|
||||||
|
|
||||||
memset(&auth, 0, sizeof(PtMozillaAuthenticateCb_t));
|
|
||||||
auth.title = mTitle.ToNewCString();
|
|
||||||
auth.realm = mRealm.ToNewCString();
|
|
||||||
|
|
||||||
if (PtInvokeCallbackList(cb, (PtWidget_t *)moz, &cbinfo) == Pt_CONTINUE)
|
|
||||||
{
|
|
||||||
nsCString mUser(auth.user);
|
|
||||||
nsCString mPass(auth.pass);
|
|
||||||
*username = mUser.ToNewUnicode();
|
|
||||||
*password = mPass.ToNewUnicode();
|
|
||||||
*_retval = PR_TRUE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
*_retval = PR_FALSE;
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* boolean promptPassword (in wstring text, in wstring title, out wstring pwd); */
|
|
||||||
NS_IMETHODIMP CWebBrowserContainer::PromptPassword(
|
|
||||||
const PRUnichar *dialogTitle, const PRUnichar *text,
|
|
||||||
PRUnichar **password, const PRUnichar *checkMsg,
|
|
||||||
PRBool *checkValue, PRBool *_retval)
|
|
||||||
{
|
|
||||||
return NS_ERROR_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* boolean select (in wstring inDialogTitle, in wstring inMsg, in PRUint32 inCount, [array, size_is (inCount)] in wstring inList, out long outSelection); */
|
|
||||||
NS_IMETHODIMP CWebBrowserContainer::Select(const PRUnichar *inDialogTitle, const PRUnichar *inMsg, PRUint32 inCount, const PRUnichar **inList, PRInt32 *outSelection, PRBool *_retval)
|
|
||||||
{
|
|
||||||
return NS_ERROR_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// nsIWebProgressListener
|
// nsIWebProgressListener
|
||||||
|
|
||||||
|
@ -1018,7 +853,9 @@ NS_IMETHODIMP CWebBrowserContainer::SetTitle(const PRUnichar * aTitle) {
|
||||||
/* [noscript] readonly attribute voidPtr siteWindow; */
|
/* [noscript] readonly attribute voidPtr siteWindow; */
|
||||||
NS_IMETHODIMP CWebBrowserContainer::GetSiteWindow(void * *aSiteWindow)
|
NS_IMETHODIMP CWebBrowserContainer::GetSiteWindow(void * *aSiteWindow)
|
||||||
{
|
{
|
||||||
return NS_ERROR_NOT_IMPLEMENTED;
|
|
||||||
|
*aSiteWindow = this;
|
||||||
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
|
@ -1266,3 +1103,59 @@ NS_IMETHODIMP CWebBrowserContainer::FocusNextElement() {
|
||||||
NS_IMETHODIMP CWebBrowserContainer::FocusPrevElement() {
|
NS_IMETHODIMP CWebBrowserContainer::FocusPrevElement() {
|
||||||
return NS_ERROR_NOT_IMPLEMENTED;
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// Window Creator
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class CWindowCreator : public nsIWindowCreator
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CWindowCreator();
|
||||||
|
virtual ~CWindowCreator();
|
||||||
|
|
||||||
|
NS_DECL_ISUPPORTS
|
||||||
|
NS_DECL_NSIWINDOWCREATOR
|
||||||
|
};
|
||||||
|
|
||||||
|
NS_IMPL_ISUPPORTS1(CWindowCreator, nsIWindowCreator);
|
||||||
|
|
||||||
|
CWindowCreator::CWindowCreator()
|
||||||
|
{
|
||||||
|
NS_INIT_ISUPPORTS();
|
||||||
|
}
|
||||||
|
|
||||||
|
CWindowCreator::~CWindowCreator()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP CWindowCreator::CreateChromeWindow(nsIWebBrowserChrome *aParent,
|
||||||
|
PRUint32 aChromeFlags,
|
||||||
|
nsIWebBrowserChrome **_retval)
|
||||||
|
{
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
InitializeWindowCreator creates and hands off an object with a callback
|
||||||
|
to a window creation function. This will be used by Gecko C++ code
|
||||||
|
(never JS) to create new windows when no previous window is handy
|
||||||
|
to begin with. This is done in a few exceptional cases, like PSM code.
|
||||||
|
Failure to set this callback will only disable the ability to create
|
||||||
|
new windows under these circumstances.
|
||||||
|
*/
|
||||||
|
|
||||||
|
nsresult InitializeWindowCreator()
|
||||||
|
{
|
||||||
|
// Create a CWindowCreator and give it to the WindowWatcher service
|
||||||
|
// The WindowWatcher service will own it so we don't keep a ref.
|
||||||
|
CWindowCreator *windowCreator = new CWindowCreator;
|
||||||
|
if (!windowCreator) return NS_ERROR_FAILURE;
|
||||||
|
|
||||||
|
nsCOMPtr<nsIWindowWatcher> wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1"));
|
||||||
|
if (!wwatch) return NS_ERROR_FAILURE;
|
||||||
|
return wwatch->SetWindowCreator(windowCreator);
|
||||||
|
}
|
||||||
|
|
|
@ -59,7 +59,6 @@ class CWebBrowserContainer :
|
||||||
public nsIURIContentListener,
|
public nsIURIContentListener,
|
||||||
public nsIDocShellTreeOwner,
|
public nsIDocShellTreeOwner,
|
||||||
public nsIInterfaceRequestor,
|
public nsIInterfaceRequestor,
|
||||||
public nsIPrompt,
|
|
||||||
public nsIContextMenuListener,
|
public nsIContextMenuListener,
|
||||||
public nsICommandHandler,
|
public nsICommandHandler,
|
||||||
public nsIPrintListener,
|
public nsIPrintListener,
|
||||||
|
@ -104,9 +103,6 @@ public:
|
||||||
NS_DECL_NSICOMMANDHANDLER
|
NS_DECL_NSICOMMANDHANDLER
|
||||||
NS_DECL_NSIPRINTLISTENER
|
NS_DECL_NSIPRINTLISTENER
|
||||||
|
|
||||||
// "Services" accessed through nsIInterfaceRequestor
|
|
||||||
NS_DECL_NSIPROMPT
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
nsCOMPtr<nsIInputStream> mStream;
|
nsCOMPtr<nsIInputStream> mStream;
|
||||||
nsCOMPtr<nsIStreamListener> mStreamListener;
|
nsCOMPtr<nsIStreamListener> mStreamListener;
|
||||||
|
@ -115,4 +111,6 @@ private:
|
||||||
PRBool mDoingStream;
|
PRBool mDoingStream;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nsresult InitializeWindowCreator();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -45,7 +45,7 @@ nsUnknownContentTypeHandler::~nsUnknownContentTypeHandler( ) { }
|
||||||
NS_IMETHODIMP nsUnknownContentTypeHandler::ShowProgressDialog(nsIHelperAppLauncher *aLauncher, nsISupports *aContext ) {
|
NS_IMETHODIMP nsUnknownContentTypeHandler::ShowProgressDialog(nsIHelperAppLauncher *aLauncher, nsISupports *aContext ) {
|
||||||
nsresult rv = NS_OK;
|
nsresult rv = NS_OK;
|
||||||
|
|
||||||
printf("ShowProgressDialog!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n");
|
/* ATENTIE */ printf("ShowProgressDialog!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n");
|
||||||
|
|
||||||
/* we need a dummy listener because the nsExternalAppHandler class verifies that a progress window has been displayed */
|
/* we need a dummy listener because the nsExternalAppHandler class verifies that a progress window has been displayed */
|
||||||
nsCOMPtr<nsIWebProgressListener> dummy = new nsWebProgressListener;
|
nsCOMPtr<nsIWebProgressListener> dummy = new nsWebProgressListener;
|
||||||
|
@ -56,20 +56,16 @@ NS_IMETHODIMP nsUnknownContentTypeHandler::ShowProgressDialog(nsIHelperAppLaunch
|
||||||
|
|
||||||
NS_IMETHODIMP nsUnknownContentTypeHandler::Show( nsIHelperAppLauncher *aLauncher, nsISupports *aContext ) {
|
NS_IMETHODIMP nsUnknownContentTypeHandler::Show( nsIHelperAppLauncher *aLauncher, nsISupports *aContext ) {
|
||||||
nsresult rv = NS_OK;
|
nsresult rv = NS_OK;
|
||||||
printf("Show!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n");
|
/* ATENTIE */ printf("Show!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n");
|
||||||
|
|
||||||
/* try to get the PtMozillawidget_t* pointer form the aContext - use the fact the the WebBrowserContainer is
|
/* try to get the PtMozillawidget_t* pointer form the aContext - use the fact the the WebBrowserContainer is
|
||||||
registering itself as nsIDocumentLoaderObserver ( SetDocLoaderObserver ) */
|
registering itself as nsIDocumentLoaderObserver ( SetDocLoaderObserver ) */
|
||||||
|
|
||||||
/* aContext is a nsDocShell* */
|
nsCOMPtr<nsIDOMWindow> domw( do_GetInterface( aContext ) );
|
||||||
nsCOMPtr<nsIDocShell> docShell( do_GetInterface( aContext ) );
|
nsIDOMWindow *parent;
|
||||||
nsIURIContentListener *dl;
|
domw->GetParent( &parent );
|
||||||
rv = docShell->GetParentURIContentListener( &dl );
|
CWebBrowserContainer *w = GetWebBrowser( parent );
|
||||||
|
PtMozillaWidget_t *moz = ( PtMozillaWidget_t * ) w->m_pOwner;
|
||||||
CWebBrowserContainer *webc = NS_STATIC_CAST( CWebBrowserContainer*, dl );
|
|
||||||
printf("webc=%p\n", webc );
|
|
||||||
PtMozillaWidget_t *moz = ( PtMozillaWidget_t * ) webc->m_pOwner;
|
|
||||||
|
|
||||||
|
|
||||||
/* go ahead and start the downloading process */
|
/* go ahead and start the downloading process */
|
||||||
nsCOMPtr<nsIWebProgressListener> listener = NS_STATIC_CAST(nsIWebProgressListener*, moz->MyBrowser->WebBrowserContainer );
|
nsCOMPtr<nsIWebProgressListener> listener = NS_STATIC_CAST(nsIWebProgressListener*, moz->MyBrowser->WebBrowserContainer );
|
||||||
|
@ -110,16 +106,43 @@ printf("webc=%p\n", webc );
|
||||||
|
|
||||||
/* only Show() method is used - remove this code */
|
/* only Show() method is used - remove this code */
|
||||||
NS_IMETHODIMP nsUnknownContentTypeHandler::PromptForSaveToFile( nsISupports * aWindowContext, const PRUnichar * aDefaultFile, const PRUnichar * aSuggestedFileExtension, nsILocalFile ** aNewFile ) {
|
NS_IMETHODIMP nsUnknownContentTypeHandler::PromptForSaveToFile( nsISupports * aWindowContext, const PRUnichar * aDefaultFile, const PRUnichar * aSuggestedFileExtension, nsILocalFile ** aNewFile ) {
|
||||||
printf("PromptForSaveToFile!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n");
|
/* ATENTIE */ printf("PromptForSaveToFile!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n");
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CWebBrowserContainer *nsUnknownContentTypeHandler::GetWebBrowser(nsIDOMWindow *aWindow)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIWebBrowserChrome> chrome;
|
||||||
|
CWebBrowserContainer *val = 0;
|
||||||
|
|
||||||
|
nsCOMPtr<nsIWindowWatcher> wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1"));
|
||||||
|
if (!wwatch) return nsnull;
|
||||||
|
|
||||||
|
if( wwatch ) {
|
||||||
|
nsCOMPtr<nsIDOMWindow> fosterParent;
|
||||||
|
if (!aWindow) { // it will be a dependent window. try to find a foster parent.
|
||||||
|
wwatch->GetActiveWindow(getter_AddRefs(fosterParent));
|
||||||
|
aWindow = fosterParent;
|
||||||
|
}
|
||||||
|
wwatch->GetChromeForWindow(aWindow, getter_AddRefs(chrome));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (chrome) {
|
||||||
|
nsCOMPtr<nsIEmbeddingSiteWindow> site(do_QueryInterface(chrome));
|
||||||
|
if (site) {
|
||||||
|
site->GetSiteWindow(reinterpret_cast<void **>(&val));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//###########################################################################
|
//###########################################################################
|
||||||
NS_IMPL_ISUPPORTS2(nsWebProgressListener, nsIWebProgressListener, nsISupportsWeakReference);
|
NS_IMPL_ISUPPORTS2(nsWebProgressListener, nsIWebProgressListener, nsISupportsWeakReference);
|
||||||
|
|
||||||
nsWebProgressListener::nsWebProgressListener() {
|
nsWebProgressListener::nsWebProgressListener() {
|
||||||
printf("11111111111111\n");
|
|
||||||
NS_INIT_ISUPPORTS();
|
NS_INIT_ISUPPORTS();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,25 +153,21 @@ nsWebProgressListener::~nsWebProgressListener() { }
|
||||||
/* void onProgressChange (in nsIWebProgress aProgress, in nsIRequest aRequest, in long curSelfProgress, in long maxSelfProgress, in long curTotalProgress, in long maxTotalProgress); */
|
/* void onProgressChange (in nsIWebProgress aProgress, in nsIRequest aRequest, in long curSelfProgress, in long maxSelfProgress, in long curTotalProgress, in long maxTotalProgress); */
|
||||||
NS_IMETHODIMP nsWebProgressListener::OnProgressChange(nsIWebProgress *aProgress, nsIRequest *aRequest, PRInt32 curSelfProgress, PRInt32 maxSelfProgress, PRInt32 curTotalProgress, PRInt32 maxTotalProgress) {
|
NS_IMETHODIMP nsWebProgressListener::OnProgressChange(nsIWebProgress *aProgress, nsIRequest *aRequest, PRInt32 curSelfProgress, PRInt32 maxSelfProgress, PRInt32 curTotalProgress, PRInt32 maxTotalProgress) {
|
||||||
|
|
||||||
printf("OnProgressChange curSelfProgress=%d maxSelfProgress=%d curTotalProgress=%d maxTotalProgress=%d\n",
|
/* ATENTIE */ printf("OnProgressChange curSelfProgress=%d maxSelfProgress=%d curTotalProgress=%d maxTotalProgress=%d\n",
|
||||||
curSelfProgress, maxSelfProgress, curTotalProgress, maxTotalProgress );
|
curSelfProgress, maxSelfProgress, curTotalProgress, maxTotalProgress );
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
NS_IMETHODIMP nsWebProgressListener::OnStateChange(nsIWebProgress* aWebProgress, nsIRequest *aRequest, PRInt32 progressStateFlags, nsresult aStatus) {
|
NS_IMETHODIMP nsWebProgressListener::OnStateChange(nsIWebProgress* aWebProgress, nsIRequest *aRequest, PRInt32 progressStateFlags, nsresult aStatus) {
|
||||||
printf("222\n");
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
NS_IMETHODIMP nsWebProgressListener::OnLocationChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest, nsIURI *location) {
|
NS_IMETHODIMP nsWebProgressListener::OnLocationChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest, nsIURI *location) {
|
||||||
printf("333\n");
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
NS_IMETHODIMP nsWebProgressListener::OnStatusChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest, nsresult aStatus, const PRUnichar* aMessage) {
|
NS_IMETHODIMP nsWebProgressListener::OnStatusChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest, nsresult aStatus, const PRUnichar* aMessage) {
|
||||||
printf("OnStatusChange aStatus=%d\n", aStatus );
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
NS_IMETHODIMP nsWebProgressListener::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRInt32 state) {
|
NS_IMETHODIMP nsWebProgressListener::OnSecurityChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRInt32 state) {
|
||||||
printf("555\n");
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,7 +196,7 @@ NS_IMPL_RELEASE( className );
|
||||||
/* QueryInterface implementation for this class. */
|
/* QueryInterface implementation for this class. */
|
||||||
NS_IMETHODIMP className::QueryInterface( REFNSIID anIID, void **anInstancePtr ) {
|
NS_IMETHODIMP className::QueryInterface( REFNSIID anIID, void **anInstancePtr ) {
|
||||||
nsresult rv = NS_OK;
|
nsresult rv = NS_OK;
|
||||||
printf("QueryInterface!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n");
|
/* ATENTIE */ printf("QueryInterface!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n");
|
||||||
|
|
||||||
/* Check for place to return result. */
|
/* Check for place to return result. */
|
||||||
if( !anInstancePtr ) rv = NS_ERROR_NULL_POINTER;
|
if( !anInstancePtr ) rv = NS_ERROR_NULL_POINTER;
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
#include "nsIWebProgressListener.h"
|
#include "nsIWebProgressListener.h"
|
||||||
#include "nsIWebBrowserPersist.h"
|
#include "nsIWebBrowserPersist.h"
|
||||||
#include "nsWeakReference.h"
|
#include "nsWeakReference.h"
|
||||||
|
#include "nsIWindowWatcher.h"
|
||||||
|
#include "WebBrowserContainer.h"
|
||||||
|
|
||||||
|
|
||||||
static NS_DEFINE_CID( kCID, NS_IHELPERAPPLAUNCHERDIALOG_IID );
|
static NS_DEFINE_CID( kCID, NS_IHELPERAPPLAUNCHERDIALOG_IID );
|
||||||
|
@ -19,6 +21,8 @@ public:
|
||||||
nsUnknownContentTypeHandler();
|
nsUnknownContentTypeHandler();
|
||||||
virtual ~nsUnknownContentTypeHandler();
|
virtual ~nsUnknownContentTypeHandler();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// This class implements the nsISupports interface functions.
|
// This class implements the nsISupports interface functions.
|
||||||
NS_DECL_ISUPPORTS
|
NS_DECL_ISUPPORTS
|
||||||
|
|
||||||
|
@ -27,6 +31,9 @@ public:
|
||||||
|
|
||||||
// This class implements the nsIHelperAppLauncherDialog interface functions.
|
// This class implements the nsIHelperAppLauncherDialog interface functions.
|
||||||
NS_DECL_NSIHELPERAPPLAUNCHERDIALOG
|
NS_DECL_NSIHELPERAPPLAUNCHERDIALOG
|
||||||
|
|
||||||
|
private:
|
||||||
|
CWebBrowserContainer* GetWebBrowser(nsIDOMWindow *aWindow);
|
||||||
}; // nsUnknownContentTypeHandler
|
}; // nsUnknownContentTypeHandler
|
||||||
|
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче