From 480158c17730c3241afb0013e85cf922794cdecf Mon Sep 17 00:00:00 2001 From: HissPirat Date: Mon, 3 Aug 2020 15:12:20 +0200 Subject: [PATCH 1/9] #2241 settings works in custom as well (as fragment) --- .../settings/KiwixSettingsActivityTest.java | 4 +- app/src/main/AndroidManifest.xml | 6 -- .../di/components/KiwixActivityComponent.kt | 4 +- .../kiwixmobile/main/KiwixMainActivity.kt | 6 +- ...gsActivity.kt => KiwixSettingsFragment.kt} | 16 ++--- .../main/res/navigation/kiwix_nav_graph.xml | 4 ++ .../core/di/components/CoreComponent.kt | 4 +- .../kiwixmobile/core/main/CoreMainActivity.kt | 4 +- .../kiwixmobile/core/page/PageFragment.kt | 1 + .../core/settings/CorePrefsFragment.java | 1 - .../core/settings/CoreSettingsActivity.java | 72 ------------------- .../core/settings/CoreSettingsFragment.kt | 55 ++++++++++++++ core/src/main/res/layout/fragment_page.xml | 9 ++- core/src/main/res/layout/settings.xml | 2 +- custom/src/main/AndroidManifest.xml | 6 -- .../custom/di/CustomActivityComponent.kt | 4 +- .../custom/main/CustomMainActivity.kt | 6 +- ...sActivity.kt => CustomSettingsFragment.kt} | 16 ++--- .../main/res/navigation/custom_nav_graph.xml | 4 ++ 19 files changed, 104 insertions(+), 120 deletions(-) rename app/src/main/java/org/kiwix/kiwixmobile/settings/{KiwixSettingsActivity.kt => KiwixSettingsFragment.kt} (70%) delete mode 100644 core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsActivity.java create mode 100644 core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsFragment.kt rename custom/src/main/java/org/kiwix/kiwixmobile/custom/settings/{CustomSettingsActivity.kt => CustomSettingsFragment.kt} (70%) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java index 6ba4c18a4..3393fa6bd 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java @@ -40,8 +40,8 @@ import static org.hamcrest.Matchers.is; public class KiwixSettingsActivityTest { @Rule - public ActivityTestRule activityTestRule = - new ActivityTestRule<>(KiwixSettingsActivity.class); + public ActivityTestRule activityTestRule = + new ActivityTestRule<>(KiwixSettingsFragment.class); @Test public void testToggle() { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e4e7493cf..cea29111c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -137,12 +137,6 @@ - - - - - - (), REQUEST_PREFERENCES) + super.openSettingsActivity() + navigate(R.id.kiwixSettingsFragment) } override fun openPage(pageUrl: String, zimFilePath: String) { diff --git a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsFragment.kt similarity index 70% rename from app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.kt rename to app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsFragment.kt index 1230c3d89..2decb31e7 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsFragment.kt @@ -18,15 +18,15 @@ package org.kiwix.kiwixmobile.settings -import org.kiwix.kiwixmobile.core.di.components.CoreComponent -import org.kiwix.kiwixmobile.core.settings.CoreSettingsActivity -import org.kiwix.kiwixmobile.kiwixActivityComponent +import org.kiwix.kiwixmobile.core.base.BaseActivity +import org.kiwix.kiwixmobile.core.settings.CoreSettingsFragment +import org.kiwix.kiwixmobile.main.KiwixMainActivity -class KiwixSettingsActivity : CoreSettingsActivity() { - - override fun injection(coreComponent: CoreComponent) { - kiwixActivityComponent.inject(this) - } +class KiwixSettingsFragment : CoreSettingsFragment() { override fun createPreferenceFragment() = KiwixPrefsFragment() + + override fun inject(baseActivity: BaseActivity) { + (baseActivity as KiwixMainActivity).cachedComponent.inject(this) + } } diff --git a/app/src/main/res/navigation/kiwix_nav_graph.xml b/app/src/main/res/navigation/kiwix_nav_graph.xml index 26f1c2c40..75a2ae70b 100644 --- a/app/src/main/res/navigation/kiwix_nav_graph.xml +++ b/app/src/main/res/navigation/kiwix_nav_graph.xml @@ -61,4 +61,8 @@ android:id="@+id/historyFragment" android:name="org.kiwix.kiwixmobile.core.page.history.HistoryFragment" android:label="HistoryFragment" /> + diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/di/components/CoreComponent.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/di/components/CoreComponent.kt index bcc8d0c7d..cd99657f2 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/di/components/CoreComponent.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/di/components/CoreComponent.kt @@ -48,7 +48,7 @@ import org.kiwix.kiwixmobile.core.main.KiwixWebView import org.kiwix.kiwixmobile.core.reader.ZimFileReader import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer import org.kiwix.kiwixmobile.core.search.SearchActivity -import org.kiwix.kiwixmobile.core.settings.CoreSettingsActivity +import org.kiwix.kiwixmobile.core.settings.CoreSettingsFragment import org.kiwix.kiwixmobile.core.utils.BookUtils import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import javax.inject.Singleton @@ -103,5 +103,5 @@ interface CoreComponent { fun inject(searchActivity: SearchActivity) fun inject(helpActivity: HelpActivity) - fun inject(settingsActivity: CoreSettingsActivity) + fun inject(settingsActivity: CoreSettingsFragment) } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt index 6f8d40d18..2e24d54eb 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt @@ -168,7 +168,9 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider { navController.navigate(fragmentId, bundle) } - abstract fun openSettingsActivity() + open fun openSettingsActivity() { + handleDrawerOnNavigation() + } private fun openHistoryActivity() { navigate(historyFragmentResId) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/page/PageFragment.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/page/PageFragment.kt index b883860fd..cfa4d0d74 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/page/PageFragment.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/page/PageFragment.kt @@ -138,6 +138,7 @@ abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActiv savedInstanceState: Bundle? ): View? { setHasOptionsMenu(true) + (activity as AppCompatActivity).setSupportActionBar(null) return inflater.inflate(R.layout.fragment_page, container, false) } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CorePrefsFragment.java b/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CorePrefsFragment.java index 2beb09112..17885332a 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CorePrefsFragment.java +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CorePrefsFragment.java @@ -203,7 +203,6 @@ public abstract class CorePrefsFragment extends PreferenceFragmentCompat impleme private void clearAllHistoryDialog() { alertDialogShower.show(KiwixDialog.ClearAllHistory.INSTANCE, () -> { presenter.clearHistory(); - CoreSettingsActivity.allHistoryCleared = true; Snackbar.make(getView(), R.string.all_history_cleared, Snackbar.LENGTH_SHORT).show(); return Unit.INSTANCE; }); diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsActivity.java b/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsActivity.java deleted file mode 100644 index 6f24aa55d..000000000 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsActivity.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Kiwix Android - * Copyright (c) 2019 Kiwix - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -package org.kiwix.kiwixmobile.core.settings; - -import android.content.Intent; -import android.os.Bundle; -import androidx.appcompat.widget.Toolbar; -import androidx.fragment.app.Fragment; -import org.kiwix.kiwixmobile.core.R; -import org.kiwix.kiwixmobile.core.base.BaseActivity; - -import static org.kiwix.kiwixmobile.core.utils.ConstantsKt.EXTRA_WEBVIEWS_LIST; -import static org.kiwix.kiwixmobile.core.utils.ConstantsKt.RESULT_HISTORY_CLEARED; - -public abstract class CoreSettingsActivity extends BaseActivity { - - public static boolean allHistoryCleared = false; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.settings); - - allHistoryCleared = false; - - getSupportFragmentManager() - .beginTransaction(). - replace(R.id.content_frame, createPreferenceFragment()) - .commit(); - - setUpToolbar(); - } - - protected abstract Fragment createPreferenceFragment(); - - @Override - public void onBackPressed() { - getWindow().setWindowAnimations(0); - if (allHistoryCleared) { - Intent data = new Intent(); - data.putExtra(EXTRA_WEBVIEWS_LIST, allHistoryCleared); - setResult(RESULT_HISTORY_CLEARED, data); - } - super.onBackPressed(); - } - - private void setUpToolbar() { - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - getSupportActionBar().setTitle(getString(R.string.menu_settings)); - getSupportActionBar().setHomeButtonEnabled(true); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - - toolbar.setNavigationOnClickListener(v -> onBackPressed()); - } -} diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsFragment.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsFragment.kt new file mode 100644 index 000000000..863b46add --- /dev/null +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsFragment.kt @@ -0,0 +1,55 @@ +/* + * Kiwix Android + * Copyright (c) 2019 Kiwix + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +package org.kiwix.kiwixmobile.core.settings + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.Fragment +import kotlinx.android.synthetic.main.layout_toolbar.toolbar +import org.kiwix.kiwixmobile.core.R +import org.kiwix.kiwixmobile.core.base.BaseFragment + +abstract class CoreSettingsFragment : BaseFragment() { + + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + requireActivity().supportFragmentManager + .beginTransaction().replace(R.id.content_frame, createPreferenceFragment()!!) + .commit() + setUpToolbar() + } + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View = inflater.inflate(R.layout.settings, container, false) + + protected abstract fun createPreferenceFragment(): Fragment + + private fun setUpToolbar() { + val activity = requireActivity() as AppCompatActivity + activity.setSupportActionBar(toolbar) + activity.supportActionBar!!.title = getString(R.string.menu_settings) + activity.supportActionBar!!.setHomeButtonEnabled(true) + activity.supportActionBar!!.setDisplayHomeAsUpEnabled(true) + } +} diff --git a/core/src/main/res/layout/fragment_page.xml b/core/src/main/res/layout/fragment_page.xml index 63f4b6737..6fd61ba68 100644 --- a/core/src/main/res/layout/fragment_page.xml +++ b/core/src/main/res/layout/fragment_page.xml @@ -13,7 +13,14 @@ app:layout_constraintTop_toTopOf="parent" tools:showIn="@layout/activity_help"> - + + - + - - - - - - diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/di/CustomActivityComponent.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/di/CustomActivityComponent.kt index 63f35e606..53aa6b7ea 100644 --- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/di/CustomActivityComponent.kt +++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/di/CustomActivityComponent.kt @@ -26,14 +26,14 @@ import org.kiwix.kiwixmobile.core.di.components.CoreActivityComponent import org.kiwix.kiwixmobile.custom.download.CustomDownloadActivity import org.kiwix.kiwixmobile.custom.main.CustomMainActivity import org.kiwix.kiwixmobile.custom.main.CustomReaderFragment -import org.kiwix.kiwixmobile.custom.settings.CustomSettingsActivity +import org.kiwix.kiwixmobile.custom.settings.CustomSettingsFragment import org.kiwix.kiwixmobile.custom.splash.CustomSplashActivity @ActivityScope @Subcomponent(modules = [CustomActivityModule::class]) interface CustomActivityComponent : CoreActivityComponent { fun inject(customMainActivity: CustomMainActivity) - fun inject(customSettingsActivity: CustomSettingsActivity) + fun inject(customSettingsActivity: CustomSettingsFragment) fun inject(customDownloadActivity: CustomDownloadActivity) fun inject(customSplashActivity: CustomSplashActivity) fun inject(customReaderFragment: CustomReaderFragment) diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt index 8c069b327..566bb62f3 100644 --- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt +++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt @@ -28,12 +28,9 @@ import androidx.navigation.findNavController import kotlinx.android.synthetic.main.activity_main.custom_drawer_container import kotlinx.android.synthetic.main.activity_main.drawer_nav_view import org.kiwix.kiwixmobile.core.di.components.CoreComponent -import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.intent import org.kiwix.kiwixmobile.core.main.CoreMainActivity -import org.kiwix.kiwixmobile.core.utils.REQUEST_PREFERENCES import org.kiwix.kiwixmobile.custom.R import org.kiwix.kiwixmobile.custom.customActivityComponent -import org.kiwix.kiwixmobile.custom.settings.CustomSettingsActivity const val REQUEST_READ_FOR_OBB = 5002 @@ -87,7 +84,8 @@ class CustomMainActivity : CoreMainActivity() { } override fun openSettingsActivity() { - startActivityForResult(intent(), REQUEST_PREFERENCES) + super.openSettingsActivity() + navigate(R.id.customSettingsFragment) } override fun openPage(pageUrl: String, zimFilePath: String) { diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/settings/CustomSettingsActivity.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/settings/CustomSettingsFragment.kt similarity index 70% rename from custom/src/main/java/org/kiwix/kiwixmobile/custom/settings/CustomSettingsActivity.kt rename to custom/src/main/java/org/kiwix/kiwixmobile/custom/settings/CustomSettingsFragment.kt index 0e0017a17..88fac0d6a 100644 --- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/settings/CustomSettingsActivity.kt +++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/settings/CustomSettingsFragment.kt @@ -18,15 +18,15 @@ package org.kiwix.kiwixmobile.custom.settings -import org.kiwix.kiwixmobile.core.di.components.CoreComponent -import org.kiwix.kiwixmobile.core.settings.CoreSettingsActivity -import org.kiwix.kiwixmobile.custom.customActivityComponent +import org.kiwix.kiwixmobile.core.base.BaseActivity +import org.kiwix.kiwixmobile.core.settings.CoreSettingsFragment +import org.kiwix.kiwixmobile.custom.main.CustomMainActivity -class CustomSettingsActivity : CoreSettingsActivity() { - - override fun injection(coreComponent: CoreComponent) { - customActivityComponent.inject(this) - } +class CustomSettingsFragment : CoreSettingsFragment() { override fun createPreferenceFragment() = CustomPrefsFragment() + + override fun inject(baseActivity: BaseActivity) { + (baseActivity as CustomMainActivity).cachedComponent.inject(this) + } } diff --git a/custom/src/main/res/navigation/custom_nav_graph.xml b/custom/src/main/res/navigation/custom_nav_graph.xml index 5ec03b14e..44dc7c5c0 100644 --- a/custom/src/main/res/navigation/custom_nav_graph.xml +++ b/custom/src/main/res/navigation/custom_nav_graph.xml @@ -37,4 +37,8 @@ android:id="@+id/bookmarksFragment" android:name="org.kiwix.kiwixmobile.core.page.bookmark.BookmarksFragment" android:label="BookmarksFragment" /> + From 62428aeeeb52258c72d59f3558635d5a88a3951d Mon Sep 17 00:00:00 2001 From: HissPirat Date: Mon, 3 Aug 2020 15:53:11 +0200 Subject: [PATCH 2/9] #2241 instrumentation fix WIP, fails on recyclerview clicks --- .../kiwixmobile/main/MainActivityTest.java | 8 +----- .../settings/KiwixSettingsActivityTest.java | 25 +++++++++++++++++-- .../kiwixmobile/utils/StandardActions.java | 7 ++++++ 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/main/MainActivityTest.java b/app/src/androidTest/java/org/kiwix/kiwixmobile/main/MainActivityTest.java index e29a907bb..ef27283a6 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/main/MainActivityTest.java +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/main/MainActivityTest.java @@ -31,13 +31,11 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.kiwix.kiwixmobile.core.R; -import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.action.ViewActions.click; -import static androidx.test.espresso.matcher.ViewMatchers.withContentDescription; import static com.schibsted.spain.barista.interaction.BaristaClickInteractions.clickOn; import static org.kiwix.kiwixmobile.testutils.TestUtils.TEST_PAUSE_MS; import static org.kiwix.kiwixmobile.testutils.TestUtils.getResourceString; import static org.kiwix.kiwixmobile.utils.StandardActions.enterSettings; +import static org.kiwix.kiwixmobile.utils.StandardActions.openDrawer; @LargeTest @RunWith(AndroidJUnit4.class) @@ -64,10 +62,6 @@ public class MainActivityTest { clickOn(R.string.menu_help); } - private void openDrawer() { - onView(withContentDescription("Open")).perform(click()); - } - @Test public void navigateSettings() { BaristaSleepInteractions.sleep(TEST_PAUSE_MS); diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java index 3393fa6bd..8fc6cb9dd 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java @@ -18,15 +18,20 @@ package org.kiwix.kiwixmobile.settings; +import android.Manifest; import android.view.View; import androidx.annotation.StringRes; import androidx.recyclerview.widget.RecyclerView; import androidx.test.rule.ActivityTestRule; +import androidx.test.rule.GrantPermissionRule; +import com.schibsted.spain.barista.interaction.BaristaSleepInteractions; import org.hamcrest.Matcher; import org.jetbrains.annotations.NotNull; +import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.kiwix.kiwixmobile.core.R; +import org.kiwix.kiwixmobile.main.KiwixMainActivity; import static androidx.test.espresso.Espresso.onView; import static androidx.test.espresso.action.ViewActions.click; @@ -37,11 +42,27 @@ import static androidx.test.espresso.matcher.ViewMatchers.withText; import static com.schibsted.spain.barista.assertion.BaristaVisibilityAssertions.assertDisplayed; import static org.hamcrest.Matchers.anyOf; import static org.hamcrest.Matchers.is; +import static org.kiwix.kiwixmobile.testutils.TestUtils.TEST_PAUSE_MS; +import static org.kiwix.kiwixmobile.utils.StandardActions.enterSettings; +import static org.kiwix.kiwixmobile.utils.StandardActions.openDrawer; public class KiwixSettingsActivityTest { @Rule - public ActivityTestRule activityTestRule = - new ActivityTestRule<>(KiwixSettingsFragment.class); + public ActivityTestRule activityTestRule = + new ActivityTestRule<>(KiwixMainActivity.class); + @Rule + public GrantPermissionRule readPermissionRule = + GrantPermissionRule.grant(Manifest.permission.READ_EXTERNAL_STORAGE); + @Rule + public GrantPermissionRule writePermissionRule = + GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE); + + @Before + public void setup() { + BaristaSleepInteractions.sleep(TEST_PAUSE_MS); + openDrawer(); + enterSettings(); + } @Test public void testToggle() { diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/utils/StandardActions.java b/app/src/androidTest/java/org/kiwix/kiwixmobile/utils/StandardActions.java index 79cb3c69c..464d08edc 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/utils/StandardActions.java +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/utils/StandardActions.java @@ -23,7 +23,10 @@ import com.schibsted.spain.barista.interaction.BaristaSleepInteractions; import org.kiwix.kiwixmobile.core.R; import static androidx.test.espresso.Espresso.onData; +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.action.ViewActions.click; import static androidx.test.espresso.action.ViewActions.longClick; +import static androidx.test.espresso.matcher.ViewMatchers.withContentDescription; import static androidx.test.espresso.matcher.ViewMatchers.withId; import static com.schibsted.spain.barista.interaction.BaristaDialogInteractions.clickDialogPositiveButton; import static org.kiwix.kiwixmobile.testutils.TestUtils.TEST_PAUSE_MS; @@ -36,6 +39,10 @@ import static org.kiwix.kiwixmobile.testutils.TestUtils.withContent; public class StandardActions { + public static void openDrawer() { + onView(withContentDescription(getResourceString(R.string.open_drawer))).perform(click()); + } + public static void enterSettings() { BaristaSleepInteractions.sleep(TEST_PAUSE_MS); BaristaMenuClickInteractions.clickMenu(getResourceString(R.string.menu_settings)); From 28ecbc04f1e5d8b0bb77537f704078554e305034 Mon Sep 17 00:00:00 2001 From: HissPirat Date: Mon, 3 Aug 2020 16:02:00 +0200 Subject: [PATCH 3/9] #2241 fixed instrumentation tests for kiwix settings test --- ...gsActivityTest.java => KiwixSettingsFragmentTest.java} | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) rename app/src/androidTest/java/org/kiwix/kiwixmobile/settings/{KiwixSettingsActivityTest.java => KiwixSettingsFragmentTest.java} (93%) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsFragmentTest.java similarity index 93% rename from app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java rename to app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsFragmentTest.java index 8fc6cb9dd..fdf42bc4f 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsFragmentTest.java @@ -21,7 +21,6 @@ package org.kiwix.kiwixmobile.settings; import android.Manifest; import android.view.View; import androidx.annotation.StringRes; -import androidx.recyclerview.widget.RecyclerView; import androidx.test.rule.ActivityTestRule; import androidx.test.rule.GrantPermissionRule; import com.schibsted.spain.barista.interaction.BaristaSleepInteractions; @@ -37,16 +36,15 @@ import static androidx.test.espresso.Espresso.onView; import static androidx.test.espresso.action.ViewActions.click; import static androidx.test.espresso.contrib.RecyclerViewActions.actionOnItem; import static androidx.test.espresso.matcher.ViewMatchers.hasDescendant; -import static androidx.test.espresso.matcher.ViewMatchers.withClassName; +import static androidx.test.espresso.matcher.ViewMatchers.withId; import static androidx.test.espresso.matcher.ViewMatchers.withText; import static com.schibsted.spain.barista.assertion.BaristaVisibilityAssertions.assertDisplayed; import static org.hamcrest.Matchers.anyOf; -import static org.hamcrest.Matchers.is; import static org.kiwix.kiwixmobile.testutils.TestUtils.TEST_PAUSE_MS; import static org.kiwix.kiwixmobile.utils.StandardActions.enterSettings; import static org.kiwix.kiwixmobile.utils.StandardActions.openDrawer; -public class KiwixSettingsActivityTest { +public class KiwixSettingsFragmentTest { @Rule public ActivityTestRule activityTestRule = new ActivityTestRule<>(KiwixMainActivity.class); @@ -77,7 +75,7 @@ public class KiwixSettingsActivityTest { for (int i = 0; i < stringIds.length; i++) { matchers[i] = withText(stringIds[i]); } - onView(withClassName(is(RecyclerView.class.getName()))) + onView(withId(R.id.recycler_view)) .perform(actionOnItem(hasDescendant(anyOf(matchers)), click())); } From 970981bafe5a4f935a7ac3fd334cf3e4546bd56e Mon Sep 17 00:00:00 2001 From: HissPirat Date: Tue, 4 Aug 2020 09:33:00 +0200 Subject: [PATCH 4/9] #2241 renamed settings activity to settings fragment --- .../main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt | 4 ++-- .../org/kiwix/kiwixmobile/core/di/components/CoreComponent.kt | 2 +- .../java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt | 4 ++-- .../kiwix/kiwixmobile/custom/di/CustomActivityComponent.kt | 2 +- .../org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt index ce77400aa..74a7f727d 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt @@ -139,8 +139,8 @@ class KiwixMainActivity : CoreMainActivity() { return true } - override fun openSettingsActivity() { - super.openSettingsActivity() + override fun openSettings() { + super.openSettings() navigate(R.id.kiwixSettingsFragment) } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/di/components/CoreComponent.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/di/components/CoreComponent.kt index cd99657f2..3769131ec 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/di/components/CoreComponent.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/di/components/CoreComponent.kt @@ -103,5 +103,5 @@ interface CoreComponent { fun inject(searchActivity: SearchActivity) fun inject(helpActivity: HelpActivity) - fun inject(settingsActivity: CoreSettingsFragment) + fun inject(settingsFragment: CoreSettingsFragment) } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt index 2e24d54eb..f1076861c 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt @@ -114,7 +114,7 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider { open fun onNavigationItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.menu_support_kiwix -> openSupportKiwixExternalLink() - R.id.menu_settings -> openSettingsActivity() + R.id.menu_settings -> openSettings() R.id.menu_help -> start() R.id.menu_history -> openHistoryActivity() R.id.menu_bookmarks_list -> openBookmarksActivity() @@ -168,7 +168,7 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider { navController.navigate(fragmentId, bundle) } - open fun openSettingsActivity() { + open fun openSettings() { handleDrawerOnNavigation() } diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/di/CustomActivityComponent.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/di/CustomActivityComponent.kt index 53aa6b7ea..85c14aab0 100644 --- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/di/CustomActivityComponent.kt +++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/di/CustomActivityComponent.kt @@ -33,7 +33,7 @@ import org.kiwix.kiwixmobile.custom.splash.CustomSplashActivity @Subcomponent(modules = [CustomActivityModule::class]) interface CustomActivityComponent : CoreActivityComponent { fun inject(customMainActivity: CustomMainActivity) - fun inject(customSettingsActivity: CustomSettingsFragment) + fun inject(customSettingsFragment: CustomSettingsFragment) fun inject(customDownloadActivity: CustomDownloadActivity) fun inject(customSplashActivity: CustomSplashActivity) fun inject(customReaderFragment: CustomReaderFragment) diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt index 566bb62f3..0d2cd119f 100644 --- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt +++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt @@ -83,8 +83,8 @@ class CustomMainActivity : CoreMainActivity() { drawerContainerLayout.closeDrawer(drawer_nav_view) } - override fun openSettingsActivity() { - super.openSettingsActivity() + override fun openSettings() { + super.openSettings() navigate(R.id.customSettingsFragment) } From 1c936a58f211a5dbbafd4be5bae58fea3d23a4ab Mon Sep 17 00:00:00 2001 From: HissPirat Date: Tue, 4 Aug 2020 09:53:53 +0200 Subject: [PATCH 5/9] #2241 always clear arguments, even if they are empty. removed delay in inst. test. --- .../kiwix/kiwixmobile/settings/KiwixSettingsFragmentTest.java | 3 --- .../kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsFragmentTest.java b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsFragmentTest.java index fdf42bc4f..c7879b0a8 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsFragmentTest.java +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsFragmentTest.java @@ -23,7 +23,6 @@ import android.view.View; import androidx.annotation.StringRes; import androidx.test.rule.ActivityTestRule; import androidx.test.rule.GrantPermissionRule; -import com.schibsted.spain.barista.interaction.BaristaSleepInteractions; import org.hamcrest.Matcher; import org.jetbrains.annotations.NotNull; import org.junit.Before; @@ -40,7 +39,6 @@ import static androidx.test.espresso.matcher.ViewMatchers.withId; import static androidx.test.espresso.matcher.ViewMatchers.withText; import static com.schibsted.spain.barista.assertion.BaristaVisibilityAssertions.assertDisplayed; import static org.hamcrest.Matchers.anyOf; -import static org.kiwix.kiwixmobile.testutils.TestUtils.TEST_PAUSE_MS; import static org.kiwix.kiwixmobile.utils.StandardActions.enterSettings; import static org.kiwix.kiwixmobile.utils.StandardActions.openDrawer; @@ -57,7 +55,6 @@ public class KiwixSettingsFragmentTest { @Before public void setup() { - BaristaSleepInteractions.sleep(TEST_PAUSE_MS); openDrawer(); enterSettings(); } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt index d856c3a21..5ce06f334 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt @@ -91,10 +91,10 @@ class KiwixReaderFragment : CoreReaderFragment() { tryOpeningZimFile(args) } loadUrlWithCurrentWebview(args.pageUrl) - requireArguments().clear() } else { manageExternalLaunchAndRestoringViewState(args.zimFileUri) } + requireArguments().clear() } private fun tryOpeningZimFile(args: KiwixReaderFragmentArgs) { From 8497ae4b3a6efb7f33acd697fd450e7e1aea223b Mon Sep 17 00:00:00 2001 From: HissPirat Date: Fri, 7 Aug 2020 11:53:53 +0200 Subject: [PATCH 6/9] #2241 undid odd pagefragment changes --- .../java/org/kiwix/kiwixmobile/core/page/PageFragment.kt | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/page/PageFragment.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/page/PageFragment.kt index 5d9b07c75..2cbfe54d7 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/page/PageFragment.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/page/PageFragment.kt @@ -140,11 +140,7 @@ abstract class PageFragment : OnItemClickListener, BaseFragment(), FragmentActiv inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - setHasOptionsMenu(true) - (activity as AppCompatActivity).setSupportActionBar(null) - return inflater.inflate(R.layout.fragment_page, container, false) - } + ): View? = inflater.inflate(R.layout.fragment_page, container, false) override fun onDestroyView() { super.onDestroyView() From ad18f942294a26a844667fa86a098798ac4bbd9e Mon Sep 17 00:00:00 2001 From: HissPirat Date: Fri, 7 Aug 2020 11:55:53 +0200 Subject: [PATCH 7/9] #2241 removed unnecessary !! --- .../org/kiwix/kiwixmobile/core/settings/CoreSettingsFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsFragment.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsFragment.kt index 863b46add..e84c1c337 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsFragment.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsFragment.kt @@ -32,7 +32,7 @@ abstract class CoreSettingsFragment : BaseFragment() { override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) requireActivity().supportFragmentManager - .beginTransaction().replace(R.id.content_frame, createPreferenceFragment()!!) + .beginTransaction().replace(R.id.content_frame, createPreferenceFragment()) .commit() setUpToolbar() } From 25cbdd350ebff0ec9f8f57771fa839eea56471ab Mon Sep 17 00:00:00 2001 From: HissPirat Date: Fri, 7 Aug 2020 13:33:38 +0200 Subject: [PATCH 8/9] #2241 fixed instrumentation tests --- .../java/org/kiwix/kiwixmobile/utils/StandardActions.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/utils/StandardActions.java b/app/src/androidTest/java/org/kiwix/kiwixmobile/utils/StandardActions.java index 91af3e77c..62cfc385d 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/utils/StandardActions.java +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/utils/StandardActions.java @@ -39,10 +39,6 @@ import static org.kiwix.kiwixmobile.testutils.TestUtils.withContent; public class StandardActions { - public static void openDrawer() { - onView(withContentDescription(getResourceString(R.string.open_drawer))).perform(click()); - } - public static void enterSettings() { BaristaSleepInteractions.sleep(TEST_PAUSE_MS); BaristaMenuClickInteractions.clickMenu(getResourceString(R.string.menu_settings)); From 4e23f1b605cffee2bb1f565f62f2522caf2fb7e5 Mon Sep 17 00:00:00 2001 From: Frans-Lukas Date: Wed, 12 Aug 2020 11:31:20 +0200 Subject: [PATCH 9/9] #2241 moved settings navigation to core --- .../java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt | 6 +----- .../org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt | 6 ++++-- .../kiwix/kiwixmobile/core/settings/CoreSettingsFragment.kt | 4 ++-- .../org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt | 6 +----- 4 files changed, 8 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt index 1b3e2d020..8ee0141a3 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt @@ -52,6 +52,7 @@ class KiwixMainActivity : CoreMainActivity() { override val drawerContainerLayout: DrawerLayout by lazy { navigation_container } override val drawerNavView: NavigationView by lazy { drawer_nav_view } override val bookmarksFragmentResId: Int = R.id.bookmarksFragment + override val settingsFragmentResId: Int = R.id.kiwixSettingsFragment override val historyFragmentResId: Int = R.id.historyFragment override fun injection(coreComponent: CoreComponent) { @@ -125,11 +126,6 @@ class KiwixMainActivity : CoreMainActivity() { return true } - override fun openSettings() { - super.openSettings() - navigate(R.id.kiwixSettingsFragment) - } - override fun openPage(pageUrl: String, zimFilePath: String) { navigate( R.id.navigation_reader, diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt index 01fe92ec8..1a22d88a1 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt @@ -48,11 +48,12 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider { @Inject lateinit var externalLinkOpener: ExternalLinkOpener protected lateinit var drawerToggle: ActionBarDrawerToggle - abstract val navController: NavController + abstract val drawerContainerLayout: DrawerLayout abstract val drawerNavView: NavigationView abstract val bookmarksFragmentResId: Int + abstract val settingsFragmentResId: Int abstract val historyFragmentResId: Int abstract val cachedComponent: CoreActivityComponent @@ -186,8 +187,9 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider { navController.navigate(fragmentId, bundle) } - open fun openSettings() { + fun openSettings() { handleDrawerOnNavigation() + navigate(settingsFragmentResId) } private fun openHistoryActivity() { diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsFragment.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsFragment.kt index e84c1c337..c3faaf935 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsFragment.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/settings/CoreSettingsFragment.kt @@ -29,8 +29,8 @@ import org.kiwix.kiwixmobile.core.base.BaseFragment abstract class CoreSettingsFragment : BaseFragment() { - override fun onActivityCreated(savedInstanceState: Bundle?) { - super.onActivityCreated(savedInstanceState) + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) requireActivity().supportFragmentManager .beginTransaction().replace(R.id.content_frame, createPreferenceFragment()) .commit() diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt index 4dd81658e..6fd4ec44c 100644 --- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt +++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt @@ -44,6 +44,7 @@ class CustomMainActivity : CoreMainActivity() { override val drawerContainerLayout: DrawerLayout by lazy { custom_drawer_container } override val drawerNavView: NavigationView by lazy { drawer_nav_view } override val bookmarksFragmentResId: Int = R.id.bookmarksFragment + override val settingsFragmentResId: Int = R.id.customSettingsFragment override val historyFragmentResId: Int = R.id.historyFragment override val cachedComponent by lazy { customActivityComponent } @@ -76,11 +77,6 @@ class CustomMainActivity : CoreMainActivity() { .isVisible = false } - override fun openSettings() { - super.openSettings() - navigate(R.id.customSettingsFragment) - } - override fun openPage(pageUrl: String, zimFilePath: String) { val bundle = bundleOf(PAGE_URL_KEY to pageUrl, ZIM_FILE_URI_KEY to zimFilePath) navigate(R.id.customReaderFragment, bundle)