cohtml::IViewListener

Interface that allows to listen for various events in the View.

#include <View.h>

Public Classes

Name
structIClipboardData
The class should be used by the implementer to set the data recovered from the clipboard. Use this class only in the context of a ViewListener::OnClipboardTextGet call.

Public Functions

Name
IViewListener()
virtual~IViewListener()
virtual boolOnNavigateTo(const char * url)
Called when a navigation is about to occur. The user is able to interrupt the navigation or let it continue normally.
virtual InterceptRequestStatusOnResourceRequestIntercepted(const char * url)
Only used when View::InterceptResourceRequests is explicitly set to true. Called before sending a request to load a resource from the specified url.
virtual voidOnScriptContextCreated()
Called immediately after the script context has been created for the page. This happens before starting to build the DOM. Execute any scripts that will influence DOM creation here.
virtual voidOnDOMBuilt()
Called when the page’s DOM is fully constructed, but the referenced resources may not finish loading.
virtual voidOnLoadFailed(const char * url, const char * error)
Called when a navigation change request failed.
virtual voidOnFinishLoad(const char * url)
Called when a page, including the resources it refers to, is completely loaded and initialized.
virtual voidOnReadyForBindings()
Called when the view is ready to accept JavaScript bindings.
virtual voidOnBindingsReleased()
Called when the JavaScript bindings are released. All registered event, call handlers and models have been automatically unregistered.
virtual ScreenInfoOnScreenInfoRequested()
Called when JavaScript requested screen metrics Returns current screen metrics.
virtual EventAction::ActionsOnNodeTouched(const INodeProxy * node, const TouchEventData * event, void * userData, const InputEventPhase::PhaseType phase)
Called before an event is passed to a DOM node for evaluation. The user is able to interrupt the handling and bubbling of events or let them continue normally. Phase is the current PhaseType of the event.
virtual EventAction::ActionsOnNodeMouseEvent(const INodeProxy * node, const MouseEventData * event, void * userData, const InputEventPhase::PhaseType phase)
Called before an event is passed to a DOM node for evaluation. The user is able to interrupt the handling and bubbling of events or let them continue normally. Phase is the current PhaseType of the event.
virtual EventAction::ActionsOnNodeKeyEvent(const INodeProxy * node, const KeyEventData * event, void * userData, const InputEventPhase::PhaseType phase)
Called before an event is passed to a DOM node for evaluation. The user is able to interrupt the handling and bubbling of events or let them continue normally. Phase is the current PhaseType of the event.
virtual voidOnAudioStreamCreated(int id, int bitDepth, int channels, float samplingRate)
Called by the UI when a media element initializes an audio stream.
virtual voidOnAudioStreamClosed(int id)
Called when an audio stream is destroyed.
virtual voidOnAudioStreamPlay(int id)
Called by the UI when a media element starts playing an audio stream.
virtual voidOnAudioStreamPause(int id)
Called by the UI when a playing media element pauses.
virtual voidOnAudioDataReceived(int id, int samples, float ** pcm, int channels)
Called by the UI when there is decoded PCM data available for playing.
virtual voidOnAudioStreamEnded(int id)
Called when an audio stream ends and will no longer receive data.
virtual voidOnAudioStreamVolumeChanged(int id, float volume)
Called when an audio stream volume has changed.
virtual voidOnTextInputTypeChanged(TextInputControlType::ControlType type)
Called when the current text input control changes (i.e. the user click an edit-box). Use this method to decide when to allow for IME input.
virtual voidOnCaretRectChanged(int x, int y, unsigned width, unsigned height)
Called when the caret changes during IME composition. You can use this method to correctly position a custom IME control & candidate list.
virtual voidOnCursorChanged(CursorTypes::Cursors cursor, const char * url, const float * xHotspot, const float * yHotspot)
Called when the cursor under the pointer changes. The user should modify the visible cursor from the OS to reflect the change.
virtual voidOnClipboardTextSet(const char * text, unsigned lengthBytes)
Called when the user has initiated an operation of putting data in the Clipboard (copy or cut). The implementer must communicate with the OS API and set the passed data in the Clipboard.
virtual voidOnClipboardTextGet(IClipboardData * setDataObject)
Called when the user has initiated an operation that recovers data from the clipboard (paste). The implementer should get the text from the clipboard with the OS API and call the passed callback to set the data.
virtual IClientSideSocket *OnCreateWebSocket(ISocketListener * listener, const char * url, const char ** protocols, unsigned protocolsCount)
Called when the view tries to establish a web socket connection. When JS tries to create a new web sockets it will create a new cohtml::ISocketListener in the cohtml::View. OnCreateWebSocket will be called after that and it must respond with a cohtml::IClientSideSocket object which represent the socket implementation for the current platform.

