mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 12:25:53 +00:00
Not part of build
Photon embedding update
This commit is contained in:
parent
03051ca0c1
commit
f19c812ba7
@ -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 \
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -43,7 +43,6 @@
|
||||
|
||||
|
||||
#include "xp_core.h"
|
||||
#include "jscompat.h"
|
||||
|
||||
#include "prthread.h"
|
||||
#include "prprf.h"
|
||||
|
Loading…
Reference in New Issue
Block a user