| # Cobalt Version Changelog |
| |
| This document records all notable changes made to Cobalt since the last release. |
| |
| ## Version 17 |
| - **Improvements and Bug Fixes** |
| - Fix pointer/mouse events not being dispatched to JavaScript in the same |
| order that they are generated by Starboard, relative to other input events |
| like key presses. |
| |
| - **Storage format changed from sqlite3 to protobuf** |
| |
| Cobalt's internal representation for persistent storage of cookies and local |
| storage entries changed from sqlite3 to protobuf. The header of the |
| SbStorageRecord blob was updated from SAV0 to SAV1 and all the data will be |
| migrated to the new format the next time Cobalt is launched. |
| The schema is available at cobalt/storage/store/storage.proto. |
| |
| ## Version 16 |
| - **Rebase libwebp to version 1.0.0** |
| |
| Update the version of libwebp used by Cobalt from 0.3.1 to 1.0.0. The new |
| version brings with it performance improvements and bug fixes. |
| |
| - **Move ``javascript_engine`` and ``cobalt_enable_jit`` build variables** |
| |
| Move gyp variables ``javascript_engine`` and ``cobalt_enable_jit``, which |
| were previously defined in ``cobalt_configuration.gypi``, to |
| ``$PLATFORM/gyp_configuration.py``. This was done in order to work around |
| bindings gyp files' complex usage of gyp variables, which prevented us from |
| having a default JavaScript engine at the gyp variable level. Now, platforms |
| will by default use the JavaScript engine selected by |
| ``starboard/build/platform_configuration.py``, and can override it by |
| providing a different one in their ``GetVariables`` implementation. See the |
| ``linux-x64x11-mozjs`` platform for an override example. |
| |
| **IMPORTANT**: While existing gyp files that define ``javascript_engine`` and |
| ``cobalt_enable_jit`` may continue to work by chance, it is *strongly* |
| preferred to move all declarations of these variables to python instead. |
| |
| - **Move test data** |
| |
| Static test data is now copied to `content/data/test` instead of |
| `content/dir_source_root`. Tests looking for the path to this data should |
| use `BasePathKey::DIR_TEST_DATA` instead of `BasePathKey::DIR_SOURCE_ROOT`. |
| Tests in Starboard can find the static data in the `test/` subdirectory of |
| `kSbSystemPathContentDirectory`. |
| |
| - **Add support for cobalt_media_buffer_max_capacity** |
| |
| Allow bounding the max capacity allocated by decoder buffers, by setting the |
| gypi variables cobalt_media_buffer_max_capacity_1080p and |
| cobalt_media_buffer_max_capacity_4k. 1080p applies to all resolutions 1080p |
| and below. Those values default to 0, which imposes no bounds. If non-zero, |
| each capacity must be greater than or equal to the sum of the video budget |
| and non video budget for that resolution (see |
| cobalt_media_buffer_video_buffer_1080p, cobalt_media_buffer_non_video_budget, |
| etc.), and the max capacities must be greater than or equal to the |
| corresponding initial capacities: cobalt_media_buffer_initial_capacity_1080p |
| and cobalt_media_buffer_initial_capacity_4k. |
| |
| - **Fix issue with CSS animations not working with the 'outline' property** |
| |
| There was a bug in previous versions that resulted in incorrect behavior when |
| applying a CSS animation or CSS transition to the 'outline' property. This |
| is fixed now. |
| |
| - **Change default minimum frame time to 16.0ms instead of 16.4ms.** |
| |
| In case a platform can only wait on millisecond resolution, we would prefer |
| that it wait 16ms instead of 17ms, so we round this down. Many platforms |
| will pace themselves to 16.6ms regardless. |
| |
| - **Make new rasterizer type "direct-gles" default** |
| |
| This is an optimized OpenGLES 2.0 rasterizer that provides a fast path for |
| rendering most of the skia primitives that Cobalt uses. While it was |
| available since Version 11, it is now polished and set as the default |
| rasterizer. |
| |
| - **Added support for the fetch and streams Web APIs** |
| |
| A subset of ReadableStream and Fetch Web APIs have been implemented. Fetch |
| may be used to get progressive results via a ReadableStream, or the full |
| result can be accessed as text, from the Response class. |
| |
| - **HTMLMediaElement::loop is supported** |
| |
| Now the video plays in a loop if the loop attribute of the video element is |
| set. |
| |
| - **Add support for MediaDevices.enumerateDevices()** |
| |
| It is now possible to enumerate microphone devices from JavaScript via a |
| call to navigator.mediaDevices.enumerateDevices(). This returns a promise |
| of an array of MediaDeviceInfo objects, each partially implemented to have |
| valid `label` and `kind` attributes. |
| |
| - **Improvements and Bug Fixes** |
| - Fix for pseudo elements not visually updating when their CSS is modified |
| (e.g. by switching their classes). |
| |
| ## Version 14 |
| - **Add support for document.hasFocus()** |
| |
| While support for firing blur and focus events was implemented, querying |
| the current state via document.hasFocus() was not implemented until now. |
| |
| - **Implemented Same Origin Policy and removed navigation whitelist** |
| |
| - Added Same Origin Policy (SOP) and Cross Origin Resource Sharing (CORS) |
| suport to Cobalt. In particular, it is added to XHR, script elements, |
| link elements, style elements, media elements and @font-face CSS rules. |
| - Removed hardcoded YouTube navigation whitelist in favor of SOP and CSP. |
| |
| ## Version 12 |
| - **Add support for touchpad not associated with a pointer** |
| |
| This adds support for input of type kSbInputDeviceTypeTouchPad for |
| touchpads not associated with a pointer. |
| |
| ## Version 11 |
| - **Splash Screen Customization** |
| |
| The Cobalt splash screen is customizable. Documents may use a link element |
| with attribute rel="splashscreen" to reference the splash screen which will |
| be cached if local cache is implemented on the platform. Additionally |
| fallbacks may be specified via command line parmeter or gypi variable. |
| For more information, see [doc/splash_screen.md](doc/splash_screen.md). |
| |
| - **Introduce C\+\+11** |
| |
| C\+\+11 is now used within Cobalt code, and so Cobalt must be compiled using |
| C\+\+11 toolchains. |
| |
| - **Update SpiderMonkey from version 24 to 45; support ECMAScript 6** |
| |
| The Mozilla SpiderMonkey JavaScript engine is rebased up to version 45, and |
| thus ECMAScript 6 is now supported by Cobalt. You will need to modify your |
| `gyp_configuration.gypi` file to set `'javascript_engine': 'mozjs-45'` to |
| enable this. |
| |
| - **Fetch/Stream API** |
| |
| Cobalt now supports the Fetch/Stream API. |
| |
| - **On-device Speech-to-Text support** |
| |
| Support for utilizing the new Starboard speech recognizer interface in order |
| to allow for on-device speech-to-text support is now added. The Starboard |
| interface is defined in |
| [starboard/speech_recognizer.h](../starboard/speech_recognizer.h). |
| |
| - **Mouse pointer support** |
| |
| Cobalt now supports pointer events and will respond to Starboard |
| `kSbInputEventTypeMove` events. These will be passed into the WebModule to |
| be processed by JavaScript. |
| |
| - **Custom Web Extension Support** |
| |
| Cobalt now allows platforms to inject a custom namespace property into |
| the JavaScript global `window` object visible to the web apps. This allows |
| for custom web apps to interface with custom C++ code written outside of |
| Cobalt common code. See |
| [doc/webapi_extension.md](doc/webapi_extension.md) for more details. |
| |
| - **Playback Rate** |
| |
| Cobalt now supports adjusting the video playback rate. |
| |
| - **AutoMem - Memory Configuration** |
| |
| AutoMem has been added which assists developers in tuning the memory |
| settings of the Cobalt app. On startup, memory settings are now printed |
| for all builds except gold. Memory settings can be altered via the |
| command line, build files and in some instances the Starboard API. |
| For more information, see [cobalt/doc/memory_tuning.md](doc/memory_tuning.md). |
| |
| - **Page Visibility API Support** |
| |
| Cobalt now supports the page visibility API, and will signal visibility and |
| focus changes to the web app as the process transitions between Starboard |
| lifecycle states. See the |
| new [Application Lifecycle Integration](doc/lifecycle.md) document for more |
| details. |
| |
| - **Opus Support** |
| |
| Added support for providing Opus audio-specific config to Starboard. Requires |
| Starboard 6. |
| |
| - **Linux build now supports 360 video** |
| |
| The Linux build linux-x64x11 now supports 360 video, and can be used as a |
| reference implementation. |
| |
| - **Stop the application if not retrying after a connection error** |
| |
| A positive response from `kSbSystemPlatformErrorTypeConnectionError` now |
| indicates that Cobalt should retry the failed request. Any other response now |
| causes Cobalt to call `SbSystemRequestStop`. |
| |
| - **Frame rate counter** |
| |
| A frame rate counter is now made accessible. It actually displays frame |
| times, the inverse of frame rate. In this case, 16.6ms corresponds to 60fps. |
| It is accessible both as an overlay on the display by the command line |
| option, "--fps_overlay". The data can also be printed to stdout with the |
| command line option "--fps_stdout". The frame rate statistics will be |
| updated each time an animation ends, or after 60 frames have been processed. |
| Both command line flags are available in Gold builds. |
| |
| - **Add support for rendering `kSbDecodeTargetFormat1PlaneUYVY` (YUV 422)** |
| |
| Decode targets with the format `kSbDecodeTargetFormat1PlaneUYVY` will now |
| be rendered by Cobalt. This will allow decoders that produce YUV 422 UYVY |
| video frames to now efficiently support 360 video. |
| |
| - **Preload Support** |
| |
| Support for preloading an application with no graphics resources. See the |
| new [Application Lifecycle Integration](doc/lifecycle.md) guide for more |
| details. |
| |
| - **Improvements and Bug Fixes** |
| - Fixed position elements given correct draw order without requiring z-index. |
| - Overflow-hidden correctly applied when z-index is used. |
| - Padding box forms containing block for fixed position elements within |
| transforms. |
| - Determine whether a font is bold in more cases, so synthetic bolding isn't |
| incorrectly applied. |
| - Fix bug where decoding images with large headers would fail. |
| - Include missing CSS transforms in `GetClientRects()` calculations. |
| - CSS Transitions and Animations not resetting properly when adjusting |
| `display: none` on an element. |
| - `offset_left` and similar properties are no longer cause many expensive |
| re-layouts to query. |
| - Fix bug where pseudo-elements were "inheriting" the inline style of their |
| parent elements as if it were their own inline style. |
| |
| ## Version 9 |
| - **Improvements and Bug Fixes** |
| - Non-fixed position elements given correct draw order without requiring |
| z-index. |