[Xperia XA2][4.5.0.19] SFOS Browser doesn't get access to camera

REPRODUCIBILITY: 100%
OS VERSION: 4.5.0.19
HARDWARE: Xperia XA2 - Dual SIM h4113
UI LANGUAGE: en_GB
REGRESSION: Probably, additional info

DESCRIPTION:

When joining Jitsi Meet (at framatalk.org, teamjoin.de) or eduMEET (at lets.teamjoin.de), neither service gets to use the phone’s camera. This is despite camera being allowed in the permissions dialog (and the permission being saved for those sites).

PRECONDITIONS:

Using the SFOS built-in web browser, open a video-conference service

STEPS TO REPRODUCE:

  1. Join conference
  2. Permissions dialog is shown. Allow camera and microphone
  3. Receive a “Failed to access your camera for unknown reason” error message

EXPECTED RESULT:

Camera to be available in conference

ACTUAL RESULT:

Camera is not available in conference

MODIFICATIONS:

OpenRepos, Chum

ADDITIONAL INFORMATION:

Relevant or not? Some/most/all apps will show a Sailjail permissions dialog when starting for the first time after boot. The SFOS Browser does not. (Maybe Jollas apps are excempted.)

Regression? I found two similar, closed bug reports; fix should be included in <= 4.4.0.

  • The report about Jolla C was closed because camera was now available.
  • The report about XA2 was closed because the luca service was discontinued. Unclear if problem was really resolved

So… This may be a regression since 4.4.0 - or the fix didn’t help the XA2. Also, camera is available to the browser in 4.5.0.19 on Xperia X but the browser crashes when connecting to a conference.

Note that this is different from

(same OS version, different device) as in this case the browser doesn’t crash.

You can review the apps permissions from its settings dialog in Settings->Apps.

It couldalso be a Firefox-internal setting, either in its gui config or in about:config.

No, as noted:

I haven’t changed anything in about:config and relevant settings look enabled.

Seems the Sailjail permission to use camera is granted ther.

Same issue here. When running

[nemo@xperia ~]$ EMBED_CONSOLE=1 sailfish-browser TESTURL

from a terminal, I get the following logs:

JSComp: EmbedLiteWebrtcUI.js: got getUserMedia:request
JSComp: EmbedLiteWebrtcUI.js: Found videoinput device 'Droid front camera'
JSComp: EmbedLiteWebrtcUI.js: Found videoinput device 'Droid rear camera'
JSComp: EmbedLiteWebrtcUI.js: Found audioinput device 'Null Input'
JSComp: EmbedLiteWebrtcUI.js: Found audioinput device 'Monitor of Droid sink primary_output'
JSComp: EmbedLiteWebrtcUI.js: Found audioinput device 'Monitor of Droid sink deep_buffer'
JSComp: EmbedLiteWebrtcUI.js: Found audioinput device 'Droid source droid'
JSComp: EmbedLiteWebrtcUI.js: Found audioinput device 'Monitor of Null-Ausgabe'
JSComp: EmbedLiteWebrtcUI.js: Subscribed to embedui:webrtcresponse
JSComp: EmbedLiteWebrtcUI.js: Existing permission handled
JSComp: EmbedLiteWebrtcUI.js: getUserMedia:response:allow for callID {d8a6ac4c-f24e-489f-a547-b64d397daff3}
JSComp: EmbedLiteWebrtcUI.js: Deleting request {d8a6ac4c-f24e-489f-a547-b64d397daff3}
JSComp: EmbedLiteWebrtcUI.js: Unsubscribed from embedui:webrtcresponse
JSComp: EmbedLiteWebrtcUI.js: got getUserMedia:request
JSComp: EmbedLiteWebrtcUI.js: Found audioinput device 'Null Input'
JSComp: EmbedLiteWebrtcUI.js: Found audioinput device 'Monitor of Droid sink primary_output'
JSComp: EmbedLiteWebrtcUI.js: Found audioinput device 'Monitor of Droid sink deep_buffer'
JSComp: EmbedLiteWebrtcUI.js: Found audioinput device 'Droid source droid'
JSComp: EmbedLiteWebrtcUI.js: Found audioinput device 'Monitor of Null-Ausgabe'
JSComp: EmbedLiteWebrtcUI.js: Subscribed to embedui:webrtcresponse
JSComp: EmbedLiteWebrtcUI.js: Existing permission handled
JSComp: EmbedLiteWebrtcUI.js: getUserMedia:response:allow for callID {16e7e060-356e-452f-96c5-17e1c0f8bd39}
JSComp: EmbedLiteWebrtcUI.js: Deleting request {16e7e060-356e-452f-96c5-17e1c0f8bd39}
JSComp: EmbedLiteWebrtcUI.js: Unsubscribed from embedui:webrtcresponse
JSComp: EmbedLiteWebrtcUI.js: got recording-device-events
JSComp: EmbedLiteWebrtcUI.js: devices in use: {"video":false,"audio":true}
JSComp: EmbedLiteWebrtcUI.js: got PeerConnection:request

Obviously the cameras are detected and access is allowed for the test page. Devices are enumerated twice for whatever reason and the cameras are not returned for the second call to getUserMedia.

Client code is from the Janus Javascript API as shipped with Jangouts.