SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
HTML5 on the AGL demo platform with Chromium and WAM
Antía Puentes <apuentes@igalia.com>
Lorenzo Tilve <ltilve@igalia.com>
● About us
● Goals of the AGL web runtime
● Chromium and the Web Application Manager (WAM)
● The HTML5 AGL demo image, its home screen and webapps
● Web UI running on the reference hardware
● Status update & plans for the future
Agenda
● Highly specialized Open Source consultancy
● Experts on Browsers and Web Engines:
○ Chromium, WebKit, WPE and Firefox
○ Compilers, JavaScript engines, Graphics, Multimedia, Accessibility
About Igalia
Goals of AGL web runtime
● Integrate full HTML5 support into AGL platform.
● Support Web applications with the same level and integration as any
other native applications.
● Freedom to use any framework or frontend libraries for the user
interface.
● Capability to use standard APIs provided by any web technologies
out-of-the box.
● Potential to reach a big community of developers.
● Ease development, debugging, customization and interoperability with
other services.
The AGL Web Runtime
● Solution based on Chromium and the Web Application Manager from
WebOS OSE platform, open-sourced by LGe.
● Chromium has been verified on multiple embedded devices and
architectures as WebEngine, and provides natural support to Cloud-native
Vehicle technologies.
● Integrate the upstream Ozone/Wayland Chromium implementation that
Igalia has been developing to improve usage of modern GPU capabilities.
Chromium and WAM
● Chromium as the web engine:
○ Provides separation between processes as browser, renderer and GPU ones to
isolate different execution processes and secure interactions with different devices.
○ Huge adoption and continuous improvement on functionalities and optimizations.
● Web Application Manager (WAM):
○ Launches webapps as standalone applications, integrating the AGL security model
to ensure permissions isolation.
○ Manages webapp life-cycle depending on visibility status.
○ Simplifies other extra components of the browser.
Chromium and WAM
Chromium and WAM
● The WAM launcher process was modified to integrate with the AGL application
framework, callbacks and events.
● Initially integrated with Weston Wayland compositor, it was modified to run on top
of the new agl-compositor component developed by Collabora
https://docs.automotivelinux.org/en/master/#5_Component_Documentation/1_agl-compositor/
● It has been under continuous evolution to get adapted to different improvements of
the AGL platform as changes on the security model or Yocto upgrades.
Testing the HTML5 version
● The HTML5 alternative version of the demo platform is available and integrated into the
AGL build system and gerrit repositories since Itchy Icefish version.
● Currently as part of meta-agl-demo Yocto layer.
● Uses the same application framework services as the Qt version, which are exposed
through WebSocket APIs.
● Structures the UI into a permanently visible homescreen, the applications launcher, and
some of the demo webapps.
The HTML5 demo platform
● The gerrit repositories of the demo platform example webapps:
○ https://gerrit.automotivelinux.org/gerrit/admin/repos/q/filter:html5
Getting started
● Startup documentation:
https://docs.automotivelinux.org/en/master/
● Different Reference/Community BSPs can be used to build and test AGL:
https://docs.automotivelinux.org/en/master/#1_Hardware_Support/Overview/
○ Renesas R-Car starter kit: h3ulcb / m3ulcb
○ Intel 64-Bit Hardware Platforms: intel-corei7-64
○ Raspberry Pi 4: raspberrypi4
○ Emulation with QEMU: qemux86-64
● Getting AGL code for the latest versions Jumping Jellyfish 10.0.2 or Kookie Koi 11.0.0
$ repo init -b koi -m koi_11.0.0.xml
-u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo.git
$ repo sync
● Configuring the build and compiling all the stack with Yocto:
$ source meta-agl/scripts/aglsetup.sh -f -m <h3ulcb | raspberrypi4| … >
-b build agl-devel agl-localdev agl-demo
$ bitbake agl-demo-platform-html5
Building HTML5 image
● This fetches and builds the recipes of the meta-agl-demo Yocto layer:
○ WAM
• https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl-demo.git;a=t
ree;f=recipes-wam/wam
○ Chromium 79
• https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl-demo.git;a=t
ree;f=recipes-wam/chromium
Chromium/WAM Yocto layer
● The generated image will be located at:
build/tmp/deploy/images/<arch>/agl-demo-platform-html5-<arch>.wic.xz
● And then flash the image into an SD :
$ xzcat agl-demo-platform-html5-<arch>.wic.xz | sudo dd of=/dev/mmcblk0 bs=4M
&& sync
● Then the SD card can be inserted on the device and booted for the first time.
Flashing the built images
● The web UI is based on the homescreen webapp (that includes some configurable
shortcuts) + the main area that is used to present app contents
The HTML5 layout
● This is another example of webapp, that shows the entire list of available applications
and uses the application framework to launch them.
The apps launcher
● Have the following elements:
○ A config.xml file (metadata, permissions and required APIs).
○ The content or entry point.
○ An icon.
○ The rest of the source code and web application resources.
● Are packaged into a .wgt file and can be installed and run into AGL.
● https://www.w3.org/TR/widgets/
● There is no dependency of any specific web technology:
○ Pure HTML+JavaScript, WASM, Node app
○ Any frameworks or libraries as Enact, AngularJS, React...
Webapps on AGL
● An example of config.xml file:
<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns="http://www.w3.org/ns/widgets"
id="webapps-youtube" version="1.0.0">
<name>Youtube</name>
<icon src="icon.svg"/>
<content src="index.html" type="text/html"/>
<description>YouTube</description>
<feature name="urn:AGL:widget:required-permission">
<param name="urn:AGL:permission::public:display" value="required" />
<param name="urn:AGL:permission::public:audio" value="required" />
<param name="urn:AGL:permission::public:no-htdocs" value="required" />
</feature>
Structure of a webapp: config.xml
<feature name="urn:AGL:widget:required-api">
<param name="homescreen" value="ws" />
</feature>
</widget>
https://docs.automotivelinux.org/en/master/#3_Developer_Guides/1_Application_Framework/4_Widget_configuration_file/
● An example of content: a simple index.html file
<!DOCTYPE html><html><head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>YouTube AGL</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
</head>
<body>
<script>
window.location = "https://www.youtube.com"
</script>
</body>
</html>
Structure of a webapp: Content
● Pack with zip (or use wgtpkg-pack) with the application source code:
$ zip -r app.wgt *
● Copy the generated wgt file and install it on the device:
$ scp -r app.wgt * @<arch>.local:
$ afm-util install app.wgt
● The webapp will be installed with the rest of the available ones at:
@<device>:/usr/local/lib/afm/applications/
Packaging and installing webapps
● AGL Application Framework (AFM) provides APIs and services for: Infotainment,
Telematics and Connectivity and Instrument Cluster.
● https://docs.automotivelinux.org/en/master/#4_APIs_and_Services/0_API_Reference
● WebApps can use them through WebSockets by using AFB.js (IoT.bzh) or its wrapper
agl-js-api:
○ https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/app-framework-binder.git;a=
blob;f=test/AFB.js;h=4c500b993b21c89c7b98974211f7b4c1c76d6098;hb=HEAD
○ https://github.com/AGL-web-applications/agl-js-api/
Connecting to AGL App Framework Services
● audiomixer.js sample code: connecting to audiomixer API at agl-js-api level
import { call as api_call, subscribe as api_subscribe } from ’./api’;
export function set_volume(control, value) {
return api_call("audiomixer/volume",
{control: control, value: value });
}
export function on_volume_changed(handler) {
return api_subscribe("audiomixer/subscribe",
{ event: "volume_changed" }, handler);
}
Connecting to AGL App Framework Services: agl-js-api
audiomixer.on_volume_changed(function(data){
setValue(document.getElementById("slider-"+data.control),
Math.ceil(data.value*100), true);
}).then(function(result) {
console.log("Subscribed To Volume Changed");
});
Connecting to AGL App Framework services
se
● Chromium remote inspector
● Enabled when the image is built with agl-devel
● Accessible at port 9998
Debugging your WebApps
Debugging your WebApps
[ Target Board]
Transferring
Web Page
information...
[ Developer PC]
Open ‘<board IP>:9998’ in Chromium browser
Demo
● There is at the moment ongoing work on several points:
○ Upgrade to Chromium 84
○ Improving stability on scenarios that trigger race condition situations
○ Completing some missing functionalities of the demo webapps
○ Bugfixing and ongoing maintenance to ensure functionality with other
iterations on the platform.
Current status
● There is space to keep improving on several directions:
○ Better integration with the compositor capabilities (web notifications,
interactions between panels, etc).
○ Simplify the process of importing snippets and webapps into the platform.
○ Performance improvements and resource optimizations.
○ Improvements on the architecture design to simplify the maintenance work
and allow a more generic use of WAM.
○ Add documentation and examples of the HTML5 demo platform showing other
web technologies
Future plans
● All work tracked at project JIRA with WebAppMgr label
○ https://jira.automotivelinux.org/issues/?jql=labels%3DWebAppMgr
● Get updated on current work through different channels (mailing lists, dev calls, IRC)
○ https://wiki.automotivelinux.org/dev-call-info
○ https://www.irccloud.com/irc/freenode/channel/automotive
● Participate on the F2F meetings:
○ https://wiki.automotivelinux.org/start#face_to_face_meetings
Open development
See you all in person the next time!
Antía Puentes (@apuentes)
Lorenzo Tilve (@ltilve)
Q & A
Thanks to everyone!

