diff --git a/mozilla/webshell/embed/gtk/examples/simplebrowser/simplebrowser.c b/mozilla/webshell/embed/gtk/examples/simplebrowser/simplebrowser.c index 2154aff94ac..902a881e6f3 100644 --- a/mozilla/webshell/embed/gtk/examples/simplebrowser/simplebrowser.c +++ b/mozilla/webshell/embed/gtk/examples/simplebrowser/simplebrowser.c @@ -94,7 +94,7 @@ static void stream_clicked(GtkWidget *button, size = sizeof(buf); i = 0; while (size>0) { - c = gtk_mozilla_stream_write(moz, &buf[i], 0, size ); + c = gtk_mozilla_stream_write(moz, &buf[i], 0, size-1); size -= c; i += c; } diff --git a/mozilla/webshell/embed/gtk/lib/GtkMozillaContainer.cpp b/mozilla/webshell/embed/gtk/lib/GtkMozillaContainer.cpp index cf4daadcf0d..be2a29fa0c3 100644 --- a/mozilla/webshell/embed/gtk/lib/GtkMozillaContainer.cpp +++ b/mozilla/webshell/embed/gtk/lib/GtkMozillaContainer.cpp @@ -19,9 +19,9 @@ #include "nsRepository.h" #include "nsIWebShell.h" #include "nsIURL.h" -#ifdef NECKO +#include "nsIIOService.h" +#include "nsIServiceManager.h" #include "nsNeckoUtil.h" -#endif // NECKO #include "nsFileSpec.h" #include "nsIDocumentLoader.h" #include "nsIContentViewer.h" @@ -29,17 +29,8 @@ #include "nsIPref.h" - - -static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); -static NS_DEFINE_IID(kIWebShellIID, NS_IWEB_SHELL_IID); -static NS_DEFINE_IID(kWebShellCID, NS_WEB_SHELL_CID); -static NS_DEFINE_IID(kIWebShellContainerIID, NS_IWEB_SHELL_CONTAINER_IID); -static NS_DEFINE_IID(kIDocumentLoaderFactoryIID, NS_IDOCUMENTLOADERFACTORY_IID); - -// static NS_DEFINE_IID(kIPrefIID, NS_IPREF_IID); -// static NS_DEFINE_CID(kPrefCID, NS_PREF_CID); - +static NS_DEFINE_CID(kWebShellCID, NS_WEB_SHELL_CID); +static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); GtkMozillaContainer::GtkMozillaContainer(GtkMozilla *moz, nsIPref * aPrefs) { @@ -50,6 +41,7 @@ GtkMozillaContainer::GtkMozillaContainer(GtkMozilla *moz, nsIPref * aPrefs) mStream = nsnull; mChannel = nsnull; + mLoadGroup = nsnull; mContext = nsnull; mozilla = moz; @@ -65,13 +57,6 @@ GtkMozillaContainer::~GtkMozillaContainer(void) { NS_IF_RELEASE(mWebShell); NS_IF_RELEASE(mPrefs); - -// if (nsnull != mPrefs) -// { -// mPrefs->ShutDown(); - -// NS_RELEASE(mPrefs); -// } } void @@ -81,7 +66,7 @@ GtkMozillaContainer::Show() nsresult rv = nsRepository::CreateInstance(kWebShellCID, nsnull, - kIWebShellIID, + NS_GET_IID(nsIWebShell), (void**) &mWebShell); if (NS_FAILED(rv) || !mWebShell) @@ -89,22 +74,6 @@ GtkMozillaContainer::Show() printf("Cannot create WebShell!\n"); return; } - -// rv = nsComponentManager::CreateInstance(kPrefCID, -// nsnull, -// kIPrefIID, -// (void **) &mPrefs); - -// if (NS_OK != rv) -// { -// printf("Cannot create Prefs!\n"); -// return rv; -// } - - -// mPrefs->StartUp(); -// mPrefs->ReadUserPrefs(); - if (mozilla) { @@ -171,11 +140,7 @@ GtkMozillaContainer::Stop() void GtkMozillaContainer::Reload(GtkMozillaReloadType type) { -#ifdef NECKO mWebShell->Reload((nsLoadFlags)type); -#else - mWebShell->Reload((nsURLReloadType)type); -#endif } gint @@ -187,19 +152,18 @@ GtkMozillaContainer::Back() gint GtkMozillaContainer::CanBack() { - return mWebShell->CanBack()==NS_OK; + return mWebShell->CanBack()==NS_OK; } gint GtkMozillaContainer::Forward() { - return NS_SUCCEEDED(mWebShell->Forward()); + return NS_SUCCEEDED(mWebShell->Forward()); } gint GtkMozillaContainer::CanForward() { - nsresult rv = mWebShell->CanForward(); return mWebShell->CanForward()==NS_OK; } @@ -241,9 +205,9 @@ GtkMozillaContainer::QueryInterface(REFNSIID aIID, void** aInstancePtr) nsISupports *ifp = nsnull; - if (aIID.Equals(kIWebShellContainerIID)) { + if (aIID.Equals(NS_GET_IID(nsIWebShellContainer))) { ifp = (nsIWebShellContainer*)this; - } else if(aIID.Equals(kISupportsIID)) { + } else if(aIID.Equals(NS_GET_IID(nsISupports))) { ifp = this; } else { *aInstancePtr = 0; @@ -341,9 +305,9 @@ GtkMozillaContainer::EndLoadURL(nsIWebShell* aShell, nsresult GtkMozillaContainer::CreateContentViewer(const char *aCommand, - nsIChannel * aChannel, - nsILoadGroup * aLoadGroup, - const char* aContentType, + nsIChannel *aChannel, + nsILoadGroup *aLoadGroup, + const char *aContentType, nsIContentViewerContainer* aContainer, nsISupports* aExtraInfo, nsIStreamListener** aDocListenerResult, @@ -363,7 +327,7 @@ GtkMozillaContainer::CreateContentViewer(const char *aCommand, // Create an instance of the document-loader-factory object nsIDocumentLoaderFactory* factory; rv = nsComponentManager::CreateInstance(cid, (nsISupports *)nsnull, - kIDocumentLoaderFactoryIID, + NS_GET_IID(nsIDocumentLoaderFactory), (void **)&factory); if (NS_FAILED(rv)) { return rv; @@ -383,7 +347,6 @@ GtkMozillaContainer::CreateContentViewer(const char *aCommand, return rv; } - NS_IMETHODIMP GtkMozillaContainer::ProgressLoadURL(nsIWebShell* aShell, const PRUnichar* aURL, PRInt32 aProgress, PRInt32 aProgressMax) @@ -466,74 +429,91 @@ GtkMozillaContainer::FocusAvailable(nsIWebShell* aFocusedWebShell, PRBool& aFocu gint GtkMozillaContainer::StartStream(const char *base_url, const char *action, - nsISupports * ctxt) - // const char *content_type + nsISupports * ctxt, + const char *content_type) { -#if 0 nsresult rv = NS_OK; - nsString url_str(base_url); nsIURI* url = nsnull; nsIContentViewer* viewer = nsnull; - nsIStreamListener* listener = nsnull; -#ifndef NECKO - rv = NS_NewURL(&url, url_str, NULL, mWebShell); -#else - rv = NS_NewURI(&url, url_str, NULL); // XXX where should the container go? (mWebShell) -#endif // NECKO + NS_WITH_SERVICE(nsIIOService, serv, kIOServiceCID, &rv); + if (NS_FAILED(rv)) + goto error; - if (NS_FAILED(rv)) { - goto done; - } - - rv = CreateContentViewer(url, - content_type, - action, - mWebShell, - nsnull, - &listener, - &viewer); + mStream = new GtkMozillaInputStream(); + if (mStream == nsnull) + goto error; + NS_ADDREF(mStream); /* Own this */ + nsIInputStream *istream = NULL; + rv = CallQueryInterface(mStream, &istream); + if (NS_FAILED(rv)) + goto error; + + nsString url_str(base_url); + rv = NS_NewURI(&url, url_str, NULL); + if (NS_FAILED(rv)) + goto error; + + rv = NS_NewLoadGroup(nsnull, nsnull, nsnull, &mLoadGroup); + if (NS_FAILED(rv)) + goto error; + + rv = serv->NewInputStreamChannel(url, content_type, + 1024/*len*/, istream, + mLoadGroup , &mChannel); + if (NS_FAILED(rv)) + goto error; + + NS_RELEASE(istream); + + rv = CreateContentViewer(action, mChannel, mLoadGroup, content_type, + mWebShell, nsnull, &mListener, &viewer); if (NS_FAILED(rv)) { printf("GtkMozillaContainer: Unable to create ContentViewer for action=%s, content-type=%s\n", action, content_type); - goto done; + goto error; } rv = viewer->SetContainer((nsIContentViewerContainer*)mWebShell); - if (NS_FAILED(rv)) { - goto done; - } + if (NS_FAILED(rv)) + goto error; rv = mWebShell->Embed(viewer, action, nsnull); - if (NS_FAILED(rv)) { - goto done; - } + if (NS_FAILED(rv)) + goto error; /* * Pass the OnStartRequest(...) notification out to the document * IStreamListener. */ - rv = listener->OnStartRequest(url, content_type); - if (NS_FAILED(rv)) { - goto done; - } - - mStream = new GtkMozillaInputStream(); - - mChannel = url; + rv = mListener->OnStartRequest(mChannel, ctxt); + if (NS_FAILED(rv)) + goto error; mContext = ctxt; - - mListener = listener; - done: NS_IF_RELEASE(viewer); if (NS_SUCCEEDED(rv)) return 0; else return -1; -#endif + + error: + if (mStream != NULL) { + delete mStream; + mStream = NULL; + } + + NS_IF_RELEASE(istream); + NS_IF_RELEASE(url); + NS_IF_RELEASE(mLoadGroup); + NS_IF_RELEASE(mChannel); + NS_IF_RELEASE(viewer); + NS_IF_RELEASE(mListener); + + return -1; + } gint @@ -592,6 +572,7 @@ GtkMozillaContainer::EndStream(void) return; NS_IF_RELEASE(mChannel); + NS_IF_RELEASE(mLoadGroup); NS_IF_RELEASE(mListener); NS_IF_RELEASE(mStream); } diff --git a/mozilla/webshell/embed/gtk/lib/GtkMozillaContainer.h b/mozilla/webshell/embed/gtk/lib/GtkMozillaContainer.h index d819285fa68..f21885f1d04 100644 --- a/mozilla/webshell/embed/gtk/lib/GtkMozillaContainer.h +++ b/mozilla/webshell/embed/gtk/lib/GtkMozillaContainer.h @@ -86,7 +86,8 @@ public: /* Stream stuff: */ gint StartStream(const char *base_url, const char *action, - nsISupports * ctxt); + nsISupports * ctxt, + const char *content_type); gint WriteStream(const char *data, gint offset, @@ -111,10 +112,10 @@ protected: /* Stream stuff: */ GtkMozillaInputStream *mStream; -// nsIURI *mStreamURL; - nsIChannel * mChannel; - nsISupports * mContext; + nsIChannel *mChannel; + nsILoadGroup *mLoadGroup; + nsISupports *mContext; nsIStreamListener *mListener; }; diff --git a/mozilla/webshell/embed/gtk/lib/GtkMozillaInputStream.cpp b/mozilla/webshell/embed/gtk/lib/GtkMozillaInputStream.cpp index 26410ce6546..32e3fdb7c82 100644 --- a/mozilla/webshell/embed/gtk/lib/GtkMozillaInputStream.cpp +++ b/mozilla/webshell/embed/gtk/lib/GtkMozillaInputStream.cpp @@ -19,10 +19,6 @@ #include "stdio.h" -static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); -static NS_DEFINE_IID(kIInputStreamIID, NS_IINPUTSTREAM_IID); -static NS_DEFINE_IID(kIBaseStreamIID, NS_IBASESTREAM_IID); - GtkMozillaInputStream::GtkMozillaInputStream(void) { mBuffer = nsnull; @@ -41,11 +37,11 @@ GtkMozillaInputStream::QueryInterface(REFNSIID aIID, void** aInstancePtr) nsISupports *ifp = nsnull; - if (aIID.Equals(kIInputStreamIID)) { + if (aIID.Equals(NS_GET_IID(nsIInputStream))) { ifp = (nsIInputStream*)this; - } else if(aIID.Equals(kIBaseStreamIID)) { + } else if(aIID.Equals(NS_GET_IID(nsIBaseStream))) { ifp = (nsIBaseStream*)this;; - } else if(aIID.Equals(kISupportsIID)) { + } else if(aIID.Equals(NS_GET_IID(nsISupports))) { ifp = this; } else { *aInstancePtr = 0; diff --git a/mozilla/webshell/embed/gtk/lib/gtkmozilla.cpp b/mozilla/webshell/embed/gtk/lib/gtkmozilla.cpp index 1672cee2b57..46c025f1601 100644 --- a/mozilla/webshell/embed/gtk/lib/gtkmozilla.cpp +++ b/mozilla/webshell/embed/gtk/lib/gtkmozilla.cpp @@ -21,17 +21,11 @@ #include "nsIServiceManager.h" #include "nsIEventQueueService.h" #include "nsIPref.h" +#include "nsIThread.h" -#ifndef NECKO -#include "nsINetService.h" -#else #include "nsIIOService.h" -#endif // NECKO -//#include "nsXPComCIID.h" -static NS_DEFINE_IID(kIEventQueueServiceIID,NS_IEVENTQUEUESERVICE_IID); -static NS_DEFINE_IID(kEventQueueServiceCID,NS_EVENTQUEUESERVICE_CID); -static NS_DEFINE_IID(kIPrefIID, NS_IPREF_IID); +static NS_DEFINE_CID(kEventQueueServiceCID,NS_EVENTQUEUESERVICE_CID); static NS_DEFINE_CID(kPrefCID, NS_PREF_CID); extern "C" void NS_SetupRegistry(); @@ -178,8 +172,8 @@ gtk_mozilla_get_type (void) sizeof (GtkMozillaClass), (GtkClassInitFunc) gtk_mozilla_class_init, (GtkObjectInitFunc) gtk_mozilla_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, + 0, + 0 }; mozilla_type = gtk_type_unique (GTK_TYPE_LAYOUT, &mozilla_info); @@ -194,7 +188,7 @@ gtk_mozilla_get_type (void) // Create the Event Queue for the UI thread... nsresult rv = nsServiceManager::GetService(kEventQueueServiceCID, - kIEventQueueServiceIID, + NS_GET_IID(nsIEventQueueService), (nsISupports **)&aEventQService); if (!NS_SUCCEEDED(rv)) { @@ -223,7 +217,7 @@ gtk_mozilla_get_type (void) // Prefs rv = nsComponentManager::CreateInstance(kPrefCID, NULL, - kIPrefIID, + NS_GET_IID(nsIPref), (void **) & sPrefs); if (NS_OK != rv) { @@ -231,6 +225,7 @@ gtk_mozilla_get_type (void) return rv; } + printf("prefs created ok.\n"); @@ -242,6 +237,8 @@ gtk_mozilla_get_type (void) event_processor_callback, EQueue); + nsIThread::SetMainThread(); + } return mozilla_type; @@ -389,7 +386,7 @@ gtk_mozilla_stream_start(GtkMozilla *moz, class GtkMozillaContainer *moz_container; moz_container = (class GtkMozillaContainer *)moz->mozilla_container; -// return moz_container->StartStream(base_url, action, content_type); + return moz_container->StartStream(base_url, action, NULL, content_type); } gint diff --git a/mozilla/webshell/embed/gtk/lib/nsNewTimer.cpp b/mozilla/webshell/embed/gtk/lib/nsNewTimer.cpp index 8fce8822741..6e5daa70847 100644 --- a/mozilla/webshell/embed/gtk/lib/nsNewTimer.cpp +++ b/mozilla/webshell/embed/gtk/lib/nsNewTimer.cpp @@ -19,7 +19,6 @@ #include "nsUnixTimerCIID.h" #include "nsIComponentManager.h" -static NS_DEFINE_IID(kITimerIID, NS_ITIMER_IID); static NS_DEFINE_CID(kCTimerGtkCID, NS_TIMER_GTK_CID); ////////////////////////////////////////////////////////////////////////// @@ -48,7 +47,7 @@ nsresult NS_NewTimer(nsITimer ** aInstancePtrResult) } rv = factory->CreateInstance(NULL, - kITimerIID, + NS_GET_IID(nsITimer), (void **)& timer); NS_ASSERTION(NS_SUCCEEDED(rv),"Could not instanciate a timer.");