Add an nsIGfxInfo function to query monitors. (bug 1175005 part 1, r=mattwoodrow)

This commit is contained in:
David Anderson 2015-06-17 23:11:55 -07:00
parent e7e7541033
commit 5ebb5ec1c3
3 changed files with 32 additions and 2 deletions

View File

@ -1163,6 +1163,20 @@ GfxInfoBase::RemoveCollector(GfxInfoCollectorBase* collector)
}
}
NS_IMETHODIMP
GfxInfoBase::GetMonitors(JSContext* aCx, JS::MutableHandleValue aResult)
{
JS::Rooted<JSObject*> array(aCx, JS_NewArrayObject(aCx, 0));
nsresult rv = FindMonitors(aCx, array);
if (NS_FAILED(rv)) {
return rv;
}
aResult.setObject(*array);
return NS_OK;
}
GfxInfoCollectorBase::GfxInfoCollectorBase()
{
GfxInfoBase::AddCollector(this);

View File

@ -54,6 +54,7 @@ public:
NS_IMETHOD GetFeatureSuggestedDriverVersion(int32_t aFeature, nsAString & _retval) override;
NS_IMETHOD GetWebGLParameter(const nsAString & aParam, nsAString & _retval) override;
NS_IMETHOD GetMonitors(JSContext* cx, JS::MutableHandleValue _retval);
NS_IMETHOD GetFailures(uint32_t *failureCount, int32_t** indices, char ***failures) override;
NS_IMETHOD_(void) LogFailure(const nsACString &failure) override;
NS_IMETHOD GetInfo(JSContext*, JS::MutableHandle<JS::Value>) override;
@ -89,6 +90,10 @@ public:
return NS_ERROR_NOT_IMPLEMENTED;
}
virtual nsresult FindMonitors(JSContext* cx, JS::HandleObject array) {
return NS_ERROR_NOT_IMPLEMENTED;
}
protected:
virtual ~GfxInfoBase();

View File

@ -8,7 +8,7 @@
/* NOTE: this interface is completely undesigned, not stable and likely to change */
[scriptable, uuid(b0cd9d34-8dba-4b1d-8126-ca21826dbf35)]
[scriptable, uuid(47eedfa0-f7cb-445b-b5cf-a2ca83600560)]
interface nsIGfxInfo : nsISupports
{
/*
@ -54,6 +54,17 @@ interface nsIGfxInfo : nsISupports
readonly attribute boolean isGPU2Active;
/**
* Returns an array of objects describing each monitor. Guaranteed properties
* are "screenWidth" and "screenHeight". This is only implemented on Desktop.
*
* Windows additionally supplies "refreshRate" and "pseudoDisplay".
*
* OS X additionally supplies "scale".
*/
[implicit_jscontext]
jsval getMonitors();
void getFailures(
out unsigned long failureCount,
[optional, array, size_is(failureCount)] out long indices,