Age | Commit message (Collapse) | Author |
|
|
|
Release versions of the gradle plugin and annotation processor
now contain all of their dependencies, repackaged.
Change-Id: I93fba3eed150aafa8a88d439103b90d270e71cdf
|
|
Bug 23820607
Handle out of bounds in bracket expressions by returning the
default value.
Change-Id: I8b3a5a5ced48acfd6683ee1df6264480526244d1
|
|
@{obj4.text}
@{obj4.useHello ? obj4.text : `hello`}
This case was broken and would not re-read obj4.text if
only obj4.useHello is invalidated. It was partially fixed in
Change-Id: Id449c8819b8dc0301a7ab893002478914780d480 but
but it was bringing it down to exact equality which would
mean we could fail to mark sth as read.
The coverage logic we use in expressions when marking them
as read was giving false positives, which results in
marking expressions as read before they are fully read.
This CL fixes that bug. The safe fix introduces some false
negatives when a conditional is behind another conditional.
We can address this post v1.
There was also another bug about setting conditional flags
even though the ternary does not need to be calculated.
@{obja.boolMethod(a)}
@{a ? objb.boolMethod(b) : objc.boolMethod(c)}
When obja is invalidated, it would re calculate the second
binding expression too even though it is never used (because
that expression is not invalidated). The re-calculation would
happen because we would calculate the value of `a` and set
the conditional flags w/o checking invalidation.
This would result in unnecessary calculations. I've also fixed
it for first degree where the ternary is not under another
ternary. The proper fix would requires bigger effort, post V1.
bug: 22957203
Change-Id: Ib73f31eac358f2ad7652395a021baaa93b79adf7
|
|
Bug 23490384
Change-Id: I691da60a671d15c73cf2753ff830f9effb360e96
|
|
Bug 23518718
Change-Id: Ic147421aefe0adbf576285ca642334fcb907abfb
|
|
|
|
Bug 23498104
Change-Id: I8de149e573721485b916ae6ae692113f3ed2990d
|
|
Bug 23491360
Change-Id: I94c62b67dfa8f8bd4c7f9fb5ab1adff4a927f77b
|
|
Bug 23348140
Change-Id: I6bdcb0982c2e755dc4ad0eb53b35e07d1ac9ebed
|
|
Bug 23147420
Change-Id: I1f18ec7d8928ec7c65fdc75a5e1914b0cce608d7
|
|
Change-Id: I0515dc0d24aa5851ada2a49afcc01cbafe3186c0
|
|
Bug 22816783
Change-Id: Id8b5b19568fedb3a39c34944a3e2bee69c036fb7
|
|
Bug 22972105
Also added error reporting for tags on root elements
and tests. ICS+ supports tags on root elements.
Change-Id: I1f3fe5e59b68a04fd80e3e2638a7b7743fac027d
|
|
Bug 22907244
When finding a common type, null is an Object and
the listener is an interface, so the types don't
match.
Change-Id: I0c5a88ec02230767b894b2feda17a1a1c8cef9f7
|
|
Bug 22957226
Change-Id: Ia08bcb857872eccad3340c14b8d10b78198b90a6
|
|
Bug 22957203
Some conditional expressions were not waiting for all of their
dependencies to be evaluated before evaluting the expression.
Change-Id: Id449c8819b8dc0301a7ab893002478914780d480
|
|
This CL introduces a new development plugin that downloads all
dependencies into the given repository. This will allow us to
build data binding in build servers w/o internet connection.
By default, it is setup to disable public repositories to avoid
adding a new dependency w/o running the script.
Public repositories can be added by running -PaddRemoteRepos=true.
There is also a convenience script to fetch dependencies.
localize.sh
Bug: 19626302
Change-Id: I9d200550b76c3b60119cdbbdb4e1e7772d0da1d7
|
|
Bug 22389109
Change-Id: Iec63375c5412edc03b4808ee129a7596b61bf9e6
|
|
This CL adds ScopedExceptions to multi-config layout parsing.
Bug: 21953001
Change-Id: I5d62b711120e890733e7f5c08108041109e4eefd
|
|
This CL replaces how we map tags(string) to layout ids in the
generated DataBindingMapper class. Previously, we would create
a hashmap which was some unnecessary work in startup. The alternative
was using switch(string) but we did not want to require java 7.
This CL does what java 7's switch(string) would do thanks to the
well defined API of String.hashCode.
This CL also adds a method to DataBindingUtil to convert BR.ids
back to String for debugging purposes.
Bug: 22108735
Change-Id: I4b8ef816f4aac99b2963793dd46519b056ce4a30
|
|
|
|
Bug 22160629
Change-Id: Ib0a2b6d5333e63e25045ccf39a5582e1d74494df
|
|
Bug 22108739
Change-Id: I443da537f51e503edbeb269db7432757d58887a9
|
|
This CL changes LayoutParser to use Antlr which provides us the location
information. This information is now serialized inside the bundle so
that we can read it in the annotation processor, enabling better error
logs with location information.
Bug:21953001
Change-Id: If9b5cf2f87598a609ddf77235decc17098a46a6b
|
|
Bug 21594573
It is convenient to be able to assign event listeners by just
referencing a method, similar to the way onClick="handler" works.
This adds a whole lot of listeners for the framework. Additional
listeners must be added for support library components.
This isn't perfect in resolving listeners. Perfect resolution
requires that each expression is evaluated in its own context
within the binding statement. If, for example, the same method
name is used for a listener and an accessor, we will assume
that the listener is used always and there will be a compilation
failure.
Change-Id: If4705122b67a451430451b6e7d890eb813af1c5c
|
|
We got some feedback where people want to keep their View presenter
classes parcelable. This CL makes observables parcelable and
their lists transient to allow this.
Bug: 21785040
Change-Id: I76adc7d7ca3876c83fd8749f6dbcf02a926c97c2
|
|
Bug 21850030
Change-Id: I977ff4879d8bf2dff408a6ad7f7ba539d979cf60
|
|
Bug 21594573
When a binding adapter takes old values, the old values
are stored in the generated binding as fields.
Change-Id: Ib163d74720a8199d70ff6884d59fbe4e0d17fece
|
|
|
|
Fragment data binding is much more complex than the previous
implementation supported. It may be that we don't want to support
data binding to fragments because fragment life cycle differs
from View life cycle, including back stack support.
I made it so that fragments with IDs do not get public final
fields on the generated data binding objects.
Bug 21667601
Change-Id: Ief77972ea854f7ded5a93aa59822d76ef533fc21
|
|
This CL fixes a bug where if a field is prefixed w/ one of our private
field conventions, we would not be able to find it because we would
strip it.
Now, when searching fields, we'll also look for exact match as we
do for methods.
Bug: 21807334
|
|
Bug: 21785116
Change-Id: I79b886df1f016a8abe87723876502adfe1843897
|
|
|
|
Previously, we would allow access to static fields via instance
variables but it would not work for methods. Moreover, the behavior
was not exactly the same with how java handles it. In java, the
instance can be null but our binding code would not evaluate it
if instance is null.
This CL fixes these bugs by adding static resolution support to
methods and replacing their variable identifiers with static
identifiers while the method is being resolved so that the rest
of the system is still consistent.
Bug: 20412284
Change-Id: Id97ce564c312b97d5a0e60d7d7a5bbd06b131071
|
|
Bug 21667601
Change-Id: I636dec1bbb5567d70a996e115e6bf8322c3aa29d
|
|
Bug: 21571818
Change-Id: Id03c7a7de6e39d7f59da6cda11d3311f072addd0
|
|
Bug 21660713
|
|
This CL merges annotation processor, xml grammer and grammer builder
into compiler project.
It also adds logic to pass gradle's --debug parameter to the
annotation processor so that we can grab logs when necessary.
Bug: 21327802
Change-Id: I1d07002519a6b95de3cdc0891bd00f461f73e8ea
|
|
Bug 21324996
Changed listeners to callbacks and made them abstract base
classes, following API conventions.
Change-Id: Ibc849d11c1fea83c02ba593d9aaf2ebf8cfc2eef
|
|
Bug 21313082
The list state wasn't being released properly, so it would try
to release it multiple times (once for each listener).
Change-Id: I05e0d190476a761c28e95420b5a3d5b6e249a41f
|
|
An expression @{String.format("%s", "test")} was failing
for two reasons: the L.d was doing string concatenation
and String wasn't imported and considered a StaticIdentifier.
Change-Id: I67b4c880f1e147a5c1aac15b3b845d4112c6d00b
|
|
|
|
Previously, we would assign each binding expression a flag id even
if it is constant. This was necessary to be able to implement
invalidateAll.
Later, we've changed how invalidateAll works and assigned it a separate
flag. Unfortunately, we were still incrementing ids for such binding
expressions, causing index out of bounds exceptions during code generation
in certain situations.
This CL fixes that bug and does not add flags to constant binding expressions
anymore.
Bug: 21284295
Change-Id: I114bf34520d0b246426ce7d45b8c511cf6709778
|
|
Bug 21277338
Handle <T> adapter(View, T value)
Also test and fixes to support View<T> with multi-attribute
adapters.
Change-Id: I12bda5b235111762b55357fed7f163ccaf83838d
|
|
This CL changes gradle plugin to automatically include necessary
dependencies for data binding. This way, just applying data
binding to a project will be sufficient.
I've also updated version to .9 to get ready for preview release
Bug: 21262586
Change-Id: I12ba64915e69b383b507d155c1a16267356e059b
|
|
When a View is generic (e.g. MyView<T>), and a setter takes
a generic parameter, the setter parameter didn't match the
argument.
Change-Id: I115ace5582b847bda792d75cf7aaf57ffc8bd4cd
|
|
|
|
|
|
|