Type annotate with CSS.StyleSheetId consistently

DISABLE_THIRD_PARTY_CHECK=disable

Bug: chromium:1226471
Change-Id: I1ad6cf3c9d21251b8719010319f6b4e1ba8f24f9
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3080313
Commit-Queue: Sigurd Schneider <[email protected]>
Reviewed-by: Tim van der Lippe <[email protected]>
diff --git a/front_end/core/sdk/CSSModel.ts b/front_end/core/sdk/CSSModel.ts
index 24d4357..9be74e8 100644
--- a/front_end/core/sdk/CSSModel.ts
+++ b/front_end/core/sdk/CSSModel.ts
@@ -58,8 +58,8 @@
   agent: ProtocolProxyApi.CSSApi;
   private readonly styleLoader: ComputedStyleLoader;
   private readonly resourceTreeModel: ResourceTreeModel|null;
-  private styleSheetIdToHeader: Map<string, CSSStyleSheetHeader>;
-  private readonly styleSheetIdsForURL: Map<string, Map<string, Set<string>>>;
+  private styleSheetIdToHeader: Map<Protocol.CSS.StyleSheetId, CSSStyleSheetHeader>;
+  private readonly styleSheetIdsForURL: Map<string, Map<string, Set<Protocol.CSS.StyleSheetId>>>;
   private readonly originalStyleSheetTextInternal: Map<CSSStyleSheetHeader, Promise<string|null>>;
   private isRuleUsageTrackingEnabled: boolean;
   private readonly fontFacesInternal: Map<string, CSSFontFace>;
@@ -171,8 +171,9 @@
     return this.domModelInternal;
   }
 
