$30 off During Our Annual Pro Sale. View Details »

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

    View Slide

  2. About me
    CS Engineer & member of Igalia’s Chromium Team
    ● GNOME: Contributor, GNOME foundation member
    ● WebKit: WebKitGTK, Linux Accessibility
    ● Chromium: Servicification, Onion Soup

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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...

    View Slide

  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

    View Slide

  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)

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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...

    View Slide

  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

    View Slide

  17. Thanks!
    ● Mail: [email protected]
    ● Blog: https://blogs.igalia.com/mario
    ● Other: @mariospr at Twitter & GitHub

    View Slide