-
Notifications
You must be signed in to change notification settings - Fork 268
Demo: compat key sets authoring (successor to compute_from)
#3902
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
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -14,3 +14,10 @@ status: | |
| firefox_android: "4" | ||
| safari: "4" | ||
| safari_ios: "3.2" | ||
| compat_features: | ||
| modifiers_name_tbc: | ||
| - api.HTMLElement.autofocus | ||
| - api.MathMLElement.autofocus | ||
| - api.SVGElement.autofocus | ||
| - html.global_attributes.autofocus | ||
| - svg.global_attributes.autofocus | ||
|
Comment on lines
+18
to
+23
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Here's the first new application for these sets: linting our existing overrides. In (We could have an implicit rule that a status override implies that a regular |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,9 +2,10 @@ name: "::backdrop" | |
| description: The `::backdrop` CSS pseudo-element is a box underneath an element in the top layer, such as a `<dialog>`. It can be used to create obscuring effects distinguishing a modal element from the elements underneath. | ||
| spec: https://drafts.csswg.org/css-position-4/#backdrop | ||
| group: selectors | ||
| status: | ||
| compute_from: css.selectors.backdrop | ||
| compat_features: | ||
| - css.selectors.backdrop | ||
| - css.selectors.backdrop.dialog | ||
| - css.selectors.backdrop.inherit_from_originating_element | ||
| core_name_tbc: | ||
| - css.selectors.backdrop # former compute_from | ||
| modifiers_name_tbc: | ||
| - css.selectors.backdrop.dialog | ||
|
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Here's another exposure: key-sharing opportunities. Here we have a key that should probably exist on two features: |
||
| incidentals_name_tbc: | ||
| - css.selectors.backdrop.inherit_from_originating_element | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,17 +1,17 @@ | ||
| name: Background sync | ||
| description: The background synchronization API registers a service worker callback to run only when the device is no longer offline. You can use this to let users continue using your app while offline and synchronize with a server after reconnecting. | ||
| spec: https://wicg.github.io/background-sync/spec/ | ||
| status: | ||
| compute_from: api.SyncManager | ||
| compat_features: | ||
| - api.Permissions.permission_background-sync | ||
| - api.ServiceWorkerGlobalScope.sync_event | ||
| - api.ServiceWorkerRegistration.sync | ||
| - api.SyncEvent | ||
| - api.SyncEvent.SyncEvent | ||
| - api.SyncEvent.lastChance | ||
| - api.SyncEvent.tag | ||
| - api.SyncManager | ||
| - api.SyncManager.getTags | ||
| - api.SyncManager.register | ||
| - api.SyncManager.worker_support | ||
| core_name_tbc: | ||
| - api.ServiceWorkerGlobalScope.sync_event | ||
| - api.ServiceWorkerRegistration.sync | ||
| - api.SyncEvent | ||
| - api.SyncEvent.SyncEvent | ||
| - api.SyncEvent.lastChance | ||
| - api.SyncEvent.tag | ||
| - api.SyncManager # former compute_from | ||
| - api.SyncManager.getTags | ||
| - api.SyncManager.register | ||
| modifiers_name_tbc: | ||
| - api.Permissions.permission_background-sync | ||
| - api.SyncManager.worker_support | ||
|
Comment on lines
+16
to
+17
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Here's an application: alignment with caniuse. Two keys are excluded from the birthday setting here, but we can now enforce that the remaining keys should be supported in the same set of browsers as the birthday set of keys. That said, in this case (given the negative standards positions), we could probably eliminate the |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,23 +2,23 @@ name: border-radius | |
| description: The `border-radius` CSS property rounds the corners of the border drawn around an element. | ||
| spec: https://drafts.csswg.org/css-backgrounds-3/#corners | ||
| caniuse: border-radius | ||
| status: | ||
| compute_from: css.properties.border-radius | ||
| group: borders-outlines | ||
| compat_features: | ||
| - css.properties.border-bottom-left-radius | ||
| - css.properties.border-bottom-left-radius.elliptical_corners | ||
| - css.properties.border-bottom-left-radius.percentages | ||
| - css.properties.border-bottom-right-radius | ||
| - css.properties.border-bottom-right-radius.elliptical_corners | ||
| - css.properties.border-bottom-right-radius.percentages | ||
| - css.properties.border-radius | ||
| - css.properties.border-radius.elliptical_borders | ||
| - css.properties.border-radius.percentages | ||
| - css.properties.border-radius.4_values_for_4_corners | ||
| - css.properties.border-top-left-radius | ||
| - css.properties.border-top-left-radius.elliptical_corners | ||
| - css.properties.border-top-left-radius.percentages | ||
| - css.properties.border-top-right-radius | ||
| - css.properties.border-top-right-radius.elliptical_corners | ||
| - css.properties.border-top-right-radius.percentages | ||
| core_name_tbc: | ||
| - css.properties.border-bottom-left-radius | ||
| - css.properties.border-bottom-left-radius.elliptical_corners | ||
| - css.properties.border-bottom-left-radius.percentages | ||
| - css.properties.border-bottom-right-radius | ||
| - css.properties.border-bottom-right-radius.elliptical_corners | ||
| - css.properties.border-bottom-right-radius.percentages | ||
| - css.properties.border-radius # former compute_from | ||
| - css.properties.border-radius.4_values_for_4_corners | ||
| - css.properties.border-radius.elliptical_borders | ||
| - css.properties.border-top-left-radius | ||
| - css.properties.border-top-left-radius.elliptical_corners | ||
| - css.properties.border-top-left-radius.percentages | ||
| - css.properties.border-top-right-radius | ||
| - css.properties.border-top-right-radius.elliptical_corners | ||
| - css.properties.border-top-right-radius.percentages | ||
| modifiers_name_tbc: | ||
| - css.properties.border-radius.percentages | ||
|
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Here's another exposure: iffy upstream data. Later, we can ratchet this key into higher expectations, if and when we fix the upstream data. |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,88 +2,89 @@ name: CSS object model | |
| description: The CSS object model API reads, creates, and modifies CSS stylesheets and inline styles. Also known as CSSOM. | ||
| spec: https://drafts.csswg.org/cssom-1/#css-object-model | ||
| group: cssom | ||
| status: | ||
| compute_from: api.CSS | ||
| compat_features: | ||
| - api.CSS | ||
| - api.CSSGroupingRule | ||
| - api.CSSGroupingRule.cssRules | ||
| - api.CSSGroupingRule.deleteRule | ||
| - api.CSSGroupingRule.insertRule | ||
| - api.CSSPageDescriptors | ||
| - api.CSSPageDescriptors.margin | ||
| - api.CSSPageDescriptors.margin-bottom | ||
| - api.CSSPageDescriptors.margin-left | ||
| - api.CSSPageDescriptors.margin-right | ||
| - api.CSSPageDescriptors.margin-top | ||
| - api.CSSPageDescriptors.marginBottom | ||
| - api.CSSPageDescriptors.marginLeft | ||
| - api.CSSPageDescriptors.marginRight | ||
| - api.CSSPageDescriptors.marginTop | ||
| - api.CSSPageDescriptors.page-orientation | ||
| - api.CSSPageDescriptors.pageOrientation | ||
| - api.CSSPageDescriptors.size | ||
| - api.CSSPageRule | ||
| - api.CSSPageRule.selectorText | ||
| - api.CSSPageRule.style | ||
| - api.CSSPageRule.style.type_CSSPageDescriptors | ||
| - api.CSSRule | ||
| - api.CSSRule.cssText | ||
| - api.CSSRule.parentRule | ||
| - api.CSSRule.parentStyleSheet | ||
| - api.CSSRuleList | ||
| - api.CSSRuleList.item | ||
| - api.CSSRuleList.length | ||
| - api.CSSStyleDeclaration | ||
| - api.CSSStyleDeclaration.cssText | ||
| - api.CSSStyleDeclaration.getPropertyPriority | ||
| - api.CSSStyleDeclaration.getPropertyValue | ||
| - api.CSSStyleDeclaration.item | ||
| - api.CSSStyleDeclaration.length | ||
| - api.CSSStyleDeclaration.parentRule | ||
| - api.CSSStyleDeclaration.removeProperty | ||
| - api.CSSStyleDeclaration.setProperty | ||
| - api.CSSStyleDeclaration.@@iterator | ||
| - api.CSSStyleRule | ||
| - api.CSSStyleRule.selectorText | ||
| - api.CSSStyleRule.style | ||
| - api.CSSStyleSheet | ||
| - api.CSSStyleSheet.cssRules | ||
| - api.CSSStyleSheet.deleteRule | ||
| - api.CSSStyleSheet.insertRule | ||
| - api.CSSStyleSheet.insertRule.index_parameter_optional | ||
| - api.CSSStyleSheet.ownerRule | ||
| - api.Document.styleSheets | ||
| - api.HTMLElement.style | ||
| - api.HTMLLinkElement.sheet | ||
| - api.HTMLStyleElement.sheet | ||
| - api.MediaList | ||
| - api.MediaList.appendMedium | ||
| - api.MediaList.deleteMedium | ||
| - api.MediaList.item | ||
| - api.MediaList.length | ||
| - api.MediaList.mediaText | ||
| - api.MediaList.toString | ||
| - api.ProcessingInstruction.sheet | ||
| - api.ShadowRoot.styleSheets | ||
| - api.StyleSheet | ||
| - api.StyleSheet.disabled | ||
| - api.StyleSheet.href | ||
| - api.StyleSheet.media | ||
| - api.StyleSheet.ownerNode | ||
| - api.StyleSheet.parentStyleSheet | ||
| - api.StyleSheet.title | ||
| - api.StyleSheet.type | ||
| - api.StyleSheetList | ||
| - api.StyleSheetList.item | ||
| - api.StyleSheetList.length | ||
| - api.CSSMarginRule | ||
| - api.CSSMarginRule.name | ||
| - api.CSSMarginRule.style | ||
| - api.CSSConditionRule | ||
| - api.CSSConditionRule.conditionText | ||
| - api.CSSMediaRule | ||
| - api.CSSMediaRule.media | ||
| - api.CSSPseudoElement | ||
| - api.CSSPseudoElement.element | ||
| - api.CSSPseudoElement.type | ||
| core_name_tbc: | ||
|
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Here's another exposure: a too-large feature. We should break this up into smaller pieces. There are maybe a dozen features like this. But in the mean time, we can declare what we know about this feature—the subset of keys that are "original", the subset that have the same status, and the subset that doesn't—and prevent unwitting changes to those sets. |
||
| - api.CSS # former compute_from | ||
| - api.CSSMediaRule | ||
| - api.CSSMediaRule.media | ||
| - api.CSSPageRule | ||
| - api.CSSPageRule.style | ||
| - api.CSSRule | ||
| - api.CSSRule.cssText | ||
| - api.CSSRule.parentRule | ||
| - api.CSSRule.parentStyleSheet | ||
| - api.CSSRuleList | ||
| - api.CSSRuleList.item | ||
| - api.CSSRuleList.length | ||
| - api.CSSStyleDeclaration | ||
| - api.CSSStyleDeclaration.cssText | ||
| - api.CSSStyleDeclaration.getPropertyPriority | ||
| - api.CSSStyleDeclaration.getPropertyValue | ||
| - api.CSSStyleDeclaration.item | ||
| - api.CSSStyleDeclaration.length | ||
| - api.CSSStyleDeclaration.parentRule | ||
| - api.CSSStyleDeclaration.removeProperty | ||
| - api.CSSStyleDeclaration.setProperty | ||
| - api.CSSStyleRule | ||
| - api.CSSStyleRule.selectorText | ||
| - api.CSSStyleRule.style | ||
| - api.CSSStyleSheet | ||
| - api.CSSStyleSheet.cssRules | ||
| - api.CSSStyleSheet.deleteRule | ||
| - api.CSSStyleSheet.insertRule | ||
| - api.CSSStyleSheet.ownerRule | ||
| - api.Document.styleSheets | ||
| - api.HTMLElement.style | ||
| - api.HTMLLinkElement.sheet | ||
| - api.HTMLStyleElement.sheet | ||
| - api.MediaList | ||
| - api.MediaList.appendMedium | ||
| - api.MediaList.deleteMedium | ||
| - api.MediaList.item | ||
| - api.MediaList.length | ||
| - api.MediaList.mediaText | ||
| - api.MediaList.toString | ||
| - api.StyleSheet | ||
| - api.StyleSheet.disabled | ||
| - api.StyleSheet.href | ||
| - api.StyleSheet.media | ||
| - api.StyleSheet.ownerNode | ||
| - api.StyleSheet.parentStyleSheet | ||
| - api.StyleSheet.title | ||
| - api.StyleSheet.type | ||
| - api.StyleSheetList | ||
| - api.StyleSheetList.item | ||
| - api.StyleSheetList.length | ||
| modifiers_name_tbc: | ||
| - api.CSSConditionRule | ||
| - api.CSSConditionRule.conditionText | ||
| - api.CSSGroupingRule | ||
| - api.CSSGroupingRule.cssRules | ||
| - api.CSSGroupingRule.deleteRule | ||
| - api.CSSGroupingRule.insertRule | ||
| - api.CSSPageRule.selectorText | ||
| - api.CSSStyleDeclaration.@@iterator | ||
| - api.CSSStyleSheet.insertRule.index_parameter_optional | ||
| - api.ProcessingInstruction.sheet | ||
| - api.ShadowRoot.styleSheets | ||
| incidentals_name_tbc: | ||
| - api.CSSMarginRule | ||
| - api.CSSMarginRule.name | ||
| - api.CSSMarginRule.style | ||
| - api.CSSPageDescriptors | ||
| - api.CSSPageDescriptors.margin | ||
| - api.CSSPageDescriptors.margin-bottom | ||
| - api.CSSPageDescriptors.margin-left | ||
| - api.CSSPageDescriptors.margin-right | ||
| - api.CSSPageDescriptors.margin-top | ||
| - api.CSSPageDescriptors.marginBottom | ||
| - api.CSSPageDescriptors.marginLeft | ||
| - api.CSSPageDescriptors.marginRight | ||
| - api.CSSPageDescriptors.marginTop | ||
| - api.CSSPageDescriptors.page-orientation | ||
| - api.CSSPageDescriptors.pageOrientation | ||
| - api.CSSPageDescriptors.size | ||
| - api.CSSPageRule.style.type_CSSPageDescriptors | ||
| - api.CSSPseudoElement | ||
| - api.CSSPseudoElement.element | ||
| - api.CSSPseudoElement.type | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -3,37 +3,38 @@ description: The `Worker()` constructor runs a script in its own thread, which c | |
| spec: https://html.spec.whatwg.org/multipage/workers.html#workers | ||
| caniuse: webworkers | ||
| group: workers | ||
| status: | ||
| compute_from: api.WorkerGlobalScope.importScripts | ||
| compat_features: | ||
| - api.DedicatedWorkerGlobalScope | ||
| - api.DedicatedWorkerGlobalScope.close | ||
| - api.DedicatedWorkerGlobalScope.name | ||
| - api.Worker | ||
| - api.Worker.Worker | ||
| - api.Worker.Worker.mime_checks | ||
| - api.Worker.Worker.options_name_parameter | ||
| - api.Worker.error_event | ||
| - api.Worker.terminate | ||
| - api.Worker.worker_support | ||
| - api.WorkerGlobalScope | ||
| - api.WorkerGlobalScope.error_event | ||
| - api.WorkerGlobalScope.importScripts | ||
| - api.WorkerGlobalScope.importScripts.mime_checks | ||
| - api.WorkerGlobalScope.location | ||
| - api.WorkerGlobalScope.navigator | ||
| - api.WorkerGlobalScope.rejectionhandled_event | ||
| - api.WorkerGlobalScope.self | ||
| - api.WorkerGlobalScope.unhandledrejection_event | ||
| - api.WorkerLocation | ||
| - api.WorkerLocation.hash | ||
| - api.WorkerLocation.host | ||
| - api.WorkerLocation.hostname | ||
| - api.WorkerLocation.href | ||
| - api.WorkerLocation.origin | ||
| - api.WorkerLocation.pathname | ||
| - api.WorkerLocation.port | ||
| - api.WorkerLocation.protocol | ||
| - api.WorkerLocation.search | ||
| - api.WorkerLocation.toString | ||
| - api.WorkerNavigator | ||
| core_name_tbc: | ||
| - api.DedicatedWorkerGlobalScope | ||
| - api.DedicatedWorkerGlobalScope.close | ||
| - api.Worker | ||
| - api.Worker.Worker | ||
| - api.Worker.error_event | ||
| - api.Worker.terminate | ||
| - api.WorkerGlobalScope | ||
| - api.WorkerGlobalScope.error_event | ||
| - api.WorkerGlobalScope.importScripts # former compute_from | ||
| - api.WorkerGlobalScope.location | ||
| - api.WorkerLocation | ||
| - api.WorkerLocation.hash | ||
| - api.WorkerLocation.host | ||
| - api.WorkerLocation.hostname | ||
| - api.WorkerLocation.href | ||
| - api.WorkerLocation.pathname | ||
| - api.WorkerLocation.port | ||
| - api.WorkerLocation.protocol | ||
| - api.WorkerLocation.search | ||
| - api.WorkerLocation.toString | ||
| - api.WorkerNavigator | ||
| modifiers_name_tbc: | ||
| - api.DedicatedWorkerGlobalScope.name | ||
| - api.Worker.Worker.options_name_parameter | ||
| - api.WorkerGlobalScope.importScripts.mime_checks | ||
| - api.WorkerGlobalScope.navigator | ||
| - api.WorkerGlobalScope.rejectionhandled_event | ||
| - api.WorkerGlobalScope.self | ||
| - api.WorkerGlobalScope.unhandledrejection_event | ||
| - api.WorkerLocation.origin | ||
| incidentals_name_tbc: | ||
| - api.Worker.Worker.mime_checks | ||
|
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This demonstrates a good application for In this case, See |
||
| - api.Worker.worker_support | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The bulk of these changes will merely expose certain issues in a more findable way. Here, you can see more easily that there should be a separate feature minted. It happens that this is already in progress with #2947.