Bug 1152401 - Use mKind member of MediaDevice in MediaDeviceInfo to avoid string comparisons. r?jib
MozReview-Commit-ID: Kfqb7DZlwO2
--- a/dom/media/MediaDevices.cpp
+++ b/dom/media/MediaDevices.cpp
@@ -108,34 +108,31 @@ public:
devices.AppendElement(device);
NS_IF_RELEASE(supportsArray[i]); // explicitly decrease refcount for rawptr
}
free(rawArray); // explicitly free memory from nsIVariant::GetAsArray
}
}
nsTArray<RefPtr<MediaDeviceInfo>> infos;
for (auto& device : devices) {
- MediaDevice* dev = static_cast<MediaDevice*>(device.get());
- bool isVideo = dev->mKind == dom::MediaDeviceKind::Videoinput;
- bool isAudio = dev->mKind == dom::MediaDeviceKind::Audioinput;
- if (isVideo || isAudio) {
- MediaDeviceKind kind = isVideo ?
- MediaDeviceKind::Videoinput : MediaDeviceKind::Audioinput;
- nsString id;
- nsString name;
- device->GetId(id);
- // Include name only if page currently has a gUM stream active or
- // persistent permissions (audio or video) have been granted
- if (MediaManager::Get()->IsActivelyCapturingOrHasAPermission(mWindowId) ||
- Preferences::GetBool("media.navigator.permission.disabled", false)) {
- device->GetName(name);
- }
- RefPtr<MediaDeviceInfo> info = new MediaDeviceInfo(id, kind, name);
- infos.AppendElement(info);
+ MediaDeviceKind kind = static_cast<MediaDevice*>(device.get())->mKind;
+ MOZ_ASSERT(kind == dom::MediaDeviceKind::Audioinput
+ || kind == dom::MediaDeviceKind::Videoinput
+ || kind == dom::MediaDeviceKind::Audiooutput);
+ nsString id;
+ nsString name;
+ device->GetId(id);
+ // Include name only if page currently has a gUM stream active or
+ // persistent permissions (audio or video) have been granted
+ if (MediaManager::Get()->IsActivelyCapturingOrHasAPermission(mWindowId) ||
+ Preferences::GetBool("media.navigator.permission.disabled", false)) {
+ device->GetName(name);
}
+ RefPtr<MediaDeviceInfo> info = new MediaDeviceInfo(id, kind, name);
+ infos.AppendElement(info);
}
mPromise->MaybeResolve(infos);
return NS_OK;
}
private:
virtual ~EnumDevResolver() {}
RefPtr<Promise> mPromise;