@openfin/core 46.100.67 → 46.100.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -926,6 +926,21 @@ declare class Application extends EmitterBase<OpenFin_2.ApplicationEvent> {
926
926
  * ```
927
927
  */
928
928
  closeTrayIconPopupMenu(): Promise<void>;
929
+ /**
930
+ * @experimental
931
+ * Retrieves a performance snapshot for all Windows, Views and Frames in the Application.
932
+ *
933
+ * By default, all custom marks and measures are collected, along with navigation/paint entries
934
+ * and resource timing (`resources` defaults to `true`). Pass `include` to restrict custom
935
+ * marks/measures to matching names (string substring or RegExp). Pass `browser: true` to also
936
+ * include hereio internal runtime metrics.
937
+ *
938
+ * See also [MDN | Performance Mark API](https://developer.mozilla.org/en-US/docs/Web/API/Performance/mark)
939
+ *
940
+ * Note - only currently running WebContents will be captured, and performance entries can only be
941
+ * captured for the current navigation of each.
942
+ */
943
+ getPerformanceStats: (options?: OpenFin_2.GetPerformanceStatsOptions) => Promise<OpenFin_2.PerformanceStatsResult>;
929
944
  }
930
945
 
931
946
  /**
@@ -1377,6 +1392,7 @@ declare type ApplicationOptions = LegacyWinOptionsInAppOptions & {
1377
1392
  declare type ApplicationPermissions = {
1378
1393
  setFileDownloadLocation: boolean;
1379
1394
  getFileDownloadLocation: boolean;
1395
+ getPerformanceStats: boolean;
1380
1396
  };
1381
1397
 
1382
1398
  /**
@@ -3132,7 +3148,12 @@ declare type ChildWindowCreatedEvent = ContentCreationRulesEvent & {
3132
3148
  childOptions: OpenFin_2.WindowOptions;
3133
3149
  };
3134
3150
 
3135
- /* Excluded from this release type: ChromeBrowser */
3151
+ declare interface ChromeBrowser {
3152
+ /**
3153
+ * Extension action surface — observe and invoke installed Chrome extension actions.
3154
+ */
3155
+ readonly Actions: ChromeBrowserActions;
3156
+ }
3136
3157
 
3137
3158
  /**
3138
3159
  * APIs for interacting with Chromium extension actions from an initialized ChromeBrowser window.
@@ -4433,6 +4454,8 @@ declare type CopyPermissions = {
4433
4454
  };
4434
4455
  };
4435
4456
 
4457
+ declare type CorePerformanceEntry = Omit<PerformanceEntry, 'toJSON'>;
4458
+
4436
4459
  /**
4437
4460
  * Defines and applies rounded corners for a frameless window. **NOTE:** On macOS corner is not ellipse but circle rounded by the
4438
4461
  * average of _height_ and _width_.
@@ -4585,6 +4608,32 @@ declare type CreateLayoutOptions = {
4585
4608
  * @experimental
4586
4609
  */
4587
4610
  renderCustomHeaderControls?: (controlsElement: HTMLElement, context: HeaderControlsContext) => (() => void) | void;
4611
+ /**
4612
+ * Callback invoked once per tab after core has finished building the tab DOM.
4613
+ * Use this to inject custom controls (e.g. action icons) into view tab hats.
4614
+ *
4615
+ * Optionally return a cleanup function that will be called when the tab is destroyed.
4616
+ *
4617
+ * Custom controls are not serialized into snapshots since callbacks are not
4618
+ * serializable. The callback is re-invoked when tabs are recreated.
4619
+ *
4620
+ * **NOTE**: This feature is only supported with layout engine `'v2'` (GL2) and
4621
+ * `settings.tabOverflowBehavior: 'scroll'`.
4622
+ *
4623
+ * Optionally add the `lm_tab_custom_control` class to each injected control as a direct child of
4624
+ * `tabElement`. That opts the control into {@link LayoutAccessibilityOptions} keyboard
4625
+ * navigation (roving tabindex, arrow keys in DOM order, Enter/Space without switching tabs),
4626
+ * pointer isolation so clicks do not activate or close the tab (press-and-drag still
4627
+ * reorders/tears out tab, matching the close button), and default 20×20 flex sizing
4628
+ * (override using `--layout-tab-custom-control-size`).
4629
+ *
4630
+ * @param tabElement The `.lm_tab` DOM element for the view tab.
4631
+ * @param context Context object with DOM anchors for the tab.
4632
+ * @returns A callback to be called when the rendered elements need to be cleaned up.
4633
+ *
4634
+ * @experimental
4635
+ */
4636
+ renderCustomTabControls?: (tabElement: HTMLElement, context: CustomTabControlsContext) => (() => void) | void;
4588
4637
  /**
4589
4638
  * Accessibility options for the layout. Controls ARIA attributes and keyboard navigation.
4590
4639
  */
@@ -4674,6 +4723,19 @@ declare type CustomRequestHeaders = {
4674
4723
  headers: WebRequestHeader[];
4675
4724
  };
4676
4725
 
4726
+ /**
4727
+ * @interface @experimental
4728
+ */
4729
+ declare type CustomTabControlsContext = {
4730
+ viewIdentity: Identity_4;
4731
+ /** Anchor for inserting controls adjacent to the tab text. */
4732
+ titleElement: HTMLElement;
4733
+ /** Anchor for the trailing outer edge. Absent when the view is not closable. */
4734
+ closeElement?: HTMLElement;
4735
+ /** The favicon element. Hidden when favicons are disabled. */
4736
+ faviconElement?: HTMLElement;
4737
+ };
4738
+
4677
4739
  declare type DataChannelReadyState = RTCDataChannel['readyState'];
4678
4740
 
4679
4741
  export declare type DefaultColorChannelId = keyof typeof defaultColorChannels;
@@ -6421,6 +6483,32 @@ declare type GetLogRequestType = {
6421
6483
  name: string;
6422
6484
  };
6423
6485
 
6486
+ /**
6487
+ * End of Interop Client Events
6488
+ */
6489
+ /**
6490
+ * Performance Entry Types
6491
+ */
6492
+ declare type GetPerformanceStatsOptions = {
6493
+ /**
6494
+ * Optional filter for custom performance marks and measures.
6495
+ * When omitted, all custom marks and measures are collected.
6496
+ * When specified, only entries whose names match one of the filters are collected.
6497
+ * Strings match by substring; RegExp matches by test.
6498
+ */
6499
+ include?: (string | RegExp)[];
6500
+ /**
6501
+ * Include `resource` timing entries from each View / Frame / Window.
6502
+ * Defaults to `true`. Pass `false` to omit them.
6503
+ */
6504
+ resources?: boolean;
6505
+ /**
6506
+ * Whether to include hereio internal runtime metrics.
6507
+ * Defaults to `false`. Pass `true` to include.
6508
+ */
6509
+ browser?: boolean;
6510
+ };
6511
+
6424
6512
  declare type GetterCall<T> = ApiCall<void, T>;
6425
6513
 
6426
6514
  /**
@@ -9926,6 +10014,7 @@ declare type MutableViewOptions = {
9926
10014
  preventDragOut: boolean;
9927
10015
  interop?: InteropConfig;
9928
10016
  /* Excluded from this release type: _internalWorkspaceData */
10017
+ /* Excluded from this release type: workspacePlatform */
9929
10018
  /**
9930
10019
  * {@inheritDoc ViewThrottling}
9931
10020
  *
@@ -10849,6 +10938,7 @@ declare namespace OpenFin_2 {
10849
10938
  ScreenCaptureBehavior,
10850
10939
  DomainSettingsPreloadScripts,
10851
10940
  PerDomainSettings,
10941
+ UrlRestoreSettings,
10852
10942
  CopyPermissions,
10853
10943
  PastePermissions,
10854
10944
  ClipboardPermissions,
@@ -10916,6 +11006,7 @@ declare namespace OpenFin_2 {
10916
11006
  LayoutManagerOverride,
10917
11007
  LayoutManager,
10918
11008
  HeaderControlsContext,
11009
+ CustomTabControlsContext,
10919
11010
  CreateLayoutOptions,
10920
11011
  MultiInstanceViewBehavior,
10921
11012
  LayoutAccessibilityOptions,
@@ -10989,6 +11080,12 @@ declare namespace OpenFin_2 {
10989
11080
  InteropClientEvent,
10990
11081
  ClientChangedContextGroup,
10991
11082
  InteropClientEvents,
11083
+ GetPerformanceStatsOptions,
11084
+ SerializedPerformanceOptions,
11085
+ CorePerformanceEntry,
11086
+ WebContentPerformanceStats,
11087
+ WindowPerformanceStats,
11088
+ PerformanceStatsResult,
10992
11089
  ChromeBrowser,
10993
11090
  LanguageInfo,
10994
11091
  PageTranslateOptions,
@@ -11275,6 +11372,12 @@ declare type PerDomainSettings = {
11275
11372
  * See also {@link AppLogLevel} for more information.
11276
11373
  */
11277
11374
  appLogLevel?: AppLogLevel;
11375
+ /**
11376
+ * When the live URL matches this rule, remap inbound
11377
+ * {@link View.ViewModule.navigate View.navigate} / {@link Window.WindowModule.navigate Window.navigate}
11378
+ * to {@link UrlRestoreSettings.url}.
11379
+ */
11380
+ urlRestore?: UrlRestoreSettings;
11278
11381
  };
11279
11382
 
11280
11383
  /**
@@ -11285,6 +11388,15 @@ declare type PerformanceReportEvent = Performance & BaseEvent_5 & {
11285
11388
  type: 'performance-report';
11286
11389
  };
11287
11390
 
11391
+ declare type PerformanceStatsResult = {
11392
+ mainWindow: WindowPerformanceStats;
11393
+ childWindows: WindowPerformanceStats[];
11394
+ browser?: {
11395
+ timeOrigin: number;
11396
+ entries: CorePerformanceEntry[];
11397
+ };
11398
+ };
11399
+
11288
11400
  /**
11289
11401
  * @interface
11290
11402
  *
@@ -13411,6 +13523,11 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
13411
13523
  response: OpenFin_2.MenuResult;
13412
13524
  };
13413
13525
  'close-tray-icon-popup-menu': IdentityCall<{}, void>;
13526
+ 'get-application-performance-stats': ApplicationIdentityCall<OpenFin_2.SerializedPerformanceOptions, OpenFin_2.PerformanceStatsResult> & {
13527
+ secure: true;
13528
+ namespace: 'Application';
13529
+ apiPath: '.getPerformanceStats';
13530
+ };
13414
13531
  'create-application': ApiCall<OpenFin_2.ApplicationCreationOptions, void>;
13415
13532
  'run-applications': ApiCall<{
13416
13533
  applications: Array<OpenFin_2.ManifestInfo>;
@@ -14796,6 +14913,16 @@ declare type SentMessage<Value> = Promise<Value> & {
14796
14913
  messageId: ReturnType<Environment['getNextMessageId']>;
14797
14914
  };
14798
14915
 
14916
+ declare type SerializedFilter = string | {
14917
+ type: 'regex';
14918
+ expression: string;
14919
+ flags?: string;
14920
+ };
14921
+
14922
+ declare type SerializedPerformanceOptions = Omit<GetPerformanceStatsOptions, 'include'> & {
14923
+ include?: SerializedFilter[];
14924
+ };
14925
+
14799
14926
  declare type ServeAssetOptions = AppAssetServeRequest | PathServeRequest;
14800
14927
 
14801
14928
  declare type ServedAssetInfo = {
@@ -17795,6 +17922,16 @@ declare type UrlChangedEvent = BaseUrlEvent & ({
17795
17922
  httpStatusText: string;
17796
17923
  });
17797
17924
 
17925
+ /**
17926
+ * Domain-settings policy that replaces a matched live URL with a configured start URI.
17927
+ */
17928
+ declare type UrlRestoreSettings = {
17929
+ /**
17930
+ * Absolute replacement URL. Full URL replace, not prefix rewrite.
17931
+ */
17932
+ url: string;
17933
+ };
17934
+
17798
17935
  /**
17799
17936
  * @interface
17800
17937
  */
@@ -18602,10 +18739,10 @@ declare type ViewTabAccessibilityOptions = {
18602
18739
  * Uses roving tabindex pattern - only one element focusable at a time.
18603
18740
  * @default ['active-tab', 'add-tab-button']
18604
18741
  */
18605
- tabNavigation?: ViewTabElements[];
18742
+ tabNavigation?: Exclude<ViewTabElements, 'active-tab-custom-control' | 'inactive-tab-custom-control'>[];
18606
18743
  /**
18607
18744
  * Controls which elements are navigable via Arrow keys.
18608
- * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button']
18745
+ * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button', 'active-tab-custom-control', 'inactive-tab-custom-control']
18609
18746
  */
18610
18747
  arrowNavigation?: ViewTabElements[];
18611
18748
  /**
@@ -18637,7 +18774,7 @@ declare type ViewTabAccessibilityOptions = {
18637
18774
  /**
18638
18775
  * Elements that can be navigated in view tabs.
18639
18776
  */
18640
- declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button';
18777
+ declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button' | 'active-tab-custom-control' | 'inactive-tab-custom-control';
18641
18778
 
18642
18779
  /**
18643
18780
  * View throttling state.
@@ -18691,6 +18828,22 @@ declare type VoidCall = ApiCall<void, void>;
18691
18828
 
18692
18829
  declare type WebContent = View_2 | _Window;
18693
18830
 
18831
+ declare type WebContentPerformanceStatBase = {
18832
+ name: string;
18833
+ entries: CorePerformanceEntry[];
18834
+ navigation: {
18835
+ historyLength: number;
18836
+ timeOrigin: number;
18837
+ };
18838
+ url: string;
18839
+ frames: WebContentPerformanceStats[];
18840
+ };
18841
+
18842
+ declare type WebContentPerformanceStats = WebContentPerformanceStatBase | {
18843
+ error: string;
18844
+ url: string;
18845
+ };
18846
+
18694
18847
  declare class WebContents<T extends BaseEvent> extends EmitterBase<T> {
18695
18848
  identity: OpenFin_2.Identity;
18696
18849
  entityType: 'window' | 'view';
@@ -21298,6 +21451,13 @@ declare type WindowOptionsChangedEvent = OpenFin_2.WindowEvents.WindowOptionsCha
21298
21451
  */
21299
21452
  declare type WindowOptionsChangedEvent_2 = OptionsChangedEvent;
21300
21453
 
21454
+ declare type WindowPerformanceStats = (WebContentPerformanceStatBase & {
21455
+ views: WebContentPerformanceStats[];
21456
+ }) | {
21457
+ error: string;
21458
+ url: string;
21459
+ };
21460
+
21301
21461
  declare type WindowPrintOptions = PrintOptions | ScreenshotPrintOptions | WindowViewsPrintOptions;
21302
21462
 
21303
21463
  /**
@@ -926,6 +926,21 @@ declare class Application extends EmitterBase<OpenFin_2.ApplicationEvent> {
926
926
  * ```
927
927
  */
928
928
  closeTrayIconPopupMenu(): Promise<void>;
929
+ /**
930
+ * @experimental
931
+ * Retrieves a performance snapshot for all Windows, Views and Frames in the Application.
932
+ *
933
+ * By default, all custom marks and measures are collected, along with navigation/paint entries
934
+ * and resource timing (`resources` defaults to `true`). Pass `include` to restrict custom
935
+ * marks/measures to matching names (string substring or RegExp). Pass `browser: true` to also
936
+ * include hereio internal runtime metrics.
937
+ *
938
+ * See also [MDN | Performance Mark API](https://developer.mozilla.org/en-US/docs/Web/API/Performance/mark)
939
+ *
940
+ * Note - only currently running WebContents will be captured, and performance entries can only be
941
+ * captured for the current navigation of each.
942
+ */
943
+ getPerformanceStats: (options?: OpenFin_2.GetPerformanceStatsOptions) => Promise<OpenFin_2.PerformanceStatsResult>;
929
944
  }
