Open Bug 1538451 Opened 6 years ago Updated 20 days ago

Make extension shortcut management page accessible by a link/URL for a WebExtension

Categories

(WebExtensions :: Frontend, enhancement, P5)

enhancement

Tracking

(Not tracked)

ASSIGNED

People

(Reporter: 5i13ghzt462u, Assigned: mowerm, Mentored)

References

(Blocks 1 open bug)

Details

(Keywords: good-first-bug, Whiteboard: [design-decision-approved][wecg])

Attachments

(2 files)

Use case: Extensions might want to have a button "adjust shortcuts/hot keys", which opens this page. (preferably scrolled to their own extension)

Solution 1: The UI introduced in bug 1303384 should be linkable, i.e. one should e.g. be able to get to about:addons#shortcuts to manage the shortcuts.

Or
Solution 2: introduce a new WebExtension API that opens this page. (preferably scrolled to their own extension)

This idea came up in https://github.com/keepassxreboot/keepassxc-browser/issues/389#issuecomment-475847006.

Severity: normal → enhancement
Whiteboard: [design-decision-needed]
Priority: -- → P5
Whiteboard: [design-decision-needed] → [design-decision-approved]

Great, now what is the solution you want to pursue: 1 or 2 (as explained in the OP)?

This is a good first bug, and relevant for the currently active Outreachy project because this task shows how one can extend a new extension API AND make changes to about:addons.

To get started, see https://wiki.mozilla.org/WebExtensions/Contribution_Onramp

The browser.runtime.openOptionsPage API method can be extended to take a parameter to open the extension shortcuts management page.

The method is implemented at https://searchfox.org/mozilla-central/rev/919607a3610222099fbfb0113c98b77888ebcbfb/toolkit/components/extensions/parent/ext-runtime.js#131-140 .

The desktop version of the API is at https://searchfox.org/mozilla-central/rev/919607a3610222099fbfb0113c98b77888ebcbfb/browser/components/extensions/parent/ext-browser.js#112-130 ,
the mobile version of the API is at https://searchfox.org/mozilla-central/rev/919607a3610222099fbfb0113c98b77888ebcbfb/mobile/android/components/extensions/ext-android.js#640-669 .
Since shortcuts are uncommon on mobile, the new API method only needs to be supported on desktop. When the new property is passed on mobile, an error should be thrown.

