cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Carlos Santana <csantan...@gmail.com>
Subject Re: Deprecation of Config and the embedded use case (4.0.x related)
Date Tue, 17 Mar 2015 15:03:39 GMT
Andrew where is this new enhancements documented, Only place I can find any
documentation is here:
http://cordova.apache.org/docs/en/4.0.0/guide_platforms_android_webview.md.html#Android%20WebViews

Can you update this Docs?

In addition to having the docs updated I think it will be great beneficial
if one the Android Gurus do a blog post with tutorial style, from end to
end on how to do this, and a quick video would not hurt also ;-)


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



-- 
Carlos Santana
<csantana23@gmail.com>

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