SlideShare a Scribd company logo
1 of 8
Download to read offline
Status of Onion Soup
Gyuyoung Kim
Igalia
What’s the Onion Soup?
● Started from Nov. 2015
● Motivation
○ After Blink was forked from WebKit, many of the old layers of abstraction didn’t make sense
and unnecessary in Blink
● Goal
○ “Simplify the codebase, empower developers to implement features that run faster, and
remove hurdles for developers interfacing with the rest of the Chromium codebase”
● Plan
○ Replace legacy IPC
○ Move features from //content/renderer to Blink
○ Remove public/web in Blink
2
[1]
Simple example of Onion Soup (1/2)
● DateTimeChooser OnionSoup
Browser Process
ExternalDateTimeChooser
RendererDateTimePicker
WebContentsImpl
DateTimeChooserAndroid
Java_DateTimeChooserAndroid
ChromeClientImpl
ChooserOnlyTemporalInputTypeView
DateTimeChooserAndroid
Renderer Process
ExternalDateTimeChooser
Onion
Souping
Java_DateTimeChooserAndroid
ChromeClientImplRenderViewImpl
IPC Mojo
: blink
: content/browser
: android java
ChooserOnlyTemporalInputTypeView
: content/renderer
3
Simple example of Onion Soup (2/2)
IPC_STRUCT_TRAITS_BEGIN(content::DateTimeSuggestion)
IPC_STRUCT_TRAITS_MEMBER(value)
IPC_STRUCT_TRAITS_MEMBER(localized_value)
IPC_STRUCT_TRAITS_MEMBER(label)
IPC_STRUCT_TRAITS_END()
IPC_STRUCT_BEGIN(ViewHostMsg_DateTimeDialogValue_Params)
IPC_STRUCT_MEMBER(ui::TextInputType, dialog_type)
IPC_STRUCT_MEMBER(double, dialog_value)
IPC_STRUCT_MEMBER(double, minimum)
IPC_STRUCT_MEMBER(double, maximum)
IPC_STRUCT_MEMBER(double, step)
IPC_STRUCT_MEMBER(std::vector<content::DateTimeSuggestion>, suggestions)
IPC_STRUCT_END()
IPC_MESSAGE_ROUTED1(ViewHostMsg_OpenDateTimeDialog,
ViewHostMsg_DateTimeDialogValue_Params /* value */)
struct DateTimeSuggestion {
// The date/time value represented as a double.
double value;
// The localized value to be shown to the user.
mojo_base.mojom.String16 localized_value;
// The label for the suggestion.
mojo_base.mojom.String16 label;
};
struct DateTimeDialogValue {
ui.mojom.TextInputType dialog_type;
double dialog_value;
double minimum;
double maximum;
double step;
array<DateTimeSuggestion> suggestions;
};
interface DateTimePicker {
OpenDateTimeDialog(DateTimeDialogValue value) =>
(bool success, double dialog_value);
};
● DateTimeChooser OnionSoup
IPC for DateTimeChooser
Mojo for DateTimeChooser
4
Progress
● Igalia started to participate in the Onion Soup since February 2019
● Progress (13th August 2019)[2]
○ Deprecating Blink Public API
■ Remove when Blink public API is unused or it’s only used by Blink
■ Onion Soup when it’s used only by a couple of call sites in //content
● MediaStream, MediaRecorder, Autofill, ImageDownloader, InstalledApp,
DateTimeChooser, PushMessaging, WebRTC, P2P, PeerConnection, and so on.
■ Progress tracker
● https://docs.google.com/spreadsheets/d/1TBzERV4BAd9peJJrxvrVn1tZb-WrPb7iMFiRUqJ6crE/edit#gid=
0
○ Replace legacy IPCs with Mojo: 93% Done
○ Migrate the features to Blink: 87% Done
○ The initial vision of Onion Soup was done mostly!
5
Onion Soup 2.0 [3]
● Goal
○ Massively simplify the interactions between Chromium layer and Blink layer and
reduce the technical debt further
● Plan
○ Finish Onion Soup 1.0
○ Switch Mojo to new syntax
○ Convert legacy IPC in //content/ to Mojo
○ Slim down Blink public APIs
○ Remove the {platform,core,modules}/exported layers
○ Remove Blink mojom types (mojom::blink::X)
● Igalia will keep working on Onion Soup 2.0!
6
Thank you
7
Reference
1. Onion Soup 1.0
a. https://docs.google.com/document/d/13XsbaBz7A2H0PZIdFcytHf5-fVOlAfkLlIUKhxKzs44/edit#heading=h.ubda816cpe2
m
2. Onion Soup status (87% done!)
a. https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/okYy3y9q-6Q/JW022t7CDwAJ
3. Onion Soup 2.0
a. https://docs.google.com/document/d/1lzGeXN4nwnANdFSpVxmJ1TUgb3QBPFCjVxLsFVBlKdE/edit#heading=h.hwvk7r
wdbn2y
8

More Related Content

More from Igalia

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
Igalia
 

More from Igalia (20)

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
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...
 
Async page flip in DRM atomic API
Async page flip in DRM  atomic APIAsync page flip in DRM  atomic API
Async page flip in DRM atomic API
 
From the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepFrom the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by Step
 
Migrating Babel from CommonJS to ESM
Migrating Babel     from CommonJS to ESMMigrating Babel     from CommonJS to ESM
Migrating Babel from CommonJS to ESM
 
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
 
