Persist permission request decisions for a session

Bug #1428754 reported by Chris Coulson on 2015-03-05
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Oxide
High
Chris Coulson

Bug Description

When a user responds to a permission request in Firefox or Chrome, they allow that decision to be remembered for each site.
- Chrome seems to always permanently remember a decision (at least for geolocation and notifications).
- Firefox has the option of remembering for the rest of the session, or remembering permanently.

Ultimately, we want to be where Firefox is and we'll achieve that by having content settings (or site settings) in Oxide. This will consist of the permanent storage, an API for managing site settings and the internal logic for deciding when we need to ask the embedder for a permission.

However, currently we have no persistence in Oxide (every time a permission is requested, we ping the embedder to ask for it). Whilst this works ok for geolocation, it really sucks in the browser because it means that it pops up a permission request every time a user navigates to google.com. What's worse is that for some other permission types (notably, notification), Chromium expects to be able to ask the embedder via the content API if permission was granted for a site after a permission request was responded to. This implies that there must be some persistence in Oxide for it to work correctly.

As part of the content settings work, we should persist all permission request decisions per-WebContext, for the life of the context. This means that when opening the browser, it will only request geolocation permissions for google.com once. The decision will be remembered across tabs until the browser is closed.

Eventually we'll have a mechanism for storing decisions permanently as well as an API for forgetting previously remembered decisions, but that's for another bug.

Changed in oxide:
importance: Undecided → High
status: New → Triaged
assignee: nobody → Chris Coulson (chrisccoulson)
milestone: none → branch-1.7
Changed in oxide:
milestone: branch-1.7 → branch-1.8
status: Triaged → In Progress
Changed in oxide:
milestone: branch-1.8 → branch-1.9
Changed in oxide:
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers