WebKit Bugzilla
Attachment 342412 Details for
Bug 186471
: MediaTrackCapabilities.deviceId and groupId are not hashed.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-186471-20180611143306.patch (text/plain), 7.28 KB, created by
jianjun.zhu
on 2018-06-10 23:33:07 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
jianjun.zhu
Created:
2018-06-10 23:33:07 PDT
Size:
7.28 KB
patch
obsolete
>Subversion Revision: 232569 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 34c421c0a208775539879e7e4dc721d2434ad810..5ade99c17b0022ab5d4e87fe0590026eeea99e9a 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,18 @@ >+2018-06-10 Jianjun Zhu <jianjun.zhu@intel.com> >+ >+ Hash deviceId and groupId of MediaTrackCapabilities. >+ https://bugs.webkit.org/show_bug.cgi?id=186471 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ This change makes the identifier for the source of the MediaStreamTrack >+ has the same value returned by enumerateDevices(). It also prevents real >+ device ID being leaked. >+ >+ (WebCore::MediaStreamTrack::getCapabilities const): >+ * Modules/mediastream/MediaStreamTrack.h: >+ * Modules/mediastream/MediaStreamTrack.idl: >+ > 2018-06-06 Per Arne Vollan <pvollan@apple.com> > > Display links are sometimes not notifying WebCore when fired. >diff --git a/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp b/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp >index 86769425f75ed5d51a6de721ab75d28ee5618512..3e509135941f867b682c652f2344c49197638b7d 100644 >--- a/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp >+++ b/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp >@@ -234,7 +234,7 @@ static Vector<bool> capabilityBooleanVector(RealtimeMediaSourceCapabilities::Ech > return result; > } > >-MediaStreamTrack::TrackCapabilities MediaStreamTrack::getCapabilities() const >+MediaStreamTrack::TrackCapabilities MediaStreamTrack::getCapabilities(Document& document) const > { > auto capabilities = m_private->capabilities(); > TrackCapabilities result; >@@ -257,9 +257,9 @@ MediaStreamTrack::TrackCapabilities MediaStreamTrack::getCapabilities() const > if (capabilities.supportsEchoCancellation()) > result.echoCancellation = capabilityBooleanVector(capabilities.echoCancellation()); > if (capabilities.supportsDeviceId()) >- result.deviceId = capabilities.deviceId(); >+ result.deviceId = RealtimeMediaSourceCenter::singleton().hashStringWithSalt(capabilities.deviceId(), document.deviceIDHashSalt()); > if (capabilities.supportsGroupId()) >- result.groupId = capabilities.groupId(); >+ result.groupId = RealtimeMediaSourceCenter::singleton().hashStringWithSalt(capabilities.groupId(), document.deviceIDHashSalt()); > return result; > } > >diff --git a/Source/WebCore/Modules/mediastream/MediaStreamTrack.h b/Source/WebCore/Modules/mediastream/MediaStreamTrack.h >index da1b1c0607b87a199c633a29bdc4d44dce727483..345382bba4f9bf46ea6fcac4207d5ef440aa552f 100644 >--- a/Source/WebCore/Modules/mediastream/MediaStreamTrack.h >+++ b/Source/WebCore/Modules/mediastream/MediaStreamTrack.h >@@ -115,7 +115,7 @@ public: > String deviceId; > String groupId; > }; >- TrackCapabilities getCapabilities() const; >+ TrackCapabilities getCapabilities(Document&) const; > > const MediaTrackConstraints& getConstraints() const { return m_constraints; } > void applyConstraints(const std::optional<MediaTrackConstraints>&, DOMPromiseDeferred<void>&&); >diff --git a/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl b/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl >index 9b7c48933c7f1bffc7865776a41da331e87fceb7..6559436fa6f2e43a1feb1ea3f663ab7d3619c25d 100644 >--- a/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl >+++ b/Source/WebCore/Modules/mediastream/MediaStreamTrack.idl >@@ -46,7 +46,7 @@ enum MediaStreamTrackState { "live", "ended" }; > MediaStreamTrack clone(); > [ImplementedAs=stopTrack] void stop(); > >- MediaTrackCapabilities getCapabilities(); >+ [CallWith=Document] MediaTrackCapabilities getCapabilities(); > MediaTrackConstraints getConstraints(); > [CallWith=Document] MediaTrackSettings getSettings(); > Promise<void> applyConstraints(optional MediaTrackConstraints constraints); >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 900f8b2187679e7a460f3d55ed5375daa46a530f..fb8119d20003998c3502ae11870382843313f35d 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,16 @@ >+2018-06-10 Jianjun Zhu <jianjun.zhu@intel.com> >+ >+ Hash deviceId and groupId of MediaTrackCapabilities. >+ https://bugs.webkit.org/show_bug.cgi?id=186471 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ This change makes the identifier for the source of the MediaStreamTrack >+ has the same value returned by enumerateDevices(). It also prevents real >+ device ID being leaked. >+ >+ * fast/mediastream/MediaStreamTrack-getCapabilities.html: >+ > 2018-06-06 David Fenton <david_fenton@apple.com> > > Layout Test imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html is a flaky failure. >diff --git a/LayoutTests/fast/mediastream/MediaStreamTrack-getCapabilities.html b/LayoutTests/fast/mediastream/MediaStreamTrack-getCapabilities.html >index 024554ed418d3d8c1c4f90c1b3c862e64d3ff3b0..0ddb9e20657f7c9f23389ca92dc283e0fc337025 100644 >--- a/LayoutTests/fast/mediastream/MediaStreamTrack-getCapabilities.html >+++ b/LayoutTests/fast/mediastream/MediaStreamTrack-getCapabilities.html >@@ -5,6 +5,7 @@ > <script src="./resources/getUserMedia-helper.js"></script> > <script> > var mediaStream; >+ var devices; > > function limitPrecision(value, precision) > { >@@ -41,13 +42,26 @@ > return value + " }"; > } > >+ function validateDeviceId(deviceId, trackKind) >+ { >+ if(trackKind !== 'audio' && trackKind !== 'video') >+ return false; >+ var deviceKind = (trackKind === 'audio') ? 'audioinput' : 'videoinput'; >+ for (var deviceInfo of devices) { >+ if(deviceInfo.deviceId === deviceId && deviceInfo.kind === deviceKind) { >+ return true; >+ } >+ } >+ return false; >+ } >+ > function listTrackProperties(track) > { > debug(`${track.kind} track capabilities:`); > capabilities = track.getCapabilities(); > for (var property in capabilities) { > if (capabilities.hasOwnProperty(property) || capabilities.__proto__.hasOwnProperty(property)) >- if (property == "deviceId") >+ if (property === "deviceId" && validateDeviceId(capabilities[property], track.kind)) > value = "<UUID>"; > else if (typeof capabilities[property] === "object") > value = capabilityRange(property, capabilities[property]); >@@ -69,7 +83,13 @@ > function start() > { > description("Tests MediaStreamTrack.getCapabilities."); >- getUserMedia("allow", {audio:true, video:true}, gotStream); >+ navigator.mediaDevices.enumerateDevices().then(deviceInfoArray => { >+ devices = deviceInfoArray; >+ getUserMedia("allow", {audio:true, video:true}, gotStream); >+ },e => { >+ testFailed('enumerateDevices failed:' + e); >+ finishJSTest(); >+ }); > } > > window.jsTestIsAsync = true;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 186471
:
342381
|
342412
|
342500