Version: 1.0
Status: ⚫⚫⚫
WebKitBrowser plugin for Thunder framework.
This document describes purpose and functionality of the WebKitBrowser plugin. It includes detailed specification of its configuration, methods and properties provided, as well as notifications sent.
All identifiers on the interface described in this document are case-sensitive. Thus, unless stated otherwise, all keywords, entities, properties, relations and actions should be treated as such.
The table below provides and overview of acronyms used in this document and their definitions.
Acronym | Description |
---|---|
API | Application Programming Interface |
HTTP | Hypertext Transfer Protocol |
JSON | JavaScript Object Notation; a data interchange format |
JSON-RPC | A remote procedure call protocol encoded in JSON |
The table below provides and overview of terms and abbreviations used in this document and their definitions.
Term | Description |
---|---|
callsign | The name given to an instance of a plugin. One plugin can be instantiated multiple times, but each instance the instance name, callsign, must be unique. |
Ref ID | Description |
---|---|
HTTP | HTTP specification |
JSON-RPC | JSON-RPC 2.0 specification |
JSON | JSON specification |
Thunder | Thunder API Reference |
The WebKitBrowser plugin provides web browsing functionality based on the WebKit engine.
The plugin is designed to be loaded and executed within the Thunder framework. For more information about the framework refer to [Thunder].
The table below lists configuration options of the plugin.
Name | Type | Description |
---|---|---|
callsign | string | Plugin instance name (default: WebKitBrowser) |
classname | string | Class name: WebKitBrowser |
locator | string | Library name: libWPEFrameworkWebKitBrowser.so |
autostart | boolean | Determines if the plugin is to be started automatically along with the framework |
configuration | object | (optional) |
configuration?.useragent | string | (optional) The UserAgent used during communication with the web server |
configuration?.url | string | (optional) The URL that is loaded upon starting the browser |
configuration?.injectedbundle | string | (optional) The name of the .so loaded to extend the HTML5 with customized JavaScript handlers |
configuration?.cookiestorage | string | (optional) Post-fixed path to the persistent location on where cookies will be stored |
configuration?.localstorage | string | (optional) Post-fixed path to the persistent location on where local-storage will be stored |
configuration?.certificatecheck | boolean | (optional) If enabled, SSL certificate error will lead to a page error |
configuration?.javascript | object | (optional) |
configuration?.javascript?.useLLInt | boolean | (optional) Enable Low Level Interpreter |
configuration?.javascript?.useJIT | boolean | (optional) Enable JIT |
configuration?.javascript?.useDFG | boolean | (optional) Enable Data-Flow-Graph-JIT compiler |
configuration?.javascript?.useFTL | boolean | (optional) Enable Faster-Than-Light-JIT compiler |
configuration?.javascript?.useDOM | boolean | (optional) Enable the DOM-JIT compiler |
configuration?.javascript?.dumpOptions | string | (optional) Dump options: 0 = None, 1 = Overridden only, 2 = All, 3 = Verbose |
configuration?.secure | boolean | (optional) If false, every domain can access any other domain, otherwise fill in fields in whitelist definition table |
configuration?.whitelist | object | (optional) |
configuration?.whitelist?.origin | string | (optional) Origin domain allowed to access domains in domain |
configuration?.whitelist?.domain | array | (optional) |
configuration?.whitelist?.domain[#] | string | (optional) Domain allowed to access from origin |
configuration?.whitelist?.subdomain | string | (optional) whether it is also OK to access subdomains of domains listed in domain |
configuration?.localstorageenabled | boolean | (optional) Controls the local storage availability |
configuration?.logtosystemconsoleenabled | boolean | (optional) Enable page loging to system console (stderr) |
configuration?.watchdogchecktimeoutinseconds | number | (optional) How often to check main event loop for responsiveness (0 - disable) |
configuration?.watchdoghangthresholdtinseconds | number | (optional) The amount of time to give a process to recover before declaring a hang state |
configuration?.loadblankpageonsuspendenabled | boolean | (optional) Load 'about:blank' before suspending the page |
The following methods are provided by the WebKitBrowser plugin:
WebKitBrowser interface methods:
Method | Description |
---|---|
bridgereply | A response for legacy $badger |
bridgeevent | Send legacy $badger event |
Browser interface methods:
Method | Description |
---|---|
delete | Removes contents of a directory from the persistent storage |
A response for legacy $badger.
Name | Type | Description |
---|---|---|
params | string | A base64 encoded JSON string response to be delivered to $badger.callback(pid, success, json) |
Name | Type | Description |
---|---|---|
result | null |
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.bridgereply",
"params": ""
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": null
}
Send legacy $badger event.
Name | Type | Description |
---|---|---|
params | string | A base64 encoded JSON string response to be delivered to window.$badger.event(handlerId, json) |
Name | Type | Description |
---|---|---|
result | null |
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.bridgeevent",
"params": ""
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": null
}
Removes contents of a directory from the persistent storage.
Use this method to recursively delete contents of a directory
Name | Type | Description |
---|---|---|
params | object | |
params.path | string | Path to directory (within the persistent storage) to delete contents of |
Name | Type | Description |
---|---|---|
result | null | Always null |
Code | Message | Description |
---|---|---|
22 | ERROR_UNKNOWN_KEY |
The given path was incorrect |
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.delete",
"params": {
"path": ".cache/wpe/disk-cache"
}
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": null
}
The following properties are provided by the WebKitBrowser plugin:
WebKitBrowser interface properties:
Property | Description |
---|---|
useragent | UserAgent string used by browser |
httpcookieacceptpolicy | HTTP cookies accept policy |
localstorageenabled | Controls the local storage availability |
languages | User preferred languages |
headers | Headers to send on all requests that the browser makes |
Browser interface properties:
Property | Description |
---|---|
url | URL loaded in the browser |
visible | Current browser visible |
fps RO | Current number of frames per second the browser is rendering |
StateControl interface properties:
Property | Description |
---|---|
state | Running state of the service |
Provides access to the userAgent string used by browser.
Name | Type | Description |
---|---|---|
(property) | string | UserAgent string used by browser |
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.useragent"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": "Mozilla/5.0 (Linux; x86_64 GNU/Linux) AppleWebKit/601.1 (KHTML, like Gecko) Version/8.0 Safari/601.1 WP"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.useragent",
"params": "Mozilla/5.0 (Linux; x86_64 GNU/Linux) AppleWebKit/601.1 (KHTML, like Gecko) Version/8.0 Safari/601.1 WP"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": "null"
}
Provides access to the HTTP cookies accept policy.
Name | Type | Description |
---|---|---|
(property) | string | HTTP cookies accept policy (must be one of the following: always, never, onlyfrommaindocumentdomain, exclusivelyfrommaindocumentdomain) |
Code | Message | Description |
---|---|---|
22 | ERROR_UNKNOWN_KEY |
Unknown policy |
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.httpcookieacceptpolicy"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": "always"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.httpcookieacceptpolicy",
"params": "always"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": "null"
}
Provides access to the controls the local storage availability.
Name | Type | Description |
---|---|---|
(property) | boolean | Controls the local storage availability |
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.localstorageenabled"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": false
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.localstorageenabled",
"params": false
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": "null"
}
Provides access to the user preferred languages.
Name | Type | Description |
---|---|---|
(property) | array | User preferred languages |
(property)[#] | string |
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.languages"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": [
"en-US"
]
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.languages",
"params": [
"en-US"
]
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": "null"
}
Provides access to the headers to send on all requests that the browser makes.
Name | Type | Description |
---|---|---|
(property) | array | Headers to send on all requests that the browser makes |
(property)[#] | object | |
(property)[#]?.name | string | (optional) Header name |
(property)[#]?.value | string | (optional) Header value |
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.headers"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": [
{
"name": "X-Forwarded-For",
"value": "::1"
}
]
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.headers",
"params": [
{
"name": "X-Forwarded-For",
"value": "::1"
}
]
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": "null"
}
Provides access to the URL loaded in the browser.
Also see: urlchange
Name | Type | Description |
---|---|---|
(property) | string | URL loaded in the browser |
Code | Message | Description |
---|---|---|
15 | ERROR_INCORRECT_URL |
Incorrect URL given |
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.url"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": "https://www.google.com"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.url",
"params": "https://www.google.com"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": "null"
}
Provides access to the current browser visible.
Also see: visibilitychange
Name | Type | Description |
---|---|---|
(property) | string | Current browser visible (must be one of the following: visible, hidden) |
Code | Message | Description |
---|---|---|
2 | ERROR_UNAVAILABLE |
Returned when the operation is unavailable |
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.visible"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": "visible"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.visible",
"params": "visible"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": "null"
}
Provides access to the current number of frames per second the browser is rendering.
This property is read-only.
Name | Type | Description |
---|---|---|
(property) | number | Current number of frames per second the browser is rendering |
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.fps"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": 30
}
Provides access to the running state of the service.
Also see: statechange
Name | Type | Description |
---|---|---|
(property) | string | Running state of the service (must be one of the following: resumed, suspended) |
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.state"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": "resumed"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"method": "WebKitBrowser.1.state",
"params": "resumed"
}
{
"jsonrpc": "2.0",
"id": 1234567890,
"result": "null"
}
Notifications are autonomous events, triggered by the internals of the implementation, and broadcasted via JSON-RPC to all registered observers.Refer to [Thunder] for information on how to register for a notification.
The following events are provided by the WebKitBrowser plugin:
WebKitBrowser interface events:
Event | Description |
---|---|
loadfinished | Initial HTML document has been completely loaded and parsed |
loadfailed | Browser failed to load page |
bridgequery | A Base64 encoded JSON message from legacy $badger bridge |
Browser interface events:
Event | Description |
---|---|
urlchange | Signals a URL change in the browser |
visibilitychange | Signals a visible change of the browser |
pageclosure | Notifies that the web page requests to close its window |
StateControl interface events:
Event | Description |
---|---|
statechange | Signals a state change of the service |
Initial HTML document has been completely loaded and parsed.
Name | Type | Description |
---|---|---|
params | object | |
params.url | string | The URL that has been loaded |
params.httpstatus | integer | The response code of main resource request |
{
"jsonrpc": "2.0",
"method": "client.events.1.loadfinished",
"params": {
"url": "https://example.com",
"httpstatus": 200
}
}
Browser failed to load page.
Name | Type | Description |
---|---|---|
params | object | |
params.url | string | The URL that browser failed to load |
{
"jsonrpc": "2.0",
"method": "client.events.1.loadfailed",
"params": {
"url": "https://example.com"
}
}
A Base64 encoded JSON message from legacy $badger bridge.
Name | Type | Description |
---|---|---|
params | string |
{
"jsonrpc": "2.0",
"method": "client.events.1.bridgequery",
"params": ""
}
Signals a URL change in the browser.
Name | Type | Description |
---|---|---|
params | object | |
params.url | string | The URL that has been loaded or requested |
params.loaded | boolean | Determines if the URL has just been loaded (true) or if URL change has been requested (false) |
{
"jsonrpc": "2.0",
"method": "client.events.1.urlchange",
"params": {
"url": "https://www.google.com",
"loaded": false
}
}
Signals a visible change of the browser.
Name | Type | Description |
---|---|---|
params | object | |
params.hidden | boolean | Determines if the browser has been hidden (true) or made visible (false) |
{
"jsonrpc": "2.0",
"method": "client.events.1.visibilitychange",
"params": {
"hidden": false
}
}
Notifies that the web page requests to close its window.
This event carries no parameters.
{
"jsonrpc": "2.0",
"method": "client.events.1.pageclosure"
}
Signals a state change of the service.
Name | Type | Description |
---|---|---|
params | object | |
params.suspended | boolean | Determines if the service has entered suspended state (true) or resumed state (false) |
{
"jsonrpc": "2.0",
"method": "client.events.1.statechange",
"params": {
"suspended": false
}
}