Hi again,
Thank you all for your feedback.
A lot of Cordova users will never enable this feature if it is an
opt-
in feature.
This is a very good reason for me as well.
I created a PR which introduces a preference to make the
WebViewAssetLoader opt-out: https://github.com/apache/cordova-
android/pull/1222. Please leave your review.
Is this a way to proceed for cordova-android 10?
Regards
Niklas
On April 29, 2021, Pieter Van Poyer
<pieter.vanpo...@portofantwerp.com>
wrote:
Hey
I have to agree with Bryan and Julio.
Make it opt-out with a next major release. That's my prefered
option.
A lot of Cordova users will never enable this feature if it is an
opt-
in feature.
And yes it would be great if someone did already have some
guidelines
about data migration.
Kind regards
Pieter Van Poyer
-----Oorspronkelijk bericht-----
Van: Niklas Apache <niklasm...@apache.org>
Verzonden: woensdag 28 april 2021 12:14
Aan: dev@cordova.apache.org
Onderwerp: Re: [DISCUSS] Moving forward with the WebView on AndroidX
and cordova-android 10
I would agree with Bryan and Julio that we should use the
opportunity
of this breaking release to move the defaults to current Android
best
practices and remove deprecated settings.
I just started a PR [1] that introduces a preference to allow the
use
file URLs with this release. This means the deprecated settings
[2][3]
are only set with this settings as well. Darryl is right that
probably
many still need to run their app on the file protocol and they
should
have an easy option to do this with the new release. We can now push
new users to avoid this and current users need to check the change
log
and enable this if they really need to.
I agree we shouldn't take the responsibilty of a data migration.
If we don't find consensus to make the WebViewAssetLoader opt-out we
could make it opt-in for now. This would make the upgrade more safe
but potentially many apps less secure because developers don't need
to
think about this change.
[1]
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapache%2Fcordova-
android%2Fpull%2F1222&data=04%7C01%7CPieter.VanPoyer%40portofantwerp.com%7C3874f4566f504fbf6fca08d90a2e5037%7C2337dcc63a214d95bf72da5551a9b048%7C0%7C0%7C637552016304717784%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=yaRNsgmiLk6XqWC3NgWiceVCCF4RiEcwDzFuYzVVU%2Fg%3D&reserved=0
[2]
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdeveloper.android.com%2Freference%2Fandroid%2Fwebkit%2FWebSettings%23setAllowUniversalAccessFromFileURLs&data=04%7C01%7CPieter.VanPoyer%40portofantwerp.com%7C3874f4566f504fbf6fca08d90a2e5037%7C2337dcc63a214d95bf72da5551a9b048%7C0%7C0%7C637552016304717784%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=ZbClSYsggi0ckZgdsSOHJ1Tq6zermY2krIB4zWjngcw%3D&reserved=0(boolean)
[3]https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdeveloper.android.com%2Freference%2Fandroid%2Fwebkit%2FWebSettings%23setAllowFileAccess&data=04%7C01%7CPieter.VanPoyer%40portofantwerp.com%7C3874f4566f504fbf6fca08d90a2e5037%7C2337dcc63a214d95bf72da5551a9b048%7C0%7C0%7C637552016304717784%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=e%2FP3sN894F9SIYkkBSE9Q%2BFz%2FowbKUu4r1le8TgIcf4%3D&reserved=0(boolean)
On April 28, 2021, julio cesar sanchez <jcesarmob...@gmail.com>
wrote:
My understanding is that file urls can technically continue
working,
but the defaults changed and some settings need to be enabled, and
some of them are now deprecated and will stop working at some
point
in
the future.
I think defaulting to the old behavior is ok when doing minor
releases
(not just on, but enforced because otherwise it's a breaking
change),
but whenever we make a major release, we should always use the new
behavior and make the cordova user responsibility to enable the
old
behavior if they need it, because to not "break" existing apps we
will
make all new apps to face the same problem in the future.
About the data loss, the data is not really lost, the data is
still
there, but since the scheme and hostname change it's not accesible
anymore, so if the cordova users can enable the old behavior
they'll
get the data back and should be their responsibility to do so if
needed and do it before releasing a new version. We should of
course
warn about it so they will be aware if they read the release blog
post
or change log.
If cordova does the data migration is when we can screw up and do
it
wrong and cause the massive data loss for all users, I prefer to
not
put that responsibility into the project. You have not tried to do
it
in your own apps because it's risky, would you be confident to do
it
for all users?
2021-04-27 21:15 GMT+02:00, Darryl Pogue <dar...@dpogue.ca>:
To counter a bit, all of my apps are using the standard Cordova
Android WebView, and store all their data in the browser's
indexedDB.
I've had no issues with file URLs (although I expect that will
change
with API 30 enforcement).
Losing data in an app update is unacceptable, and for many apps
it
would be catastrophic (see comments from when Google did a bad
indexedDB migration and people lost data[1]). On iOS with
WKWebView,
I'm stuck in the position of continuing to use file URLs to keep
existing data working because there's no supported path for data
migration to the new scheme.
We made the decision with Cordova iOS to use file URLs by
default
to
ensure that we didn't unexpectedly break existing apps.
We either need to default to using file URLs on Android (which
is
risky considering the API 30 enforcement is restricting what
works
there), or provide an officially supported update path that
preserves
and migrates all the relevant data. (If we opt for the migration
path,
it would be nice to have it support iOS as well.)
If we release a Cordova update that causes a bunch of existing
Android
apps to lose all their data, it will very likely be a public
image
disaster from which we will never recover.
[1]
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbu
gs.chromium.org%2Fp%2Fchromium%2Fissues%2Fdetail%3Fid%3D1033655&
data=04%7C01%7CPieter.VanPoyer%40portofantwerp.com%7C3874f4566f504fb
f6fca08d90a2e5037%7C2337dcc63a214d95bf72da5551a9b048%7C0%7C0%7C63755
2016304727782%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2
luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=5XgUsbuMjAvfG7
l9giIlf2WEuq9VJ8%2FKhN3tOds8rRk%3D&reserved=0
On Tue, Apr 27, 2021 at 8:48 AM Bryan Ellis <er...@apache.org>
wrote:
I also agree.
I think we should move forward with these changes and use the
WebViewAssetLoader by default.
If must, we could write a blog post explaining how to use
Norman's
plugin
for data migration. But I do not know if the plugin is complete
to
cover
all data sources and fits this case.
I believe the change though is necessary.
Starting from API 30, Google has disabled file access to the
WebView
because it introduces possible security risks.
Apps should not open file:// URLs from any external source in
WebView,
don't enable this if your app accepts arbitrary URLs from
external
sources.
In our recent release of Cordova-Android, we explicitly set the
`setAllowFileAccess` to `true` to get around the change that
came
in the
API 30 release. This allowed apps to continue working
temporarily,
while
we would introduce a proper solution in this coming major
release,
preferably following a secure implementation. I believe we
should
not
default to something that has been publicly announced and known
to
lead to
potential security risks.
If we want to support the file scheme to allow users to avoid
data
loss, I
think a config.xml flag can be introduced that users can
manually
set if
they are willing to accept the potential security risks that
exist
with
it. And it could allow them to move over whenever they decide.
On Apr 27, 2021, at 9:07 PM, julio cesar sanchez
<jcesarmob...@gmail.com> wrote:
I would vote for defaulting to WebViewAssetLoader but still
allow
using
file:// from a config.xml preference for the people that are
not
ready
to
move on.
But on cordova-ios 6 I think we ended up defaulting to
file://
and use
the
schemes only as opt-in.
About migrating data, I don't think that's our job, but we
can
point
users
to plugins if you know some.
El mar, 27 abr 2021 a las 8:03, Niklas Apache
(<niklasm...@apache.org>)
escribió:
Hey folks,
we recently merged a PR [1] which significantly changes how
cordova-
android loads web content in the webview and now need to
decide
how to
move proceed.
Google introduced the WebViewAssetLoader to make it possible
to
use
web
content from a standard http(s) scheme instead of file:.
This
was done
to remove security risks [2] and some apps with routing
frameworks
like
React and Angular need this for proper routing.
Because cordova-android 10 now uses AndroidX we could
implement
the
WebViewAssetLoader and remove some deprecated or security
related
WebSettings and move the platform forward to current Android
standards.
This change may break some apps now because the origin
changes
if the
app now runs on https://localhost for example instead of
file://.
Changing the origin means losing access to web storage like
localstorage, indexedb etc. First and foremost we need to
announce
that
change with the release for developers to act but
additionally
we
could
do:
1.) Default back to file:// and make the WebViewAssetLoader
opt-
in via
config.xml. This exposes apps to the security risk:
Note: Apps should not open file:// URLs from any external
source in
WebView, don't enable this if your app accepts arbitrary
URLs
from
external sources. It's recommended to always use
androidx.webkit.WebViewAssetLoader
<
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdeve
loper.android.com%2Freference%2Fandroidx%2Fwebkit%2FWebViewAssetLoader
&data=04%7C01%7CPieter.VanPoyer%40portofantwerp.com%7C3874f4566f50
4fbf6fca08d90a2e5037%7C2337dcc63a214d95bf72da5551a9b048%7C0%7C0%7C6375
52016304727782%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2l
uMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=1gKnQsRLBinJl96WQ
DS06aZ3LPIoyle6glQDAvF7BOc%3D&reserved=0
to access files including assets and resources over
http(s)://
schemes, instead of file:// URLs. To prevent possible
security
issues
targeting
Build.VERSION_CODES.Q
<https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdev
eloper.android.com%2Freference%2Fandroid%2Fos%2FBuild.VERSION_CODES%23
Q&data=04%7C01%7CPieter.VanPoyer%40portofantwerp.com%7C3874f4566f5
04fbf6fca08d90a2e5037%7C2337dcc63a214d95bf72da5551a9b048%7C0%7C0%7C637
552016304727782%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2
luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=7gg4w3lJS%2FJf3P
eVq2ybdUx2aKG1FvsiTJ%2BSPZnkrlA%3D&reserved=0>
and earlier, you should explicitly set this value to false.
2.) Add a migration for localstorage etc. to the platform to
provide a
smoother transition
3.) Use the WebViewAssetLoader only and don't migrate in the
platform
but point users to a plugin that helps them to manage their
migration
Personally I would favor to move to WebViewAssetLoader by
default in
this breaking release to get apps up to date and adapt to
Androids
changes. I don't know how many apps would be affected
because
I
suspect many apps are using native storage solutions (SQLite
etc.) or
are
running Ionics WebView with the https scheme already. I am
doing
both
for my apps because of the many localstorage and non https
scheme
issues
we had in the past and I suspect many did as well.
Cordova Android 10 needs to be released rather sooner than
later
so
please leave your feedback.
Thank you very much and kind regards Niklas
[1]
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%
2Fgithub.com%2Fapache%2Fcordova-
android%2Fpull%2F1137&data=0
4%7C01%7CPieter.VanPoyer%40portofantwerp.com%7C3874f4566f504fbf6
fca08d90a2e5037%7C2337dcc63a214d95bf72da5551a9b048%7C0%7C0%7C637
552016304727782%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQ
IjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=jWKS
fmrX8SwsBbBT2L0QgsA58F3%2FmCNiz%2BGr4d7TzZ8%3D&reserved=0
[2]
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdeve
loper.android.com%2Freference%2Fandroid%2Fwebkit%2FWebSettings%23setAl
lowFileAccess&data=04%7C01%7CPieter.VanPoyer%40portofantwerp.com%7
C3874f4566f504fbf6fca08d90a2e5037%7C2337dcc63a214d95bf72da5551a9b048%7
C0%7C0%7C637552016304727782%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMD
AiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=SzzK
WCqJdddbznOsxQxT5p9NiXIxQDT0DaGJMy1mTRY%3D&reserved=0(boolean)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org
For additional commands, e-mail: dev-h...@cordova.apache.org
--
___________________________________
Julio César Sánchez
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org
For additional commands, e-mail: dev-h...@cordova.apache.org
________________________________
Deze e-mail en alle gekoppelde bestanden zijn officiele documenten
van
Havenbedrijf Antwerpen NV van publiek recht en kunnen vertrouwelijke
of persoonlijke informatie bevatten. Gelieve de afzender
onmiddellijk
via e-mail of telefonisch te verwittigen als u deze e-mail per
vergissing heeft ontvangen en verwijder vervolgens de e-mail zonder
deze te lezen, te reproduceren, te verspreiden of te ontsluiten naar
derden. Havenbedrijf Antwerpen NV van publiek recht is op geen
enkele
manier verantwoordelijk voor fouten of onnauwkeurigheden in de
inhoud
van deze e-mail. Havenbedrijf Antwerpen NV van publiek recht kan
niet
aansprakelijk gesteld worden voor directe of indirecte schade,
verlies
of ongemak veroorzaakt als gevolg van een onnauwkeurigheid of fout
in
deze e-mail.
English Translation: This e-mail and all attached files are official
documents of Antwerp Port Authority and may contain confidential or
personal information. If you have received this e-mail in error, you
are asked to inform the sender by e-mail or telephone immediately,
and
to remove it from your system without reading or reproducing it or
passing it on to other parties. Antwerp Port Authority is in no way
responsible for any errors or inaccuracies in the contents of this
e-
mail, nor can it be held liable for any direct or indirect loss,
damage or inconvenience arising from any such errors or
inaccuracies.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org
For additional commands, e-mail: dev-h...@cordova.apache.org