From dfd21f56116a3eaa99025dc70a80e5c7a689b110 Mon Sep 17 00:00:00 2001 From: manas-yu Date: Wed, 15 Jan 2025 20:33:05 +0530 Subject: [PATCH 01/17] intial --- .../org/oppia/android/app/hintsandsolution/HintViewModel.kt | 2 +- .../main/java/org/oppia/android/testing/math/FractionSubject.kt | 1 - .../java/org/oppia/android/testing/math/MathEquationSubject.kt | 1 - .../org/oppia/android/testing/math/MathExpressionSubject.kt | 1 - .../src/main/java/org/oppia/android/testing/math/RealSubject.kt | 1 - 5 files changed, 1 insertion(+), 5 deletions(-) diff --git a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintViewModel.kt b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintViewModel.kt index 57b4b8a2f47..f9d51d57c85 100644 --- a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintViewModel.kt +++ b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintViewModel.kt @@ -20,7 +20,7 @@ class HintViewModel( * the original summary. */ val hintContentDescription: String by lazy { - CustomHtmlContentHandler.fromHtml( + CustomHtmlContentHandler.getContentDescription( hintSummary, imageRetriever = null, customTagHandlers = mapOf() diff --git a/testing/src/main/java/org/oppia/android/testing/math/FractionSubject.kt b/testing/src/main/java/org/oppia/android/testing/math/FractionSubject.kt index 03c6ed4ef78..2c0346338c2 100644 --- a/testing/src/main/java/org/oppia/android/testing/math/FractionSubject.kt +++ b/testing/src/main/java/org/oppia/android/testing/math/FractionSubject.kt @@ -10,7 +10,6 @@ import com.google.common.truth.extensions.proto.LiteProtoSubject import org.oppia.android.app.model.Fraction import org.oppia.android.util.math.toDouble -// TODO(#4097): Add tests for this class. /** * Truth subject for verifying properties of [Fraction]s. diff --git a/testing/src/main/java/org/oppia/android/testing/math/MathEquationSubject.kt b/testing/src/main/java/org/oppia/android/testing/math/MathEquationSubject.kt index a8c456a37e3..3b56f23e0c2 100644 --- a/testing/src/main/java/org/oppia/android/testing/math/MathEquationSubject.kt +++ b/testing/src/main/java/org/oppia/android/testing/math/MathEquationSubject.kt @@ -10,7 +10,6 @@ import org.oppia.android.testing.math.MathEquationSubject.Companion.assertThat import org.oppia.android.testing.math.MathExpressionSubject.Companion.assertThat import org.oppia.android.util.math.toRawLatex -// TODO(#4097): Add tests for this class. /** * Truth subject for verifying properties of [MathEquation]s. diff --git a/testing/src/main/java/org/oppia/android/testing/math/MathExpressionSubject.kt b/testing/src/main/java/org/oppia/android/testing/math/MathExpressionSubject.kt index e9241d67b58..41295452aa8 100644 --- a/testing/src/main/java/org/oppia/android/testing/math/MathExpressionSubject.kt +++ b/testing/src/main/java/org/oppia/android/testing/math/MathExpressionSubject.kt @@ -23,7 +23,6 @@ import org.oppia.android.testing.math.RealSubject.Companion.assertThat import org.oppia.android.util.math.evaluateAsNumericExpression import org.oppia.android.util.math.toRawLatex -// TODO(#4097): Add tests for this class. /** * Truth subject for verifying properties of [MathExpression]s. diff --git a/testing/src/main/java/org/oppia/android/testing/math/RealSubject.kt b/testing/src/main/java/org/oppia/android/testing/math/RealSubject.kt index 908bc7be6e2..0feb6b513bf 100644 --- a/testing/src/main/java/org/oppia/android/testing/math/RealSubject.kt +++ b/testing/src/main/java/org/oppia/android/testing/math/RealSubject.kt @@ -10,7 +10,6 @@ import com.google.common.truth.extensions.proto.LiteProtoSubject import org.oppia.android.app.model.Real import org.oppia.android.testing.math.FractionSubject.Companion.assertThat -// TODO(#4097): Add tests for this class. /** * Truth subject for verifying properties of [Real]s. From cd69480aa7e625548a3f53aa70dc9a56a22fc0a3 Mon Sep 17 00:00:00 2001 From: manas-yu Date: Wed, 15 Jan 2025 20:33:52 +0530 Subject: [PATCH 02/17] foramtting --- .../main/java/org/oppia/android/testing/math/FractionSubject.kt | 1 - .../java/org/oppia/android/testing/math/MathEquationSubject.kt | 1 - .../java/org/oppia/android/testing/math/MathExpressionSubject.kt | 1 - .../src/main/java/org/oppia/android/testing/math/RealSubject.kt | 1 - 4 files changed, 4 deletions(-) diff --git a/testing/src/main/java/org/oppia/android/testing/math/FractionSubject.kt b/testing/src/main/java/org/oppia/android/testing/math/FractionSubject.kt index 2c0346338c2..c4441098a4b 100644 --- a/testing/src/main/java/org/oppia/android/testing/math/FractionSubject.kt +++ b/testing/src/main/java/org/oppia/android/testing/math/FractionSubject.kt @@ -10,7 +10,6 @@ import com.google.common.truth.extensions.proto.LiteProtoSubject import org.oppia.android.app.model.Fraction import org.oppia.android.util.math.toDouble - /** * Truth subject for verifying properties of [Fraction]s. * diff --git a/testing/src/main/java/org/oppia/android/testing/math/MathEquationSubject.kt b/testing/src/main/java/org/oppia/android/testing/math/MathEquationSubject.kt index 3b56f23e0c2..95a527817ec 100644 --- a/testing/src/main/java/org/oppia/android/testing/math/MathEquationSubject.kt +++ b/testing/src/main/java/org/oppia/android/testing/math/MathEquationSubject.kt @@ -10,7 +10,6 @@ import org.oppia.android.testing.math.MathEquationSubject.Companion.assertThat import org.oppia.android.testing.math.MathExpressionSubject.Companion.assertThat import org.oppia.android.util.math.toRawLatex - /** * Truth subject for verifying properties of [MathEquation]s. * diff --git a/testing/src/main/java/org/oppia/android/testing/math/MathExpressionSubject.kt b/testing/src/main/java/org/oppia/android/testing/math/MathExpressionSubject.kt index 41295452aa8..14e16b98b92 100644 --- a/testing/src/main/java/org/oppia/android/testing/math/MathExpressionSubject.kt +++ b/testing/src/main/java/org/oppia/android/testing/math/MathExpressionSubject.kt @@ -23,7 +23,6 @@ import org.oppia.android.testing.math.RealSubject.Companion.assertThat import org.oppia.android.util.math.evaluateAsNumericExpression import org.oppia.android.util.math.toRawLatex - /** * Truth subject for verifying properties of [MathExpression]s. * diff --git a/testing/src/main/java/org/oppia/android/testing/math/RealSubject.kt b/testing/src/main/java/org/oppia/android/testing/math/RealSubject.kt index 0feb6b513bf..cc04ad30630 100644 --- a/testing/src/main/java/org/oppia/android/testing/math/RealSubject.kt +++ b/testing/src/main/java/org/oppia/android/testing/math/RealSubject.kt @@ -10,7 +10,6 @@ import com.google.common.truth.extensions.proto.LiteProtoSubject import org.oppia.android.app.model.Real import org.oppia.android.testing.math.FractionSubject.Companion.assertThat - /** * Truth subject for verifying properties of [Real]s. * From 935f66b44c5696e94a56df2fefd2f077069876d5 Mon Sep 17 00:00:00 2001 From: manas-yu Date: Fri, 17 Jan 2025 20:07:50 +0530 Subject: [PATCH 03/17] dagger update --- .../app/hintsandsolution/HintViewModel.kt | 16 +++++++++-- .../HintsAndSolutionViewModel.kt | 28 ++++++++++++++----- .../exploration/ExplorationActivityTest.kt | 7 ++--- .../util/parser/html/ConceptCardTagHandler.kt | 5 ++-- .../parser/html/HtmlParserEntityTypeModule.kt | 13 +++++++++ 5 files changed, 52 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintViewModel.kt b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintViewModel.kt index f9d51d57c85..d3711eebfd8 100644 --- a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintViewModel.kt +++ b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintViewModel.kt @@ -2,6 +2,9 @@ package org.oppia.android.app.hintsandsolution import androidx.databinding.ObservableBoolean import org.oppia.android.util.parser.html.CustomHtmlContentHandler +import org.oppia.android.util.parser.html.ConceptCardTagHandler +import org.oppia.android.util.parser.html.CUSTOM_CONCEPT_CARD_TAG +import org.oppia.android.util.logging.ConsoleLogger /** * [HintsAndSolutionItemViewModel] that represents a single hint that can be shown to the user. @@ -9,11 +12,15 @@ import org.oppia.android.util.parser.html.CustomHtmlContentHandler * @property title the title of this hint, relative to others (this is generated by the app) * @property hintSummary the core hint text (which may contain HTML) to show the user * @property isHintRevealed whether the hint is currently expanded and viewable + * @property conceptCardListener listener for handling concept card clicks + * @property consoleLogger logger for handling any parsing errors */ class HintViewModel( val title: String, val hintSummary: String, - val isHintRevealed: ObservableBoolean + val isHintRevealed: ObservableBoolean, + private val conceptCardListener: ConceptCardTagHandler.ConceptCardLinkClickListener, + private val consoleLogger: ConsoleLogger ) : HintsAndSolutionItemViewModel() { /** * A screenreader-friendly version of [hintSummary] that should be used for readout, in place of @@ -23,7 +30,12 @@ class HintViewModel( CustomHtmlContentHandler.getContentDescription( hintSummary, imageRetriever = null, - customTagHandlers = mapOf() + customTagHandlers = mapOf( + CUSTOM_CONCEPT_CARD_TAG to ConceptCardTagHandler( + conceptCardListener, + consoleLogger + ) + ) ).toString() } } diff --git a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt index f604f7f6547..fd3265a6343 100644 --- a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt +++ b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt @@ -14,6 +14,8 @@ import org.oppia.android.domain.hintsandsolution.isHintRevealed import org.oppia.android.domain.hintsandsolution.isSolutionAvailable import org.oppia.android.domain.hintsandsolution.isSolutionRevealed import org.oppia.android.domain.translation.TranslationController +import org.oppia.android.util.parser.html.ConceptCardTagHandler +import org.oppia.android.util.logging.ConsoleLogger import javax.inject.Inject /** @@ -27,7 +29,9 @@ class HintsAndSolutionViewModel private constructor( private val writtenTranslationContext: WrittenTranslationContext, private val resourceHandler: AppLanguageResourceHandler, private val translationController: TranslationController, - private val solutionViewModelFactory: SolutionViewModel.Factory + private val solutionViewModelFactory: SolutionViewModel.Factory, + private val conceptCardListener: ConceptCardTagHandler.ConceptCardLinkClickListener, + private val consoleLogger: ConsoleLogger ) : ObservableViewModel() { private val hintList by lazy { helpIndex.dropLastUnavailable(state.interaction.hintList) } private val solution by lazy { @@ -57,7 +61,9 @@ class HintsAndSolutionViewModel private constructor( private fun createViewModels(): List { return hintList.mapIndexed { index, hint -> createHintViewModel( - index, hint, isHintRevealed = ObservableBoolean(helpIndex.isHintRevealed(index, hintList)) + index, + hint, + isHintRevealed = ObservableBoolean(helpIndex.isHintRevealed(index, hintList)) ) } + listOfNotNull(solution?.let(this::createSolutionViewModel)) + ReturnToLessonViewModel } @@ -73,16 +79,20 @@ class HintsAndSolutionViewModel private constructor( resourceHandler.toHumanReadableString(hintIndex + 1) ), hintSummary = translationController.extractString( - hint.hintContent, writtenTranslationContext + hint.hintContent, + writtenTranslationContext ), - isHintRevealed = isHintRevealed + isHintRevealed = isHintRevealed, + conceptCardListener = conceptCardListener, + consoleLogger = consoleLogger ) } private fun createSolutionViewModel(solution: Solution): SolutionViewModel { return solutionViewModelFactory.create( solutionSummary = translationController.extractString( - solution.explanation, writtenTranslationContext + solution.explanation, + writtenTranslationContext ), isSolutionRevealed = isSolutionRevealed, isSolutionExclusive = solution.answerIsExclusive, @@ -96,7 +106,9 @@ class HintsAndSolutionViewModel private constructor( class Factory @Inject constructor( private val resourceHandler: AppLanguageResourceHandler, private val translationController: TranslationController, - private val solutionViewModelFactory: SolutionViewModel.Factory + private val solutionViewModelFactory: SolutionViewModel.Factory, + private val conceptCardListener: ConceptCardTagHandler.ConceptCardLinkClickListener, + private val consoleLogger: ConsoleLogger ) { /** * Returns a new [HintsAndSolutionViewModel] that populates a list of item view models (to be @@ -114,7 +126,9 @@ class HintsAndSolutionViewModel private constructor( writtenTranslationContext, resourceHandler, translationController, - solutionViewModelFactory + solutionViewModelFactory, + conceptCardListener, + consoleLogger ) } } diff --git a/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt index d5adce598af..e5e87760454 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt @@ -2288,15 +2288,12 @@ class ExplorationActivityTest { openHintsAndSolutionsDialog() pressRevealHintButton(hintPosition = 0) - // TODO(#4848): Fix content description generation & update this test to verify using the - // correct text. - // Ensure the hint description is correct and doesn't contain any HTML. onView(withId(R.id.hints_and_solution_summary)) .check( matches( withContentDescription( - "Remember that two halves, when added together," + - " make one whole.\n\nClick on this .\n\n" + "Remember that two halves, when added together, make one whole." + + "\nClick on this test_skill_id_1 concept card." ) ) ) diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt b/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt index 83625743d87..a8886698894 100644 --- a/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt +++ b/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt @@ -52,10 +52,9 @@ class ConceptCardTagHandler( } override fun getContentDescription(attributes: Attributes): String? { - val skillId = attributes.getJsonStringValue(CUSTOM_CONCEPT_CARD_SKILL_ID) val text = attributes.getJsonStringValue(CUSTOM_CONCEPT_CARD_TEXT_VALUE) - return if (!skillId.isNullOrBlank() && !text.isNullOrBlank()) { - "$text concept card $skillId" + return if (!text.isNullOrBlank()) { + text } else "" } } diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt b/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt index 9f479a379be..b74e428b006 100755 --- a/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt +++ b/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt @@ -2,10 +2,23 @@ package org.oppia.android.util.parser.html import dagger.Module import dagger.Provides +import org.oppia.android.util.parser.html.ConceptCardTagHandler +import javax.inject.Singleton +import android.view.View /** Provides Html parsing entity type dependencies. */ @Module class HtmlParserEntityTypeModule { + @Provides + @Singleton + fun provideConceptCardListener(): ConceptCardTagHandler.ConceptCardLinkClickListener { + return object : ConceptCardTagHandler.ConceptCardLinkClickListener { + override fun onConceptCardLinkClicked(view: View, skillId: String) { + // No-op implementation for tests + } + } + } + @Provides @ExplorationHtmlParserEntityType fun provideExplorationHtmlParserEntityType(): String { From 031c997c12bbe22bc99410ae587a0e313f06bb5c Mon Sep 17 00:00:00 2001 From: manas-yu Date: Fri, 17 Jan 2025 20:08:41 +0530 Subject: [PATCH 04/17] formatting --- .../org/oppia/android/app/hintsandsolution/HintViewModel.kt | 6 +++--- .../app/hintsandsolution/HintsAndSolutionViewModel.kt | 2 +- .../android/util/parser/html/HtmlParserEntityTypeModule.kt | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintViewModel.kt b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintViewModel.kt index d3711eebfd8..3fcfef450cd 100644 --- a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintViewModel.kt +++ b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintViewModel.kt @@ -1,10 +1,10 @@ package org.oppia.android.app.hintsandsolution import androidx.databinding.ObservableBoolean -import org.oppia.android.util.parser.html.CustomHtmlContentHandler -import org.oppia.android.util.parser.html.ConceptCardTagHandler -import org.oppia.android.util.parser.html.CUSTOM_CONCEPT_CARD_TAG import org.oppia.android.util.logging.ConsoleLogger +import org.oppia.android.util.parser.html.CUSTOM_CONCEPT_CARD_TAG +import org.oppia.android.util.parser.html.ConceptCardTagHandler +import org.oppia.android.util.parser.html.CustomHtmlContentHandler /** * [HintsAndSolutionItemViewModel] that represents a single hint that can be shown to the user. diff --git a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt index fd3265a6343..cda108a9136 100644 --- a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt +++ b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt @@ -14,8 +14,8 @@ import org.oppia.android.domain.hintsandsolution.isHintRevealed import org.oppia.android.domain.hintsandsolution.isSolutionAvailable import org.oppia.android.domain.hintsandsolution.isSolutionRevealed import org.oppia.android.domain.translation.TranslationController -import org.oppia.android.util.parser.html.ConceptCardTagHandler import org.oppia.android.util.logging.ConsoleLogger +import org.oppia.android.util.parser.html.ConceptCardTagHandler import javax.inject.Inject /** diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt b/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt index b74e428b006..c5358b2e1b4 100755 --- a/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt +++ b/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt @@ -1,10 +1,9 @@ package org.oppia.android.util.parser.html +import android.view.View import dagger.Module import dagger.Provides -import org.oppia.android.util.parser.html.ConceptCardTagHandler import javax.inject.Singleton -import android.view.View /** Provides Html parsing entity type dependencies. */ @Module From 1a8e5010af4369f7b59afc77af463d3a02ba6852 Mon Sep 17 00:00:00 2001 From: manas-yu Date: Fri, 17 Jan 2025 22:28:01 +0530 Subject: [PATCH 05/17] test-module --- app/BUILD.bazel | 1 + .../oppia/android/app/application/BUILD.bazel | 1 + .../exploration/ExplorationActivityTest.kt | 7 ++++--- .../QuestionPlayerActivityTest.kt | 2 +- domain/src/main/assets/test_exp_id_2.json | 2 +- domain/src/main/assets/test_exp_id_2.textproto | 2 +- .../oppia/android/util/parser/html/BUILD.bazel | 16 ++++++++++++++++ .../util/parser/html/ConceptCardTagHandler.kt | 5 +++-- .../parser/html/HtmlParserEntityTypeModule.kt | 12 ------------ .../util/parser/html/TestTagHandlerModule.kt | 17 +++++++++++++++++ 10 files changed, 45 insertions(+), 20 deletions(-) create mode 100644 utility/src/main/java/org/oppia/android/util/parser/html/TestTagHandlerModule.kt diff --git a/app/BUILD.bazel b/app/BUILD.bazel index 7405410cf3e..c717d9831cc 100644 --- a/app/BUILD.bazel +++ b/app/BUILD.bazel @@ -953,6 +953,7 @@ TEST_DEPS = [ "//utility/src/main/java/org/oppia/android/util/parser/image:image_transformation", "//utility/src/main/java/org/oppia/android/util/parser/image:test_glide_image_loader", "//utility/src/main/java/org/oppia/android/util/profile:profile_name_validator", + "//utility/src/main/java/org/oppia/android/util/parser/html:test_tag_handler_module", ] # App module tests. Note that all tests are assumed to be tests with resources (even though not all diff --git a/app/src/main/java/org/oppia/android/app/application/BUILD.bazel b/app/src/main/java/org/oppia/android/app/application/BUILD.bazel index 064c317d50c..1c10a71ec6a 100644 --- a/app/src/main/java/org/oppia/android/app/application/BUILD.bazel +++ b/app/src/main/java/org/oppia/android/app/application/BUILD.bazel @@ -130,5 +130,6 @@ android_library( "//utility/src/main/java/org/oppia/android/util/parser/image:glide_image_loader_module", "//utility/src/main/java/org/oppia/android/util/parser/image:image_parsing_module", "//utility/src/main/java/org/oppia/android/util/parser/image:repository_glide_module", + "//utility/src/main/java/org/oppia/android/util/parser/html:test_tag_handler_module", ], ) diff --git a/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt index e5e87760454..80c49f672a7 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt @@ -169,6 +169,7 @@ import org.oppia.android.util.networking.NetworkConnectionDebugUtilModule import org.oppia.android.util.networking.NetworkConnectionUtil.ProdConnectionStatus import org.oppia.android.util.networking.NetworkConnectionUtilDebugModule import org.oppia.android.util.parser.html.HtmlParserEntityTypeModule +import org.oppia.android.util.parser.html.TestTagHandlerModule import org.oppia.android.util.parser.image.GlideImageLoaderModule import org.oppia.android.util.parser.image.ImageParsingModule import org.robolectric.annotation.Config @@ -2293,7 +2294,7 @@ class ExplorationActivityTest { matches( withContentDescription( "Remember that two halves, when added together, make one whole." + - "\nClick on this test_skill_id_1 concept card." + "\nClick on this lesson concept card test_skill_id_1." ) ) ) @@ -2591,7 +2592,7 @@ class ExplorationActivityTest { onView(withId(R.id.hints_and_solution_summary)) .inRoot(isDialog()) - .perform(openClickableSpan("test_skill_id_1 concept card")) + .perform(openClickableSpan("lesson")) testCoroutineDispatchers.runCurrent() @@ -2901,7 +2902,7 @@ class ExplorationActivityTest { MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, ActivityRouterModule::class, CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, - TestAuthenticationModule::class + TestAuthenticationModule::class, TestTagHandlerModule::class ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/app/src/sharedTest/java/org/oppia/android/app/topic/questionplayer/QuestionPlayerActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/topic/questionplayer/QuestionPlayerActivityTest.kt index 29cfd79e184..3ca1996fe85 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/topic/questionplayer/QuestionPlayerActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/topic/questionplayer/QuestionPlayerActivityTest.kt @@ -457,7 +457,7 @@ class QuestionPlayerActivityTest { matches( withContentDescription( "To write a fraction, you need to know its denominator, which is the total " + - "number of pieces in the whole. All of these pieces should be the same size.\n\n" + "number of pieces in the whole. All of these pieces should be the same size." ) ) ) diff --git a/domain/src/main/assets/test_exp_id_2.json b/domain/src/main/assets/test_exp_id_2.json index 494f1937677..3f56eb49e01 100644 --- a/domain/src/main/assets/test_exp_id_2.json +++ b/domain/src/main/assets/test_exp_id_2.json @@ -524,7 +524,7 @@ "hints": [{ "hint_content": { "content_id": "hint_6", - "html": "

Remember that two halves, when added together, make one whole.

Click on this .

" + "html": "

Remember that two halves, when added together, make one whole.

Click on this .

" } }], "solution": { diff --git a/domain/src/main/assets/test_exp_id_2.textproto b/domain/src/main/assets/test_exp_id_2.textproto index 1fc383fbf27..630d59c6e3d 100644 --- a/domain/src/main/assets/test_exp_id_2.textproto +++ b/domain/src/main/assets/test_exp_id_2.textproto @@ -822,7 +822,7 @@ states { } hint { hint_content { - html: "

Remember that two halves, when added together, make one whole.

Click on this .

" + html: "

Remember that two halves, when added together, make one whole.

Click on this .

" content_id: "hint_6" } } diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/BUILD.bazel b/utility/src/main/java/org/oppia/android/util/parser/html/BUILD.bazel index 959a1c43f69..8ea0a2b8bea 100644 --- a/utility/src/main/java/org/oppia/android/util/parser/html/BUILD.bazel +++ b/utility/src/main/java/org/oppia/android/util/parser/html/BUILD.bazel @@ -109,3 +109,19 @@ kt_android_library( "//:dagger", ], ) + +kt_android_library( + name = "test_tag_handler_module", + srcs = [ + "TestTagHandlerModule.kt", + ], + visibility = [ + "//:oppia_prod_module_visibility", + ], + deps = [ + ":custom_html_content_handler", + ":exploration_html_parser_entity_type", + ":tag_handlers", + "//:dagger", + ], +) diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt b/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt index a8886698894..83625743d87 100644 --- a/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt +++ b/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt @@ -52,9 +52,10 @@ class ConceptCardTagHandler( } override fun getContentDescription(attributes: Attributes): String? { + val skillId = attributes.getJsonStringValue(CUSTOM_CONCEPT_CARD_SKILL_ID) val text = attributes.getJsonStringValue(CUSTOM_CONCEPT_CARD_TEXT_VALUE) - return if (!text.isNullOrBlank()) { - text + return if (!skillId.isNullOrBlank() && !text.isNullOrBlank()) { + "$text concept card $skillId" } else "" } } diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt b/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt index c5358b2e1b4..9f479a379be 100755 --- a/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt +++ b/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt @@ -1,23 +1,11 @@ package org.oppia.android.util.parser.html -import android.view.View import dagger.Module import dagger.Provides -import javax.inject.Singleton /** Provides Html parsing entity type dependencies. */ @Module class HtmlParserEntityTypeModule { - @Provides - @Singleton - fun provideConceptCardListener(): ConceptCardTagHandler.ConceptCardLinkClickListener { - return object : ConceptCardTagHandler.ConceptCardLinkClickListener { - override fun onConceptCardLinkClicked(view: View, skillId: String) { - // No-op implementation for tests - } - } - } - @Provides @ExplorationHtmlParserEntityType fun provideExplorationHtmlParserEntityType(): String { diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/TestTagHandlerModule.kt b/utility/src/main/java/org/oppia/android/util/parser/html/TestTagHandlerModule.kt new file mode 100644 index 00000000000..a6d1f6ca227 --- /dev/null +++ b/utility/src/main/java/org/oppia/android/util/parser/html/TestTagHandlerModule.kt @@ -0,0 +1,17 @@ +package org.oppia.android.util.parser.html + +import android.view.View +import dagger.Module +import dagger.Provides +import javax.inject.Singleton + +@Module +class TestTagHandlerModule { + @Provides + @Singleton + fun provideConceptCardListener(): ConceptCardTagHandler.ConceptCardLinkClickListener { + return object : ConceptCardTagHandler.ConceptCardLinkClickListener { + override fun onConceptCardLinkClicked(view: View, skillId: String) {} + } + } +} From b85c2af51b6ea7f46321243fcadf35c254163c52 Mon Sep 17 00:00:00 2001 From: manas-yu Date: Fri, 17 Jan 2025 22:58:18 +0530 Subject: [PATCH 06/17] update --- app/BUILD.bazel | 2 +- app/src/main/java/org/oppia/android/app/application/BUILD.bazel | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/BUILD.bazel b/app/BUILD.bazel index c717d9831cc..4e10aaa7314 100644 --- a/app/BUILD.bazel +++ b/app/BUILD.bazel @@ -947,13 +947,13 @@ TEST_DEPS = [ "//utility/src/main/java/org/oppia/android/util/parser/html:html_parser_entity_type_module", "//utility/src/main/java/org/oppia/android/util/parser/html:list_item_leading_margin_span", "//utility/src/main/java/org/oppia/android/util/parser/html:policy_type", + "//utility/src/main/java/org/oppia/android/util/parser/html:test_tag_handler_module", "//utility/src/main/java/org/oppia/android/util/parser/image:glide_image_loader", "//utility/src/main/java/org/oppia/android/util/parser/image:glide_image_loader_module", "//utility/src/main/java/org/oppia/android/util/parser/image:image_parsing_module", "//utility/src/main/java/org/oppia/android/util/parser/image:image_transformation", "//utility/src/main/java/org/oppia/android/util/parser/image:test_glide_image_loader", "//utility/src/main/java/org/oppia/android/util/profile:profile_name_validator", - "//utility/src/main/java/org/oppia/android/util/parser/html:test_tag_handler_module", ] # App module tests. Note that all tests are assumed to be tests with resources (even though not all diff --git a/app/src/main/java/org/oppia/android/app/application/BUILD.bazel b/app/src/main/java/org/oppia/android/app/application/BUILD.bazel index 1c10a71ec6a..064c317d50c 100644 --- a/app/src/main/java/org/oppia/android/app/application/BUILD.bazel +++ b/app/src/main/java/org/oppia/android/app/application/BUILD.bazel @@ -130,6 +130,5 @@ android_library( "//utility/src/main/java/org/oppia/android/util/parser/image:glide_image_loader_module", "//utility/src/main/java/org/oppia/android/util/parser/image:image_parsing_module", "//utility/src/main/java/org/oppia/android/util/parser/image:repository_glide_module", - "//utility/src/main/java/org/oppia/android/util/parser/html:test_tag_handler_module", ], ) From 069f1f9593cc618255b6517a8102c86bd7b1ac0c Mon Sep 17 00:00:00 2001 From: manas-yu Date: Fri, 17 Jan 2025 23:08:48 +0530 Subject: [PATCH 07/17] update --- app/BUILD.bazel | 1 - .../exploration/ExplorationActivityTest.kt | 3 +-- .../oppia/android/util/parser/html/BUILD.bazel | 16 ---------------- .../parser/html/HtmlParserEntityTypeModule.kt | 10 ++++++++++ .../util/parser/html/TestTagHandlerModule.kt | 17 ----------------- 5 files changed, 11 insertions(+), 36 deletions(-) delete mode 100644 utility/src/main/java/org/oppia/android/util/parser/html/TestTagHandlerModule.kt diff --git a/app/BUILD.bazel b/app/BUILD.bazel index 4e10aaa7314..7405410cf3e 100644 --- a/app/BUILD.bazel +++ b/app/BUILD.bazel @@ -947,7 +947,6 @@ TEST_DEPS = [ "//utility/src/main/java/org/oppia/android/util/parser/html:html_parser_entity_type_module", "//utility/src/main/java/org/oppia/android/util/parser/html:list_item_leading_margin_span", "//utility/src/main/java/org/oppia/android/util/parser/html:policy_type", - "//utility/src/main/java/org/oppia/android/util/parser/html:test_tag_handler_module", "//utility/src/main/java/org/oppia/android/util/parser/image:glide_image_loader", "//utility/src/main/java/org/oppia/android/util/parser/image:glide_image_loader_module", "//utility/src/main/java/org/oppia/android/util/parser/image:image_parsing_module", diff --git a/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt index 80c49f672a7..fa9dad7d386 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt @@ -169,7 +169,6 @@ import org.oppia.android.util.networking.NetworkConnectionDebugUtilModule import org.oppia.android.util.networking.NetworkConnectionUtil.ProdConnectionStatus import org.oppia.android.util.networking.NetworkConnectionUtilDebugModule import org.oppia.android.util.parser.html.HtmlParserEntityTypeModule -import org.oppia.android.util.parser.html.TestTagHandlerModule import org.oppia.android.util.parser.image.GlideImageLoaderModule import org.oppia.android.util.parser.image.ImageParsingModule import org.robolectric.annotation.Config @@ -2902,7 +2901,7 @@ class ExplorationActivityTest { MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, ActivityRouterModule::class, CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, - TestAuthenticationModule::class, TestTagHandlerModule::class + TestAuthenticationModule::class, ] ) interface TestApplicationComponent : ApplicationComponent { diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/BUILD.bazel b/utility/src/main/java/org/oppia/android/util/parser/html/BUILD.bazel index 8ea0a2b8bea..959a1c43f69 100644 --- a/utility/src/main/java/org/oppia/android/util/parser/html/BUILD.bazel +++ b/utility/src/main/java/org/oppia/android/util/parser/html/BUILD.bazel @@ -109,19 +109,3 @@ kt_android_library( "//:dagger", ], ) - -kt_android_library( - name = "test_tag_handler_module", - srcs = [ - "TestTagHandlerModule.kt", - ], - visibility = [ - "//:oppia_prod_module_visibility", - ], - deps = [ - ":custom_html_content_handler", - ":exploration_html_parser_entity_type", - ":tag_handlers", - "//:dagger", - ], -) diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt b/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt index 9f479a379be..aa8309b919a 100755 --- a/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt +++ b/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt @@ -1,11 +1,21 @@ package org.oppia.android.util.parser.html +import android.view.View import dagger.Module import dagger.Provides +import javax.inject.Singleton /** Provides Html parsing entity type dependencies. */ @Module class HtmlParserEntityTypeModule { + @Provides + @Singleton + fun provideConceptCardListener(): ConceptCardTagHandler.ConceptCardLinkClickListener { + return object : ConceptCardTagHandler.ConceptCardLinkClickListener { + override fun onConceptCardLinkClicked(view: View, skillId: String) {} + } + } + @Provides @ExplorationHtmlParserEntityType fun provideExplorationHtmlParserEntityType(): String { diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/TestTagHandlerModule.kt b/utility/src/main/java/org/oppia/android/util/parser/html/TestTagHandlerModule.kt deleted file mode 100644 index a6d1f6ca227..00000000000 --- a/utility/src/main/java/org/oppia/android/util/parser/html/TestTagHandlerModule.kt +++ /dev/null @@ -1,17 +0,0 @@ -package org.oppia.android.util.parser.html - -import android.view.View -import dagger.Module -import dagger.Provides -import javax.inject.Singleton - -@Module -class TestTagHandlerModule { - @Provides - @Singleton - fun provideConceptCardListener(): ConceptCardTagHandler.ConceptCardLinkClickListener { - return object : ConceptCardTagHandler.ConceptCardLinkClickListener { - override fun onConceptCardLinkClicked(view: View, skillId: String) {} - } - } -} From 59ab61eb86d74204d661aa9eb2efb91d9e7d3929 Mon Sep 17 00:00:00 2001 From: manas-yu Date: Fri, 17 Jan 2025 23:39:49 +0530 Subject: [PATCH 08/17] update --- .../oppia/android/app/player/state/StateFragmentLocalTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/test/java/org/oppia/android/app/player/state/StateFragmentLocalTest.kt b/app/src/test/java/org/oppia/android/app/player/state/StateFragmentLocalTest.kt index 4af5ec06d22..df3d5eebbab 100644 --- a/app/src/test/java/org/oppia/android/app/player/state/StateFragmentLocalTest.kt +++ b/app/src/test/java/org/oppia/android/app/player/state/StateFragmentLocalTest.kt @@ -2184,7 +2184,7 @@ class StateFragmentLocalTest { // Click on the link for opening the concept card. onView(withId(R.id.hints_and_solution_summary)) .inRoot(isDialog()) - .perform(openClickableSpan("test_skill_id_1 concept card")) + .perform(openClickableSpan("lesson")) testCoroutineDispatchers.runCurrent() onView(withText("Concept Card")).inRoot(isDialog()).check(matches(isDisplayed())) From e7cc3780a7128a551a16eec0201043a97fe1a2c1 Mon Sep 17 00:00:00 2001 From: manas-yu Date: Tue, 21 Jan 2025 16:22:57 +0530 Subject: [PATCH 09/17] removing test-file-exemptions --- scripts/assets/test_file_exemptions.textproto | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/scripts/assets/test_file_exemptions.textproto b/scripts/assets/test_file_exemptions.textproto index c358c7d68a4..1bc2cac80e4 100644 --- a/scripts/assets/test_file_exemptions.textproto +++ b/scripts/assets/test_file_exemptions.textproto @@ -4098,18 +4098,6 @@ test_file_exemption { exempted_file_path: "testing/src/main/java/org/oppia/android/testing/math/ComparableOperationSubject.kt" test_file_not_required: true } -test_file_exemption { - exempted_file_path: "testing/src/main/java/org/oppia/android/testing/math/FractionSubject.kt" - test_file_not_required: true -} -test_file_exemption { - exempted_file_path: "testing/src/main/java/org/oppia/android/testing/math/MathEquationSubject.kt" - test_file_not_required: true -} -test_file_exemption { - exempted_file_path: "testing/src/main/java/org/oppia/android/testing/math/MathExpressionSubject.kt" - test_file_not_required: true -} test_file_exemption { exempted_file_path: "testing/src/main/java/org/oppia/android/testing/math/MathParsingErrorSubject.kt" test_file_not_required: true @@ -4118,10 +4106,6 @@ test_file_exemption { exempted_file_path: "testing/src/main/java/org/oppia/android/testing/math/PolynomialSubject.kt" test_file_not_required: true } -test_file_exemption { - exempted_file_path: "testing/src/main/java/org/oppia/android/testing/math/RealSubject.kt" - test_file_not_required: true -} test_file_exemption { exempted_file_path: "testing/src/main/java/org/oppia/android/testing/math/TokenSubject.kt" test_file_not_required: true From 0c05601d20ce076cd800c0353d2ddd90dd5878cd Mon Sep 17 00:00:00 2001 From: manas-yu Date: Sat, 25 Jan 2025 19:24:06 +0530 Subject: [PATCH 10/17] ConceptCardTagHandler update --- .../app/player/exploration/ExplorationActivityTest.kt | 2 +- domain/src/main/assets/test_exp_id_2.json | 2 +- domain/src/main/assets/test_exp_id_2.textproto | 2 +- .../oppia/android/util/parser/html/ConceptCardTagHandler.kt | 5 ++--- .../android/util/parser/html/ConceptCardTagHandlerTest.kt | 2 +- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt index fa9dad7d386..ee46a6b44a9 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt @@ -2293,7 +2293,7 @@ class ExplorationActivityTest { matches( withContentDescription( "Remember that two halves, when added together, make one whole." + - "\nClick on this lesson concept card test_skill_id_1." + "\nClick on this test_skill_id_1 concept card." ) ) ) diff --git a/domain/src/main/assets/test_exp_id_2.json b/domain/src/main/assets/test_exp_id_2.json index 3f56eb49e01..494f1937677 100644 --- a/domain/src/main/assets/test_exp_id_2.json +++ b/domain/src/main/assets/test_exp_id_2.json @@ -524,7 +524,7 @@ "hints": [{ "hint_content": { "content_id": "hint_6", - "html": "

Remember that two halves, when added together, make one whole.

Click on this .

" + "html": "

Remember that two halves, when added together, make one whole.

Click on this .

" } }], "solution": { diff --git a/domain/src/main/assets/test_exp_id_2.textproto b/domain/src/main/assets/test_exp_id_2.textproto index 630d59c6e3d..1fc383fbf27 100644 --- a/domain/src/main/assets/test_exp_id_2.textproto +++ b/domain/src/main/assets/test_exp_id_2.textproto @@ -822,7 +822,7 @@ states { } hint { hint_content { - html: "

Remember that two halves, when added together, make one whole.

Click on this .

" + html: "

Remember that two halves, when added together, make one whole.

Click on this .

" content_id: "hint_6" } } diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt b/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt index 83625743d87..a8886698894 100644 --- a/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt +++ b/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt @@ -52,10 +52,9 @@ class ConceptCardTagHandler( } override fun getContentDescription(attributes: Attributes): String? { - val skillId = attributes.getJsonStringValue(CUSTOM_CONCEPT_CARD_SKILL_ID) val text = attributes.getJsonStringValue(CUSTOM_CONCEPT_CARD_TEXT_VALUE) - return if (!skillId.isNullOrBlank() && !text.isNullOrBlank()) { - "$text concept card $skillId" + return if (!text.isNullOrBlank()) { + text } else "" } } diff --git a/utility/src/test/java/org/oppia/android/util/parser/html/ConceptCardTagHandlerTest.kt b/utility/src/test/java/org/oppia/android/util/parser/html/ConceptCardTagHandlerTest.kt index 53dfd421cc6..ee861e6bafc 100644 --- a/utility/src/test/java/org/oppia/android/util/parser/html/ConceptCardTagHandlerTest.kt +++ b/utility/src/test/java/org/oppia/android/util/parser/html/ConceptCardTagHandlerTest.kt @@ -125,7 +125,7 @@ class ConceptCardTagHandlerTest { imageRetriever = mockImageRetriever, customTagHandlers = tagHandlersWithConceptCardSupport ) - assertThat(contentDescription).isEqualTo("refresher lesson concept card skill_id_1") + assertThat(contentDescription).isEqualTo("refresher lesson") } @Test From 5e4a23357461dea78d99293b2b827f2ddcce7ad4 Mon Sep 17 00:00:00 2001 From: manas-yu Date: Sat, 25 Jan 2025 20:58:32 +0530 Subject: [PATCH 11/17] update --- .../android/app/player/exploration/ExplorationActivityTest.kt | 2 +- .../oppia/android/app/player/state/StateFragmentLocalTest.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt index ee46a6b44a9..de22409f317 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt @@ -2591,7 +2591,7 @@ class ExplorationActivityTest { onView(withId(R.id.hints_and_solution_summary)) .inRoot(isDialog()) - .perform(openClickableSpan("lesson")) + .perform(openClickableSpan("test_skill_id_1 concept card")) testCoroutineDispatchers.runCurrent() diff --git a/app/src/test/java/org/oppia/android/app/player/state/StateFragmentLocalTest.kt b/app/src/test/java/org/oppia/android/app/player/state/StateFragmentLocalTest.kt index df3d5eebbab..4af5ec06d22 100644 --- a/app/src/test/java/org/oppia/android/app/player/state/StateFragmentLocalTest.kt +++ b/app/src/test/java/org/oppia/android/app/player/state/StateFragmentLocalTest.kt @@ -2184,7 +2184,7 @@ class StateFragmentLocalTest { // Click on the link for opening the concept card. onView(withId(R.id.hints_and_solution_summary)) .inRoot(isDialog()) - .perform(openClickableSpan("lesson")) + .perform(openClickableSpan("test_skill_id_1 concept card")) testCoroutineDispatchers.runCurrent() onView(withText("Concept Card")).inRoot(isDialog()).check(matches(isDisplayed())) From 5ba1dffb03139526b2d6279dc238308ef824484d Mon Sep 17 00:00:00 2001 From: manas-yu Date: Sun, 26 Jan 2025 02:25:54 +0530 Subject: [PATCH 12/17] provideConceptCardListener factory --- .../app/hintsandsolution/HintsAndSolutionViewModel.kt | 8 ++++---- .../android/util/parser/html/ConceptCardTagHandler.kt | 8 ++++++++ .../util/parser/html/HtmlParserEntityTypeModule.kt | 9 ++++----- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt index cda108a9136..8ca2d92034f 100644 --- a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt +++ b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt @@ -30,7 +30,7 @@ class HintsAndSolutionViewModel private constructor( private val resourceHandler: AppLanguageResourceHandler, private val translationController: TranslationController, private val solutionViewModelFactory: SolutionViewModel.Factory, - private val conceptCardListener: ConceptCardTagHandler.ConceptCardLinkClickListener, + private val conceptCardTagHandlerFactory: ConceptCardTagHandler.Factory, private val consoleLogger: ConsoleLogger ) : ObservableViewModel() { private val hintList by lazy { helpIndex.dropLastUnavailable(state.interaction.hintList) } @@ -83,7 +83,7 @@ class HintsAndSolutionViewModel private constructor( writtenTranslationContext ), isHintRevealed = isHintRevealed, - conceptCardListener = conceptCardListener, + conceptCardListener = conceptCardTagHandlerFactory.createConceptCardLinkClickListener(), consoleLogger = consoleLogger ) } @@ -107,7 +107,7 @@ class HintsAndSolutionViewModel private constructor( private val resourceHandler: AppLanguageResourceHandler, private val translationController: TranslationController, private val solutionViewModelFactory: SolutionViewModel.Factory, - private val conceptCardListener: ConceptCardTagHandler.ConceptCardLinkClickListener, + private val conceptCardTagHandlerFactory: ConceptCardTagHandler.Factory, private val consoleLogger: ConsoleLogger ) { /** @@ -127,7 +127,7 @@ class HintsAndSolutionViewModel private constructor( resourceHandler, translationController, solutionViewModelFactory, - conceptCardListener, + conceptCardTagHandlerFactory, consoleLogger ) } diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt b/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt index a8886698894..39d793799f2 100644 --- a/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt +++ b/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt @@ -7,6 +7,7 @@ import android.text.style.ClickableSpan import android.view.View import org.oppia.android.util.logging.ConsoleLogger import org.xml.sax.Attributes +import javax.inject.Inject /** The custom tag corresponding to [ConceptCardTagHandler]. */ const val CUSTOM_CONCEPT_CARD_TAG = "oppia-noninteractive-skillreview" @@ -57,4 +58,11 @@ class ConceptCardTagHandler( text } else "" } + class Factory @Inject constructor() { + fun createConceptCardLinkClickListener(): ConceptCardLinkClickListener { + return object : ConceptCardLinkClickListener { + override fun onConceptCardLinkClicked(view: View, skillId: String) {} + } + } + } } diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt b/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt index acb8cbbe91c..2b41d382dd0 100755 --- a/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt +++ b/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt @@ -1,6 +1,5 @@ package org.oppia.android.util.parser.html -import android.view.View import dagger.Module import dagger.Provides import javax.inject.Singleton @@ -10,10 +9,10 @@ import javax.inject.Singleton class HtmlParserEntityTypeModule { @Provides @Singleton - fun provideConceptCardListener(): ConceptCardTagHandler.ConceptCardLinkClickListener { - return object : ConceptCardTagHandler.ConceptCardLinkClickListener { - override fun onConceptCardLinkClicked(view: View, skillId: String) {} - } + fun provideConceptCardListener( + factory: ConceptCardTagHandler.Factory + ): ConceptCardTagHandler.ConceptCardLinkClickListener { + return factory.createConceptCardLinkClickListener() } @Provides From cbac2d4de3753a6079767b6d0a660b8e7ee8c3cf Mon Sep 17 00:00:00 2001 From: manas-yu Date: Sun, 26 Jan 2025 02:49:56 +0530 Subject: [PATCH 13/17] formatting --- .../oppia/android/app/hintsandsolution/HintViewModel.kt | 8 ++++---- .../app/hintsandsolution/HintsAndSolutionViewModel.kt | 2 +- .../android/util/parser/html/ConceptCardTagHandler.kt | 2 ++ .../util/parser/html/HtmlParserEntityTypeModule.kt | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintViewModel.kt b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintViewModel.kt index 3fcfef450cd..fdffc7859ba 100644 --- a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintViewModel.kt +++ b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintViewModel.kt @@ -12,14 +12,14 @@ import org.oppia.android.util.parser.html.CustomHtmlContentHandler * @property title the title of this hint, relative to others (this is generated by the app) * @property hintSummary the core hint text (which may contain HTML) to show the user * @property isHintRevealed whether the hint is currently expanded and viewable - * @property conceptCardListener listener for handling concept card clicks + * @property conceptCardLinkClickListener listener for handling concept card clicks * @property consoleLogger logger for handling any parsing errors */ class HintViewModel( val title: String, val hintSummary: String, val isHintRevealed: ObservableBoolean, - private val conceptCardListener: ConceptCardTagHandler.ConceptCardLinkClickListener, + private val conceptCardLinkClickListener: ConceptCardTagHandler.ConceptCardLinkClickListener, private val consoleLogger: ConsoleLogger ) : HintsAndSolutionItemViewModel() { /** @@ -32,10 +32,10 @@ class HintViewModel( imageRetriever = null, customTagHandlers = mapOf( CUSTOM_CONCEPT_CARD_TAG to ConceptCardTagHandler( - conceptCardListener, + conceptCardLinkClickListener, consoleLogger ) ) - ).toString() + ) } } diff --git a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt index 8ca2d92034f..4b25a9adfd6 100644 --- a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt +++ b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt @@ -83,7 +83,7 @@ class HintsAndSolutionViewModel private constructor( writtenTranslationContext ), isHintRevealed = isHintRevealed, - conceptCardListener = conceptCardTagHandlerFactory.createConceptCardLinkClickListener(), + conceptCardLinkClickListener = conceptCardTagHandlerFactory.createConceptCardLinkClickListener(), consoleLogger = consoleLogger ) } diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt b/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt index 39d793799f2..dfd48c2ec1b 100644 --- a/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt +++ b/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt @@ -58,6 +58,8 @@ class ConceptCardTagHandler( text } else "" } + + /** Application-injectable factory for creating [ConceptCardTagHandler]s). */ class Factory @Inject constructor() { fun createConceptCardLinkClickListener(): ConceptCardLinkClickListener { return object : ConceptCardLinkClickListener { diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt b/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt index 2b41d382dd0..1548a8c9348 100755 --- a/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt +++ b/utility/src/main/java/org/oppia/android/util/parser/html/HtmlParserEntityTypeModule.kt @@ -9,7 +9,7 @@ import javax.inject.Singleton class HtmlParserEntityTypeModule { @Provides @Singleton - fun provideConceptCardListener( + fun provideConceptCardLinkClickListener( factory: ConceptCardTagHandler.Factory ): ConceptCardTagHandler.ConceptCardLinkClickListener { return factory.createConceptCardLinkClickListener() From ca7086baed739ebe0f2676176fce451be8dfd943 Mon Sep 17 00:00:00 2001 From: manas-yu Date: Sun, 26 Jan 2025 02:56:12 +0530 Subject: [PATCH 14/17] formatting --- .../android/app/hintsandsolution/HintsAndSolutionViewModel.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt index 4b25a9adfd6..2e5c864c6e1 100644 --- a/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt +++ b/app/src/main/java/org/oppia/android/app/hintsandsolution/HintsAndSolutionViewModel.kt @@ -83,7 +83,8 @@ class HintsAndSolutionViewModel private constructor( writtenTranslationContext ), isHintRevealed = isHintRevealed, - conceptCardLinkClickListener = conceptCardTagHandlerFactory.createConceptCardLinkClickListener(), + conceptCardLinkClickListener = + conceptCardTagHandlerFactory.createConceptCardLinkClickListener(), consoleLogger = consoleLogger ) } From 9d95cc3237e62f3acad7a28e933188a366db7af8 Mon Sep 17 00:00:00 2001 From: manas-yu Date: Sun, 26 Jan 2025 15:37:51 +0530 Subject: [PATCH 15/17] formatting --- .../android/app/player/exploration/ExplorationActivityTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt b/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt index de22409f317..e5e87760454 100644 --- a/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt +++ b/app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt @@ -2901,7 +2901,7 @@ class ExplorationActivityTest { MetricLogSchedulerModule::class, TestingBuildFlavorModule::class, ActivityRouterModule::class, CpuPerformanceSnapshotterModule::class, ExplorationProgressModule::class, - TestAuthenticationModule::class, + TestAuthenticationModule::class ] ) interface TestApplicationComponent : ApplicationComponent { From 51b87cc31ac4da132a0ff21a5158edbec193c340 Mon Sep 17 00:00:00 2001 From: manas-yu Date: Mon, 27 Jan 2025 13:33:06 +0530 Subject: [PATCH 16/17] resolving latex todo --- .../java/org/oppia/android/util/parser/html/MathTagHandler.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/MathTagHandler.kt b/utility/src/main/java/org/oppia/android/util/parser/html/MathTagHandler.kt index 8a4de9460c1..9e183440aeb 100644 --- a/utility/src/main/java/org/oppia/android/util/parser/html/MathTagHandler.kt +++ b/utility/src/main/java/org/oppia/android/util/parser/html/MathTagHandler.kt @@ -44,7 +44,6 @@ class MathTagHandler( val content = MathContent.parseMathContent( attributes.getJsonObjectValue(CUSTOM_MATH_MATH_CONTENT_ATTRIBUTE) ) - // TODO(#4170): Fix vertical alignment centering for inline cached LaTeX. val useInlineRendering = when (attributes.getValue(CUSTOM_MATH_RENDER_TYPE_ATTRIBUTE)) { "inline" -> true "block" -> false From 1c9c7e107daf7a22339b96b15c7742e2763e61ba Mon Sep 17 00:00:00 2001 From: manas-yu Date: Tue, 28 Jan 2025 13:29:57 +0530 Subject: [PATCH 17/17] kdoc --- .../android/util/parser/html/ConceptCardTagHandler.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt b/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt index dfd48c2ec1b..6570da71fc0 100644 --- a/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt +++ b/utility/src/main/java/org/oppia/android/util/parser/html/ConceptCardTagHandler.kt @@ -61,6 +61,13 @@ class ConceptCardTagHandler( /** Application-injectable factory for creating [ConceptCardTagHandler]s). */ class Factory @Inject constructor() { + /** + * Creates a new [ConceptCardLinkClickListener] for handling concept card link click events. + * + * This [ConceptCardLinkClickListener] defines behavior for handling user interactions with links + * displayed in concept cards. The `onConceptCardLinkClicked` method provides the clicked [View] + * and the associated skill ID to enable further action handling. + */ fun createConceptCardLinkClickListener(): ConceptCardLinkClickListener { return object : ConceptCardLinkClickListener { override fun onConceptCardLinkClicked(view: View, skillId: String) {}