Weitere ähnliche Inhalte

Was ist angesagt?

How To Use AGL CAN Signal
How To Use AGL CAN SignalHow To Use AGL CAN Signal
How To Use AGL CAN SignalYuichi Kusakabe
 
Playwright Begginers Presentation
Playwright Begginers PresentationPlaywright Begginers Presentation
Playwright Begginers PresentationFranPerea6
 
Android Binder IPC for Linux
Android Binder IPC for LinuxAndroid Binder IPC for Linux
Android Binder IPC for LinuxYu-Hsin Hung
 
Cypress-vs-Playwright: Let the Code Speak
Cypress-vs-Playwright: Let the Code SpeakCypress-vs-Playwright: Let the Code Speak
Cypress-vs-Playwright: Let the Code SpeakApplitools
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System ServerOpersys inc.
 
Lcu14 107- op-tee on ar mv8
Lcu14 107- op-tee on ar mv8Lcu14 107- op-tee on ar mv8
Lcu14 107- op-tee on ar mv8Linaro
 
Xen Project Contributor Training Part2 : Processes and Conventions v1.1
Xen Project Contributor Training Part2 : Processes and Conventions v1.1Xen Project Contributor Training Part2 : Processes and Conventions v1.1
Xen Project Contributor Training Part2 : Processes and Conventions v1.1The Linux Foundation
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Leon Anavi
 