Public Functions Documentation

function IViewListener

IViewListener()

function ~IViewListener

virtual ~IViewListener()

function OnNavigateTo

inline virtual bool OnNavigateTo(
    const char * url
)

Called when a navigation is about to occur. The user is able to interrupt the navigation or let it continue normally.

Parameters:

  • url The URL which the view will load

function OnResourceRequestIntercepted

inline virtual InterceptRequestStatus OnResourceRequestIntercepted(
    const char * url
)

Only used when View::InterceptResourceRequests is explicitly set to true. Called before sending a request to load a resource from the specified url.

Parameters:

  • url The URL requested by the view

Return: Returns InterceptRequestStatus::Restrict if the request should be intercepted or InterceptRequestStatus::Allow otherwise

function OnScriptContextCreated

inline virtual void OnScriptContextCreated()

Called immediately after the script context has been created for the page. This happens before starting to build the DOM. Execute any scripts that will influence DOM creation here.

function OnDOMBuilt

inline virtual void OnDOMBuilt()

Called when the page’s DOM is fully constructed, but the referenced resources may not finish loading.

function OnLoadFailed

inline virtual void OnLoadFailed(
    const char * url,
    const char * error
)

Called when a navigation change request failed.

Parameters:

  • url The URL which failed to load
  • error The error message

function OnFinishLoad

inline virtual void OnFinishLoad(
    const char * url
)

Called when a page, including the resources it refers to, is completely loaded and initialized.

Parameters:

  • url The URL which loaded successfully

function OnReadyForBindings

inline virtual void OnReadyForBindings()

Called when the view is ready to accept JavaScript bindings.

function OnBindingsReleased

inline virtual void OnBindingsReleased()

Called when the JavaScript bindings are released. All registered event, call handlers and models have been automatically unregistered.

Note: Use this as a notification to release any resources that were used by the JavaScript bindings for the view, i.e. destroy registered models, etc.

function OnScreenInfoRequested

inline virtual ScreenInfo OnScreenInfoRequested()

Called when JavaScript requested screen metrics Returns current screen metrics.

function OnNodeTouched

inline virtual EventAction::Actions OnNodeTouched(
    const INodeProxy * node,
    const TouchEventData * event,
    void * userData,
    const InputEventPhase::PhaseType phase
)

Called before an event is passed to a DOM node for evaluation. The user is able to interrupt the handling and bubbling of events or let them continue normally. Phase is the current PhaseType of the event.

Note: Aside from events caused by calling ‘View::TouchEvent’ the callback can be called from JS. When the callback is not called from C++ the events are synthetic and won’t have userData(it will be nullptr).

function OnNodeMouseEvent

inline virtual EventAction::Actions OnNodeMouseEvent(
    const INodeProxy * node,
    const MouseEventData * event,
    void * userData,
    const InputEventPhase::PhaseType phase
)

Called before an event is passed to a DOM node for evaluation. The user is able to interrupt the handling and bubbling of events or let them continue normally. Phase is the current PhaseType of the event.

Note: Aside from events caused by calling ‘View::MouseEvent’ the callback can be called from JS or when the page is scrolled. When the callback is not called from C++ the events are synthetic and won’t have userData(it will be nullptr).

function OnNodeKeyEvent

inline virtual EventAction::Actions OnNodeKeyEvent(
    const INodeProxy * node,
    const KeyEventData * event,
    void * userData,
    const InputEventPhase::PhaseType phase
)

Called before an event is passed to a DOM node for evaluation. The user is able to interrupt the handling and bubbling of events or let them continue normally. Phase is the current PhaseType of the event.

Note: Aside from events caused by calling ‘View::KeyEvent’ the callback can be called from JS. When the callback is not called from C++ the events are synthetic and won’t have userData(it will be nullptr).

function OnAudioStreamCreated

inline virtual void OnAudioStreamCreated(
    int id,
    int bitDepth,
    int channels,
    float samplingRate
)

Called by the UI when a media element initializes an audio stream.

Parameters:

  • id the unique ID of the stream
  • bitDepth the number of bits per audio sample
  • channels the number of channels in the stream
  • samplingRate the sampling rate of the stream in Hz

function OnAudioStreamClosed

inline virtual void OnAudioStreamClosed(
    int id
)

