1) makes linux compile (but still doesnt run)
2) uses the generic factory approach to create standard component overrides.
3) implemented fullscreen interface for window ce.
This commit is contained in:
dougt%meer.net 2005-08-14 05:49:09 +00:00
Родитель 3d3e98c72d
Коммит e3624203c0
4 изменённых файлов: 141 добавлений и 58 удалений

Просмотреть файл

@ -107,7 +107,7 @@ include $(topsrcdir)/config/config.mk
ifdef WINCE ifdef WINCE
LOCAL_INCLUDES += -I$(srcdir)/wince LOCAL_INCLUDES += -I$(srcdir)/wince
OS_LIBS += $(call EXPAND_LIBNAME, aygshell cellcore) OS_LIBS += $(call EXPAND_LIBNAME, aygshell cellcore uuid ole32 oleaut32)
endif endif

Просмотреть файл

@ -36,6 +36,9 @@
#include "MinimoPrivate.h" #include "MinimoPrivate.h"
#include "nsIFullScreen.h"
#include "nsIGenericFactory.h"
#ifdef _BUILD_STATIC_BIN #ifdef _BUILD_STATIC_BIN
#include "nsStaticComponents.h" #include "nsStaticComponents.h"
#endif #endif
@ -50,48 +53,6 @@ PRBool gDumpJSConsole = PR_FALSE;
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);
class nsBrowserStatusFilterFactory : public nsIFactory
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIFACTORY
nsBrowserStatusFilterFactory();
~nsBrowserStatusFilterFactory() { }
};
nsBrowserStatusFilterFactory::nsBrowserStatusFilterFactory()
{
}
NS_IMPL_ISUPPORTS1(nsBrowserStatusFilterFactory, nsIFactory)
NS_IMETHODIMP
nsBrowserStatusFilterFactory::CreateInstance(nsISupports* aOuter,
const nsIID& aIID,
void* *aResult)
{
NS_ENSURE_NO_AGGREGATION(aOuter);
nsBrowserStatusFilter* filter = new nsBrowserStatusFilter();
if (!filter)
return NS_ERROR_OUT_OF_MEMORY;
nsresult rv = filter->QueryInterface(aIID, aResult);
if (NS_FAILED(rv))
delete filter;
return rv;
}
NS_IMETHODIMP
nsBrowserStatusFilterFactory::LockFactory(PRBool)
{
return NS_OK;
}
class ApplicationObserver: public nsIObserver class ApplicationObserver: public nsIObserver
{ {
public: public:
@ -174,6 +135,81 @@ ApplicationObserver::Observe(nsISupports *aSubject, const char *aTopic, const PR
return NS_OK; return NS_OK;
} }
class nsFullScreen : public nsIFullScreen
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIFULLSCREEN
nsFullScreen();
~nsFullScreen();
#ifdef WINCE
HWND hTaskBarWnd;
#endif
};
NS_IMPL_ISUPPORTS1(nsFullScreen, nsIFullScreen)
nsFullScreen::nsFullScreen()
{
#ifdef WINCE
hTaskBarWnd = FindWindow("HHTaskBar", NULL);
#endif
}
nsFullScreen::~nsFullScreen()
{
}
NS_IMETHODIMP
nsFullScreen::HideAllOSChrome()
{
#ifndef WINCE
return NS_ERROR_NOT_IMPLEMENTED;
#else
if (!hTaskBarWnd)
return NS_ERROR_NOT_INITIALIZED;
SetWindowPos(hTaskBarWnd,
HWND_NOTOPMOST,
0, 0, 0, 0,
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
ShowWindow(hTaskBarWnd, SW_HIDE);
return NS_OK;
#endif
}
NS_IMETHODIMP
nsFullScreen::ShowAllOSChrome()
{
#ifndef WINCE
return NS_ERROR_NOT_IMPLEMENTED;
#else
if (!hTaskBarWnd)
return NS_ERROR_NOT_INITIALIZED;
SetWindowPos(hTaskBarWnd,
HWND_TOPMOST,
0, 0, 0, 0,
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
ShowWindow(hTaskBarWnd, SW_SHOW);
return NS_OK;
#endif
}
NS_IMETHODIMP
nsFullScreen::GetChromeItems(nsISimpleEnumerator **_retval)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
nsresult StartupProfile() nsresult StartupProfile()
{ {
NS_TIMELINE_MARK_FUNCTION("Profile Startup"); NS_TIMELINE_MARK_FUNCTION("Profile Startup");
@ -211,23 +247,59 @@ void DoPreferences()
prefBranch->GetBoolPref("config.wince.dumpJSConsole", &gDumpJSConsole); prefBranch->GetBoolPref("config.wince.dumpJSConsole", &gDumpJSConsole);
} }
#define NS_FULLSCREEN_CID \
{ /* aca93a4e-53f8-40e2-a59b-9363a0bf9a87 */ \
0xaca93a4e, \
0x53f8, \
0x40e2, \
{0xa5, 0x9b, 0x93, 0x63, 0xa0, 0xbf, 0x9a, 0x87} \
}
NS_GENERIC_FACTORY_CONSTRUCTOR(nsBrowserStatusFilter);
NS_GENERIC_FACTORY_CONSTRUCTOR(nsFullScreen);
static const nsModuleComponentInfo defaultAppComps[] = {
{
NS_BROWSERSTATUSFILTER_CLASSNAME,
NS_BROWSERSTATUSFILTER_CID,
NS_BROWSERSTATUSFILTER_CONTRACTID,
nsBrowserStatusFilterConstructor
},
{
"FullScreen",
NS_FULLSCREEN_CID,
"@mozilla.org/browser/fullscreen;1",
nsFullScreenConstructor
},
};
void OverrideComponents() void OverrideComponents()
{ {
static NS_DEFINE_CID(kBrowserStatusFilter, NS_BROWSERSTATUSFILTER_CID); int count = sizeof(defaultAppComps) / sizeof(nsModuleComponentInfo);
nsCOMPtr<nsIComponentRegistrar> registrar; nsCOMPtr<nsIComponentRegistrar> cr;
NS_GetComponentRegistrar(getter_AddRefs(registrar)); NS_GetComponentRegistrar(getter_AddRefs(cr));
nsBrowserStatusFilterFactory* factory = new nsBrowserStatusFilterFactory(); nsCOMPtr<nsIComponentManager> cm;
NS_GetComponentManager (getter_AddRefs (cm));
if (!factory)
return; for (int i = 0; i < count; ++i)
{
if (registrar) nsCOMPtr<nsIGenericFactory> componentFactory;
registrar->RegisterFactory(kBrowserStatusFilter, nsresult rv = NS_NewGenericFactory(getter_AddRefs(componentFactory), &(defaultAppComps[i]));
NS_BROWSERSTATUSFILTER_CLASSNAME,
NS_BROWSERSTATUSFILTER_CONTRACTID, if (NS_FAILED(rv)) {
factory); NS_WARNING("Unable to create factory for component");
continue; // don't abort registering other components
}
rv = cr->RegisterFactory(defaultAppComps[i].mCID,
defaultAppComps[i].mDescription,
defaultAppComps[i].mContractID,
componentFactory);
}
} }
#ifdef WINCE #ifdef WINCE
@ -343,6 +415,11 @@ void UnloadKnownLibs()
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
#ifdef MOZ_WIDGET_GTK2
gtk_set_locale();
gtk_init(&argc, &argv);
#endif
if (DoesProcessAlreadyExist()) if (DoesProcessAlreadyExist())
return 0; return 0;

Просмотреть файл

@ -43,6 +43,12 @@
#include <malloc.h> #include <malloc.h>
#include <memory.h> #include <memory.h>
// System header files
#ifdef MOZ_WIDGET_GTK2
#include <gtk/gtk.h>
#endif
// Mozilla header files // Mozilla header files
#include "nsAppDirectoryServiceDefs.h" #include "nsAppDirectoryServiceDefs.h"
#include "nsAppShellCID.h" #include "nsAppShellCID.h"

Просмотреть файл

@ -137,7 +137,7 @@ void CreateSplashScreen() {}
void KillSplashScreen() {} void KillSplashScreen() {}
void GetScreenSize(unsigned long* x, unsigned long* y) void GetScreenSize(unsigned long* x, unsigned long* y)
{ {
*x = *y = 0; *x = *y = 100;
} }