Web applications support on AGL
Web applications support on AGLWeb applications support on AGL
Web applications support on AGLIgalia
 
Gatling - Stress test tool
Gatling - Stress test toolGatling - Stress test tool
Gatling - Stress test toolKnoldus Inc.
 
Gatling overview
Gatling overviewGatling overview
Gatling overviewViral Jain
 
Automation With Appium
Automation With AppiumAutomation With Appium
Automation With AppiumKnoldus Inc.
 
Embedded Android Workshop with Pie
Embedded Android Workshop with PieEmbedded Android Workshop with Pie
Embedded Android Workshop with PieOpersys inc.
 
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARMXPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARMThe Linux Foundation
 
XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...
XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...
XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...The Linux Foundation
 
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime RipardKernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime RipardAnne Nicolas
 

Was ist angesagt? (20)

How To Use AGL CAN Signal
How To Use AGL CAN SignalHow To Use AGL CAN Signal
How To Use AGL CAN Signal
 
Playwright Begginers Presentation
Playwright Begginers PresentationPlaywright Begginers Presentation
Playwright Begginers Presentation
 
Android Binder IPC for Linux
Android Binder IPC for LinuxAndroid Binder IPC for Linux
Android Binder IPC for Linux
 
Cypress-vs-Playwright: Let the Code Speak
Cypress-vs-Playwright: Let the Code SpeakCypress-vs-Playwright: Let the Code Speak
Cypress-vs-Playwright: Let the Code Speak
 
Android 10
Android 10Android 10
Android 10
 
Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)
 
Android Audio System
Android Audio SystemAndroid Audio System
Android Audio System
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System Server
 
Lcu14 107- op-tee on ar mv8
Lcu14 107- op-tee on ar mv8Lcu14 107- op-tee on ar mv8
Lcu14 107- op-tee on ar mv8
 
Xen Project Contributor Training Part2 : Processes and Conventions v1.1
Xen Project Contributor Training Part2 : Processes and Conventions v1.1Xen Project Contributor Training Part2 : Processes and Conventions v1.1
Xen Project Contributor Training Part2 : Processes and Conventions v1.1
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?
 
Web applications support on AGL
Web applications support on AGLWeb applications support on AGL
Web applications support on AGL
 
Gatling - Stress test tool
Gatling - Stress test toolGatling - Stress test tool
Gatling - Stress test tool
 
Gatling overview
Gatling overviewGatling overview
Gatling overview
 
Automation With Appium
Automation With AppiumAutomation With Appium
Automation With Appium
 
Embedded Android Workshop with Pie
Embedded Android Workshop with PieEmbedded Android Workshop with Pie
Embedded Android Workshop with Pie
 
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARMXPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
 
XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...
XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...
XPDDS18: Design and Implementation of Automotive: Virtualization Based on Xen...
 
Selenium
SeleniumSelenium
Selenium
 
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime RipardKernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
 

Ähnlich wie HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)

Web Applications Support with the Chromium Embedded Framework on AGL
Web Applications Support with the Chromium Embedded Framework on AGLWeb Applications Support with the Chromium Embedded Framework on AGL
Web Applications Support with the Chromium Embedded Framework on AGLIgalia
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...Igalia
 
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...Igalia
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Microsoft
 
GWT Training - Session 1/3
GWT Training - Session 1/3GWT Training - Session 1/3
GWT Training - Session 1/3Faiz Bashir
 
Scale with a smile with Google Cloud Platform At DevConTLV (June 2014)
Scale with a smile with Google Cloud Platform At DevConTLV (June 2014)Scale with a smile with Google Cloud Platform At DevConTLV (June 2014)
Scale with a smile with Google Cloud Platform At DevConTLV (June 2014)Ido Green
 
Flutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textFlutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textToma Velev
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2JooinK
 
Exploring Google APIs with Python
Exploring Google APIs with PythonExploring Google APIs with Python
Exploring Google APIs with Pythonwesley chun
 
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...Oleg Shalygin
 
Accessing Google Cloud APIs
Accessing Google Cloud APIsAccessing Google Cloud APIs
Accessing Google Cloud APIswesley chun
 
Gitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a proGitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a prosparkfabrik
 
Google Cloud Platform 2014Q1 - Starter Guide
Google Cloud Platform   2014Q1 - Starter GuideGoogle Cloud Platform   2014Q1 - Starter Guide
Google Cloud Platform 2014Q1 - Starter GuideSimon Su
 
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud RunDesigning flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Runwesley chun
 
