1 /* vim: se cin sw=2 ts=2 et : */
2 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
8 #include "GfxInfoWebGL.h"
10 #include "nsServiceManagerUtils.h"
13 #include "nsIDOMWebGLRenderingContext.h"
14 #include "nsICanvasRenderingContextInternal.h"
16 using namespace mozilla::widget
;
19 GfxInfoWebGL::GetWebGLParameter(const nsAString
& aParam
, nsAString
& aResult
)
23 if (aParam
.EqualsLiteral("vendor")) param
= LOCAL_GL_VENDOR
;
24 else if (aParam
.EqualsLiteral("renderer")) param
= LOCAL_GL_RENDERER
;
25 else if (aParam
.EqualsLiteral("version")) param
= LOCAL_GL_VERSION
;
26 else if (aParam
.EqualsLiteral("shading_language_version")) param
= LOCAL_GL_SHADING_LANGUAGE_VERSION
;
27 else if (aParam
.EqualsLiteral("extensions")) param
= LOCAL_GL_EXTENSIONS
;
28 else if (aParam
.EqualsLiteral("full-renderer")) param
= 0;
29 else return NS_ERROR_INVALID_ARG
;
31 nsCOMPtr
<nsIDOMWebGLRenderingContext
> webgl
=
32 do_CreateInstance("@mozilla.org/content/canvas-rendering-context;1?id=experimental-webgl");
34 return NS_ERROR_NOT_AVAILABLE
;
36 nsCOMPtr
<nsICanvasRenderingContextInternal
> webglInternal
=
37 do_QueryInterface(webgl
);
39 return NS_ERROR_NOT_AVAILABLE
;
41 nsresult rv
= webglInternal
->SetDimensions(16, 16);
42 NS_ENSURE_SUCCESS(rv
, rv
);
45 return webgl
->MozGetUnderlyingParamString(param
, aResult
);
47 // this is the "full renderer" string, which is vendor + renderer + version
51 rv
= webgl
->MozGetUnderlyingParamString(LOCAL_GL_VENDOR
, str
);
52 NS_ENSURE_SUCCESS(rv
, rv
);
55 aResult
.AppendLiteral(" -- ");
57 rv
= webgl
->MozGetUnderlyingParamString(LOCAL_GL_RENDERER
, str
);
58 NS_ENSURE_SUCCESS(rv
, rv
);
61 aResult
.AppendLiteral(" -- ");
63 rv
= webgl
->MozGetUnderlyingParamString(LOCAL_GL_VERSION
, str
);
64 NS_ENSURE_SUCCESS(rv
, rv
);