Fixed
Status Update
Comments
il...@google.com <il...@google.com>
il...@google.com <il...@google.com>
ap...@google.com <ap...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 05f347890c62aaf1f585b9adbbeb75832d3c8b2c
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Mon Aug 27 17:05:17 2018
Make Nav Direction classes extend top level Direction classes.
Directions classes who's destination is contained in a nav graph with
top level actions will now extend the nav graph's direction class
enabling global actions to be available to lower layers of the graph.
Bug: 79871405
Test: ./gradlew :navigation:navigation-safe-args-generator:test
Change-Id: Id59d8547dacb33c0d75ddd282754d87b499c2b9b
M navigation/safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/GeneratorOutput.kt
M navigation/safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/NavSafeArgsGenerator.kt
M navigation/safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/NavWriter.kt
M navigation/safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/ext/NavJavaPoet_ext.kt
M navigation/safe-args-generator/src/tests/kotlin/androidx/navigation/safe/args/generator/NavGeneratorTest.kt
M navigation/safe-args-generator/src/tests/kotlin/androidx/navigation/safe/args/generator/NavParserTest.kt
M navigation/safe-args-generator/src/tests/kotlin/androidx/navigation/safe/args/generator/NavWriterTest.kt
A navigation/safe-args-generator/src/tests/kotlin/androidx/navigation/safe/args/generator/TestUtils.kt
A navigation/safe-args-generator/src/tests/test-data/expected/nav_generator_test/LoginDirections.java
A navigation/safe-args-generator/src/tests/test-data/expected/nav_generator_test/LoginFragmentDirections.java
A navigation/safe-args-generator/src/tests/test-data/expected/nav_generator_test/MainFragmentDirections.java
A navigation/safe-args-generator/src/tests/test-data/expected/nav_generator_test/RegisterFragmentDirections.java
M navigation/safe-args-generator/src/tests/test-data/expected/nav_writer_test/Finish.java
M navigation/safe-args-generator/src/tests/test-data/expected/nav_writer_test/MainFragmentArgs.java
M navigation/safe-args-generator/src/tests/test-data/expected/nav_writer_test/MainFragmentDirections.java
M navigation/safe-args-generator/src/tests/test-data/expected/nav_writer_test/Next.java
M navigation/safe-args-generator/src/tests/test-data/expected/nav_writer_test/SanitizedMainFragmentArgs.java
M navigation/safe-args-generator/src/tests/test-data/expected/nav_writer_test/SanitizedMainFragmentDirections.java
A navigation/safe-args-generator/src/tests/test-data/nested_login_test.xml
M navigation/safe-args-gradle-plugin/src/main/kotlin/androidx/navigation/safeargs/gradle/ArgumentsGenerationTask.kt
https://android-review.googlesource.com/739287
https://goto.google.com/android-sha1/05f347890c62aaf1f585b9adbbeb75832d3c8b2c
Branch: androidx-master-dev
commit 05f347890c62aaf1f585b9adbbeb75832d3c8b2c
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Mon Aug 27 17:05:17 2018
Make Nav Direction classes extend top level Direction classes.
Directions classes who's destination is contained in a nav graph with
top level actions will now extend the nav graph's direction class
enabling global actions to be available to lower layers of the graph.
Bug: 79871405
Test: ./gradlew :navigation:navigation-safe-args-generator:test
Change-Id: Id59d8547dacb33c0d75ddd282754d87b499c2b9b
M navigation/safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/GeneratorOutput.kt
M navigation/safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/NavSafeArgsGenerator.kt
M navigation/safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/NavWriter.kt
M navigation/safe-args-generator/src/main/kotlin/androidx/navigation/safe/args/generator/ext/NavJavaPoet_ext.kt
M navigation/safe-args-generator/src/tests/kotlin/androidx/navigation/safe/args/generator/NavGeneratorTest.kt
M navigation/safe-args-generator/src/tests/kotlin/androidx/navigation/safe/args/generator/NavParserTest.kt
M navigation/safe-args-generator/src/tests/kotlin/androidx/navigation/safe/args/generator/NavWriterTest.kt
A navigation/safe-args-generator/src/tests/kotlin/androidx/navigation/safe/args/generator/TestUtils.kt
A navigation/safe-args-generator/src/tests/test-data/expected/nav_generator_test/LoginDirections.java
A navigation/safe-args-generator/src/tests/test-data/expected/nav_generator_test/LoginFragmentDirections.java
A navigation/safe-args-generator/src/tests/test-data/expected/nav_generator_test/MainFragmentDirections.java
A navigation/safe-args-generator/src/tests/test-data/expected/nav_generator_test/RegisterFragmentDirections.java
M navigation/safe-args-generator/src/tests/test-data/expected/nav_writer_test/Finish.java
M navigation/safe-args-generator/src/tests/test-data/expected/nav_writer_test/MainFragmentArgs.java
M navigation/safe-args-generator/src/tests/test-data/expected/nav_writer_test/MainFragmentDirections.java
M navigation/safe-args-generator/src/tests/test-data/expected/nav_writer_test/Next.java
M navigation/safe-args-generator/src/tests/test-data/expected/nav_writer_test/SanitizedMainFragmentArgs.java
M navigation/safe-args-generator/src/tests/test-data/expected/nav_writer_test/SanitizedMainFragmentDirections.java
A navigation/safe-args-generator/src/tests/test-data/nested_login_test.xml
M navigation/safe-args-gradle-plugin/src/main/kotlin/androidx/navigation/safeargs/gradle/ArgumentsGenerationTask.kt
Description
Version used: 1.0.0-alpha01
When using a global action (an action attached to a <navigation> element), all of the destinations under that <navigation> element should extend the <navigation> element's Directions class. This ensures that the final Directions object contains all of the valid actions from that destination on all levels of the navigation graph.
For example:
<navigation
xmlns:android="
xmlns:app="
app:startDestination="@id/main_fragment">
<fragment
android:id="@+id/main_fragment"
android:name=".MainFragment">
<action
android:id="@+id/start_login"
app:destination="@id/login"/>
</fragment>
<navigation
android:id="@+id/login"
app:startDestination="@id/login_fragment">
<action
android:id="@+id/action_done"
app:popUpTo="@id/main_fragment"/>
<fragment
android:id="@+id/login_fragment"
android:name=".LoginFragment">
<action
android:id="@+id/register"
app:destination="@id/register_fragment"/>
</fragment>
<fragment
android:id="@+id/register_fragment"
android:name=".RegisterFragment">
</fragment>
</navigation>
</navigation>
There should be
- A LoginDirections class that has an action_done() method (this works right now).
- A LoginFragmentDirections class that extends LoginDirections (currently it does not extend anything)
- An empty RegisterFragmentDirections class that extends LoginDirections (currently it does not exist)