8000 Support for Import / Export bookmarks (#1211) · sdevpiyush/Android@2e32c84 · GitHub
[go: up one dir, main page]

Skip to content

Commit 2e32c84

Browse files
authored
Support for Import / Export bookmarks (duckduckgo#1211)
* added html parser for bookmarks * adding import tests * added stream parsing * added ability to store imported bookmarks * we can now export bookmarks * added missing text listener for the search view * separating responsibilities when managing bookmarks * adding missing tests for parsing * created parser to deal with html * added missing test * improved messaging * code cleanup before PR * spotless changes * the bookmarks fike now has today's date as a suffix * alligning overlflow menus * cleaning up code and tests * improved algorithm * improved algorithm to support folders when needed * address PR comments * added local test files instead of html * fixed missing tests
1 parent 4d47ef5 commit 2e32c84

26 files changed

+931
-19
lines changed

app/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,9 @@ dependencies {
198198
// Play Store referrer library
199199
playImplementation("com.android.installreferrer:installreferrer:_")
200200

201+
// HTML
202+
implementation 'org.jsoup:jsoup:_'
203+
201204
// Testing dependencies
202205
androidTestImplementation AndroidX.test.runner
203206
androidTestImplementation AndroidX.test.rules
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<!DOCTYPE NETSCAPE-Bookmark-file-1>
2+
<!-- This is an automatically generated file.
3+
It will be read and overwritten.
4+
DO NOT EDIT! -->
5+
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
6+
<TITLE>Bookmarks</TITLE>
7+
<H1>Bookmarks</H1>
8+
<DL><p>
9+
<DT><H3 ADD_DATE="1591951551" LAST_MODIFIED="1604574986" PERSONAL_TOOLBAR_FOLDER="true">Bookmarks bar</H3>
10+
<DL><p>
11+
<DT><A HREF="https://jupyter.duckduckgo.com/notebooks/Mobile/Android%20Monday%20Health%20Check%20(DO%20NOT%20CHANGE).ipynb" ADD_DATE="1592401423" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABEUlEQVQ4jcWQvUoDURCFv3OjmFYLQUSwsAgi0cbCIr6AxFewNeAb6LJ3Kx/AxiJPkTQ2VlY2dvaCdkZEsFCEHYvsun9mt8zAbc7MOfPNhXmXyoJ5hhgnwMI/8zHiUp6LVHAFc8BujTmd3y4LWbXoJeahIpR/iP1k6sYCepUTzNPGuAe6M7aDMH7YYJFbeToUUGMOEF3EO2+s6YrvXLjDeMT4xLEKPKW9LMBxhAHGMit8WZj/nD+CEHEMjAp/YNNTzmaiZzXC0c8HTAkCDjGWaq3iGZhgSBEvBQJaRI27jTExfcQ4L7ukudNgnxBzXb4/OwFeEXvyGVoF4Jx1HFvyPFQDxADjzkI2ayg+EKcNpHOoXxoSRSLf8t9OAAAAAElFTkSuQmCC">Android Monday Health Check</A>
12+
<DT><A HREF="https://play.google.com/apps/publish/?account=5949020878215944484#AppListPlace" ADD_DATE="1592401445" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACv0lEQVQ4jXWTz2vcVRTFP/e99/3Oj0yaTqXaUoXQRlqlrRvRXYypFBQVVKJSKLjxP6hL6YjQLkRcuKroRlurDkKpoaSSyNAqWnWhKRlroNJCC1asTOLMd74z8967LprEUMjZXs655557rwCMTrxW3L3VH2C59/358/V/ACZqNccGaBw9GhBRAAE48MIrz5bKlbPR+yu9bvvY3NkvT25EvhsCMPniocOFNPk4LVcob74HkAvF6pYZsUnPqApAFFFRVRFTIHHnPnzj9XlQcQAaJATv1ZUr3o1sNagfV+y4hkhc6aQa0RgpVYbpZZkB5idqb9n/51QVg0hlqCzeD4KIRCsiqooCQVU1akjTxEKxBdBYWFAHIE40xIC1Ru7bvkOCHxgxYvK+x1mDs5bUGq0UU7PUCwYjtwCmpqYwAN77O51UiRoRlDzvy2Nj98uOakVu3W7JxN5dMrl/TPM8l9s3ru0BqDebagF27nloX1R9aWhTVe99YFSW2l3ZVh3mqUcepJgmur26iU43Y+anBSPG+JuLzcnhkc2lGx99MGtWE1ZVVGDgI0/s28X4wzt5/6sL2up0Zf/oNmn8uoiPGkRMgrE2RgXAAYQAogqqKJGRUkEvX7tJRPjhynX99vKiLxYLiUsKLvt3+XfrkiOXZqen1wRERKOPqIimSaLnfv7NiKDlQhoGg4FzaSnJ2sut9lLr3e9mL743//UnndXlrTgIINDPMsk7bURDiCGYnh84P/D9bLl1+u+//nz783fevLqSvq3X62HtEh8/+PyrSSH9NIYQrHNY61yMERU5mQ6NHJ87daJ5h/iFrddfDutP2ayoWFUExMUQXd7tNrJO58mLZz47PHfqRLNWqxlA7iavOXj04HNPJ0k6TYzNoHrsx5kzp9fXAd3omRxA6w//zZYx80w/X7r0S6PRWucubkRcxX9dW1MuUy8+TgAAAABJRU5ErkJggg==">DDG - Google Play Console</A>
13+
<DT><A HREF="https://github.com/aosp-mirror/platform_frameworks_base/blob/master/core/java/android/net/Uri.java#L457" ADD_DATE="1593088207" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABeklEQVQ4jY3Tv2qVQRAF8PPdP7k3itoE7SOIKFZiDAZsfBJFfBDRQjBFGkFiJ/gKerGwsRAsvaKFFhYWgo3GxEA0P4vMhTUk4sDy7c6cMztzZr9kn2EFD/Eem7Xele/yfnxLnMP9Isxst9bMfhRmriX2MMLE/9ukOL1ZktUKvMANvMIGpnhT+9e4jmeFvTcjL2ELv7BevjFOYYgBFjBfsbXCbuLiIMnNJPPV0Tb6XddtJ9luJPqKDv0kO0n6SY4kuZVSeBc/cabRpWt06mZnLJaYu5im+oPPGB06pr9Fn1aCjV6SYcWOJhm3Nx9A7pKMkywk6ZIMe0k+JJHkRJLlruugf0ALg67rJFlJcrI4H4NHVc53fMLZf1RwDm/xu9peD5brcBuPa/8cSw3xAp7gW8V3apSXZoC1quI87uApTjcJFptXuFXf1VbVPl7WSK+1txdmjC9Nkom9f6fXggZ40ICON7Fj1feOvWc/zGGGK9XGqPGNcBdX9+P/AO1cPr7g2LjWAAAAAElFTkSuQmCC">platform_frameworks_base/Uri.java at master · aosp-mirror/platform_frameworks_base</A>
14+
<DT><A HREF="https://app.asana.com/0/414730916066338/598549668511654" ADD_DATE="1602158499" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACFElEQVQ4jZVTTWtTURA9c+97+XqWJvGjtI1tQNBapGBBIbuAEHcSkFhcFLNuwYUtXUeXRcSFZNt22UpA/AMGuq9QIeKiIAXTaih5afS9l/dxx4UGEk38OKs7zDnDzJ0zwBAwSmLQ+7/AmVSUM6nonzg0VHz/4ZpiLAEMobhMOy/W/1qAAUGA8hceF6Sh7wSBA4AgRRiB5dzTtp+87HK6mv7ZCgUCADVi3cZo0+dk3VFnPzmImz5G/Fwvpwvtt9YB8uLH+7jQ0YTbBAOAbmlSi+zzgJGpV0j4wedSOqISU1vCaN4FANVOVETr8AGVPjq/cvvwBlmNV4ozvJozAIAr5+a5Mj4PALyaM3ilOMMoyL4OutV4Ye1qEDuzRcn6NTF+WEfs6BEtvX0NAFy+fgfWxLPg6OKEOJl859ntYnh7/T0DpHV/n9EqS8RvuLYehDrRSyyNDX56+QoAcMfYoE4kGdhaIIV2U6JdZuAWANYIYM7OGkHQmhO26RHi5DVsV08giVBsGtBBVjjpN0ddOHGh7JbHvjmH7GyMqrWvggFCtWZJ8vaEdqqz7ZNuTYX8xmQDn2MH+HD+IGikGtq36RAsIiFPdQl3D9WaxQCJn6tQrq+WudPcleqLw5ZXQ2tskZ6/Mmlz02RzbJFtVZPq2OHOya6r1HKvmfp9kM+nB/mfM5ko5/PpgaLubvvj4dc4yFD/lByU+w7ITvEGWWOkEQAAAABJRU5ErkJggg==">Android App Development - Android Runtime Permissions Explanations - Asana</A>
15+
</DL><p>
16+
</DL><p>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<!DOCTYPE NETSCAPE-Bookmark-file-1>
2+
<!--This is an automatically generated file.
3+
It will be read and overwritten.
4+
Do Not Edit! -->
5+
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
6+
<Title>Bookmarks</Title>
7+
<H1>Bookmarks</H1>
8+
<DL><p>
9+
<DT><H3 ADD_DATE="1618844074" LAST_MODIFIED="1618844074" PERSONAL_TOOLBAR_FOLDER="true">DuckDuckGo</H3>
10+
<DL><p>
11+
<DT><A HREF="https://as.com/" ADD_DATE="1618844074" LAST_MODIFIED="1618844074">AS.com - Diar 9E7A io online deportivo. Fútbol, motor y mucho más</A>
12+
<DT><A HREF="https://duckduckgo.com/" ADD_DATE="1618844074" LAST_MODIFIED="1618844074">DuckDuckGo — Privacy, simplified.</A>
13+
<DT><A HREF="https://www.marca.com/" ADD_DATE="1618844074" LAST_MODIFIED="1618844074">MARCA - Diario online líder en información deportiva</A>
14+
<DT><A HREF="https://www.theguardian.com/international" ADD_DATE="1618844074" LAST_MODIFIED="1618844074">News, sport and opinion from the Guardian's global edition | The Guardian</A>
15+
<DT><A HREF="https://techcrunch.com/?guccounter=1&guce_referrer=aHR0cHM6Ly9kdWNrZHVja2dvLmNvbS8&guce_referrer_sig=AQAAACdhXW_dqakygy4xUsVfjwIe8BBzLhYJl_hQTCHRtp1JKgSREnt73ekOXwJl7CRAfSxgRwJN9JomkpV7yC12x5C8Gu0LF4JXndNOebaS_AgcWrRbBubET328uCW9rmb_hsSoSzu10DGTxSBNgwmiQAkOBkjEHFpWKyj-SFmQVAZw" ADD_DATE="1618844074" LAST_MODIFIED="1618844074">TechCrunch – Startup and Technology News</A>
16+
<DT><A HREF="https://venturebeat.com/" ADD_DATE="1618844074" LAST_MODIFIED="1618844074">VentureBeat | Transformative tech coverage that matters</A>
17+
<DT><A HREF="https://spreadprivacy.com/" ADD_DATE="1618844074" LAST_MODIFIED="1618844074">Spread Privacy</A>
18+
<DT><A HREF="https://strolen.com/viewing/30_Ways_to_hide_a_Body" ADD_DATE="1618844074" LAST_MODIFIED="1618844074">SC: 7 Ways to hide a Body</A>
19+
</DL><p>
20+
</DL><p>

app/src/androidTest/assets/bookmarks_firefox.html

Lines changed: 23 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
asdasdasdasdasdas

app/src/androidTest/java/com/duckduckgo/app/FileUtilities.kt

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

1919
import java.io.BufferedReader
20+
import java.io.InputStream
2021

2122
object FileUtilities {
2223

@@ -26,4 +27,8 @@ object FileUtilities {
2627
return javaClass.classLoader!!.getResource(resourceName).openStream().bufferedReader()
2728
}
2829

30+
fun loadResource(resourceName: String): InputStream {
31+
return javaClass.classLoader!!.getResource(resourceName).openStream()
32+
}
33+
2934
}

app/src/androidTest/java/com/duckduckgo/app/bookmarks/db/BookmarksDaoTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,21 +61,21 @@ class BookmarksDaoTest {
6161
val bookmark = BookmarkEntity(id = 1, title = "title", url = "www.example.com")
6262
dao.insert(bookmark)
6363
dao.delete(bookmark)
64-
val list = dao.bookmarks().blockingObserve()
64+
val list = dao.getBookmarks().blockingObserve()
6565
assertTrue(list!!.isEmpty())
6666
}
6767

6868
@Test
6969
fun whenBookmarkAddedThenItIsInList() {
7070
val bookmark = BookmarkEntity(id = 1, title = "title", url = "www.example.com")
7171
dao.insert(bookmark)
72-
val list = dao.bookmarks().blockingObserve()
72+
val list = dao.getBookmarks().blockingObserve()
7373
assertEquals(listOf(bookmark), list)
7474
}
7575

7676
@Test
7777
fun whenInInitialStateThenTheBookmarksAreEmpty() {
78-
val list = dao.bookmarks().blockingObserve()
78+
val list = dao.getBookmarks().blockingObserve()
7979
assertNotNull(list)
8080
assertTrue(list!!.isEmpty())
8181
}

0 commit comments

Comments
 (0)
0