930
945
 
931
946
  /**
@@ -1377,6 +1392,7 @@ declare type ApplicationOptions = LegacyWinOptionsInAppOptions & {
1377
1392
  declare type ApplicationPermissions = {
1378
1393
  setFileDownloadLocation: boolean;
1379
1394
  getFileDownloadLocation: boolean;
1395
+ getPerformanceStats: boolean;
1380
1396
  };
1381
1397
 
1382
1398
  /**
@@ -3132,7 +3148,12 @@ declare type ChildWindowCreatedEvent = ContentCreationRulesEvent & {
3132
3148
  childOptions: OpenFin_2.WindowOptions;
3133
3149
  };
3134
3150
 
3135
- /* Excluded from this release type: ChromeBrowser */
3151
+ declare interface ChromeBrowser {
3152
+ /**
3153
+ * Extension action surface — observe and invoke installed Chrome extension actions.
3154
+ */
3155
+ readonly Actions: ChromeBrowserActions;
3156
+ }
3136
3157
 
3137
3158
  /**
3138
3159
  * APIs for interacting with Chromium extension actions from an initialized ChromeBrowser window.
@@ -4433,6 +4454,8 @@ declare type CopyPermissions = {
4433
4454
  };
4434
4455
  };
4435
4456
 
4457
+ declare type CorePerformanceEntry = Omit<PerformanceEntry, 'toJSON'>;
4458
+
4436
4459
  /**
4437
4460
  * Defines and applies rounded corners for a frameless window. **NOTE:** On macOS corner is not ellipse but circle rounded by the
4438
4461
  * average of _height_ and _width_.
@@ -4585,6 +4608,32 @@ declare type CreateLayoutOptions = {
4585
4608
  * @experimental
4586
4609
  */
