Skip to content

Commit 9fd7d56

Browse files
committed
Merge branch 'release/4.0.2'
2 parents 6c972fb + a0ee853 commit 9fd7d56

File tree

17 files changed

+134
-48
lines changed

17 files changed

+134
-48
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 = "4.0.1"
9+
VERSION_NAME = "4.0.2"
1010
}
1111

1212
android {

app/src/main/java/com/duckduckgo/app/bookmarks/ui/BookmarksActivity.kt

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717
package com.duckduckgo.app.bookmarks.ui
1818

1919
import android.app.Activity
20+
import android.app.AlertDialog
2021
import android.arch.lifecycle.Observer
2122
import android.arch.lifecycle.ViewModelProviders
2223
import android.content.Context
2324
import android.content.Intent
2425
import android.os.Bundle
2526
import android.support.v7.widget.RecyclerView.Adapter
2627
import android.support.v7.widget.RecyclerView.ViewHolder
28+
import android.text.Html
2729
import android.view.LayoutInflater
2830
import android.view.View
2931
import android.view.ViewGroup
@@ -38,11 +40,12 @@ import org.jetbrains.anko.alert
3840
import org.jetbrains.anko.doAsync
3941
import javax.inject.Inject
4042

41-
class BookmarksActivity: DuckDuckGoActivity() {
43+
class BookmarksActivity : DuckDuckGoActivity() {
4244

4345
@Inject
4446
lateinit var viewModelFactory: ViewModelFactory
4547
lateinit var adapter: BookmarksAdapter
48+
private var deleteDialog: AlertDialog? = null
4649

4750
private val viewModel: BookmarksViewModel by lazy {
4851
ViewModelProviders.of(this, viewModelFactory).get(BookmarksViewModel::class.java)
@@ -74,11 +77,11 @@ class BookmarksActivity: DuckDuckGoActivity() {
7477
})
7578

7679
viewModel.command.observe(this, Observer {
77-
when(it) {
80+
when (it) {
7881
is BookmarksViewModel.Command.ConfirmDeleteBookmark -> confirmDeleteBookmark(it.bookmark)
7982
is BookmarksViewModel.Command.OpenBookmark -> openBookmark(it.bookmark)
8083
}
81-
})
84+
})
8285
}
8386

8487
private fun openBookmark(bookmark: BookmarkEntity) {
@@ -87,13 +90,15 @@ class BookmarksActivity: DuckDuckGoActivity() {
8790
finish()
8891
}
8992

93+
@Suppress("deprecation")
9094
private fun confirmDeleteBookmark(bookmark: BookmarkEntity) {
91-
val message = getString(R.string.bookmarkDeleteConfirmMessage, bookmark.title)
95+
val message = Html.fromHtml(getString(R.string.bookmarkDeleteConfirmMessage, bookmark.title))
9296
val title = getString(R.string.bookmarkDeleteConfirmTitle)
93-
alert(message, title) {
97+
deleteDialog = alert(message, title) {
9498
positiveButton(android.R.string.yes) { delete(bookmark) }
9599
negativeButton(android.R.string.no) { }
96-
}.show()
100+
}.build()
101+
deleteDialog?.show()
97102
}
98103

99104
private fun delete(bookmark: BookmarkEntity) {
@@ -102,6 +107,11 @@ class BookmarksActivity: DuckDuckGoActivity() {
102107
}
103108
}
104109

110+
override fun onDestroy() {
111+
deleteDialog?.dismiss()
112+
super.onDestroy()
113+
}
114+
105115
companion object {
106116
fun intent(context: Context): Intent {
107117
return Intent(context, BookmarksActivity::class.java)
@@ -110,7 +120,7 @@ class BookmarksActivity: DuckDuckGoActivity() {
110120
val OPEN_URL_RESULT_CODE = Activity.RESULT_FIRST_USER
111121
}
112122

113-
class BookmarksAdapter(val context: Context, val viewModel: BookmarksViewModel): Adapter<BookmarksViewHolder>() {
123+
class BookmarksAdapter(val context: Context, val viewModel: BookmarksViewModel) : Adapter<BookmarksViewHolder>() {
114124

115125
var bookmarks: List<BookmarkEntity> = emptyList()
116126
set(value) {

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

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import android.view.Menu
3232
import android.view.MenuItem
3333
import android.view.View
3434
import android.view.inputmethod.EditorInfo.IME_ACTION_DONE
35+
import android.webkit.CookieManager
3536
import android.webkit.WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE
3637
import android.widget.TextView
3738
import android.widget.Toast
@@ -52,13 +53,15 @@ import org.jetbrains.anko.toast
5253
import org.jetbrains.anko.uiThread
5354
import timber.log.Timber
5455
import javax.inject.Inject
56+
import javax.inject.Provider
5557

5658

5759
class BrowserActivity : DuckDuckGoActivity() {
5860

5961
@Inject lateinit var webViewClient: BrowserWebViewClient
6062
@Inject lateinit var webChromeClient: BrowserChromeClient
6163
@Inject lateinit var viewModelFactory: ViewModelFactory
64+
@Inject lateinit var cookieManagerProvider: Provider<CookieManager>
6265

6366
private lateinit var popupMenu: BrowserPopupMenu
6467

@@ -337,11 +340,11 @@ class BrowserActivity : DuckDuckGoActivity() {
337340
}
338341

339342
private fun launchFire() {
340-
FireDialog(this, {
341-
finishActivityAnimated()
342-
}, {
343-
applicationContext.toast(R.string.fireDataCleared)
344-
}).show()
343+
FireDialog(context = this,
344+
clearStarted = { finishActivityAnimated() },
345+
clearComplete = { applicationContext.toast(R.string.fireDataCleared) },
346+
cookieManager = cookieManagerProvider.get()
347+
).show()
345348
}
346349

347350
private fun launchPopupMenu() {
@@ -428,6 +431,11 @@ class BrowserActivity : DuckDuckGoActivity() {
428431
webView.hide()
429432
}
430433

434+
override fun onDestroy() {
435+
popupMenu.dismiss()
436+
super.onDestroy()
437+
}
438+
431439
companion object {
432440

433441
fun intent(context: Context, sharedText: String? = null): Intent {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import javax.inject.Singleton
3838
(DatabaseModule::class),
3939
(JsonModule::class),
4040
(StringModule::class),
41+
(BrowserModule::class),
4142
(BrowserAutoCompleteModule::class)
4243
])
4344
interface AppComponent : AndroidInjector<DuckDuckGoApplication> {
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*
2+
* Copyright (c) 2018 DuckDuckGo
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.duckduckgo.app.di
18+
19+
import android.webkit.CookieManager
20+
import dagger.Module
21+
import dagger.Provides
22+
23+
@Module
24+
class BrowserModule {
25+
26+
@Provides
27+
fun cookieManager(): CookieManager = CookieManager.getInstance()
28+
}

app/src/main/java/com/duckduckgo/app/global/view/FireDialog.kt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ import android.webkit.WebView
2424
import com.duckduckgo.app.browser.R
2525
import kotlinx.android.synthetic.main.sheet_fire_clear_data.*
2626

27-
class FireDialog(context: Context, clearStarted: (() -> Unit), clearComplete: (() -> Unit)) : BottomSheetDialog(context) {
27+
class FireDialog(context: Context,
28+
private val cookieManager: CookieManager,
29+
clearStarted: (() -> Unit),
30+
clearComplete: (() -> Unit)) : BottomSheetDialog(context) {
2831

2932
init {
3033
val contentView = View.inflate(getContext(), R.layout.sheet_fire_clear_data, null)
@@ -47,8 +50,15 @@ class FireDialog(context: Context, clearStarted: (() -> Unit), clearComplete: ((
4750
}
4851

4952
private fun clearCookies(clearAllCallback: (() -> Unit)) {
50-
CookieManager.getInstance().removeAllCookies {
53+
val ddgCookie = cookieManager.getCookie(DDG_URL)
54+
55+
cookieManager.removeAllCookies {
56+
cookieManager.setCookie(DDG_URL, ddgCookie)
5157
clearAllCallback()
5258
}
5359
}
60+
61+
companion object {
62+
private const val DDG_URL = "duckduckgo.com"
63+
}
5464
}

app/src/main/java/com/duckduckgo/app/home/HomeActivity.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import android.support.v7.app.AppCompatActivity
2424
import android.view.Menu
2525
import android.view.MenuItem
2626
import android.view.View
27+
import android.webkit.CookieManager
2728
import com.duckduckgo.app.about.AboutDuckDuckGoActivity
2829
import com.duckduckgo.app.bookmarks.ui.BookmarksActivity
2930
import com.duckduckgo.app.browser.BrowserActivity
@@ -36,11 +37,16 @@ import kotlinx.android.synthetic.main.activity_home.*
3637
import kotlinx.android.synthetic.main.content_home.*
3738
import kotlinx.android.synthetic.main.popup_window_brower_menu.view.*
3839
import org.jetbrains.anko.toast
40+
import javax.inject.Inject
41+
import javax.inject.Provider
3942

4043
class HomeActivity : AppCompatActivity() {
4144

4245
private lateinit var popupMenu: BrowserPopupMenu
4346

47+
@Inject
48+
lateinit var cookieManagerProvider: Provider<CookieManager>
49+
4450
override fun onCreate(savedInstanceState: Bundle?) {
4551
super.onCreate(savedInstanceState)
4652
setContentView(R.layout.activity_home)
@@ -104,9 +110,10 @@ class HomeActivity : AppCompatActivity() {
104110
}
105111

106112
private fun launchFire() {
107-
FireDialog(this, {}, {
108-
toast(R.string.fireDataCleared)
109-
}).show()
113+
FireDialog(context = this,
114+
cookieManager = cookieManagerProvider.get(),
115+
clearStarted = {},
116+
clearComplete = { toast(R.string.fireDataCleared) }).show()
110117
}
111118

112119
private fun launchPopupMenu() {
@@ -152,6 +159,11 @@ class HomeActivity : AppCompatActivity() {
152159
startActivity(BrowserActivity.intent(this, url))
153160
}
154161

162+
override fun onDestroy() {
163+
popupMenu.dismiss()
164+
super.onDestroy()
165+
}
166+
155167
companion object {
156168

157169
private const val SETTINGS_REQUEST_CODE = 100

app/src/main/java/com/duckduckgo/app/trackerdetection/api/TrackerDataDownloader.kt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package com.duckduckgo.app.trackerdetection.api
1818

1919
import com.duckduckgo.app.global.api.isCached
20+
import com.duckduckgo.app.global.db.AppDatabase
2021
import com.duckduckgo.app.trackerdetection.AdBlockClient
2122
import com.duckduckgo.app.trackerdetection.Client
2223
import com.duckduckgo.app.trackerdetection.Client.ClientName.*
@@ -35,7 +36,8 @@ class TrackerDataDownloader @Inject constructor(
3536
private val trackerListService: TrackerListService,
3637
private val trackerDataStore: TrackerDataStore,
3738
private val trackerDataLoader: TrackerDataLoader,
38-
private val trackerDataDao: TrackerDataDao) {
39+
private val trackerDataDao: TrackerDataDao,
40+
private val appDatabase: AppDatabase) {
3941

4042
fun downloadList(clientName: Client.ClientName): Completable {
4143

@@ -63,8 +65,14 @@ class TrackerDataDownloader @Inject constructor(
6365
if (response.isSuccessful) {
6466
Timber.d("Updating disconnect data from server")
6567
val body = response.body()!!
66-
trackerDataDao.insertAll(body.trackers)
67-
trackerDataLoader.loadDisconnectData()
68+
69+
appDatabase.runInTransaction {
70+
trackerDataDao.deleteAll()
71+
trackerDataDao.insertAll(body.trackers)
72+
trackerDataLoader.loadDisconnectData()
73+
}
74+
75+
6876
} else {
6977
throw IOException("Status: ${response.code()} - ${response.errorBody()?.string()}")
7078
}

app/src/main/java/com/duckduckgo/app/trackerdetection/db/TrackerDataDao.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,7 @@ interface TrackerDataDao {
3434

3535
@Query("Select count(*) from disconnect_tracker")
3636
fun count(): Int
37+
38+
@Query("DELETE FROM disconnect_tracker")
39+
fun deleteAll()
3740
}
-714 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)