Mike M. created CB-12780:
----------------------------

             Summary: Add option to setMixedContentMode
                 Key: CB-12780
                 URL: https://issues.apache.org/jira/browse/CB-12780
             Project: Apache Cordova
          Issue Type: New Feature
          Components: cordova-android
    Affects Versions: 7.0.0
            Reporter: Mike M.


We're currently developing an application that streams audio from a continuous 
stream over http. We have an existing web application served over https. The 
audio streams, which are built using HTML5 audio, are served in http only.

On Android, the WebView won't load our audio stream because of a mixed content 
error.

According to my research, this is because on Android, as of API level 20, the 
WebView gets a mixedContentMode of {{MIXED_CONTENT_NEVER_ALLOW}} by default 
(see the documentation 
[here|https://developer.android.com/reference/android/webkit/WebSettings.html#setMixedContentMode(int)].
 This is especially frustrating as it doesn't match [what modern browsers 
do|https://developers.google.com/web/fundamentals/security/prevent-mixed-content/fixing-mixed-content],
 which is to allow "passive" mixed content that doesn't interact with the page 
directly like audio/video streams. So in the end, the WebView doesn't behave 
like the browser, which breaks our application.

When I change the API target level to 19, the resource gets loaded 
successfully. However, sticking with API level 19 isn't a long-term solution. 

As seen in [the 
documentation|https://developer.android.com/reference/android/webkit/WebSettings.html#setMixedContentMode(int)],
 there is a way to let Android treat mixed content like the browser, which 
involves setting the MixedContentMode WebSetting to 
{{MIXED_CONTENT_COMPATIBILITY_MODE}}. However, as I understand it (I'm new to 
Cordova), this would require me to add custom code to the generated android 
activity code, which is discouraged and which I would prefer not to do.

It would be nice if cordova-android added a configuration setting for mixed 
content which would get translated into setting the MixedContentMode 
WebSetting. It could look something like:

{{code}}
    <platform name="android">
        <preference name="android-mixedContentMode" value="COMPATIBILITY_MODE" 
/>
    </platform>
{{code}}

That would make the code more maintainable and expresses what we need concisely.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org

Reply via email to