diff --git a/app/src/androidTest/java/com/duckduckgo/app/browser/BrowserTabViewModelTest.kt b/app/src/androidTest/java/com/duckduckgo/app/browser/BrowserTabViewModelTest.kt index f51110fbf30b..86f2f5b0c028 100644 --- a/app/src/androidTest/java/com/duckduckgo/app/browser/BrowserTabViewModelTest.kt +++ b/app/src/androidTest/java/com/duckduckgo/app/browser/BrowserTabViewModelTest.kt @@ -663,6 +663,21 @@ class BrowserTabViewModelTest { assertEquals("foo", command.url) } + @Test + fun whenOnSiteAndBrokenSiteSelectedThenBrokenSiteFeedbackCommandSentWithUrl() { + testee.urlChanged("foo.com") + testee.onBrokenSiteSelected() + val command = captureCommands().value as Command.BrokenSiteFeedback + assertEquals("foo.com", command.url) + } + + @Test + fun whenNoSiteAndBrokenSiteSelectedThenBrokenSiteFeedbackCommandSentWithoutUrl() { + testee.onBrokenSiteSelected() + val command = captureCommands().value as Command.BrokenSiteFeedback + assertNull(command.url) + } + @Test fun whenUserSelectsToShareLinkWithNullUrlThenShareLinkCommandNotSent() { testee.userSharingLink(null) diff --git a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt index a145e97f57dc..1a8ec1a9d4e2 100644 --- a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt +++ b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt @@ -202,7 +202,7 @@ class BrowserTabFragment : Fragment(), FindListener { onMenuItemClicked(view.bookmarksPopupMenuItem) { browserActivity?.launchBookmarks() } onMenuItemClicked(view.addBookmarksPopupMenuItem) { addBookmark() } onMenuItemClicked(view.findInPageMenuItem) { viewModel.userRequestingToFindInPage() } - onMenuItemClicked(view.brokenSitePopupMenuItem) { browserActivity?.launchBrokenSiteFeedback(viewModel.url.value) } + onMenuItemClicked(view.brokenSitePopupMenuItem) { viewModel.onBrokenSiteSelected() } onMenuItemClicked(view.settingsPopupMenuItem) { browserActivity?.launchSettings() } onMenuItemClicked(view.requestDesktopSiteCheckMenuItem) { viewModel.desktopSiteModeToggled( @@ -296,6 +296,9 @@ class BrowserTabFragment : Fragment(), FindListener { Command.HideKeyboard -> { hideKeyboard() } + is Command.BrokenSiteFeedback -> { + browserActivity?.launchBrokenSiteFeedback(it.url) + } is Command.ShowFullScreen -> { webViewFullScreenContainer.addView( it.view, ViewGroup.LayoutParams( diff --git a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt index 3239579da9ea..7012fd550e27 100644 --- a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt @@ -135,6 +135,7 @@ class BrowserTabViewModel( class DownloadImage(val url: String) : Command() class ShareLink(val url: String) : Command() class FindInPageCommand(val searchTerm: String) : Command() + class BrokenSiteFeedback(val url: String?) : Command() class DisplayMessage(@StringRes val messageId: Int) : Command() object DismissFindInPage : Command() class ShowFileChooser(val filePathCallback: ValueCallback>, val fileChooserParams: WebChromeClient.FileChooserParams) : Command() @@ -431,6 +432,10 @@ class BrowserTabViewModel( command.value = DisplayMessage(R.string.bookmarkAddedFeedback) } + fun onBrokenSiteSelected() { + command.value = BrokenSiteFeedback(site?.url) + } + fun onUserSelectedToEditQuery(query: String) { omnibarViewState.value = currentOmnibarViewState().copy(isEditing = false, omnibarText = query) autoCompleteViewState.value = AutoCompleteViewState(showSuggestions = false)