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 15:01:09 GMT
The place where we're lacking on the plugins side (IMO), is that CLI /
plugman create an application target in Gradle. This is no different form
ANT, but it would be nice if you could denote your app as an android
library so that it's easily usable by those wanting to embed.

On Tue, Mar 17, 2015 at 10:57 AM, Andrew Grieve <agrieve@chromium.org>
wrote:

>
>
> 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