4587
4610
  renderCustomHeaderControls?: (controlsElement: HTMLElement, context: HeaderControlsContext) => (() => void) | void;
4611
+ /**
4612
+ * Callback invoked once per tab after core has finished building the tab DOM.
4613
+ * Use this to inject custom controls (e.g. action icons) into view tab hats.
4614
+ *
4615
+ * Optionally return a cleanup function that will be called when the tab is destroyed.
4616
+ *
4617
+ * Custom controls are not serialized into snapshots since callbacks are not
4618
+ * serializable. The callback is re-invoked when tabs are recreated.
4619
+ *
4620
+ * **NOTE**: This feature is only supported with layout engine `'v2'` (GL2) and
4621
+ * `settings.tabOverflowBehavior: 'scroll'`.
4622
+ *
4623
+ * Optionally add the `lm_tab_custom_control` class to each injected control as a direct child of
4624
+ * `tabElement`. That opts the control into {@link LayoutAccessibilityOptions} keyboard
4625
+ * navigation (roving tabindex, arrow keys in DOM order, Enter/Space without switching tabs),
4626
+ * pointer isolation so clicks do not activate or close the tab (press-and-drag still
4627
+ * reorders/tears out tab, matching the close button), and default 20×20 flex sizing
4628
+ * (override using `--layout-tab-custom-control-size`).
4629
+ *
4630
+ * @param tabElement The `.lm_tab` DOM element for the view tab.
4631
+ * @param context Context object with DOM anchors for the tab.
4632
+ * @returns A callback to be called when the rendered elements need to be cleaned up.
4633
+ *
4634
+ * @experimental
4635
+ */
4636
+ renderCustomTabControls?: (tabElement: HTMLElement, context: CustomTabControlsContext) => (() => void) | void;
4588
4637
  /**
4589
4638
  * Accessibility options for the layout. Controls ARIA attributes and keyboard navigation.
4590
4639
  */
@@ -4674,6 +4723,19 @@ declare type CustomRequestHeaders = {
4674
4723
  headers: WebRequestHeader[];
4675
4724
  };
4676
4725
 
4726
+ /**
4727
+ * @interface @experimental
4728
+ */
4729
+ declare type CustomTabControlsContext = {
4730
+ viewIdentity: Identity_4;
4731
+ /** Anchor for inserting controls adjacent to the tab text. */
4732
+ titleElement: HTMLElement;
4733
+ /** Anchor for the trailing outer edge. Absent when the view is not closable. */
4734
+ closeElement?: HTMLElement;
4735
+ /** The favicon element. Hidden when favicons are disabled. */
4736
+ faviconElement?: HTMLElement;
4737
+ };
4738
+
4677
4739
  declare type DataChannelReadyState = RTCDataChannel['readyState'];
4678
4740
 
4679
4741
  export declare type DefaultColorChannelId = keyof typeof defaultColorChannels;
@@ -6421,6 +6483,32 @@ declare type GetLogRequestType = {
6421
6483
  name: string;
6422
6484
  };
6423
6485
 
6486
+ /**
6487
+ * End of Interop Client Events
6488
+ */
6489
+ /**
6490
+ * Performance Entry Types
6491
+ */
6492
+ declare type GetPerformanceStatsOptions = {
6493
+ /**
6494
+ * Optional filter for custom performance marks and measures.
6495
+ * When omitted, all custom marks and measures are collected.
6496
+ * When specified, only entries whose names match one of the filters are collected.
6497
+ * Strings match by substring; RegExp matches by test.
6498
+ */
6499
+ include?: (string | RegExp)[];
6500
+ /**
6501
+ * Include `resource` timing entries from each View / Frame / Window.
6502
+ * Defaults to `true`. Pass `false` to omit them.
6503
+ */
6504
+ resources?: boolean;
6505
+ /**
6506
+ * Whether to include hereio internal runtime metrics.
6507
+ * Defaults to `false`. Pass `true` to include.
6508
+ */
6509
+ browser?: boolean;
6510
+ };
6511
+
6424
6512
  declare type GetterCall<T> = ApiCall<void, T>;
6425
6513
 
6426
6514
  /**
@@ -9926,6 +10014,7 @@ declare type MutableViewOptions = {
9926
10014
  preventDragOut: boolean;
9927
10015
  interop?: InteropConfig;
9928
10016
  /* Excluded from this release type: _internalWorkspaceData */
10017
+ /* Excluded from this release type: workspacePlatform */
9929
10018
  /**
9930
10019
  * {@inheritDoc ViewThrottling}
9931
10020
  *
@@ -10849,6 +10938,7 @@ declare namespace OpenFin_2 {
10849
10938
  ScreenCaptureBehavior,
10850
10939
  DomainSettingsPreloadScripts,
10851
10940
  PerDomainSettings,
10941
+ UrlRestoreSettings,
10852
10942
  CopyPermissions,
10853
10943
  PastePermissions,
10854
10944
  ClipboardPermissions,
@@ -10916,6 +11006,7 @@ declare namespace OpenFin_2 {
10916
11006
  LayoutManagerOverride,
10917
11007
  LayoutManager,
10918
11008
  HeaderControlsContext,
11009
+ CustomTabControlsContext,
10919
11010
  CreateLayoutOptions,
10920
11011
  MultiInstanceViewBehavior,
10921
11012
  LayoutAccessibilityOptions,
@@ -10989,6 +11080,12 @@ declare namespace OpenFin_2 {
10989
11080
  InteropClientEvent,
10990
11081
  ClientChangedContextGroup,
10991
11082
  InteropClientEvents,
11083
+ GetPerformanceStatsOptions,
11084
+ SerializedPerformanceOptions,
11085
+ CorePerformanceEntry,
11086
+ WebContentPerformanceStats,
11087
+ WindowPerformanceStats,
11088
+ PerformanceStatsResult,
10992
11089
  ChromeBrowser,
10993
11090
  LanguageInfo,
10994
11091
  PageTranslateOptions,
@@ -11275,6 +11372,12 @@ declare type PerDomainSettings = {
11275
11372
  * See also {@link AppLogLevel} for more information.
11276
11373
  */
11277
11374
  appLogLevel?: AppLogLevel;
11375
+ /**
11376
+ * When the live URL matches this rule, remap inbound
11377
+ * {@link View.ViewModule.navigate View.navigate} / {@link Window.WindowModule.navigate Window.navigate}
11378
+ * to {@link UrlRestoreSettings.url}.
11379
+ */
11380
+ urlRestore?: UrlRestoreSettings;
11278
11381
  };
11279
11382
 
