[ 
https://issues.apache.org/jira/browse/CB-12780?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mike M. updated CB-12780:
-------------------------
    Description: 
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:xml}
    <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.

  was:
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.


> 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:xml}
>     <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