Skip to main content

JavaScript window feature parity

window.infiniframe.window.features exposes all runtime window-feature operations that have a safe web-message representation. Synchronous and asynchronous C# overload pairs intentionally map to one idiomatic JavaScript method; getters and result-returning operations return Promise values.

The parity boundary is the 13 interfaces reachable through IInfiniFrameWindowFeatures. Native handles, IServiceProvider, configuration, managed events, and the other members of IInfiniFrameWindow are not part of this contract. They have no generally safe or useful serialized representation.

FeatureJavaScript representationIntentional exclusions
BrowserAll getters and mutationsNone
DebuggingCapabilities, diagnostics, endpoint results, and DevTools controlNone
DecorationsAll getters and mutationsNone
File picker dialogsOpen file/folder and save file, including filters and nullable resultsSync/async C# pairs share one Promise-returning method
InvokeFeature namespace onlyInvoke(Action) and DispatchAsync(Action) cannot transport managed delegates through web messaging
LifecycleState, closed/closing query, and closeWaitForClose must not block the web-message/UI thread; a future wait API must be an event-backed Promise
MonitorsMonitor list, main monitor, and DPINone
NotificationsNative notification and message dialog/resultNone
Page navigationURI/path/raw loading and tryLoad resultsC# overloads share idiomatic JS methods
PositionAll getters and mutationsPoint and numeric overloads share idiomatic JS methods
SizeAll getters and mutationsSize and numeric overloads share idiomatic JS methods
StateAll getters and mutations, including both cached-bounds settersNone
Web messagingRaw string web messagesSync/async C# pair shares one method

Feature names are matched case-insensitively by the native router. Command and argument names are case-sensitive. DTO properties and enum values use exact camel-case web JSON shapes. The native parity test inventories every public member (including overload counts), so a new C# API member must be represented or added as a documented exclusion.