Skip to content

Instantly share code, notes, and snippets.

@joonyoo181
Last active October 30, 2023 00:00
Show Gist options
  • Save joonyoo181/dfadc41ef9740c7ecb126096f264b646 to your computer and use it in GitHub Desktop.
Save joonyoo181/dfadc41ef9740c7ecb126096f264b646 to your computer and use it in GitHub Desktop.

DevTools Media Panel Accessibility Improvements (GSoC 2023)

  • Author: Jeremy Yoo
  • Mentors: Sangbaek Park, Feras Aldahlawi

Project Description

The goal of this project is to enhance the web development experience in Chromium by introducing an improved interface for accessing Media panels. The project consists of two phases:

Phase 1: Adding a New Context Menu Item

In this initial phase, the objective is to enhance the web development experience on Chromium by implementing a "Show in DevTools" option in the context menu. This feature allows developers to easily access video or audio elements in the media tab with a simple right-click.

Note: This feature was rejected by the DevTools team due to its potential impact on almost every Chromium user. DevTools, specifically Media panel users (the target audience for this feature), represent a smaller user base. Consequently, a mid-semester change in project direction was necessary to brainstorm new ideas and implement a different approach, as detailed in Phase 2 below.

Phase 2: Adding a Link Adorner in Elements Panel

The second phase involves creating a new link adorner adjacent to audio and video HTML elements within the DevTool's DOM tree. Clicking on this link adorner directs the user to the media panel, where relevant information is displayed. This feature includes unit tests to verify the presence of the link adorner.

Current State and Future Works

For project-related discussions and updates, please refer to the Project Discussion Thread.

At present, clicking the link adorner opens the Media panel. Future developments will focus on two key aspects:

  1. Implementing a method to return the user from the Media panel to the Elements panel. This may involve adding a context menu item in the Media panel for easy navigation.

  2. Enhancing the link adorner functionality to enable automatic selection of the specified media in the Elements panel within the Media panel. This requires backend protocol changes to assign playerIDs to media elements systematically.

My Experience

Throughout the 18-week duration of this project, I accomplished the following:

  • Addressed code errors
  • Filed a bug report in the Media Panel
  • Developed unit tests that simulate user interactions
  • Implemented a new context menu item
  • Created a new link adorner
  • Documented the design process thoroughly

Towards the end of Google Summer of Code 2023, I had the opportunity to present my work to key stakeholders, including administrators, mentors, and fellow students working on Chromium projects. You can view the presentation here.

Challenges

The DevTools codebase proved to be extensive, and a significant portion of my time was dedicated to studying existing code and experimenting with it. As the features I worked on were relatively novel, my mentors lacked prior experience with them. Consequently, I reached out to various individuals, scheduled meetings, and sought insights into the codebase to develop effective implementation strategies. Ultimately, I had to employ creative problem-solving techniques to streamline the development process.

Takeaways

My experience emphasized the importance of documentation. I found that much of the code I encountered lacked adequate documentation, leading to time-consuming exploration of numerous files before identifying the correct code. As a result, I diligently documented my process in the design documentation for each feature.

Furthermore, I gained an understanding of the extended development cycle, even for seemingly minor features. Chromium maintains a meticulous approach to introducing new code into its CI/CD pipeline, coupled with a thorough reviewing process on Chromium Gerrit.

Conclusion

In wrapping up this incredible journey of the Google Summer of Code 2023, I feel both fulfilled and enthusiastic about the impact of my efforts on the Chromium web development ecosystem. The rejection of the initial context menu idea allowed us to pivot, adapt, and ultimately develop a more effective solution with the link adorner introduced in Phase 2. As we stand on the cusp of completion, I am genuinely thrilled at the prospect of seeing this feature deployed in Chrome, where it will enhance the development experiences of nearly 100k web media developers. This project has been a remarkable learning experience, and I'm grateful for the guidance of my mentors, the collaboration with fellow contributors, and the opportunity to contribute to such a significant open-source project. I look forward to witnessing how this enhancement empowers developers in their work with Chromium's DevTools.

Acknowledgments

I would like to express my gratitude to my mentors, Sangbaek Park and Feras Aldahlawi, who provided invaluable guidance, held weekly progress discussions, and provided clear direction throughout the project. Their support was instrumental in the successful completion of this endeavor.

I also extend my thanks to Changhao Han, Kateryna Prokopenko, Yang Guo, and Ergün Erdoğmuş for their critical feedback and assistance in overcoming various obstacles encountered during the project. Your contributions were greatly appreciated.

media-link-adorner

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment