Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add User Experience requirements section describing permissions display requirements #411

Closed
wants to merge 3 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions getusermedia.html
Original file line number Diff line number Diff line change
Expand Up @@ -5025,6 +5025,83 @@ <h2>Examples</h2>
</pre>
</div>
</section>
<section>
<h1>User Experience Requirements</h1>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we call this something without UX in it, since we've worked hard to take all actual UX parts out?

Like: "Privacy Indicator Requirements" ?

<p>For each <var>device</var> for which there is a
[[\devicesAccessibleMap]]<var>[device]</var> internal slot,
define <var>&lt;device&gt;Accessible</var> to be On whenever the
slot has a value of true and Off otherwise.</p>
<p>For each <var>device</var> for which there is a
[[\devicesLiveMap]]<var>[device]</var> internal slot,
define <var>&lt;device&gt;Live</var> to be On whenever the
slot has a value of true and Off otherwise.</p>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The indexes must be deviceIds the way it's currently written. Also, slots shouldn't ever be absent if we filter the same way as in 9.2, e.g.:

"For each individual device that getUserMedia() exposes, using the device's deviceId,

  • define <device>Accessible to be On whenever [[devicesAccessibleMap]][deviceId] is true and Off otherwise.
  • define <device>Live to be On whenever [[devicesLiveMap]][deviceId] is true and Off otherwise.

<p>For each <var>kind</var> of device that <a>getUserMedia()</a>
exposes,</p>
<ul>
<li>Define <var>&lt;kind&gt;Accessible</var> to be On
whenever <var>&lt;device&gt;Accessible</var> is On for
any <var>device</var> of that <var>kind</var>, On whenever
[[\kindsAccessibleMap]]<var>[kind]</var> is true, and Off
otherwise.</li>
<li>Define <var>&lt;kind&gt;Live</var> to be On
whenever <var>&lt;device&gt;Live</var> is On for
any <var>device</var> of that <var>kind</var> and
Off otherwise.</li>
</ul>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything up to here is 1-1 renaming of names ([[fooMap]][barId] to <bar>foo) and states (true/false to On/Off). Might it simplify to skip this and inline everything below instead, settling for the slightly-worse-sounding "false-to-true transitions"?

I mention this because there are a lot of states to keep track of. I know the existing state terms are hideous, but they're more well-defined than the replacements (I worry we need to explain the <>).

<p>Define <var>Accessible</var> to be On
whenever <var>&lt;kind&gt;Accessible</var> is On for
any <var>kind</var> and Off otherwise.</p>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we rename Accessible as Any-Accessible, to separate it more visually from all the other Accessibles?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We'd need to do the same thing for Live then.

<p>Define <var>Live</var> to be On
whenever <var>&lt;kind&gt;Live</var> is On for
any <var>kind</var> and Off otherwise.</p>
<p>Then the following are requirements on the User Agent:</p>
<ul>
<li>The User Agent MUST indicate to the user when the value
of <var>Accessible</var> changes.</li>
<li>The User Agent MUST indicate to the user when the value
of <var>Live</var> changes.</li>
<li>If the User Agent provides any indication of Accessible or
Live to the user per <var>kind</var>, then for each such
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Accessible or Live per kind" and "Accessible or Live per device" are a bit confusing, when Accessible and Live are the union states. Is there another way to say this?

value at a minimum it MUST indicate when the value
changes.</li>
<li>If the User Agent provides any indication of Accessible or
Live to the user per <var>device</var>, then for each such
value at a minimum it MUST indicate when the value
changes.</li>
<li>Any off-to-on transition MUST remain observable for a
sufficient time that a reasonably-observant user could become
aware of it.</li>
<li>Any of the above indications MAY be combined as long as
the combined indication cannot transition to off if any of its
component indications are still on.</li>
</ul>
<p>and the following are encouraged behaviors for the User Agent:</p>
<ul>
<li>The User Agent is encouraged to provide ongoing indication
of the current state of <var>Accessible</var>.</li>
<li>The User Agent is encouraged to provide ongoing indication
of the current state of <var>Live</var> and to make any generic
hardware device indicator light match.</li>
<li>If the User Agent provides any indication
of <var>Accessible</var> or <var>Live</var> to the user
per <var>kind</var>, it is encouraged to provide ongoing
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Accessible and Live are italicized here, implying the union states are being referenced here, which seems wrong. These can be concepts or states but not both.

indication of the current state of each such value. It is
encouraged to make any device-type-specific hardware indicator
light match the corresponding <var>&lt;kind&gt;Live</var>
value.</li>
<li>If the User Agent provides any indication
of <var>Accessible</var> or <var>Live</var> to the user
per <var>device</var>, it is encouraged to provide ongoing
indication of the current state of each such value. It is
encouraged to make any device-specific hardware indicator light
match the corresponding <var>&lt;device&gt;Live</var>
value.</li>
<li>Any optional ongoing indication MAY be used instead of the
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/optional/of these/ ?

corresponding required transition indication provided the
off-to-on transition requirement is met.</li>
</ul>
</section>

<section>
<h1>Privacy and Security Considerations</h1>
<p>This section is non-normative; it specifies no new behavior, but instead
Expand Down