Skip to content

Latest commit

 

History

History
512 lines (372 loc) · 12.6 KB

CobaltPlugin.md

File metadata and controls

512 lines (372 loc) · 12.6 KB

Cobalt Plugin

Version: 1.0

Status: ⚫⚪⚪

Cobalt plugin for Thunder framework.

Table of Contents

Introduction

Scope

This document describes purpose and functionality of the Cobalt plugin. It includes detailed specification about its configuration, methods and properties as well as sent notifications.

Case Sensitivity

All identifiers of the interfaces described in this document are case-sensitive. Thus, unless stated otherwise, all keywords, entities, properties, relations and actions should be treated as such.

Acronyms, Abbreviations and Terms

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.

References

Ref ID Description
HTTP HTTP specification
JSON-RPC JSON-RPC 2.0 specification
JSON JSON specification
Thunder Thunder API Reference

Description

The Cobalt plugin provides web browsing functionality based on the Cobalt engine.

The plugin is designed to be loaded and executed within the Thunder framework. For more information about the framework refer to [Thunder].

Configuration

The table below lists configuration options of the plugin.

Name Type Description
callsign string Plugin instance name (default: Cobalt)
classname string Class name: Cobalt
locator string Library name: libThunderCobalt.so
startmode string Determines if the plugin shall be started automatically along with the framework
configuration object (optional)
configuration?.url string (optional) The URL that is loaded upon starting the browser
configuration?.width number (optional) The width in pixels of the surface to be used by the application
configuration?.height number (optional) The height in pixels of the surface to be used by the application
configuration?.repeatstart number (optional) The number of milliseconds a key should be pressed to start reapeating (set max to adhere to Thunder)
configuration?.repeatinterval number (optional) The number of milliseconds the repeated key is send after it started repeating (set max to adhere to Thunder)
configuration?.clientidentifier string (optional) An identifier, used during the surface creation as additional information
configuration?.operatorname string (optional) The name of the operator that owns the infrastructure on which this device is running
configuration?.language string (optional) The language to be used to for user interaction
configuration?.connection string (optional) The type of connection that is used for internet connectivity (must be one of the following: cable, wireless)
configuration?.playbackrates boolean (optional) If enabled, Cobalt supports different rates, otherwise, it supports only 0 and 1 (default: true)

Interfaces

This plugin implements the following interfaces:

Methods

The following methods are provided by the Cobalt plugin:

Browser interface methods:

Method Description
delete Removes contents of a directory from the persistent storage

delete method

Removes contents of a directory from the persistent storage.

Description

Use this method to recursively delete contents of a directory

Parameters

Name Type Description
params object
params.path string Path to directory (within the persistent storage) to delete contents of

Result

Name Type Description
result null Always null

Errors

Code Message Description
22 ERROR_UNKNOWN_KEY The given path was incorrect

Example

Request

{
  "jsonrpc": "2.0",
  "id": 42,
  "method": "Cobalt.1.delete",
  "params": {
    "path": ".cache/wpe/disk-cache"
  }
}

Response

{
  "jsonrpc": "2.0",
  "id": 42,
  "result": null
}

Properties

The following properties are provided by the Cobalt plugin:

Browser interface properties:

Property Description
url URL loaded in the browser
visibility Current browser visibility
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 URL loaded in the browser.

Also see: urlchange

Value

Name Type Description
(property) string URL loaded in the browser

Result

Name Type Description
result string

Errors

Code Message Description
15 ERROR_INCORRECT_URL Incorrect URL given

Example

Get Request

{
  "jsonrpc": "2.0",
  "id": 42,
  "method": "Cobalt.1.url"
}

Get Response

{
  "jsonrpc": "2.0",
  "id": 42,
  "result": "https://www.google.com"
}

Set Request

{
  "jsonrpc": "2.0",
  "id": 42,
  "method": "Cobalt.1.url",
  "params": "https://www.google.com"
}

Set Response

{
    "jsonrpc": "2.0",
    "id": 42,
    "result": "null"
}

visibility property

Provides access to the current browser visibility.

Also see: visibilitychange

Value

Name Type Description
(property) string Current browser visibility (must be one of the following: visible, hidden)

Result

Name Type Description
result string (must be one of the following: visible, hidden)

Errors

Code Message Description
2 ERROR_UNAVAILABLE Returned when the operation is unavailable

Example

Get Request

{
  "jsonrpc": "2.0",
  "id": 42,
  "method": "Cobalt.1.visibility"
}

Get Response

{
  "jsonrpc": "2.0",
  "id": 42,
  "result": "visible"
}

Set Request

{
  "jsonrpc": "2.0",
  "id": 42,
  "method": "Cobalt.1.visibility",
  "params": "visible"
}

Set Response

{
    "jsonrpc": "2.0",
    "id": 42,
    "result": "null"
}

Provides access to the current number of frames per second the browser is rendering.

This property is read-only.

Value

Result

Name Type Description
result number Current number of frames per second the browser is rendering

Example

Get Request

{
  "jsonrpc": "2.0",
  "id": 42,
  "method": "Cobalt.1.fps"
}

Get Response

{
  "jsonrpc": "2.0",
  "id": 42,
  "result": 30
}

state property

Provides access to the running state of the service.

Also see: statechange

Value

Name Type Description
(property) string Running state of the service (must be one of the following: resumed, suspended)

Result

Name Type Description
result string (must be one of the following: resumed, suspended)

Example

Get Request

{
  "jsonrpc": "2.0",
  "id": 42,
  "method": "Cobalt.1.state"
}

Get Response

{
  "jsonrpc": "2.0",
  "id": 42,
  "result": "resumed"
}

Set Request

{
  "jsonrpc": "2.0",
  "id": 42,
  "method": "Cobalt.1.state",
  "params": "resumed"
}

Set Response

{
    "jsonrpc": "2.0",
    "id": 42,
    "result": "null"
}

Notifications

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 Cobalt plugin:

Browser interface events:

Event Description
urlchange Signals a URL change in the browser
visibilitychange Signals a visibility change of the browser

StateControl interface events:

Event Description
statechange Signals a state change of the service

urlchange event

Signals a URL change in the browser.

Parameters

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)

Example

{
  "jsonrpc": "2.0",
  "method": "client.events.1.urlchange",
  "params": {
    "url": "https://www.google.com",
    "loaded": false
  }
}

visibilitychange event

Signals a visibility change of the browser.

Parameters

Name Type Description
params object
params.hidden boolean Determines if the browser has been hidden (true) or made visible (false)

Example

{
  "jsonrpc": "2.0",
  "method": "client.events.1.visibilitychange",
  "params": {
    "hidden": false
  }
}

statechange event

Signals a state change of the service.

Parameters

Name Type Description
params object
params.suspended boolean Determines if the service has entered suspended state (true) or resumed state (false)

Example

{
  "jsonrpc": "2.0",
  "method": "client.events.1.statechange",
  "params": {
    "suspended": false
  }
}