mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-23 20:46:50 +03:00
02bbaa3e88
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.
122 lines
4.0 KiB
Plaintext
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());
|
|
%}
|