bb4a033fcd5cd20e5be46ef8ead442dc7db2454d |
|
18-Feb-2016 |
George Mount <mount@google.com> |
Have two-way binding use localized variables to prevent NPE. Bug 26962999 Two-way binding was using the inverted expressions directly without localizing variables. That meant that if there was a variable set to null during evaluation, it may get a NullPointerException even though it checked for null on the value previously. This CL localizes the variables so that cannot happen. Change-Id: Ia55955ce0f1cb750e6a678e72e0cda03f0e3c9b6
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/expr/SymbolExpr.java
|
6047998943beebd81e0ae1068df39c0cbee38628 |
|
02-Feb-2016 |
Yigit Boyar <yboyar@google.com> |
Lambda In da house This CL adds support for assigning callbacks to listeners using lambda expressions. These expressions can receive either 0 or N arguments where N is equal to the number of parameters in the callback function. These expressions are evaluated when the callback is invoked. In other words, they are independent from the rest of the ExprModel except the Identifier expressions. Since these are limited to 1 full expression and they don't have any invalidation flags; we use a verbose branching code generation mode where we calculate all possible execution paths, eliminate trivial ones and generate the code. This allows callbacks to be thread safe as well. See ExecutionPath class for details. It is not efficient but since these are rere occasions, should be OK. Callback expressions are still forced to be expressions that return value. To handle `void` case, I've added `void` and `Void` as acceptable symbols. Also, if the callback method returns void, the expression is free to return `void` or any other value. ¯\\_(ツ)_/¯ I've also moved kotlin to rc0. Although rc0 is unrelated to this task, it made more sense to upgrade here because most changes it will ask for were already done in this branch. Bug: 26849440 Change-Id: I805b3d470f85df9c2ce3f3ed5ca74925a08bb7a5
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/expr/SymbolExpr.java
|
d3f2b9229472c9dae9bf4ae8b3e2d653b5653b01 |
|
17-Sep-2015 |
George Mount <mount@google.com> |
Two-way binding Bug 1474349 Bug 22460238 This adds two-way data binding for those attributes on Views that also have event listeners for them. General use is also supported, but event listeners are required to notify when those properties change. Change-Id: Iedc66a604257930265f9d661f69658a0a0c3208b
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/expr/SymbolExpr.java
|
9784c9aaedeb863018f5fcaa0a598e8e2f8ed2f3 |
|
13-Oct-2015 |
Yigit Boyar <yboyar@google.com> |
Data binding as studio dep + java6 This CL gets rid of the gradle plugin and instead provides DataBindingBuilder for the gradle plugin to directly use. Now, everything that is deployed via SDK Manager (lib and adapters) are included as prebuilts so that we avoid accidently changing them w/o an SDK manager release. There is still work to do: > re-enable proguard for externel dependencies > release a batch to ensure everything works Bug: 22516688 Change-Id: I83ace15bd6d3d23bf5b4ad850f36453dd23ebd43
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/expr/SymbolExpr.java
|
e52882df6130221462bf07f5f2b52de5c4b0f8de |
|
30-Jul-2015 |
George Mount <mount@google.com> |
Move toCode to Expr classes. It turns out that toCode as part of Java is just about as readable as in kotlin and it makes much more sense than using instanceof (equivalent). Change-Id: Ic2a0de5c4376dafa487d048e6a9420fab9e7f22a
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/expr/SymbolExpr.java
|
2611838bffef5a009ca71e3e9e59a93f29b098ed |
|
24-Jun-2015 |
Yigit Boyar <yboyar@google.com> |
Remove guava from compiler This CL removes all dependency from guava and replaces it w/ either plain java or some utilities. Bug: 22047836 Change-Id: I94be54ed992ab6b5f27c47a8cf400ae60aef02f8
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/expr/SymbolExpr.java
|
96e1c821dd446d1ed78f8ae61131550588f60a24 |
|
10-Apr-2015 |
George Mount <mount@google.com> |
Support merge tags. This also drops the requirement for include tags to have an ID. Each root view tag is given a numeric suffix, starting with 0. Merge tags can have multiple roots, the first of which always is suffixed with 0. The remainder have tag identifiers that are interspersed with the tags used with expressions. The numeric suffix is used to identify the View in the mapBindings call. Include tag information now uses the tag of its parent so that its parent will search for the includes within it. When mapBindings is looking at the parent, it looks for all direct children with the appropriate tag of the format "layout*/name_0". Then it searches for all siblings with the same prefix and different numeric suffixes. Any that are found are considered part of the same merged include. If it finds another with _0, it knows that a new include was found. Change-Id: Idd1144d9037648193724667320744bd079791476
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/expr/SymbolExpr.java
|
fead9ca09b117136b35bc5bf137340a754f9eddd |
|
23-Mar-2015 |
George Mount <mount@google.com> |
Move to package android.databinding.
/frameworks/data-binding/compiler/src/main/java/android/databinding/tool/expr/SymbolExpr.java
|