11280
11383
  /**
@@ -11285,6 +11388,15 @@ declare type PerformanceReportEvent = Performance & BaseEvent_5 & {
11285
11388
  type: 'performance-report';
11286
11389
  };
11287
11390
 
11391
+ declare type PerformanceStatsResult = {
11392
+ mainWindow: WindowPerformanceStats;
11393
+ childWindows: WindowPerformanceStats[];
11394
+ browser?: {
11395
+ timeOrigin: number;
11396
+ entries: CorePerformanceEntry[];
11397
+ };
11398
+ };
11399
+
11288
11400
  /**
11289
11401
  * @interface
11290
11402
  *
@@ -13411,6 +13523,11 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
13411
13523
  response: OpenFin_2.MenuResult;
13412
13524
  };
13413
13525
  'close-tray-icon-popup-menu': IdentityCall<{}, void>;
13526
+ 'get-application-performance-stats': ApplicationIdentityCall<OpenFin_2.SerializedPerformanceOptions, OpenFin_2.PerformanceStatsResult> & {
13527
+ secure: true;
13528
+ namespace: 'Application';
13529
+ apiPath: '.getPerformanceStats';
13530
+ };
13414
13531
  'create-application': ApiCall<OpenFin_2.ApplicationCreationOptions, void>;
13415
13532
  'run-applications': ApiCall<{
13416
13533
  applications: Array<OpenFin_2.ManifestInfo>;
@@ -14796,6 +14913,16 @@ declare type SentMessage<Value> = Promise<Value> & {
14796
14913
  messageId: ReturnType<Environment['getNextMessageId']>;
14797
14914
  };
14798
14915
 
14916
+ declare type SerializedFilter = string | {
14917
+ type: 'regex';
14918
+ expression: string;
14919
+ flags?: string;
14920
+ };
14921
+
14922
+ declare type SerializedPerformanceOptions = Omit<GetPerformanceStatsOptions, 'include'> & {
14923
+ include?: SerializedFilter[];
14924
+ };
14925
+
14799
14926
  declare type ServeAssetOptions = AppAssetServeRequest | PathServeRequest;
14800
14927
 
14801
14928
  declare type ServedAssetInfo = {
@@ -17795,6 +17922,16 @@ declare type UrlChangedEvent = BaseUrlEvent & ({
17795
17922
  httpStatusText: string;
17796
17923
  });
17797
17924
 
17925
+ /**
17926
+ * Domain-settings policy that replaces a matched live URL with a configured start URI.
17927
+ */
17928
+ declare type UrlRestoreSettings = {
17929
+ /**
17930
+ * Absolute replacement URL. Full URL replace, not prefix rewrite.
17931
+ */
17932
+ url: string;
17933
+ };
17934
+
17798
17935
  /**
17799
17936
  * @interface
17800
17937
  */
@@ -18602,10 +18739,10 @@ declare type ViewTabAccessibilityOptions = {
18602
18739
  * Uses roving tabindex pattern - only one element focusable at a time.
18603
18740
  * @default ['active-tab', 'add-tab-button']
18604
18741
  */
18605
- tabNavigation?: ViewTabElements[];
18742
+ tabNavigation?: Exclude<ViewTabElements, 'active-tab-custom-control' | 'inactive-tab-custom-control'>[];
18606
18743
  /**
18607
18744
  * Controls which elements are navigable via Arrow keys.
18608
- * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button']
18745
+ * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button', 'active-tab-custom-control', 'inactive-tab-custom-control']
18609
18746
  */
18610
18747
  arrowNavigation?: ViewTabElements[];
18611
18748
  /**
@@ -18637,7 +18774,7 @@ declare type ViewTabAccessibilityOptions = {
18637
18774
  /**
18638
18775
  * Elements that can be navigated in view tabs.
18639
18776
  */
18640
- declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button';
18777
+ declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button' | 'active-tab-custom-control' | 'inactive-tab-custom-control';
18641
18778
 
18642
18779
  /**
18643
18780
  * View throttling state.
@@ -18691,6 +18828,22 @@ declare type VoidCall = ApiCall<void, void>;
18691
18828
 
18692
18829
  declare type WebContent = View_2 | _Window;
18693
18830
 
18831
+ declare type WebContentPerformanceStatBase = {
18832
+ name: string;
18833
+ entries: CorePerformanceEntry[];
18834
+ navigation: {
18835
+ historyLength: number;
18836
+ timeOrigin: number;
18837
+ };
18838
+ url: string;
18839
+ frames: WebContentPerformanceStats[];
18840
+ };
18841
+
18842
+ declare type WebContentPerformanceStats = WebContentPerformanceStatBase | {
18843
+ error: string;
18844
+ url: string;
18845
+ };
18846
+
18694
18847
  declare class WebContents<T extends BaseEvent> extends EmitterBase<T> {
18695
18848
  identity: OpenFin_2.Identity;
18696
18849
  entityType: 'window' | 'view';
@@ -21298,6 +21451,13 @@ declare type WindowOptionsChangedEvent = OpenFin_2.WindowEvents.WindowOptionsCha
21298
21451
  */
21299
21452
  declare type WindowOptionsChangedEvent_2 = OptionsChangedEvent;
21300
21453
 
21454
+ declare type WindowPerformanceStats = (WebContentPerformanceStatBase & {
21455
+ views: WebContentPerformanceStats[];
21456
+ }) | {
21457
+ error: string;
21458
+ url: string;
21459
+ };
21460
+
21301
21461
  declare type WindowPrintOptions = PrintOptions | ScreenshotPrintOptions | WindowViewsPrintOptions;
21302
21462
 
21303
21463
  /**
@@ -926,6 +926,21 @@ declare class Application extends EmitterBase<OpenFin_2.ApplicationEvent> {
926
926
  * ```
927
927
  */
928
928
  closeTrayIconPopupMenu(): Promise<void>;
929
+ /**
930
+ * @experimental
931
+ * Retrieves a performance snapshot for all Windows, Views and Frames in the Application.
932
+ *
933
+ * By default, all custom marks and measures are collected, along with navigation/paint entries
934
+ * and resource timing (`resources` defaults to `true`). Pass `include` to restrict custom
935
+ * marks/measures to matching names (string substring or RegExp). Pass `browser: true` to also
936
+ * include hereio internal runtime metrics.
937
+ *
938
+ * See also [MDN | Performance Mark API](https://developer.mozilla.org/en-US/docs/Web/API/Performance/mark)
939
+ *
940
+ * Note - only currently running WebContents will be captured, and performance entries can only be
941
+ * captured for the current navigation of each.
942
+ */
943
+ getPerformanceStats: (options?: OpenFin_2.GetPerformanceStatsOptions) => Promise<OpenFin_2.PerformanceStatsResult>;
929
944
  }
930
945
 
931
946
  /**
@@ -1377,6 +1392,7 @@ declare type ApplicationOptions = LegacyWinOptionsInAppOptions & {
1377
1392
  declare type ApplicationPermissions = {
1378
1393
  setFileDownloadLocation: boolean;
1379
1394
  getFileDownloadLocation: boolean;
1395
+ getPerformanceStats: boolean;
1380
1396
  };
1381
1397
 
1382
1398
  /**
@@ -3132,7 +3148,12 @@ declare type ChildWindowCreatedEvent = ContentCreationRulesEvent & {
3132
3148
  childOptions: OpenFin_2.WindowOptions;
3133
3149
  };
3134
3150
 
3135
- /* Excluded from this release type: ChromeBrowser */
3151
+ declare interface ChromeBrowser {
3152
+ /**
3153
+ * Extension action surface — observe and invoke installed Chrome extension actions.
3154
+ */
3155
+ readonly Actions: ChromeBrowserActions;
3156
+ }
3136
3157
 
3137
3158
  /**
3138
3159
  * APIs for interacting with Chromium extension actions from an initialized ChromeBrowser window.
@@ -4433,6 +4454,8 @@ declare type CopyPermissions = {
4433
4454
  };
4434
4455
  };
4435
4456
 
4457
+ declare type CorePerformanceEntry = Omit<PerformanceEntry, 'toJSON'>;
4458
+
4436
4459
  /**
4437
4460
  * Defines and applies rounded corners for a frameless window. **NOTE:** On macOS corner is not ellipse but circle rounded by the
4438
4461
  * average of _height_ and _width_.
@@ -4585,6 +4608,32 @@ declare type CreateLayoutOptions = {
4585
4608
  * @experimental
4586
4609
  */