-  async setStyleText(styleSheetId: string, range: TextUtils.TextRange.TextRange, text: string, majorChange: boolean):
-      Promise<boolean> {
+  async setStyleText(
+      styleSheetId: Protocol.CSS.StyleSheetId, range: TextUtils.TextRange.TextRange, text: string,
+      majorChange: boolean): Promise<boolean> {
     try {
       await this.ensureOriginalStyleSheetText(styleSheetId);
 
@@ -191,7 +192,8 @@
     }
   }
 
-  async setSelectorText(styleSheetId: string, range: TextUtils.TextRange.TextRange, text: string): Promise<boolean> {
+  async setSelectorText(styleSheetId: Protocol.CSS.StyleSheetId, range: TextUtils.TextRange.TextRange, text: string):
+      Promise<boolean> {
     Host.userMetrics.actionTaken(Host.UserMetrics.Action.StyleRuleEdited);
 
     try {
@@ -210,7 +212,8 @@
     }
   }
 
-  async setKeyframeKey(styleSheetId: string, range: TextUtils.TextRange.TextRange, text: string): Promise<boolean> {
+  async setKeyframeKey(styleSheetId: Protocol.CSS.StyleSheetId, range: TextUtils.TextRange.TextRange, text: string):
+      Promise<boolean> {
     Host.userMetrics.actionTaken(Host.UserMetrics.Action.StyleRuleEdited);
 
     try {
@@ -291,7 +294,7 @@
         response.cssKeyframesRules || []);
   }
 
-  async classNamesPromise(styleSheetId: string): Promise<string[]> {
+  async classNamesPromise(styleSheetId: Protocol.CSS.StyleSheetId): Promise<string[]> {
     const {classNames} = await this.agent.invoke_collectClassNames({styleSheetId});
     return classNames || [];
   }
@@ -380,8 +383,9 @@
     return node.marker(PseudoStateMarker) || [];
   }
 
-  async setMediaText(styleSheetId: string, range: TextUtils.TextRange.TextRange, newMediaText: string):
-      Promise<boolean> {
+  async setMediaText(
+      styleSheetId: Protocol.CSS.StyleSheetId, range: TextUtils.TextRange.TextRange,
+      newMediaText: string): Promise<boolean> {
     Host.userMetrics.actionTaken(Host.UserMetrics.Action.StyleRuleEdited);
 
     try {
@@ -401,7 +405,8 @@
   }
 
   async setContainerQueryText(
-      styleSheetId: string, range: TextUtils.TextRange.TextRange, newContainerQueryText: string): Promise<boolean> {
+      styleSheetId: Protocol.CSS.StyleSheetId, range: TextUtils.TextRange.TextRange,
+      newContainerQueryText: string): Promise<boolean> {
     Host.userMetrics.actionTaken(Host.UserMetrics.Action.StyleRuleEdited);
 
     try {
@@ -421,7 +426,7 @@
     }
   }
 
-  async addRule(styleSheetId: string, ruleText: string, ruleLocation: TextUtils.TextRange.TextRange):
+  async addRule(styleSheetId: Protocol.CSS.StyleSheetId, ruleText: string, ruleLocation: TextUtils.TextRange.TextRange):
       Promise<CSSStyleRule|null> {
     try {
       await this.ensureOriginalStyleSheetText(styleSheetId);
@@ -474,7 +479,7 @@
     return [...this.fontFacesInternal.values()];
   }
 
-  styleSheetHeaderForId(id: string): CSSStyleSheetHeader|null {
+  styleSheetHeaderForId(id: Protocol.CSS.StyleSheetId): CSSStyleSheetHeader|null {
     return this.styleSheetIdToHeader.get(id) || null;
   }
 
@@ -482,14 +487,14 @@
     return [...this.styleSheetIdToHeader.values()];
   }
 
-  fireStyleSheetChanged(styleSheetId: string, edit?: Edit): void {
+  fireStyleSheetChanged(styleSheetId: Protocol.CSS.StyleSheetId, edit?: Edit): void {
     this.dispatchEventToListeners(Events.StyleSheetChanged, {styleSheetId: styleSheetId, edit: edit});
   }
 
-  private ensureOriginalStyleSheetText(styleSheetId: string): Promise<string|null> {
+  private ensureOriginalStyleSheetText(styleSheetId: Protocol.CSS.StyleSheetId): Promise<string|null> {
     const header = this.styleSheetHeaderForId(styleSheetId);
     if (!header) {
-      return Promise.resolve((null as string | null));
+      return Promise.resolve(null);
     }
     let promise = this.originalStyleSheetTextInternal.get(header);
     if (!promise) {
@@ -534,7 +539,7 @@
     this.dispatchEventToListeners(Events.StyleSheetAdded, styleSheetHeader);
   }
 
-  styleSheetRemoved(id: string): void {
+  styleSheetRemoved(id: Protocol.CSS.StyleSheetId): void {
     const header = this.styleSheetIdToHeader.get(id);
     console.assert(Boolean(header));
     if (!header) {
@@ -562,7 +567,7 @@
     this.dispatchEventToListeners(Events.StyleSheetRemoved, header);
   }
 
-  getStyleSheetIdsForURL(url: string): string[] {
+  getStyleSheetIdsForURL(url: string): Protocol.CSS.StyleSheetId[] {
     const frameIdToStyleSheetIds = this.styleSheetIdsForURL.get(url);
     if (!frameIdToStyleSheetIds) {
       return [];
@@ -575,9 +580,12 @@
     return result;
   }
 
-  async setStyleSheetText(styleSheetId: string, newText: string, majorChange: boolean): Promise<string|null> {
-    const header = (this.styleSheetIdToHeader.get(styleSheetId) as CSSStyleSheetHeader);
-    console.assert(Boolean(header));
+  async setStyleSheetText(styleSheetId: Protocol.CSS.StyleSheetId, newText: string, majorChange: boolean):
+      Promise<string|null> {
+    const header = this.styleSheetIdToHeader.get(styleSheetId);
+    if (!header) {
+      return 'Unknown stylesheet in CSS.setStyleSheetText';
+    }
     newText = CSSModel.trimSourceURL(newText);
     if (header.hasSourceURL) {
       newText += '\n/*# sourceURL=' + header.sourceURL + ' */';
@@ -598,7 +606,7 @@
     return null;
   }
 
-  async getStyleSheetText(styleSheetId: string): Promise<string|null> {
+  async getStyleSheetText(styleSheetId: Protocol.CSS.StyleSheetId): Promise<string|null> {
     try {
       const {text} = await this.agent.invoke_getStyleSheetText({styleSheetId});
       return text && CSSModel.trimSourceURL(text);
@@ -736,7 +744,7 @@
   [Events.ModelWasEnabled]: void,
   [Events.PseudoStateForced]: {node: DOMNode, pseudoClass: string, enable: boolean},
   [Events.StyleSheetAdded]: CSSStyleSheetHeader,
-  [Events.StyleSheetChanged]: {styleSheetId: string, edit?: Edit},
+  [Events.StyleSheetChanged]: {styleSheetId: Protocol.CSS.StyleSheetId, edit?: Edit},
   [Events.StyleSheetRemoved]: CSSStyleSheetHeader,
 };
 
@@ -759,7 +767,7 @@
 
 export class CSSLocation {
   private readonly cssModelInternal: CSSModel;
-  styleSheetId: string;
+  styleSheetId: Protocol.CSS.StyleSheetId;
   url: string;
   lineNumber: number;
   columnNumber: number;
diff --git a/front_end/core/sdk/CSSQuery.ts b/front_end/core/sdk/CSSQuery.ts
index 488cc88..59ff65e 100644
--- a/front_end/core/sdk/CSSQuery.ts
+++ b/front_end/core/sdk/CSSQuery.ts
@@ -14,7 +14,7 @@
 export abstract class CSSQuery {
   text = '';
   range?: TextUtils.TextRange.TextRange|null;
-  styleSheetId?: string;
+  styleSheetId?: Protocol.CSS.StyleSheetId;
   protected cssModel: CSSModel;
 
   constructor(cssModel: CSSModel) {
diff --git a/front_end/core/sdk/CSSRule.ts b/front_end/core/sdk/CSSRule.ts
index b4272b3..54a5e6b 100644
--- a/front_end/core/sdk/CSSRule.ts
+++ b/front_end/core/sdk/CSSRule.ts
@@ -14,13 +14,14 @@
 
 export class CSSRule {
   readonly cssModelInternal: CSSModel;
-  styleSheetId: string|undefined;
+  styleSheetId: Protocol.CSS.StyleSheetId|undefined;
   sourceURL: string|undefined;
   origin: Protocol.CSS.StyleSheetOrigin;
   style: CSSStyleDeclaration;
+
   constructor(cssModel: CSSModel, payload: {
     style: Protocol.CSS.CSSStyle,
-    styleSheetId: (string|undefined),
+    styleSheetId: Protocol.CSS.StyleSheetId|undefined,
     origin: Protocol.CSS.StyleSheetOrigin,
   }) {
     this.cssModelInternal = cssModel;
@@ -69,7 +70,7 @@
     return this.cssModelInternal;
   }
 
-  getStyleSheetHeader(styleSheetId: string): CSSStyleSheetHeader {
+  getStyleSheetHeader(styleSheetId: Protocol.CSS.StyleSheetId): CSSStyleSheetHeader {
     const styleSheetHeader = this.cssModelInternal.styleSheetHeaderForId(styleSheetId);
     console.assert(styleSheetHeader !== null);
     return /** @type {!CSSStyleSheetHeader} */ styleSheetHeader as CSSStyleSheetHeader;
@@ -117,7 +118,7 @@
         selectors: [{text: selectorText, value: undefined}],
       },
       style: {
-        styleSheetId: '0',
+        styleSheetId: '0' as Protocol.CSS.StyleSheetId,
         range: new TextUtils.TextRange.TextRange(0, 0, 0, 0),
         shorthandEntries: [],
         cssProperties: [],
diff --git a/front_end/core/sdk/CSSStyleDeclaration.ts b/front_end/core/sdk/CSSStyleDeclaration.ts
index f33424e..efc9451 100644
--- a/front_end/core/sdk/CSSStyleDeclaration.ts
+++ b/front_end/core/sdk/CSSStyleDeclaration.ts
@@ -15,7 +15,7 @@
   private readonly cssModelInternal: CSSModel;
   parentRule: CSSRule|null;
   private allPropertiesInternal!: CSSProperty[];
-  styleSheetId!: string|undefined;
+  styleSheetId!: Protocol.CSS.StyleSheetId|undefined;
   range!: TextUtils.TextRange.TextRange|null;
   cssText!: string|undefined;
   private shorthandValues!: Map<string, string>;
diff --git a/front_end/core/sdk/CSSStyleSheetHeader.ts b/front_end/core/sdk/CSSStyleSheetHeader.ts
index 9fb98662..a39f6d5 100644
--- a/front_end/core/sdk/CSSStyleSheetHeader.ts
+++ b/front_end/core/sdk/CSSStyleSheetHeader.ts
@@ -28,7 +28,7 @@
 
 export class CSSStyleSheetHeader implements TextUtils.ContentProvider.ContentProvider, FrameAssociated {
   private cssModelInternal: CSSModel;
-  id: string;
+  id: Protocol.CSS.StyleSheetId;
   frameId: string;
   sourceURL: string;
   hasSourceURL: boolean;
diff --git a/front_end/generated/protocol.d.ts b/front_end/generated/protocol.d.ts
index a8f362e..823b2e3 100644
--- a/front_end/generated/protocol.d.ts
+++ b/front_end/generated/protocol.d.ts
@@ -1675,7 +1675,7 @@
    */
   export namespace CSS {
 
-    export type StyleSheetId = string;
+    export type StyleSheetId = OpaqueIdentifier<string, 'Protocol.CSS.StyleSheetId'>;
 
     /**
      * Stylesheet type: "injected" for stylesheets injected via extension, "user-agent" for user-agent
diff --git a/front_end/models/bindings/ResourceMapping.ts b/front_end/models/bindings/ResourceMapping.ts
index e003a7a..95a3673 100644
--- a/front_end/models/bindings/ResourceMapping.ts
+++ b/front_end/models/bindings/ResourceMapping.ts
@@ -4,6 +4,7 @@
 
 import * as Common from '../../core/common/common.js';
 import * as SDK from '../../core/sdk/sdk.js';
+import type * as Protocol from '../../generated/protocol.js';
 import * as TextUtils from '../text_utils/text_utils.js';
 import * as Workspace from '../workspace/workspace.js';
 
@@ -190,7 +191,8 @@
   }
 
   private async styleSheetChanged(
-      event: Common.EventTarget.EventTargetEvent<{styleSheetId: string, edit?: SDK.CSSModel.Edit}>): Promise<void> {
+      event: Common.EventTarget.EventTargetEvent<{styleSheetId: Protocol.CSS.StyleSheetId, edit?: SDK.CSSModel.Edit}>):
+      Promise<void> {
     const header = this.cssModel.styleSheetHeaderForId(event.data.styleSheetId);
     if (!header || !header.isInline || (header.isInline && header.isMutable)) {
       return;
diff --git a/front_end/models/bindings/StylesSourceMapping.ts b/front_end/models/bindings/StylesSourceMapping.ts
index c1824f5..617bdda 100644
--- a/front_end/models/bindings/StylesSourceMapping.ts
+++ b/front_end/models/bindings/StylesSourceMapping.ts
@@ -30,6 +30,7 @@
 
 import * as Common from '../../core/common/common.js';
 import * as SDK from '../../core/sdk/sdk.js';
+import type * as Protocol from '../../generated/protocol.js';
 import type * as TextUtils from '../text_utils/text_utils.js';
 import * as Workspace from '../workspace/workspace.js';
 
@@ -152,7 +153,8 @@
   }
 
   private styleSheetChanged(
-      event: Common.EventTarget.EventTargetEvent<{styleSheetId: string, edit?: SDK.CSSModel.Edit}>): void {
+      event: Common.EventTarget.EventTargetEvent<{styleSheetId: Protocol.CSS.StyleSheetId, edit?: SDK.CSSModel.Edit}>):
+      void {
     const header = this.cssModel.styleSheetHeaderForId(event.data.styleSheetId);
     if (!header || !this.acceptsHeader(header)) {
       return;
diff --git a/front_end/panels/css_overview/CSSOverviewCompletedView.ts b/front_end/panels/css_overview/CSSOverviewCompletedView.ts
index d6185fc..4f13650 100644
--- a/front_end/panels/css_overview/CSSOverviewCompletedView.ts
+++ b/front_end/panels/css_overview/CSSOverviewCompletedView.ts
@@ -1142,8 +1142,8 @@
   }
 
   private linkifyRuleLocation(
-      cssModel: SDK.CSSModel.CSSModel, linkifier: Components.Linkifier.Linkifier, styleSheetId: string,
-      ruleLocation: TextUtils.TextRange.TextRange): Element|undefined {
+      cssModel: SDK.CSSModel.CSSModel, linkifier: Components.Linkifier.Linkifier,
+      styleSheetId: Protocol.CSS.StyleSheetId, ruleLocation: TextUtils.TextRange.TextRange): Element|undefined {
     const styleSheetHeader = cssModel.styleSheetHeaderForId(styleSheetId);
     if (!styleSheetHeader) {
       return;
diff --git a/front_end/panels/elements/StylesSidebarPane.ts b/front_end/panels/elements/StylesSidebarPane.ts
index ce6a799..5927225 100644
--- a/front_end/panels/elements/StylesSidebarPane.ts
+++ b/front_end/panels/elements/StylesSidebarPane.ts
@@ -896,7 +896,7 @@
   }
 
   _addBlankSection(
-      insertAfterSection: StylePropertiesSection, styleSheetId: string,
+      insertAfterSection: StylePropertiesSection, styleSheetId: Protocol.CSS.StyleSheetId,
       ruleLocation: TextUtils.TextRange.TextRange): void {
     const node = this.node();
     const blankSection = new BlankStylePropertiesSection(
@@ -1441,14 +1441,14 @@
   }
 
   static _linkifyRuleLocation(
-      cssModel: SDK.CSSModel.CSSModel, linkifier: Components.Linkifier.Linkifier, styleSheetId: string,
-      ruleLocation: TextUtils.TextRange.TextRange): Node {
+      cssModel: SDK.CSSModel.CSSModel, linkifier: Components.Linkifier.Linkifier,
+      styleSheetId: Protocol.CSS.StyleSheetId, ruleLocation: TextUtils.TextRange.TextRange): Node {
     const matchingSelectorLocation = this._getCSSSelectorLocation(cssModel, styleSheetId, ruleLocation);
     return linkifier.linkifyCSSLocation(matchingSelectorLocation);
   }
 
   static _getCSSSelectorLocation(
-      cssModel: SDK.CSSModel.CSSModel, styleSheetId: string,
+      cssModel: SDK.CSSModel.CSSModel, styleSheetId: Protocol.CSS.StyleSheetId,
       ruleLocation: TextUtils.TextRange.TextRange): SDK.CSSModel.CSSLocation {
     const styleSheetHeader =
         (cssModel.styleSheetHeaderForId(styleSheetId) as SDK.CSSStyleSheetHeader.CSSStyleSheetHeader);
@@ -1703,12 +1703,12 @@
   _onNewRuleClick(event: Common.EventTarget.EventTargetEvent): void {
     event.data.consume();
     const rule = this._style.parentRule;
-    if (!rule || !rule.style.range) {
+    if (!rule || !rule.style.range || rule.styleSheetId === undefined) {
       return;
     }
     const range =
         TextUtils.TextRange.TextRange.createFromLocation(rule.style.range.endLine, rule.style.range.endColumn + 1);
-    this._parentPane._addBlankSection(this, (rule.styleSheetId as string), range);
+    this._parentPane._addBlankSection(this, rule.styleSheetId, range);
   }
 
   _styleSheetEdited(edit: SDK.CSSModel.Edit): void {
@@ -2240,10 +2240,10 @@
       return;
     }
     const rule = (this._style.parentRule as SDK.CSSRule.CSSStyleRule | null);
-    if (!rule) {
+    if (!rule || rule.styleSheetId === undefined) {
       return;
     }
-    const header = cssModel.styleSheetHeaderForId((rule.styleSheetId as string));
+    const header = cssModel.styleSheetHeaderForId(rule.styleSheetId);
     if (!header) {
       return;
     }
@@ -2426,11 +2426,11 @@
 export class BlankStylePropertiesSection extends StylePropertiesSection {
   _normal: boolean;
   _ruleLocation: TextUtils.TextRange.TextRange;
-  _styleSheetId: string;
+  _styleSheetId: Protocol.CSS.StyleSheetId;
 
   constructor(
       stylesPane: StylesSidebarPane, matchedStyles: SDK.CSSMatchedStyles.CSSMatchedStyles, defaultSelectorText: string,
-      styleSheetId: string, ruleLocation: TextUtils.TextRange.TextRange,
+      styleSheetId: Protocol.CSS.StyleSheetId, ruleLocation: TextUtils.TextRange.TextRange,
       insertAfterStyle: SDK.CSSStyleDeclaration.CSSStyleDeclaration) {
     const cssModel = (stylesPane.cssModel() as SDK.CSSModel.CSSModel);
     const rule = SDK.CSSRule.CSSStyleRule.createDummyRule(cssModel, defaultSelectorText);
diff --git a/scripts/protocol_typescript/protocol_dts_generator.ts b/scripts/protocol_typescript/protocol_dts_generator.ts
index ea86a3f..f7734d3 100644
--- a/scripts/protocol_typescript/protocol_dts_generator.ts
+++ b/scripts/protocol_typescript/protocol_dts_generator.ts
@@ -219,25 +219,16 @@
 
 // Please keep `knownIdentifierTypes` sorted.
 const knownIdentifierTypes = [
-  'Accessibility.AXNodeId',
-  'Audits.IssueId',
-  'Browser.BrowserContextID',
-  'Browser.WindowID',
-  'CacheStorage.CacheId',
-  'DOM.BackendNodeId',
-  'DOM.NodeId',
-  'Fetch.RequestId',
-  'LayerTree.LayerId',
-  'Media.PlayerId',
-  'Network.InterceptionId',
-  'Network.LoaderId',
-  'Network.RequestId',
-  'Security.CertificateId',
-  'Target.SessionID',
-  'Target.TargetID',
-  'ServiceWorker.RegistrationID',
-  'WebAudio.GraphObjectId',
-  'WebAuthn.AuthenticatorId',
+  'Accessibility.AXNodeId',   'Audits.IssueId',
+  'Browser.BrowserContextID', 'Browser.WindowID',
+  'CacheStorage.CacheId',     'CSS.StyleSheetId',
+  'DOM.BackendNodeId',        'DOM.NodeId',
+  'Fetch.RequestId',          'LayerTree.LayerId',
+  'Media.PlayerId',           'Network.InterceptionId',
+  'Network.LoaderId',         'Network.RequestId',
+  'Security.CertificateId',   'Target.SessionID',
+  'Target.TargetID',          'ServiceWorker.RegistrationID',
+  'WebAudio.GraphObjectId',   'WebAuthn.AuthenticatorId',
 ];
 
 const emitDomainType = (domain: Protocol.Domain, type: Protocol.DomainType) => {