Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Summary of Igalia's contributions to Chromium in the past year (2020)

Summary of Igalia's contributions to Chromium in the past year (2020)

Summary of Igalia's contributions to Chromium to different parts of Chromium during the past year, including Onion Soup, CSS, V8, Accessibility, MathML, Ozone/Wayland and other topics.

Presented at the BlinkOn 13 (virtual) conference on November 18th 2020.

Video: https://www.youtube.com/watch?v=q8XCMFhHkvQ&t=554

Mario Sánchez Prada

November 18, 2020
Tweet

More Decks by Mario Sánchez Prada

Other Decks in Technology

Transcript

  1. Summary of Igalia's contributions to Chromium in the past year

    Mario Sánchez Prada BlinkOn 13 / November, 2020
  2. About me CS Engineer & member of Igalia’s Chromium Team

    • GNOME: Contributor, GNOME foundation member • WebKit: WebKitGTK, Linux Accessibility • Chromium: Servicification, Onion Soup
  3. Onion Soup (I) • Started this collaboration in February 2019

    • Finished the migration to the new Mojo types ◦ Also in //components/arc (main roadblock this year) • Migration of modules from //content/renderer to Blink ◦ //c/r/media: Finished webrtc, audio, peerconnection ◦ //c/r/java: WIP Java/JS bridge mojoification (8/13 tasks) ◦ //c/r/a11y: WIP Removed content::AXContent* classes
  4. Onion Soup (II) • Progressed with the migration of legacy

    IPC to Mojo: ◦ Migrated 217/274 messages in //content/renderer ◦ Migrated 8/16 messages from //components/printing • Removed lots of classes/enums from Blink’s public API ◦ 225+ public APIs removed since January 2019 OnionSoup / legacy IPC deprecation status on 2020/Nov/2
  5. CSS • ::marker pseudo-element ◦ Implemented and shipped • CSS

    flow-relative shorthand and offset properties ◦ Implemented and shipped • CSS Custom Properties: ◦ Improved performance resolving inheritance (bug) • New TextBreakIterator's default behavior ◦ Changed default behavior to break after space (bug) • CSS Grid: ◦ Fixed bugs, interop and performance issues
  6. Accessibility • Enabled Linux accessibility mode on the fly (no

    restart) • Added support for more event types in Linux: alert, text attribute change, table sort... • Ported and enhanced accessibility debug tools to Mac to support complex specifications (e.g. DumpAcessibilityTree) • Reported & fixed many bugs related to Chromium dialog UI • General maintenance (bug fixing, performance, tests...). e.g. Event management, focus and positioning, word and caret navigation...
  7. Ozone / Wayland (I) • Working on this since end

    of 2016 (meta bug) • Ozone/Wayland platform is fully upstream since 2018 • Refactored components that were desktop/X11-only to share their implementation with the Ozone/Wayland platforms. • Ozone built by default and part of official Chrome releases ◦ Experimental & disabled by default, can be enabled in runtime: --enable-features=UseOzonePlatform --ozone-platform=x11/wayland
  8. Ozone / Wayland (II) • Developed extension for Wayland DnD

    protocol (still WIP) ◦ Needed to overcome limitations blocking development of tab dragging feature in Ozone/Wayland platform ◦ Implemented in Exo (Wayland compositor for ChromeOS) Plans for 2021 1. Have a successful finch trial for Ozone 2. Make Ozone default on Linux (at some point in H2/2021)
  9. MathML • Upstreamed a lot from our 2019 downstream branch:

    i.e. basic setup & layout, operator dictionary, new CSS properties • Started to upstream support for stretchy operators See tracking bug and the list of merged CLs
  10. V8 • Implemented and shipped: ◦ JS private methods proposal

    • Improved: ◦ Startup snapshot API for integration in Node.js core • 15 CLs merged in total to the V8 repository See the list of merged CLs
  11. Interoperability • Fixed Chromium's behavior to align with the specs

    and and other browsers’ implementation: ◦ ASCII case-insensitiveness for keywords (feature) ◦ Scroll coordinates in non-default writing mode (feature) • Migrated Chromium’s web tests to Web Platform Tests: ◦ Migrated 240 tests related to Flexbox (89), Filters (44), Masking (13) and Grid Layout (94) ◦ Investigated 96 tests and deemed ineligible for porting. ◦ Identified missing features and bugs in other Web engines ◦ Several bugs reported to Firefox and WebKit
  12. Other contributions (I) • LaCrOS (de-coupling the Chrome browser from

    ChromeOS WM): ◦ Ongoing collaboration. So far: Window Manager integration, fractal scaling, multiple display support, general bugfixing... • Protocol handlers: ◦ Safelist distributed web schemes for registerProtocolHandler() ◦ Escaping of U+0020 SPACE and U+7F DELETE in URLs ◦ Remove the title argument from registerProtocolHandler() ◦ Custom protocol handlers bypass Service Worker fetch event ◦ Allow cross-origin registration in extensions
  13. Other contributions (II) • Extensions: ◦ chrome.tabs.removeCSS: ▪ Removed CSS

    added by chrome.tabs.insertCSS. ◦ chrome.dom.openOrClosedShadowRoot: ▪ Allowed access of the closed shadow root. • New contributors: ◦ 4 new Igalians: Alexander Surkov, Minju Kim, Zakhar Voit, Ziran Sun ◦ 1 new committer: Alexander Dunaev ◦ 3 new OWNERs: Henrique Ferreiro, Nick Diego Yamane, Oriol Obrafu ◦ 1 new API OWNER: Manuel Rego Casasnovas ...plus several other changes & fixes
  14. Among the top contributors to Chromium in number of commits

    • Google: 89.5% • *@chromium.org (unmapped): 3.29% • Igalia: 2.45% • Microsoft: 2.04% • Intel: 0.41% Source: git shortlog + mapping of @chromium.org addresses to specific companies i.e. git shortlog -sne --after='2020-01-01T00:00Z' --before='2020-10-22T24:00Z' Some stats & numbers
  15. Some stats & numbers • 2511 CLs merged, 209 CLs/month

    on average • 31 igalians contributing to several different areas: Onion Soup, CSS, a11y, Ozone/Wayland, MathML, V8, Interoperability...
  16. Credit Igalians contributing to the work presented here: Abhijeet Kandalkar,

    Alexander Dunaev, Alexander Surkov, Antia Puentes, Antonio Gomes, Cathie Chen, Delan Azabani, Frédéric Wang, Gyuyoung Kim, Henrique Ferreiro, Jacobo Aragunde Pérez, Javier Fernández García-Boente, Joanmarie Diggs, Jose Dapena Paz, Joyee Cheung, Julie Kim, Maksim Sisov, Manuel Rego Casasnovas, Mario Sanchez Prada, Martin Robinson, Miyoung Shin, Minju Kim, Nick Diego Yamane, Oriol Brufau, Rob Buis, Rossana Monteriso, Sergio Villar Senin, Shivam Balikondwar, Víctor Manuel Jáquez Leal, Zakhar Voit, Ziran Sun