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 <agri...@chromium.org> wrote: > On Tue, Mar 17, 2015 at 10:10 AM, Carlos Santana <csantan...@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 <bows...@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 <mmo...@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 < > csantan...@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 <bows...@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 < > > agri...@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 <bows...@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 < > > > agri...@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 < > > bows...@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 < > > > > > agri...@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 < > > > > bows...@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 < > > > > > > > agri...@chromium.org > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Mar 9, 2015 at 11:56 AM, Joe Bowser < > > > > > > bows...@gmail.com > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Mar 9, 2015 at 7:39 AM Andrew Grieve < > > > > > > > > > agri...@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 > > > > > <csantan...@gmail.com> > > > > > > > > > > > > > > > > > > > > -- > > Carlos Santana > > <csantan...@gmail.com> > > > -- Carlos Santana <csantan...@gmail.com>