When about:addons is opened, an internal URL (addons://...) is used. This internal URL can be viewed through the devtools by executing history.state in the console. Currently, the URL is just addons://shortcuts/shortcuts. To support the ability to jump to a specific extension, the extension ID can be set as the last parameter, e.g. addons://shortcuts/<extension ID here>. This parameter would then become available as the param value in the show method in aboutaddons.js - see https://searchfox.org/mozilla-central/rev/919607a3610222099fbfb0113c98b77888ebcbfb/toolkit/mozapps/extensions/content/aboutaddons.js#4615-4620,4639-4647 .

Blocks: 1269456
Mentor: rob
Status: UNCONFIRMED → NEW
Ever confirmed: true
Keywords: good-first-bug

(In reply to Rob Wu [:robwu] from comment #2)

This is a good first bug, and relevant for the currently active Outreachy project because this task shows how one can extend a new extension API AND make changes to about:addons.

To get started, see https://wiki.mozilla.org/WebExtensions/Contribution_Onramp

The browser.runtime.openOptionsPage API method can be extended to take a parameter to open the extension shortcuts management page.

The method is implemented at https://searchfox.org/mozilla-central/rev/919607a3610222099fbfb0113c98b77888ebcbfb/toolkit/components/extensions/parent/ext-runtime.js#131-140 .

The desktop version of the API is at https://searchfox.org/mozilla-central/rev/919607a3610222099fbfb0113c98b77888ebcbfb/browser/components/extensions/parent/ext-browser.js#112-130 ,
the mobile version of the API is at https://searchfox.org/mozilla-central/rev/919607a3610222099fbfb0113c98b77888ebcbfb/mobile/android/components/extensions/ext-android.js#640-669 .
Since shortcuts are uncommon on mobile, the new API method only needs to be supported on desktop. When the new property is passed on mobile, an error should be thrown.

When about:addons is opened, an internal URL (addons://...) is used. This internal URL can be viewed through the devtools by executing history.state in the console. Currently, the URL is just addons://shortcuts/shortcuts. To support the ability to jump to a specific extension, the extension ID can be set as the last parameter, e.g. addons://shortcuts/<extension ID here>. This parameter would then become available as the param value in the show method in aboutaddons.js - see https://searchfox.org/mozilla-central/rev/919607a3610222099fbfb0113c98b77888ebcbfb/toolkit/mozapps/extensions/content/aboutaddons.js#4615-4620,4639-4647 .

Hello Rob Wu,
I am on the Outreachy Internship program and I will like to work on this bug.

Hi Rob Wu, I am an Outreachy applicant and I'd like to work on this

Thanks for signaling interest in this bug. Given the scarcity of good-first-bugs, we consider bugs open for patches until a patch is attached.

In the unexpected case that two people independently made much progress on a patch, we will still provide feedback on the patches to help you with familiarizing yourself with the project. Good-first-bugs exist to help newcomers to start with contributing to this project (setting up the environment, running tests, etc.). The following step is to work on a more challenging bug, to demonstrate enough proficiency to succeed in the "Improve Firefox to give users more control over add-ons in Container tabs" project on Outreachy.

Assignee: nobody → kuthumipepple
Status: NEW → ASSIGNED

Hi Rob Wu, I recently submitted a patch for this bug. Please kindly review and provide me with feedback.

Hey Kuthumi, do you need help with anything? Please feel free to ask Rob or me.

Flags: needinfo?(kuthumipepple)

Hi Kumuthi, since we haven't heard from you in awhile, we're going to open this bug up to other contributors. If you'd like to come back and finish it, leave a comment and we'll reassign it to you. Thanks!

Assignee: kuthumipepple → nobody
Status: ASSIGNED → NEW
Flags: needinfo?(kuthumipepple)

Yes I'd like to come to finish it. I was away for a while, I apologize for not staying in touch.

Is this bug still open? If so, I would love to work on it.

Thanks

Hi Rayvan, go for it! If you haven't already done so, please check out comment #2 for help getting started. :) We'll assign you to the issue once you submit a PR.

Hi, I'm Garima, an Outreachy participant. If no one is working on this bug, I'd love to! :)

Flags: needinfo?(mixedpuppy)
Flags: needinfo?(cneiman)

Hi Garima! It looks like Rayyan expressed interest in this bug -- let's give them a few more days to submit a patch for review before you start working on it. :)

What Outreachy project are you interested in applying for? I want to make sure that we can connect you to some issues that will put you in contact with the project mentors.

Flags: needinfo?(mixedpuppy)
Flags: needinfo?(cneiman)

(In reply to Caitlin Neiman [:caitmuenster] from comment #15)

Hi Garima! It looks like Rayyan expressed interest in this bug -- let's give them a few more days to submit a patch for review before you start working on it. :)

What Outreachy project are you interested in applying for? I want to make sure that we can connect you to some issues that will put you in contact with the project mentors.

Hi Caitlin! Yeah sure, I'll wait for Rayyan to submit his patch. I'm interested in the project "Improve the Firefox site data manager UI". :)

Hi
I am actively working on the issue. However, I am a full-time student, so I am working at a slower pace.
Thank you for being patient with me.

some news on this ?

It would be great to have something like this; I've found that extension users are often confused about how to manage their shortcuts, and walking them through the menu dive is poor UX, and an error-prone process.

That said, it's not clear to me that extending openOptionsPage to take a "shortcuts" option is the way to go. Might this not cause future issues if other browsers elect to extend openOptionsPage in a different way?

It seems to me that a simpler method might be to allow tabs.create to open a page like about:addons/shortcuts. Chrome allows a similar approach, like chrome.tabs.create({ url: "chrome://extensions/shortcuts" }). This would seem to relate to https://bugzilla.mozilla.org/show_bug.cgi?id=1269456

If someone from Mozilla could provide some guidance as to what approach makes the most sense, I'd be happy to work on a patch for this.

Severity: normal → S3
  • Introduce browser.runtime.openShortcutsPage() method that can be
    called by extensions to open the shortcuts view in AddonManager.
    [Desktop only; mobile does not support keyboard shortcuts]
  • If an extension includes commands, focus the relevant card in the
    shortcuts view by replacing the transparent border with the default
    accent color and scrolling it into view.
  • Allow extensions to call the method even if they don't have commands
    of their own (view opens and no extension card is focused).
  • Add mochitests to verify:
    • openShortcutsPage is available in browser.runtime.
    • AddonManager tab is opened or reused if already open when
      openShortcutsPage() is called.
    • AddonManager view is correctly set to shortcuts, the extension can
      be found in the page, and if commands are supported the extension is
      focused.

Supersedes https://bugzilla.mozilla.org/attachment.cgi?id=9183595 which
appears to be abandoned.

Assignee: nobody → mowerm
Status: NEW → ASSIGNED

Thanks for the renewed patch. Since the functionality may be of interest to other browsers, I'm going to bring this up in the WECG to poll for interest and opinions on the shape of the API. The topic is at https://github.com/w3c/webextensions/issues/310.

Whiteboard: [design-decision-approved] → [design-decision-approved][wecg]

This good-first-bug hasn't had any activity for 2 months, it is automatically unassigned.
For more information, please visit BugBot documentation.

Assignee: mowerm → nobody
Status: ASSIGNED → NEW

The lack of activity is not due to the patch author, but due to a dependency on finalization of discussions in the WECG.

Assignee: nobody → mowerm
Status: NEW → ASSIGNED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: