Commits

Jan Borsodi committed a9a5154

Updated scope documentation with latest services (and some missing ones).

  • Participants
  • Parent commits 1d5c1b4

Comments (0)

Files changed (48)

File scope/_sources/services/ConsoleLogger.txt

    :maxdepth: 1
 
    2.0 <ConsoleLogger/ConsoleLogger_2_0.rst>
+   2.1 <ConsoleLogger/ConsoleLogger_2_1.rst>

File scope/_sources/services/ConsoleLogger/ConsoleLogger_2_1.txt

+=================
+ConsoleLogger 2.1
+=================
+
+:Generated:  hob rst-doc
+:Version:    2.1
+:Status:     Published
+
+Service
+=======
+
+The `console-logger` is a tool used to log and retrieve messages sent to
+Opera's console.
+
+All messages sent to the Opera console from the various
+modules in Opera are captured and displayed.
+
+Changelog
+---------
+:2.0: First release.
+:2.1: Added Clear and ListMessages.
+
+
+.. code-block:: c
+
+  service ConsoleLogger
+  {
+    option (cpp_hfile)    = "modules/scope/src/scope_console_logger.h";
+    option (core_release) = "2.5";
+    option (version)      = "2.1";
+    option (cpp_class)    = OpScopeConsoleLogger;
+  
+    command Clear(Default)        returns (Default)            = 2;
+    command ListMessages(Default) returns (ConsoleMessageList) = 3;
+    event   OnConsoleMessage      returns (ConsoleMessage)     = 1;
+  }
+
+
+
+Commands
+========
+
+.. index:: Clear
+
+``Clear``
+---------
+
+::
+
+  command Clear(Default) returns (Default) = 2;
+
+Clear all messages in the console *backend*, including messages outside
+the window filter (see the 'WindowManager' service for more information).
+This does not necessarily clear the UI error console used by Desktop or
+other projects, as they may choose to store the message information
+separately.
+
+It *will*, however, ensure that the next call to ListMessages contain
+*only* the messages that occurred between the call to Clear and the call
+to ListMessages.
+
+@since 2.1
+
+
+
+
+
+
+.. index:: ListMessages
+
+``ListMessages``
+----------------
+
+::
+
+  command ListMessages(Default) returns (ConsoleMessageList) = 3;
+
+Get messages previously dispatched to the console.
+
+Note that Opera does not store all console messages forever. There is a
+set history size determined by the preference 'Max Console Message' in
+the 'User Prefs' section. Use the 'Prefs' service to read this value, if
+desired.
+
+The return value will contain only messages that match the window filter.
+See the 'WindowManager' service for more information.
+
+@since 2.1
+
+
+
+returns:
+
+.. index:: ConsoleMessageList
+
+.. code-block:: c
+
+  /**
+   * A list of ConsoleMessages.
+   * 
+   * @since 2.1
+   */
+  message ConsoleMessageList
+  {
+    repeated ConsoleMessage consoleMessageList = 1;
+  }
+
+references:
+
+.. index:: ConsoleMessage
+
+.. code-block:: c
+
+  message ConsoleMessage
+  {
+    /**
+     * The window ID is shared across scope. Notably, it's the same as in the ecmascript debugger.
+     * INTERNAL: The value is from Window::id
+     */
+    required uint32 windowID    = 1;
+    /**
+     * 
+     * The number of seconds since 1970-01-01T00:00:00Z.
+     */
+    required uint32 time        = 2;
+    /**
+     * Description of the error. Sometimes this message only makes sense when
+     * displayed in a monospace font.
+     */
+    required string description = 3;
+    /**
+     * The URL of the entity (document, script, style file, etc) that caused the
+     * message to be generated.
+     */
+    optional string uri         = 4;
+    /**
+     * The context in which the message was generated; it is intended for human
+     * consumption and provides additional information about the context for the
+     * message.
+     */
+    optional string context     = 5;
+    /**
+     * The component in Opera that generated the message
+     * One of:
+     * - "ecmascript"
+     * - "java"
+     * - "m2"
+     * - "network"
+     * - "xml"
+     * - "html"
+     * - "css"
+     * - "xslt"
+     * - "svg"
+     * - "bittorrent"
+     * - "voice"
+     * - "widget"
+     * - "selftest"
+     */
+    optional string source      = 6;
+    /**
+     * One of:
+     * - "debug"
+     * - "verbose"
+     * - "information"
+     * - "error"
+     * - "critical"
+     */
+    optional string severity    = 7;
+  }
+
+
+
+Events
+======
+
+.. index:: OnConsoleMessage
+
+``OnConsoleMessage``
+--------------------
+
+::
+
+  event OnConsoleMessage returns (ConsoleMessage) = 1;
+
+
+message:
+
+
+.. code-block:: c
+
+  message ConsoleMessage
+  {
+    /**
+     * The window ID is shared across scope. Notably, it's the same as in the ecmascript debugger.
+     * INTERNAL: The value is from Window::id
+     */
+    required uint32 windowID    = 1;
+    /**
+     * 
+     * The number of seconds since 1970-01-01T00:00:00Z.
+     */
+    required uint32 time        = 2;
+    /**
+     * Description of the error. Sometimes this message only makes sense when
+     * displayed in a monospace font.
+     */
+    required string description = 3;
+    /**
+     * The URL of the entity (document, script, style file, etc) that caused the
+     * message to be generated.
+     */
+    optional string uri         = 4;
+    /**
+     * The context in which the message was generated; it is intended for human
+     * consumption and provides additional information about the context for the
+     * message.
+     */
+    optional string context     = 5;
+    /**
+     * The component in Opera that generated the message
+     * One of:
+     * - "ecmascript"
+     * - "java"
+     * - "m2"
+     * - "network"
+     * - "xml"
+     * - "html"
+     * - "css"
+     * - "xslt"
+     * - "svg"
+     * - "bittorrent"
+     * - "voice"
+     * - "widget"
+     * - "selftest"
+     */
+    optional string source      = 6;
+    /**
+     * One of:
+     * - "debug"
+     * - "verbose"
+     * - "information"
+     * - "error"
+     * - "critical"
+     */
+    optional string severity    = 7;
+  }
+
+
+