4587
4610
  renderCustomHeaderControls?: (controlsElement: HTMLElement, context: HeaderControlsContext) => (() => void) | void;
4611
+ /**
4612
+ * Callback invoked once per tab after core has finished building the tab DOM.
4613
+ * Use this to inject custom controls (e.g. action icons) into view tab hats.
4614
+ *
4615
+ * Optionally return a cleanup function that will be called when the tab is destroyed.
4616
+ *
4617
+ * Custom controls are not serialized into snapshots since callbacks are not
4618
+ * serializable. The callback is re-invoked when tabs are recreated.
4619
+ *
4620
+ * **NOTE**: This feature is only supported with layout engine `'v2'` (GL2) and
4621
+ * `settings.tabOverflowBehavior: 'scroll'`.
4622
+ *
4623
+ * Optionally add the `lm_tab_custom_control` class to each injected control as a direct child of
4624
+ * `tabElement`. That opts the control into {@link LayoutAccessibilityOptions} keyboard
4625
+ * navigation (roving tabindex, arrow keys in DOM order, Enter/Space without switching tabs),
4626
+ * pointer isolation so clicks do not activate or close the tab (press-and-drag still
4627
+ * reorders/tears out tab, matching the close button), and default 20×20 flex sizing
4628
+ * (override using `--layout-tab-custom-control-size`).
4629
+ *
4630
+ * @param tabElement The `.lm_tab` DOM element for the view tab.
4631
+ * @param context Context object with DOM anchors for the tab.
4632
+ * @returns A callback to be called when the rendered elements need to be cleaned up.
4633
+ *
4634
+ * @experimental
4635
+ */
4636
+ renderCustomTabControls?: (tabElement: HTMLElement, context: CustomTabControlsContext) => (() => void) | void;
4588
4637
  /**
4589
4638
  * Accessibility options for the layout. Controls ARIA attributes and keyboard navigation.
4590
4639
  */
@@ -4674,6 +4723,19 @@ declare type CustomRequestHeaders = {
4674
4723
  headers: WebRequestHeader[];
4675
4724
  };
4676
4725
 
4726
+ /**
4727
+ * @interface @experimental
4728
+ */
4729
+ declare type CustomTabControlsContext = {
4730
+ viewIdentity: Identity_4;
4731
+ /** Anchor for inserting controls adjacent to the tab text. */
4732
+ titleElement: HTMLElement;
4733
+ /** Anchor for the trailing outer edge. Absent when the view is not closable. */
4734
+ closeElement?: HTMLElement;
4735
+ /** The favicon element. Hidden when favicons are disabled. */
4736
+ faviconElement?: HTMLElement;
4737
+ };
4738
+
4677
4739
  declare type DataChannelReadyState = RTCDataChannel['readyState'];
4678
4740
 
4679
4741
  export declare type DefaultColorChannelId = keyof typeof defaultColorChannels;
@@ -6421,6 +6483,32 @@ declare type GetLogRequestType = {
6421
6483
  name: string;
6422
6484
  };
6423
6485
 
6486
+ /**
6487
+ * End of Interop Client Events
6488
+ */
6489
+ /**
6490
+ * Performance Entry Types
6491
+ */
6492
+ declare type GetPerformanceStatsOptions = {
6493
+ /**
6494
+ * Optional filter for custom performance marks and measures.
6495
+ * When omitted, all custom marks and measures are collected.
6496
+ * When specified, only entries whose names match one of the filters are collected.
6497
+ * Strings match by substring; RegExp matches by test.
6498
+ */
6499
+ include?: (string | RegExp)[];
6500
+ /**
6501
+ * Include `resource` timing entries from each View / Frame / Window.
6502
+ * Defaults to `true`. Pass `false` to omit them.
6503
+ */
6504
+ resources?: boolean;
6505
+ /**
6506
+ * Whether to include hereio internal runtime metrics.
6507
+ * Defaults to `false`. Pass `true` to include.
6508
+ */
6509
+ browser?: boolean;
6510
+ };
6511
+
6424
6512
  declare type GetterCall<T> = ApiCall<void, T>;
6425
6513
 
6426
6514
  /**
@@ -9926,6 +10014,7 @@ declare type MutableViewOptions = {
9926
10014
  preventDragOut: boolean;
9927
10015
  interop?: InteropConfig;
9928
10016
  /* Excluded from this release type: _internalWorkspaceData */
10017
+ /* Excluded from this release type: workspacePlatform */
9929
10018
  /**
9930
10019
  * {@inheritDoc ViewThrottling}
9931
10020
  *
@@ -10849,6 +10938,7 @@ declare namespace OpenFin_2 {
10849
10938
  ScreenCaptureBehavior,
10850
10939
  DomainSettingsPreloadScripts,
10851
10940
  PerDomainSettings,
10941
+ UrlRestoreSettings,
10852
10942
  CopyPermissions,
10853
10943
  PastePermissions,
10854
10944
  ClipboardPermissions,
@@ -10916,6 +11006,7 @@ declare namespace OpenFin_2 {
10916
11006
  LayoutManagerOverride,
10917
11007
  LayoutManager,
10918
11008
  HeaderControlsContext,
11009
+ CustomTabControlsContext,
10919
11010
  CreateLayoutOptions,
10920
11011
  MultiInstanceViewBehavior,
10921
11012
  LayoutAccessibilityOptions,
@@ -10989,6 +11080,12 @@ declare namespace OpenFin_2 {
10989
11080
  InteropClientEvent,
10990
11081
  ClientChangedContextGroup,
10991
11082
  InteropClientEvents,
11083
+ GetPerformanceStatsOptions,
11084
+ SerializedPerformanceOptions,
11085
+ CorePerformanceEntry,
11086
+ WebContentPerformanceStats,
11087
+ WindowPerformanceStats,
11088
+ PerformanceStatsResult,
10992
11089
  ChromeBrowser,
10993
11090
  LanguageInfo,
10994
11091
  PageTranslateOptions,
@@ -11275,6 +11372,12 @@ declare type PerDomainSettings = {
11275
11372
  * See also {@link AppLogLevel} for more information.
11276
11373
  */
11277
11374
  appLogLevel?: AppLogLevel;
11375
+ /**
11376
+ * When the live URL matches this rule, remap inbound
11377
+ * {@link View.ViewModule.navigate View.navigate} / {@link Window.WindowModule.navigate Window.navigate}
11378
+ * to {@link UrlRestoreSettings.url}.
11379
+ */
11380
+ urlRestore?: UrlRestoreSettings;
11278
11381
  };
11279
11382
 
11280
11383
  /**
@@ -11285,6 +11388,15 @@ declare type PerformanceReportEvent = Performance & BaseEvent_5 & {
11285
11388
  type: 'performance-report';
11286
11389
  };
11287
11390
 
11391
+ declare type PerformanceStatsResult = {
11392
+ mainWindow: WindowPerformanceStats;
11393
+ childWindows: WindowPerformanceStats[];
11394
+ browser?: {
11395
+ timeOrigin: number;
11396
+ entries: CorePerformanceEntry[];
11397
+ };
11398
+ };
11399
+
11288
11400
  /**
11289
11401
  * @interface
11290
11402
  *
@@ -13411,6 +13523,11 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
13411
13523
  response: OpenFin_2.MenuResult;
13412
13524
  };
13413
13525
  'close-tray-icon-popup-menu': IdentityCall<{}, void>;
13526
+ 'get-application-performance-stats': ApplicationIdentityCall<OpenFin_2.SerializedPerformanceOptions, OpenFin_2.PerformanceStatsResult> & {
13527
+ secure: true;
13528
+ namespace: 'Application';
13529
+ apiPath: '.getPerformanceStats';
13530
+ };
13414
13531
  'create-application': ApiCall<OpenFin_2.ApplicationCreationOptions, void>;
13415
13532
  'run-applications': ApiCall<{
13416
13533
  applications: Array<OpenFin_2.ManifestInfo>;
@@ -14796,6 +14913,16 @@ declare type SentMessage<Value> = Promise<Value> & {
14796
14913
  messageId: ReturnType<Environment['getNextMessageId']>;
14797
14914
  };
14798
14915
 
14916
+ declare type SerializedFilter = string | {
14917
+ type: 'regex';
14918
+ expression: string;
14919
+ flags?: string;
14920
+ };
14921
+
14922
+ declare type SerializedPerformanceOptions = Omit<GetPerformanceStatsOptions, 'include'> & {
14923
+ include?: SerializedFilter[];
14924
+ };
14925
+
14799
14926
  declare type ServeAssetOptions = AppAssetServeRequest | PathServeRequest;
14800
14927
 
14801
14928
  declare type ServedAssetInfo = {
@@ -17795,6 +17922,16 @@ declare type UrlChangedEvent = BaseUrlEvent & ({
17795
17922
  httpStatusText: string;
17796
17923
  });
17797
17924
 
17925
+ /**
17926
+ * Domain-settings policy that replaces a matched live URL with a configured start URI.
17927
+ */
17928
+ declare type UrlRestoreSettings = {
17929
+ /**
17930
+ * Absolute replacement URL. Full URL replace, not prefix rewrite.
17931
+ */
17932
+ url: string;
17933
+ };
17934
+
17798
17935
  /**
17799
17936
  * @interface
17800
17937
  */
