On Wed Jan 28 2015 at 10:42:46 AM Andrew Grieve <agri...@chromium.org>
wrote:

> I think we're talking about the same thing.
>
> You can have an XWalkCordovaView within a layout, and then attach
> a XWalkCordovaWebView to it in code afterwards.
>
> What might be even better though, is if we made CordovaWebView extend View
> (probably AbsoluteLayout), and then you wouldn't have to change anything at
> all, and the XML inflation would work with either engine.
>
>
This still doesn't fix the problem.  If CordovaWebView extends view, what
does AndroidWebView or MozillaWebView extend? They're both currently
extending WebView and GeckoView respectively.  This also means that the
embedding code would have to completely change and would be even more
incompatible than the interface approach.



> On Wed, Jan 28, 2015 at 1:25 PM, Joe Bowser <bows...@gmail.com> wrote:
>
> > What is your definition of embedding a view? I think we're talking about
> > two different things.  What I'm talking about is being able to embed
> > AndroidWebView as an embedded view without having to change any code
> other
> > than the name of the class.  This means that you don't have to worry
> about
> > the container or any other thing.
> >
> > I have never seen an example of Crosswalk using Android XML layouts, and
> as
> > far as I'm currently aware, embedding Crosswalk is less straightforward
> > than embedding AndroidWebView or MozillaWebView.
> >
> > On Wed Jan 28 2015 at 10:07:18 AM Andrew Grieve <agri...@chromium.org>
> > wrote:
> >
> > > You can still embed a view using composition. We are not providing any
> > > backwards compatibility right now, even with inheritance, because
> > > CordovaWebView is no longer a View (it's an interface, which requires
> an
> > > explicit cast to (View), or a call to .getView() to be considered as a
> > > View)
> > >
> > > On Wed, Jan 28, 2015 at 11:26 AM, Joe Bowser <bows...@gmail.com>
> wrote:
> > >
> > > > I completely disagree, and think we should go the inheritance
> pattern.
> > > The
> > > > reason for that is that we have to provide backwards compatibility
> for
> > > some
> > > > views where the implementation is a view, and there's no dual
> > inheritance
> > > > in Java, which is the only way that I can see us accommodating both
> > types
> > > > of implementations.  If we didn't already have users embedding
> > > > CordovaWebView (and seriously guys, if you're reading this, please
> > don't
> > > > keep leaving me hanging here, I want you to step up into this
> > > > conversation).  Also, other views, such as the prototype MozillaView
> > > that I
> > > > worked on, are implemented so that they inherit from a view.
> > > >
> > > > Just because it may offer some us some flexibility doesn't mean that
> > it's
> > > > worth taking away an entire feature from other users.  My most
> popular
> > > > repository after Cordova itself is the example where I show how to
> > embed
> > > a
> > > > CordovaWebView, so people have been using this feature.
> > > >
> > > > On Wed Jan 28 2015 at 6:49:18 AM Andrew Grieve <agri...@chromium.org
> >
> > > > wrote:
> > > >
> > > > > I'd prefer to go the other way, and change AndroidWebView to
> > > composition.
> > > > > It's more flexible and does a better job of splitting up groups of
> > > APIs.
> > > > >
> > > > > On Wed, Jan 28, 2015 at 12:49 AM, Hu, Ningxin <
> ningxin...@intel.com>
> > > > > wrote:
> > > > >
> > > > > > Hi Joe,
> > > > > > >
> > > > > > > The tests don't work with Crosswalk because Crosswalk's main
> > class
> > > > > > doesn't
> > > > > > > inherit from a view.  This is why we had to change the
> > > CordovaWebView
> > > > > > > from being a class to being an Interface in the first place.  I
> > > don't
> > > > > > think there is
> > > > > > > a way for these tests to work with Crosswalk because of this
> > > > > > incompatibility.
> > > > > > > I don't think there is a way to re-use these tests because of
> > this
> > > > > > fundamental
> > > > > > > change.
> > > > > >
> > > > > > Crosswalk main class (XWalkView) actually inherits from a view
> (via
> > > > > > FrameLayout). See
> > > > > > https://crosswalk-project.org/apis/embeddingapidocs_v3/
> index.html
> > > > > >
> > > > > > I inspected the commit that changed the XWalkCordovaWebView from
> > > > > > inheritance to composition (
> > > > > >
> > https://github.com/MobileChromeApps/cordova-crosswalk-engine/commit/
> > > > > 26029ce8ae6d651a44a90222514cc6902ef8bb4a).
> > > > > > The reason was some APIs of CordovaWebView interface (e.g.
> > CanGoBack)
> > > > > > conflict with XWalkView internal implementation at that time.
> And I
> > > > > > remembered Ian and me thought CordovaWebView as an interface and
> > > > > > compositing of webview probably was a good decouple solution.
> > > > > >
> > > > > > However, this changed in Crosswalk embedding API 3 (current
> > version)
> > > > that
> > > > > > we separated the public interface and implementation. I briefly
> > > checked
> > > > > > that the inheritance approach works with Crosswalk webview now.
> > > > > >
> > > > > > Folks, do you think we need to align all webview engines to
> > > inheritance
> > > > > > pattern?
> > > > > >
> > > > > > Thanks,
> > > > > > -ningxin
> > > > > >
> > > > > > > On Tue Jan 20 2015 at 5:11:54 AM Fu, Junwei <
> junwei...@intel.com
> > >
> > > > > wrote:
> > > > > > >
> > > > > > > > Hi,
> > > > > > > >
> > > > > > > > I pulled cordova-android 4.0 branch, and running JUnit test
> in
> > > > /test
> > > > > > > > directory, but there are compiled error as below, and I want
> > > reuse
> > > > > the
> > > > > > > > JUnit tests to test Crosswalk pluggable webView,  so I
> request
> > a
> > > PR
> > > > > > > > https://github.com/apache/cordova-android/pull/140, could
> > > someone
> > > > > > > help
> > > > > > > > me to review and merge it.
> > > > > > > >
> > > > > > > > /test/menus.java:37: error: method registerForContextMenu in
> > > class
> > > > > > > > Activity cannot be applied to given types;
> > > > > > > >     [javac]
> >  super.registerForContextMenu(super.appView);
> > > > > > > > reason: actual argument CordovaWebView cannot be converted to
> > > View
> > > > > > > by
> > > > > > > > method invocation conversion
> > > > > > > >
> > > > > > > > test/splashscreen.java:33: error: method loadUrl in class
> > > > > > > > CordovaActivity cannot be applied to given types;
> > > > > > > >     [javac]
> > > > > > >
> > super.loadUrl("file:///android_asset/www/splashscreen/index.html",
> > > > > > > > 2000);
> > > > > > > > reason: actual and formal argument lists differ in length
> > > > > > > >
> > > > > > > > Thanks,
> > > > > > > > Junwei.
> > > > > > > >
> > > > > > > > ------------------------------------------------------------
> > > > > ---------
> > > > > > > > To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org
> > > > > > > > For additional commands, e-mail: dev-h...@cordova.apache.org
> > > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to