The Open Button is Here.

Screenshot from blog post

A few months back, while Googling away, I got fed up with having to right-click and open tabs one by one from my history. If you juggle tons of tabs, you know the pain.

So, I built the Open Button, to make reopening multiple tabs way easier.

The Initial Concept. permalink

The idea was straightforward: add a button right next to the “Delete” tabs button, preferably on its left, matching its size exactly. With this “Open” button, users can select multiple tabs and open them all at once, saving the hassle of reopening tabs one by one from the history page.

I kicked things off by filing a feature request in Chromium’s bug tracker. Before any code could be written, the idea needed approval.

I dug through Chromium’s Code Search to find the code owners handling the parts I needed. After reaching out and a bit of back-and-forth, they signed on as the project’s code reviewers.

Key Elements. permalink

Putting this feature together involved a few important steps.

The project began by adding translation support using internationalization (i18n). First, the button needed a label that could change depending on the user’s language. That’s where message IDs come in. I created a string key called "open" and linked it to a message ID tag.

This tag basically tells the translation system:

(a) What the text says.

(b) Where it’s used in the code.

(c) What the default English word is (“Open”).

That way, users in Germany, Japan, or other countries see “Open” in their own language instead of just English.

Screenshot from blog post

When the button is clicked, it triggers a function called openSelectedItems. That function sends a signal (kind of like raising your hand) called 'open-selected'. The website listens for that signal and responds by running another function: openSelected.

openSelected then checks which tabs you selected from your history and opens each one in a new browser tab.

Screenshot from blog post

If you want to dig into the implementation, the full code is available in the Chromium repository.

Writing the program wasn’t too difficult, but it was definitely a bit tedious. The biggest challenge was making sure everything followed Chromium’s official contribution guidelines, which ended up extending the timeline by a few months.

Rolling It Out. permalink

Since Chromium is open-source and reviewed by multiple teams, Gerrit is the perfect tool to handle code reviews and ensure all changes follow the project’s strict guidelines.

I used Gerrit to submit my updates, working through Git, a system that tracks code changes and helps with collaboration. Every time I pushed a change, Gerrit assigned a unique ID to keep track of it and manage updates smoothly.

The Finish Line. permalink

Thanks to Google’s transparent release schedule, I was able to track both the planned rollout for this feature and the versions of Chrome across different operating systems.

Mission accomplished. On to whatever’s next.