File scope/_sources/services/CookieManager.txt

    :maxdepth: 1
 
    1.0 <CookieManager/CookieManager_1_0.rst>
+   1.1 <CookieManager/CookieManager_1_1.rst>

File scope/_sources/services/CookieManager/CookieManager_1_1.txt

+=================
+CookieManager 1.1
+=================
+
+:Generated:  hob rst-doc
+:Version:    1.1.1
+:Status:     Published
+
+Service
+=======
+
+This service can enumerate and remove cookies for a certain domain.
+
+It can currently not add cookies, but this can be achieved through
+ECMAScript (document.cookie).
+
+Changelog:
+1.0 - First release
+1.0.1 - Fixed a bug in RemoveCookie where it would remove all cookies,
+        not just in the specified domain.
+1.1 - Added AddCookie
+1.1.1 - Fixed a bug in GetCookie where the filtering failed.
+
+
+.. code-block:: c
+
+  service CookieManager
+  {
+    option (version) = "1.1.1";
+  
+    command GetCookie(GetCookieArg)       returns (CookieList)     = 1;
+    command RemoveCookie(RemoveCookieArg) returns (Default)        = 2;
+    command RemoveAllCookies(Default)     returns (Default)        = 3;
+    command GetCookieSettings(Default)    returns (CookieSettings) = 4;
+    command AddCookie(AddCookieArg)       returns (Default)        = 5;
+  }
+
+
+
+Commands
+========
+
+.. index:: AddCookie
+
+``AddCookie``
+-------------
+
+::
+
+  command AddCookie(AddCookieArg) returns (Default) = 5;
+
+Add a new cookie, will overwrite exsisting with same domain/name
+
+@param  domain Name of domain, e.g. "opera.com"
+@param  name Name of cookie to add
+@param  path (optional, defaults to "/")
+@param  value (optional) Cookie value
+@param  expires (optional) This is seconds since epoch
+@param  isSecure (optional defaults to false) Only use this cookie on secure connections
+@param  isHTTPOnly (optional defaults to false) Only use this cookie for HTTP
+
+
+argument:
+
+.. index:: AddCookieArg
+
+.. code-block:: c
+
+  message AddCookieArg
+  {
+    /**
+     * Domain name of cookie
+     */
+    required string domain     = 1;
+    /**
+     * Name of cookie
+     */
+    required string name       = 2;
+    /**
+     * Path of cookie, defaults to /
+     */
+    optional string path       = 3;
+    /**
+     * Cookie value
+     */
+    optional string value      = 4;
+    /**
+     * Expiry time set via seconds since epoch
+     */
+    optional uint32 expires    = 5;
+    /**
+     * If true cookie is only accessible via secure connections
+     */
+    optional bool   isSecure   = 6 [default = false];
+    /**
+     * If true the cookie is only accessible via HTTP
+     */
+    optional bool   isHTTPOnly = 7 [default = false];
+  }
+
+
+
+
+.. index:: GetCookie
+
+``GetCookie``
+-------------
+
+::
+
+  command GetCookie(GetCookieArg) returns (CookieList) = 1;
+
+Retrieve a list of cookies for a given domain.
+
+@param domain Name of domain to look for, e.g. "opera.com"
+@param path   Limit cookie list to specified path or subpath.
+
+
+argument:
+
+.. index:: GetCookieArg
+
+.. code-block:: c
+
+  message GetCookieArg
+  {
+    required string domain = 1;
+    optional string path   = 2;
+  }
+
+returns:
+
+.. index:: CookieList
+
+.. code-block:: c
+
+  message CookieList
+  {
+    repeated Cookie cookieList = 1;
+  }
+
+references:
+
+.. index:: Cookie
+
+.. code-block:: c
+
+  message Cookie
+  {
+    required string domain     = 1;
+    required string path       = 2;
+    required string name       = 3;
+    required string value      = 4;
+    /**
+     * Expiry time for cookie specified in seconds from epoch (Unix timestamp).
+     * A value of 0 means the cookie is expired when the session ends (browser closes).
+     */
+    required uint32 expires    = 5;
+    /**
+     * If true the cookie will only be transferred on secure connections (HTTPS).
+     */
+    required bool   isSecure   = 6;
+    /**
+     * If true the cookie is only accessible via HTTP.
+     */
+    required bool   isHTTPOnly = 7;
+  }
+
+
+
+.. index:: GetCookieSettings
+
+``GetCookieSettings``
+---------------------
+
+::
+
+  command GetCookieSettings(Default) returns (CookieSettings) = 4;
+
+Get global settings regarding the allowed number of cookies,
+and the max allowed length a cookie.
+
+
+
+returns:
+
+.. index:: CookieSettings
+
+.. code-block:: c
+
+  /**
+   * The current settings for the cookie manager in the opera host, these settings are read-only and may vary depending on the platform or device used.
+   */
+  message CookieSettings
+  {
+    /**
+     * The maximum number of cookies the host can store in total.
+     * If there is no room for new cookies the host will remove the least recently used cookies to get enough space.
+     */
+    required uint32 maxCookies          = 1;
+    /**
+     * The maximum number of cookies allowed in one domain.
+     * If there is no room for new cookies the host will remove the least recently used cookies in the domain to get enough space.
+     */
+    required uint32 maxCookiesPerDomain = 2;
+    /**
+     * The maxium byte length of a single cookie, if the cookie exceeds this length it will be discarded.
+     */
+    required uint32 maxCookieLength     = 3;
+  }
+
+
+
+.. index:: RemoveAllCookies
+
+``RemoveAllCookies``
+--------------------
+
+::
+
+  command RemoveAllCookies(Default) returns (Default) = 3;
+
+Removes all cookies.
+
+
+
+
+
+
+.. index:: RemoveCookie
+
+``RemoveCookie``
+----------------
+
+::
+
+  command RemoveCookie(RemoveCookieArg) returns (Default) = 2;
+
+Removes selected cookies or all cookies in a domain.
+
+@param domain Name of domain to remove cookies from, e.g. "opera.com"
+@param path   If specified only removes cookies from specified path or subpath.
+@param name   Name of cookie to remove, if unspecified removes all cookies matching domain/path.
+
+
+argument:
+
+.. index:: RemoveCookieArg
+
+.. code-block:: c
+
+  message RemoveCookieArg
+  {
+    required string domain = 1;
+    optional string path   = 2;
+    optional string name   = 3;
+  }
+
+
+
+
+

