@openfin/core 40.102.1 → 40.103.1

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.
@@ -1,4 +1,5 @@
1
- import OpenFin from './mock';
1
+ // eslint-disable-next-line import/no-named-as-default
2
+ import OpenFin from './stub';
2
3
 
3
4
  export = OpenFin;
4
5
  export as namespace OpenFin;
@@ -3221,6 +3221,40 @@ declare class Clipboard_2 extends Base {
3221
3221
  getAvailableFormats(type?: OpenFin_2.ClipboardSelectionType): Promise<Array<string>>;
3222
3222
  }
3223
3223
 
3224
+ /**
3225
+ * Generated when a copy operation is blocked through {@link OpenFin.DomainSettings}.
3226
+ * @interface
3227
+ */
3228
+ declare type ClipboardCopyBlockedEvent = NamedEvent & {
3229
+ type: 'clipboard-copy-blocked';
3230
+ /**
3231
+ * URL of the Window or View that generated the event.
3232
+ */
3233
+ url: string;
3234
+ reason: CopyBlockedEventReason;
3235
+ };
3236
+
3237
+ /**
3238
+ * Generated when a paste operation is blocked through {@link OpenFin.DomainSettings}.
3239
+ * @interface
3240
+ */
3241
+ declare type ClipboardPasteBlockedEvent = NamedEvent & {
3242
+ type: 'clipboard-paste-blocked';
3243
+ /**
3244
+ * URL of the Window or View that generated the event.
3245
+ */
3246
+ url: string;
3247
+ reason: PasteBlockedEventReason;
3248
+ };
3249
+
3250
+ /**
3251
+ * Clipboard Permissions
3252
+ */
3253
+ declare type ClipboardPermissions = {
3254
+ copy?: CopyPermissions;
3255
+ paste?: PastePermissions;
3256
+ };
3257
+
3224
3258
  /**
3225
3259
  * The type of clipboard to write to, can be 'clipboard' or 'selection'.
3226
3260
  * Defaults to 'clipboard'. Use 'selection' for linux only.
@@ -3995,6 +4029,40 @@ declare type CookieOption = {
3995
4029
  name: string;
3996
4030
  };
3997
4031
 
4032
+ /**
4033
+ * Reasons for a copy operation being blocked
4034
+ *
4035
+ * 'disabled': Copy operation is disabled through domain-based permissions.
4036
+ */
4037
+ declare type CopyBlockedEventReason = 'disabled';
4038
+
4039
+ /**
4040
+ * Control copy operations for a matched URL.
4041
+ */
4042
+ declare type CopyPermissions = {
4043
+ /**
4044
+ * @defaultValue 'allowed'
4045
+ *
4046
+ * Controls the behavior for copy operations for a matched URL.
4047
+ *
4048
+ * allow: Enables all copy operations.
4049
+ * block: Disables all copy operations.
4050
+ * protect: Protects any copied content. Only URLs that have set paste.behavior: 'all-content' will be allowed to paste this content.
4051
+ */
4052
+ behavior: 'allow' | 'block' | 'protect';
4053
+ /**
4054
+ * Additional copy operation options
4055
+ */
4056
+ options?: {
4057
+ /**
4058
+ * @defaultValue ''
4059
+ *
4060
+ * When setting behavior = 'protected' , this string will be pasted to other applications that do not have a matching URL instead of the original content.
4061
+ */
4062
+ replacementText: string;
4063
+ };
4064
+ };
4065
+
3998
4066
  /**
3999
4067
  * Defines and applies rounded corners for a frameless window. **NOTE:** On macOS corner is not ellipse but circle rounded by the
4000
4068
  * average of _height_ and _width_.
@@ -4601,6 +4669,15 @@ declare class EmitterBase<EmitterEvent extends BaseEvent, EmitterEventType exten
4601
4669
  eventNames: () => (string | symbol)[];
4602
4670
  /* Excluded from this release type: emit */
4603
4671
  private hasEmitter;
4672
+ /**
4673
+ * Cleans up after removal of a listener, e.g. deleting any lingering deregistration handlers for a
4674
+ * `once` subscription.
4675
+ *
4676
+ * @remarks Implementing this as a `removeListener` handler ensures that direct removal of a listener
4677
+ * on the base emitter will not leak additional core handlers. We could do this in the forwarding method,
4678
+ * which would involve less "magic," but would be more-vulnerable to accidental re-introduction of a leak.
4679
+ */
4680
+ private cleanUpRemovedListener;
4604
4681
  private getOrCreateEmitter;
4605
4682
  listeners: (type: string | symbol) => Function[];
4606
4683
  listenerCount: (type: string | symbol) => number;
