Skip to content

Commit bd1431e

Browse files
fix: partial navigation graph in Mastodon
1 parent e492f6a commit bd1431e

File tree

4 files changed

+69
-1
lines changed

4 files changed

+69
-1
lines changed

dex/src/main/kotlin/com/legacycode/eureka/dex/dependency/DependencyApkParser.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class DependencyApkParser(private val file: File) {
2828
private const val FRAGMENT = "Landroidx/fragment/app/Fragment;"
2929
private const val LEGACY_FRAGMENT = "Landroid/app/Fragment;"
3030
private const val ACTIVITY = "Landroid/app/Activity;"
31+
private const val LEGACY_DIALOG_FRAGMENT = "Landroid/app/DialogFragment;"
3132
}
3233

3334
fun buildDependencyGraph(): AdjacencyList {
@@ -38,7 +39,7 @@ class DependencyApkParser(private val file: File) {
3839
}
3940

4041
private fun inheritanceTrees(inheritanceTree: AdjacencyList): List<AdjacencyList> {
41-
return listOf(FRAGMENT, LEGACY_FRAGMENT, ACTIVITY)
42+
return listOf(FRAGMENT, LEGACY_FRAGMENT, ACTIVITY, LEGACY_DIALOG_FRAGMENT)
4243
.map(::Ancestor)
4344
.map(inheritanceTree::prune)
4445
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
Lorg/joinmastodon/android/fragments/ComposeFragment; -> Lorg/joinmastodon/android/ExternalShareActivity;
2+
Lorg/joinmastodon/android/fragments/ComposeFragment; -> Lorg/joinmastodon/android/MainActivity;
3+
Lorg/joinmastodon/android/fragments/ThreadFragment; -> Lorg/joinmastodon/android/MainActivity;
4+
Lorg/joinmastodon/android/fragments/ProfileFragment; -> Lorg/joinmastodon/android/MainActivity;
5+
Lorg/joinmastodon/android/fragments/SplashFragment; -> Lorg/joinmastodon/android/MainActivity;
6+
Lorg/joinmastodon/android/fragments/HomeFragment; -> Lorg/joinmastodon/android/MainActivity;
7+
Lorg/joinmastodon/android/fragments/onboarding/AccountActivationFragment; -> Lorg/joinmastodon/android/MainActivity;
8+
Lorg/joinmastodon/android/MainActivity; -> Lorg/joinmastodon/android/OAuthActivity;
9+
Lorg/joinmastodon/android/fragments/discover/DiscoverAccountsFragment; -> Lorg/joinmastodon/android/fragments/discover/DiscoverFragment;
10+
Lorg/joinmastodon/android/fragments/discover/TrendingHashtagsFragment; -> Lorg/joinmastodon/android/fragments/discover/DiscoverFragment;
11+
Lorg/joinmastodon/android/fragments/discover/LocalTimelineFragment; -> Lorg/joinmastodon/android/fragments/discover/DiscoverFragment;
12+
Lorg/joinmastodon/android/fragments/discover/DiscoverNewsFragment; -> Lorg/joinmastodon/android/fragments/discover/DiscoverFragment;
13+
Lorg/joinmastodon/android/fragments/discover/DiscoverPostsFragment; -> Lorg/joinmastodon/android/fragments/discover/DiscoverFragment;
14+
Lorg/joinmastodon/android/fragments/discover/SearchFragment; -> Lorg/joinmastodon/android/fragments/discover/DiscoverFragment;
15+
Lorg/joinmastodon/android/fragments/ThreadFragment; -> Lorg/joinmastodon/android/fragments/discover/SearchFragment;
16+
Lorg/joinmastodon/android/fragments/ProfileFragment; -> Lorg/joinmastodon/android/fragments/discover/SearchFragment;
17+
Lorg/joinmastodon/android/fragments/report/ReportCommentFragment; -> Lorg/joinmastodon/android/fragments/report/ReportAddPostsChoiceFragment;
18+
Lorg/joinmastodon/android/fragments/report/ReportRuleChoiceFragment; -> Lorg/joinmastodon/android/fragments/report/ReportReasonChoiceFragment;
19+
Lorg/joinmastodon/android/fragments/report/ReportAddPostsChoiceFragment; -> Lorg/joinmastodon/android/fragments/report/ReportReasonChoiceFragment;
20+
Lorg/joinmastodon/android/fragments/report/ReportDoneFragment; -> Lorg/joinmastodon/android/fragments/report/ReportReasonChoiceFragment;
21+
Lorg/joinmastodon/android/fragments/report/ReportAddPostsChoiceFragment; -> Lorg/joinmastodon/android/fragments/report/ReportRuleChoiceFragment;
22+
Lorg/joinmastodon/android/fragments/SettingsFragment; -> Lorg/joinmastodon/android/fragments/onboarding/AccountActivationFragment;
23+
Lorg/joinmastodon/android/fragments/onboarding/OnboardingFollowSuggestionsFragment; -> Lorg/joinmastodon/android/fragments/onboarding/AccountActivationFragment;
24+
Lorg/joinmastodon/android/MainActivity; -> Lorg/joinmastodon/android/fragments/onboarding/AccountActivationFragment;
25+
Lorg/joinmastodon/android/fragments/onboarding/SignupFragment; -> Lorg/joinmastodon/android/fragments/onboarding/GoogleMadeMeAddThisFragment;
26+
Lorg/joinmastodon/android/fragments/onboarding/GoogleMadeMeAddThisFragment; -> Lorg/joinmastodon/android/fragments/onboarding/InstanceRulesFragment;
27+
Lorg/joinmastodon/android/fragments/onboarding/OnboardingProfileSetupFragment; -> Lorg/joinmastodon/android/fragments/onboarding/OnboardingFollowSuggestionsFragment;
28+
Lorg/joinmastodon/android/fragments/onboarding/InstanceRulesFragment; -> Lorg/joinmastodon/android/fragments/onboarding/InstanceCatalogSignupFragment;
29+
Lorg/joinmastodon/android/fragments/HomeTimelineFragment; -> Lorg/joinmastodon/android/fragments/HomeFragment;
30+
Lorg/joinmastodon/android/fragments/NotificationsFragment; -> Lorg/joinmastodon/android/fragments/HomeFragment;
31+
Lorg/joinmastodon/android/fragments/ProfileFragment; -> Lorg/joinmastodon/android/fragments/HomeFragment;
32+
Lorg/joinmastodon/android/fragments/discover/DiscoverFragment; -> Lorg/joinmastodon/android/fragments/HomeFragment;
33+
Lorg/joinmastodon/android/fragments/onboarding/OnboardingFollowSuggestionsFragment; -> Lorg/joinmastodon/android/fragments/HomeFragment;
34+
Lorg/joinmastodon/android/fragments/onboarding/InstanceCatalogSignupFragment; -> Lorg/joinmastodon/android/fragments/SplashFragment;
35+
Lorg/joinmastodon/android/fragments/onboarding/InstanceChooserLoginFragment; -> Lorg/joinmastodon/android/fragments/SplashFragment;
36+
Lorg/joinmastodon/android/fragments/ComposeImageDescriptionFragment; -> Lorg/joinmastodon/android/fragments/ComposeFragment;
37+
Lorg/joinmastodon/android/fragments/NotificationsListFragment; -> Lorg/joinmastodon/android/fragments/NotificationsFragment;
38+
Lorg/joinmastodon/android/fragments/ProfileAboutFragment; -> Lorg/joinmastodon/android/fragments/ProfileFragment;
39+
Lorg/joinmastodon/android/fragments/AccountTimelineFragment; -> Lorg/joinmastodon/android/fragments/ProfileFragment;
40+
Lorg/joinmastodon/android/fragments/ComposeFragment; -> Lorg/joinmastodon/android/fragments/ProfileFragment;
41+
Lorg/joinmastodon/android/fragments/account_list/FollowerListFragment; -> Lorg/joinmastodon/android/fragments/ProfileFragment;
42+
Lorg/joinmastodon/android/fragments/account_list/FollowingListFragment; -> Lorg/joinmastodon/android/fragments/ProfileFragment;
43+
Lorg/joinmastodon/android/fragments/report/ReportReasonChoiceFragment; -> Lorg/joinmastodon/android/fragments/ProfileFragment;
44+
Lorg/joinmastodon/android/fragments/BookmarkedStatusListFragment; -> Lorg/joinmastodon/android/fragments/ProfileFragment;
45+
Lorg/joinmastodon/android/fragments/FavoritedStatusListFragment; -> Lorg/joinmastodon/android/fragments/ProfileFragment;
46+
Lorg/joinmastodon/android/fragments/onboarding/AccountActivationFragment; -> Lorg/joinmastodon/android/fragments/SettingsFragment;
47+
Lorg/joinmastodon/android/MainActivity; -> Lorg/joinmastodon/android/fragments/SettingsFragment;
48+
Lorg/joinmastodon/android/fragments/ThreadFragment; -> Lorg/joinmastodon/android/fragments/NotificationsListFragment;
49+
Lorg/joinmastodon/android/fragments/ProfileFragment; -> Lorg/joinmastodon/android/fragments/NotificationsListFragment;
50+
Lorg/joinmastodon/android/fragments/ThreadFragment; -> Lorg/joinmastodon/android/fragments/StatusListFragment;
51+
Lorg/joinmastodon/android/fragments/ComposeFragment; -> Lorg/joinmastodon/android/fragments/HashtagTimelineFragment;
52+
Lorg/joinmastodon/android/fragments/ComposeFragment; -> Lorg/joinmastodon/android/fragments/HomeTimelineFragment;
53+
Lorg/joinmastodon/android/fragments/SettingsFragment; -> Lorg/joinmastodon/android/fragments/HomeTimelineFragment;

dex/src/test/kotlin/com/legacycode/eureka/dex/dependency/DependencyApkParserTest.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,18 @@ class DependencyApkParserTest {
1919
val dependencyGraph = adjacencyList.graph(TestGraphBuilder())
2020
Approvals.verify(dependencyGraph)
2121
}
22+
23+
@Test
24+
fun `it can build a dependency graph with subclasses of DialogFragment`() {
25+
// given
26+
val testApk = TestApk("mastodon.apk")
27+
val parser = DependencyApkParser(testApk.file)
28+
29+
// when
30+
val adjacencyList = parser.buildDependencyGraph()
31+
32+
// then
33+
val dependencyGraph = adjacencyList.graph(TestGraphBuilder())
34+
Approvals.verify(dependencyGraph)
35+
}
2236
}
3.68 MB
Binary file not shown.

0 commit comments

Comments
 (0)