Skip to content

Commit ef1b90a

Browse files
committed
Merge branch 'release/5.25.0'
2 parents a125c88 + 56f7354 commit ef1b90a

File tree

89 files changed

+1006
-681
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+1006
-681
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,7 @@ captures/
4646
fastlane/report.xml
4747

4848
# Bitrise configuration
49-
bitrise.yml
49+
bitrise.yml
50+
51+
# NDK files
52+
**/.cxx

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,12 @@ android {
7878

7979
ext {
8080
androidX = "1.0.2"
81-
materialDesign = "1.0.0"
81+
materialDesign = "1.1.0-alpha05"
8282
architectureComponents = "1.1.1"
8383
architectureComponentsExtensions = "1.1.1"
8484
androidKtx = "1.0.1"
8585
fragmentKtx = "1.0.0"
86-
constraintLayout = "2.0.0-alpha3"
86+
constraintLayout = "2.0.0-beta1"
8787
lifecycle = "2.1.0-alpha04"
8888
room = "2.1.0-alpha05"
8989
workManager = "2.0.0"

app/src/androidTest/java/com/duckduckgo/app/onboarding/ui/OnboardingViewModelTest.kt

Lines changed: 64 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@
1717
package com.duckduckgo.app.onboarding.ui
1818

1919
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
20+
import com.duckduckgo.app.browser.R
2021
import com.duckduckgo.app.browser.defaultbrowsing.DefaultBrowserDetector
2122
import com.duckduckgo.app.onboarding.store.OnboardingStore
2223
import com.nhaarman.mockitokotlin2.mock
2324
import com.nhaarman.mockitokotlin2.never
2425
import com.nhaarman.mockitokotlin2.verify
2526
import com.nhaarman.mockitokotlin2.whenever
26-
import org.junit.Assert.assertNull
27-
import org.junit.Assert.assertTrue
27+
import org.junit.Assert.*
2828
import org.junit.Rule
2929
import org.junit.Test
3030

@@ -50,29 +50,79 @@ class OnboardingViewModelTest {
5050
}
5151

5252
@Test
53-
fun whenFirstPageRequestedThenProtectDataReturned() {
54-
val page = testee.getItem(0)
55-
assertTrue(page is OnboardingPageFragment.ProtectDataPage)
53+
fun whenFreshInstallFirstPageRequestedThenUnifiedWelcomePageReturned() {
54+
val page = testee.getItem(0, isFreshAppInstall = true)
55+
assertTrue(page is OnboardingPageFragment.UnifiedWelcomePage)
5656
}
5757

5858
@Test
59-
fun whenSecondPageRequestedThenNoTracePageReturned() {
60-
val page = testee.getItem(1)
61-
assertTrue(page is OnboardingPageFragment.NoTracePage)
59+
fun whenNotFreshInstallFirstPageRequestedThenUnifiedWelcomePageReturned() {
60+
val page = testee.getItem(0, isFreshAppInstall = false)
61+
assertTrue(page is OnboardingPageFragment.UnifiedWelcomePage)
6262
}
6363

6464
@Test
65-
fun whenThirdPageRequestedWithDefaultBrowserCapableThenDefaultBrowserPageReturned() {
66-
whenever(mockDefaultBrowserDetector.deviceSupportsDefaultBrowserConfiguration()).thenReturn(true)
67-
val page = testee.getItem(2)
65+
fun whenFreshInstallSecondPageRequestedWithDefaultBrowserCapableThenDefaultBrowserPageReturned() {
66+
configureDeviceSupportsDefaultBrowser()
67+
val page = testee.getItem(1, isFreshAppInstall = true)
6868
assertTrue(page is OnboardingPageFragment.DefaultBrowserPage)
6969
}
7070

7171
@Test
72-
fun whenThirdPageRequestedButDefaultBrowserNotCapableThenNoPageReturned() {
73-
whenever(mockDefaultBrowserDetector.deviceSupportsDefaultBrowserConfiguration()).thenReturn(false)
74-
val page = testee.getItem(2)
72+
fun whenNotFreshInstallSecondPageRequestedWithDefaultBrowserCapableThenNoPageReturned() {
73+
configureDeviceSupportsDefaultBrowser()
74+
val page = testee.getItem(1, isFreshAppInstall = false)
75+
assertNull(page)
76+
}
77+
78+
@Test
79+
fun whenFreshInstallSecondPageRequestedButDefaultBrowserNotCapableThenNoPageReturned() {
80+
configureDeviceDoesNotSupportDefaultBrowser()
81+
val page = testee.getItem(1, isFreshAppInstall = true)
82+
assertNull(page)
83+
}
84+
85+
@Test
86+
fun whenNotFreshInstallSecondPageRequestedButDefaultBrowserNotCapableThenNoPageReturned() {
87+
configureDeviceDoesNotSupportDefaultBrowser()
88+
val page = testee.getItem(1, isFreshAppInstall = false)
7589
assertNull(page)
7690
}
7791

92+
@Test
93+
fun whenDefaultBrowserSupportedThenFirstPageShowsContinueTextOnButton() {
94+
configureDeviceSupportsDefaultBrowser()
95+
val resourceId = testee.getContinueButtonTextResourceId(0, isFreshAppInstall = true)
96+
assertEquals(R.string.onboardingContinue, resourceId)
97+
}
98+
99+
@Test
100+
fun whenFreshInstallDefaultBrowserNotSupportedThenFirstPageShowsFinalTextOnButton() {
101+
configureDeviceDoesNotSupportDefaultBrowser()
102+
val resourceId = testee.getContinueButtonTextResourceId(0, isFreshAppInstall = true)
103+
assertEquals(R.string.onboardingContinueFinalPage, resourceId)
104+
}
105+
106+
@Test
107+
fun whenNotFreshInstallDefaultBrowserSupportedThenFirstPageShowsBackTextOnButton() {
108+
configureDeviceSupportsDefaultBrowser()
109+
val resourceId = testee.getContinueButtonTextResourceId(0, isFreshAppInstall = false)
110+
assertEquals(R.string.onboardingBackButton, resourceId)
111+
}
112+
113+
@Test
114+
fun whenNotFreshInstallDefaultBrowserNotSupportedThenFirstPageShowsBackTextOnButton() {
115+
configureDeviceDoesNotSupportDefaultBrowser()
116+
val resourceId = testee.getContinueButtonTextResourceId(0, isFreshAppInstall = false)
117+
assertEquals(R.string.onboardingBackButton, resourceId)
118+
}
119+
120+
private fun configureDeviceSupportsDefaultBrowser() {
121+
whenever(mockDefaultBrowserDetector.deviceSupportsDefaultBrowserConfiguration()).thenReturn(true)
122+
}
123+
124+
private fun configureDeviceDoesNotSupportDefaultBrowser() {
125+
whenever(mockDefaultBrowserDetector.deviceSupportsDefaultBrowserConfiguration()).thenReturn(false)
126+
}
127+
78128
}

app/src/main/AndroidManifest.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,6 @@
132132
<activity
133133
android:name="com.duckduckgo.app.bookmarks.ui.BookmarksActivity"
134134
android:label="@string/bookmarksActivityTitle" />
135-
<activity
136-
android:name=".defaultbrowsing.DefaultBrowserInfoActivity"
137-
android:theme="@style/ModalCardTheme" />
138135
<activity
139136
android:name="com.duckduckgo.app.fire.FireActivity"
140137
android:process="@string/fireProcessName" />

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -503,11 +503,12 @@ class BrowserTabFragment : Fragment(), FindListener, CoroutineScope {
503503
}
504504

505505
private fun showAuthenticationDialog(request: BasicAuthenticationRequest) {
506-
val dialog = HttpAuthenticationDialogFragment.createHttpAuthenticationDialog(request.site)
507-
508-
dialog.show(activity?.supportFragmentManager, AUTHENTICATION_DIALOG_TAG)
509-
dialog.listener = viewModel
510-
dialog.request = request
506+
activity?.supportFragmentManager?.let { fragmentManager ->
507+
val dialog = HttpAuthenticationDialogFragment.createHttpAuthenticationDialog(request.site)
508+
dialog.show(fragmentManager, AUTHENTICATION_DIALOG_TAG)
509+
dialog.listener = viewModel
510+
dialog.request = request
511+
}
511512
}
512513

513514
private fun saveBasicAuthCredentials(request: BasicAuthenticationRequest, credentials: BasicAuthenticationCredentials) {

app/src/main/java/com/duckduckgo/app/browser/defaultbrowsing/DefaultBrowserInfoActivity.kt

Lines changed: 0 additions & 99 deletions
This file was deleted.

app/src/main/java/com/duckduckgo/app/browser/di/BrowserModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ import android.webkit.CookieManager
2222
import com.duckduckgo.app.browser.*
2323
import com.duckduckgo.app.browser.addtohome.AddToHomeCapabilityDetector
2424
import com.duckduckgo.app.browser.addtohome.AddToHomeSystemCapabilityDetector
25-
import com.duckduckgo.app.browser.defaultbrowsing.DefaultBrowserObserver
2625
import com.duckduckgo.app.browser.defaultbrowsing.AndroidDefaultBrowserDetector
2726
import com.duckduckgo.app.browser.defaultbrowsing.DefaultBrowserDetector
27+
import com.duckduckgo.app.browser.defaultbrowsing.DefaultBrowserObserver
2828
import com.duckduckgo.app.browser.session.WebViewSessionInMemoryStorage
2929
import com.duckduckgo.app.browser.session.WebViewSessionStorage
3030
import com.duckduckgo.app.fire.DuckDuckGoCookieManager

app/src/main/java/com/duckduckgo/app/di/AndroidBindingModule.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import com.duckduckgo.app.bookmarks.ui.BookmarksActivity
2121
import com.duckduckgo.app.brokensite.BrokenSiteActivity
2222
import com.duckduckgo.app.browser.BrowserActivity
2323
import com.duckduckgo.app.browser.BrowserTabFragment
24-
import com.duckduckgo.app.browser.defaultbrowsing.DefaultBrowserInfoActivity
2524
import com.duckduckgo.app.browser.rating.ui.AppEnjoymentDialogFragment
2625
import com.duckduckgo.app.browser.rating.ui.GiveFeedbackDialogFragment
2726
import com.duckduckgo.app.browser.rating.ui.RateAppDialogFragment
@@ -111,10 +110,6 @@ abstract class AndroidBindingModule {
111110
@ContributesAndroidInjector
112111
abstract fun bookmarksActivity(): BookmarksActivity
113112

114-
@ActivityScoped
115-
@ContributesAndroidInjector
116-
abstract fun defaultBrowserInfoActivity(): DefaultBrowserInfoActivity
117-
118113
@ActivityScoped
119114
@ContributesAndroidInjector
120115
abstract fun fireActivity(): FireActivity

app/src/main/java/com/duckduckgo/app/di/PrivacyModule.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,16 @@ import android.content.Context
2020
import com.duckduckgo.app.browser.WebDataManager
2121
import com.duckduckgo.app.entities.EntityMapping
2222
import com.duckduckgo.app.fire.*
23+
import com.duckduckgo.app.global.install.AppInstallStore
2324
import com.duckduckgo.app.global.view.ClearDataAction
2425
import com.duckduckgo.app.global.view.ClearPersonalDataAction
26+
import com.duckduckgo.app.privacy.HistoricTrackerBlockingObserver
2527
import com.duckduckgo.app.privacy.model.PrivacyPractices
2628
import com.duckduckgo.app.privacy.model.PrivacyPracticesImpl
29+
import com.duckduckgo.app.privacy.store.PrivacySettingsStore
2730
import com.duckduckgo.app.privacy.store.TermsOfServiceStore
2831
import com.duckduckgo.app.settings.db.SettingsDataStore
32+
import com.duckduckgo.app.statistics.pixels.Pixel
2933
import com.duckduckgo.app.tabs.model.TabRepository
3034
import dagger.Module
3135
import dagger.Provides
@@ -65,4 +69,13 @@ class PrivacyModule {
6569
): DataClearer {
6670
return AutomaticDataClearer(settingsDataStore, clearDataAction, dataClearerTimeKeeper)
6771
}
72+
73+
@Provides
74+
@Singleton
75+
fun historicTrackerBlockingObserver(
76+
appInstallStore: AppInstallStore,
77+
privacySettingsStore: PrivacySettingsStore,
78+
pixel: Pixel
79+
): HistoricTrackerBlockingObserver =
80+
HistoricTrackerBlockingObserver(appInstallStore, privacySettingsStore, pixel)
6881
}

app/src/main/java/com/duckduckgo/app/global/DuckDuckGoApplication.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import com.duckduckgo.app.httpsupgrade.HttpsUpgrader
4444
import com.duckduckgo.app.job.AppConfigurationSyncer
4545
import com.duckduckgo.app.notification.NotificationRegistrar
4646
import com.duckduckgo.app.notification.NotificationScheduler
47+
import com.duckduckgo.app.privacy.HistoricTrackerBlockingObserver
4748
import com.duckduckgo.app.settings.db.SettingsDataStore
4849
import com.duckduckgo.app.statistics.api.StatisticsUpdater
4950
import com.duckduckgo.app.statistics.pixels.Pixel
@@ -89,6 +90,9 @@ open class DuckDuckGoApplication : HasActivityInjector, HasServiceInjector, HasS
8990
@Inject
9091
lateinit var defaultBrowserObserver: DefaultBrowserObserver
9192

93+
@Inject
94+
lateinit var historicTrackerBlockingObserver: HistoricTrackerBlockingObserver
95+
9296
@Inject
9397
lateinit var statisticsUpdater: StatisticsUpdater
9498

@@ -157,6 +161,7 @@ open class DuckDuckGoApplication : HasActivityInjector, HasServiceInjector, HasS
157161
it.addObserver(dataClearer)
158162
it.addObserver(appDaysUsedRecorder)
159163
it.addObserver(defaultBrowserObserver)
164+
it.addObserver(historicTrackerBlockingObserver)
160165
it.addObserver(appEnjoymentLifecycleObserver)
161166
}
162167

0 commit comments

Comments
 (0)