mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-04 15:51:37 +00:00
Update the GtkMozilla widget so it works. Also updated the streaming interface
so that it works with Necko. Small cleanups. Fixes 16576 and 14975. r=shaver
This commit is contained in:
parent
24633793d5
commit
9436a61696
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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.");
|
||||
|
Loading…
x
Reference in New Issue
Block a user