@@ -18602,10 +18739,10 @@ declare type ViewTabAccessibilityOptions = {
18602
18739
  * Uses roving tabindex pattern - only one element focusable at a time.
18603
18740
  * @default ['active-tab', 'add-tab-button']
18604
18741
  */
18605
- tabNavigation?: ViewTabElements[];
18742
+ tabNavigation?: Exclude<ViewTabElements, 'active-tab-custom-control' | 'inactive-tab-custom-control'>[];
18606
18743
  /**
18607
18744
  * Controls which elements are navigable via Arrow keys.
18608
- * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button']
18745
+ * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button', 'active-tab-custom-control', 'inactive-tab-custom-control']
18609
18746
  */
18610
18747
  arrowNavigation?: ViewTabElements[];
18611
18748
  /**
@@ -18637,7 +18774,7 @@ declare type ViewTabAccessibilityOptions = {
18637
18774
  /**
18638
18775
  * Elements that can be navigated in view tabs.
18639
18776
  */
18640
- declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button';
18777
+ declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button' | 'active-tab-custom-control' | 'inactive-tab-custom-control';
18641
18778
 
18642
18779
  /**
18643
18780
  * View throttling state.
@@ -18691,6 +18828,22 @@ declare type VoidCall = ApiCall<void, void>;
18691
18828
 
18692
18829
  declare type WebContent = View_2 | _Window;
18693
18830
 
18831
+ declare type WebContentPerformanceStatBase = {
18832
+ name: string;
18833
+ entries: CorePerformanceEntry[];
18834
+ navigation: {
18835
+ historyLength: number;
18836
+ timeOrigin: number;
18837
+ };
18838
+ url: string;
18839
+ frames: WebContentPerformanceStats[];
18840
+ };
18841
+
18842
+ declare type WebContentPerformanceStats = WebContentPerformanceStatBase | {
18843
+ error: string;
18844
+ url: string;
18845
+ };
18846
+
18694
18847
  declare class WebContents<T extends BaseEvent> extends EmitterBase<T> {
18695
18848
  identity: OpenFin_2.Identity;
18696
18849
  entityType: 'window' | 'view';
@@ -21298,6 +21451,13 @@ declare type WindowOptionsChangedEvent = OpenFin_2.WindowEvents.WindowOptionsCha
21298
21451
  */
21299
21452
  declare type WindowOptionsChangedEvent_2 = OptionsChangedEvent;
21300
21453
 
21454
+ declare type WindowPerformanceStats = (WebContentPerformanceStatBase & {
21455
+ views: WebContentPerformanceStats[];
21456
+ }) | {
21457
+ error: string;
21458
+ url: string;
21459
+ };
21460
+
21301
21461
  declare type WindowPrintOptions = PrintOptions | ScreenshotPrintOptions | WindowViewsPrintOptions;
21302
21462
 
21303
21463
  /**
package/out/stub.d.ts CHANGED
@@ -932,6 +932,21 @@ declare class Application extends EmitterBase<OpenFin_2.ApplicationEvent> {
932
932
  * ```
933
933
  */
934
934
  closeTrayIconPopupMenu(): Promise<void>;
935
+ /**
936
+ * @experimental
937
+ * Retrieves a performance snapshot for all Windows, Views and Frames in the Application.
938
+ *
939
+ * By default, all custom marks and measures are collected, along with navigation/paint entries
940
+ * and resource timing (`resources` defaults to `true`). Pass `include` to restrict custom
941
+ * marks/measures to matching names (string substring or RegExp). Pass `browser: true` to also
942
+ * include hereio internal runtime metrics.
943
+ *
944
+ * See also [MDN | Performance Mark API](https://developer.mozilla.org/en-US/docs/Web/API/Performance/mark)
945
+ *
946
+ * Note - only currently running WebContents will be captured, and performance entries can only be
947
+ * captured for the current navigation of each.
948
+ */
949
+ getPerformanceStats: (options?: OpenFin_2.GetPerformanceStatsOptions) => Promise<OpenFin_2.PerformanceStatsResult>;
935
950
  }
936
951
 
