Not part of build

Photon embedding update
This commit is contained in:
dinglis%qnx.com 2001-10-29 14:17:16 +00:00
parent 03051ca0c1
commit f19c812ba7
7 changed files with 321 additions and 114 deletions

View File

@ -26,7 +26,36 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = phembedmoz
LIBRARY_NAME = phembedmoz
EXPORT_LIBRARY = 1
REQUIRES = xpcom \
string \
docshell \
webshell \
necko \
widget \
dom \
gfx \
layout \
content \
uriloader \
webbrwsr \
shistory \
embed_base \
pref \
cookie\
view\
windowwatcher \
mpfilelocprovider \
appshell \
exthandler \
helperAppDlg \
mozcomps \
find \
appcomps \
mimetype \
$(NULL)
REQUIRES = xpcom \
string \

View File

@ -100,7 +100,7 @@ CWebBrowserContainer *CPromptService::GetWebBrowser(nsIDOMWindow *aWindow)
wwatch->GetActiveWindow(getter_AddRefs(fosterParent));
aWindow = fosterParent;
}
nsresult rv = wwatch->GetChromeForWindow(aWindow, getter_AddRefs(chrome));
wwatch->GetChromeForWindow(aWindow, getter_AddRefs(chrome));
}
if (chrome) {
@ -240,6 +240,9 @@ NS_IMETHODIMP CPromptService::PromptUsernameAndPassword(nsIDOMWindow *parent,
else
*_retval = PR_FALSE;
free( auth.title );
free( auth.realm );
return NS_OK;
}
@ -276,7 +279,11 @@ NS_IMETHODIMP CPromptService::ConfirmEx(nsIDOMWindow *parent,
PRBool *checkValue,
PRInt32 *buttonPressed)
{
return NS_ERROR_NOT_IMPLEMENTED;
if (checkValue)
*checkValue = PR_FALSE;
if (buttonPressed)
*buttonPressed = 0;
return NS_OK;
}
//*****************************************************************************

View File

@ -23,9 +23,6 @@
#include <stdlib.h>
#include "PtMozilla.h"
#include <photon/PtWebClient.h>
#include <photon/PpProto.h>
#include "nsCWebBrowser.h"
#include "nsFileSpec.h"
#include "nsILocalFile.h"
@ -72,6 +69,12 @@
#include "nsUnknownContentTypeHandler.h"
#ifdef _BUILD_STATIC_BIN
#include "nsStaticComponent.h"
nsresult PR_CALLBACK
apprunner_getModuleInfo(nsStaticModuleInfo **info, PRUint32 *count);
#endif
// Macro for converting from nscolor to PtColor_t
// Photon RGB values are stored as 00 RR GG BB
// nscolor RGB values are 00 BB GG RR
@ -98,6 +101,7 @@ static NS_DEFINE_CID(kPromptServiceCID, NS_PROMPTSERVICE_CID);
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_set_default_pref( PtWidget_t *widget );
PtWidgetClass_t *PtCreateMozillaClass( void );
#ifndef _PHSLIB
@ -208,49 +212,20 @@ void MozSetPreference(PtWidget_t *widget, int type, char *pref, void *data)
}
}
int MozSavePageAs(PtWidget_t *widget, char *fname, int type)
{
// Get the current DOM document
nsIDOMDocument* pDocument = nsnull;
PtMozillaWidget_t *moz = (PtMozillaWidget_t *) widget;
if (!fname || !widget)
return (-1);
// Get the DOM window from the webbrowser
nsCOMPtr<nsIDOMWindow> window;
moz->MyBrowser->WebBrowser->GetContentDOMWindow(getter_AddRefs(window));
if (window)
nsCOMPtr<nsIWebBrowserPersist> persist(do_QueryInterface(moz->MyBrowser->WebBrowser));
if (persist)
{
if (NS_SUCCEEDED(window->GetDocument(&pDocument)))
{
// Get an nsIDiskDocument interface to the DOM document
nsCOMPtr<nsIDiskDocument> diskDoc = do_QueryInterface(pDocument);
if (!diskDoc)
return (-1);
// Create an nsFilelSpec from the selected file path.
nsFileSpec fileSpec(fname, PR_FALSE);
// Figure out the mime type from the selection
nsAutoString mimeType;
switch (type)
{
case Pt_MOZ_SAVEAS_HTML:
mimeType.AssignWithConversion("text/html");
break;
case Pt_MOZ_SAVEAS_TEXT:
default:
mimeType.AssignWithConversion("text/plain");
break;
}
// Save the file.
nsAutoString useDocCharset;
// diskDoc->SaveFile(&fileSpec, PR_TRUE, PR_TRUE, mimeType, useDocCharset, 0);
return (0);
}
#if _094_
persist->SaveDocument(nsnull, fname, nsnull);
#endif
return (0);
}
return (-1);
@ -292,6 +267,8 @@ static void mozilla_defaults( PtWidget_t *widget )
Pt_BOTTOM_ANCHORED_TOP | Pt_RIGHT_ANCHORED_LEFT | Pt_ANCHORS_INVALID;
cntr->flags |= Pt_CHILD_GETTING_FOCUS;
mozilla_set_default_pref( widget );
}
static void mozilla_destroy( PtWidget_t *widget ) {
@ -549,8 +526,7 @@ static void mozilla_modify( PtWidget_t *widget, PtArg_t const *argt ) {
case Pt_ARG_MOZ_ENCODING: {
moz->MyBrowser->mPrefs->SetUnicharPref(
"intl.charset.default",
NS_ConvertASCIItoUCS2((char*)argt->value).get()
);
NS_ConvertASCIItoUCS2((char*)argt->value).get());
}
break;
@ -877,15 +853,15 @@ static void mozilla_set_pref( PtWidget_t *widget, char *option, char *value ) {
/* Disk-cache options */
else if( !strcmp( option, "main_cache_kb_size" ) )
moz->MyBrowser->mPrefs->SetIntPref( "browser.cache.disk_cache_size", atoi( value ) );
moz->MyBrowser->mPrefs->SetIntPref( "browser.cache.disk.capacity", atoi( value ) );
else if( !strcmp( option, "enable_disk_cache" ) )
moz->MyBrowser->mPrefs->SetBoolPref( "browser.cache.disk.enable", !stricmp( value, "TRUE" ) ? PR_TRUE : PR_FALSE );
else if( !strcmp( option, "dcache_verify_policy" ) ) {
int n = atoi( value ), moz_value;
int n = atoi( value ), moz_value=3;
if( n == 0 ) moz_value = 2; /* never */
else if( n == 1 ) moz_value = 0; /* once */
else moz_value = 1; /* always */
moz->MyBrowser->mPrefs->SetIntPref( "browser.cache.check_doc_frequency", atoi( value ) );
moz->MyBrowser->mPrefs->SetIntPref( "browser.cache.check_doc_frequency", moz_value );
}
else if( !strcmp( option, "main_cache_dir" ) ) ; /* not used */
else if( !strcmp( option, "main_index_file" ) ) ; /* not used */
@ -965,6 +941,37 @@ static void mozilla_set_pref( PtWidget_t *widget, char *option, char *value ) {
else if( !strcmp( option, "Visitation_Horizon" ) ) ; /* not used */
}
static void mozilla_set_default_pref( PtWidget_t *widget ) {
static int already_set = 0;
PtMozillaWidget_t *moz = ( PtMozillaWidget_t * ) widget;
if( already_set ) return;
already_set = 1;
/* HTML Options */
moz->MyBrowser->mPrefs->SetUnicharPref( "browser.visited_color", NS_ConvertASCIItoUCS2("#008080").get() );
moz->MyBrowser->mPrefs->SetUnicharPref( "browser.anchor_color", NS_ConvertASCIItoUCS2("#0000ff").get() );
moz->MyBrowser->mPrefs->SetUnicharPref( "browser.display.foreground_color", NS_ConvertASCIItoUCS2("#000000").get() );
moz->MyBrowser->mPrefs->SetUnicharPref( "browser.display.background_color", NS_ConvertASCIItoUCS2("#ffffff").get() );
moz->MyBrowser->mPrefs->SetBoolPref( "browser.display.use_document_colors", PR_TRUE );
moz->MyBrowser->mPrefs->SetBoolPref( "browser.underline_anchors", PR_TRUE );
moz->MyBrowser->mPrefs->SetIntPref( "font.size.variable.x-western", VOYAGER_TEXTSIZE2 );
moz->MyBrowser->mPrefs->SetIntPref( "browser.history_expire_days", 4 );
moz->MyBrowser->mPrefs->SetIntPref( "browser.sessionhistory.max_entries", 50 );
moz->MyBrowser->mPrefs->SetIntPref( "browser.cache.check_doc_frequency", 2 );
moz->MyBrowser->mPrefs->SetBoolPref( "browser.cache.disk.enable", PR_TRUE );
moz->MyBrowser->mPrefs->SetIntPref( "browser.cache.disk.capacity", 5000 );
moz->MyBrowser->mPrefs->SetIntPref( "network.http.connect.timeout", 2400 );
moz->MyBrowser->mPrefs->SetIntPref( "network.http.max-connections", 4 );
moz->MyBrowser->mPrefs->SetCharPref( "network.proxy.http_port", "80" );
moz->MyBrowser->mPrefs->SetCharPref( "network.proxy.ftp_port", "80" );
moz->MyBrowser->mPrefs->SetCharPref( "network.proxy.gopher_port", "80" );
}
static void mozilla_get_pref( PtWidget_t *widget, char *option, char *value ) {
PtMozillaWidget_t *moz = ( PtMozillaWidget_t * ) widget;
@ -1093,7 +1100,7 @@ static void mozilla_get_pref( PtWidget_t *widget, char *option, char *value ) {
/* Disk-cache options */
else if( !strcmp( option, "main_cache_kb_size" ) ) {
int n;
moz->MyBrowser->mPrefs->GetIntPref( "browser.cache.disk_cache_size", &n );
moz->MyBrowser->mPrefs->GetIntPref( "browser.cache.disk.capacity", &n );
sprintf( value, "%d", n );
}
else if( !strcmp( option, "enable_disk_cache" ) ) {
@ -1102,7 +1109,7 @@ static void mozilla_get_pref( PtWidget_t *widget, char *option, char *value ) {
sprintf( value, "%s", val == PR_TRUE ? "TRUE" : "FALSE" );
}
else if( !strcmp( option, "dcache_verify_policy" ) ) {
int n, voyager_value;
int n, voyager_value = 0;
moz->MyBrowser->mPrefs->GetIntPref( "browser.cache.check_doc_frequency", &n );
if( n == 0 ) voyager_value = 1;
else if( n == 1 ) voyager_value = 2;
@ -1178,7 +1185,11 @@ static int event_processor_callback(int fd, void *data, unsigned mode)
{
nsIEventQueue *eventQueue = (nsIEventQueue*)data;
if (eventQueue)
eventQueue->ProcessPendingEvents();
{
PtHold();
eventQueue->ProcessPendingEvents();
PtRelease();
}
return Pt_CONTINUE;
}
@ -1202,6 +1213,7 @@ PtWidgetClass_t *PtCreateMozillaClass( void )
{ Pt_ARG_MOZ_WEB_DATA, mozilla_modify, Pt_QUERY_PREVENT },
{ Pt_ARG_MOZ_UNKNOWN_RESP, mozilla_modify, Pt_QUERY_PREVENT },
{ Pt_ARG_MOZ_DOWNLOAD, mozilla_modify, Pt_QUERY_PREVENT },
{ Pt_ARG_MOZ_AUTH_CTRL, NULL, NULL, Pt_ARG_IS_POINTER( PtMozillaWidget_t, moz_auth_ctrl ) },
{ Pt_CB_MOZ_INFO, NULL, NULL, Pt_ARG_IS_CALLBACK_LIST(PtMozillaWidget_t, info_cb) },
{ Pt_CB_MOZ_START, NULL, NULL, Pt_ARG_IS_CALLBACK_LIST(PtMozillaWidget_t, start_cb) },
{ Pt_CB_MOZ_COMPLETE, NULL, NULL, Pt_ARG_IS_CALLBACK_LIST(PtMozillaWidget_t, complete_cb) },
@ -1221,6 +1233,7 @@ PtWidgetClass_t *PtCreateMozillaClass( void )
{ Pt_CB_MOZ_PRINT_STATUS, NULL, NULL, Pt_ARG_IS_CALLBACK_LIST(PtMozillaWidget_t, print_status_cb) },
{ Pt_CB_MOZ_WEB_DATA_REQ, NULL, NULL, Pt_ARG_IS_CALLBACK_LIST(PtMozillaWidget_t, web_data_req_cb) },
{ Pt_CB_MOZ_UNKNOWN, NULL, NULL, Pt_ARG_IS_CALLBACK_LIST(PtMozillaWidget_t, web_unknown_cb) },
{ Pt_CB_MOZ_ERROR, NULL, NULL, Pt_ARG_IS_CALLBACK_LIST(PtMozillaWidget_t, web_error_cb) },
};
static const PtClassRawCallback_t callback = { Ph_EV_INFO, mozilla_ev_info };
@ -1247,6 +1260,11 @@ PtWidgetClass_t *PtCreateMozillaClass( void )
PtMozilla->wclass = PtCreateWidgetClass(PtContainer, 0, sizeof(args)/sizeof(args[0]), args);
#ifdef _BUILD_STATIC_BIN
// Initialize XPCOM's module info table
NSGetStaticModuleInfo = apprunner_getModuleInfo;
#endif
// initialize embedding
NS_InitEmbedding(nsnull, nsnull);
@ -1261,7 +1279,7 @@ PtWidgetClass_t *PtCreateMozillaClass( void )
if (!eventQueue)
exit(-1);
PtAppAddFdPri(NULL, eventQueue->GetEventQueueSelectFD(), (Pt_FD_READ | Pt_FD_NOPOLL | Pt_FD_DRAIN), event_processor_callback,eventQueue, getprio( 0 ) + 1 );
PtAppAddFd( NULL, eventQueue->GetEventQueueSelectFD(), (Pt_FD_READ | Pt_FD_NOPOLL | Pt_FD_DRAIN), event_processor_callback,eventQueue );
printf("Event Queue added\n");
#else
// create an app shell for event handling

View File

@ -26,6 +26,10 @@
#include <stdlib.h>
#include <string.h>
#include <photon/PtWebClient.h>
#include <photon/PpProto.h>
#include "WebBrowserContainer.h"
#include "nsIInputStream.h"
@ -59,6 +63,7 @@ extern PtWidgetClassRef_t *PtMozilla;
#define Pt_ARG_MOZ_UNKNOWN_RESP Pt_RESOURCE( 104, 11 )
#define Pt_ARG_MOZ_DOWNLOAD Pt_RESOURCE( 104, 12 )
#define Pt_ARG_MOZ_GET_HISTORY Pt_RESOURCE( 104, 13 )
#define Pt_ARG_MOZ_AUTH_CTRL Pt_RESOURCE( 104, 14 ) // used internally for authentification
#define Pt_CB_MOZ_PROGRESS Pt_RESOURCE( 104, 20 )
#define Pt_CB_MOZ_START Pt_RESOURCE( 104, 21 )
@ -79,6 +84,7 @@ extern PtWidgetClassRef_t *PtMozilla;
#define Pt_CB_MOZ_PRINT_STATUS Pt_RESOURCE( 104, 37 )
#define Pt_CB_MOZ_WEB_DATA_REQ Pt_RESOURCE( 104, 38 )
#define Pt_CB_MOZ_UNKNOWN Pt_RESOURCE( 104, 39 )
#define Pt_CB_MOZ_ERROR Pt_RESOURCE( 104, 40 )
#define MAX_URL_LENGTH 1024
@ -111,6 +117,8 @@ typedef struct mozilla_url_t
#define Pt_SSL_STATE_SECURE_HIGH 0x8
#define Pt_SSL_STATE_SECURE_MED 0x10
#define Pt_SSL_STATE_SECURE_LOW 0x20
#define Pt_MOZ_INFO_CONNECT 5
typedef struct mozilla_info_t
{
int type;
@ -158,6 +166,8 @@ typedef struct mozilla_net_state_t
{
int flags;
unsigned int status;
char *url;
char *message;
} PtMozillaNetStateCb_t;
// new window callback
@ -294,6 +304,13 @@ public:
};
typedef struct {
short response;
char user[255];
char pass[255];
PtModalCtrl_t ctrl;
} PtMozillaAuthCtrl_t;
typedef struct Pt_mozilla_client_widget
{
PtContainerWidget_t container;
@ -307,6 +324,8 @@ typedef struct Pt_mozilla_client_widget
char *rightClickUrl; /* keep the url the user clicked on, to provide it latter for Pt_ARG_WEB_GET_CONTEXT */
char *download_dest;
PtMozillaAuthCtrl_t *moz_auth_ctrl;
// callbacks
PtCallbackList_t *title_cb;
PtCallbackList_t *net_state_cb;
@ -328,6 +347,7 @@ typedef struct Pt_mozilla_client_widget
PtCallbackList_t *print_status_cb;
PtCallbackList_t *web_data_req_cb;
PtCallbackList_t *web_unknown_cb;
PtCallbackList_t *web_error_cb;
} PtMozillaWidget_t;
/* Widget union */

View File

@ -49,6 +49,11 @@
#include "nsIWindowWatcher.h"
#include "nsReadableUtils.h"
/* for OnStateChange error codes */
#include "nsError.h"
#include "nsIDNSService.h"
#include "nsISocketTransportService.h"
CWebBrowserContainer::CWebBrowserContainer(PtWidget_t *pOwner)
{
NS_INIT_REFCNT();
@ -56,7 +61,7 @@ CWebBrowserContainer::CWebBrowserContainer(PtWidget_t *pOwner)
m_pCurrentURI = nsnull;
mDoingStream = PR_FALSE;
mOffset = 0;
mSkipOnState = 0;
mSkipOnState = mDownloadDocument = 0;
}
@ -131,6 +136,7 @@ NS_INTERFACE_MAP_BEGIN(CWebBrowserContainer)
NS_INTERFACE_MAP_ENTRY(nsIDocShellTreeOwner)
NS_INTERFACE_MAP_ENTRY(nsIRequestObserver)
NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener)
NS_INTERFACE_MAP_ENTRY(nsIDNSListener)
NS_INTERFACE_MAP_ENTRY(nsIContextMenuListener)
NS_INTERFACE_MAP_ENTRY(nsICommandHandler)
NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
@ -272,34 +278,90 @@ NS_IMETHODIMP CWebBrowserContainer::OnStateChange(nsIWebProgress* aWebProgress,
PtMozillaWidget_t *moz = (PtMozillaWidget_t *) m_pOwner;
PtCallbackList_t *cb = NULL;
PtCallbackInfo_t cbinfo;
PRUnichar *url;
PtMozillaNetStateCb_t state;
if( mSkipOnState ) return NS_OK;
/* ATENTIE printf( "CWebBrowserContainer::OnStateChange progressStateFlags=0x%x aStatus=0x%x (%d %d)\n\n\n", progressStateFlags, aStatus,
progressStateFlags & STATE_IS_NETWORK, NS_FAILED( aStatus ) ); */
if( mSkipOnState ) {
if( moz->download_dest && !moz->MyBrowser->app_launcher ) {
if( progressStateFlags == (STATE_IS_REQUEST|STATE_IS_BROKEN) ) {
mDownloadDocument = 1;
}
else if( ( progressStateFlags & STATE_IS_NETWORK ) && ( progressStateFlags & STATE_STOP ) ) {
/* a request for Pt_ARG_MOZ_DOWNLOAD is done by trying to call LoadURI(). If the nsUnknownContentHandler
pops up, then moz->MyBrowser->app_launcher will be not null and we will use it to save the document ( old code ).
If the page loaded successfully, then use the nsIWebBrowserPersist to save the document */
if( mDownloadDocument ) {
mSkipOnState = 0;
mDownloadDocument = 0;
}
}
}
if( mSkipOnState ) return NS_OK;
}
aRequest->GetName( &url );
nsString surl( url );
if( ( progressStateFlags & STATE_IS_NETWORK ) && NS_FAILED( aStatus ) ) {
PtWebErrorCallback_t cbw;
/* invoke the Pt_CB_WEB_ERROR in the client */
cb = moz->web_error_cb;
memset(&cbinfo, 0, sizeof(cbinfo));
cbinfo.reason = Pt_CB_MOZ_ERROR;
cbinfo.cbdata = &cbw;
memset( &cbw, 0, sizeof( PtWebErrorCallback_t ) );
char *s = ToNewCString(surl);
strcpy( cbw.url, s );
free( s );
cbw.type = WWW_ERROR_TOPVIEW;
switch( aStatus ) {
case NS_ERROR_UNKNOWN_HOST: cbw.reason = -12; break;
case NS_ERROR_NET_TIMEOUT: cbw.reason = -408; break;
case NS_ERROR_NO_CONTENT: cbw.reason = -8; break;
case NS_ERROR_FILE_NOT_FOUND: cbw.reason = -404; break;
case NS_ERROR_CONNECTION_REFUSED: cbw.reason = -13; break;
/* these will not cause the web error */
case NS_BINDING_ABORTED: break;
default: cbw.reason = -1; break;
}
if( cbw.reason ) PtInvokeCallbackList(cb, (PtWidget_t *)moz, &cbinfo);
/* let it check for STATE_STOP */
}
memset(&cbinfo, 0, sizeof(cbinfo));
if (progressStateFlags & STATE_IS_NETWORK)
{
if (progressStateFlags & STATE_START)
{
if( progressStateFlags & STATE_IS_NETWORK /* STATE_IS_REQUEST STATE_IS_DOCUMENT */ )
{
if( progressStateFlags & STATE_START ) {
cbinfo.reason = Pt_CB_MOZ_START;
if( ( cb = moz->start_cb ) )
PtInvokeCallbackList(cb, (PtWidget_t *) moz, &cbinfo);
}
else if (progressStateFlags & STATE_STOP)
{
else if( progressStateFlags & STATE_STOP ) {
PtWebCompleteCallback_t cbcomplete;
/* if the mozilla was saving a file as a result of Pt_ARG_MOZ_DOWNLOAD or Pt_ARG_MOZ_UNKNOWN_RESP, move the temporary file into the desired destination ( moz->download_dest ) */
if( moz->MyBrowser->app_launcher && moz->download_dest ) {
nsCOMPtr<nsIURI> aSourceUrl;
PRInt64 dummy;
nsCOMPtr<nsIFile> tempFile;
moz->MyBrowser->app_launcher->GetDownloadInfo( getter_AddRefs(aSourceUrl), &dummy, getter_AddRefs( tempFile ) );
if( moz->download_dest ) {
if( moz->MyBrowser->app_launcher ) {
nsCOMPtr<nsIURI> aSourceUrl;
PRInt64 dummy;
nsCOMPtr<nsIFile> tempFile;
moz->MyBrowser->app_launcher->GetDownloadInfo( getter_AddRefs(aSourceUrl), &dummy, getter_AddRefs( tempFile ) );
if( tempFile ) {
if( tempFile ) {
nsresult rv;
nsCOMPtr<nsILocalFile> fileToUse = do_CreateInstance( NS_LOCAL_FILE_CONTRACTID, &rv );
fileToUse->InitWithPath( moz->download_dest );
PRBool equalToTempFile = PR_FALSE;
PRBool filetoUseAlreadyExists = PR_FALSE;
fileToUse->Equals( tempFile, &equalToTempFile );
@ -314,57 +376,58 @@ NS_IMETHODIMP CWebBrowserContainer::OnStateChange(nsIWebProgress* aWebProgress,
fileToUse->GetParent(getter_AddRefs(directoryLocation));
if( directoryLocation ) rv = tempFile->MoveTo(directoryLocation, fileName);
}
moz->MyBrowser->app_launcher = NULL;
}
else {
MozSavePageAs( m_pOwner, moz->download_dest, Pt_MOZ_SAVEAS_HTML );
}
}
cbinfo.reason = Pt_CB_MOZ_COMPLETE;
cbinfo.cbdata = &cbcomplete;
memset( &cbcomplete, 0, sizeof( PtWebCompleteCallback_t ) );
char *s = ToNewCString(surl);
strcpy( cbcomplete.url, s );
free( s );
if( ( cb = moz->complete_cb ) )
PtInvokeCallbackList(cb, (PtWidget_t *) moz, &cbinfo);
}
else
{
cbinfo.reason = Pt_CB_MOZ_NET_STATE;
cbinfo.cbdata = &state;
state.flags = progressStateFlags;
state.status = aStatus;
PtInvokeCallbackList(cb, (PtWidget_t *) moz, &cbinfo);
cbinfo.cbdata = NULL;
{
PRInt32 flags = progressStateFlags;
char *statusMessage = "none";
int status = aStatus;
if (flags & GTK_MOZ_EMBED_FLAG_IS_REQUEST)
{
if (flags & GTK_MOZ_EMBED_FLAG_REDIRECTING)
statusMessage = "Redirecting to site...";
else if (flags & GTK_MOZ_EMBED_FLAG_TRANSFERRING)
statusMessage = "Transferring data from site...";
else if (flags & GTK_MOZ_EMBED_FLAG_NEGOTIATING)
statusMessage = "Waiting for authorization...";
}
}
if (status == GTK_MOZ_EMBED_STATUS_FAILED_DNS)
statusMessage = "Site not found.";
else if (status == GTK_MOZ_EMBED_STATUS_FAILED_CONNECT)
statusMessage = "Failed to connect to site.";
else if (status == GTK_MOZ_EMBED_STATUS_FAILED_TIMEOUT)
statusMessage = "Failed due to connection timeout.";
else if (status == GTK_MOZ_EMBED_STATUS_FAILED_USERCANCELED)
statusMessage = "User canceled connecting to site.";
// invoke the raw status callbacks for page load status
cbinfo.reason = Pt_CB_MOZ_NET_STATE;
cbinfo.cbdata = &state;
state.flags = progressStateFlags;
state.status = aStatus;
state.url = (char *)ToNewCString(surl);
char *statusMessage = "";
PRInt32 flags = progressStateFlags;
if (flags & GTK_MOZ_EMBED_FLAG_IS_DOCUMENT)
{
if (flags & GTK_MOZ_EMBED_FLAG_START)
statusMessage = "Loading site...";
else if (flags & GTK_MOZ_EMBED_FLAG_STOP)
statusMessage = "Done.";
}
printf("NET CHANGE: %s\n", statusMessage);
}
}
}
if (flags & STATE_IS_REQUEST)
{
if (flags & STATE_REDIRECTING)
statusMessage = "Redirecting to site:";
else if (flags & STATE_TRANSFERRING)
statusMessage = "Receiving Data:";
else if (flags & STATE_NEGOTIATING)
statusMessage = "Waiting for authorization:";
}
return NS_OK;
}
if (flags & STATE_IS_DOCUMENT)
{
if (flags & STATE_START)
statusMessage = "Loading site:";
else if (flags & STATE_STOP)
statusMessage = "Finishing:";
}
state.message = statusMessage;
if( ( cb = moz->net_state_cb ) && statusMessage[0])
PtInvokeCallbackList(cb, (PtWidget_t *) moz, &cbinfo);
return NS_OK;
}
@ -398,8 +461,20 @@ CWebBrowserContainer::OnStatusChange(nsIWebProgress* aWebProgress,
nsresult aStatus,
const PRUnichar* aMessage)
{
return NS_OK;
PtMozillaWidget_t *moz = (PtMozillaWidget_t *) m_pOwner;
/* mozilla was saving a file as a result of Pt_ARG_MOZ_DOWNLOAD or Pt_ARG_MOZ_UNKNOWN_RESP */
if( moz->MyBrowser->app_launcher && moz->download_dest ) {
return Pt_CONTINUE;
}
if( aMessage ) {
nsString pp(aMessage);
char *message = ToNewCString(pp);
InvokeInfoCallback( Pt_MOZ_INFO_CONNECT, (unsigned int) 0, message );
delete [] message;
}
return NS_OK;
}
NS_IMETHODIMP
@ -427,6 +502,56 @@ CWebBrowserContainer::OnSecurityChange(nsIWebProgress *aWebProgress,
return NS_ERROR_NOT_IMPLEMENTED;
}
///////////////////////////////////////////////////////////////////////////////
// nsIDNSListener
/* void OnStartLookup (in nsISupports ctxt, in string hostname); */
NS_IMETHODIMP CWebBrowserContainer::OnStartLookup(nsISupports *ctxt, const char *hostname)
{
PtMozillaWidget_t *moz = (PtMozillaWidget_t *) m_pOwner;
PtCallbackList_t *cb = NULL;
PtCallbackInfo_t cbinfo;
PtMozillaNetStateCb_t state;
cbinfo.reason = Pt_CB_MOZ_NET_STATE;
cbinfo.cbdata = &state;
state.flags = 0;
state.status = 0;
state.url = (char *)hostname;
char *statusMessage = "Resolving host name:";
state.message = statusMessage;
if( ( cb = moz->net_state_cb ) )
PtInvokeCallbackList(cb, (PtWidget_t *) moz, &cbinfo);
return NS_OK;
}
/* [noscript] void OnFound (in nsISupports ctxt, in string hostname, in nsHostEntStar entry); */
NS_IMETHODIMP CWebBrowserContainer::OnFound(nsISupports *ctxt, const char *hostname, nsHostEnt * entry)
{
PtMozillaWidget_t *moz = (PtMozillaWidget_t *) m_pOwner;
PtCallbackList_t *cb = NULL;
PtCallbackInfo_t cbinfo;
PtMozillaNetStateCb_t state;
cbinfo.reason = Pt_CB_MOZ_NET_STATE;
cbinfo.cbdata = &state;
state.flags = 0;
state.status = 0;
state.url = (char *)hostname;
char *statusMessage = "Opening connection:";
state.message = statusMessage;
if( ( cb = moz->net_state_cb ) )
PtInvokeCallbackList(cb, (PtWidget_t *) moz, &cbinfo);
return NS_OK;
}
/* void OnStopLookup (in nsISupports ctxt, in string hostname, in nsresult status); */
NS_IMETHODIMP CWebBrowserContainer::OnStopLookup(nsISupports *ctxt, const char *hostname, nsresult status)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
///////////////////////////////////////////////////////////////////////////////
// nsIURIContentListener
@ -467,7 +592,7 @@ NS_IMETHODIMP CWebBrowserContainer::DoContent(const char *aContentType, PRBool a
/* boolean isPreferred (in string aContentType, out string aDesiredContentType); */
NS_IMETHODIMP CWebBrowserContainer::IsPreferred(const char *aContentType, char **aDesiredContentType, PRBool *aCanHandleContent)
NS_IMETHODIMP CWebBrowserContainer::IsPreferred(const char *aContentType, nsURILoadCommand aCommand, char **aDesiredContentType, PRBool *aCanHandleContent)
{
if (aContentType &&
@ -951,6 +1076,7 @@ CWebBrowserContainer::SetChromeFlags(PRUint32 aChromeFlags)
NS_IMETHODIMP
CWebBrowserContainer::CreateBrowserWindow(PRUint32 chromeFlags, PRInt32 aX, PRInt32 aY, PRInt32 aCX, PRInt32 aCY, nsIWebBrowser **_retval)
{
/* ATENTIE */ printf( "CreateBrowserWindow!!!!!!!!!!!\n\n\n" );
return NS_ERROR_FAILURE;
}
@ -958,6 +1084,7 @@ CWebBrowserContainer::CreateBrowserWindow(PRUint32 chromeFlags, PRInt32 aX, PRI
NS_IMETHODIMP
CWebBrowserContainer::SizeBrowserTo(PRInt32 aCX, PRInt32 aCY)
{
/* ATENTIE */ printf( "SizeBrowserTo!!!!!!!!!!!\n\n\n" );
return NS_ERROR_FAILURE;
}
@ -1004,6 +1131,7 @@ CWebBrowserContainer::GetPersistence(PRBool* aPersistX, PRBool* aPersistY,
NS_IMETHODIMP
CWebBrowserContainer::OnStartRequest(nsIRequest *request, nsISupports *ctxt)
{
/* ATENTIE */ printf("!!!!!!!!!!!!! OnStartRequest\n\n\n" );
return NS_OK;
}
@ -1011,6 +1139,7 @@ CWebBrowserContainer::OnStartRequest(nsIRequest *request, nsISupports *ctxt)
NS_IMETHODIMP
CWebBrowserContainer::OnStopRequest(nsIRequest *request, nsISupports *ctxt, nsresult statusCode)
{
/* ATENTIE */ printf("!!!!!!!!!!!!! OnStopRequest\n\n\n" );
return NS_OK;
}

View File

@ -60,6 +60,7 @@
#include "nsIDOMWindowInternal.h"
#include "nsIChromeEventHandler.h"
#include "nsIURIContentListener.h"
#include "nsIDNSListener.h"
// This is the class that handles the XPCOM side of things, callback
// interfaces into the web shell and so forth.
@ -76,7 +77,8 @@ class CWebBrowserContainer :
public nsIContextMenuListener,
public nsICommandHandler,
public nsIPrintListener,
public nsSupportsWeakReference
public nsIDNSListener,
public nsSupportsWeakReference
{
public:
CWebBrowserContainer(PtWidget_t *pOwner);
@ -88,6 +90,7 @@ public:
NS_IMETHOD AppendToStream( const char *aData, int32 aLen );
NS_IMETHOD CloseStream( void );
NS_IMETHOD IsStreaming( void );
void RequestToURIString(nsIRequest *aRequest, char **aString);
// this will get the PIDOMWindow for this widget
nsresult GetPIDOMWindow( nsPIDOMWindow **aPIWin );
@ -95,7 +98,7 @@ public:
virtual ~CWebBrowserContainer();
PtWidget_t *m_pOwner;
PRBool mSkipOnState;
PRBool mSkipOnState, mDownloadDocument;
// Protected members
protected:
@ -113,9 +116,11 @@ public:
NS_DECL_NSIREQUESTOBSERVER
NS_DECL_NSIINTERFACEREQUESTOR
NS_DECL_NSIWEBPROGRESSLISTENER
NS_DECL_NSICONTEXTMENULISTENER
NS_DECL_NSICOMMANDHANDLER
NS_DECL_NSICONTEXTMENULISTENER
NS_DECL_NSICOMMANDHANDLER
NS_DECL_NSIPRINTLISTENER
NS_DECL_NSIDNSLISTENER
private:
nsCOMPtr<nsIInputStream> mStream;

View File

@ -43,7 +43,6 @@
#include "xp_core.h"
#include "jscompat.h"
#include "prthread.h"
#include "prprf.h"