Get SaaSy with Red Hat OpenShift on AWS (CON305-S) - AWS re:Invent 2018
Get SaaSy with Red Hat OpenShift on AWS (CON305-S) - AWS re:Invent 2018Get SaaSy with Red Hat OpenShift on AWS (CON305-S) - AWS re:Invent 2018
Get SaaSy with Red Hat OpenShift on AWS (CON305-S) - AWS re:Invent 2018Amazon Web Services
 
GWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO ToolsGWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO Toolsbarciszewski
 

Ähnlich wie HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021) (20)

Web Applications Support with the Chromium Embedded Framework on AGL
Web Applications Support with the Chromium Embedded Framework on AGLWeb Applications Support with the Chromium Embedded Framework on AGL
Web Applications Support with the Chromium Embedded Framework on AGL
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
 
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
WPEWebKit, the WebKit port for embedded platforms (Linaro Connect San Diego 2...
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
 
GWT Training - Session 1/3
GWT Training - Session 1/3GWT Training - Session 1/3
GWT Training - Session 1/3
 
Scale with a smile with Google Cloud Platform At DevConTLV (June 2014)
Scale with a smile with Google Cloud Platform At DevConTLV (June 2014)Scale with a smile with Google Cloud Platform At DevConTLV (June 2014)
Scale with a smile with Google Cloud Platform At DevConTLV (June 2014)
 
TIAD : Automate everything with Google Cloud
TIAD : Automate everything with Google CloudTIAD : Automate everything with Google Cloud
TIAD : Automate everything with Google Cloud
 
Gdsc muk - innocent
Gdsc   muk - innocentGdsc   muk - innocent
Gdsc muk - innocent
 
Flutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textFlutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - text
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2
 
Exploring Google APIs with Python
Exploring Google APIs with PythonExploring Google APIs with Python
Exploring Google APIs with Python
 
Google Cloud Platform
Google Cloud Platform Google Cloud Platform
Google Cloud Platform
 
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
 
Accessing Google Cloud APIs
Accessing Google Cloud APIsAccessing Google Cloud APIs
Accessing Google Cloud APIs
 
Gitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a proGitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a pro
 
Google Cloud Platform 2014Q1 - Starter Guide
Google Cloud Platform   2014Q1 - Starter GuideGoogle Cloud Platform   2014Q1 - Starter Guide
Google Cloud Platform 2014Q1 - Starter Guide
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud RunDesigning flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
 
Get SaaSy with Red Hat OpenShift on AWS (CON305-S) - AWS re:Invent 2018
Get SaaSy with Red Hat OpenShift on AWS (CON305-S) - AWS re:Invent 2018Get SaaSy with Red Hat OpenShift on AWS (CON305-S) - AWS re:Invent 2018
Get SaaSy with Red Hat OpenShift on AWS (CON305-S) - AWS re:Invent 2018
 
GWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO ToolsGWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO Tools
 

Mehr von Igalia

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEIgalia
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesIgalia
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceIgalia
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfIgalia
 
Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JITIgalia
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!Igalia
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerIgalia
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in MesaIgalia
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIgalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera LinuxIgalia
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVMIgalia
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsIgalia
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesIgalia
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSIgalia
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webIgalia
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersIgalia
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...Igalia
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on RaspberryIgalia
 

Mehr von Igalia (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded Devices
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to Maintenance
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdf
 
Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JIT
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamer
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera Linux
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVM
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devices
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the web
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shaders
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on Raspberry
 

Kürzlich hochgeladen

John Deere Tractors 5415 Diagnostic Repair Service Manual.pdf
John Deere Tractors 5415 Diagnostic Repair Service Manual.pdfJohn Deere Tractors 5415 Diagnostic Repair Service Manual.pdf
John Deere Tractors 5415 Diagnostic Repair Service Manual.pdfExcavator
 
Why Does My Porsche Cayenne's Exhaust Sound So Loud
Why Does My Porsche Cayenne's Exhaust Sound So LoudWhy Does My Porsche Cayenne's Exhaust Sound So Loud
Why Does My Porsche Cayenne's Exhaust Sound So LoudRoyalty Auto Service
 
Marathi Call Girls Santacruz WhatsApp +91-9930687706, Best Service
Marathi Call Girls Santacruz WhatsApp +91-9930687706, Best ServiceMarathi Call Girls Santacruz WhatsApp +91-9930687706, Best Service
Marathi Call Girls Santacruz WhatsApp +91-9930687706, Best Servicemeghakumariji156
 
SEM 922 MOTOR GRADER PARTS LIST, ALL WHEEL DRIVE
SEM 922 MOTOR GRADER PARTS LIST, ALL WHEEL DRIVESEM 922 MOTOR GRADER PARTS LIST, ALL WHEEL DRIVE
SEM 922 MOTOR GRADER PARTS LIST, ALL WHEEL DRIVEZhandosBuzheyev
 
Effortless Driving Experience Premier Mercedes Sprinter Suspension Service
Effortless Driving Experience Premier Mercedes Sprinter Suspension ServiceEffortless Driving Experience Premier Mercedes Sprinter Suspension Service
Effortless Driving Experience Premier Mercedes Sprinter Suspension ServiceSprinter Gurus
 
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...nirzagarg
 
Washim Call Girls 📞9332606886 Call Girls in Washim Escorts service book now C...
Washim Call Girls 📞9332606886 Call Girls in Washim Escorts service book now C...Washim Call Girls 📞9332606886 Call Girls in Washim Escorts service book now C...
Washim Call Girls 📞9332606886 Call Girls in Washim Escorts service book now C...Dipal Arora
 
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...gajnagarg
 
如何办理麦考瑞大学毕业证(MQU毕业证书)成绩单原版一比一
如何办理麦考瑞大学毕业证(MQU毕业证书)成绩单原版一比一如何办理麦考瑞大学毕业证(MQU毕业证书)成绩单原版一比一
如何办理麦考瑞大学毕业证(MQU毕业证书)成绩单原版一比一ozave
 
Mercedes Check Engine Light Solutions Precision Service for Peak Performance
Mercedes Check Engine Light Solutions Precision Service for Peak PerformanceMercedes Check Engine Light Solutions Precision Service for Peak Performance
Mercedes Check Engine Light Solutions Precision Service for Peak PerformanceMotronix
 
一比一原版(PU学位证书)普渡大学毕业证学历认证加急办理
一比一原版(PU学位证书)普渡大学毕业证学历认证加急办理一比一原版(PU学位证书)普渡大学毕业证学历认证加急办理
一比一原版(PU学位证书)普渡大学毕业证学历认证加急办理ezgenuh
 
John deere 7200r 7230R 7260R Problems Repair Manual
John deere 7200r 7230R 7260R Problems Repair ManualJohn deere 7200r 7230R 7260R Problems Repair Manual
John deere 7200r 7230R 7260R Problems Repair ManualExcavator
 
West Bengal Factories Rules, 1958.bfpptx
West Bengal Factories Rules, 1958.bfpptxWest Bengal Factories Rules, 1958.bfpptx
West Bengal Factories Rules, 1958.bfpptxPankajBhagat45
 
一比一原版(UdeM学位证书)蒙特利尔大学毕业证学历认证怎样办
一比一原版(UdeM学位证书)蒙特利尔大学毕业证学历认证怎样办一比一原版(UdeM学位证书)蒙特利尔大学毕业证学历认证怎样办
一比一原版(UdeM学位证书)蒙特利尔大学毕业证学历认证怎样办ezgenuh
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN ABUDHABI,DUBAI MA...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN ABUDHABI,DUBAI MA...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN ABUDHABI,DUBAI MA...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN ABUDHABI,DUBAI MA...Health
 
一比一原版(UVic学位证书)维多利亚大学毕业证学历认证买留学回国
一比一原版(UVic学位证书)维多利亚大学毕业证学历认证买留学回国一比一原版(UVic学位证书)维多利亚大学毕业证学历认证买留学回国
一比一原版(UVic学位证书)维多利亚大学毕业证学历认证买留学回国ezgenuh
 
如何办理莱斯大学毕业证(Rice毕业证)毕业证成绩单原版一比一
如何办理莱斯大学毕业证(Rice毕业证)毕业证成绩单原版一比一如何办理莱斯大学毕业证(Rice毕业证)毕业证成绩单原版一比一
如何办理莱斯大学毕业证(Rice毕业证)毕业证成绩单原版一比一avy6anjnd
 
What Does The Engine Malfunction Reduced Power Message Mean For Your BMW X5
What Does The Engine Malfunction Reduced Power Message Mean For Your BMW X5What Does The Engine Malfunction Reduced Power Message Mean For Your BMW X5
What Does The Engine Malfunction Reduced Power Message Mean For Your BMW X5Bavarian Workshop
 
01552_14_01306_8.0_EPS_CMP_SW_VC2_Notebook.doc
01552_14_01306_8.0_EPS_CMP_SW_VC2_Notebook.doc01552_14_01306_8.0_EPS_CMP_SW_VC2_Notebook.doc
01552_14_01306_8.0_EPS_CMP_SW_VC2_Notebook.docazrfdstgdgdfh
 
Is Your Mercedes Benz Trunk Refusing To Close Here's What Might Be Wrong
Is Your Mercedes Benz Trunk Refusing To Close Here's What Might Be WrongIs Your Mercedes Benz Trunk Refusing To Close Here's What Might Be Wrong
Is Your Mercedes Benz Trunk Refusing To Close Here's What Might Be WrongMomentum Motorworks
 

Kürzlich hochgeladen (20)

John Deere Tractors 5415 Diagnostic Repair Service Manual.pdf
John Deere Tractors 5415 Diagnostic Repair Service Manual.pdfJohn Deere Tractors 5415 Diagnostic Repair Service Manual.pdf
John Deere Tractors 5415 Diagnostic Repair Service Manual.pdf
 
Why Does My Porsche Cayenne's Exhaust Sound So Loud
Why Does My Porsche Cayenne's Exhaust Sound So LoudWhy Does My Porsche Cayenne's Exhaust Sound So Loud
Why Does My Porsche Cayenne's Exhaust Sound So Loud
 
Marathi Call Girls Santacruz WhatsApp +91-9930687706, Best Service
Marathi Call Girls Santacruz WhatsApp +91-9930687706, Best ServiceMarathi Call Girls Santacruz WhatsApp +91-9930687706, Best Service
Marathi Call Girls Santacruz WhatsApp +91-9930687706, Best Service
 
SEM 922 MOTOR GRADER PARTS LIST, ALL WHEEL DRIVE
SEM 922 MOTOR GRADER PARTS LIST, ALL WHEEL DRIVESEM 922 MOTOR GRADER PARTS LIST, ALL WHEEL DRIVE
SEM 922 MOTOR GRADER PARTS LIST, ALL WHEEL DRIVE
 
Effortless Driving Experience Premier Mercedes Sprinter Suspension Service
Effortless Driving Experience Premier Mercedes Sprinter Suspension ServiceEffortless Driving Experience Premier Mercedes Sprinter Suspension Service
Effortless Driving Experience Premier Mercedes Sprinter Suspension Service
 
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...
 
Washim Call Girls 📞9332606886 Call Girls in Washim Escorts service book now C...
Washim Call Girls 📞9332606886 Call Girls in Washim Escorts service book now C...Washim Call Girls 📞9332606886 Call Girls in Washim Escorts service book now C...
Washim Call Girls 📞9332606886 Call Girls in Washim Escorts service book now C...
 
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...
 
如何办理麦考瑞大学毕业证(MQU毕业证书)成绩单原版一比一
如何办理麦考瑞大学毕业证(MQU毕业证书)成绩单原版一比一如何办理麦考瑞大学毕业证(MQU毕业证书)成绩单原版一比一
如何办理麦考瑞大学毕业证(MQU毕业证书)成绩单原版一比一
 
Mercedes Check Engine Light Solutions Precision Service for Peak Performance
Mercedes Check Engine Light Solutions Precision Service for Peak PerformanceMercedes Check Engine Light Solutions Precision Service for Peak Performance
Mercedes Check Engine Light Solutions Precision Service for Peak Performance
 
一比一原版(PU学位证书)普渡大学毕业证学历认证加急办理
一比一原版(PU学位证书)普渡大学毕业证学历认证加急办理一比一原版(PU学位证书)普渡大学毕业证学历认证加急办理
一比一原版(PU学位证书)普渡大学毕业证学历认证加急办理
 
John deere 7200r 7230R 7260R Problems Repair Manual
John deere 7200r 7230R 7260R Problems Repair ManualJohn deere 7200r 7230R 7260R Problems Repair Manual
John deere 7200r 7230R 7260R Problems Repair Manual
 
West Bengal Factories Rules, 1958.bfpptx
West Bengal Factories Rules, 1958.bfpptxWest Bengal Factories Rules, 1958.bfpptx
West Bengal Factories Rules, 1958.bfpptx
 
一比一原版(UdeM学位证书)蒙特利尔大学毕业证学历认证怎样办
一比一原版(UdeM学位证书)蒙特利尔大学毕业证学历认证怎样办一比一原版(UdeM学位证书)蒙特利尔大学毕业证学历认证怎样办
一比一原版(UdeM学位证书)蒙特利尔大学毕业证学历认证怎样办
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN ABUDHABI,DUBAI MA...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN ABUDHABI,DUBAI MA...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN ABUDHABI,DUBAI MA...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN ABUDHABI,DUBAI MA...
 
一比一原版(UVic学位证书)维多利亚大学毕业证学历认证买留学回国
一比一原版(UVic学位证书)维多利亚大学毕业证学历认证买留学回国一比一原版(UVic学位证书)维多利亚大学毕业证学历认证买留学回国
一比一原版(UVic学位证书)维多利亚大学毕业证学历认证买留学回国
 
如何办理莱斯大学毕业证(Rice毕业证)毕业证成绩单原版一比一
如何办理莱斯大学毕业证(Rice毕业证)毕业证成绩单原版一比一如何办理莱斯大学毕业证(Rice毕业证)毕业证成绩单原版一比一
如何办理莱斯大学毕业证(Rice毕业证)毕业证成绩单原版一比一
 
What Does The Engine Malfunction Reduced Power Message Mean For Your BMW X5
What Does The Engine Malfunction Reduced Power Message Mean For Your BMW X5What Does The Engine Malfunction Reduced Power Message Mean For Your BMW X5
What Does The Engine Malfunction Reduced Power Message Mean For Your BMW X5
 
01552_14_01306_8.0_EPS_CMP_SW_VC2_Notebook.doc
01552_14_01306_8.0_EPS_CMP_SW_VC2_Notebook.doc01552_14_01306_8.0_EPS_CMP_SW_VC2_Notebook.doc
01552_14_01306_8.0_EPS_CMP_SW_VC2_Notebook.doc
 
Is Your Mercedes Benz Trunk Refusing To Close Here's What Might Be Wrong
Is Your Mercedes Benz Trunk Refusing To Close Here's What Might Be WrongIs Your Mercedes Benz Trunk Refusing To Close Here's What Might Be Wrong
Is Your Mercedes Benz Trunk Refusing To Close Here's What Might Be Wrong
 

HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)

  • 1.
  • 2. HTML5 on the AGL demo platform with Chromium and WAM Antía Puentes <apuentes@igalia.com> Lorenzo Tilve <ltilve@igalia.com>
  • 3. ● About us ● Goals of the AGL web runtime ● Chromium and the Web Application Manager (WAM) ● The HTML5 AGL demo image, its home screen and webapps ● Web UI running on the reference hardware ● Status update & plans for the future Agenda
  • 4. ● Highly specialized Open Source consultancy ● Experts on Browsers and Web Engines: ○ Chromium, WebKit, WPE and Firefox ○ Compilers, JavaScript engines, Graphics, Multimedia, Accessibility About Igalia
  • 5.
  • 6. Goals of AGL web runtime ● Integrate full HTML5 support into AGL platform. ● Support Web applications with the same level and integration as any other native applications. ● Freedom to use any framework or frontend libraries for the user interface. ● Capability to use standard APIs provided by any web technologies out-of-the box. ● Potential to reach a big community of developers. ● Ease development, debugging, customization and interoperability with other services.
  • 7. The AGL Web Runtime ● Solution based on Chromium and the Web Application Manager from WebOS OSE platform, open-sourced by LGe. ● Chromium has been verified on multiple embedded devices and architectures as WebEngine, and provides natural support to Cloud-native Vehicle technologies. ● Integrate the upstream Ozone/Wayland Chromium implementation that Igalia has been developing to improve usage of modern GPU capabilities.
  • 8. Chromium and WAM ● Chromium as the web engine: ○ Provides separation between processes as browser, renderer and GPU ones to isolate different execution processes and secure interactions with different devices. ○ Huge adoption and continuous improvement on functionalities and optimizations. ● Web Application Manager (WAM): ○ Launches webapps as standalone applications, integrating the AGL security model to ensure permissions isolation. ○ Manages webapp life-cycle depending on visibility status. ○ Simplifies other extra components of the browser.
  • 10. Chromium and WAM ● The WAM launcher process was modified to integrate with the AGL application framework, callbacks and events. ● Initially integrated with Weston Wayland compositor, it was modified to run on top of the new agl-compositor component developed by Collabora https://docs.automotivelinux.org/en/master/#5_Component_Documentation/1_agl-compositor/ ● It has been under continuous evolution to get adapted to different improvements of the AGL platform as changes on the security model or Yocto upgrades.
  • 11. Testing the HTML5 version ● The HTML5 alternative version of the demo platform is available and integrated into the AGL build system and gerrit repositories since Itchy Icefish version. ● Currently as part of meta-agl-demo Yocto layer. ● Uses the same application framework services as the Qt version, which are exposed through WebSocket APIs. ● Structures the UI into a permanently visible homescreen, the applications launcher, and some of the demo webapps.
  • 12. The HTML5 demo platform ● The gerrit repositories of the demo platform example webapps: ○ https://gerrit.automotivelinux.org/gerrit/admin/repos/q/filter:html5
  • 13. Getting started ● Startup documentation: https://docs.automotivelinux.org/en/master/ ● Different Reference/Community BSPs can be used to build and test AGL: https://docs.automotivelinux.org/en/master/#1_Hardware_Support/Overview/ ○ Renesas R-Car starter kit: h3ulcb / m3ulcb ○ Intel 64-Bit Hardware Platforms: intel-corei7-64 ○ Raspberry Pi 4: raspberrypi4 ○ Emulation with QEMU: qemux86-64
  • 14. ● Getting AGL code for the latest versions Jumping Jellyfish 10.0.2 or Kookie Koi 11.0.0 $ repo init -b koi -m koi_11.0.0.xml -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo.git $ repo sync ● Configuring the build and compiling all the stack with Yocto: $ source meta-agl/scripts/aglsetup.sh -f -m <h3ulcb | raspberrypi4| … > -b build agl-devel agl-localdev agl-demo $ bitbake agl-demo-platform-html5 Building HTML5 image
  • 15. ● This fetches and builds the recipes of the meta-agl-demo Yocto layer: ○ WAM • https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl-demo.git;a=t ree;f=recipes-wam/wam ○ Chromium 79 • https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl-demo.git;a=t ree;f=recipes-wam/chromium Chromium/WAM Yocto layer
  • 16. ● The generated image will be located at: build/tmp/deploy/images/<arch>/agl-demo-platform-html5-<arch>.wic.xz ● And then flash the image into an SD : $ xzcat agl-demo-platform-html5-<arch>.wic.xz | sudo dd of=/dev/mmcblk0 bs=4M && sync ● Then the SD card can be inserted on the device and booted for the first time. Flashing the built images
  • 17. ● The web UI is based on the homescreen webapp (that includes some configurable shortcuts) + the main area that is used to present app contents The HTML5 layout
  • 18. ● This is another example of webapp, that shows the entire list of available applications and uses the application framework to launch them. The apps launcher
  • 19. ● Have the following elements: ○ A config.xml file (metadata, permissions and required APIs). ○ The content or entry point. ○ An icon. ○ The rest of the source code and web application resources. ● Are packaged into a .wgt file and can be installed and run into AGL. ● https://www.w3.org/TR/widgets/ ● There is no dependency of any specific web technology: ○ Pure HTML+JavaScript, WASM, Node app ○ Any frameworks or libraries as Enact, AngularJS, React... Webapps on AGL
  • 20. ● An example of config.xml file: <?xml version="1.0" encoding="UTF-8"?> <widget xmlns="http://www.w3.org/ns/widgets" id="webapps-youtube" version="1.0.0"> <name>Youtube</name> <icon src="icon.svg"/> <content src="index.html" type="text/html"/> <description>YouTube</description> <feature name="urn:AGL:widget:required-permission"> <param name="urn:AGL:permission::public:display" value="required" /> <param name="urn:AGL:permission::public:audio" value="required" /> <param name="urn:AGL:permission::public:no-htdocs" value="required" /> </feature> Structure of a webapp: config.xml <feature name="urn:AGL:widget:required-api"> <param name="homescreen" value="ws" /> </feature> </widget> https://docs.automotivelinux.org/en/master/#3_Developer_Guides/1_Application_Framework/4_Widget_configuration_file/
  • 21. ● An example of content: a simple index.html file <!DOCTYPE html><html><head> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>YouTube AGL</title> <meta http-equiv="Content-Type" content="text/html; charset=utf8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> </head> <body> <script> window.location = "https://www.youtube.com" </script> </body> </html> Structure of a webapp: Content
  • 22. ● Pack with zip (or use wgtpkg-pack) with the application source code: $ zip -r app.wgt * ● Copy the generated wgt file and install it on the device: $ scp -r app.wgt * @<arch>.local: $ afm-util install app.wgt ● The webapp will be installed with the rest of the available ones at: @<device>:/usr/local/lib/afm/applications/ Packaging and installing webapps
  • 23. ● AGL Application Framework (AFM) provides APIs and services for: Infotainment, Telematics and Connectivity and Instrument Cluster. ● https://docs.automotivelinux.org/en/master/#4_APIs_and_Services/0_API_Reference ● WebApps can use them through WebSockets by using AFB.js (IoT.bzh) or its wrapper agl-js-api: ○ https://gerrit.automotivelinux.org/gerrit/gitweb?p=src/app-framework-binder.git;a= blob;f=test/AFB.js;h=4c500b993b21c89c7b98974211f7b4c1c76d6098;hb=HEAD ○ https://github.com/AGL-web-applications/agl-js-api/ Connecting to AGL App Framework Services
  • 24. ● audiomixer.js sample code: connecting to audiomixer API at agl-js-api level import { call as api_call, subscribe as api_subscribe } from ’./api’; export function set_volume(control, value) { return api_call("audiomixer/volume", {control: control, value: value }); } export function on_volume_changed(handler) { return api_subscribe("audiomixer/subscribe", { event: "volume_changed" }, handler); } Connecting to AGL App Framework Services: agl-js-api audiomixer.on_volume_changed(function(data){ setValue(document.getElementById("slider-"+data.control), Math.ceil(data.value*100), true); }).then(function(result) { console.log("Subscribed To Volume Changed"); });
  • 25. Connecting to AGL App Framework services se
  • 26. ● Chromium remote inspector ● Enabled when the image is built with agl-devel ● Accessible at port 9998 Debugging your WebApps
  • 27. Debugging your WebApps [ Target Board] Transferring Web Page information... [ Developer PC] Open ‘<board IP>:9998’ in Chromium browser
  • 28. Demo
  • 29. ● There is at the moment ongoing work on several points: ○ Upgrade to Chromium 84 ○ Improving stability on scenarios that trigger race condition situations ○ Completing some missing functionalities of the demo webapps ○ Bugfixing and ongoing maintenance to ensure functionality with other iterations on the platform. Current status
  • 30. ● There is space to keep improving on several directions: ○ Better integration with the compositor capabilities (web notifications, interactions between panels, etc). ○ Simplify the process of importing snippets and webapps into the platform. ○ Performance improvements and resource optimizations. ○ Improvements on the architecture design to simplify the maintenance work and allow a more generic use of WAM. ○ Add documentation and examples of the HTML5 demo platform showing other web technologies Future plans
  • 31. ● All work tracked at project JIRA with WebAppMgr label ○ https://jira.automotivelinux.org/issues/?jql=labels%3DWebAppMgr ● Get updated on current work through different channels (mailing lists, dev calls, IRC) ○ https://wiki.automotivelinux.org/dev-call-info ○ https://www.irccloud.com/irc/freenode/channel/automotive ● Participate on the F2F meetings: ○ https://wiki.automotivelinux.org/start#face_to_face_meetings Open development
  • 32. See you all in person the next time! Antía Puentes (@apuentes) Lorenzo Tilve (@ltilve) Q & A Thanks to everyone!