netsurf/javascript/jsapi/navigator.bnd
Vincent Sanders 02bbaa3e88 split version info into its own header and remove unnecessary nesurf.h includes
The netsurf.h header should *only* contain the registration, core
initialisation and finalisation methods. Version information is best
placed in its own header.

Also remove any unneeded inclusion of this header limiting it to
solely the places the relevant API is required.
2014-10-13 15:08:16 +01:00

122 lines
4.0 KiB
Plaintext

/* Binding to generate Navigator interface
*
* Copyright 2012 Vincent Sanders <vince@netsurf-browser.org>
*
* This file is part of NetSurf, http://www.netsurf-browser.org/
*
* Released under the terms of the MIT License,
* http://www.opensource.org/licenses/mit-license
*/
webidlfile "html.idl";
hdrcomment "Copyright 2012 Vincent Sanders <vince@netsurf-browser.org>";
hdrcomment "This file is part of NetSurf, http://www.netsurf-browser.org/";
hdrcomment "Released under the terms of the MIT License,";
hdrcomment " http://www.opensource.org/licenses/mit-license";
preamble %{
#include <assert.h>
#include <stdlib.h>
#include "desktop/version.h"
#include "utils/config.h"
#include "utils/nsoption.h"
#include "utils/useragent.h"
#include "utils/log.h"
#include "utils/utsname.h"
#include "javascript/jsapi.h"
#include "navigator.h"
/*
* navigator properties for netsurf
*
* Property | Everyone else | NetSurf | Notes
* ------------+-----------------+--------------+------------------------------
* appCodeName | "Mozilla" | "NetSurf" | This is kinda a pointless
* | | | constant as everyone returns
* | | | "Mozilla" which is dumb
* ------------+-----------------+--------------+------------------------------
* appName | "<Browsername>" | "NetSurf" | Browsers named other than
* | | | "Netscape", "Mozilla",
* | | | "Netscape Navigator",
* | | | "Microsoft Internet Explorer"
* | | | often other browser have
* | | | "(compatible with Netscape)"
* | | | append.
* ------------+-----------------+--------------+------------------------------
* appVersion | "<ver> (<type>)"| "<ver>" | Actually just the version
* | | | number e.g "3.0".
* ------------+-----------------+--------------+------------------------------
* language | "<lang>" | "<lang>" | The language the frontend is
* | | | configured for
* ------------+-----------------+--------------+------------------------------
* platform | "<krn> <hw>" | "<krn> <hw>" | Efectively uname -s -i,
* | | | eg "Linux x86_64"
* ------------+-----------------+--------------+------------------------------
* userAgent | "Mozilla/5.0 (" | "NetSurf" | The usual useragent string
* | | | with excessive lies
* ------------+-----------------+--------------+------------------------------
*/
#define NAVIGATOR_APPNAME "NetSurf"
#define NAVIGATOR_APPCODENAME "NetSurf"
%}
binding navigator {
type js_libdom; /* the binding type */
interface Navigator; /* Web IDL interface to generate */
}
getter appName %{
jsret = JS_NewStringCopyZ(cx, NAVIGATOR_APPNAME);
%}
getter appCodeName %{
jsret = JS_NewStringCopyZ(cx, NAVIGATOR_APPCODENAME);
%}
getter appVersion %{
jsret = JS_NewStringCopyZ(cx, netsurf_version);
%}
getter language %{
const char *alang = nsoption_charp(accept_language);
if (alang != NULL) {
jsret = JS_NewStringCopyZ(cx, alang);
}
%}
getter platform %{
struct utsname *cutsname;
cutsname = malloc(sizeof(struct utsname));
if (cutsname != NULL) {
if (uname(cutsname) >= 0) {
char *platstr;
int platstrlen;
platstrlen = strlen(cutsname->sysname) + strlen(cutsname->machine) + 2;
platstr = malloc(platstrlen);
if (platstr != NULL) {
snprintf(platstr, platstrlen, "%s %s", cutsname->sysname, cutsname->machine);
jsret = JS_NewStringCopyN(cx, platstr, platstrlen - 1);
free(platstr);
}
}
free(cutsname);
}
%}
getter userAgent %{
jsret = JS_NewStringCopyZ(cx, user_agent_string());
%}