Freedreno on Android – XDC 2023
Freedreno on Android          – XDC 2023Freedreno on Android          – XDC 2023
Freedreno on Android – XDC 2023
 
On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023
 
Status Update of the VKMS DRM driver – XDC 2023
Status Update of the VKMS DRM driver – XDC 2023Status Update of the VKMS DRM driver – XDC 2023
Status Update of the VKMS DRM driver – XDC 2023
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Recently uploaded (20)

Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Status of Onion Soup (BlinkOn 11)

  • 1. Status of Onion Soup Gyuyoung Kim Igalia
  • 2. What’s the Onion Soup? ● Started from Nov. 2015 ● Motivation ○ After Blink was forked from WebKit, many of the old layers of abstraction didn’t make sense and unnecessary in Blink ● Goal ○ “Simplify the codebase, empower developers to implement features that run faster, and remove hurdles for developers interfacing with the rest of the Chromium codebase” ● Plan ○ Replace legacy IPC ○ Move features from //content/renderer to Blink ○ Remove public/web in Blink 2 [1]
  • 3. Simple example of Onion Soup (1/2) ● DateTimeChooser OnionSoup Browser Process ExternalDateTimeChooser RendererDateTimePicker WebContentsImpl DateTimeChooserAndroid Java_DateTimeChooserAndroid ChromeClientImpl ChooserOnlyTemporalInputTypeView DateTimeChooserAndroid Renderer Process ExternalDateTimeChooser Onion Souping Java_DateTimeChooserAndroid ChromeClientImplRenderViewImpl IPC Mojo : blink : content/browser : android java ChooserOnlyTemporalInputTypeView : content/renderer 3
  • 4. Simple example of Onion Soup (2/2) IPC_STRUCT_TRAITS_BEGIN(content::DateTimeSuggestion) IPC_STRUCT_TRAITS_MEMBER(value) IPC_STRUCT_TRAITS_MEMBER(localized_value) IPC_STRUCT_TRAITS_MEMBER(label) IPC_STRUCT_TRAITS_END() IPC_STRUCT_BEGIN(ViewHostMsg_DateTimeDialogValue_Params) IPC_STRUCT_MEMBER(ui::TextInputType, dialog_type) IPC_STRUCT_MEMBER(double, dialog_value) IPC_STRUCT_MEMBER(double, minimum) IPC_STRUCT_MEMBER(double, maximum) IPC_STRUCT_MEMBER(double, step) IPC_STRUCT_MEMBER(std::vector<content::DateTimeSuggestion>, suggestions) IPC_STRUCT_END() IPC_MESSAGE_ROUTED1(ViewHostMsg_OpenDateTimeDialog, ViewHostMsg_DateTimeDialogValue_Params /* value */) struct DateTimeSuggestion { // The date/time value represented as a double. double value; // The localized value to be shown to the user. mojo_base.mojom.String16 localized_value; // The label for the suggestion. mojo_base.mojom.String16 label; }; struct DateTimeDialogValue { ui.mojom.TextInputType dialog_type; double dialog_value; double minimum; double maximum; double step; array<DateTimeSuggestion> suggestions; }; interface DateTimePicker { OpenDateTimeDialog(DateTimeDialogValue value) => (bool success, double dialog_value); }; ● DateTimeChooser OnionSoup IPC for DateTimeChooser Mojo for DateTimeChooser 4
  • 5. Progress ● Igalia started to participate in the Onion Soup since February 2019 ● Progress (13th August 2019)[2] ○ Deprecating Blink Public API ■ Remove when Blink public API is unused or it’s only used by Blink ■ Onion Soup when it’s used only by a couple of call sites in //content ● MediaStream, MediaRecorder, Autofill, ImageDownloader, InstalledApp, DateTimeChooser, PushMessaging, WebRTC, P2P, PeerConnection, and so on. ■ Progress tracker ● https://docs.google.com/spreadsheets/d/1TBzERV4BAd9peJJrxvrVn1tZb-WrPb7iMFiRUqJ6crE/edit#gid= 0 ○ Replace legacy IPCs with Mojo: 93% Done ○ Migrate the features to Blink: 87% Done ○ The initial vision of Onion Soup was done mostly! 5
  • 6. Onion Soup 2.0 [3] ● Goal ○ Massively simplify the interactions between Chromium layer and Blink layer and reduce the technical debt further ● Plan ○ Finish Onion Soup 1.0 ○ Switch Mojo to new syntax ○ Convert legacy IPC in //content/ to Mojo ○ Slim down Blink public APIs ○ Remove the {platform,core,modules}/exported layers ○ Remove Blink mojom types (mojom::blink::X) ● Igalia will keep working on Onion Soup 2.0! 6
  • 8. Reference 1. Onion Soup 1.0 a. https://docs.google.com/document/d/13XsbaBz7A2H0PZIdFcytHf5-fVOlAfkLlIUKhxKzs44/edit#heading=h.ubda816cpe2 m 2. Onion Soup status (87% done!) a. https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/okYy3y9q-6Q/JW022t7CDwAJ 3. Onion Soup 2.0 a. https://docs.google.com/document/d/1lzGeXN4nwnANdFSpVxmJ1TUgb3QBPFCjVxLsFVBlKdE/edit#heading=h.hwvk7r wdbn2y 8