uazo / cromite

Cromite a Bromite fork with ad blocking and privacy enhancements; take back your browser!
https://www.cromite.org/
GNU General Public License v3.0
2.96k stars 67 forks source link

AudioWorklets blocked by internal firewall #207

Closed Noir16 closed 3 months ago

Noir16 commented 11 months ago

Preliminary checklist

Can the bug be reproduced with corresponding Chromium version?

Yes

Cromite version

116.0.5845.96

Device architecture

x64

Device model

(General Computers)

Changed flags

ignore-gpu-blocklist Enabled

overlay-strategies Occluded and unoccluded buffers (single-fullscreen,single-on-top,underlay)

enable-webrtc-hide-local-ips-with-mdns Enabled

show-autofill-type-predictions Disabled

smooth-scrolling Disabled

enable-quic Disabled

enable-webassembly-lazy-compilation Enabled

enable-gpu-rasterization Enabled

enable-waitable-swap-chain 

username-first-flow-fallback-crowdsourcing Disabled

enable-web-bluetooth-new-permissions-backend Enabled

enable-webusb-device-detection Disabled

enable-zero-copy Disabled

enable-vulkan Disabled

in-product-help-demo-mode-choice Enabled IPH_AutofillExternalAccountProfileSuggestion

isolate-origins Enabled

media-router-cast-allow-all-ips Disabled

web-share Disabled

Experimental system keyboard lock

system-keyboard-lock Disabled

disallow-doc-written-script-loads Enabled

enable-generic-sensor-extra-classes Disabled

block-insecure-private-network-requests Enabled

scrollable-tabstrip Enabled

enable-parallel-downloading Enabled

enable-async-dns Disabled

disable-process-reuse Enabled

calculate-native-win-occlusion Enabled

use-angle D3D11on12

strict-origin-isolation Enabled

enable-fenced-frames Disabled

enable-fenced-frames-developer-mode Disabled

encrypted-client-hello Enabled

use-dns-https-svcb-alpn Enabled

back-forward-cache Disabled

enable-winrt-geolocation-implementation Disabled

enable-first-party-sets Disabled

Throttle non-visible cross-origin iframes

enable-throttle-display-none-and-visibility-hidden-cross-origin-iframes Enabled

partitioned-cookies Enabled

third-party-storage-partitioning Enabled

enable-drdc Enabled

extensions-menu-access-control Enabled

enable-tab-audio-muting Enabled

enable-isolated-sandboxed-iframes Enabled

download-bubble Enabled

download-bubble-v2 Enabled

web-sql-access Disabled

clipboard-unsanitized-content Disabled

Is this bug happening in an incognito tab?

Yes

Is this bug caused by the adblocker?

No

Is this bug a crash?

No

Describe the bug

Allowing microphone permissions and then granting them to the site does not work.

Steps to reproduce the bug

Allow microphone permissions in site settings by clicking the inverted^ button to the right of the search bar.

Expected behavior

Microphone works after allowing microphone permissions.

Screenshots

No response

uazo commented 11 months ago

I use it for video conferences at work and no problem detected (even in incognito), please try with https://mictests.com I'm afraid you have a problem with permissions in Windows.

can anyone else confirm?

by clicking the inverted^ button

Inverted in what sense?

Changed flags

OT: are you sure about all those modified flags? some are already like this, but I have not check them all.

Noir16 commented 11 months ago

t w sc

All of them don't work :(

by clicking the inverted^ button

inverted^

Changed flags

Yes, I copied and pasted the flags that I manually adjusted.

uazo commented 11 months ago

I'm sorry but I can't read your language! my advice is to try WITHOUT changing any flags.

image

other thing, I don't know what TC Near Audio is, what other voices do you have? because everything seems to be working, but it says it is 'paused'

Noir16 commented 11 months ago

I'm going to look for problematic flags. If it's an issue with some flags, I'll write up the cause and close this report.

other thing, I don't know what TC Near Audio is, what other voices do you have? because everything seems to be working, but it says it is 'paused'

TC Near Audio is a microphone device. This is my microphone device, labeled MIC in Japanese, and other devices were similarly paused.

uazo commented 11 months ago

because everything seems to be working, but it says it is 'paused'

I checked the source code, ~it seems~ it could to be the fault of autoplay, try activating it

Noir16 commented 11 months ago

I checked the source code, it could to be the fault of autoplay, try activating it

After I gave Autoplay permission, I was able to get the microphone permission fine and it worked on mictests.com, but I'm still not getting it on discord. There seems to be an implementation issue with microphone permissions on the discord site.

At least, I don't think it's a problem with Chromite, so I'm closing the report.

unwnstr commented 4 months ago

@uazo same issue with discord. The error from console is: "getUserMedia error: AbortError: The user aborted a request", when trying to click enable microphone in discord UI.

Also discord actually can access microphone, since I can hear my voice in "test microphone" ui (but it does not show voice levels here).

In ungoogled-chromium it works fine. And main difference is permission prompt window, that appears in chromium(and not in cromite), when I click enable microphone in UI.

*ofc I tried giving all permissions, disabling/enabling all cromite specific flags, and even enabling "chrome://flags/#unsafely-treat-insecure-origin-as-secure"

uazo commented 4 months ago

I do not use discord. it would take someone to try it to see whether the problem is with the browser or the PC.

In ungoogled-chromium it works fine.

too different, does not help

unwnstr commented 4 months ago

@uazo I did my own investigation, and tested almost all versions down to v112.0.5615.138 https://github.com/uazo/bromite-buildtools/tree/v112.0.5615.138-arm64-89427c73fb7c09e9e2aaf457c3cd87710e95ae34 And with next update it got broken v113.0.5672.63