@@ -4841,7 +4918,7 @@ declare type Event_4 = (WebContentsEvents.Event<'view'> & {
4841
4918
  */
4842
4919
  declare type Event_5<Topic extends string> = {
4843
4920
  topic: Topic;
4844
- } & (BlurredEvent | CertificateSelectionShownEvent | CrashedEvent_2 | DidChangeThemeColorEvent | FocusedEvent | NavigationRejectedEvent | UrlChangedEvent | DidFailLoadEvent | DidFinishLoadEvent | DidStartLoadingEvent | PageFaviconUpdatedEvent | PageTitleUpdatedEvent | ResourceLoadFailedEvent | ResourceResponseReceivedEvent | ChildContentBlockedEvent | ChildContentOpenedInBrowserEvent | ChildViewCreatedEvent | ChildWindowCreatedEvent | FileDownloadStartedEvent | FileDownloadProgressEvent | FileDownloadCompletedEvent | FoundInPageEvent | CertificateErrorEvent | ContentBlockedEvent | WillRedirectEvent);
4921
+ } & (BlurredEvent | CertificateSelectionShownEvent | CrashedEvent_2 | DidChangeThemeColorEvent | FocusedEvent | NavigationRejectedEvent | UrlChangedEvent | DidFailLoadEvent | DidFinishLoadEvent | DidStartLoadingEvent | PageFaviconUpdatedEvent | PageTitleUpdatedEvent | ResourceLoadFailedEvent | ResourceResponseReceivedEvent | ChildContentBlockedEvent | ChildContentOpenedInBrowserEvent | ChildViewCreatedEvent | ChildWindowCreatedEvent | FileDownloadStartedEvent | FileDownloadProgressEvent | FileDownloadCompletedEvent | FoundInPageEvent | CertificateErrorEvent | ContentBlockedEvent | WillRedirectEvent | ClipboardCopyBlockedEvent | ClipboardPasteBlockedEvent);
4845
4922
 
4846
4923
  /**
4847
4924
  * [Union](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types) containing every possible event that can be emitted by a {@link Window}. Events are
@@ -5598,11 +5675,8 @@ declare type FrameEventType = EventType_5;
5598
5675
  /**
5599
5676
  * @interface
5600
5677
  */
5601
- declare type FrameInfo = {
5602
- name: string;
5603
- uuid: string;
5678
+ declare type FrameInfo = EntityInfo & {
5604
5679
  url: string;
5605
- entityType: EntityType_4;
5606
5680
  parent: Identity_4;
5607
5681
  };
5608
5682
 
@@ -9318,6 +9392,8 @@ declare namespace OpenFin_2 {
9318
9392
  ClientConnectionPayload,
9319
9393
  EntityInfo,
9320
9394
  EntityType_4 as EntityType,
9395
+ ScreenCaptureState,
9396
+ ScreenCapturePermission,
9321
9397
  Bounds,
9322
9398
  WindowBounds,
9323
9399
  GetBoundsOptions,
@@ -9538,7 +9614,11 @@ declare namespace OpenFin_2 {
9538
9614
  StructuredContentBehavior,
9539
9615
  StructuredContentPermissions,
9540
9616
  ContentPermission,
9617
+ ScreenCaptureBehavior,
9541
9618
  PerDomainSettings,
9619
+ CopyPermissions,
9620
+ PastePermissions,
9621
+ ClipboardPermissions,
9542
9622
  DomainSettingsRule,
9543
9623
  FileDownloadBehavior,
9544
9624
  FileDownloadBehaviorNames,
@@ -9719,6 +9799,29 @@ declare type PageTitleUpdatedEvent = NamedEvent & {
9719
9799
  title: string;
9720
9800
  };
9721
9801
 
9802
+ /**
9803
+ * Reasons for a paste operation being blocked
9804
+ *
9805
+ * 'invalid-data': Copy protection is enabled and the pasted data is invalid.
9806
+ * 'disabled': Copy protection is turned on and the current URL for this WebContent has been disabled through domain-based settings from accessing the copied data.
9807
+ */
9808
+ declare type PasteBlockedEventReason = 'invalid-data' | 'disabled';
9809
+
9810
+ /**
9811
+ * Control copy operations for a matched URL.
9812
+ */
9813
+ declare type PastePermissions = {
9814
+ /**
9815
+ * @defaultValue 'non-protected-content'
9816
+ *
9817
+ * Controls the behavior for paste operations for a matched URL.
9818
+ *
9819
+ * non-protected-content: All matching URLs will be able to paste content copied from non-protected URLs.
9820
+ * all-content: All matching URLs will be able to paste content copied from both protected (copy.behavior = 'protect') and on-protected (copy.behavior = 'allow') URLs.
9821
+ */
9822
+ behavior: 'non-protected-content' | 'all-content';
9823
+ };
9824
+
9722
9825
  declare type PathServeRequest = ServeRequest & {
9723
9826
  path: string;
9724
9827
  };
@@ -9862,6 +9965,16 @@ declare type PerDomainSettings = {
9862
9965
  * {@inheritdoc ChromiumPolicies}
9863
9966
  */
9864
9967
  chromiumPolicies?: ChromiumPolicies;
9968
+ contentProtection?: {
9969
+ /**
9970
+ * {@inheritdoc ScreenCaptureBehavior}
9971
+ */
9972
+ screenCapture: ScreenCaptureBehavior;
9973
+ /**
9974
+ * {@inheritdoc ClipboardPermissions}
9975
+ */
9976
+ clipboard?: ClipboardPermissions;
9977
+ };
9865
9978
  };
9866
9979
 
9867
9980
  /**
@@ -12512,6 +12625,10 @@ declare interface ProtocolMap extends ProtocolMapBase {
12512
12625
  };
12513
12626
  response: OpenFin_2.PopupResult;
12514
12627
  };
12628
+ 'get-screen-capture-permissions': {
12629
+ request: OpenFin_2.Identity;
12630
+ response: OpenFin_2.ScreenCapturePermission;
12631
+ };
12515
12632
  'render-overlay': {
12516
12633
  request: {
12517
12634
  bounds: OpenFin_2.Bounds;
@@ -13041,6 +13158,31 @@ declare type RvmLaunchOptions = {
13041
13158
  subscribe?: (launch: LaunchEmitter) => void;
13042
13159
  };
13043
13160
 
13161
+ /**
13162
+ * @interface
13163
+ * Controls whether this content should be allowed or blocked when capturing the screen.
13164
+ */
13165
+ declare type ScreenCaptureBehavior = 'allow' | 'block';
13166
+
13167
+ /**
13168
+ * Returned by getScreenCapturePermission. Includes sub-entity permission states and the resulting permission.
13169
+ * @interface
13170
+ */
13171
+ declare type ScreenCapturePermission = {
13172
+ permission: ScreenCaptureBehavior;
13173
+ permissions: ScreenCaptureState[];
13174
+ };
13175
+
13176
+ /**
13177
+ * screenCapture state for a given entity as defined in domain settings.
13178
+ * @interface
13179
+ */
13180
+ declare type ScreenCaptureState = {
13181
+ info: EntityInfo;
13182
+ behavior: ScreenCaptureBehavior;
13183
+ url: string;
13184
+ };
13185
+
13044
13186
  /**
13045
13187
  * @interface
13046
13188
  */
@@ -17286,6 +17428,19 @@ declare class WebContents<T extends BaseEvent> extends EmitterBase<T> {
17286
17428
  * {@link OpenFin.WebContentsEvents event namespace}.
17287
17429
  */
17288
17430
  showPopupWindow(options: OpenFin_2.PopupOptions): Promise<OpenFin_2.PopupResult>;
17431
+ /**
17432
+ *
17433
+ * Get the screen capture permission for this content.
17434
+ *
17435
+ * @example
17436
+ * ```js
17437
+ * const { permission } = await fin.me.getScreenCapturePermission();
17438
+ *
17439
+ * console.log(`This content is currently ${permission}ed in screen captures.`);
17440
+ *
17441
+ * ```
17442
+ */
17443
+ getScreenCapturePermission(): Promise<OpenFin_2.ScreenCapturePermission>;
17289
17444
  }
17290
17445
 
17291
17446
  /**
@@ -17324,6 +17479,8 @@ declare namespace WebContentsEvents {
17324
17479
  FileDownloadProgressEvent,
17325
17480
  FileDownloadCompletedEvent,
17326
17481
  ContentBlockedEvent,
17482
+ ClipboardCopyBlockedEvent,
17483
+ ClipboardPasteBlockedEvent,
17327
17484
  Event_5 as Event,
17328
17485
  WebContentsEvent,
17329
17486
  WillPropagateWebContentsEvent,
@@ -3221,6 +3221,40 @@ declare class Clipboard_2 extends Base {
3221
3221
  getAvailableFormats(type?: OpenFin_2.ClipboardSelectionType): Promise<Array<string>>;
3222
3222
  }
3223
3223
 
3224
+ /**
3225
+ * Generated when a copy operation is blocked through {@link OpenFin.DomainSettings}.
3226
+ * @interface
3227
+ */
3228
+ declare type ClipboardCopyBlockedEvent = NamedEvent & {
3229
+ type: 'clipboard-copy-blocked';
3230
+ /**
3231
+ * URL of the Window or View that generated the event.
3232
+ */
3233
+ url: string;
3234
+ reason: CopyBlockedEventReason;
3235
+ };
3236
+
3237
+ /**
3238
+ * Generated when a paste operation is blocked through {@link OpenFin.DomainSettings}.
3239
+ * @interface
3240
+ */
3241
+ declare type ClipboardPasteBlockedEvent = NamedEvent & {
3242
+ type: 'clipboard-paste-blocked';
3243
+ /**
3244
+ * URL of the Window or View that generated the event.
3245
+ */
3246
+ url: string;
3247
+ reason: PasteBlockedEventReason;
3248
+ };
3249
+
3250
+ /**
3251
+ * Clipboard Permissions
3252
+ */
3253
+ declare type ClipboardPermissions = {
3254
+ copy?: CopyPermissions;
3255
+ paste?: PastePermissions;
3256
+ };
3257
+
3224
3258
  /**
3225
3259
  * The type of clipboard to write to, can be 'clipboard' or 'selection'.
3226
3260
  * Defaults to 'clipboard'. Use 'selection' for linux only.
@@ -3995,6 +4029,40 @@ declare type CookieOption = {
3995
4029
  name: string;
3996
4030
  };
3997
4031
 
4032
+ /**
4033
+ * Reasons for a copy operation being blocked
4034
+ *
4035
+ * 'disabled': Copy operation is disabled through domain-based permissions.
4036
+ */
4037
+ declare type CopyBlockedEventReason = 'disabled';
4038
+
4039
+ /**
4040
+ * Control copy operations for a matched URL.
4041
+ */
4042
+ declare type CopyPermissions = {
4043
+ /**
4044
+ * @defaultValue 'allowed'
4045
+ *
4046
+ * Controls the behavior for copy operations for a matched URL.
4047
+ *
4048
+ * allow: Enables all copy operations.
4049
+ * block: Disables all copy operations.
4050
+ * protect: Protects any copied content. Only URLs that have set paste.behavior: 'all-content' will be allowed to paste this content.
4051
+ */
4052
+ behavior: 'allow' | 'block' | 'protect';
4053
+ /**
4054
+ * Additional copy operation options
4055
+ */
4056
+ options?: {
4057
+ /**
4058
+ * @defaultValue ''
4059
+ *
4060
+ * When setting behavior = 'protected' , this string will be pasted to other applications that do not have a matching URL instead of the original content.
4061
+ */
4062
+ replacementText: string;
4063
+ };
4064
+ };
4065
+
3998
4066
  /**
3999
4067
  * Defines and applies rounded corners for a frameless window. **NOTE:** On macOS corner is not ellipse but circle rounded by the
4000
4068
  * average of _height_ and _width_.
@@ -4601,6 +4669,15 @@ declare class EmitterBase<EmitterEvent extends BaseEvent, EmitterEventType exten
4601
4669
  eventNames: () => (string | symbol)[];
4602
4670
  /* Excluded from this release type: emit */
4603
4671
  private hasEmitter;
4672
+ /**
4673
+ * Cleans up after removal of a listener, e.g. deleting any lingering deregistration handlers for a
4674
+ * `once` subscription.
4675
+ *
4676
+ * @remarks Implementing this as a `removeListener` handler ensures that direct removal of a listener
4677
+ * on the base emitter will not leak additional core handlers. We could do this in the forwarding method,
4678
+ * which would involve less "magic," but would be more-vulnerable to accidental re-introduction of a leak.
4679
+ */
4680
+ private cleanUpRemovedListener;
4604
4681
  private getOrCreateEmitter;
4605
4682
  listeners: (type: string | symbol) => Function[];
4606
4683
  listenerCount: (type: string | symbol) => number;
@@ -4841,7 +4918,7 @@ declare type Event_4 = (WebContentsEvents.Event<'view'> & {
4841
4918
  */
4842
4919
  declare type Event_5<Topic extends string> = {
4843
4920
  topic: Topic;
4844
- } & (BlurredEvent | CertificateSelectionShownEvent | CrashedEvent_2 | DidChangeThemeColorEvent | FocusedEvent | NavigationRejectedEvent | UrlChangedEvent | DidFailLoadEvent | DidFinishLoadEvent | DidStartLoadingEvent | PageFaviconUpdatedEvent | PageTitleUpdatedEvent | ResourceLoadFailedEvent | ResourceResponseReceivedEvent | ChildContentBlockedEvent | ChildContentOpenedInBrowserEvent | ChildViewCreatedEvent | ChildWindowCreatedEvent | FileDownloadStartedEvent | FileDownloadProgressEvent | FileDownloadCompletedEvent | FoundInPageEvent | CertificateErrorEvent | ContentBlockedEvent | WillRedirectEvent);
4921
+ } & (BlurredEvent | CertificateSelectionShownEvent | CrashedEvent_2 | DidChangeThemeColorEvent | FocusedEvent | NavigationRejectedEvent | UrlChangedEvent | DidFailLoadEvent | DidFinishLoadEvent | DidStartLoadingEvent | PageFaviconUpdatedEvent | PageTitleUpdatedEvent | ResourceLoadFailedEvent | ResourceResponseReceivedEvent | ChildContentBlockedEvent | ChildContentOpenedInBrowserEvent | ChildViewCreatedEvent | ChildWindowCreatedEvent | FileDownloadStartedEvent | FileDownloadProgressEvent | FileDownloadCompletedEvent | FoundInPageEvent | CertificateErrorEvent | ContentBlockedEvent | WillRedirectEvent | ClipboardCopyBlockedEvent | ClipboardPasteBlockedEvent);
4845
4922
 
4846
4923
  /**
4847
4924
  * [Union](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types) containing every possible event that can be emitted by a {@link Window}. Events are
@@ -5598,11 +5675,8 @@ declare type FrameEventType = EventType_5;
5598
5675
  /**
5599
5676
  * @interface
5600
5677
  */
5601
- declare type FrameInfo = {
5602
- name: string;
5603
- uuid: string;
5678
+ declare type FrameInfo = EntityInfo & {
5604
5679
  url: string;
5605
- entityType: EntityType_4;
5606
5680
  parent: Identity_4;
5607
5681
  };
5608
5682
 
@@ -9318,6 +9392,8 @@ declare namespace OpenFin_2 {
9318
9392
  ClientConnectionPayload,
9319
9393
  EntityInfo,
9320
9394
  EntityType_4 as EntityType,
9395
+ ScreenCaptureState,
9396
+ ScreenCapturePermission,
9321
9397
  Bounds,
9322
9398
  WindowBounds,
9323
9399
  GetBoundsOptions,
@@ -9538,7 +9614,11 @@ declare namespace OpenFin_2 {
9538
9614
  StructuredContentBehavior,
9539
9615
  StructuredContentPermissions,
9540
9616
  ContentPermission,
9617
+ ScreenCaptureBehavior,
9541
9618
  PerDomainSettings,
9619
+ CopyPermissions,
9620
+ PastePermissions,
9621
+ ClipboardPermissions,
9542
9622
  DomainSettingsRule,
9543
9623
  FileDownloadBehavior,
9544
9624
  FileDownloadBehaviorNames,
@@ -9719,6 +9799,29 @@ declare type PageTitleUpdatedEvent = NamedEvent & {
9719
9799
  title: string;
9720
9800
  };
9721
9801
 
9802
+ /**
9803
+ * Reasons for a paste operation being blocked
9804
+ *
9805
+ * 'invalid-data': Copy protection is enabled and the pasted data is invalid.
9806
+ * 'disabled': Copy protection is turned on and the current URL for this WebContent has been disabled through domain-based settings from accessing the copied data.
9807
+ */
9808
+ declare type PasteBlockedEventReason = 'invalid-data' | 'disabled';
9809
+
9810
+ /**
9811
+ * Control copy operations for a matched URL.
9812
+ */
9813
+ declare type PastePermissions = {
9814
+ /**
9815
+ * @defaultValue 'non-protected-content'
9816
+ *
9817
+ * Controls the behavior for paste operations for a matched URL.
9818
+ *
9819
+ * non-protected-content: All matching URLs will be able to paste content copied from non-protected URLs.
9820
+ * all-content: All matching URLs will be able to paste content copied from both protected (copy.behavior = 'protect') and on-protected (copy.behavior = 'allow') URLs.
9821
+ */
9822
+ behavior: 'non-protected-content' | 'all-content';
9823
+ };
9824
+
9722
9825
  declare type PathServeRequest = ServeRequest & {
9723
9826
  path: string;
9724
9827
  };
@@ -9862,6 +9965,16 @@ declare type PerDomainSettings = {
9862
9965
  * {@inheritdoc ChromiumPolicies}
9863
9966
  */
9864
9967
  chromiumPolicies?: ChromiumPolicies;
9968
+ contentProtection?: {
9969
+ /**
9970
+ * {@inheritdoc ScreenCaptureBehavior}
9971
+ */
9972
+ screenCapture: ScreenCaptureBehavior;
9973
+ /**
9974
+ * {@inheritdoc ClipboardPermissions}
9975
+ */
9976
+ clipboard?: ClipboardPermissions;
9977
+ };
9865
9978
  };
9866
9979
 
9867
9980
  /**
@@ -12512,6 +12625,10 @@ declare interface ProtocolMap extends ProtocolMapBase {
12512
12625
  };
12513
12626
  response: OpenFin_2.PopupResult;
12514
12627
  };
12628
+ 'get-screen-capture-permissions': {
12629
+ request: OpenFin_2.Identity;
12630
+ response: OpenFin_2.ScreenCapturePermission;
12631
+ };
12515
12632
  'render-overlay': {
12516
12633
  request: {
12517
12634
  bounds: OpenFin_2.Bounds;
@@ -13041,6 +13158,31 @@ declare type RvmLaunchOptions = {
13041
13158
  subscribe?: (launch: LaunchEmitter) => void;
13042
13159
  };
13043
13160
 
13161
+ /**
13162
+ * @interface
13163
+ * Controls whether this content should be allowed or blocked when capturing the screen.
13164
+ */
13165
+ declare type ScreenCaptureBehavior = 'allow' | 'block';
13166
+
13167
+ /**
13168
+ * Returned by getScreenCapturePermission. Includes sub-entity permission states and the resulting permission.
13169
+ * @interface
13170
+ */
13171
+ declare type ScreenCapturePermission = {
13172
+ permission: ScreenCaptureBehavior;
13173
+ permissions: ScreenCaptureState[];
13174
+ };
13175
+
13176
+ /**
13177
+ * screenCapture state for a given entity as defined in domain settings.
13178
+ * @interface
13179
+ */
13180
+ declare type ScreenCaptureState = {
13181
+ info: EntityInfo;
13182
+ behavior: ScreenCaptureBehavior;
13183
+ url: string;
13184
+ };
13185
+
13044
13186
  /**
13045
13187
  * @interface
13046
13188
  */
@@ -17286,6 +17428,19 @@ declare class WebContents<T extends BaseEvent> extends EmitterBase<T> {
17286
17428
  * {@link OpenFin.WebContentsEvents event namespace}.
17287
17429
  */
17288
17430
  showPopupWindow(options: OpenFin_2.PopupOptions): Promise<OpenFin_2.PopupResult>;
17431
+ /**
17432
+ *
17433
+ * Get the screen capture permission for this content.
17434
+ *
17435
+ * @example
17436
+ * ```js
17437
+ * const { permission } = await fin.me.getScreenCapturePermission();
17438
+ *
17439
+ * console.log(`This content is currently ${permission}ed in screen captures.`);
17440
+ *
17441
+ * ```
17442
+ */
17443
+ getScreenCapturePermission(): Promise<OpenFin_2.ScreenCapturePermission>;
17289
17444
  }
17290
17445
 
17291
17446
  /**
@@ -17324,6 +17479,8 @@ declare namespace WebContentsEvents {
17324
17479
  FileDownloadProgressEvent,
17325
17480
  FileDownloadCompletedEvent,
17326
17481
  ContentBlockedEvent,
17482
+ ClipboardCopyBlockedEvent,
17483
+ ClipboardPasteBlockedEvent,
17327
17484
  Event_5 as Event,
17328
17485
  WebContentsEvent,
17329
17486
  WillPropagateWebContentsEvent,
@@ -3221,6 +3221,40 @@ declare class Clipboard_2 extends Base {
3221
3221
  getAvailableFormats(type?: OpenFin_2.ClipboardSelectionType): Promise<Array<string>>;
3222
3222
  }
3223
3223
 
3224
+ /**
3225
+ * Generated when a copy operation is blocked through {@link OpenFin.DomainSettings}.
3226
+ * @interface
3227
+ */
3228
+ declare type ClipboardCopyBlockedEvent = NamedEvent & {
3229
+ type: 'clipboard-copy-blocked';
3230
+ /**
3231
+ * URL of the Window or View that generated the event.
3232
+ */
3233
+ url: string;
3234
+ reason: CopyBlockedEventReason;
3235
+ };
3236
+
3237
+ /**
3238
+ * Generated when a paste operation is blocked through {@link OpenFin.DomainSettings}.
3239
+ * @interface
3240
+ */
3241
+ declare type ClipboardPasteBlockedEvent = NamedEvent & {
3242
+ type: 'clipboard-paste-blocked';
3243
+ /**
3244
+ * URL of the Window or View that generated the event.
3245
+ */
3246
+ url: string;
3247
+ reason: PasteBlockedEventReason;
3248
+ };
3249
+
3250
+ /**
3251
+ * Clipboard Permissions
3252
+ */
3253
+ declare type ClipboardPermissions = {
3254
+ copy?: CopyPermissions;
3255
+ paste?: PastePermissions;
3256
+ };
3257
+
3224
3258
  /**
3225
3259
  * The type of clipboard to write to, can be 'clipboard' or 'selection'.
3226
3260
  * Defaults to 'clipboard'. Use 'selection' for linux only.
@@ -3995,6 +4029,40 @@ declare type CookieOption = {
3995
4029
  name: string;
3996
4030
  };
3997
4031
 
4032
+ /**
4033
+ * Reasons for a copy operation being blocked
4034
+ *
4035
+ * 'disabled': Copy operation is disabled through domain-based permissions.
4036
+ */
4037
+ declare type CopyBlockedEventReason = 'disabled';
4038
+
4039
+ /**
4040
+ * Control copy operations for a matched URL.
4041
+ */
4042
+ declare type CopyPermissions = {
4043
+ /**
4044
+ * @defaultValue 'allowed'
4045
+ *
4046
+ * Controls the behavior for copy operations for a matched URL.
4047
+ *
4048
+ * allow: Enables all copy operations.
4049
+ * block: Disables all copy operations.
4050
+ * protect: Protects any copied content. Only URLs that have set paste.behavior: 'all-content' will be allowed to paste this content.
4051
+ */
4052
+ behavior: 'allow' | 'block' | 'protect';
4053
+ /**
4054
+ * Additional copy operation options
4055
+ */
4056
+ options?: {
4057
+ /**
4058
+ * @defaultValue ''
4059
+ *
4060
+ * When setting behavior = 'protected' , this string will be pasted to other applications that do not have a matching URL instead of the original content.
4061
+ */
4062
+ replacementText: string;
4063
+ };
4064
+ };
4065
+
3998
4066
  /**
3999
4067
  * Defines and applies rounded corners for a frameless window. **NOTE:** On macOS corner is not ellipse but circle rounded by the
4000
4068
  * average of _height_ and _width_.
@@ -4601,6 +4669,15 @@ declare class EmitterBase<EmitterEvent extends BaseEvent, EmitterEventType exten
4601
4669
  eventNames: () => (string | symbol)[];
4602
4670
  /* Excluded from this release type: emit */
4603
4671
  private hasEmitter;
4672
+ /**
4673
+ * Cleans up after removal of a listener, e.g. deleting any lingering deregistration handlers for a
4674
+ * `once` subscription.
4675
+ *
4676
+ * @remarks Implementing this as a `removeListener` handler ensures that direct removal of a listener
4677
+ * on the base emitter will not leak additional core handlers. We could do this in the forwarding method,
4678
+ * which would involve less "magic," but would be more-vulnerable to accidental re-introduction of a leak.
4679
+ */
4680
+ private cleanUpRemovedListener;
4604
4681
  private getOrCreateEmitter;
4605
4682
  listeners: (type: string | symbol) => Function[];
4606
4683
  listenerCount: (type: string | symbol) => number;
@@ -4841,7 +4918,7 @@ declare type Event_4 = (WebContentsEvents.Event<'view'> & {
4841
4918
  */
4842
4919
  declare type Event_5<Topic extends string> = {
4843
4920
  topic: Topic;
4844
- } & (BlurredEvent | CertificateSelectionShownEvent | CrashedEvent_2 | DidChangeThemeColorEvent | FocusedEvent | NavigationRejectedEvent | UrlChangedEvent | DidFailLoadEvent | DidFinishLoadEvent | DidStartLoadingEvent | PageFaviconUpdatedEvent | PageTitleUpdatedEvent | ResourceLoadFailedEvent | ResourceResponseReceivedEvent | ChildContentBlockedEvent | ChildContentOpenedInBrowserEvent | ChildViewCreatedEvent | ChildWindowCreatedEvent | FileDownloadStartedEvent | FileDownloadProgressEvent | FileDownloadCompletedEvent | FoundInPageEvent | CertificateErrorEvent | ContentBlockedEvent | WillRedirectEvent);
4921
+ } & (BlurredEvent | CertificateSelectionShownEvent | CrashedEvent_2 | DidChangeThemeColorEvent | FocusedEvent | NavigationRejectedEvent | UrlChangedEvent | DidFailLoadEvent | DidFinishLoadEvent | DidStartLoadingEvent | PageFaviconUpdatedEvent | PageTitleUpdatedEvent | ResourceLoadFailedEvent | ResourceResponseReceivedEvent | ChildContentBlockedEvent | ChildContentOpenedInBrowserEvent | ChildViewCreatedEvent | ChildWindowCreatedEvent | FileDownloadStartedEvent | FileDownloadProgressEvent | FileDownloadCompletedEvent | FoundInPageEvent | CertificateErrorEvent | ContentBlockedEvent | WillRedirectEvent | ClipboardCopyBlockedEvent | ClipboardPasteBlockedEvent);
4845
4922
 
4846
4923
  /**
4847
4924
  * [Union](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types) containing every possible event that can be emitted by a {@link Window}. Events are
@@ -5598,11 +5675,8 @@ declare type FrameEventType = EventType_5;
5598
5675
  /**
5599
5676
  * @interface
5600
5677
  */
5601
- declare type FrameInfo = {
5602
- name: string;
5603
- uuid: string;
5678
+ declare type FrameInfo = EntityInfo & {
5604
5679
  url: string;
5605
- entityType: EntityType_4;
5606
5680
  parent: Identity_4;
5607
5681
  };
5608
5682
 
@@ -9318,6 +9392,8 @@ declare namespace OpenFin_2 {
9318
9392
  ClientConnectionPayload,
9319
9393
  EntityInfo,
9320
9394
  EntityType_4 as EntityType,
9395
+ ScreenCaptureState,
9396
+ ScreenCapturePermission,
9321
9397
  Bounds,
9322
9398
  WindowBounds,
9323
9399
  GetBoundsOptions,
@@ -9538,7 +9614,11 @@ declare namespace OpenFin_2 {
9538
9614
  StructuredContentBehavior,
9539
9615
  StructuredContentPermissions,
9540
9616
  ContentPermission,
9617
+ ScreenCaptureBehavior,
9541
9618
  PerDomainSettings,
9619
+ CopyPermissions,
9620
+ PastePermissions,
9621
+ ClipboardPermissions,
9542
9622
  DomainSettingsRule,
9543
9623
  FileDownloadBehavior,
9544
9624
  FileDownloadBehaviorNames,
@@ -9719,6 +9799,29 @@ declare type PageTitleUpdatedEvent = NamedEvent & {
9719
9799
  title: string;
9720
9800
  };
9721
9801
 
9802
+ /**
9803
+ * Reasons for a paste operation being blocked
9804
+ *
9805
+ * 'invalid-data': Copy protection is enabled and the pasted data is invalid.
9806
+ * 'disabled': Copy protection is turned on and the current URL for this WebContent has been disabled through domain-based settings from accessing the copied data.
9807
+ */
9808
+ declare type PasteBlockedEventReason = 'invalid-data' | 'disabled';
9809
+
9810
+ /**
9811
+ * Control copy operations for a matched URL.
9812
+ */
9813
+ declare type PastePermissions = {
9814
+ /**
9815
+ * @defaultValue 'non-protected-content'
9816
+ *
9817
+ * Controls the behavior for paste operations for a matched URL.
9818
+ *
9819
+ * non-protected-content: All matching URLs will be able to paste content copied from non-protected URLs.
9820
+ * all-content: All matching URLs will be able to paste content copied from both protected (copy.behavior = 'protect') and on-protected (copy.behavior = 'allow') URLs.
9821
+ */
9822
+ behavior: 'non-protected-content' | 'all-content';
9823
+ };
9824
+
9722
9825
  declare type PathServeRequest = ServeRequest & {
9723
9826
  path: string;
9724
9827
  };
@@ -9862,6 +9965,16 @@ declare type PerDomainSettings = {
9862
9965
  * {@inheritdoc ChromiumPolicies}
9863
9966
  */
9864
9967
  chromiumPolicies?: ChromiumPolicies;
9968
+ contentProtection?: {
9969
+ /**
9970
+ * {@inheritdoc ScreenCaptureBehavior}
9971
+ */
9972
+ screenCapture: ScreenCaptureBehavior;
9973
+ /**
9974
+ * {@inheritdoc ClipboardPermissions}
9975
+ */
9976
+ clipboard?: ClipboardPermissions;
9977
+ };
9865
9978
  };
9866
9979
 
9867
9980
  /**
@@ -12512,6 +12625,10 @@ declare interface ProtocolMap extends ProtocolMapBase {
12512
12625
  };
12513
12626
  response: OpenFin_2.PopupResult;
12514
12627
  };
12628
+ 'get-screen-capture-permissions': {
12629
+ request: OpenFin_2.Identity;
12630
+ response: OpenFin_2.ScreenCapturePermission;
12631
+ };
12515
12632
  'render-overlay': {
12516
12633
  request: {
12517
12634
  bounds: OpenFin_2.Bounds;
@@ -13041,6 +13158,31 @@ declare type RvmLaunchOptions = {
13041
13158
  subscribe?: (launch: LaunchEmitter) => void;
13042
13159
  };
13043
13160
 
13161
+ /**
13162
+ * @interface
13163
+ * Controls whether this content should be allowed or blocked when capturing the screen.
13164
+ */
13165
+ declare type ScreenCaptureBehavior = 'allow' | 'block';
13166
+
13167
+ /**
13168
+ * Returned by getScreenCapturePermission. Includes sub-entity permission states and the resulting permission.
13169
+ * @interface
13170
+ */
13171
+ declare type ScreenCapturePermission = {
13172
+ permission: ScreenCaptureBehavior;
13173
+ permissions: ScreenCaptureState[];
13174
+ };
13175
+
13176
+ /**
13177
+ * screenCapture state for a given entity as defined in domain settings.
13178
+ * @interface
13179
+ */
13180
+ declare type ScreenCaptureState = {
13181
+ info: EntityInfo;
13182
+ behavior: ScreenCaptureBehavior;
13183
+ url: string;
13184
+ };
13185
+
13044
13186
  /**
13045
13187
  * @interface
13046
13188
  */
@@ -17286,6 +17428,19 @@ declare class WebContents<T extends BaseEvent> extends EmitterBase<T> {
17286
17428
  * {@link OpenFin.WebContentsEvents event namespace}.
17287
17429
  */
17288
17430
  showPopupWindow(options: OpenFin_2.PopupOptions): Promise<OpenFin_2.PopupResult>;
17431
+ /**
17432
+ *
17433
+ * Get the screen capture permission for this content.
17434
+ *
17435
+ * @example
17436
+ * ```js
17437
+ * const { permission } = await fin.me.getScreenCapturePermission();
17438
+ *
17439
+ * console.log(`This content is currently ${permission}ed in screen captures.`);
17440
+ *
17441
+ * ```
17442
+ */
17443
+ getScreenCapturePermission(): Promise<OpenFin_2.ScreenCapturePermission>;
17289
17444
  }
17290
17445
 
17291
17446
  /**
@@ -17324,6 +17479,8 @@ declare namespace WebContentsEvents {
17324
17479
  FileDownloadProgressEvent,
17325
17480
  FileDownloadCompletedEvent,
17326
17481
  ContentBlockedEvent,
17482
+ ClipboardCopyBlockedEvent,
17483
+ ClipboardPasteBlockedEvent,
17327
17484
  Event_5 as Event,
17328
17485
  WebContentsEvent,
17329
17486
  WillPropagateWebContentsEvent,
@@ -3277,6 +3277,40 @@ declare class Clipboard_2 extends Base {
3277
3277
  getAvailableFormats(type?: OpenFin_2.ClipboardSelectionType): Promise<Array<string>>;
3278
3278
  }
3279
3279
 
3280
+ /**
3281
+ * Generated when a copy operation is blocked through {@link OpenFin.DomainSettings}.
3282
+ * @interface
3283
+ */
3284
+ declare type ClipboardCopyBlockedEvent = NamedEvent & {
3285
+ type: 'clipboard-copy-blocked';
3286
+ /**
3287
+ * URL of the Window or View that generated the event.
3288
+ */
3289
+ url: string;
3290
+ reason: CopyBlockedEventReason;
3291
+ };
3292
+
3293
+ /**
3294
+ * Generated when a paste operation is blocked through {@link OpenFin.DomainSettings}.
3295
+ * @interface
3296
+ */
3297
+ declare type ClipboardPasteBlockedEvent = NamedEvent & {
3298
+ type: 'clipboard-paste-blocked';
3299
+ /**
3300
+ * URL of the Window or View that generated the event.
3301
+ */
3302
+ url: string;
3303
+ reason: PasteBlockedEventReason;
3304
+ };
3305
+
3306
+ /**
3307
+ * Clipboard Permissions
3308
+ */
3309
+ declare type ClipboardPermissions = {
3310
+ copy?: CopyPermissions;
3311
+ paste?: PastePermissions;
3312
+ };
3313
+
3280
3314
  /**
3281
3315
  * The type of clipboard to write to, can be 'clipboard' or 'selection'.
3282
3316
  * Defaults to 'clipboard'. Use 'selection' for linux only.
@@ -4054,6 +4088,40 @@ declare type CookieOption = {
4054
4088
  name: string;
4055
4089
  };
4056
4090
 
4091
+ /**
4092
+ * Reasons for a copy operation being blocked
4093
+ *
4094
+ * 'disabled': Copy operation is disabled through domain-based permissions.
4095
+ */
4096
+ declare type CopyBlockedEventReason = 'disabled';
4097
+
4098
+ /**
4099
+ * Control copy operations for a matched URL.
4100
+ */
4101
+ declare type CopyPermissions = {
4102
+ /**
4103
+ * @defaultValue 'allowed'
4104
+ *
4105
+ * Controls the behavior for copy operations for a matched URL.
4106
+ *
4107
+ * allow: Enables all copy operations.
4108
+ * block: Disables all copy operations.
4109
+ * protect: Protects any copied content. Only URLs that have set paste.behavior: 'all-content' will be allowed to paste this content.
4110
+ */
4111
+ behavior: 'allow' | 'block' | 'protect';
4112
+ /**
4113
+ * Additional copy operation options
4114
+ */
4115
+ options?: {
4116
+ /**
4117
+ * @defaultValue ''
4118
+ *
4119
+ * When setting behavior = 'protected' , this string will be pasted to other applications that do not have a matching URL instead of the original content.
4120
+ */
4121
+ replacementText: string;
4122
+ };
4123
+ };
4124
+
4057
4125
  /**
4058
4126
  * Defines and applies rounded corners for a frameless window. **NOTE:** On macOS corner is not ellipse but circle rounded by the
4059
4127
  * average of _height_ and _width_.
@@ -4665,6 +4733,15 @@ declare class EmitterBase<EmitterEvent extends BaseEvent, EmitterEventType exten
4665
4733
  type: EventType;
4666
4734
  }>, ...args: any[]) => boolean;
4667
4735
  private hasEmitter;
4736
+ /**
4737
+ * Cleans up after removal of a listener, e.g. deleting any lingering deregistration handlers for a
4738
+ * `once` subscription.
4739
+ *
4740
+ * @remarks Implementing this as a `removeListener` handler ensures that direct removal of a listener
4741
+ * on the base emitter will not leak additional core handlers. We could do this in the forwarding method,
4742
+ * which would involve less "magic," but would be more-vulnerable to accidental re-introduction of a leak.
4743
+ */
4744
+ private cleanUpRemovedListener;
4668
4745
  private getOrCreateEmitter;
4669
4746
  listeners: (type: string | symbol) => Function[];
4670
4747
  listenerCount: (type: string | symbol) => number;
@@ -4905,7 +4982,7 @@ declare type Event_4 = (WebContentsEvents.Event<'view'> & {
4905
4982
  */
4906
4983
  declare type Event_5<Topic extends string> = {
4907
4984
  topic: Topic;
4908
- } & (BlurredEvent | CertificateSelectionShownEvent | CrashedEvent_2 | DidChangeThemeColorEvent | FocusedEvent | NavigationRejectedEvent | UrlChangedEvent | DidFailLoadEvent | DidFinishLoadEvent | DidStartLoadingEvent | PageFaviconUpdatedEvent | PageTitleUpdatedEvent | ResourceLoadFailedEvent | ResourceResponseReceivedEvent | ChildContentBlockedEvent | ChildContentOpenedInBrowserEvent | ChildViewCreatedEvent | ChildWindowCreatedEvent | FileDownloadStartedEvent | FileDownloadProgressEvent | FileDownloadCompletedEvent | FoundInPageEvent | CertificateErrorEvent | ContentBlockedEvent | WillRedirectEvent);
4985
+ } & (BlurredEvent | CertificateSelectionShownEvent | CrashedEvent_2 | DidChangeThemeColorEvent | FocusedEvent | NavigationRejectedEvent | UrlChangedEvent | DidFailLoadEvent | DidFinishLoadEvent | DidStartLoadingEvent | PageFaviconUpdatedEvent | PageTitleUpdatedEvent | ResourceLoadFailedEvent | ResourceResponseReceivedEvent | ChildContentBlockedEvent | ChildContentOpenedInBrowserEvent | ChildViewCreatedEvent | ChildWindowCreatedEvent | FileDownloadStartedEvent | FileDownloadProgressEvent | FileDownloadCompletedEvent | FoundInPageEvent | CertificateErrorEvent | ContentBlockedEvent | WillRedirectEvent | ClipboardCopyBlockedEvent | ClipboardPasteBlockedEvent);
4909
4986
 
4910
4987
  /**
4911
4988
  * [Union](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types) containing every possible event that can be emitted by a {@link Window}. Events are
@@ -5686,11 +5763,8 @@ declare type FrameEventType = EventType_5;
5686
5763
  /**
5687
5764
  * @interface
5688
5765
  */
5689
- declare type FrameInfo = {
5690
- name: string;
5691
- uuid: string;
5766
+ declare type FrameInfo = EntityInfo & {
5692
5767
  url: string;
5693
- entityType: EntityType_4;
5694
5768
  parent: Identity_4;
5695
5769
  };
5696
5770
 
@@ -9636,6 +9710,8 @@ declare namespace OpenFin_2 {
9636
9710
  ClientConnectionPayload,
9637
9711
  EntityInfo,
9638
9712
  EntityType_4 as EntityType,
9713
+ ScreenCaptureState,
9714
+ ScreenCapturePermission,
9639
9715
  Bounds,
9640
9716
  WindowBounds,
9641
9717
  GetBoundsOptions,
@@ -9856,7 +9932,11 @@ declare namespace OpenFin_2 {
9856
9932
  StructuredContentBehavior,
9857
9933
  StructuredContentPermissions,
9858
9934
  ContentPermission,
9935
+ ScreenCaptureBehavior,
9859
9936
  PerDomainSettings,
9937
+ CopyPermissions,
9938
+ PastePermissions,
9939
+ ClipboardPermissions,
9860
9940
  DomainSettingsRule,
9861
9941
  FileDownloadBehavior,
9862
9942
  FileDownloadBehaviorNames,
@@ -10037,6 +10117,29 @@ declare type PageTitleUpdatedEvent = NamedEvent & {
10037
10117
  title: string;
10038
10118
  };
10039
10119
 
10120
+ /**
10121
+ * Reasons for a paste operation being blocked
10122
+ *
10123
+ * 'invalid-data': Copy protection is enabled and the pasted data is invalid.
10124
+ * 'disabled': Copy protection is turned on and the current URL for this WebContent has been disabled through domain-based settings from accessing the copied data.
10125
+ */
10126
+ declare type PasteBlockedEventReason = 'invalid-data' | 'disabled';
10127
+
10128
+ /**
10129
+ * Control copy operations for a matched URL.
10130
+ */
10131
+ declare type PastePermissions = {
10132
+ /**
10133
+ * @defaultValue 'non-protected-content'
10134
+ *
10135
+ * Controls the behavior for paste operations for a matched URL.
10136
+ *
10137
+ * non-protected-content: All matching URLs will be able to paste content copied from non-protected URLs.
10138
+ * all-content: All matching URLs will be able to paste content copied from both protected (copy.behavior = 'protect') and on-protected (copy.behavior = 'allow') URLs.
10139
+ */
10140
+ behavior: 'non-protected-content' | 'all-content';
10141
+ };
10142
+
10040
10143
  declare type PathServeRequest = ServeRequest & {
10041
10144
  path: string;
10042
10145
  };
@@ -10180,6 +10283,16 @@ declare type PerDomainSettings = {
10180
10283
  * {@inheritdoc ChromiumPolicies}
10181
10284
  */
10182
10285
  chromiumPolicies?: ChromiumPolicies;
10286
+ contentProtection?: {
10287
+ /**
10288
+ * {@inheritdoc ScreenCaptureBehavior}
10289
+ */
10290
+ screenCapture: ScreenCaptureBehavior;
10291
+ /**
10292
+ * {@inheritdoc ClipboardPermissions}
10293
+ */
10294
+ clipboard?: ClipboardPermissions;
10295
+ };
10183
10296
  };
10184
10297
 
10185
10298
  /**
@@ -12913,6 +13026,10 @@ declare interface ProtocolMap extends ProtocolMapBase {
12913
13026
  };
12914
13027
  response: OpenFin_2.PopupResult;
12915
13028
  };
13029
+ 'get-screen-capture-permissions': {
13030
+ request: OpenFin_2.Identity;
13031
+ response: OpenFin_2.ScreenCapturePermission;
13032
+ };
12916
13033
  'render-overlay': {
12917
13034
  request: {
12918
13035
  bounds: OpenFin_2.Bounds;
@@ -13442,6 +13559,31 @@ declare type RvmLaunchOptions = {
13442
13559
  subscribe?: (launch: LaunchEmitter) => void;
13443
13560
  };
13444
13561
 
13562
+ /**
13563
+ * @interface
13564
+ * Controls whether this content should be allowed or blocked when capturing the screen.
13565
+ */
13566
+ declare type ScreenCaptureBehavior = 'allow' | 'block';
13567
+
13568
+ /**
13569
+ * Returned by getScreenCapturePermission. Includes sub-entity permission states and the resulting permission.
13570
+ * @interface
13571
+ */
13572
+ declare type ScreenCapturePermission = {
13573
+ permission: ScreenCaptureBehavior;
13574
+ permissions: ScreenCaptureState[];
13575
+ };
13576
+
13577
+ /**
13578
+ * screenCapture state for a given entity as defined in domain settings.
13579
+ * @interface
13580
+ */
13581
+ declare type ScreenCaptureState = {
13582
+ info: EntityInfo;
13583
+ behavior: ScreenCaptureBehavior;
13584
+ url: string;
13585
+ };
13586
+
13445
13587
  /**
13446
13588
  * @interface
13447
13589
  */
@@ -17737,6 +17879,19 @@ declare class WebContents<T extends BaseEvent> extends EmitterBase<T> {
17737
17879
  * {@link OpenFin.WebContentsEvents event namespace}.
17738
17880
  */
17739
17881
  showPopupWindow(options: OpenFin_2.PopupOptions): Promise<OpenFin_2.PopupResult>;
17882
+ /**
17883
+ *
17884
+ * Get the screen capture permission for this content.
17885
+ *
17886
+ * @example
17887
+ * ```js
17888
+ * const { permission } = await fin.me.getScreenCapturePermission();
17889
+ *
17890
+ * console.log(`This content is currently ${permission}ed in screen captures.`);
17891
+ *
17892
+ * ```
17893
+ */
17894
+ getScreenCapturePermission(): Promise<OpenFin_2.ScreenCapturePermission>;
17740
17895
  }
17741
17896
 
17742
17897
  /**
@@ -17775,6 +17930,8 @@ declare namespace WebContentsEvents {
17775
17930
  FileDownloadProgressEvent,
17776
17931
  FileDownloadCompletedEvent,
17777
17932
  ContentBlockedEvent,
17933
+ ClipboardCopyBlockedEvent,
17934
+ ClipboardPasteBlockedEvent,
17778
17935
  Event_5 as Event,
17779
17936
  WebContentsEvent,
17780
17937
  WillPropagateWebContentsEvent,
@@ -372,7 +372,7 @@ var __classPrivateFieldGet$e = (commonjsGlobal && commonjsGlobal.__classPrivateF
372
372
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
373
373
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
374
374
  };
375
- var _EmitterBase_emitterAccessor;
375
+ var _EmitterBase_emitterAccessor, _EmitterBase_deregisterOnceListeners;
376
376
  Object.defineProperty(base, "__esModule", { value: true });
377
377
  base.Reply = base.EmitterBase = base.Base = void 0;
378
378
  const promises_1 = promises;
@@ -444,6 +444,7 @@ class EmitterBase extends Base {
444
444
  super(wire);
445
445
  this.topic = topic;
446
446
  _EmitterBase_emitterAccessor.set(this, void 0);
447
+ _EmitterBase_deregisterOnceListeners.set(this, void 0);
447
448
  this.eventNames = () => (this.hasEmitter() ? this.getOrCreateEmitter().eventNames() : []);
448
449
  /**
449
450
  * @internal
@@ -452,7 +453,28 @@ class EmitterBase extends Base {
452
453
  return this.hasEmitter() ? this.getOrCreateEmitter().emit(eventType, payload, ...args) : false;
453
454
  };
454
455
  this.hasEmitter = () => this.wire.eventAggregator.has(__classPrivateFieldGet$e(this, _EmitterBase_emitterAccessor, "f"));
455
- this.getOrCreateEmitter = () => this.wire.eventAggregator.getOrCreate(__classPrivateFieldGet$e(this, _EmitterBase_emitterAccessor, "f"));
456
+ /**
457
+ * Cleans up after removal of a listener, e.g. deleting any lingering deregistration handlers for a
458
+ * `once` subscription.
459
+ *
460
+ * @remarks Implementing this as a `removeListener` handler ensures that direct removal of a listener
461
+ * on the base emitter will not leak additional core handlers. We could do this in the forwarding method,
462
+ * which would involve less "magic," but would be more-vulnerable to accidental re-introduction of a leak.
463
+ */
464
+ this.cleanUpRemovedListener = (eventType, listener) => {
465
+ const deregister = __classPrivateFieldGet$e(this, _EmitterBase_deregisterOnceListeners, "f").get(listener);
466
+ if (deregister) {
467
+ const emitter = this.wire.eventAggregator.getOrCreate(__classPrivateFieldGet$e(this, _EmitterBase_emitterAccessor, "f"));
468
+ emitter.removeListener(eventType, deregister);
469
+ }
470
+ };
471
+ this.getOrCreateEmitter = () => {
472
+ const emitter = this.wire.eventAggregator.getOrCreate(__classPrivateFieldGet$e(this, _EmitterBase_emitterAccessor, "f"));
473
+ if (!emitter.listeners('removeListener').includes(this.cleanUpRemovedListener)) {
474
+ emitter.on('removeListener', this.cleanUpRemovedListener);
475
+ }
476
+ return emitter;
477
+ };
456
478
  this.listeners = (type) => this.hasEmitter() ? this.getOrCreateEmitter().listeners(type) : [];
457
479
  this.listenerCount = (type) => this.hasEmitter() ? this.getOrCreateEmitter().listenerCount(type) : 0;
458
480
  this.registerEventListener = async (eventType, options = {}, applySubscription, undoSubscription) => {
@@ -484,13 +506,13 @@ class EmitterBase extends Base {
484
506
  type: eventType
485
507
  };
486
508
  await this.wire.sendAction('unsubscribe-to-desktop-event', runtimeEvent).catch(() => null);
487
- const emitter = this.getOrCreateEmitter();
488
- return emitter;
509
+ return this.getOrCreateEmitter();
489
510
  }
490
511
  // This will only be reached if unsubscribe from event that does not exist but do not want to error here
491
512
  return Promise.resolve();
492
513
  };
493
514
  __classPrivateFieldSet$d(this, _EmitterBase_emitterAccessor, [topic, ...additionalAccessors], "f");
515
+ __classPrivateFieldSet$d(this, _EmitterBase_deregisterOnceListeners, new WeakMap(), "f");
494
516
  this.listeners = (event) => this.hasEmitter() ? this.getOrCreateEmitter().listeners(event) : [];
495
517
  }
496
518
  /**
@@ -519,6 +541,7 @@ class EmitterBase extends Base {
519
541
  */
520
542
  async once(eventType, listener, options) {
521
543
  const deregister = () => this.deregisterEventListener(eventType);
544
+ __classPrivateFieldGet$e(this, _EmitterBase_deregisterOnceListeners, "f").set(listener, deregister);
522
545
  await this.registerEventListener(eventType, options, (emitter) => {
523
546
  emitter.once(eventType, deregister);
524
547
  emitter.once(eventType, listener);
@@ -549,6 +572,7 @@ class EmitterBase extends Base {
549
572
  */
550
573
  async prependOnceListener(eventType, listener, options) {
551
574
  const deregister = () => this.deregisterEventListener(eventType);
575
+ __classPrivateFieldGet$e(this, _EmitterBase_deregisterOnceListeners, "f").set(listener, deregister);
552
576
  await this.registerEventListener(eventType, options, (emitter) => {
553
577
  emitter.prependOnceListener(eventType, listener);
554
578
  emitter.once(eventType, deregister);
@@ -607,13 +631,13 @@ class EmitterBase extends Base {
607
631
  return this;
608
632
  }
609
633
  deleteEmitterIfNothingRegistered(emitter) {
610
- if (emitter.eventNames().length === 0) {
634
+ if (emitter.eventNames().every((type) => type === 'removeListener')) {
611
635
  this.wire.eventAggregator.delete(__classPrivateFieldGet$e(this, _EmitterBase_emitterAccessor, "f"));
612
636
  }
613
637
  }
614
638
  }
615
639
  base.EmitterBase = EmitterBase;
616
- _EmitterBase_emitterAccessor = new WeakMap();
640
+ _EmitterBase_emitterAccessor = new WeakMap(), _EmitterBase_deregisterOnceListeners = new WeakMap();
617
641
  class Reply {
618
642
  }
619
643
  base.Reply = Reply;
@@ -2123,6 +2147,21 @@ class WebContents extends base_1$j.EmitterBase {
2123
2147
  });
2124
2148
  return payload.data;
2125
2149
  }
2150
+ /**
2151
+ *
2152
+ * Get the screen capture permission for this content.
2153
+ *
2154
+ * @example
2155
+ * ```js
2156
+ * const { permission } = await fin.me.getScreenCapturePermission();
2157
+ *
2158
+ * console.log(`This content is currently ${permission}ed in screen captures.`);
2159
+ *
2160
+ * ```
2161
+ */
2162
+ async getScreenCapturePermission() {
2163
+ return (await this.wire.sendAction('get-screen-capture-permissions', this.identity)).payload.data;
2164
+ }
2126
2165
  }
2127
2166
  main.WebContents = WebContents;
2128
2167
 
@@ -17644,12 +17683,12 @@ class Transport extends events_1$1.EventEmitter {
17644
17683
  Transport_1 = transport.Transport = Transport;
17645
17684
  _Transport_wire = new WeakMap(), _Transport_fin = new WeakMap();
17646
17685
 
17647
- var mockEnvironment = {};
17686
+ var stubEnvironment = {};
17648
17687
 
17649
- Object.defineProperty(mockEnvironment, "__esModule", { value: true });
17650
- var MockEnvironment_1 = mockEnvironment.MockEnvironment = void 0;
17688
+ Object.defineProperty(stubEnvironment, "__esModule", { value: true });
17689
+ var StubEnvironment_1 = stubEnvironment.StubEnvironment = void 0;
17651
17690
  const me_1 = me;
17652
- class MockEnvironment {
17691
+ class StubEnvironment {
17653
17692
  constructor() {
17654
17693
  this.type = 'other';
17655
17694
  this.childViews = true;
@@ -17730,15 +17769,15 @@ class MockEnvironment {
17730
17769
  throw new Error('Method not implemented.');
17731
17770
  }
17732
17771
  }
17733
- MockEnvironment_1 = mockEnvironment.MockEnvironment = MockEnvironment;
17772
+ StubEnvironment_1 = stubEnvironment.StubEnvironment = StubEnvironment;
17734
17773
 
17735
- var mockWire = {};
17774
+ var stubWire = {};
17736
17775
 
17737
- Object.defineProperty(mockWire, "__esModule", { value: true });
17738
- var MockWire_1 = mockWire.MockWire = void 0;
17776
+ Object.defineProperty(stubWire, "__esModule", { value: true });
17777
+ var StubWire_1 = stubWire.StubWire = void 0;
17739
17778
  /* eslint-disable @typescript-eslint/no-unused-vars */
17740
17779
  const events_1 = require$$0;
17741
- class MockWire extends events_1.EventEmitter {
17780
+ class StubWire extends events_1.EventEmitter {
17742
17781
  connect() {
17743
17782
  throw new Error('You are not running in OpenFin.');
17744
17783
  }
@@ -17759,12 +17798,12 @@ class MockWire extends events_1.EventEmitter {
17759
17798
  super();
17760
17799
  }
17761
17800
  }
17762
- MockWire_1 = mockWire.MockWire = MockWire;
17801
+ StubWire_1 = stubWire.StubWire = StubWire;
17763
17802
 
17764
17803
  const fin$1 = ((typeof window !== 'undefined' && window?.fin) ||
17765
17804
  (() => {
17766
- const environment = new MockEnvironment_1();
17767
- const transport = new Transport_1(MockWire_1, environment, {
17805
+ const environment = new StubEnvironment_1();
17806
+ const transport = new Transport_1(StubWire_1, environment, {
17768
17807
  uuid: '',
17769
17808
  name: ''
17770
17809
  });
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@openfin/core",
3
- "version": "40.102.1",
3
+ "version": "40.103.1",
4
4
  "description": "The core renderer entry point of OpenFin",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
- "main": "out/mock.js",
7
- "types": "out/mock.d.ts",
6
+ "main": "out/stub.js",
7
+ "types": "out/stub.d.ts",
8
8
  "private": false,
9
9
  "scripts": {
10
10
  "prebuild": "rimraf ./out",