File scope/_sources/services/DocumentManager.txt

    :maxdepth: 1
 
    1.0 <DocumentManager/DocumentManager_1_0.rst>
+   1.1 <DocumentManager/DocumentManager_1_1.rst>

File scope/_sources/services/DocumentManager/DocumentManager_1_1.txt

+===================
+DocumentManager 1.1
+===================
+
+:Generated:  hob rst-doc
+:Version:    1.1
+:Status:     Published
+
+Service
+=======
+
+**DocumentManager** provides a way to monitor, and interact with
+individual documents/frames in a document tree (whether they have
+an ECMASCript environment or not).
+
+Example functionality includes loading URLs in a certain frame, and
+enumerating all the documents in a certain Window.
+
+ID fields
+---------
+
+- Frame IDs represent the entity that contains the document. When a new
+  URL is loaded in a frame, the document ID will change, but the frame ID
+  will not. This makes it possible to monitor the document history for
+  individual frames. (Please note that the document ID will not change when
+  a frame is *re*loaded).
+- Document ID represent the actual document. This is recreated when a new
+  URL is loaded in its parent frame.
+
+External ID fields
+------------------
+
+Some IDs used in this service originate (and can be used with) other
+services.
+
+- Window IDs are the same in all services, and can be used interchangeably
+  everywhere. See *WindowManager* for window-centric commands and events.
+- Resource IDs in this service are compatible with resource ID fields found
+  in *ResourceManager*.
+
+
+.. code-block:: c
+
+  service DocumentManager
+  {
+    option (version) = "1.1";
+  
+    command ListDocuments(ListDocumentsArg)   returns (DocumentList)        = 1;
+    command LoadDocument(LoadDocumentArg)     returns (Default)             = 2;
+    command ReloadDocument(ReloadDocumentArg) returns (Default)             = 3;
+    command SearchText(SearchTextArg)         returns (HighlightList)       = 6;
+    command GetHighlights(GetHighlightsArg)   returns (HighlightList)       = 7;
+    command GetPageText(GetPageTextArg)       returns (PageText)            = 8;
+    event   OnAboutToLoadDocument             returns (AboutToLoadDocument) = 4;
+    event   OnDocumentLoaded                  returns (DocumentLoaded)      = 5;
+  }
+
+
+
+Commands
+========
+
+.. index:: GetHighlights
+
+``GetHighlights``
+-----------------
+
+::
+
+  command GetHighlights(GetHighlightsArg) returns (HighlightList) = 7;
+
+Get information about the currently highlighted text, resulting from a
+previous inline text search.
+
+This command will fail if used on a build which does not support
+'find-all' functionality, typically (non-smart) phone and TV builds.
+
+@since 1.1
+
+
+argument:
+
+.. index:: GetHighlightsArg
+
+.. code-block:: c
+
+  message GetHighlightsArg
+  {
+    /**
+     * Get highlights in this window.
+     */
+    required uint32 windowID = 1;
+    /**
+     * If set, search only in the specified frame. The frame must be
+     * part of the document tree of the previously specified window.
+     */
+    optional uint32 frameID  = 2;
+  }
+
+returns:
+
+.. index:: HighlightList
+
+.. code-block:: c
+
+  message HighlightList
+  {
+    /**
+     * When searching for text in a page, we often get multiple hits. This is a
+     * list of all the current hits.
+     */
+    repeated Highlight highlightList = 1;
+  }
+
+references:
+
+.. index:: Node
+
+.. code-block:: c
+
+  message Node
+  {
+    /**
+     * E.g. "a", "div".
+     */
+    required string tag = 1;
+    /**
+     * Present if there is an ID attribute set.
+     */
+    optional string id  = 2;
+  }
+
+.. index:: Highlight
+
+.. code-block:: c
+
+  message Highlight
+  {
+    /**
+     * Which frame this highlight is in.
+     */
+    required uint32 frameID = 1;
+    /**
+     * The first common ancestor that contains the entire highlight.
+     */
+    optional Node   node    = 2;
+  }
+
+
+
+.. index:: GetPageText
+
+``GetPageText``
+---------------
+
+::
+
+  command GetPageText(GetPageTextArg) returns (PageText) = 8;
+
+Get the displayed (plain) text of a window, or document subtree. This
+command can fail if the connected build does not support the necessary
+text serialization feature.
+
+@since 1.1
+
+
+argument:
+
+.. index:: GetPageTextArg
+
+.. code-block:: c
+
+  message GetPageTextArg
+  {
+    /**
+     * Get the text in this window.
+     */
+    required uint32 windowID = 1;
+    /**
+     * If set, get the text only for the specified frame. The frame must be
+     * part of the document tree of the previously specified window.
+     */
+    optional uint32 frameID  = 2;
+  }
+
+returns:
+
+.. index:: PageText
+
+.. code-block:: c
+
+  message PageText
+  {
+    message DocumentText
+    {
+      /**
+       * Which frame this document sits in.
+       */
+      required uint32 frameID    = 1;
+      /**
+       * The document that contains this text.
+       */
+      required uint32 documentID = 2;
+      /**
+       * The (plain) text of the document.
+       */
+      required string text       = 3;
+    }
+  
+    repeated DocumentText documentTextList = 1;
+  }
+
+
+
+.. index:: ListDocuments
+
+``ListDocuments``
+-----------------
+
+::
+
+  command ListDocuments(ListDocumentsArg) returns (DocumentList) = 1;
+
+Get the document tree for a Window, or for all Windows.
+
+
+argument:
+
+.. index:: ListDocumentsArg
+
+.. code-block:: c
+
+  message ListDocumentsArg
+  {
+    optional uint32 windowID = 1;
+  }
+
+returns:
+
+.. index:: DocumentList
+
+.. code-block:: c
+
+  message DocumentList
+  {
+    repeated Document documentList = 1;
+  }
+
+references:
+
+.. index:: Document
+
+.. code-block:: c
+
+  message Document
+  {
+    required uint32 windowID         = 1;
+    required uint32 frameID          = 2;
+    optional uint32 documentID       = 3;
+    /**
+     * The parent frame, present only if the frame is not the
+     * top level frame.
+     */
+    optional uint32 parentFrameID    = 4;
+    /**
+     * Present unless this document is the top-level document
+     * in the Window.
+     */
+    optional uint32 parentDocumentID = 5;
+    /**
+     * The current URL of the document.
+     */
+    optional string url              = 6;
+    /**
+     * The resource used to generate this document.
+     */
+    optional uint32 resourceID       = 7;
+    /**
+     * The value of the name attribute of the HTMLFrameElement. If the
+     * frame does not have a name, or this document is not associated with
+     * a HTMLFrameElement, this will field will not be present.
+     */
+    optional string frameElementName = 8;
+    /**
+     * The value of the id attribute of the HTMLFrameElement. If the
+     * frame does not have an id, or this document is not associated with
+     * a HTMLFrameElement, this will field will not be present.
+     */
+    optional string frameElementID   = 9;
+  }
+
+
+
+.. index:: LoadDocument
+
+``LoadDocument``
+----------------
+
+::
+
+  command LoadDocument(LoadDocumentArg) returns (Default) = 2;
+
+Load a URL in a specified frame.
+
+
+argument:
+
+.. index:: LoadDocumentArg
+
+.. code-block:: c
+
+  message LoadDocumentArg
+  {
+    /**
+     * The window containing the frame.
+     */
+    required uint32 windowID = 1;
+    required uint32 frameID  = 2;
+    required string url      = 3;
+  }
+
+
+
+
+.. index:: ReloadDocument
+
+``ReloadDocument``
+------------------
+
+::
+
+  command ReloadDocument(ReloadDocumentArg) returns (Default) = 3;
+
+Reload the current URL for a specified frame.
+
+
+argument:
+
+.. index:: ReloadDocumentArg
+
+.. code-block:: c
+
+  message ReloadDocumentArg
+  {
+    /**
+     * The window containing the frame.
+     */
+    required uint32 windowID = 1;
+    required uint32 frameID  = 2;
+  }
+
+
+
+
+.. index:: SearchText
+
+``SearchText``
+--------------
+
+::
+
+  command SearchText(SearchTextArg) returns (HighlightList) = 6;
+
+Search for a text string in a certain window, or frame.
+
+This command will fail if used on a build which does not support
+'find-all' functionality, typically (non-smart) phone and TV builds.
+
+@since 1.1
+
+
+argument:
+
+.. index:: SearchTextArg
+
+.. code-block:: c
+
+  message SearchTextArg
+  {
+    /**
+     * Search in this window.
+     */
+    required uint32 windowID = 1;
+    /**
+     * The text string to search for.
+     */
+    required string text     = 2;
+    /**
+     * If set, search only in the specified frame. The frame must be
+     * part of the document tree of the previously specified window.
+     */
+    optional uint32 frameID  = 3;
+  }
+
+returns:
+
+.. index:: HighlightList
+
+.. code-block:: c
+
+  message HighlightList
+  {
+    /**
+     * When searching for text in a page, we often get multiple hits. This is a
+     * list of all the current hits.
+     */
+    repeated Highlight highlightList = 1;
+  }
+
+references:
+
+.. index:: Node
+
+.. code-block:: c
+
+  message Node
+  {
+    /**
+     * E.g. "a", "div".
+     */
+    required string tag = 1;
+    /**
+     * Present if there is an ID attribute set.
+     */
+    optional string id  = 2;
+  }
+
+.. index:: Highlight
+
+.. code-block:: c
+
+  message Highlight
+  {
+    /**
+     * Which frame this highlight is in.
+     */
+    required uint32 frameID = 1;
+    /**
+     * The first common ancestor that contains the entire highlight.
+     */
+    optional Node   node    = 2;
+  }
+
+
+
+Events
+======
+
+.. index:: OnAboutToLoadDocument
+
+``OnAboutToLoadDocument``
+-------------------------
+
+::
+
+  event OnAboutToLoadDocument returns (AboutToLoadDocument) = 4;
+
+Fired when a document is about to be loaded (regardless
+of whether the load actually succeeds).
+
+
+message:
+
+.. index:: SearchTextArg
+
+.. code-block:: c
+
+  message AboutToLoadDocument
+  {
+    required uint32 windowID         = 1;
+    required uint32 frameID          = 2;
+    /**
+     * The resource that is about to get loaded.
+     */
+    required uint32 resourceID       = 3;
+    /**
+     * Milliseconds since Unix Epoch.
+     */
+    required double time             = 4;
+    /**
+     * The parent document, present only if the frame is not the
+     * top level frame.
+     */
+    optional uint32 parentDocumentID = 5;
+    /**
+     * The parent frame, present only if the frame is not the
+     * top level frame.
+     */
+    optional uint32 parentFrameID    = 6;
+  }
+
+
+
+.. index:: OnDocumentLoaded
+
+``OnDocumentLoaded``
+--------------------
+
+::
+
+  event OnDocumentLoaded returns (DocumentLoaded) = 5;
+
+Fired when a document is fully loaded (after DOM event
+'load' has finished).
+
+
+message:
+
+.. index:: SearchTextArg
+
+.. code-block:: c
+
+  message DocumentLoaded
+  {
+    required uint32 windowID   = 1;
+    required uint32 frameID    = 2;
+    required uint32 documentID = 3;
+  }
+
+
+

