8000 Merge branch 'release/5.7.1' · ArielOSProject/Android@3ca1329 · GitHub
[go: up one dir, main page]

Skip to content

Commit 3ca1329

Browse files
committed
Merge branch 'release/5.7.1'
2 parents 0c1f35b + 9d2f298 commit 3ca1329

File tree

11 files changed

+83
-24
lines changed

11 files changed

+83
-24
lines changed

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ apply plugin: 'kotlin-kapt'
66
apply from: '../versioning.gradle'
77

88
ext {
9-
VERSION_NAME = "5.7.0"
9+
VERSION_NAME = "5.7.1"
1010
USE_ORCHESTRATOR = project.hasProperty('orchestrator') ? project.property('orchestrator') : false
1111
}
1212

app/src/androidTest/java/com/duckduckgo/app/browser/BrowserTabViewModelTest.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -663,6 +663,21 @@ class BrowserTabViewModelTest {
663663
assertEquals("foo", command.url)
664664
}
665665

666+
@Test
667+
fun whenOnSiteAndBrokenSiteSelectedThenBrokenSiteFeedbackCommandSentWithUrl() {
668+
testee.urlChanged("foo.com")
669+
testee.onBrokenSiteSelected()
670+
val command = captureCommands().value as Command.BrokenSiteFeedback
671+
assertEquals("foo.com", command.url)
672+
}
673+
674+
@Test
675+
fun whenNoSiteAndBrokenSiteSelectedThenBrokenSiteFeedbackCommandSentWithoutUrl() {
676+
testee.onBrokenSiteSelected()
677+
val command = captureCommands().value as Command.BrokenSiteFeedback
678+
assertNull(command.url)
679+
}
680+
666681
@Test
667682
fun whenUserSelectsToShareLinkWithNullUrlThenShareLinkCommandNotSent() {
668683
testee.userSharingLink(null)

app/src/androidTest/java/com/duckduckgo/app/feedback/ui/FeedbackViewModelTest.kt

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,36 +55,55 @@ class FeedbackViewModelTest {
5555

5656
@Test
5757
fun whenBrokenUrlSwitchedOnWithUrlThenMessageFocused() {
58-
testee.onBrokenSiteUrlChanged("http://example.com")
58+
testee.onBrokenSiteUrlChanged(Constants.url)
5959
testee.onBrokenSiteChanged(true)
6060
verify(mockCommandObserver).onChanged(Command.FocusMessage)
6161
}
6262

6363
@Test
64-
fun whenBrokenUrlOnWithUrlThenCanSubmit() {
64+
fun whenBrokenUrlOnWithUrlAndMessageThenCanSubmit() {
6565
testee.onBrokenSiteChanged(true)
66-
testee.onBrokenSiteUrlChanged("http://example.com")
66+
testee.onBrokenSiteUrlChanged(Constants.url)
67+
testee.onFeedbackMessageChanged(Constants.message)
6768
assertTrue(viewState.submitAllowed)
6869
}
6970

7071
@Test
7172
fun whenBrokenUrlOnWithNullUrlThenCannotSubmit() {
7273
testee.onBrokenSiteChanged(true)
7374
testee.onBrokenSiteUrlChanged(null)
75+
testee.onFeedbackMessageChanged(Constants.message)
76+
assertFalse(viewState.submitAllowed)
77+
}
78+
79+
@Test
80+
fun whenBrokenUrlOnWithNullMessageThenCannotSubmit() {
81+
testee.onBrokenSiteChanged(true)
82+
testee.onBrokenSiteUrlChanged(Constants.url)
83+
testee.onFeedbackMessageChanged(null)
7484
assertFalse(viewState.submitAllowed)
7585
}
7686

7787
@Test
7888
fun whenBrokenUrlOnWithBlankUrlThenCannotSubmit() {
7989
testee.onBrokenSiteChanged(true)
8090
testee.onBrokenSiteUrlChanged(" ")
91+
testee.onFeedbackMessageChanged(Constants.message)
92+
assertFalse(viewState.submitAllowed)
93+
}
94+
95+
@Test
96+
fun whenBrokenUrlOnWithBlankMessageThenCannotSubmit() {
97+
testee.onBrokenSiteChanged(true)
98+
testee.onBrokenSiteUrlChanged(Constants.url)
99+
testee.onFeedbackMessageChanged(" ")
81100
assertFalse(viewState.submitAllowed)
82101
}
83102

84103
@Test
85104
fun whenBrokenUrlOffWithMessageThenCanSubmit() {
86105
testee.onBrokenSiteChanged(false)
87-
testee.onFeedbackMessageChanged("Feedback message")
106+
testee.onFeedbackMessageChanged(Constants.message)
88107
assertTrue(viewState.submitAllowed)
89108
}
90109

@@ -103,18 +122,18 @@ class FeedbackViewModelTest {
103122
}
104123

105124
@Test
106-
fun whenCanSubmitBrokenUrlAndSubmitPressedThenFeedbackSubmitted() {
107-
val url = "http://example.com"
125+
fun whenCanSubmitBrokenSiteAndSubmitPressedThenFeedbackSubmitted() {
108126
testee.onBrokenSiteChanged(true)
109-
testee.onBrokenSiteUrlChanged(url)
127+
testee.onBrokenSiteUrlChanged(Constants.url)
128+
testee.onFeedbackMessageChanged(Constants.message)
110129
testee.onSubmitPressed()
111130

112-
verify(mockFeedbackSender).submitBrokenSiteFeedback(null, url)
131+
verify(mockFeedbackSender).submitBrokenSiteFeedback(Constants.message, Constants.url)
113132
verify(mockCommandObserver).onChanged(Command.ConfirmAndFinish)
114133
}
115134

116135
@Test
117-
fun whenCannotSubmitBrokenUrlAndSubmitPressedThenFeedbackNotSubmitted() {
136+
fun whenCannotSubmitBrokenSiteAndSubmitPressedThenFeedbackNotSubmitted() {
118137
testee.onBrokenSiteChanged(true)
119138
testee.onSubmitPressed()
120139
verify(mockFeedbackSender, never()).submitBrokenSiteFeedback(any(), any())
@@ -123,11 +142,10 @@ class FeedbackViewModelTest {
123142

124143
@Test
125144
fun whenCanSubmitMessageAndSubmitPressedThenFeedbackSubmitted() {
126-
val message = "Message"
127145
testee.onBrokenSiteChanged(false)
128-
testee.onFeedbackMessageChanged(message)
146+
testee.onFeedbackMessageChanged(Constants.message)
129147
testee.onSubmitPressed()
130-
verify(mockFeedbackSender).submitGeneralFeedback(message)
148+
verify(mockFeedbackSender).submitGeneralFeedback(Constants.message)
131149
verify(mockCommandObserver).onChanged(Command.ConfirmAndFinish)
132150
}
133151

@@ -139,4 +157,9 @@ class FeedbackViewModelTest {
139157
verify(mockCommandObserver, never()).onChanged(Command.ConfirmAndFinish)
140158
}
141159

160+
companion object Constants {
161+
private const val url = "http://example.com"
162+
private const val message = "Feedback message"
163+
}
164+
142165
}

app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ class BrowserTabFragment : Fragment(), FindListener {
202202
onMenuItemClicked(view.bookmarksPopupMenuItem) { browserActivity?.launchBookmarks() }
203203
onMenuItemClicked(view.addBookmarksPopupMenuItem) { addBookmark() }
204204
onMenuItemClicked(view.findInPageMenuItem) { viewModel.userRequestingToFindInPage() }
205-
onMenuItemClicked(view.brokenSitePopupMenuItem) { browserActivity?.launchBrokenSiteFeedback(viewModel.url.value) }
205+
onMenuItemClicked(view.brokenSitePopupMenuItem) { viewModel.onBrokenSiteSelected() }
206206
onMenuItemClicked(view.settingsPopupMenuItem) { browserActivity?.launchSettings() }
207207
onMenuItemClicked(view.requestDesktopSiteCheckMenuItem) {
208208
viewModel.desktopSiteModeToggled(
@@ -296,6 +296,9 @@ class BrowserTabFragment : Fragment(), FindListener {
296296
Command.HideKeyboard -> {
297297
hideKeyboard()
298298
}
299+
is Command.BrokenSiteFeedback -> {
300+
browserActivity?.launchBrokenSiteFeedback(it.url)
301+
}
299302
is Command.ShowFullScreen -> {
300303
webViewFullScreenContainer.addView(
301304
it.view, ViewGroup.LayoutParams(
@@ -593,6 +596,7 @@ class BrowserTabFragment : Fragment(), FindListener {
593596
destroyWebView()
594597
configureWebView()
595598
showKeyboard()
599+
appBarLayout.setExpanded(true)
596600
}
597601

598602
fun onBackPressed(): Boolean {

app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ class BrowserTabViewModel(
135135
class DownloadImage(val url: String) : Command()
136136
class ShareLink(val url: String) : Command()
137137
class FindInPageCommand(val searchTerm: String) : Command()
138+
class BrokenSiteFeedback(val url: String?) : Command()
138139
class DisplayMessage(@StringRes val messageId: Int) : Command()
139140
object DismissFindInPage : Command()
140141
class ShowFileChooser(val filePathCallback: ValueCallback<Array<Uri>>, val fileChooserParams: WebChromeClient.FileChooserParams) : Command()
@@ -431,6 +432,10 @@ class BrowserTabViewModel(
431432
command.value = DisplayMessage(R.string.bookmarkAddedFeedback)
432433
}
433434

435+
fun onBrokenSiteSelected() {
436+
command.value = BrokenSiteFeedback(site?.url)
437+
}
438+
434439
fun onUserSelectedToEditQuery(query: String) {
435440
omnibarViewState.value = currentOmnibarViewState().copy(isEditing = false, omnibarText = query)
436441
autoCompleteViewState.value = AutoCompleteViewState(showSuggestions = false)

app/src/main/java/com/duckduckgo/app/browser/BrowserWebViewClient.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ class BrowserWebViewClient @Inject constructor(
8282
}
8383

8484
override fun onPageFinished(view: WebView?, url: String?) {
85-
webViewClientListener?.loadingFinished(view?.url)
85+
webViewClientListener?.loadingFinished(url)
8686
}
8787

8888
@WorkerThread

app/src/main/java/com/duckduckgo/app/feedback/api/FeedbackSender.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import timber.log.Timber
2828

2929
interface FeedbackSender {
3030
fun submitGeneralFeedback(comment: String)
31-
fun submitBrokenSiteFeedback(comment: String?, url: String)
31+
fun submitBrokenSiteFeedback(comment: String, url: String)
3232
}
3333

3434
class FeedbackSubmitter(
@@ -42,8 +42,8 @@ class FeedbackSubmitter(
4242
submitFeedback(Reason.GENERAL, comment, "")
4343
}
4444

45-
override fun submitBrokenSiteFeedback(comment: String?, url: String) {
46-
submitFeedback(Reason.BROKEN_SITE, comment ?: "", url)
45+
override fun submitBrokenSiteFeedback(comment: String, url: String) {
46+
submitFeedback(Reason.BROKEN_SITE, comment, url)
4747
}
4848

4949
private fun submitFeedback(type: String, comment: String, url: String) {

app/src/main/java/com/duckduckgo/app/feedback/ui/FeedbackActivity.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,11 @@ class FeedbackActivity : DuckDuckGoActivity() {
105105
}
106106

107107
private fun render(viewState: ViewState) {
108+
val messageHint = if (viewState.isBrokenSite) R.string.feedbackBrokenSiteHint else R.string.feedbackMessageHint
108109
brokenSiteSwitch.isChecked = viewState.isBrokenSite
109110
brokenSiteUrl.isVisible = viewState.showUrl
110111
brokenSiteUrl.updateText(viewState.url ?: "")
112+
feedbackMessage.setHint(messageHint)
111113
submitButton.isEnabled = viewState.submitAllowed
112114
}
113115

app/src/main/java/com/duckduckgo/app/feedback/ui/FeedbackViewModel.kt

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,17 +84,27 @@ class FeedbackViewModel(private val feedbackSender: FeedbackSender) : ViewModel(
8484
)
8585
}
8686

87-
8887
private fun canSubmit(isBrokenSite: Boolean, url: String?, feedbackMessage: String?): Boolean {
89-
return (isBrokenSite && !url.isNullOrBlank()) || (!isBrokenSite && !feedbackMessage.isNullOrBlank())
88+
89+
if (feedbackMessage.isNullOrBlank()) {
90+
return false
91+
}
92+
93+
if (isBrokenSite && url.isNullOrBlank()) {
94+
return false
95+
}
96+
97+
return true
9098
}
9199

92100
fun onSubmitPressed() {
101+
102+
val message = viewValue.message ?: return
103+
93104
if (viewValue.isBrokenSite) {
94105
val url = viewValue.url ?: return
95-
feedbackSender.submitBrokenSiteFeedback(viewValue.message, url)
106+
feedbackSender.submitBrokenSiteFeedback(message, url)
96107
} else {
97-
val message = viewValue.message ?: return
98108
feedbackSender.submitGeneralFeedback(message)
99109
}
100110

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,9 +169,9 @@
169169
<string name="feedbackHeading">Share Your Feedback</string>
170170
<string name="feedbackModalDescription">Anonymously share your feedback to help us improve the DuckDuckGo Privacy Browser</string>
171171
<string name="feedbackReportBrokenSite">Report a broken site</string>
172-
<string name="feedbackDomainAdded">Domain Added to Feedback Report</string>
173172
<string name="feedbackUrlHint">Enter URL</string>
174173
<string name="feedbackMessageHint">How can the app be improved? What do you love? What\'s breaking? Please be as specific as possible.</string>
174+
<string name="feedbackBrokenSiteHint">Which website content or functionality is breaking? Please be as specific as possible.</string>
175175
<string name="feedbackSubmitButton">Submit Feedback</string>
176176
<string name="feedbackIsAnonymousLink">Your feedback is completely anonymous</string>
177177
<string name="feedbackSubmitted">Thank you! Feedback submitted</string>

0 commit comments

Comments
 (0)
0