Skip to content

Commit d94102a

Browse files
committed
Merge branch 'hotfix/5.9.1'
2 parents 7c1d458 + 2d0cafd commit d94102a

File tree

3 files changed

+22
-17
lines changed

3 files changed

+22
-17
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.9.0"
9+
VERSION_NAME = "5.9.1"
1010
USE_ORCHESTRATOR = project.hasProperty('orchestrator') ? project.property('orchestrator') : false
1111
}
1212

app/src/androidTest/java/com/duckduckgo/app/httpsupgrade/HttpsUpgraderTest.kt

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,29 +16,18 @@
1616

1717
package com.duckduckgo.app.httpsupgrade
1818

19-
import android.arch.core.executor.testing.InstantTaskExecutorRule
2019
import android.net.Uri
21-
import com.duckduckgo.app.InstantSchedulersRule
2220
import com.duckduckgo.app.httpsupgrade.api.HttpsBloomFilterFactory
2321
import com.duckduckgo.app.httpsupgrade.db.HttpsWhitelistDao
2422
import com.nhaarman.mockito_kotlin.mock
2523
import com.nhaarman.mockito_kotlin.whenever
2624
import org.junit.Assert.assertFalse
2725
import org.junit.Assert.assertTrue
2826
import org.junit.Before
29-
import org.junit.Rule
3027
import org.junit.Test
3128

3229
class HttpsUpgraderTest {
3330

34-
@get:Rule
35-
@Suppress("unused")
36-
var instantTaskExecutorRule = InstantTaskExecutorRule()
37-
38-
@get:Rule
39-
@Suppress("unused")
40-
val schedulers = InstantSchedulersRule()
41-
4231
lateinit var testee: HttpsUpgrader
4332

4433
private var mockHttpsBloomFilterFactory: HttpsBloomFilterFactory = mock()
@@ -49,6 +38,7 @@ class HttpsUpgraderTest {
4938
fun before() {
5039
whenever(mockHttpsBloomFilterFactory.create()).thenReturn(bloomFilter)
5140
testee = HttpsUpgraderImpl(mockWhitelistDao, mockHttpsBloomFilterFactory)
41+
testee.reloadData()
5242
}
5343

5444
@Test

app/src/main/java/com/duckduckgo/app/httpsupgrade/HttpsUpgrader.kt

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ import com.duckduckgo.app.global.UrlScheme
2222
import com.duckduckgo.app.global.isHttps
2323
import com.duckduckgo.app.httpsupgrade.api.HttpsBloomFilterFactory
2424
import com.duckduckgo.app.httpsupgrade.db.HttpsWhitelistDao
25-
import io.reactivex.schedulers.Schedulers
2625
import timber.log.Timber
26+
import java.util.concurrent.locks.ReentrantLock
27+
import kotlin.concurrent.thread
2728

2829
interface HttpsUpgrader {
2930

@@ -43,9 +44,12 @@ class HttpsUpgraderImpl(
4344
) : HttpsUpgrader {
4445

4546
private var httpsBloomFilter: BloomFilter? = null
47+
private val dataReloadLock = ReentrantLock()
4648

4749
init {
48-
reloadData()
50+
thread {
51+
reloadData()
52+
}
4953
}
5054

5155
@WorkerThread
@@ -55,6 +59,8 @@ class HttpsUpgraderImpl(
5559
return false
5660
}
5761

62+
waitForAnyReloadsToComplete()
63+
5864
val host = uri.host
5965
if (whitelistedDao.contains(host)) {
6066
Timber.d("${host} is in whitelist and so not upgradable")
@@ -74,12 +80,21 @@ class HttpsUpgraderImpl(
7480
return false
7581
}
7682

77-
override fun reloadData() {
78-
Schedulers.io().scheduleDirect {
79-
httpsBloomFilter = bloomFactory.create()
83+
private fun waitForAnyReloadsToComplete() {
84+
// wait for lock (by locking and unlocking) before continuing
85+
if (dataReloadLock.isLocked) {
86+
dataReloadLock.lock()
87+
dataReloadLock.unlock()
8088
}
8189
}
8290

91+
@WorkerThread
92+
override fun reloadData() {
93+
dataReloadLock.lock()
94+
httpsBloomFilter = bloomFactory.create()
95+
dataReloadLock.unlock()
96+
}
97+
8398
companion object {
8499
const val NANO_TO_MILLIS_DIVISOR = 1_000_000.0
85100
}

0 commit comments

Comments
 (0)