937
952
  /**
@@ -1383,6 +1398,7 @@ declare type ApplicationOptions = LegacyWinOptionsInAppOptions & {
1383
1398
  declare type ApplicationPermissions = {
1384
1399
  setFileDownloadLocation: boolean;
1385
1400
  getFileDownloadLocation: boolean;
1401
+ getPerformanceStats: boolean;
1386
1402
  };
1387
1403
 
1388
1404
  /**
@@ -3188,23 +3204,6 @@ declare type ChildWindowCreatedEvent = ContentCreationRulesEvent & {
3188
3204
  childOptions: OpenFin_2.WindowOptions;
3189
3205
  };
3190
3206
 
3191
- /**
3192
- * End of Interop Client Events
3193
- */
3194
- /**
3195
- * Client-side handle for the chrome-browser feature.
3196
- *
3197
- * For extension integration to be active on a window, that window must be
3198
- * created with `chromeBrowser: true` in its window options.
3199
- *
3200
- * @remarks
3201
- * This namespace is intended for internal experimentation only. Enabling the
3202
- * `chromeBrowser` window option changes how the runtime manages content and standard
3203
- * OpenFin content behavior is not guaranteed.
3204
- *
3205
- * @internal
3206
- * @experimental This API is under active development and may change or be removed without notice.
3207
- */
3208
3207
  declare interface ChromeBrowser {
3209
3208
  /**
3210
3209
  * Extension action surface — observe and invoke installed Chrome extension actions.
@@ -4561,6 +4560,8 @@ declare type CopyPermissions = {
4561
4560
  };
4562
4561
  };
4563
4562
 
4563
+ declare type CorePerformanceEntry = Omit<PerformanceEntry, 'toJSON'>;
4564
+
4564
4565
  /**
4565
4566
  * Defines and applies rounded corners for a frameless window. **NOTE:** On macOS corner is not ellipse but circle rounded by the
4566
4567
  * average of _height_ and _width_.
@@ -4713,6 +4714,32 @@ declare type CreateLayoutOptions = {
4713
4714
  * @experimental
4714
4715
  */
4715
4716
  renderCustomHeaderControls?: (controlsElement: HTMLElement, context: HeaderControlsContext) => (() => void) | void;
4717
+ /**
4718
+ * Callback invoked once per tab after core has finished building the tab DOM.
4719
+ * Use this to inject custom controls (e.g. action icons) into view tab hats.
4720
+ *
4721
+ * Optionally return a cleanup function that will be called when the tab is destroyed.
4722
+ *
4723
+ * Custom controls are not serialized into snapshots since callbacks are not
4724
+ * serializable. The callback is re-invoked when tabs are recreated.
4725
+ *
4726
+ * **NOTE**: This feature is only supported with layout engine `'v2'` (GL2) and
4727
+ * `settings.tabOverflowBehavior: 'scroll'`.
4728
+ *
4729
+ * Optionally add the `lm_tab_custom_control` class to each injected control as a direct child of
4730
+ * `tabElement`. That opts the control into {@link LayoutAccessibilityOptions} keyboard
4731
+ * navigation (roving tabindex, arrow keys in DOM order, Enter/Space without switching tabs),
4732
+ * pointer isolation so clicks do not activate or close the tab (press-and-drag still
4733
+ * reorders/tears out tab, matching the close button), and default 20×20 flex sizing
4734
+ * (override using `--layout-tab-custom-control-size`).
4735
+ *
4736
+ * @param tabElement The `.lm_tab` DOM element for the view tab.
4737
+ * @param context Context object with DOM anchors for the tab.
4738
+ * @returns A callback to be called when the rendered elements need to be cleaned up.
4739
+ *
4740
+ * @experimental
4741
+ */
4742
+ renderCustomTabControls?: (tabElement: HTMLElement, context: CustomTabControlsContext) => (() => void) | void;
4716
4743
  /**
4717
4744
  * Accessibility options for the layout. Controls ARIA attributes and keyboard navigation.
4718
4745
  */
@@ -4802,6 +4829,19 @@ declare type CustomRequestHeaders = {
4802
4829
  headers: WebRequestHeader[];
4803
4830
  };
4804
4831
 
4832
+ /**
4833
+ * @interface @experimental
4834
+ */
4835
+ declare type CustomTabControlsContext = {
4836
+ viewIdentity: Identity_4;
4837
+ /** Anchor for inserting controls adjacent to the tab text. */
4838
+ titleElement: HTMLElement;
4839
+ /** Anchor for the trailing outer edge. Absent when the view is not closable. */
4840
+ closeElement?: HTMLElement;
4841
+ /** The favicon element. Hidden when favicons are disabled. */
4842
+ faviconElement?: HTMLElement;
4843
+ };
4844
+
4805
4845
  declare type DataChannelReadyState = RTCDataChannel['readyState'];
4806
4846
 
4807
4847
  export declare type DefaultColorChannelId = keyof typeof defaultColorChannels;
@@ -6584,6 +6624,32 @@ declare type GetLogRequestType = {
6584
6624
  name: string;
6585
6625
  };
6586
6626
 
6627
+ /**
6628
+ * End of Interop Client Events
6629
+ */
6630
+ /**
6631
+ * Performance Entry Types
6632
+ */
6633
+ declare type GetPerformanceStatsOptions = {
6634
+ /**
6635
+ * Optional filter for custom performance marks and measures.
6636
+ * When omitted, all custom marks and measures are collected.
6637
+ * When specified, only entries whose names match one of the filters are collected.
6638
+ * Strings match by substring; RegExp matches by test.
6639
+ */
6640
+ include?: (string | RegExp)[];
6641
+ /**
6642
+ * Include `resource` timing entries from each View / Frame / Window.
6643
+ * Defaults to `true`. Pass `false` to omit them.
6644
+ */
6645
+ resources?: boolean;
6646
+ /**
6647
+ * Whether to include hereio internal runtime metrics.
6648
+ * Defaults to `false`. Pass `true` to include.
6649
+ */
6650
+ browser?: boolean;
6651
+ };
6652
+
6587
6653
  declare type GetterCall<T> = ApiCall<void, T>;
6588
6654
 
6589
6655
  /**
@@ -10314,6 +10380,12 @@ declare type MutableViewOptions = {
10314
10380
  * Used by Workspace to store custom data. Overwriting or modifying this field may impact the functionality of Workspace
10315
10381
  */
10316
10382
  _internalWorkspaceData: any;
10383
+ /**
10384
+ * @internal
10385
+ * Used by Workspace to store platform-specific options (including `viewTab`). Overwriting or modifying this field may impact the functionality of Workspace.
10386
+ * Persisted on create, {@link View.View#updateOptions updateOptions}, snapshot, and {@link View.View#getOptions getOptions} — the same way windows persist `workspacePlatform`.
10387
+ */
10388
+ workspacePlatform?: WorkspacePlatformOptions;
10317
10389
  /**
10318
10390
  * {@inheritDoc ViewThrottling}
10319
10391
  *
@@ -11258,6 +11330,7 @@ declare namespace OpenFin_2 {
11258
11330
  ScreenCaptureBehavior,
11259
11331
  DomainSettingsPreloadScripts,
11260
11332
  PerDomainSettings,
11333
+ UrlRestoreSettings,
11261
11334
  CopyPermissions,
11262
11335
  PastePermissions,
11263
11336
  ClipboardPermissions,
@@ -11325,6 +11398,7 @@ declare namespace OpenFin_2 {
11325
11398
  LayoutManagerOverride,
11326
11399
  LayoutManager,
11327
11400
  HeaderControlsContext,
11401
+ CustomTabControlsContext,
11328
11402
  CreateLayoutOptions,
11329
11403
  MultiInstanceViewBehavior,
11330
11404
  LayoutAccessibilityOptions,
@@ -11398,6 +11472,12 @@ declare namespace OpenFin_2 {
11398
11472
  InteropClientEvent,
11399
11473
  ClientChangedContextGroup,
11400
11474
  InteropClientEvents,
11475
+ GetPerformanceStatsOptions,
11476
+ SerializedPerformanceOptions,
11477
+ CorePerformanceEntry,
11478
+ WebContentPerformanceStats,
11479
+ WindowPerformanceStats,
11480
+ PerformanceStatsResult,
11401
11481
  ChromeBrowser,
11402
11482
  LanguageInfo,
11403
11483
  PageTranslateOptions,
@@ -11684,6 +11764,12 @@ declare type PerDomainSettings = {
11684
11764
  * See also {@link AppLogLevel} for more information.
11685
11765
  */
11686
11766
  appLogLevel?: AppLogLevel;
11767
+ /**
11768
+ * When the live URL matches this rule, remap inbound
11769
+ * {@link View.ViewModule.navigate View.navigate} / {@link Window.WindowModule.navigate Window.navigate}
11770
+ * to {@link UrlRestoreSettings.url}.
11771
+ */
11772
+ urlRestore?: UrlRestoreSettings;
11687
11773
  };
11688
11774
 
11689
11775
  /**
@@ -11694,6 +11780,15 @@ declare type PerformanceReportEvent = Performance & BaseEvent_5 & {
11694
11780
  type: 'performance-report';
11695
11781
  };
11696
11782
 
11783
+ declare type PerformanceStatsResult = {
11784
+ mainWindow: WindowPerformanceStats;
11785
+ childWindows: WindowPerformanceStats[];
11786
+ browser?: {
11787
+ timeOrigin: number;
11788
+ entries: CorePerformanceEntry[];
11789
+ };
11790
+ };
11791
+
11697
11792
  /**
11698
11793
  * @interface
11699
11794
  *
@@ -13903,6 +13998,11 @@ declare type ProtocolMap = ExternalAdapterOnlyCallsMap & AnalyticsProtocolMap &
13903
13998
  response: OpenFin_2.MenuResult;
13904
13999
  };
13905
14000
  'close-tray-icon-popup-menu': IdentityCall<{}, void>;
14001
+ 'get-application-performance-stats': ApplicationIdentityCall<OpenFin_2.SerializedPerformanceOptions, OpenFin_2.PerformanceStatsResult> & {
14002
+ secure: true;
14003
+ namespace: 'Application';
14004
+ apiPath: '.getPerformanceStats';
14005
+ };
13906
14006
  'create-application': ApiCall<OpenFin_2.ApplicationCreationOptions, void>;
13907
14007
  'run-applications': ApiCall<{
13908
14008
  applications: Array<OpenFin_2.ManifestInfo>;
@@ -15288,6 +15388,16 @@ declare type SentMessage<Value> = Promise<Value> & {
15288
15388
  messageId: ReturnType<Environment['getNextMessageId']>;
15289
15389
  };
15290
15390
 
15391
+ declare type SerializedFilter = string | {
15392
+ type: 'regex';
15393
+ expression: string;
15394
+ flags?: string;
15395
+ };
15396
+
15397
+ declare type SerializedPerformanceOptions = Omit<GetPerformanceStatsOptions, 'include'> & {
15398
+ include?: SerializedFilter[];
15399
+ };
15400
+
15291
15401
  declare type ServeAssetOptions = AppAssetServeRequest | PathServeRequest;
15292
15402
 
15293
15403
  declare type ServedAssetInfo = {
@@ -18300,6 +18410,16 @@ declare type UrlChangedEvent = BaseUrlEvent & ({
18300
18410
  httpStatusText: string;
18301
18411
  });
18302
18412
 
18413
+ /**
18414
+ * Domain-settings policy that replaces a matched live URL with a configured start URI.
18415
+ */
18416
+ declare type UrlRestoreSettings = {
18417
+ /**
18418
+ * Absolute replacement URL. Full URL replace, not prefix rewrite.
18419
+ */
18420
+ url: string;
18421
+ };
18422
+
18303
18423
  /**
18304
18424
  * @interface
18305
18425
  */