*also tested on 2 different pc and windows sandbox vm, so it is not a pc issue

**i've tested, looks like it is "Enable internal firewall (Cromite flag)" causing issue, disabling it fixes the problem

uazo commented 4 months ago

i've tested, looks like it is "Enable internal firewall (Cromite flag)" causing issue, disabling it fixes the problem

please check which call is blocked in the log. just add --enable-logging --v=0 --log-file=C:\temp\log.txt, see https://github.com/uazo/cromite?tab=readme-ov-file#auto-update-setup-for-windows:

ChromiumCommandLine=--enable-logging --v=0 --log-file=C:\temp\log.txt --user-data-dir=".\User Data" --no-default-browser-check
unwnstr commented 4 months ago

Full error from log, after mic discord UI btn click:

[4660:1284:0228/150541.059:INFO:CONSOLE(0)] "Unrecognized Content-Security-Policy directive 'prefetch-src'.", source: https://discord.com/channels/@me (0)
[4660:1284:0228/150541.059:INFO:CONSOLE(1)] "%c[AudioActionCreators]
font-weight: bold;
color: purple;
 unknown getUserMedia error: AbortError: The user aborted a request.", source: https://discord.com/assets/47470.91c2d89ebc10ef7a8bdd.js (1)

Looks like, it is getUserMedia call (or some kind of it-_-), somehow gets rejected by internal firewall. Js is obfuscated, so it is hard to tell exactly where it got aborted. Last readable string, that returns error is promise:

o.default.getMediaEngine().enable().then(()=>{
github-actions[bot] commented 4 months ago

This issue has been automatically marked as stale as there has been no recent activity in response to our request for more information. Please respond so that we can proceed with this issue.

uazo commented 4 months ago

um... unfortunately that log doesn't say much. I can't tell if you have autoplay enabled, have you tried?

unwnstr commented 4 months ago

Yes, I have tried. And even enabling every permission for the site. Only disabling "internal firewall" cromite flag works. Is there any config for internal firewall? Or maybe it is possible to disable it for specific site?

uazo commented 4 months ago

Only disabling "internal firewall" cromite flag works.

ah, I forgot about that! please search the log and post the lines with ---ABORTED SimpleURLLoaderImpl:

unwnstr commented 4 months ago

There is only this entry with "---ABORTED" flag:

[3184:3252:0305/162956.134:INFO:CONSOLE(0)] "Unrecognized Content-Security-Policy directive 'prefetch-src'.", source: https://discord.com/channels/@me (0)
[3184:3252:0305/162956.135:INFO:CONSOLE(0)] "Unrecognized Content-Security-Policy directive 'prefetch-src'.", source: https://discord.com/channels/@me (0)
[1928:3636:0305/162956.136:INFO:url_request_http_job.cc(634)] ---ABORTED URLRequestHttpJob: blink_resource_loader_worklet(71249662) url: https://discord.com/assets/worklet.84fc546a1c8906aa08ae.js path: third_party/blink/renderer/platform/loader/fetch/fetch_utils.cc
[3184:3252:0305/162956.139:INFO:CONSOLE(1)] "%c[AudioActionCreators]
font-weight: bold;
color: purple;
 unknown getUserMedia error: AbortError: The user aborted a request.", source: https://discord.com/assets/47470.91c2d89ebc10ef7a8bdd.js (1)

(didn't noticed it first time) this error with "---ABORTED" only shown first time you click mic btn, after site reload, then it only shows this error:

[3184:3252:0305/163526.272:INFO:CONSOLE(0)] "Unrecognized Content-Security-Policy directive 'prefetch-src'.", source: https://discord.com/channels/@me (0)
[3184:3252:0305/163526.273:INFO:CONSOLE(1)] "%c[AudioActionCreators]
font-weight: bold;
color: purple;
 unknown getUserMedia error: AbortError: The user aborted a request.", source: https://discord.com/assets/47470.91c2d89ebc10ef7a8bdd.js (1)
uazo commented 4 months ago

worklets are currently disabled by default. it is necessary to check exactly what they are and whether they should be enabled, at least the audio worklets. Check this with https://mdn.github.io/webaudio-examples/audioworklet

unwnstr commented 4 months ago

For this https://mdn.github.io/webaudio-examples/audioworklet Error:

[5436:5032:0305/171240.268:INFO:CONSOLE(24)] "adding...", source: https://mdn.github.io/webaudio-examples/audioworklet/script.js (24)
[5188:2336:0305/171240.271:INFO:url_request_http_job.cc(634)] ---ABORTED URLRequestHttpJob: blink_resource_loader_worklet(71249662) url: https://mdn.github.io/webaudio-examples/audioworklet/hiss-generator.js path: third_party/blink/renderer/platform/loader/fetch/fetch_utils.cc
[5436:5032:0305/171240.272:INFO:CONSOLE(28)] "** Error: Unable to create worklet node: AbortError: The user aborted a request.", source: https://mdn.github.io/webaudio-examples/audioworklet/script.js (28)
[5436:5032:0305/171240.272:INFO:CONSOLE(40)] "** Error: unable to create hiss processor", source: https://mdn.github.io/webaudio-examples/audioworklet/script.js (40)

It it possible to add per-site switch to enable worklets? same as webrtc *permission.

uazo commented 4 months ago

It it possible to add per-site switch to enable worklets? same as webrtc *permission.

since I have never used audio worlets, I don't know exactly what they do. I have disabled worklets in general because they are used for fenced frames (aka ads frames), but I think I can distinguish them from audio worklets and enable them by default.