Called when an audio stream is destroyed.

Parameters:

  • id the unique id of audio stream that was closed

function OnAudioStreamPlay

inline virtual void OnAudioStreamPlay(
    int id
)

Called by the UI when a media element starts playing an audio stream.

Parameters:

  • id the unique ID of the stream

function OnAudioStreamPause

inline virtual void OnAudioStreamPause(
    int id
)

Called by the UI when a playing media element pauses.

Parameters:

  • id the unique ID of the stream

function OnAudioDataReceived

inline virtual void OnAudioDataReceived(
    int id,
    int samples,
    float ** pcm,
    int channels
)

Called by the UI when there is decoded PCM data available for playing.

Parameters:

  • id the unique ID of the stream
  • samples the number of available samples
  • pcm the decoded PCM data. Represented as a 2D array with |channels| x |samples| floating point elements in the range [-1, 1].
  • channels the number of channels

function OnAudioStreamEnded

inline virtual void OnAudioStreamEnded(
    int id
)

Called when an audio stream ends and will no longer receive data.

Parameters:

  • id the unique ID of the stream

function OnAudioStreamVolumeChanged

inline virtual void OnAudioStreamVolumeChanged(
    int id,
    float volume
)

Called when an audio stream volume has changed.

Parameters:

  • id the unique ID of the stream
  • volume the new value of the volume

function OnTextInputTypeChanged

inline virtual void OnTextInputTypeChanged(
    TextInputControlType::ControlType type
)

Called when the current text input control changes (i.e. the user click an edit-box). Use this method to decide when to allow for IME input.

Parameters:

  • type the type of the currently focused text input control by the user

function OnCaretRectChanged

inline virtual void OnCaretRectChanged(
    int x,
    int y,
    unsigned width,
    unsigned height
)

Called when the caret changes during IME composition. You can use this method to correctly position a custom IME control & candidate list.

Parameters:

  • x the x position of the selection caret
  • y the y position of the selection caret
  • width the width of the selection caret
  • height the height of the selection caret

function OnCursorChanged

inline virtual void OnCursorChanged(
    CursorTypes::Cursors cursor,
    const char * url,
    const float * xHotspot,
    const float * yHotspot
)

Called when the cursor under the pointer changes. The user should modify the visible cursor from the OS to reflect the change.

Parameters:

  • cursor Specifies the Cursor type to show. If the type is URL, then the url param will be set.
  • url The URL of the cursor to show. The value is not nullptr only if the cursor type is URL.
  • xHotspot The optional X coordinate of the cursor hotspot set from CSS. Can be nullptr if it is not specified in CSS.
  • yHotspot The optional Y coordinate of the cursor hotspot set from CSS. Can be nullptr if it is not specified in CSS.

function OnClipboardTextSet

inline virtual void OnClipboardTextSet(
    const char * text,
    unsigned lengthBytes
)

Called when the user has initiated an operation of putting data in the Clipboard (copy or cut). The implementer must communicate with the OS API and set the passed data in the Clipboard.

Parameters:

  • text The text bytes (UTF-8) that the user is trying to copy in the clipboard
  • lengthBytes The length in bytes of the text passed

function OnClipboardTextGet

inline virtual void OnClipboardTextGet(
    IClipboardData * setDataObject
)

Called when the user has initiated an operation that recovers data from the clipboard (paste). The implementer should get the text from the clipboard with the OS API and call the passed callback to set the data.

Parameters:

  • setDataObject Set function that must be called with the data recovered from the clipboard

Note: The setDataObject is only valid in the call-stack of this method!

function OnCreateWebSocket

inline virtual IClientSideSocket * OnCreateWebSocket(
    ISocketListener * listener,
    const char * url,
    const char ** protocols,
    unsigned protocolsCount
)

Called when the view tries to establish a web socket connection. When JS tries to create a new web sockets it will create a new cohtml::ISocketListener in the cohtml::View. OnCreateWebSocket will be called after that and it must respond with a cohtml::IClientSideSocket object which represent the socket implementation for the current platform.

Parameters:

  • listener is cohtml side of the connection, user side must use it to communicate with the View.
  • url The URL to which to connect; this should be the URL to which the WebSocket server will respond.
  • protocols Either a single protocol string or an array of protocol strings. These strings are used to indicate sub-protocols, so that a single server can implement multiple WebSocket sub-protocols (for example, you might want one server to be able to handle different types of interactions depending on the specified protocol). if you don’t specify a protocol string, an empty string is assumed.
  • protocolsCount the number of protocols passed