зеркало из https://github.com/mozilla/gecko-dev.git
Minimo only changes.
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:
Родитель
3d3e98c72d
Коммит
e3624203c0
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче