Bug 1152401 - Use mKind member of MediaDevice in MediaDeviceInfo to avoid string comparisons. r?jib draft
authorAlex Chronopoulos <achronop@gmail.com>
Mon, 16 Jul 2018 11:30:46 +0200
changeset 818649 4b39194a70cd4f7097533a72a1d2c7d26b812165
parent 818648 536ceeec8a925001bd342a9f1b4eefb85eabbc8c
child 818650 c8f1ccbe440c0a9631a8bff9bba685443ac99ab1
push id116311
push userachronop@gmail.com
push dateMon, 16 Jul 2018 09:31:43 +0000
reviewersjib
bugs1152401
milestone63.0a1
Bug 1152401 - Use mKind member of MediaDevice in MediaDeviceInfo to avoid string comparisons. r?jib MozReview-Commit-ID: Kfqb7DZlwO2
dom/media/MediaDevices.cpp
--- 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;