Closed
Bug 1450762
Opened 6 years ago
Closed 5 years ago
MediaDevices.enumerateDevices() should not trigger System permissions prompt
Categories
(GeckoView :: Media, defect, P1)
Tracking
(geckoview64 wontfix, geckoview65 wontfix, geckoview66 wontfix, firefox64 wontfix, firefox65+ wontfix, firefox66 fixed)
RESOLVED
FIXED
mozilla66
People
(Reporter: JanH, Assigned: snorp)
References
Details
Attachments
(1 file)
47 bytes,
text/x-phabricator-request
|
RyanVM
:
approval-mozilla-beta-
|
Details | Review |
When MediaDevices.enumerateDevices() is called on Android, we need to have the corresponding Android runtime permissions if we want to enumerate really *all* available devices, so if we haven't already got them, we trigger a corresponding prompt [1]. If the user didn't grant those permissions, we just go ahead and enumerate whatever devices are available even without special OS permissions. The problem is that some websites (e.g. https://www.target.com) call MediaDevices.enumerateDevices() as soon as the page has loaded, even if it is not immediately obvious why camera/microphone access is necessary, in which case the seemingly context-less permission prompt can feel somewhat sketchy. As far as I can tell from running [2], Chrome just takes whatever runtime permissions are already available and enumerates the devices that can be found with those permissions, but *doesn't* prompt for additional permissions, i.e. the same behaviour we'd get if we'd set "media.navigator.permission.device" to false even on Android. Alternatively, we could try adding some sort of explanatory note to our permissions request, or ...? [1] https://dxr.mozilla.org/mozilla-central/rev/a64a0f3c1662e8b17b1062f12243dadbce6f9032/dom/media/MediaManager.cpp#1972 [2] http://jsfiddle.net/mdhfhgef/1 - based on the code sample in https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices
Reporter | ||
Comment 1•6 years ago
|
||
Although given the fact that enumerateDevices() won't return human-readable labels unless a MediaStream is already active (in which we would have prompted both for the system and the internal Firefox permission anyway) or a persistent getUserMedia() permission is available (which currently isn't implemented - bug 1027623), maybe just returning the default devices that get enumerated even without OS runtime permissions might be enough, so we could avoid the additional permission prompt just like Chrome?
Comment 2•6 years ago
|
||
Re-triaging per https://bugzilla.mozilla.org/show_bug.cgi?id=1473195 Needinfo :susheel if you think this bug should be re-triaged.
Priority: -- → P5
Comment 6•6 years ago
|
||
Part of me wants Firefox to keep the notifications even though they are not user friendly. Enumerating the device's cameras and microphones is poor behavior on the website's/ad network's part when they have no intention of creating a webrtc application.
Comment 8•6 years ago
|
||
Yet another method of browser fingerprinting, and privacy abuse. Who has your data? Researchers scrutinize apps for ties to advertisers, analytics firms https://www.cbc.ca/news/technology/app-privacy-policy-apptrans-uoft-third-parties-ads-code-1.4791834
Assignee | ||
Comment 9•6 years ago
|
||
Moving to GeckoView and clearing priority so we can re-triage.
Component: Audio/Video → GeckoView
Priority: P5 → --
Updated•6 years ago
|
Priority: -- → P3
Comment 10•6 years ago
|
||
Nick Nguyen asked that we reprioritize this bug because he has been seeing a dramatic increase in the number of media prompts in Fennec Nightly over the last 1-2 weeks.
status-firefox65:
--- → affected
Priority: P3 → --
Updated•6 years ago
|
tracking-firefox65:
--- → +
Comment 11•6 years ago
|
||
What would be the fallout from blocking GUM enumerateDevices from 3rd party scripts? Nils any thoughts on how we can handle ad networks using GUM enumerateDevices without causing undo webcompat issues?
Flags: needinfo?(drno)
Comment 12•6 years ago
|
||
For what it’s worth, we have also seen frequent use of enumerateDevices by sites that never use media capture - presumably for fingerprinting. We filed a spec issue [1] and changed WebKit to have enumerateDevices only return devices that are available to getUserMedia [2]. [1] https://github.com/w3c/mediacapture-main/issues/549 [2] https://bugs.webkit.org/show_bug.cgi?id=191177
Comment 13•6 years ago
|
||
Andrew, we're seeing more instances of third-party scripts trying to enumerate media devices (presumably for fingerprinting). This causes Fennec to blast the user with annoying permission prompts. I think we need some DOM team input on solving this UX issue.
Flags: needinfo?(overholt)
Comment 14•6 years ago
|
||
I've started an email thread to find someone to own it and I'll get back to you. Thanks, Eric, for the pointers in comment 12!
Comment 15•6 years ago
|
||
(In reply to Kevin Brosnan [:kbrosnan] from comment #11) > What would be the fallout from blocking GUM enumerateDevices from 3rd party > scripts? Nils any thoughts on how we can handle ad networks using GUM > enumerateDevices without causing undo webcompat issues? Comment 0 was about target.com calling this API, presumably as a first-party. I think we should just fix the bug for real.
Comment 16•6 years ago
|
||
We had a bit of an in-person conversation just now and the thinking is that a fix here needs to be Android-specific. I think David Bolter is looking into who has time to do it.
Flags: needinfo?(overholt)
Comment 17•6 years ago
|
||
+NI jib. In passing Maire thought Jan-Ivar might know a way forward here. Please see comments, including comment 0 and comment 12.
Flags: needinfo?(jib)
Comment 19•6 years ago
|
||
enumerateDevices() should never prompt. There is no accommodation for this in the spec. In bug 1493318 comment 2 I reached out to see how to handle this in the spec, and learned all the other vendors are able to enumerate devices on Android somehow without triggering any kind of prompt. We should strive for parity with that I think. If this means we can only return a reduced set, that seems fine. Even if this means we won't be able to enumerate anything at all, an empty list or some dummy set [1] seems preferable over the current behavior. I'd recommend a narrow Android fix here, and maybe open a separate issue on ways we might want to reduce fingerprinting further, maybe the way Safari does this (1 dummy cam + 1 dummy mic) ahead of gUM grant. Some sharp edges around deviceIds to work out. [1] We already have code to return a dummy set when privacy.resistFingerprinting is set to true.
Flags: needinfo?(jib)
Assignee | ||
Updated•6 years ago
|
Assignee: nobody → snorp
Comment 20•6 years ago
|
||
My assumption here is we should ask for this system permission the same time we ask for camera and/or mic permission in response to the user granting gUM permission (I'm sort of hoping they're the same, but just in case). I.e. once the user has granted gUM now or in the past, I'd expect enumerateDevices() to return real devices. Maybe that goes without saying, but just TBC.
Comment 21•6 years ago
|
||
In comment 0, Jan said that Chrome seems to just be enumerating the devices that are visible through the existing runtime permissions, without asking for new permissions first...
Reporter | ||
Comment 22•6 years ago
|
||
Although to clarify, I never really checked *what kinds of devices* get returned exactly - I only ever ran that JS fiddle from comment #0 and noticed that even without the Android OS permission, *something* would still be returned. If I then granted the permission, if I remember correctly I saw those initial devices (with the same ID) again, plus some new, additional devices, and I therefore I assumed that the latter represent the real camera/microphone inputs.
Comment 23•6 years ago
|
||
I'm renaming this bug for clarity. Please object if there's remaining uncertainty about desired behavior. Based on specs and parity it's more important this method not prompt than it return anything useful in the pre-permission state IMHO.
Summary: System permissions prompt triggered by MediaDevices.enumerateDevices() can lack context → MediaDevices.enumerateDevices() should not trigger System permissions prompt
Updated•6 years ago
|
status-firefox64:
--- → fix-optional
Priority: -- → P1
Comment 24•6 years ago
|
||
I think jib answered the question better then I could have - clearing NI
Flags: needinfo?(drno)
Comment 25•6 years ago
|
||
64=wontfix because it's too late to uplift a fix to 64 Beta before 64's December 11 release date.
Assignee | ||
Comment 26•5 years ago
|
||
Updated•5 years ago
|
Product: Firefox for Android → GeckoView
Comment 27•5 years ago
|
||
Pushed by jwillcox@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/0e9a610fe05f Don't prompt for device permissions on Android in MediaDevices.enumerateDevices() r=achronop
Comment 28•5 years ago
|
||
Backed out changeset for turning Bug 1481028 into permafail. Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&searchStr=android%2C4.3%2Capi16%2B%2Cdebug%2Ctest-android-em-4.3-arm7-api-16%2Fdebug-geckoview-junit-e10s-6%2C%28gv-junit6%29&fromchange=0e9a610fe05f5e830d4cc387b6d293e94347e3c7&tochange=858666e4b07a658477ed7f800b9deb641cc5f697&selectedJob=218876807 Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=218876807&repo=autoland&lineNumber=2063 Backout link: https://hg.mozilla.org/integration/autoland/rev/858666e4b07a658477ed7f800b9deb641cc5f697 [task 2018-12-26T22:46:45.420Z] 22:46:45 INFO - TEST-START | org.mozilla.geckoview.test.PermissionDelegateTest.media [task 2018-12-26T22:49:10.729Z] 22:49:10 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: id=AndroidJUnitRunner [task 2018-12-26T22:49:10.729Z] 22:49:10 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: current=37 [task 2018-12-26T22:49:10.730Z] 22:49:10 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: class=org.mozilla.geckoview.test.PermissionDelegateTest [task 2018-12-26T22:49:10.730Z] 22:49:10 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: stream= [task 2018-12-26T22:49:10.730Z] 22:49:10 INFO - org.mozilla.geckoview.test | Error in media(org.mozilla.geckoview.test.PermissionDelegateTest): [task 2018-12-26T22:49:10.730Z] 22:49:10 INFO - org.mozilla.geckoview.test | java.lang.AssertionError: onAndroidPermissionsRequest should be called specified number of times [task 2018-12-26T22:49:10.731Z] 22:49:10 INFO - org.mozilla.geckoview.test | Expected: <1> [task 2018-12-26T22:49:10.731Z] 22:49:10 INFO - org.mozilla.geckoview.test | but: was <0> [task 2018-12-26T22:49:10.732Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) [task 2018-12-26T22:49:10.733Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.junit.Assert.assertThat(Assert.java:956) [task 2018-12-26T22:49:10.734Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.junit.rules.ErrorCollector$1.call(ErrorCollector.java:65) [task 2018-12-26T22:49:10.734Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.junit.rules.ErrorCollector.checkSucceeds(ErrorCollector.java:78) [task 2018-12-26T22:49:10.735Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.junit.rules.ErrorCollector.checkThat(ErrorCollector.java:63) [task 2018-12-26T22:49:10.736Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule.checkThat(GeckoSessionTestRule.java:880) [task 2018-12-26T22:49:10.736Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule.assertMatchesCount(GeckoSessionTestRule.java:914) [task 2018-12-26T22:49:10.736Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule.access$200(GeckoSessionTestRule.java:82) [task 2018-12-26T22:49:10.737Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule$CallbackDelegates.clearAndAssert(GeckoSessionTestRule.java:743) [task 2018-12-26T22:49:10.737Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule.afterWait(GeckoSessionTestRule.java:1669) [task 2018-12-26T22:49:10.738Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule.waitForJS(GeckoSessionTestRule.java:2042) [task 2018-12-26T22:49:10.738Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.BaseSessionTest.waitForJS(BaseSessionTest.kt:134) [task 2018-12-26T22:49:10.739Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.PermissionDelegateTest.media(PermissionDelegateTest.kt:66) [task 2018-12-26T22:49:10.739Z] 22:49:10 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invokeNative(Native Method) [task 2018-12-26T22:49:10.739Z] 22:49:10 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invoke(Method.java:525) [task 2018-12-26T22:49:10.740Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) [task 2018-12-26T22:49:10.740Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [task 2018-12-26T22:49:10.741Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) [task 2018-12-26T22:49:10.741Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) [task 2018-12-26T22:49:10.742Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule$3$1.run(GeckoSessionTestRule.java:1384) [task 2018-12-26T22:49:10.742Z] 22:49:10 INFO - org.mozilla.geckoview.test | at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:1719) [task 2018-12-26T22:49:10.743Z] 22:49:10 INFO - org.mozilla.geckoview.test | at android.os.Handler.handleCallback(Handler.java:730) [task 2018-12-26T22:49:10.743Z] 22:49:10 INFO - org.mozilla.geckoview.test | at android.os.Handler.dispatchMessage(Handler.java:92) [task 2018-12-26T22:49:10.743Z] 22:49:10 INFO - org.mozilla.geckoview.test | at android.os.Looper.loop(Looper.java:137) [task 2018-12-26T22:49:10.744Z] 22:49:10 INFO - org.mozilla.geckoview.test | at android.app.ActivityThread.main(ActivityThread.java:5103) [task 2018-12-26T22:49:10.744Z] 22:49:10 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invokeNative(Native Method) [task 2018-12-26T22:49:10.745Z] 22:49:10 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invoke(Method.java:525) [task 2018-12-26T22:49:10.745Z] 22:49:10 INFO - org.mozilla.geckoview.test | at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) [task 2018-12-26T22:49:10.746Z] 22:49:10 INFO - org.mozilla.geckoview.test | at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) [task 2018-12-26T22:49:10.747Z] 22:49:10 INFO - org.mozilla.geckoview.test | at dalvik.system.NativeStart.main(Native Method) [task 2018-12-26T22:49:10.747Z] 22:49:10 INFO - org.mozilla.geckoview.test | [task 2018-12-26T22:49:10.747Z] 22:49:10 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: numtests=64 [task 2018-12-26T22:49:10.748Z] 22:49:10 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: stack=java.lang.AssertionError: onAndroidPermissionsRequest should be called specified number of times [task 2018-12-26T22:49:10.748Z] 22:49:10 INFO - org.mozilla.geckoview.test | Expected: <1> [task 2018-12-26T22:49:10.749Z] 22:49:10 INFO - org.mozilla.geckoview.test | but: was <0> [task 2018-12-26T22:49:10.749Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) [task 2018-12-26T22:49:10.750Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.junit.Assert.assertThat(Assert.java:956) [task 2018-12-26T22:49:10.750Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.junit.rules.ErrorCollector$1.call(ErrorCollector.java:65) [task 2018-12-26T22:49:10.751Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.junit.rules.ErrorCollector.checkSucceeds(ErrorCollector.java:78) [task 2018-12-26T22:49:10.751Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.junit.rules.ErrorCollector.checkThat(ErrorCollector.java:63) [task 2018-12-26T22:49:10.752Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule.checkThat(GeckoSessionTestRule.java:880) [task 2018-12-26T22:49:10.752Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule.assertMatchesCount(GeckoSessionTestRule.java:914) [task 2018-12-26T22:49:10.753Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule.access$200(GeckoSessionTestRule.java:82) [task 2018-12-26T22:49:10.754Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule$CallbackDelegates.clearAndAssert(GeckoSessionTestRule.java:743) [task 2018-12-26T22:49:10.755Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule.afterWait(GeckoSessionTestRule.java:1669) [task 2018-12-26T22:49:10.755Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule.waitForJS(GeckoSessionTestRule.java:2042) [task 2018-12-26T22:49:10.755Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.BaseSessionTest.waitForJS(BaseSessionTest.kt:134) [task 2018-12-26T22:49:10.756Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.PermissionDelegateTest.media(PermissionDelegateTest.kt:66) [task 2018-12-26T22:49:10.757Z] 22:49:10 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invokeNative(Native Method) [task 2018-12-26T22:49:10.757Z] 22:49:10 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invoke(Method.java:525) [task 2018-12-26T22:49:10.758Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) [task 2018-12-26T22:49:10.759Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [task 2018-12-26T22:49:10.759Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) [task 2018-12-26T22:49:10.760Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) [task 2018-12-26T22:49:10.760Z] 22:49:10 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule$3$1.run(GeckoSessionTestRule.java:1384) [task 2018-12-26T22:49:10.761Z] 22:49:10 INFO - org.mozilla.geckoview.test | at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:1719) [task 2018-12-26T22:49:10.761Z] 22:49:10 INFO - org.mozilla.geckoview.test | at android.os.Handler.handleCallback(Handler.java:730) [task 2018-12-26T22:49:10.762Z] 22:49:10 INFO - org.mozilla.geckoview.test | at android.os.Handler.dispatchMessage(Handler.java:92) [task 2018-12-26T22:49:10.762Z] 22:49:10 INFO - org.mozilla.geckoview.test | at android.os.Looper.loop(Looper.java:137) [task 2018-12-26T22:49:10.763Z] 22:49:10 INFO - org.mozilla.geckoview.test | at android.app.ActivityThread.main(ActivityThread.java:5103) [task 2018-12-26T22:49:10.764Z] 22:49:10 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invokeNative(Native Method) [task 2018-12-26T22:49:10.764Z] 22:49:10 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invoke(Method.java:525) [task 2018-12-26T22:49:10.765Z] 22:49:10 INFO - org.mozilla.geckoview.test | at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) [task 2018-12-26T22:49:10.765Z] 22:49:10 INFO - org.mozilla.geckoview.test | at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) [task 2018-12-26T22:49:10.765Z] 22:49:10 INFO - org.mozilla.geckoview.test | at dalvik.system.NativeStart.main(Native Method) [task 2018-12-26T22:49:10.766Z] 22:49:10 INFO - org.mozilla.geckoview.test | [task 2018-12-26T22:49:10.766Z] 22:49:10 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: test=media [task 2018-12-26T22:49:10.767Z] 22:49:10 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS_CODE: -2 [task 2018-12-26T22:49:10.767Z] 22:49:10 WARNING - TEST-UNEXPECTED-FAIL | org.mozilla.geckoview.test.PermissionDelegateTest.media | status -2 [task 2018-12-26T22:49:10.768Z] 22:49:10 INFO - TEST-INFO took 145325ms [task 2018-12-26T22:49:10.768Z] 22:49:10 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: id=AndroidJUnitRunner [task 2018-12-26T22:49:10.769Z] 22:49:10 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: current=38 [task 2018-12-26T22:49:10.770Z] 22:49:10 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: class=org.mozilla.geckoview.test.ProgressDelegateTest [task 2018-12-26T22:49:10.770Z] 22:49:10 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: stream= [task 2018-12-26T22:49:10.771Z] 22:49:10 INFO - org.mozilla.geckoview.test | org.mozilla.geckoview.test.ProgressDelegateTest: [task 2018-12-26T22:49:10.771Z] 22:49:10 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: numtests=64 [task 2018-12-26T22:49:10.772Z] 22:49:10 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: test=noSecurityInfoForExpiredTLS [task 2018-12-26T22:49:10.772Z] 22:49:10 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS_CODE: 1
Flags: needinfo?(snorp)
Assignee | ||
Updated•5 years ago
|
Flags: needinfo?(snorp)
Comment 29•5 years ago
|
||
Pushed by jwillcox@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/b0471cb7631f Don't prompt for device permissions on Android in MediaDevices.enumerateDevices() r=achronop
Comment 30•5 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/b0471cb7631f
Status: NEW → RESOLVED
Closed: 5 years ago
status-firefox66:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla66
Comment 31•5 years ago
|
||
Please request Beta approval on this when you get a chance.
Flags: needinfo?(snorp)
Assignee | ||
Comment 32•5 years ago
|
||
Comment on attachment 9031476 [details] Bug 1450762 - Don't prompt for device permissions on Android in MediaDevices.enumerateDevices() r?achronop [Beta/Release Uplift Approval Request] Feature/Bug causing the regression: N/A User impact if declined: Annoying prompts for camera/mic access due to fingerprinting attempts Is this code covered by automated tests?: Yes Has the fix been verified in Nightly?: Yes Needs manual test from QE?: No If yes, steps to reproduce: List of other uplifts needed: None Risk to taking this patch: Low Why is the change risky/not risky? (and alternatives if risky): Fairy straightforward, has tests. String changes made/needed: None
Flags: needinfo?(snorp)
Attachment #9031476 -
Flags: approval-mozilla-beta?
Comment 33•5 years ago
|
||
64=wontfix
status-geckoview64:
--- → wontfix
status-geckoview65:
--- → wontfix
status-geckoview66:
--- → wontfix
Assignee | ||
Comment 35•5 years ago
|
||
It looks like the clang reformatting hosed us. Ugh. Maybe just let it ride?
Flags: needinfo?(snorp)
Comment 36•5 years ago
|
||
That landed before 65 went to Beta (was done at the end of the Nightly cycle specifically to avoid uplift pain).
Comment 37•5 years ago
|
||
Comment on attachment 9031476 [details] Bug 1450762 - Don't prompt for device permissions on Android in MediaDevices.enumerateDevices() r?achronop If nobody wants to do the rebase, doesn't sound like there's much choice in the matter.
Attachment #9031476 -
Flags: approval-mozilla-beta? → approval-mozilla-beta-
Updated•5 years ago
|
Updated•4 years ago
|
Comment 39•2 years ago
|
||
Moving some media bugs to the new GeckoView::Media component.
Component: General → Media
You need to log in
before you can comment on or make changes to this bug.
Description
•