Skip to content

Commit

Permalink
Add links to related issues in explainers (#132)
Browse files Browse the repository at this point in the history
Link to existing topical issues, as well as command to file a new issue added to footer of each explainer.
  • Loading branch information
Malvoz authored and travisleithead committed Nov 7, 2019
1 parent 88fccd3 commit d2c418d
Show file tree
Hide file tree
Showing 27 changed files with 165 additions and 90 deletions.
11 changes: 7 additions & 4 deletions Accessibility/CaretBrowsing/explainer.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Proposal: Native Caret browsing

## Motivation:
Caret browsing enables users to navigate web content using the keyboard keys and common shortcuts for character, word and line level navigation. Caret browsing enables full range of text navigation and selection functionality within web content without additional pointing devices like mice, trackpads and touchpads.
Caret browsing enables users to navigate web content using the keyboard keys and common shortcuts for character, word and line level navigation. Caret browsing enables full range of text navigation and selection functionality within web content without additional pointing devices like mice, trackpads and touchpads.

Sample caret browsing experience in Microsoft Edge on Wikipedia:
![Visual sample of using caret browsing to explore Wikipedia front page](CB_Example.gif)
Expand All @@ -12,7 +12,7 @@ Today Chromium users can download Caret Browsing extension from the Chrome Web S
* Extensions might be blocked in a work environment due to enterprise policies. See [Issue 611798] (https://crbug.com/611798);
* Extensions might not be available in "Incognito" tabs, or when Guest profile is used;
* There are additional barriers for users of all abilities, since they need to find and install an extension and the functionality is not readily available when it might be needed;
* Applications that use Chromium don't have the platform capability to enable native caret browsing.
* Applications that use Chromium don't have the platform capability to enable native caret browsing.

## Proposal:
This proposal targets the following use cases:
Expand All @@ -27,7 +27,7 @@ Native caret browsing doesn't aim to replace extensions, they would continue to
## Solution:
The solution proposed in this explainer is to introduce native caret browsing in Chromium, a feature that is available in Mozilla Firefox, Microsoft Edge and Internet Explorer.

In order to do that we suggest to implement a current common activation shortcut: F7 and confirm caret browsing activation with a dialog.
In order to do that we suggest to implement a current common activation shortcut: F7 and confirm caret browsing activation with a dialog.

Caret browsing activation confirmation in Microsoft Edge:
![Microsoft Edge browser dialog that asks user to confirm enabling caret browsing and allow to set the preference to never ask again in the future](edgeCaretBrosingPrompt.png)
Expand All @@ -37,11 +37,14 @@ Caret browsing activation confirmation in Mozilla Firefox:

In some cases, function keys may not be available and so alternative shortcuts might be needed.

We welcome your feedback and opinion on ways we can help improve Chromium caret navigation and browsing in the future!
We welcome your feedback and opinion on ways we can help improve Chromium caret navigation and browsing in the future!


## Links

* Caret Navigation: https://en.wikipedia.org/wiki/Caret_navigation
* Caret Browsing extension in Chrome Web Store: https://chrome.google.com/webstore/detail/caret-browsing/fklpgenihifpccgiifchnihilipmbffg
* Keyboard shortcuts in Windows (Copy, paste, and other general keyboard shortcuts): https://support.microsoft.com/en-us/help/12445/windows-keyboard-shortcuts

---
[Related issues](https://github.com/MicrosoftEdge/MSEdgeExplainers/labels/Caret%20Browsing) | [Open a new issue](https://github.com/MicrosoftEdge/MSEdgeExplainers/issues/new?title=%5BCaret%20Browsing%5D)
11 changes: 7 additions & 4 deletions Accessibility/HighContrast/explainer.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ In order to allow developer defined high contrast rules for webpages, a [high co
#### Possible values

Value | Description
--- | ---
--- | ---
**active** | The subsequent style rules will be applied when high contrast is enabled under any theme, custom or not.
**black-on-white** | The subsequent style rules will be applied when high contrast is enabled under the black-on-white color theme.
**white-on-black** | The subsequent style rules will be applied when high contrast is enabled under the white-on-black color theme.
Expand Down Expand Up @@ -82,7 +82,7 @@ To allow for further developer customization of the high contrast feature, a [CS
#### Possible values

Value | Description
--- | ---
--- | ---
**auto** | Indicates that the applicable CSS styles *will* be overridden when high contrast is enabled.
**none** | Indicates that the applicable CSS styles will *not* be overridden when high contrast is enabled.

Expand All @@ -106,7 +106,7 @@ As mentioned previously, high contrast color schemes work by overriding user def

Given an element and a declaration from a CSS rule whose selector matches that element, the application of that declaration will be suppressed if all of the following conditions are met:

1. The declaration is for a CSS property in the set of properties that are adjusted for high contrast (as defined in
1. The declaration is for a CSS property in the set of properties that are adjusted for high contrast (as defined in
[CSS Properties](#css-properties))

2. High contrast mode is enabled in the host environment
Expand All @@ -122,7 +122,7 @@ If all of the above conditions are met, the computed color value of the CSS prop
## System Colors
High contrast relies on system color keywords to fetch the appropriate theme colors, which are deprecated from the CSS Color standard in both [Level 3](https://drafts.csswg.org/css-color-3/#css2-system) and [Level 4](https://drafts.csswg.org/css-color-4/#system-colors). Blink currently does have support for these keywords, but they're currently mapped to hard-coded values instead of being plumbed through to the system color API. There is a derived class ```LayoutThemeWin```, but it currently doesn't add any functionality for this. Functionality can be added here to support the required system color keywords.

In addition to existing CSS system color keywords, a new system color keyword would be added called ```hotlight``` that defines the system color for hyperlinks. It is important to track and store this system color because a developer might choose to unset high contrast styles for an ancestor of a link, but the high contrast link styles for descendent links must be preserved.
In addition to existing CSS system color keywords, a new system color keyword would be added called ```hotlight``` that defines the system color for hyperlinks. It is important to track and store this system color because a developer might choose to unset high contrast styles for an ancestor of a link, but the high contrast link styles for descendent links must be preserved.

This system color keyword is currently supported by Microsoft Edge and IE. On Windows, the value for ```hotlight``` should map to the ```COLOR_HOTLIGHT``` system color. On other platforms, it should map to the default color used for links.

Expand Down Expand Up @@ -157,3 +157,6 @@ Should the high contrast readability backplate be customizable for developers? I
In order to support existing content, we will need to add an alias for ```-ms-``` properties and values to our implementation. Is this an acceptable solution?

Is ```hotlight``` an appropriate name for the system color keyword for hyperlinks, or would a more neutral name such as ```link``` be preferred?

---
[Related issues](https://github.com/MicrosoftEdge/MSEdgeExplainers/labels/High%20Contrast) | [Open a new issue](https://github.com/MicrosoftEdge/MSEdgeExplainers/issues/new?title=%5BHigh%20Contrast%5D)
9 changes: 6 additions & 3 deletions Accessibility/UIA/explainer.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Authors: [Rossen Atanassov](https://github.com/atanassov), [Melanie Richards](ht

## Introduction

[Microsoft UI Automation (UIA)](https://docs.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-overview) provides programmatic access to most user interface (UI) elements of desktop applications, as well as web content and web applications. This API enables assistive technology (AT) products, such as screen readers, to provide information about applications, their UI and contents to end users. With this information, ATs can allow the user to manipulate applications by means other than standard input.
[Microsoft UI Automation (UIA)](https://docs.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-overview) provides programmatic access to most user interface (UI) elements of desktop applications, as well as web content and web applications. This API enables assistive technology (AT) products, such as screen readers, to provide information about applications, their UI and contents to end users. With this information, ATs can allow the user to manipulate applications by means other than standard input.

At a high level, UIA exposes two sets of APIs, *provider APIs*, those implemented by a web browser for example, and *client APIs*, those implemented by an AT. This document’s focus is on implementing the *provider* APIs inside Chromium. These APIs are not exposed to web developers, and it is not expected that web developers should change the way they build sites and web apps—these APIs are meant to map web content into a format useful to C/C++ programmers.

Expand Down Expand Up @@ -41,11 +41,14 @@ For an example of how these APIs work in conjunction to provide complete interac

## Current workarounds

Providing UI and text information for the purposes of accessibility technologies is already possible today, even without UI Automation. Existing technologies such as MSAA and IA2 are examples of platform APIs that allow ATs to observe and interact with the browser and its web contents.
Providing UI and text information for the purposes of accessibility technologies is already possible today, even without UI Automation. Existing technologies such as MSAA and IA2 are examples of platform APIs that allow ATs to observe and interact with the browser and its web contents.

Implementing UI Automation support on the Windows platform is not intended to replace any existing platform API support, but to offer a mature and evolving API choice to assistive technologies and their users.

## Additional information

* For detailed information on UI Automation provider APIs, please refer to [UI Automation Providers Overview](https://docs.microsoft.com/en-us/windows/desktop/winauto/uiauto-providersoverview).
* Each accessibility API has its own nomenclature. For a quick sense of the differences between API mappings, refer to the tables in mapping specifications such as [Core-AAM](https://w3c.github.io/core-aam/), [HTML-AAM](https://w3c.github.io/html-aam/), [Graphics-AAM](https://w3c.github.io/graphics-aam/), and [SVG-AAM](https://w3c.github.io/svg-aam/).
* Each accessibility API has its own nomenclature. For a quick sense of the differences between API mappings, refer to the tables in mapping specifications such as [Core-AAM](https://w3c.github.io/core-aam/), [HTML-AAM](https://w3c.github.io/html-aam/), [Graphics-AAM](https://w3c.github.io/graphics-aam/), and [SVG-AAM](https://w3c.github.io/svg-aam/).

---
[Related issues](https://github.com/MicrosoftEdge/MSEdgeExplainers/labels/UI%20Automation) | [Open a new issue](https://github.com/MicrosoftEdge/MSEdgeExplainers/issues/new?title=%5BUI%20Automation%5D)
3 changes: 3 additions & 0 deletions Accessibility/VirtualContent/explainer.md
Original file line number Diff line number Diff line change
Expand Up @@ -233,3 +233,6 @@ imagine virtualizing portions of a spreadsheet whose role is best defined as `ta
* There is no explicit indication that virtualized content exists; in other words it does not allow the AT to distinguish between
the end of realized content and the actual end of content. This can result in the AT giving incorrect cues to the user as described
in the introduction.

---
[Related issues](https://github.com/MicrosoftEdge/MSEdgeExplainers/labels/Virtual%20Content) | [Open a new issue](https://github.com/MicrosoftEdge/MSEdgeExplainers/issues/new?title=%5BVirtual%20Content%5D)
11 changes: 7 additions & 4 deletions AudioOffload/explainer.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ A high level overview of chromium's audio architecture with a newly proposed WAS

## Audio Process
On Windows OS's that support audio offload for classic (Win32) applications through the Windows Audio Service API (WASAPI), the calling process must meet **one** of the following requirements:
1. The process is running within a Windows Universal Application Package (UAP)
1. The process is running within a Windows Universal Application Package (UAP)
2. The process is running as a Low Privilege App Container (LPAC)
3. The process is running with an integrity level at or below Low

Expand Down Expand Up @@ -152,7 +152,7 @@ if (CoreAudioUtil::IsFormatSupported(audio_client_offload.Get(),
```
At this point we've determined whether audio offload & our audio format are supported by the current audio client. However we have not yet successfully initialized the audio client and obtained an audio offload resource.

### Late Binding
### Late Binding
An audio client utilizing audio offload requires binding to one of the limited hardware resources - once bound that resource will be unavailable to other clients until it is released. The act of binding to this resource occurs as part of calling IAudioClient::Initialize. To responsibly use these resources we don't want to bind to them unless they are actively being used, so we delay initializing our audio client until absolutely necessary - this is called Late Binding.

In order to facilitate Late Binding, we won't initialize our IAudioClient when WASAPIAudioOffloadOutputStream::Open is called (compare this behavior with WASAPIAudioOutputStream which does call IAudioClient::Initialize during Open).
Expand Down Expand Up @@ -324,7 +324,7 @@ if (using_audio_offload_) {
hr = audio_render_client_->ReleaseBuffer(num_available_frames, 0);
```
## Pausing
The current Chromium architecture facilitates a pause by removing the paused source as a mixer input (see AudioRendererMixer::RemoveMixerInput); any queued output buffers are allowed to finish rendering. This works well when the queued output is on the order of tens of milliseconds, but will break down for audio offload where the queued output can be on the order of seconds.
The current Chromium architecture facilitates a pause by removing the paused source as a mixer input (see AudioRendererMixer::RemoveMixerInput); any queued output buffers are allowed to finish rendering. This works well when the queued output is on the order of tens of milliseconds, but will break down for audio offload where the queued output can be on the order of seconds.

In order to respond to Pause events with limited delay when using audio offload, we'll issue a Pause command in conjunction with removing the mixer input.

Expand Down Expand Up @@ -549,7 +549,7 @@ High level metrics
<pre>
| Buffer | Average Power Utilization (mW) |
|------------------|----------------------------------|
| No Audio Offload | 6691.7 |
| No Audio Offload | 6691.7 |
| 20 ms | 6545.7 |
| 100 ms | 6100.7 |
| 1000 ms | 6056.6 |
Expand Down Expand Up @@ -700,3 +700,6 @@ void AudioRendererAlgorithm::Initialize(const AudioParameters& params,

2. Introduce the concept of pre-rolling into the Chromium audio pipeline. Similar to how we have introduced pre-rolling to the WASAPIAudioOffloadOutputStream where we ensure that IAudioRendererClient has sufficient initial data before calling IAudioClient::Start, we could similarly ensure that our audio renderer has buffered sufficient data before initializing playback
> OPEN QUESTION: What would the architecture for Audio Renderer Pre-Rolling look like? How does it differ from changing the Audio Renderer Algorithm starting capacity?
---
[Related issues](https://github.com/MicrosoftEdge/MSEdgeExplainers/labels/Audio%20Offload) | [Open a new issue](https://github.com/MicrosoftEdge/MSEdgeExplainers/issues/new?title=%5BAudio%20Offload%5D)
7 changes: 5 additions & 2 deletions AutofillReauthentication/explainer.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,11 @@ Based on user research/feedback, we believe that the shared device scenario is c
## Proposal
As outlined above, this explainer proposes the addition of an off by default, OS reauthentication hook in the Chromium autofill code path. This will reuse the existing OS reauthentication logic used in Chromium’s password manager when previewing or exporting saved passwords and will add a content setting to configure how long a successful reauthentication should remain valid. By default, this content setting will be set to never require authentication, meaning that even if the build flag that controls this functionality is enabled, the reauthentication hook will not be functional until the user agent adjusts the default value (most likely by exposing UX for this to users).

Enabling this reauthentication hook and changing its off by default content setting will also enable the same behavior controlled by the [Chromium fill-on-account-select feature flag](https://codereview.chromium.org/773573004/). This decision was made to ensure that users are not prompted for authentication until they indicate they want to access their saved credentials.
Enabling this reauthentication hook and changing its off by default content setting will also enable the same behavior controlled by the [Chromium fill-on-account-select feature flag](https://codereview.chromium.org/773573004/). This decision was made to ensure that users are not prompted for authentication until they indicate they want to access their saved credentials.

## Future Considerations

We believe that per-credential/complete credential store encryption to further harden the security model of browser autofill is a worthwhile investment. While this explainer only targets the shared device use case to begin with, it lays the foundation for future improvements. We are open to exploring further investments in this space with other implementors to bring additional value to users.
We believe that per-credential/complete credential store encryption to further harden the security model of browser autofill is a worthwhile investment. While this explainer only targets the shared device use case to begin with, it lays the foundation for future improvements. We are open to exploring further investments in this space with other implementors to bring additional value to users.

---
[Related issues](https://github.com/MicrosoftEdge/MSEdgeExplainers/labels/Autofill%20Reauthentication) | [Open a new issue](https://github.com/MicrosoftEdge/MSEdgeExplainers/issues/new?title=%5BAutofill%20Reauthentication%5D)
Loading

0 comments on commit d2c418d

Please sign in to comment.