Window management

The Navigator uses WebWorks to manage WebViews and jScreen to manage windows.

Managing WebViews

One of the roles of the Navigator is to manage WebViews. These WebViews are set up by web applications that are run on the QNX CAR platform.

Currently, Cordova and WebWorks applications are supported. An application developer supplies the application JavaScript code and any required plugins or extensions. Cordova and WebWorks web applications are similar in structure and in how their layers interact with user interface components.

Figure 1. Web application structure and user interface components

The controller mechanism runs concurrently in an invisible WebView. The Controller, the first app that is launched, has access to the WebLauncher API. This allows the Controller to create other WebViews.

The app that is currently running is displayed in a visible WebView. A WebView can be visible, invisible or transparent. A transparent WebView is always available to allow notifications such as dialogs to appear over top of the application that is currently running.

The visual layout and the logical layers of the user interface are shown in the figure below. The status bar along the top and the taskbar along the bottom are always visible. Several WebViews can be active simultaneously, but only one WebView can be visible at a time.

Figure 2. HTML5 Navigator layout

Managing Windows

The Navigator is also responsible for the placement and appearance of application windows. The Navigator uses the jScreen extension to communicate with Screen. The Navigator has the role of the Screen window manager and therefore, has the ability to manage their properties.

The Navigator deals with the application windows' z-order, transparency, positioning on the physical display, and scaling through Screen API functions. For more information on Screen, see Screen Graphics Subsystem Developer's Guide.

Once started, applications communicate directly with Screen from within their own context. Applications manage their own windows through the Screen API.