SlideShare une entreprise Scribd logo
1  sur  8
Télécharger pour lire hors ligne
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

Contenu connexe

Plus de 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
 

Plus de 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
 

Dernier

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Dernier (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
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
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
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)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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
 
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
 
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
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 

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