File scope/_sources/services/EcmascriptDebugger.txt

    6.1 <EcmascriptDebugger/EcmascriptDebugger_6_1.rst>
    6.2 <EcmascriptDebugger/EcmascriptDebugger_6_2.rst>
    6.3 <EcmascriptDebugger/EcmascriptDebugger_6_3.rst>
+   6.4 <EcmascriptDebugger/EcmascriptDebugger_6_4.rst>
+   6.5 <EcmascriptDebugger/EcmascriptDebugger_6_5.rst>
+   6.6 <EcmascriptDebugger/EcmascriptDebugger_6_6.rst>
+   6.7 <EcmascriptDebugger/EcmascriptDebugger_6_7.rst>
+   6.8 <EcmascriptDebugger/EcmascriptDebugger_6_8.rst>
+   6.9 <EcmascriptDebugger/EcmascriptDebugger_6_9.rst>

File scope/_sources/services/EcmascriptDebugger/EcmascriptDebugger_6_4.txt

+======================
+EcmascriptDebugger 6.4
+======================
+
+:Generated:  hob rst-doc
+:Version:    6.4
+:Status:     Published
+
+Service
+=======
+
+
+Central data types and how they work:
+
+A "runtime" represents a document context in which threads execute.
+There is a one-to-one mapping between runtimes and HTML documents.
+
+A "thread" represents a thread of execution in a runtime.  A "parent"
+thread can be preempted by another "child" thread in order to respond
+to a priority event; the parent thread will not run again until the
+child thread has finished.
+
+A "script" is a pair (id, source code) where the id is globally
+unique and the source code is Unicode text.
+
+An "object" is represented by a globally unique ID that is assigned by
+the debugger.
+
+Globally unique means unique within a running Opera session; that is
+from starting Opera to stopping it.
+
+The windowID is shared across scope. Notably, it's the same as in the console logger and window manager
+INTERNAL: The value is from Window::id
+
+
+.. code-block:: c
+
+  service EcmascriptDebugger
+  {
+    option (cpp_hfile) = "modules/scope/src/scope_ecmascript_debugger.h";
+    option (version)   = "6.4";
+    option (cpp_class) = ES_ScopeDebugFrontend;
+  
+    command ListRuntimes(RuntimeSelection)               returns (RuntimeList)               =  1;
+    command ContinueThread(ThreadMode)                   returns (Default)                   =  2;
+    command Eval(EvalData)                               returns (EvalResult)                =  3;
+    command ExamineObjects(ExamineList)                  returns (ObjectChainList)           =  4;
+    command SpotlightObject(SpotlightObjectSelection)    returns (Default)                   =  5;
+    command AddBreakpoint(Breakpoint)                    returns (Default)                   =  6;
+    command RemoveBreakpoint(BreakpointID)               returns (Default)                   =  7;
+    command AddEventHandler(EventHandler)                returns (Default)                   =  8;
+    command RemoveEventHandler(EventHandlerID)           returns (Default)                   =  9;
+    command SetConfiguration(Configuration)              returns (Default)                   = 10;
+    command GetBacktrace(BacktraceSelection)             returns (BacktraceFrameList)        = 11;
+    command Break(BreakSelection)                        returns (Default)                   = 12;
+    command InspectDom(DomTraversal)                     returns (NodeList)                  = 13;
+    command CssGetIndexMap(Default)                      returns (CssIndexMap)               = 22;
+    command CssGetAllStylesheets(RuntimeID)              returns (CssStylesheetList)         = 23;
+    command CssGetStylesheet(CssStylesheetSelection)     returns (CssStylesheetRules)        = 24;
+    command CssGetStyleDeclarations(CssElementSelection) returns (CssStyleDeclarations)      = 25;
+    command GetSelectedObject(Default)                   returns (ObjectSelection)           = 26;
+    command SpotlightObjects(SpotlightSelection)         returns (Default)                   = 27;
+    command ReleaseObjects(ReleaseObjectsArg)            returns (Default)                   = 29;
+    command SetPropertyFilter(SetPropertyFilterArg)      returns (Default)                   = 30;
+    command AddEventBreakpoint(EventBreakpoint)          returns (Default)                   = 38;
+    command SetFunctionFilter(FunctionFilter)            returns (Default)                   = 39;
+    event   OnRuntimeStarted                             returns (RuntimeInfo)               = 14;
+    event   OnRuntimeStopped                             returns (RuntimeID)                 = 15;
+    event   OnNewScript                                  returns (ScriptInfo)                = 16;
+    event   OnThreadStarted                              returns (ThreadInfo)                = 17;
+    event   OnThreadFinished                             returns (ThreadResult)              = 18;
+    event   OnThreadStoppedAt                            returns (ThreadStopInfo)            = 19;
+    event   OnHandleEvent                                returns (DomEvent)                  = 20;
+    event   OnObjectSelected                             returns (ObjectSelection)           = 21;
+    event   OnParseError                                 returns (DomParseError)             = 28;
+    event   OnReadyStateChanged                          returns (ReadyStateInfo)            = 31;
+    event   OnConsoleLog                                 returns (ConsoleLogInfo)            = 32;
+    event   OnConsoleTime                                returns (ConsoleTimeInfo)           = 33;
+    event   OnConsoleTimeEnd                             returns (ConsoleTimeEndInfo)        = 34;
+    event   OnConsoleTrace                               returns (ConsoleTraceInfo)          = 35;
+    event   OnConsoleProfile                             returns (ConsoleProfileInfo)        = 36;
+    event   OnConsoleProfileEnd                          returns (ConsoleProfileEndInfo)     = 37;
+    event   OnFunctionCallStarting                       returns (FunctionCallStartingInfo)  = 40;
+    event   OnFunctionCallCompleted                      returns (FunctionCallCompletedInfo) = 41;
+  }
+
+
+
+Commands
+========
+
+.. index:: AddBreakpoint
+
+``AddBreakpoint``
+-----------------
+
+::
+
+  command AddBreakpoint(Breakpoint) returns (Default) = 6;
+
+
+argument:
+
+.. index:: Breakpoint
+
+.. code-block:: c
+
+  message Breakpoint
+  {
+    /**
+     * A nonzero ID chosen by the client.
+     */
+    required uint32 breakpointID = 1;
+    /**
+     * ID of script where the breakpoint should be set.
+     */
+    required uint32 scriptID     = 2;
+    /**
+     * Line number to break on in script.
+     */
+    required uint32 lineNumber   = 3;
+  }
+
+
+
+
+.. index:: AddEventBreakpoint
+
+``AddEventBreakpoint``
+----------------------
+
+::
+
+  command AddEventBreakpoint(EventBreakpoint) returns (Default) = 38;
+
+
+argument:
+
+.. index:: EventBreakpoint
+
+.. code-block:: c
+
+  message EventBreakpoint
+  {
+    /**
+     * A nonzero ID chosen by the client.
+     */
+    required uint32 breakpointID = 1;
+    /**
+     * The name of the event to break on.
+     */
+    required string eventType    = 2;
+    /**
+     * If specified the event will only break in this specific window.
+     */
+    optional uint32 windowID     = 3 [default = 0];
+  }
+
+
+
+
+.. index:: AddEventHandler
+
+``AddEventHandler``
+-------------------
+
+::
+
+  command AddEventHandler(EventHandler) returns (Default) = 8;
+
+Add an event handler. This will generate a OnHandleEvent event every time the XML event defined
+by the pair (`namespace`, `eventType`) reaches the object defined by `objectID` in the capturing
+phase. XML events are defined in http://www.w3.org/TR/xml-events
+
+
+argument:
+
+.. index:: EventHandler
+
+.. code-block:: c
+
+  /**
+   * Add an event handler. This will generate a HANDLE-EVENT event every time the XML event defined by the pair (NAMESPACE, EVENT-TYPE) reaches the object defined by OBJECT-ID in the capturing phase. XML events are defined in http://www.w3.org/TR/xml-events
+   */
+  message EventHandler
+  {
+    /**
+     * A nonzero ID chosen by the client. The host may also use this ID to refer to the
+     * event handler.
+     */
+    required uint32 handlerID             = 1;
+    required uint32 objectID              = 2;
+    /**
+     * Namespace of the event. If empty, it will match any namespace.
+     */
+    required string namespace             = 3;
+    required string eventType             = 4;
+    /**
+     * If `true` it prevents the default event handler from running.
+     */
+    required bool   preventDefaultHandler = 5;
+    /**
+     * If `true` it stops propagation of the event beyond this `objectID` (it will however run for all handlers on the object).
+     */
+    required bool   stopPropagation       = 6;
+  }
+
+
+
+
+.. index:: Break
+
+``Break``
+---------
+
+::
+
+  command Break(BreakSelection) returns (Default) = 12;
+
+
+argument:
+
+.. index:: BreakSelection
+
+.. code-block:: c
+
+  message BreakSelection
+  {
+    required uint32 runtimeID = 1;
+    required uint32 threadID  = 2;
+  }
+
+
+
+
+.. index:: ContinueThread
+
+``ContinueThread``
+------------------
+
+::
+
+  command ContinueThread(ThreadMode) returns (Default) = 2;
+
+
+argument:
+
+.. index:: ThreadMode
+
+.. code-block:: c
+
+  message ThreadMode
+  {
+    required uint32 runtimeID = 1;
+    required uint32 threadID  = 2;
+    /**
+     * One of:
+     * - `"run"`
+     * - `"step-into-call"`
+     * - `"step-next-line"`
+     * - `"step-out-of-call"`
+     */
+    required string mode      = 3;
+  }
+
+
+
+
+.. index:: CssGetAllStylesheets
+
+``CssGetAllStylesheets``
+------------------------
+
+::
+
+  command CssGetAllStylesheets(RuntimeID) returns (CssStylesheetList) = 23;
+
+
+argument:
+
+.. index:: RuntimeID
+
+.. code-block:: c
+
+  message RuntimeID
+  {
+    required uint32 runtimeID = 1;
+  }
+
+returns:
+
+.. index:: CssStylesheetList
+
+.. code-block:: c
+
+  message CssStylesheetList
+  {
+    message Stylesheet
+    {
+      required uint32 objectID           = 1;
+      required bool   isDisabled         = 2;
+      required string href               = 3;
+      required string title              = 4;
+      required string type               = 5;
+      repeated string mediaList          = 6;
+      optional uint32 ownerNodeID        = 7;
+      optional uint32 ownerRuleID        = 8;
+      optional uint32 parentStylesheetID = 9;
+    }
+  
+    repeated Stylesheet stylesheetList = 1;
+  }
+
+
+
+.. index:: CssGetIndexMap
+
+``CssGetIndexMap``
+------------------
+
+::
+
+  command CssGetIndexMap(Default) returns (CssIndexMap) = 22;
+
+
+
+returns:
+
+.. index:: CssIndexMap
+
+.. code-block:: c
+
+  message CssIndexMap
+  {
+    repeated string nameList = 1;
+  }
+
+
+
+.. index:: CssGetStyleDeclarations
+
+``CssGetStyleDeclarations``
+---------------------------
+
+::
+
+  command CssGetStyleDeclarations(CssElementSelection) returns (CssStyleDeclarations) = 25;
+
+
+argument:
+
+.. index:: CssElementSelection
+
+.. code-block:: c
+
+  message CssElementSelection
+  {
+    required uint32 runtimeID = 1;
+    required uint32 objectID  = 2;
+  }
+
+returns:
+
+.. index:: CssStyleDeclarations
+
+.. code-block:: c
+
+  message CssStyleDeclarations
+  {
+    message NodeStyle
+    {
+      /**
+       * Common to all origins:
+       * - indexList
+       * - valueList
+       * - priorityList
+       * - statusList
+       * 
+       * Common to AUTHOR and LOCAL
+       * - selector
+       * - specificity
+       * 
+       * For AUTHOR
+       * - stylesheetID
+       * - ruleID
+       * - ruleType
+       */
+      message StyleDeclaration
+      {
+        /**
+         * 1 = USER-AGENT, 2=LOCAL, 3=AUTHOR, 4=ELEMENT
+         */
+        required uint32 origin       =  1;
+        repeated uint32 indexList    =  2;
+        repeated string valueList    =  3;
+        repeated bool   priorityList =  4;
+        repeated uint32 statusList   =  5;
+        optional string selector     =  6;
+        optional uint32 specificity  =  7;
+        optional uint32 stylesheetID =  8;
+        optional uint32 ruleID       =  9;
+        optional uint32 ruleType     = 10;
+      }
+    
+      required uint32           objectID    = 1;
+      required string           elementName = 2;
+      repeated StyleDeclaration styleList   = 3;
+    }
+  
+    repeated string    computedStyleList = 1;
+    repeated NodeStyle nodeStyleList     = 2;
+  }
+
+
+
+.. index:: CssGetStylesheet
+
+``CssGetStylesheet``
+--------------------
+
+::
+
+  command CssGetStylesheet(CssStylesheetSelection) returns (CssStylesheetRules) = 24;
+
+
+argument:
+
+.. index:: CssStylesheetSelection
+
+.. code-block:: c
+
+  message CssStylesheetSelection
+  {
+    required uint32 runtimeID    = 1;
+    required uint32 stylesheetID = 2;
+  }
+
+returns:
+
+.. index:: CssStylesheetRules
+
+.. code-block:: c
+
+  message CssStylesheetRules
+  {
+    /**
+     * Common to FONT_FACE, PAGE and STYLE is:
+     * - indexList
+     * - valueList
+     * - priorityList
+     * 
+     * Common to STYLE and PAGE is:
+     * - selectorList
+     * - specificityList
+     * 
+     * Common to MEDIA and IMPORT
+     * - mediaList
+     * 
+     * For MEDIA
+     * - ruleList
+     * 
+     * For IMPORT
+     * - href
+     * - importStylesheetID
+     * 
+     * For PAGE
+     * - pseudoClass
+     * 
+     * For CHARSET
+     * - charset
+     */
+    message StylesheetRule
+    {
+      /**
+       * Type values:
+       * 0 - UNKNOWN
+       * 1 - STYLE
+       * 2 - CHARSET
+       * 3 - IMPORT
+       * 4 - MEDIA
+       * 5 - FONT_FACE
+       * 6 - PAGE
+       * 7 - NAMESPACE // Not supported
+       */
+      required uint32                            type               =  1;
+      required uint32                            stylesheetID       =  2;
+      required uint32                            ruleID             =  3;
+      repeated uint32                            indexList          =  4;
+      repeated string                            valueList          =  5;
+      repeated bool                              priorityList       =  6;
+      /**
+       * 0..1 for PAGE and 0..* for STYLE
+       */
+      repeated string                            selectorList       =  7;
+      /**
+       * 1..1 for PAGE and 0..* for STYLE
+       */
+      repeated uint32                            specificityList    =  8;
+      repeated string                            mediaList          =  9;
+      repeated CssStylesheetRules.StylesheetRule ruleList           = 10;
+      optional string                            href               = 11;
+      optional uint32                            importStylesheetID = 12;
+      optional uint32                            pseudoClass        = 13;
+      optional string                            charset            = 14;
+    }
+  
+    repeated StylesheetRule ruleList = 1;
+  }
+
+
+
+.. index:: Eval
+
+``Eval``
+--------
+
+::
+
+  command Eval(EvalData) returns (EvalResult) = 3;
+
+
+argument:
+
+.. index:: EvalData
+
+.. code-block:: c
+
+  message EvalData
+  {
+    message Variable
+    {
+      required string name     = 1;
+      required uint32 objectID = 2;
+    }
+  
+    required uint32   runtimeID     = 1;
+    /**
+     * The ID of the thread to use for executing the script data, or 0
+     * to use the global scope.
+     */
+    required uint32   threadID      = 2;
+    required uint32   frameIndex    = 3;
+    /**
+     * Represents a script to be executed.
+     */
+    required string   scriptData    = 4;
+    /**
+     * Represent variables to set.
+     */
+    repeated Variable variableList  = 5;
+    /**
+     * Enable debugging of current script eval. Defaults to false.
+     * @since 6.3
+     */
+    optional bool     wantDebugging = 6 [default = false];
+  }
+
+returns:
+
+.. index:: EvalResult
+
+.. code-block:: c
+
+  message EvalResult
+  {
+    /**
+     * If it is "completed" or "unhandled-exception" then `type`, `value` and `objectValue` will be present.
+     */
+    required string      status      = 1;
+    /**
+     * One of:
+     * - `"number"`
+     * - `"boolean"`
+     * - `"string"`
+     * - `"null"`
+     * - `"undefined"`
+     * - `"object"`
+     */
+    required string      type        = 2;
+    /**
+     * Only present when `type` is `"number"`, `"string"` or `"boolean"`
+     */
+    optional string      value       = 3;
+    /**
+     * Only present when `type` is `"object"`
+     */
+    optional ObjectValue objectValue = 4;
+  }
+
+references:
+
+.. index:: ObjectValue
+
+.. code-block:: c
+
+  message ObjectValue
+  {
+    required uint32 objectID     = 1;
+    required bool   isCallable   = 2;
+    /**
+     * type, function or object
+     */
+    required string type         = 3;
+    optional uint32 prototypeID  = 4;
+    /**
+     * The class of the object.
+     */
+    optional string className    = 5;
+    /**
+     * If the object is a function, this is the name of
+     * the variable associated with that function (if any).
+     */
+    optional string functionName = 6;
+  }
+
+
+
+.. index:: ExamineObjects
+
+``ExamineObjects``
+------------------
+
+::
+
+  command ExamineObjects(ExamineList) returns (ObjectChainList) = 4;
+
+
+argument:
+
+.. index:: ExamineList
+
+.. code-block:: c
+
+  message ExamineList
+  {
+    required uint32 runtimeID          = 1;
+    repeated uint32 objectList         = 2;
+    optional bool   examinePrototypes  = 3;
+    optional bool   skipNonenumerables = 4;
+    optional bool   filterProperties   = 5;
+  }
+
+returns:
+
+.. index:: ObjectChainList
+
+.. code-block:: c
+
+  message ObjectChainList
+  {
+    repeated ObjectList objectChainList = 1;
+  }
+
+references:
+
+.. index:: ObjectValue
+
+.. code-block:: c
+
+  message ObjectValue
+  {
+    required uint32 objectID     = 1;
+    required bool   isCallable   = 2;
+    /**
+     * type, function or object
+     */
+    required string type         = 3;
+    optional uint32 prototypeID  = 4;
+    /**
+     * The class of the object.
+     */
+    optional string className    = 5;
+    /**
+     * If the object is a function, this is the name of
+     * the variable associated with that function (if any).
+     */
+    optional string functionName = 6;
+  }
+
+.. index:: ObjectInfo
+
+.. code-block:: c
+
+  message ObjectInfo
+  {
+    /**
+     * If `type` is ... then ... is present:
+     *   "object", `objectValue`
+     *   "number", `value`
+     *   "string", `value`
+     *   "boolean", `value` (`"true"` or `"false"`)
+     * Otherwise (`"undefined"` or `"null"`), only `type` is present.
+     */
+    message Property
+    {
+      required string      name        = 1;
+      /**
+       * One of:
+       * - `"number"`
+       * - `"boolean"`
+       * - `"string"`
+       * - `"null"`
+       * - `"undefined"`
+       * - `"object"`
+       */
+      required string      type        = 2;
+      /**
+       * Only present for `"number"`, `"string"` or `"boolean"`
+       */
+      optional string      value       = 3;
+      /**
+       * Only present for `"object"`
+       */
+      optional ObjectValue objectValue = 4;
+    }
+  
+    required ObjectValue value        = 1;
+    repeated Property    propertyList = 2;
+  }
+
+.. index:: ObjectList