@openfin/core 40.102.1 → 40.103.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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",