From 83e4aee77c8243d90513863597efd6d5dbe6561f Mon Sep 17 00:00:00 2001 From: wuggy Date: Sat, 19 Sep 2026 12:04:21 -0700 Subject: [PATCH] WebUSB pt.3 --- dom/usb/USBAlternateInterface.h | 7 ++++++- dom/usb/USBConfiguration.h | 7 ++++++- dom/usb/USBDescriptors.cpp | 5 ++--- dom/usb/USBDevice.cpp | 30 ++++++++++++++++++++++++++++++ dom/usb/USBDevice.h | 18 ++++++++---------- dom/usb/USBInTransferResult.h | 2 +- dom/usb/USBInterface.h | 2 +- 7 files changed, 54 insertions(+), 17 deletions(-) diff --git a/dom/usb/USBAlternateInterface.h b/dom/usb/USBAlternateInterface.h index 9edf9efb86..dd1484b090 100644 --- a/dom/usb/USBAlternateInterface.h +++ b/dom/usb/USBAlternateInterface.h @@ -3,6 +3,7 @@ #define mozilla_dom_USBAlternateInterface_h #include "mozilla/dom/Nullable.h" +#include "mozilla/dom/DOMString.h" #include "mozilla/dom/USBEndpoint.h" #include "mozilla/dom/USBBinding.h" #include "nsCOMPtr.h" @@ -24,7 +25,11 @@ public: uint8_t InterfaceClass() const { return mClass; } uint8_t InterfaceSubclass() const { return mSubclass; } uint8_t InterfaceProtocol() const { return mProtocol; } - void GetInterfaceName(Nullable& aValue) const { aValue = mName; } + void GetInterfaceName(DOMString& aValue) const + { + if (mName.IsNull()) aValue.SetNull(); + else aValue.SetOwnedString(mName.Value()); + } void GetEndpoints(nsTArray>& aValue) const { aValue = mEndpoints; } JSObject* WrapObject(JSContext*, JS::Handle) override; private: diff --git a/dom/usb/USBConfiguration.h b/dom/usb/USBConfiguration.h index ca7e7f95c0..52ddda1f19 100644 --- a/dom/usb/USBConfiguration.h +++ b/dom/usb/USBConfiguration.h @@ -3,6 +3,7 @@ #define mozilla_dom_USBConfiguration_h #include "mozilla/dom/Nullable.h" +#include "mozilla/dom/DOMString.h" #include "mozilla/dom/USBInterface.h" #include "mozilla/dom/USBBinding.h" #include "nsCOMPtr.h" @@ -21,7 +22,11 @@ public: NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(USBConfiguration) nsISupports* GetParentObject() const { return mOwner; } uint8_t ConfigurationValue() const { return mValue; } - void GetConfigurationName(Nullable& aValue) const { aValue = mName; } + void GetConfigurationName(DOMString& aValue) const + { + if (mName.IsNull()) aValue.SetNull(); + else aValue.SetOwnedString(mName.Value()); + } void GetInterfaces(nsTArray>& aValue) const { aValue = mInterfaces; } JSObject* WrapObject(JSContext*, JS::Handle) override; private: diff --git a/dom/usb/USBDescriptors.cpp b/dom/usb/USBDescriptors.cpp index 6ce7afae72..cb2a66a533 100644 --- a/dom/usb/USBDescriptors.cpp +++ b/dom/usb/USBDescriptors.cpp @@ -159,14 +159,13 @@ USBInTransferResult::~USBInTransferResult() void USBInTransferResult::GetData(JSContext* aCx, - JS::MutableHandle aData, - ErrorResult& aRv) + JS::MutableHandle aData) { if (!mData) { mData = ArrayBuffer::Create(aCx, this, mRawData.Length(), mRawData.Elements()); if (!mData) { - aRv.Throw(NS_ERROR_OUT_OF_MEMORY); + aData.set(nullptr); return; } mRawData.Clear(); diff --git a/dom/usb/USBDevice.cpp b/dom/usb/USBDevice.cpp index 35c9ce3bb3..adea7adbf6 100644 --- a/dom/usb/USBDevice.cpp +++ b/dom/usb/USBDevice.cpp @@ -141,6 +141,36 @@ USBDevice::SetDeviceInfo(const USBDeviceInfo& aInfo) } } +void +USBDevice::GetManufacturerName(DOMString& aValue) const +{ + if (mManufacturerName.IsNull()) { + aValue.SetNull(); + } else { + aValue.SetOwnedString(mManufacturerName.Value()); + } +} + +void +USBDevice::GetProductName(DOMString& aValue) const +{ + if (mProductName.IsNull()) { + aValue.SetNull(); + } else { + aValue.SetOwnedString(mProductName.Value()); + } +} + +void +USBDevice::GetSerialNumber(DOMString& aValue) const +{ + if (mSerialNumber.IsNull()) { + aValue.SetNull(); + } else { + aValue.SetOwnedString(mSerialNumber.Value()); + } +} + void USBDevice::SetConfigurations( const nsTArray& aConfigurations) diff --git a/dom/usb/USBDevice.h b/dom/usb/USBDevice.h index e8d5509f43..89f8203c22 100644 --- a/dom/usb/USBDevice.h +++ b/dom/usb/USBDevice.h @@ -8,6 +8,7 @@ #include "mozilla/dom/USBBackend.h" #include "mozilla/dom/USBDescriptors.h" #include "mozilla/dom/TypedArray.h" +#include "mozilla/dom/DOMString.h" #include "mozilla/dom/Nullable.h" #include "nsString.h" #include @@ -53,23 +54,20 @@ public: uint16_t VendorId() const { return mVendorId; } uint16_t ProductId() const { return mProductId; } - uint8_t USBVersionMajor() const { return mUSBVersionMajor; } - uint8_t USBVersionMinor() const { return mUSBVersionMinor; } - uint8_t USBVersionSubminor() const { return mUSBVersionSubminor; } + uint8_t UsbVersionMajor() const { return mUSBVersionMajor; } + uint8_t UsbVersionMinor() const { return mUSBVersionMinor; } + uint8_t UsbVersionSubminor() const { return mUSBVersionSubminor; } uint8_t DeviceClass() const { return mDeviceClass; } uint8_t DeviceSubclass() const { return mDeviceSubclass; } uint8_t DeviceProtocol() const { return mDeviceProtocol; } uint8_t DeviceVersionMajor() const { return mDeviceVersionMajor; } uint8_t DeviceVersionMinor() const { return mDeviceVersionMinor; } uint8_t DeviceVersionSubminor() const { return mDeviceVersionSubminor; } - void GetManufacturerName(Nullable& aValue) const - { aValue = mManufacturerName; } - void GetProductName(Nullable& aValue) const - { aValue = mProductName; } - void GetSerialNumber(Nullable& aValue) const - { aValue = mSerialNumber; } + void GetManufacturerName(DOMString& aValue) const; + void GetProductName(DOMString& aValue) const; + void GetSerialNumber(DOMString& aValue) const; bool Opened() const { return mOpened; } - USBConfiguration* GetConfiguration() const { return mConfiguration; } + USBConfiguration* Configuration() const { return mConfiguration; } void GetConfigurations(nsTArray>& aValue) const { aValue = mConfigurations; } diff --git a/dom/usb/USBInTransferResult.h b/dom/usb/USBInTransferResult.h index 39ce06b640..5d76a2d326 100644 --- a/dom/usb/USBInTransferResult.h +++ b/dom/usb/USBInTransferResult.h @@ -19,7 +19,7 @@ public: NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(USBInTransferResult) nsISupports* GetParentObject() const { return mOwner; } USBTransferStatus Status() const { return mStatus; } - void GetData(JSContext*, JS::MutableHandle, ErrorResult&); + void GetData(JSContext*, JS::MutableHandle); JSObject* WrapObject(JSContext*, JS::Handle) override; private: ~USBInTransferResult(); diff --git a/dom/usb/USBInterface.h b/dom/usb/USBInterface.h index f51840820a..095d04e201 100644 --- a/dom/usb/USBInterface.h +++ b/dom/usb/USBInterface.h @@ -19,7 +19,7 @@ public: NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(USBInterface) nsISupports* GetParentObject() const { return mOwner; } uint8_t InterfaceNumber() const { return mNumber; } - USBAlternateInterface* GetAlternate() const { return mAlternate; } + USBAlternateInterface* Alternate() const { return mAlternate; } void SetAlternate(uint8_t); void GetAlternates(nsTArray>& aValue) const { aValue = mAlternates; } bool Claimed() const { return mClaimed; }