cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Grieve <agri...@chromium.org>
Subject Re: Deprecation of Config and the embedded use case (4.0.x related)
Date Tue, 17 Mar 2015 14:57:44 GMT
On Tue, Mar 17, 2015 at 10:10 AM, Carlos Santana <csantana23@gmail.com>
wrote:

> @Michal
> I would get together with Marcel and Martin, they are our Android goto SME
>
> @Joe
> Do we have all the test cases  created now are some missing?
> How do you run this specific test cases on Android Studio? Google team any
> help on gradle to run this test cases on CI I think is very important to
> have a healhty CI running test cases on every pull request or commit
>
I've already ported the unit test over to gradle and they are easy to run
in Android Studio. There are some instructions in the test/README.md

To be clear, the embedding ability was *improved* in 3.7.0, in that you can
now control all configurations directly from Java.



>
> Hum I don't know how I feel about the Plugins not working, I think this is
> the key on using Cordova.
> If I'm just going to have a Web View with no Cordova then I would use In
> App Browser.
>
> The whole purpose of Including a "Cordova" Web View in to a full Native
> Android App, It's the "Cordova" functionality which resides mostly in the
> Plugins!
> Maybe I misunderstood your statements about plugins not working.
>
>
>
> On Mon, Mar 16, 2015 at 9:31 PM, Joe Bowser <bowserj@gmail.com> wrote:
>
> > Well, this feature was tested using TDD, and when the tests were
> re-written
> > I assumed that they would be run.  In this case, I'll blame Android
> Studio,
> > since we're still battling with the learning curve on that one.  (I have
> no
> > clue how to run the new tests from Gradle on the command line, only in
> > Android Studio).
> >
> > The thing is that another refactor removing layouts broke the tests,
> which
> > is how I know that they weren't run.  So, I landed a couple of commits to
> > refactor the unit tests so that they test this use case with the new API
> > and the tests now pass.  This works again, and we can update the
> > documentation,
> >
> > There's still the matter of getting the plugins to work, but I'm fine
> with
> > leaving that to be an exercise for the downstreams that support this, and
> > not Cordova itself.
> >
> >
> >
> > On Mon, Mar 16, 2015 at 6:27 PM Michal Mocny <mmocny@chromium.org>
> wrote:
> >
> > > Carlos, thats great, then perhaps you could give 4.0 embedded webview a
> > > shot to confirm that it is still adequately supported for your
> customers?
> > >
> > > I think this thread has been too much talk and not enough trying it out
> > in
> > > practice.  Everyone agrees the use case is important, what's left is to
> > > confirm we got it right.
> > >
> > > -Michal
> > >
> > > On Mon, Mar 16, 2015 at 8:58 PM, Carlos Santana <csantana23@gmail.com>
> > > wrote:
> > >
> > > > I just want to add that Joe is not alone on thinking that are
> > developers
> > > > with this use case.
> > > > For us we have customers that start with Native Android alone, and
> then
> > > > later want to add a Cordova Web View to a portion of their App.
> > > > And they want an easy way to add a Cordova Web View.
> > > > For 4.x, I would assume that the developer can choose to make this
> > > embedded
> > > > Cordova Web View CrossWalk based.
> > > >
> > > >
> > > > On Wed, Mar 11, 2015 at 10:24 AM, Joe Bowser <bowserj@gmail.com>
> > wrote:
> > > >
> > > > > That's why we have tests! I just changed the activity and saw that
> we
> > > > have
> > > > > one failure.  I'm not sure why this test in particular is failing,
> > > since
> > > > > there's too many assertions in one method, so I'll have to try and
> > > debug
> > > > it
> > > > > today.
> > > > >
> > > > > The thing is that if we're deprecating something and replacing it
> > with
> > > > > something else, we should write tests for it.  Releasing a 4.0.x
> and
> > > > > changing how we embed a WebView by changing class names but not
> > fixing
> > > up
> > > > > the deprecation is bizzare.
> > > > >
> > > > > On Wed, Mar 11, 2015 at 7:15 AM Andrew Grieve <
> agrieve@chromium.org>
> > > > > wrote:
> > > > >
> > > > > > I wanted to make sure that I didn't break the old way of doing
> > > things.
> > > > > >
> > > > > > On Tue, Mar 10, 2015 at 2:24 PM, Joe Bowser <bowserj@gmail.com>
> > > wrote:
> > > > > >
> > > > > > > The main issue is that this isn't documented anywhere,
and this
> > is
> > > > > > > necessary for people to use a Third Party WebView.  Also,
why
> > > didn't
> > > > > you
> > > > > > > bother updating the test with the new API?
> > > > > > >
> > > > > > > On Mon, Mar 9, 2015 at 5:19 PM Andrew Grieve <
> > agrieve@chromium.org
> > > >
> > > > > > wrote:
> > > > > > >
> > > > > > > > Here's an example:
> > > > > > > >
> > > > > > > > ConfigXmlParser parser = new ConfigXmlParser();
> > > > > > > > parser.parse(activity);
> > > > > > > > webView.init(cordova, parser.getPluginEntries(),
> > > > > > > parser.getPreferences());
> > > > > > > >
> > > > > > > > Feel free to iterate if you think the API is too obtuse,
but
> I
> > > > think
> > > > > > it's
> > > > > > > > good to allow a file-less mode, and to allow different
> WebViews
> > > to
> > > > > have
> > > > > > > > different settings.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > On Mon, Mar 9, 2015 at 8:08 PM, Joe Bowser <
> bowserj@gmail.com>
> > > > > wrote:
> > > > > > > >
> > > > > > > > > Do you have an example of how this would work?
This seems
> to
> > > be a
> > > > > lot
> > > > > > > > more
> > > > > > > > > complex than it needs to be.
> > > > > > > > >
> > > > > > > > > On Mon, Mar 9, 2015 at 5:05 PM Andrew Grieve
<
> > > > agrieve@chromium.org
> > > > > >
> > > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > > It's so that you can have multiple CordovaWebViews
that
> use
> > > > > > different
> > > > > > > > > > configs within one application. It's also
so that you
> don't
> > > > have
> > > > > to
> > > > > > > > have
> > > > > > > > > a
> > > > > > > > > > config.xml if you prefer to build up your
config in code
> > > > instead.
> > > > > > > > > >
> > > > > > > > > > I don't think loadConfig() is deprecated.
It has
> > > > > > > > > > a @SuppressWarnings("deprecation"), which
just silences a
> > > > warning
> > > > > > > > about
> > > > > > > > > it
> > > > > > > > > > setting the config of the Config class (which
is done for
> > > > > backwards
> > > > > > > > > > compatibility).
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > On Mon, Mar 9, 2015 at 3:54 PM, Joe Bowser
<
> > > bowserj@gmail.com>
> > > > > > > wrote:
> > > > > > > > > >
> > > > > > > > > > > OK, this actually makes using the WebView
as a
> component
> > a
> > > > lot
> > > > > > > > harder,
> > > > > > > > > > > since you now have to have this loadConfig
method which
> > you
> > > > > also
> > > > > > > > marked
> > > > > > > > > > for
> > > > > > > > > > > deprecation required to get all of
the necessary
> > attributes
> > > > out
> > > > > > of
> > > > > > > > > this.
> > > > > > > > > > > I'm pretty sure this is a major step
backwards in that
> > > people
> > > > > > > looking
> > > > > > > > > to
> > > > > > > > > > > use Cordova as a component now have
to jump through
> > > > additional
> > > > > > > hoops
> > > > > > > > to
> > > > > > > > > > get
> > > > > > > > > > > this to work.  What is the benefit
of deprecating the
> > > Config
> > > > > > static
> > > > > > > > > class
> > > > > > > > > > > and replacing it with the ConfigXmlParser
again? I
> don't
> > > > > remember
> > > > > > > why
> > > > > > > > > > this
> > > > > > > > > > > was done.
> > > > > > > > > > >
> > > > > > > > > > > On Mon, Mar 9, 2015 at 9:04 AM Andrew
Grieve <
> > > > > > agrieve@chromium.org
> > > > > > > >
> > > > > > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > > > On Mon, Mar 9, 2015 at 11:56 AM,
Joe Bowser <
> > > > > bowserj@gmail.com
> > > > > > >
> > > > > > > > > wrote:
> > > > > > > > > > > >
> > > > > > > > > > > > > On Mon, Mar 9, 2015 at 7:39
AM Andrew Grieve <
> > > > > > > > agrieve@chromium.org
> > > > > > > > > >
> > > > > > > > > > > > wrote:
> > > > > > > > > > > > >
> > > > > > > > > > > > > > You can now instantiate
a CordovaWebView without
> a
> > > > > > > config.xml,
> > > > > > > > > and
> > > > > > > > > > > > > without
> > > > > > > > > > > > > > using Config. This happened
when I added an
> > "init()"
> > > > > method
> > > > > > > to
> > > > > > > > > > > > > > CordovaWebView. You
can pass in a
> > CordovaPreferences
> > > > > > object,
> > > > > > > > and
> > > > > > > > > a
> > > > > > > > > > > list
> > > > > > > > > > > > > of
> > > > > > > > > > > > > > PluginEntry. Maybe we
just need a better comment
> on
> > > > > Config
> > > > > > > > saying
> > > > > > > > > > to
> > > > > > > > > > > > use
> > > > > > > > > > > > > > these instead?
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > Where does one get this PluginEntry
list when
> they're
> > > > > > > embedding a
> > > > > > > > > > > > WebView?
> > > > > > > > > > > > > This needs to be documented
or at least put in the
> > test
> > > > > that
> > > > > > > > tests
> > > > > > > > > > this
> > > > > > > > > > > > use
> > > > > > > > > > > > > case.
> > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > > > That has nothing
to do with InAppBrowser, this
> is
> > > to
> > > > do
> > > > > > > with
> > > > > > > > > > > > embedding
> > > > > > > > > > > > > a
> > > > > > > > > > > > > > > WebView inside
an Android application. I don't
> > > think
> > > > > you
> > > > > > > > > > understand
> > > > > > > > > > > > > what
> > > > > > > > > > > > > > I
> > > > > > > > > > > > > > > mean when I say
the embedded use case.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > Maybe try explaining
a bit more?
> > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > > > Even though you edited the
test that explicitly
> > covers
> > > > this
> > > > > > > use,
> > > > > > > > > > case,
> > > > > > > > > > > > and
> > > > > > > > > > > > > even though we've talked
about using CordovaWebView
> > as
> > > an
> > > > > > > Android
> > > > > > > > > > View
> > > > > > > > > > > > for
> > > > > > > > > > > > > over a year, you need it
explained more?
> > > > > > > > > > > > >
> > > > > > > > > > > > > So, not everyone wants to
use all of Cordova, for
> > many
> > > > > > reasons.
> > > > > > > > > > > Instead,
> > > > > > > > > > > > > they really just want to
take advantage of the
> > WebView
> > > > > > > component
> > > > > > > > in
> > > > > > > > > > > their
> > > > > > > > > > > > > native apps so that they
can create hybrid apps
> that
> > > are
> > > > > > mostly
> > > > > > > > > > native
> > > > > > > > > > > > with
> > > > > > > > > > > > > only some parts that use
Cordova.  This is where
> you
> > > > would
> > > > > > > > declare
> > > > > > > > > > your
> > > > > > > > > > > > > view in your layout XML like
this:
> > > > > > > > > > > > >
> > > > > > > > > > > > > <org.apache.cordova.engine.SystemWebView
> > > > > > > > > > > > >             android:id="@+id/WebViewComponent"
> > > > > > > > > > > > >             android:layout_width="match_parent"
> > > > > > > > > > > > >             android:layout_height="match_parent">
> > > > > > > > > > > > > </org.apache.cordova.engine.SystemWebView>
> > > > > > > > > > > > >
> > > > > > > > > > > > > And then, in the activity
start up your view like
> > this:
> > > > > > > > > > > > >
> > > > > > > > > > > > >   private CordovaWebView
webInterface;
> > > > > > > > > > > > >   private CordovaInterfaceImpl
systemInterface =
> new
> > > > > > > > > > > > > CordovaInterfaceImpl(this);
> > > > > > > > > > > > >
> > > > > > > > > > > > > //Set up the webview
> > > > > > > > > > > > >         SystemWebView webView
= (SystemWebView)
> > > > > > > > > > > > > findViewById(R.id.WebViewComponent);
> > > > > > > > > > > > >         webInterface = new
CordovaWebViewImpl(this,
> > new
> > > > > > > > > > > > > SystemWebViewEngine(webView));
> > > > > > > > > > > > >
> > > > > > > > > > > > >         Config.init();
> > > > > > > > > > > > >         webInterface.init(systemInterface,
> > > > > > > > > > Config.getPluginEntries(),
> > > > > > > > > > > > > Config.getPreferences());
> > > > > > > > > > > > >         webView.loadUrl(Config.getStartUrl());
> > > > > > > > > > > > >
> > > > > > > > > > > > > Right now, we're getting
the configuration from the
> > > > Config
> > > > > > > class,
> > > > > > > > > > > because
> > > > > > > > > > > > > we at least have access to
this.  If we don't have
> > > this,
> > > > > how
> > > > > > do
> > > > > > > > > > people
> > > > > > > > > > > > get
> > > > > > > > > > > > > access to the list of plugin
entries specified in
> > > > > Config.xml?
> > > > > > > > I'm
> > > > > > > > > > > pretty
> > > > > > > > > > > > > sure we still want to support
this feature.
> > > > > > > > > > > > >
> > > > > > > > > > > > > Does that make sense?
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > I gotcha. So, I think the answer
is to use
> > > > ConfigXmlParser()
> > > > > to
> > > > > > > > > extract
> > > > > > > > > > > the
> > > > > > > > > > > > information required by init.
You shouldn't need the
> > call
> > > > > > > > > Config.init()
> > > > > > > > > > > at
> > > > > > > > > > > > all.
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Carlos Santana
> > > > <csantana23@gmail.com>
> > > >
> > >
> >
>
>
>
> --
> Carlos Santana
> <csantana23@gmail.com>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message