@@ -19144,10 +19264,10 @@ declare type ViewTabAccessibilityOptions = {
19144
19264
  * Uses roving tabindex pattern - only one element focusable at a time.
19145
19265
  * @default ['active-tab', 'add-tab-button']
19146
19266
  */
19147
- tabNavigation?: ViewTabElements[];
19267
+ tabNavigation?: Exclude<ViewTabElements, 'active-tab-custom-control' | 'inactive-tab-custom-control'>[];
19148
19268
  /**
19149
19269
  * Controls which elements are navigable via Arrow keys.
19150
- * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button']
19270
+ * @default ['inactive-tab', 'active-tab', 'active-tab-close-button', 'inactive-tab-close-button', 'add-tab-button', 'active-tab-custom-control', 'inactive-tab-custom-control']
19151
19271
  */
19152
19272
  arrowNavigation?: ViewTabElements[];
19153
19273
  /**
@@ -19179,7 +19299,7 @@ declare type ViewTabAccessibilityOptions = {
19179
19299
  /**
19180
19300
  * Elements that can be navigated in view tabs.
19181
19301
  */
19182
- declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button';
19302
+ declare type ViewTabElements = 'active-tab' | 'inactive-tab' | 'active-tab-close-button' | 'inactive-tab-close-button' | 'add-tab-button' | 'active-tab-custom-control' | 'inactive-tab-custom-control';
19183
19303
 
19184
19304
  /**
19185
19305
  * View throttling state.
@@ -19233,6 +19353,22 @@ declare type VoidCall = ApiCall<void, void>;
19233
19353
 
19234
19354
  declare type WebContent = View_2 | _Window;
19235
19355
 
19356
+ declare type WebContentPerformanceStatBase = {
19357
+ name: string;
19358
+ entries: CorePerformanceEntry[];
19359
+ navigation: {
19360
+ historyLength: number;
19361
+ timeOrigin: number;
19362
+ };
19363
+ url: string;
19364
+ frames: WebContentPerformanceStats[];
19365
+ };
19366
+
19367
+ declare type WebContentPerformanceStats = WebContentPerformanceStatBase | {
19368
+ error: string;
19369
+ url: string;
19370
+ };
19371
+
19236
19372
  declare class WebContents<T extends BaseEvent> extends EmitterBase<T> {
19237
19373
  identity: OpenFin_2.Identity;
19238
19374
  entityType: 'window' | 'view';
@@ -21843,6 +21979,13 @@ declare type WindowOptionsChangedEvent = OpenFin_2.WindowEvents.WindowOptionsCha
21843
21979
  */
21844
21980
  declare type WindowOptionsChangedEvent_2 = OptionsChangedEvent;
21845
21981
 
21982
+ declare type WindowPerformanceStats = (WebContentPerformanceStatBase & {
21983
+ views: WebContentPerformanceStats[];
21984
+ }) | {
21985
+ error: string;
21986
+ url: string;
21987
+ };
21988
+
21846
21989
  declare type WindowPrintOptions = PrintOptions | ScreenshotPrintOptions | WindowViewsPrintOptions;
21847
21990
 
21848
21991
  /**
package/out/stub.js CHANGED
@@ -2518,6 +2518,47 @@ class Application extends EmitterBase {
2518
2518
  constructor(wire, identity) {
2519
2519
  super(wire, 'application', identity.uuid);
2520
2520
  this.identity = identity;
2521
+ /**
2522
+ * @experimental
2523
+ * Retrieves a performance snapshot for all Windows, Views and Frames in the Application.
2524
+ *
2525
+ * By default, all custom marks and measures are collected, along with navigation/paint entries
2526
+ * and resource timing (`resources` defaults to `true`). Pass `include` to restrict custom
2527
+ * marks/measures to matching names (string substring or RegExp). Pass `browser: true` to also
2528
+ * include hereio internal runtime metrics.
2529
+ *
2530
+ * See also [MDN | Performance Mark API](https://developer.mozilla.org/en-US/docs/Web/API/Performance/mark)
2531
+ *
2532
+ * Note - only currently running WebContents will be captured, and performance entries can only be
2533
+ * captured for the current navigation of each.
2534
+ */
2535
+ this.getPerformanceStats = async (options = {}) => {
2536
+ /**
2537
+ * Returns a filter object compatible with JSON.stringify (regexs stringify to `{}`).
2538
+ * @param include Array of strings or regexps.
2539
+ */
2540
+ const getSerializableFilterObject = (include) => {
2541
+ return include.map((filter) => {
2542
+ if (filter instanceof RegExp) {
2543
+ return {
2544
+ type: 'regex',
2545
+ expression: filter.source,
2546
+ flags: filter.flags
2547
+ };
2548
+ }
2549
+ return filter;
2550
+ });
2551
+ };
2552
+ const { include, resources = true, browser = false } = options;
2553
+ const result = await this.wire.sendAction('get-application-performance-stats', {
2554
+ ...this.identity,
2555
+ // Omit `include` when unspecified so the runtime collects all custom marks/measures.
2556
+ ...(include !== undefined ? { include: getSerializableFilterObject(include) } : {}),
2557
+ resources,
2558
+ browser
2559
+ });
2560
+ return result.payload.data;
2561
+ };
2521
2562
  this.window = new _Window(this.wire, {
2522
2563
  uuid: this.identity.uuid,
2523
2564
  name: this.identity.uuid
package/out/stub.mjs CHANGED
@@ -2514,6 +2514,47 @@ class Application extends EmitterBase {
2514
2514
  constructor(wire, identity) {
2515
2515
  super(wire, 'application', identity.uuid);
2516
2516
  this.identity = identity;
2517
+ /**
2518
+ * @experimental
2519
+ * Retrieves a performance snapshot for all Windows, Views and Frames in the Application.
2520
+ *
2521
+ * By default, all custom marks and measures are collected, along with navigation/paint entries
2522
+ * and resource timing (`resources` defaults to `true`). Pass `include` to restrict custom
2523
+ * marks/measures to matching names (string substring or RegExp). Pass `browser: true` to also
2524
+ * include hereio internal runtime metrics.
2525
+ *
2526
+ * See also [MDN | Performance Mark API](https://developer.mozilla.org/en-US/docs/Web/API/Performance/mark)
2527
+ *
2528
+ * Note - only currently running WebContents will be captured, and performance entries can only be
2529
+ * captured for the current navigation of each.
2530
+ */
2531
+ this.getPerformanceStats = async (options = {}) => {
2532
+ /**
2533
+ * Returns a filter object compatible with JSON.stringify (regexs stringify to `{}`).
2534
+ * @param include Array of strings or regexps.
2535
+ */
2536
+ const getSerializableFilterObject = (include) => {
2537
+ return include.map((filter) => {
2538
+ if (filter instanceof RegExp) {
2539
+ return {
2540
+ type: 'regex',
2541
+ expression: filter.source,
2542
+ flags: filter.flags
2543
+ };
2544
+ }
2545
+ return filter;
2546
+ });
2547
+ };
2548
+ const { include, resources = true, browser = false } = options;
2549
+ const result = await this.wire.sendAction('get-application-performance-stats', {
2550
+ ...this.identity,
2551
+ // Omit `include` when unspecified so the runtime collects all custom marks/measures.
2552
+ ...(include !== undefined ? { include: getSerializableFilterObject(include) } : {}),
2553
+ resources,
2554
+ browser
2555
+ });
2556
+ return result.payload.data;
2557
+ };
2517
2558
  this.window = new _Window(this.wire, {
2518
2559
  uuid: this.identity.uuid,
2519
2560
  name: this.identity.uuid
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openfin/core",
3
- "version": "46.100.67",
3
+ "version": "46.100.71",
4
4
  "description": "The core renderer entry point of OpenFin",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "main": "out/stub.js",