v0.0.2a
Pre-releaseChanges in this version
Lack of idempotency in open() (JS)In actual Chrome, if a device is already open, it resolves immediately with success.
Our previous implementation called openDevice() every time.
As a result, calling open() twice caused the Python side to keep issuing new handles.
This left the first handle (which included claimed interface information) unclosed, causing a leak.Complete lack of EnsureInterfaceClaimed() equivalent validation in selectAlternateInterface()It was possible to change the alternate setting of any interface without ever calling claimInterface() (meaning it bypassed the protected class checks).
This has been fixed to reject with an InvalidStateError, matching actual Chrome behavior.Lack of explicit EnsureDeviceConfigured() equivalent checks in claimInterface and releaseInterfaceWhen no configuration was selected, the requests were eventually rejected through the interface_class_for failsafe. However, it threw an incorrect error message blaming a "protected class".
This has been corrected to explicitly return InvalidStateError: "the device must have a configuration selected", just like actual Chrome. (Verified: confirmed that reverting this fix actually produces the incorrect SecurityError message).That being said, we still cannot guarantee it will work flawlessly.
Please wait for the next version.