Compare commits

..

216 Commits

Author SHA1 Message Date
akwizgran 50538b6908 Add AMP cache broker for Snowflake. 2022-10-15 17:56:46 +01:00
Torsten Grote 718d95f3d5 Merge branch 'use-mailbox-main' into 'master'
Use mailbox main branch for integration tests

See merge request briar/briar!1721
2022-10-03 14:38:32 +00:00
Sebastian Kürten fa425bdc53 Use mailbox main branch for integration tests 2022-10-03 15:44:25 +02:00
Torsten Grote d441618ea1 Merge branch 'fix-imports-null-safety' into 'master'
Fix imports for null-safety annotations

See merge request briar/briar!1720
2022-10-03 13:38:58 +00:00
Sebastian Kürten df86f2f258 Fix imports for null-safety annotations 2022-10-03 15:25:35 +02:00
Torsten Grote 2a2c054959 Merge branch '2343-mailbox-as-submodule' into 'master'
End-to-end integration tests for communication via mailbox

Closes #2343

See merge request briar/briar!1699
2022-10-03 13:11:18 +00:00
akwizgran ad9092f414 Merge branch '2358-unlink-dialog-blank' into 'master'
Re-show mailbox unpaired dialog after screen-rotation

Closes #2358

See merge request briar/briar!1718
2022-09-30 12:01:35 +00:00
akwizgran 78ed21b493 Merge branch '2367-mailbox-intro-duplicate' into 'master'
Don't re-add mailbox intro fragment after activity got destroyed

Closes #2367

See merge request briar/briar!1719
2022-09-30 09:10:51 +00:00
Torsten Grote abb4d43f14 Don't re-add mailbox intro fragment after activity got destroyed 2022-09-29 16:43:28 -03:00
Torsten Grote c049c9c370 re-show mailbox unpaired dialog after screen-rotation 2022-09-29 14:52:30 -03:00
Torsten Grote a0de0a40aa Merge branch 'socks-library' into 'master'
Use SOCKS socket library

See merge request briar/briar!1717
2022-09-29 16:26:17 +00:00
Torsten Grote 73d957434b Merge branch 'null-safety-library' into 'master'
Use null safety library

See merge request briar/briar!1716
2022-09-29 13:23:19 +00:00
akwizgran 03adfd850b Use SOCKS socket library. 2022-09-29 13:36:52 +01:00
akwizgran 6c1232bfaa Update dependency checksums. 2022-09-29 13:33:54 +01:00
akwizgran e4e7d84bde Use null safety library. 2022-09-29 13:08:02 +01:00
Torsten Grote d4e5e3577b Merge branch '2366-tor-not-running-exception' into 'master'
No longer crash when the Tor process crashes

Closes #2366

See merge request briar/briar!1715
2022-09-28 17:04:04 +00:00
akwizgran 559138c5b6 Bump version numbers for 1.4.12 release. 2022-09-28 17:58:47 +01:00
akwizgran f90aef7767 Update translations, add Georgian translation. 2022-09-28 17:57:48 +01:00
Torsten Grote ee417fc8d2 Merge branch 'snowflake' into 'master'
Add Snowflake pluggable transport

See merge request briar/briar!1714
2022-09-28 15:53:45 +00:00
akwizgran b424d6f98e Add test for snowflake parameters. 2022-09-28 16:18:08 +01:00
akwizgran 32205ca6d3 Rename oldAndroid to letsEncrypt. 2022-09-28 16:17:45 +01:00
Sebastian Kürten 7be83a56a2 Address review feedback 2022-09-28 15:34:16 +02:00
Sebastian Kürten 867703c774 Upgrade mailbox-lib and refactor to match new API 2022-09-28 11:33:57 +02:00
akwizgran dd3a9aa71b Merge branch 'separating-signout' into 'master'
Added a separator to a sign out button

Closes #1074

See merge request briar/briar!1711
2022-09-27 17:14:53 +00:00
akwizgran adf172bf25 No longer crash when the Tor process crashes.
We have enough information about this bug now.
2022-09-27 15:20:45 +01:00
akwizgran 4e59836dd0 Merge branch 'update-bridges' into 'master'
Update bridges

See merge request briar/briar!1713
2022-09-27 14:17:59 +00:00
akwizgran 264b2ca2f3 Add Snowflake pluggable transport. 2022-09-27 15:10:44 +01:00
akwizgran 23f5de66a8 Use port 80 for placeholder meek_lite address.
See upstream commit:

https://gitweb.torproject.org/builders/tor-browser-build.git/commit/projects/common/bridges_list.meek-azure.txt?h=main&id=55f89756330a060cc65456000acf75226c545a42
2022-09-27 15:08:52 +01:00
akwizgran 79aa42c0f8 Add some new non-default and vanilla bridges. 2022-09-27 15:08:52 +01:00
akwizgran f00c3a47f5 Remove some failing bridges. 2022-09-27 15:08:52 +01:00
Torsten Grote 04011e50bc Merge branch 'obfs4proxy-0.0.14' into 'master'
Upgrade obfs4proxy to 0.0.14

See merge request briar/briar!1712
2022-09-26 11:26:35 +00:00
akwizgran 7d20a844ff Increase BridgeTest timeout to 4 hours. 2022-09-26 12:15:51 +01:00
akwizgran 43581cc339 Upgrade obfs4proxy to 0.0.14. 2022-09-23 15:38:52 +01:00
Sebastian Kürten f38f8afc5c Clean up mailbox-integrations-tests/build.gradle 2022-09-22 19:05:01 +02:00
Sebastian Kürten 8be04b3c20 Remove TestIoModule 2022-09-22 18:08:08 +02:00
Sebastian Kürten 459b97c1d4 Integration tests for mailbox using mailbox-lib as submodule 2022-09-22 18:08:03 +02:00
akwizgran 34815eb1a5 Merge branch 'privacy-policy' into 'master'
Fixed privacy policy in report form

See merge request briar/briar!1704
2022-09-17 13:04:13 +00:00
FlyingP1g FlyingP1g 13d9e93758 Fixed privacy policy in report form 2022-09-17 13:04:13 +00:00
FlyingP1g FlyingP1g 98c1dca602 Added a separator to a sign out button 2022-09-15 00:54:28 +03:00
akwizgran 5ceba8f508 Merge branch '2363-mailbox-problem-scrollable' into 'master'
Make mailbox problem screen scrollable

See merge request briar/briar!1709
2022-09-12 09:49:07 +00:00
Torsten Grote 8e5ec347f2 Make mailbox problem screen scrollable
so all views will never overlap even on small screens in landscape orientation.
2022-09-09 14:51:35 -03:00
akwizgran f3afcb8469 Merge branch '1052-trust-indicator-in-main-contact-list' into 'master'
Show trust-indicator with description in contact list

Closes #1052

See merge request briar/briar!1688
2022-09-06 09:58:48 +00:00
akwizgran 3a317a9144 Merge branch 'removed-anonymous-author-status' into 'master'
Removed anonymous author status.

Closes #1630

See merge request briar/briar!1706
2022-09-06 09:56:19 +00:00
Torsten Grote 480a4b5901 Merge branch 'tor-0.4.5.14' into 'master'
Upgrade Tor to 0.4.5.14

Closes #2355

See merge request briar/briar!1708
2022-09-05 12:16:12 +00:00
akwizgran 6d9a241820 Upgrade Tor to 0.4.5.14. 2022-09-05 12:42:34 +01:00
Torsten Grote 1c656d217c Merge branch 'upgrade-jsoup' into 'master'
Upgrade jsoup to 1.15.3

See merge request briar/briar!1707
2022-08-31 12:20:12 +00:00
akwizgran a503aa6ed2 Fix test expectations: no whitespace after tag. 2022-08-31 13:04:44 +01:00
akwizgran 85361b0099 Upgrade jsoup to 1.15.3. 2022-08-31 12:39:50 +01:00
FlyingP1g FlyingP1g 4efdb7b75b Removed anonymous author status. 2022-08-30 20:28:01 +03:00
akwizgran 787200d03f Merge branch '2360-mailbox-raster-notification' into 'master'
Use raster image for mailbox problem notifications

Closes #2360

See merge request briar/briar!1705
2022-08-29 15:08:04 +00:00
Torsten Grote 3ac05e4b88 Use raster image for mailbox problem notifications 2022-08-29 11:56:48 -03:00
Torsten Grote 7aafbdd715 Merge branch '2354-show-confirmation-toast-after-unlinking' into 'master'
Show confirmation toast after unlinking mailbox

Closes #2354

See merge request briar/briar!1703
2022-08-17 17:01:33 +00:00
akwizgran 617a6db84c Show confirmation toast after unlinking mailbox. 2022-08-17 16:59:31 +01:00
Torsten Grote 2c295fb096 Merge branch '2356-fix-expectations-for-flaky-unit-tests' into 'master'
Fix expecations for unit tests

Closes #2356

See merge request briar/briar!1702
2022-08-17 11:54:14 +00:00
akwizgran 4af895d124 Merge branch 'privacy-policy' into 'master'
Added privacy policy to menu and report form.

Closes #2351

See merge request briar/briar!1695
2022-08-17 11:32:12 +00:00
FlyingP1g FlyingP1g 3cd388decd Merge remote-tracking branch 'mine/privacy-policy' into privacy-policy
# Conflicts:
#	briar-android/src/main/res/layout/fragment_report_form.xml
2022-08-17 14:11:45 +03:00
FlyingP1g FlyingP1g 08551d16cd Added privacy policy to menu and report form. 2022-08-17 14:08:36 +03:00
akwizgran d905cb6cda Fix expecations for unit tests.
The missing expectations were only causing failures some of the time because the `shared` flag is set randomly for each test run.
2022-08-17 11:52:52 +01:00
Torsten Grote bcc7a4b93b Merge branch '2352-do-not-create-files-for-upload-while-connected' into 'master'
Don't create files for upload while directly connected to contact

Closes #2352

See merge request briar/briar!1697
2022-08-16 14:28:07 +00:00
Torsten Grote 4fe9fa3315 Merge branch '2228-mailbox-client-manager' into 'master'
Add mailbox client manager

Closes #2228

See merge request briar/briar!1696
2022-08-16 14:20:42 +00:00
akwizgran 079ef5b3c0 Add helper method for checking client/server compatibility. 2022-08-16 15:11:53 +01:00
akwizgran de76986ee4 Rename event, only broadcast it when adding a new contact. 2022-08-16 15:06:38 +01:00
Torsten Grote 96630e1b34 Merge branch '2174-check-own-mailbox-periodically' into 'master'
Check our own mailbox periodically while we're online

Closes #2174

See merge request briar/briar!1698
2022-08-16 13:54:14 +00:00
akwizgran 4eddf625d8 Add tests for visible/invisible group when message is shared. 2022-08-16 14:48:37 +01:00
Torsten Grote 28ad66a03d Merge branch '2302-send-new-server-supported-versions-to-contacts' into 'master'
When our mailbox's API versions change, send them to contacts

Closes #2302

See merge request briar/briar!1701
2022-08-16 13:43:23 +00:00
akwizgran 0af371d026 Update comments. 2022-08-16 14:14:14 +01:00
akwizgran a57c784b47 Add comments for group visibility. 2022-08-16 14:06:12 +01:00
akwizgran ab360e1e25 Address some review comments. 2022-08-16 13:49:30 +01:00
akwizgran 2aa39e43ef Bump version numbers for 1.4.11 release. 2022-08-15 16:35:42 +01:00
Torsten Grote efb294de53 Merge branch 'update-tor-bridges' into 'master'
Update Tor bridges

See merge request briar/briar!1700
2022-08-15 14:59:40 +00:00
Torsten Grote 99755619c5 Merge branch '2228-more-mailbox-client-manager-preliminaries' into 'master'
More mailbox client manager preliminaries

See merge request briar/briar!1694
2022-08-15 14:27:23 +00:00
akwizgran 9990fb3b8f When our mailbox's API versions change, send them to contacts. 2022-08-12 16:38:15 +01:00
akwizgran 6d26db3d66 Add some non-default and vanilla bridges. 2022-08-12 14:53:42 +01:00
akwizgran 51301968a5 Remove some failing bridges. 2022-08-12 14:42:01 +01:00
akwizgran feb1c1b655 Update translations. 2022-08-10 14:41:58 +01:00
akwizgran 148f61a6b5 Check our own mailbox periodically while we're online. 2022-08-10 14:34:09 +01:00
akwizgran 24d4debde0 Don't create files for upload while directly connected to contact. 2022-08-10 12:37:38 +01:00
akwizgran a1f25c8101 Attach group visibility to MessageSharedEvent.
This allows listeners to decide whether to act on the event.
2022-08-10 12:33:53 +01:00
akwizgran 62883b4bde Unit tests for mailbox client manager. 2022-08-08 15:46:58 +01:00
akwizgran 42243f73f4 Simplify logic. 2022-08-08 15:33:21 +01:00
FlyingP1g FlyingP1g f4365330cb Added privacy policy to menu and report form. 2022-08-06 13:45:48 +03:00
akwizgran d3a06cf2c0 Add some javadocs. 2022-08-05 15:43:17 +01:00
akwizgran 15d29f6189 Don't check whether messages are visible before lowering ack flag.
This check excludes messages that aren't shared, including incoming private messages. The check isn't necessary because lowerAckFlag() ignores messages for which no status row exists for the contact.
2022-08-05 14:16:15 +01:00
akwizgran 339e4daded Update Dagger modules. 2022-08-05 14:16:15 +01:00
akwizgran 217a6dbf1c If worker is destroyed during upload, delete file before returning. 2022-08-05 14:16:15 +01:00
akwizgran 46352f664c Add mailbox client manager. 2022-08-05 14:16:15 +01:00
akwizgran dfcd626081 Add some logging to connectivity checks. 2022-08-05 14:16:15 +01:00
akwizgran 347895f6b2 Update ProGuard rules to keep serialisable classes. 2022-08-05 14:16:14 +01:00
akwizgran 7a6d075984 Don't repeatedly ack the same messages. 2022-08-04 15:51:44 +01:00
akwizgran 68ab3b0e97 Register contact list worker to receive events. 2022-08-03 17:57:35 +01:00
akwizgran 16fc4f4527 Allow read-only transaction when not marking message as sent. 2022-08-03 17:57:35 +01:00
akwizgran 8657216345 Broadcast an event when sending a mailbox update. 2022-08-03 17:57:35 +01:00
akwizgran 42e2926d61 Always sort lists of API versions for easier comparison. 2022-08-03 17:57:35 +01:00
Torsten Grote a261b8e739 Merge branch '2228-mailbox-client-manager-preliminaries' into 'master'
Preliminaries for mailbox client manager

See merge request briar/briar!1693
2022-08-02 14:41:59 +00:00
akwizgran 1699d6b5f8 Check properties of events. 2022-08-02 15:24:20 +01:00
akwizgran 848872a803 Broadcast events for pairing and unpairing. 2022-08-02 12:59:27 +01:00
akwizgran 04ed3a652a Pass mailbox properties to hook when pairing. 2022-08-02 12:59:27 +01:00
akwizgran d20457f338 Remove redundant method for recording successful connection. 2022-08-02 12:59:26 +01:00
akwizgran ab29aacce0 Add MailboxClientFactory. 2022-08-02 12:59:26 +01:00
akwizgran 46bb2b8ec2 Destroy connectivity checker when client is destroyed. 2022-08-02 12:59:26 +01:00
Torsten Grote 6b6880c1ff Merge branch 'tolerate-missing-folders' into 'master'
Tolerate 404 responses due to missing folders

See merge request briar/briar!1692
2022-08-01 13:40:33 +00:00
akwizgran 5defd500ae Tolerate 404 responses due to missing folders.
This prevents our own mailbox's download worker from getting stuck trying to list a folder that has been removed. Instead, the worker will move on to the next folder.
2022-07-27 16:36:32 +01:00
johndoe4221 7a888a6114 feat: [1052] show trust-indicator in contact list 2022-07-23 14:11:40 +02:00
Torsten Grote 37ff06d192 Merge branch '2290-client-for-own-mailbox' into 'master'
Add mailbox client for our own mailbox

Closes #2290

See merge request briar/briar!1691
2022-07-18 14:27:19 +00:00
akwizgran 85aa21ebf6 Address review feedback. 2022-07-18 11:25:27 +01:00
akwizgran e448699895 Merge branch 'briar-about-update' into 'master'
Briar about update

See merge request briar/briar!1690
2022-07-18 10:08:41 +00:00
Torsten Grote 200f83bcfe Merge branch '2293-own-mailbox-download-worker' into 'master'
Mailbox download worker for our own mailbox

Closes #2293

See merge request briar/briar!1689
2022-07-15 19:40:48 +00:00
FlyingP1g FlyingP1g 89cce89650 About menu: Added url method. 2022-07-15 20:25:43 +03:00
akwizgran 8982964fbf Add mailbox client for our own mailbox. 2022-07-15 18:00:13 +01:00
FlyingP1g FlyingP1g f3a3fa0ea8 Merge branch 'master' into briar-about-update-bad
# Conflicts:
#	briar-android/src/main/res/layout/fragment_about.xml
#	briar-android/src/main/res/values/strings.xml
2022-07-15 19:18:21 +03:00
akwizgran 0865a06ac8 Refactor duplicated test code into superclass. 2022-07-15 16:24:22 +01:00
akwizgran f2738c8bc4 Add some javadocs. 2022-07-15 16:07:26 +01:00
akwizgran 1321f8775e Refactor duplicated code into superclass. 2022-07-15 15:45:55 +01:00
akwizgran 9764aba47d Add download worker for own mailbox. 2022-07-15 15:19:44 +01:00
akwizgran 913e5da2f5 Refactor test expectations, add test for nothing to download. 2022-07-15 15:19:11 +01:00
akwizgran f2ce7a386b Merge branch 'briar-info-translators-string' into 'master'
Added "translated by" to about menu.

See merge request briar/briar!1687
2022-07-15 13:26:02 +00:00
FlyingP1g FlyingP1g 7607b65e82 Added "translated by" to about menu. 2022-07-15 13:26:02 +00:00
FlyingP1g FlyingP1g c13c2d62f5 About menu: Added tor version and small wording fixes 2022-07-12 22:26:58 +03:00
FlyingP1g FlyingP1g 8ea7204cf6 About menu: Added changelog and fixed wording 2022-07-12 21:10:29 +03:00
FlyingP1g FlyingP1g 6ec382cfc4 About menu: Thanks to translators redesign 2022-07-12 20:35:53 +03:00
FlyingP1g FlyingP1g ad0b28a684 Better wording. 2022-07-12 19:18:29 +03:00
FlyingP1g FlyingP1g 0ae94e9579 String fix 2022-07-12 17:30:48 +03:00
FlyingP1g FlyingP1g 57bd5789d4 About menu contribution fixes. 2022-07-12 17:07:28 +03:00
FlyingP1g FlyingP1g f7dde1250c Added "translated by" to about menu. 2022-07-12 00:54:15 +03:00
akwizgran 13d96651b4 Merge branch '2329-translations-for-trust-indicator-view-trust-levels' into 'master'
feat: [2329] adding initial translations for contact trust levels

Closes #2329

See merge request briar/briar!1664
2022-07-11 12:49:09 +00:00
johndoe4221 65029982ce feat: [2329] changing translation of trustlevel to 'verifified contact'/'unverified contact' 2022-07-11 14:31:54 +02:00
johndoe4221 380921ce25 Merge branch 'master' of https://code.briarproject.org/johndoe4221/briar into 2329-translations-for-trust-indicator-view-trust-levels 2022-07-11 14:28:28 +02:00
Torsten Grote 87ee8cd653 Merge branch 'jtorctl-0.5' into 'master'
Crash as soon as Tor closes the control connection

See merge request briar/briar!1686
2022-07-11 12:04:25 +00:00
akwizgran d4810a6f71 Merge branch 'mr/contributing-md' into 'master'
Create CONTRIBUTING.md (describe folder names)

See merge request briar/briar!1685
2022-07-11 11:40:01 +00:00
Thomas aa56aba1a5 Create CONTRIBUTING.md (describe folder names) 2022-07-11 11:40:01 +00:00
akwizgran 35438dbac1 Merge branch 'briar-info' into 'master'
Added about menu.

See merge request briar/briar!1683
2022-07-11 11:17:13 +00:00
johndoe4221 543b1178a1 feat: [2329] use term peer-trust-level 2022-07-07 19:10:27 +02:00
johndoe4221 7f1071f5cd feat: [2329] adding initial translations for contact trust levels 2022-07-07 19:06:45 +02:00
johndoe4221 e8c694fe00 feat: [2329] changing terminology from contact-trust-level to author-trust-level 2022-07-07 18:06:41 +02:00
johndoe4221 b58b0c74a9 feat: [2329][1630] remove translation for anonymous trust level 2022-07-07 18:06:41 +02:00
johndoe4221 9e5029917e feat: [2329] adding initial translations for contact trust levels 2022-07-07 18:06:40 +02:00
FlyingP1g FlyingP1g 12ca74f86a Minor about menu improvements. 2022-07-07 16:26:12 +03:00
akwizgran 622683f45e Crash as soon as Tor closes the control connection. 2022-07-06 15:38:23 +01:00
akwizgran a5563ead28 Bump version numbers for 1.4.10 release. 2022-07-04 16:08:53 +01:00
akwizgran e15f49fde7 Update translations. 2022-07-04 15:59:57 +01:00
johndoe4221 e66f92f27e Merge branch '2329-translations-for-trust-indicator-view-trust-levels' of https://code.briarproject.org/johndoe4221/briar into 2329-translations-for-trust-indicator-view-trust-levels 2022-07-02 09:55:42 +02:00
johndoe4221 44acda2045 feat: [2329] changing terminology from contact-trust-level to author-trust-level 2022-07-02 09:43:53 +02:00
johndoe4221 afd92dd916 feat: [2329][1630] remove translation for anonymous trust level 2022-07-02 09:38:35 +02:00
johndoe4221 2a969f8e0b feat: [2329] adding initial translations for contact trust levels 2022-07-02 09:38:35 +02:00
FlyingP1g FlyingP1g ddc6606ccf About menu improvements. 2022-07-01 17:25:14 +03:00
Torsten Grote 1531a24b2d Merge branch '1499-do-not-set-tor-config-during-shutdown' into 'master'
Don't set "DisableNetwork 1" during shutdown

See merge request briar/briar!1684
2022-07-01 13:10:02 +00:00
akwizgran 2298818af5 Don't set "DisableNetwork 1" during shutdown.
This is redundant now that we start from the default config every time.
2022-07-01 12:30:46 +01:00
FlyingP1g FlyingP1g a19a4f36c6 Update strings.xml 2022-06-30 16:14:10 +00:00
FlyingP1g FlyingP1g 6765de992d Added about menu. 2022-06-30 00:05:29 +03:00
akwizgran 0ae5361281 Merge branch '1777-lifecycle-manager' into 'master'
Allow process to exit if an exception is thrown during shutdown

Closes #1777

See merge request briar/briar!1668
2022-06-29 14:23:16 +00:00
Torsten Grote d8e26eebbe Merge branch '1499-do-not-apply-redundant-settings' into 'master'
Start from default Tor config every time, don't apply redundant settings

See merge request briar/briar!1681
2022-06-29 13:50:01 +00:00
akwizgran 692e353046 Convert comments to javadocs. 2022-06-29 13:54:30 +01:00
akwizgran b9ba7aded5 Merge branch 'string-utils-checked-exceptions' into 'master'
Let StringUtils throw FormatException instead of IllegalArgumentException

See merge request briar/briar!1682
2022-06-29 12:21:29 +00:00
Sebastian Kürten 4bca9decc1 Let StringUtils throw FormatException instead of IllegalArgumentException 2022-06-29 14:13:42 +02:00
akwizgran 7bbe9068bb Start from the default Tor config every time.
Don't apply settings to Tor unless they've changed.
2022-06-28 12:42:55 +01:00
akwizgran 63060679a3 Merge branch '2342-mailbox-setup-stuck' into 'master'
Ensure that mailbox setup can proceed after activity was destroyed

Closes #2342

See merge request briar/briar!1678
2022-06-26 13:04:34 +00:00
Torsten Grote ddb759dbb8 Merge branch 'mailbox-base-url-refactoring' into 'master'
Refactor MailboxProperties to hold raw onion address

See merge request briar/briar!1680
2022-06-23 17:27:17 +00:00
akwizgran 592daf9c20 Bump version numbers for 1.4.9 release. 2022-06-23 14:55:06 +01:00
akwizgran 3922270db1 Merge branch 'update-bridges' into 'master'
Update Tor bridges

See merge request briar/briar!1679
2022-06-23 13:50:12 +00:00
akwizgran feb8854678 Add @Inject constructor. 2022-06-23 14:22:25 +01:00
Torsten Grote 4ba4e41e69 Merge branch '2294-contact-list-worker' into 'master'
Mailbox worker for updating our own mailbox's contact list

Closes #2294

See merge request briar/briar!1677
2022-06-23 12:19:32 +00:00
akwizgran 1f699238a9 Add some non-default bridges. 2022-06-23 12:23:50 +01:00
akwizgran b8e91a12e8 Remove some failing bridges. 2022-06-23 12:18:38 +01:00
akwizgran 06eb01ab0a Update translations. 2022-06-23 11:43:26 +01:00
akwizgran d82509f3ce Address review feedback. 2022-06-23 11:00:13 +01:00
Torsten Grote b01c306500 Merge branch '2289-client-for-contacts-mailbox' into 'master'
Mailbox client for a contact's mailbox

Closes #2289

See merge request briar/briar!1674
2022-06-22 17:09:37 +00:00
Torsten Grote 61e7635b9f Merge branch 'windows-tor-plugin' into 'master'
Add Tor plugin for Windows

See merge request briar/briar!1666
2022-06-22 17:08:23 +00:00
akwizgran f2f356cbd4 Merge branch '2340-unlink-offline-crash' into 'master'
Don't crash when offline while unlink dialog gets shown

Closes #2340

See merge request briar/briar!1676
2022-06-22 16:41:26 +00:00
Torsten Grote 28f3ab1310 Dismiss unlink dialog when going offline 2022-06-22 13:25:12 -03:00
Torsten Grote 1af52b21d5 Ensure that mailbox setup can proceed after activity was destroyed 2022-06-22 11:44:07 -03:00
akwizgran 8bb3a83ccb Add tests for contact list worker. 2022-06-22 13:59:50 +01:00
Torsten Grote a742b007ef Don't crash when offline while unlink dialog gets shown 2022-06-22 08:58:59 -03:00
Torsten Grote 6bfd7bcc4f Merge branch '2338-make-headless-platform-jars-depend-on-jar-task' into 'master'
Make headless platform jars depend on main jar task

Closes #2338

See merge request briar/briar!1675
2022-06-22 11:28:12 +00:00
Sebastian Kürten 17f5fc7518 Make headless platform jars depend on main jar task 2022-06-22 10:30:32 +02:00
akwizgran 8dcf988399 Add contact list worker for own mailbox. 2022-06-20 17:55:21 +01:00
akwizgran 05bf3833cf No need to use @Before to create stateful test objects. 2022-06-20 16:24:55 +01:00
akwizgran c39c2ce124 Fetch supported API versions during connectivity check. 2022-06-20 13:55:05 +01:00
akwizgran 0b93af5d71 Add some logging. 2022-06-20 13:46:09 +01:00
akwizgran f8e3579a92 Add tests for ContactMailboxClient. 2022-06-20 13:33:32 +01:00
Torsten Grote 54e434d812 Merge branch '2291-mailbox-upload-worker' into 'master'
Mailbox upload worker

Closes #2291

See merge request briar/briar!1673
2022-06-20 11:39:44 +00:00
akwizgran 13c3974f73 Implement client for a contact's mailbox. 2022-06-20 12:24:21 +01:00
akwizgran aeb2a370e1 Return safely if destroy() is called before start(). 2022-06-20 12:20:15 +01:00
akwizgran 0aff23a067 Add MailboxWorkerFactory. 2022-06-20 11:31:37 +01:00
akwizgran a2a2da0260 Make MailboxSettingsManager a singleton, now that it accepts hooks. 2022-06-20 11:23:26 +01:00
akwizgran 4d7a3bca62 Address review feedback. 2022-06-20 10:41:13 +01:00
akwizgran 91d5698fe9 Fix a typo. 2022-06-17 16:36:07 +01:00
akwizgran 7266c6ee6b Create temp file before requesting plugin. 2022-06-17 16:34:21 +01:00
akwizgran 06b539b911 Tests for MailboxUploadWorker. 2022-06-17 16:28:04 +01:00
akwizgran 486ba4a3fc Merge branch '2337-dont-show-offline-screen-after-pairing' into 'master'
Ignore offline event in Paired state (when success screen is shown)

Closes #2337

See merge request briar/briar!1672
2022-06-17 13:16:28 +00:00
Torsten Grote 7f987667fe Merge branch '2336-get-next-send-time' into 'master'
Consider latency when getting next send time from DB

Closes #2336

See merge request briar/briar!1671
2022-06-17 13:14:38 +00:00
Torsten Grote 8d22a0ffaf Merge branch 'do-not-interpolate-app-name' into 'master'
Don't interpolate the app name into strings

See merge request briar/briar!1669
2022-06-17 13:13:04 +00:00
Torsten Grote 43d28608f5 Merge branch '2291-mailbox-upload-plumbing' into 'master'
Plumbing for mailbox upload worker

See merge request briar/briar!1670
2022-06-17 13:07:22 +00:00
Torsten Grote c84d3f7707 Ignore offline event in Paired state (when success screen is shown) 2022-06-17 10:05:00 -03:00
akwizgran 2843e15905 Add mailbox upload worker. 2022-06-16 18:11:52 +01:00
akwizgran a2fb388aa6 Add creation of files for upload by MailboxFileManager. 2022-06-16 18:11:52 +01:00
akwizgran b7b253cf24 Clear reference to API call when download cycle finishes. 2022-06-16 18:11:52 +01:00
akwizgran f05e9dd746 Fix a couple of test assertions. 2022-06-16 18:11:52 +01:00
johndoe4221 b24a18b231 feat: [2329][1630] remove translation for anonymous trust level 2022-06-16 18:10:21 +02:00
akwizgran e2a63ee361 Consider latency when getting next send time from DB. 2022-06-16 17:05:30 +01:00
akwizgran ff9f706670 Add plumbing for creating outgoing sync sessions. 2022-06-16 15:51:16 +01:00
akwizgran 10ab60569b Replace DeferredSendHandler with OutgoingSessionRecord. 2022-06-16 15:51:15 +01:00
akwizgran d77d1d67aa Include new visibility in GroupVisibilityUpdatedEvent. 2022-06-16 15:51:15 +01:00
akwizgran 924425522a Split containsAnythingToSend() into methods for acks and messages. 2022-06-16 15:51:15 +01:00
akwizgran 356e0ee07b Move MAX_LATENCY to MailboxConstants. 2022-06-16 15:51:15 +01:00
johndoe4221 8e83743dd7 Merge remote-tracking branch 'origin/master' into 2329-translations-for-trust-indicator-view-trust-levels 2022-06-15 12:19:24 +02:00
akwizgran 61658655ff Merge branch '2326-fetch-versions' into 'master'
Use /versions for mailbox connectivity check

Closes #2326

See merge request briar/briar!1665
2022-06-14 12:29:31 +00:00
akwizgran 40086ffde2 Don't interpolate the app name into strings. 2022-06-14 10:30:05 +01:00
Torsten Grote 1551142e98 Merge branch '2157-2158-xiaomi-power-setup' into 'master'
Adapt Xiaomi power setup for MIUI 12.5

Closes #2158 and #2157

See merge request briar/briar!1667
2022-06-13 13:12:50 +00:00
Torsten Grote 1c6fb6491a Use /versions for mailbox connectivity check
Briar's mailbox status screen used the status API endpoint for its connectivity check. Now, it uses the versions endpoint instead, so that if we've warned the user that Briar and the Mailbox are using incompatible API versions, and the user has upgraded one of the apps to fix the issue, the user can use the "check connection" button in the status screen to check that the issue has been fixed.

(This is specifically needed for the case where the user has upgraded the Mailbox, because in the case where the user has upgraded Briar, Briar should automatically check the mailbox's API versions when it comes back online after upgrading.)
2022-06-13 10:07:40 -03:00
akwizgran cfd4e85e77 Remove package names that are now provided by dont-kill-me-lib. 2022-06-13 13:48:23 +01:00
akwizgran 4d6abfabf7 Adapt Xiaomi power setup for MIUI 12.5. 2022-06-13 11:32:36 +01:00
johndoe4221 6a91d18003 feat: [2329] adding initial translations for contact trust levels 2022-06-09 21:47:50 +02:00
akwizgran e481a02126 Shutdown from background if BriarService is recreated. 2022-06-09 18:10:24 +01:00
akwizgran 825dff27fc Exit if BriarService finds lifecycle already running. 2022-06-09 18:06:08 +01:00
akwizgran de3a87fff5 Return early when starting/stopping if not in expected state. 2022-06-09 18:01:32 +01:00
akwizgran 85d1addd04 Continue shutdown if an exception is thrown. 2022-06-09 17:16:02 +01:00
1185 changed files with 14063 additions and 4663 deletions
+7 -10
View File
@@ -5,6 +5,9 @@ stages:
- optional_tests - optional_tests
- check_reproducibility - check_reproducibility
variables:
GIT_SUBMODULE_STRATEGY: recursive
workflow: workflow:
# when to create a CI pipeline # when to create a CI pipeline
rules: rules:
@@ -32,6 +35,7 @@ test:
extends: .base-test extends: .base-test
stage: test stage: test
script: script:
- git submodule update
- ./gradlew -Djava.security.egd=file:/dev/urandom animalSnifferMain animalSnifferTest - ./gradlew -Djava.security.egd=file:/dev/urandom animalSnifferMain animalSnifferTest
- ./gradlew -Djava.security.egd=file:/dev/urandom assembleOfficialDebug :briar-headless:linuxJars - ./gradlew -Djava.security.egd=file:/dev/urandom assembleOfficialDebug :briar-headless:linuxJars
- ./gradlew -Djava.security.egd=file:/dev/urandom compileOfficialDebugAndroidTestSources compileScreenshotDebugAndroidTestSources check - ./gradlew -Djava.security.egd=file:/dev/urandom compileOfficialDebugAndroidTestSources compileScreenshotDebugAndroidTestSources check
@@ -98,7 +102,7 @@ bridge test:
allow_failure: true allow_failure: true
script: script:
- OPTIONAL_TESTS=org.briarproject.bramble.plugin.tor.BridgeTest ./gradlew --info bramble-java:test --tests BridgeTest - OPTIONAL_TESTS=org.briarproject.bramble.plugin.tor.BridgeTest ./gradlew --info bramble-java:test --tests BridgeTest
timeout: 3h timeout: 4h
mailbox integration test: mailbox integration test:
extends: .optional_tests extends: .optional_tests
@@ -109,12 +113,5 @@ mailbox integration test:
when: manual when: manual
allow_failure: true # TODO figure out how not to allow failure while leaving this optional allow_failure: true # TODO figure out how not to allow failure while leaving this optional
script: script:
# start mailbox - (cd briar-mailbox; git fetch; git reset --hard origin/main)
- cd /opt && git clone --depth 1 https://code.briarproject.org/briar/briar-mailbox.git briar-mailbox - MAILBOX_INTEGRATION_TESTS=true ./gradlew --info mailbox-integration-tests:test
- cd briar-mailbox
- mkdir -p /root/.local/share # create directory that mailbox (currently) expects to exist
- ./gradlew run --args="--debug --setup-token 54686973206973206120736574757020746f6b656e20666f722042726961722e" &
# run mailbox integration test once mailbox has started
- cd "$CI_PROJECT_DIR"
- bramble-core/src/test/bash/wait-for-mailbox.sh
- OPTIONAL_TESTS=org.briarproject.bramble.mailbox.MailboxIntegrationTest ./gradlew --info bramble-core:test --tests MailboxIntegrationTest
+3
View File
@@ -0,0 +1,3 @@
[submodule "briar-mailbox"]
path = briar-mailbox
url = https://code.briarproject.org/briar/briar-mailbox.git
@@ -0,0 +1,29 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="All tests in mailbox-integration-tests" type="GradleRunConfiguration" factoryName="Gradle">
<ExternalSystemSettings>
<option name="env">
<map>
<entry key="MAILBOX_INTEGRATION_TESTS" value="true" />
</map>
</option>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" value="" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value=":mailbox-integration-tests:test" />
<option value=":mailbox-integration-tests:cleanTest" />
</list>
</option>
<option name="vmOptions" value="" />
</ExternalSystemSettings>
<ExternalSystemDebugServerProcess>false</ExternalSystemDebugServerProcess>
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
<DebugAllEnabled>false</DebugAllEnabled>
<method v="2" />
</configuration>
</component>
+10
View File
@@ -0,0 +1,10 @@
Folder-Description:
===================
* `briar-*`: Specifically for the Briar app (Phone/Desktop/Headless)
* `bramble-*`: The protocol stack - not necessarily Briar-dependent
---
* `*-api`: public stuff that can be referenced from other packages and modules - mostly interfaces + a few utility classes
* `*-core`: implementations of api that are portable across Android/Desktop/Headless
* `*-java`: implementations of api that are specific to Desktop & Headless
+4 -2
View File
@@ -15,8 +15,8 @@ android {
defaultConfig { defaultConfig {
minSdkVersion 16 minSdkVersion 16
targetSdkVersion 30 targetSdkVersion 30
versionCode 10408 versionCode 10412
versionName "1.4.8" versionName "1.4.12"
consumerProguardFiles 'proguard-rules.txt' consumerProguardFiles 'proguard-rules.txt'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -42,8 +42,10 @@ configurations {
dependencies { dependencies {
implementation project(path: ':bramble-core', configuration: 'default') implementation project(path: ':bramble-core', configuration: 'default')
implementation 'androidx.annotation:annotation:1.5.0'
tor "org.briarproject:tor-android:$tor_version" tor "org.briarproject:tor-android:$tor_version"
tor "org.briarproject:obfs4proxy-android:$obfs4proxy_version" tor "org.briarproject:obfs4proxy-android:$obfs4proxy_version"
tor "org.briarproject:snowflake-android:$snowflake_version"
annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version" annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version"
+4
View File
@@ -18,3 +18,7 @@
-dontnote com.google.common.** -dontnote com.google.common.**
-dontwarn com.fasterxml.jackson.databind.ext.Java7SupportImpl -dontwarn com.fasterxml.jackson.databind.ext.Java7SupportImpl
# Keep all Jackson-serialisable classes and their members
-keep interface com.fasterxml.jackson.databind.annotation.JsonSerialize
-keep @com.fasterxml.jackson.databind.annotation.JsonSerialize class * { *; }
@@ -1,6 +1,7 @@
package org.briarproject.bramble; package org.briarproject.bramble;
import org.briarproject.bramble.battery.AndroidBatteryModule; import org.briarproject.bramble.battery.AndroidBatteryModule;
import org.briarproject.bramble.io.DnsModule;
import org.briarproject.bramble.network.AndroidNetworkModule; import org.briarproject.bramble.network.AndroidNetworkModule;
import org.briarproject.bramble.plugin.tor.CircumventionModule; import org.briarproject.bramble.plugin.tor.CircumventionModule;
import org.briarproject.bramble.reporting.ReportingModule; import org.briarproject.bramble.reporting.ReportingModule;
@@ -18,6 +19,7 @@ import dagger.Module;
AndroidTaskSchedulerModule.class, AndroidTaskSchedulerModule.class,
AndroidWakefulIoExecutorModule.class, AndroidWakefulIoExecutorModule.class,
CircumventionModule.class, CircumventionModule.class,
DnsModule.class,
ReportingModule.class, ReportingModule.class,
SocksModule.class SocksModule.class
}) })
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.system;
import android.content.Intent; import android.content.Intent;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
public interface AlarmListener { public interface AlarmListener {
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.system; package org.briarproject.bramble.api.system;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
public interface AndroidWakeLock { public interface AndroidWakeLock {
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.system; package org.briarproject.bramble.api.system;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
@@ -21,9 +21,9 @@ import org.briarproject.bramble.api.lifecycle.Service;
import org.briarproject.bramble.api.network.NetworkManager; import org.briarproject.bramble.api.network.NetworkManager;
import org.briarproject.bramble.api.network.NetworkStatus; import org.briarproject.bramble.api.network.NetworkStatus;
import org.briarproject.bramble.api.network.event.NetworkStatusEvent; import org.briarproject.bramble.api.network.event.NetworkStatusEvent;
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.bramble.api.system.TaskScheduler; import org.briarproject.bramble.api.system.TaskScheduler;
import org.briarproject.nullsafety.MethodsNotNullByDefault;
import org.briarproject.nullsafety.ParametersNotNullByDefault;
import java.net.Inet4Address; import java.net.Inet4Address;
import java.net.InetAddress; import java.net.InetAddress;
@@ -55,8 +55,8 @@ import static java.util.concurrent.TimeUnit.SECONDS;
import static java.util.logging.Level.INFO; import static java.util.logging.Level.INFO;
import static java.util.logging.Level.WARNING; import static java.util.logging.Level.WARNING;
import static java.util.logging.Logger.getLogger; import static java.util.logging.Logger.getLogger;
import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.bramble.util.LogUtils.logException;
import static org.briarproject.nullsafety.NullSafety.requireNonNull;
@MethodsNotNullByDefault @MethodsNotNullByDefault
@ParametersNotNullByDefault @ParametersNotNullByDefault
@@ -3,10 +3,10 @@ package org.briarproject.bramble.plugin.bluetooth;
import android.bluetooth.BluetoothSocket; import android.bluetooth.BluetoothSocket;
import org.briarproject.bramble.api.io.TimeoutMonitor; import org.briarproject.bramble.api.io.TimeoutMonitor;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin; import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection; import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
import org.briarproject.bramble.api.system.AndroidWakeLockManager; import org.briarproject.bramble.api.system.AndroidWakeLockManager;
import org.briarproject.nullsafety.NotNullByDefault;
import java.io.IOException; import java.io.IOException;
@@ -10,8 +10,6 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.bramble.api.plugin.Backoff; import org.briarproject.bramble.api.plugin.Backoff;
import org.briarproject.bramble.api.plugin.PluginCallback; import org.briarproject.bramble.api.plugin.PluginCallback;
import org.briarproject.bramble.api.plugin.PluginException; import org.briarproject.bramble.api.plugin.PluginException;
@@ -20,6 +18,8 @@ import org.briarproject.bramble.api.system.AndroidExecutor;
import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.system.Clock;
import org.briarproject.bramble.util.AndroidUtils; import org.briarproject.bramble.util.AndroidUtils;
import org.briarproject.bramble.util.IoUtils; import org.briarproject.bramble.util.IoUtils;
import org.briarproject.nullsafety.MethodsNotNullByDefault;
import org.briarproject.nullsafety.ParametersNotNullByDefault;
import java.io.IOException; import java.io.IOException;
import java.security.SecureRandom; import java.security.SecureRandom;
@@ -6,7 +6,6 @@ import android.bluetooth.BluetoothSocket;
import org.briarproject.bramble.api.event.EventBus; import org.briarproject.bramble.api.event.EventBus;
import org.briarproject.bramble.api.io.TimeoutMonitor; import org.briarproject.bramble.api.io.TimeoutMonitor;
import org.briarproject.bramble.api.lifecycle.IoExecutor; import org.briarproject.bramble.api.lifecycle.IoExecutor;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.plugin.Backoff; import org.briarproject.bramble.api.plugin.Backoff;
import org.briarproject.bramble.api.plugin.BackoffFactory; import org.briarproject.bramble.api.plugin.BackoffFactory;
import org.briarproject.bramble.api.plugin.PluginCallback; import org.briarproject.bramble.api.plugin.PluginCallback;
@@ -17,6 +16,7 @@ import org.briarproject.bramble.api.system.AndroidExecutor;
import org.briarproject.bramble.api.system.AndroidWakeLockManager; import org.briarproject.bramble.api.system.AndroidWakeLockManager;
import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.system.Clock;
import org.briarproject.bramble.api.system.WakefulIoExecutor; import org.briarproject.bramble.api.system.WakefulIoExecutor;
import org.briarproject.nullsafety.NotNullByDefault;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
@@ -86,8 +86,8 @@ public class AndroidBluetoothPluginFactory implements DuplexPluginFactory {
BluetoothConnectionFactory<BluetoothSocket> connectionFactory = BluetoothConnectionFactory<BluetoothSocket> connectionFactory =
new AndroidBluetoothConnectionFactory(connectionLimiter, new AndroidBluetoothConnectionFactory(connectionLimiter,
wakeLockManager, timeoutMonitor); wakeLockManager, timeoutMonitor);
Backoff backoff = backoffFactory.createBackoff(eventBus, ID, Backoff backoff = backoffFactory.createBackoff(MIN_POLLING_INTERVAL,
MIN_POLLING_INTERVAL, MAX_POLLING_INTERVAL, BACKOFF_BASE); MAX_POLLING_INTERVAL, BACKOFF_BASE);
AndroidBluetoothPlugin plugin = new AndroidBluetoothPlugin( AndroidBluetoothPlugin plugin = new AndroidBluetoothPlugin(
connectionLimiter, connectionFactory, ioExecutor, connectionLimiter, connectionFactory, ioExecutor,
wakefulIoExecutor, secureRandom, androidExecutor, app, wakefulIoExecutor, secureRandom, androidExecutor, app,
@@ -3,11 +3,11 @@ package org.briarproject.bramble.plugin.bluetooth;
import android.bluetooth.BluetoothSocket; import android.bluetooth.BluetoothSocket;
import org.briarproject.bramble.api.io.TimeoutMonitor; import org.briarproject.bramble.api.io.TimeoutMonitor;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.plugin.Plugin; import org.briarproject.bramble.api.plugin.Plugin;
import org.briarproject.bramble.api.plugin.duplex.AbstractDuplexTransportConnection; import org.briarproject.bramble.api.plugin.duplex.AbstractDuplexTransportConnection;
import org.briarproject.bramble.api.system.AndroidWakeLock; import org.briarproject.bramble.api.system.AndroidWakeLock;
import org.briarproject.bramble.api.system.AndroidWakeLockManager; import org.briarproject.bramble.api.system.AndroidWakeLockManager;
import org.briarproject.nullsafety.NotNullByDefault;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@@ -3,9 +3,9 @@ package org.briarproject.bramble.plugin.file;
import android.app.Application; import android.app.Application;
import android.net.Uri; import android.net.Uri;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.plugin.PluginCallback; import org.briarproject.bramble.api.plugin.PluginCallback;
import org.briarproject.bramble.api.properties.TransportProperties; import org.briarproject.bramble.api.properties.TransportProperties;
import org.briarproject.nullsafety.NotNullByDefault;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@@ -2,11 +2,11 @@ package org.briarproject.bramble.plugin.file;
import android.app.Application; import android.app.Application;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.plugin.PluginCallback; import org.briarproject.bramble.api.plugin.PluginCallback;
import org.briarproject.bramble.api.plugin.TransportId; import org.briarproject.bramble.api.plugin.TransportId;
import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin; import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin;
import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory; import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory;
import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -14,10 +14,10 @@ import org.briarproject.bramble.PoliteExecutor;
import org.briarproject.bramble.api.Pair; import org.briarproject.bramble.api.Pair;
import org.briarproject.bramble.api.event.Event; import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.network.event.NetworkStatusEvent; import org.briarproject.bramble.api.network.event.NetworkStatusEvent;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.plugin.Backoff; import org.briarproject.bramble.api.plugin.Backoff;
import org.briarproject.bramble.api.plugin.PluginCallback; import org.briarproject.bramble.api.plugin.PluginCallback;
import org.briarproject.bramble.api.settings.Settings; import org.briarproject.bramble.api.settings.Settings;
import org.briarproject.nullsafety.NotNullByDefault;
import java.io.IOException; import java.io.IOException;
import java.net.InetAddress; import java.net.InetAddress;
@@ -43,13 +43,13 @@ import static java.util.Collections.list;
import static java.util.Collections.singletonList; import static java.util.Collections.singletonList;
import static java.util.logging.Level.WARNING; import static java.util.logging.Level.WARNING;
import static java.util.logging.Logger.getLogger; import static java.util.logging.Logger.getLogger;
import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
import static org.briarproject.bramble.api.plugin.LanTcpConstants.DEFAULT_PREF_PLUGIN_ENABLE; import static org.briarproject.bramble.api.plugin.LanTcpConstants.DEFAULT_PREF_PLUGIN_ENABLE;
import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE; import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE;
import static org.briarproject.bramble.api.plugin.Plugin.State.INACTIVE; import static org.briarproject.bramble.api.plugin.Plugin.State.INACTIVE;
import static org.briarproject.bramble.util.IoUtils.tryToClose; import static org.briarproject.bramble.util.IoUtils.tryToClose;
import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.bramble.util.LogUtils.logException;
import static org.briarproject.bramble.util.NetworkUtils.getNetworkInterfaces; import static org.briarproject.bramble.util.NetworkUtils.getNetworkInterfaces;
import static org.briarproject.nullsafety.NullSafety.requireNonNull;
@NotNullByDefault @NotNullByDefault
class AndroidLanTcpPlugin extends LanTcpPlugin { class AndroidLanTcpPlugin extends LanTcpPlugin {
@@ -4,7 +4,6 @@ import android.app.Application;
import org.briarproject.bramble.api.event.EventBus; import org.briarproject.bramble.api.event.EventBus;
import org.briarproject.bramble.api.lifecycle.IoExecutor; import org.briarproject.bramble.api.lifecycle.IoExecutor;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.plugin.Backoff; import org.briarproject.bramble.api.plugin.Backoff;
import org.briarproject.bramble.api.plugin.BackoffFactory; import org.briarproject.bramble.api.plugin.BackoffFactory;
import org.briarproject.bramble.api.plugin.PluginCallback; import org.briarproject.bramble.api.plugin.PluginCallback;
@@ -12,6 +11,7 @@ import org.briarproject.bramble.api.plugin.TransportId;
import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin; import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory; import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory;
import org.briarproject.bramble.api.system.WakefulIoExecutor; import org.briarproject.bramble.api.system.WakefulIoExecutor;
import org.briarproject.nullsafety.NotNullByDefault;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
@@ -61,8 +61,8 @@ public class AndroidLanTcpPluginFactory implements DuplexPluginFactory {
@Override @Override
public DuplexPlugin createPlugin(PluginCallback callback) { public DuplexPlugin createPlugin(PluginCallback callback) {
Backoff backoff = backoffFactory.createBackoff(eventBus, ID, Backoff backoff = backoffFactory.createBackoff(MIN_POLLING_INTERVAL,
MIN_POLLING_INTERVAL, MAX_POLLING_INTERVAL, BACKOFF_BASE); MAX_POLLING_INTERVAL, BACKOFF_BASE);
AndroidLanTcpPlugin plugin = new AndroidLanTcpPlugin(ioExecutor, AndroidLanTcpPlugin plugin = new AndroidLanTcpPlugin(ioExecutor,
wakefulIoExecutor, app, backoff, callback, wakefulIoExecutor, app, backoff, callback,
MAX_LATENCY, MAX_IDLE_TIME, CONNECTION_TIMEOUT); MAX_LATENCY, MAX_IDLE_TIME, CONNECTION_TIMEOUT);
@@ -7,8 +7,7 @@ import android.content.pm.PackageManager.NameNotFoundException;
import org.briarproject.bramble.api.battery.BatteryManager; import org.briarproject.bramble.api.battery.BatteryManager;
import org.briarproject.bramble.api.network.NetworkManager; import org.briarproject.bramble.api.network.NetworkManager;
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.plugin.Backoff;
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.bramble.api.plugin.PluginCallback; import org.briarproject.bramble.api.plugin.PluginCallback;
import org.briarproject.bramble.api.system.AndroidWakeLock; import org.briarproject.bramble.api.system.AndroidWakeLock;
import org.briarproject.bramble.api.system.AndroidWakeLockManager; import org.briarproject.bramble.api.system.AndroidWakeLockManager;
@@ -16,6 +15,8 @@ import org.briarproject.bramble.api.system.Clock;
import org.briarproject.bramble.api.system.LocationUtils; import org.briarproject.bramble.api.system.LocationUtils;
import org.briarproject.bramble.api.system.ResourceProvider; import org.briarproject.bramble.api.system.ResourceProvider;
import org.briarproject.bramble.util.AndroidUtils; import org.briarproject.bramble.util.AndroidUtils;
import org.briarproject.nullsafety.MethodsNotNullByDefault;
import org.briarproject.nullsafety.ParametersNotNullByDefault;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
@@ -30,6 +31,8 @@ import java.util.zip.ZipInputStream;
import javax.net.SocketFactory; import javax.net.SocketFactory;
import androidx.annotation.ChecksSdkIntAtLeast;
import static android.os.Build.VERSION.SDK_INT; import static android.os.Build.VERSION.SDK_INT;
import static java.util.Arrays.asList; import static java.util.Arrays.asList;
import static java.util.logging.Level.INFO; import static java.util.logging.Level.INFO;
@@ -44,13 +47,14 @@ class AndroidTorPlugin extends TorPlugin {
private static final String TOR_LIB_NAME = "libtor.so"; private static final String TOR_LIB_NAME = "libtor.so";
private static final String OBFS4_LIB_NAME = "libobfs4proxy.so"; private static final String OBFS4_LIB_NAME = "libobfs4proxy.so";
private static final String SNOWFLAKE_LIB_NAME = "libsnowflake.so";
private static final Logger LOG = private static final Logger LOG =
getLogger(AndroidTorPlugin.class.getName()); getLogger(AndroidTorPlugin.class.getName());
private final Application app; private final Application app;
private final AndroidWakeLock wakeLock; private final AndroidWakeLock wakeLock;
private final File torLib, obfs4Lib; private final File torLib, obfs4Lib, snowflakeLib;
AndroidTorPlugin(Executor ioExecutor, AndroidTorPlugin(Executor ioExecutor,
Executor wakefulIoExecutor, Executor wakefulIoExecutor,
@@ -63,6 +67,7 @@ class AndroidTorPlugin extends TorPlugin {
CircumventionProvider circumventionProvider, CircumventionProvider circumventionProvider,
BatteryManager batteryManager, BatteryManager batteryManager,
AndroidWakeLockManager wakeLockManager, AndroidWakeLockManager wakeLockManager,
Backoff backoff,
TorRendezvousCrypto torRendezvousCrypto, TorRendezvousCrypto torRendezvousCrypto,
PluginCallback callback, PluginCallback callback,
String architecture, String architecture,
@@ -73,7 +78,7 @@ class AndroidTorPlugin extends TorPlugin {
int torControlPort) { int torControlPort) {
super(ioExecutor, wakefulIoExecutor, networkManager, locationUtils, super(ioExecutor, wakefulIoExecutor, networkManager, locationUtils,
torSocketFactory, clock, resourceProvider, torSocketFactory, clock, resourceProvider,
circumventionProvider, batteryManager, circumventionProvider, batteryManager, backoff,
torRendezvousCrypto, callback, architecture, maxLatency, torRendezvousCrypto, callback, architecture, maxLatency,
maxIdleTime, torDirectory, torSocksPort, torControlPort); maxIdleTime, torDirectory, torSocksPort, torControlPort);
this.app = app; this.app = app;
@@ -81,6 +86,7 @@ class AndroidTorPlugin extends TorPlugin {
String nativeLibDir = app.getApplicationInfo().nativeLibraryDir; String nativeLibDir = app.getApplicationInfo().nativeLibraryDir;
torLib = new File(nativeLibDir, TOR_LIB_NAME); torLib = new File(nativeLibDir, TOR_LIB_NAME);
obfs4Lib = new File(nativeLibDir, OBFS4_LIB_NAME); obfs4Lib = new File(nativeLibDir, OBFS4_LIB_NAME);
snowflakeLib = new File(nativeLibDir, SNOWFLAKE_LIB_NAME);
} }
@Override @Override
@@ -106,6 +112,12 @@ class AndroidTorPlugin extends TorPlugin {
if (!enable) wakeLock.release(); if (!enable) wakeLock.release();
} }
@Override
@ChecksSdkIntAtLeast(api = 25)
protected boolean canVerifyLetsEncryptCerts() {
return SDK_INT >= 25;
}
@Override @Override
public void stop() { public void stop() {
super.stop(); super.stop();
@@ -122,39 +134,43 @@ class AndroidTorPlugin extends TorPlugin {
return obfs4Lib.exists() ? obfs4Lib : super.getObfs4ExecutableFile(); return obfs4Lib.exists() ? obfs4Lib : super.getObfs4ExecutableFile();
} }
@Override
protected File getSnowflakeExecutableFile() {
return snowflakeLib.exists()
? snowflakeLib : super.getSnowflakeExecutableFile();
}
@Override @Override
protected void installTorExecutable() throws IOException { protected void installTorExecutable() throws IOException {
File extracted = super.getTorExecutableFile(); installExecutable(super.getTorExecutableFile(), torLib, TOR_LIB_NAME);
if (torLib.exists()) {
// If an older version left behind a Tor binary, delete it
if (extracted.exists()) {
if (extracted.delete()) LOG.info("Deleted Tor binary");
else LOG.info("Failed to delete Tor binary");
}
} else if (SDK_INT < 29) {
// The binary wasn't extracted at install time. Try to extract it
extractLibraryFromApk(TOR_LIB_NAME, extracted);
} else {
// No point extracting the binary, we won't be allowed to execute it
throw new FileNotFoundException(torLib.getAbsolutePath());
}
} }
@Override @Override
protected void installObfs4Executable() throws IOException { protected void installObfs4Executable() throws IOException {
File extracted = super.getObfs4ExecutableFile(); installExecutable(super.getObfs4ExecutableFile(), obfs4Lib,
if (obfs4Lib.exists()) { OBFS4_LIB_NAME);
// If an older version left behind an obfs4 binary, delete it }
@Override
protected void installSnowflakeExecutable() throws IOException {
installExecutable(super.getSnowflakeExecutableFile(), snowflakeLib,
SNOWFLAKE_LIB_NAME);
}
private void installExecutable(File extracted, File lib, String libName)
throws IOException {
if (lib.exists()) {
// If an older version left behind a binary, delete it
if (extracted.exists()) { if (extracted.exists()) {
if (extracted.delete()) LOG.info("Deleted obfs4 binary"); if (extracted.delete()) LOG.info("Deleted old binary");
else LOG.info("Failed to delete obfs4 binary"); else LOG.info("Failed to delete old binary");
} }
} else if (SDK_INT < 29) { } else if (SDK_INT < 29) {
// The binary wasn't extracted at install time. Try to extract it // The binary wasn't extracted at install time. Try to extract it
extractLibraryFromApk(OBFS4_LIB_NAME, extracted); extractLibraryFromApk(libName, extracted);
} else { } else {
// No point extracting the binary, we won't be allowed to execute it // No point extracting the binary, we won't be allowed to execute it
throw new FileNotFoundException(obfs4Lib.getAbsolutePath()); throw new FileNotFoundException(lib.getAbsolutePath());
} }
} }
@@ -7,7 +7,8 @@ import org.briarproject.bramble.api.crypto.CryptoComponent;
import org.briarproject.bramble.api.event.EventBus; import org.briarproject.bramble.api.event.EventBus;
import org.briarproject.bramble.api.lifecycle.IoExecutor; import org.briarproject.bramble.api.lifecycle.IoExecutor;
import org.briarproject.bramble.api.network.NetworkManager; import org.briarproject.bramble.api.network.NetworkManager;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.plugin.Backoff;
import org.briarproject.bramble.api.plugin.BackoffFactory;
import org.briarproject.bramble.api.plugin.PluginCallback; import org.briarproject.bramble.api.plugin.PluginCallback;
import org.briarproject.bramble.api.plugin.TorControlPort; import org.briarproject.bramble.api.plugin.TorControlPort;
import org.briarproject.bramble.api.plugin.TorDirectory; import org.briarproject.bramble.api.plugin.TorDirectory;
@@ -17,6 +18,7 @@ import org.briarproject.bramble.api.system.Clock;
import org.briarproject.bramble.api.system.LocationUtils; import org.briarproject.bramble.api.system.LocationUtils;
import org.briarproject.bramble.api.system.ResourceProvider; import org.briarproject.bramble.api.system.ResourceProvider;
import org.briarproject.bramble.api.system.WakefulIoExecutor; import org.briarproject.bramble.api.system.WakefulIoExecutor;
import org.briarproject.nullsafety.NotNullByDefault;
import java.io.File; import java.io.File;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
@@ -42,6 +44,7 @@ public class AndroidTorPluginFactory extends TorPluginFactory {
LocationUtils locationUtils, LocationUtils locationUtils,
EventBus eventBus, EventBus eventBus,
SocketFactory torSocketFactory, SocketFactory torSocketFactory,
BackoffFactory backoffFactory,
ResourceProvider resourceProvider, ResourceProvider resourceProvider,
CircumventionProvider circumventionProvider, CircumventionProvider circumventionProvider,
BatteryManager batteryManager, BatteryManager batteryManager,
@@ -53,7 +56,7 @@ public class AndroidTorPluginFactory extends TorPluginFactory {
Application app, Application app,
AndroidWakeLockManager wakeLockManager) { AndroidWakeLockManager wakeLockManager) {
super(ioExecutor, wakefulIoExecutor, networkManager, locationUtils, super(ioExecutor, wakefulIoExecutor, networkManager, locationUtils,
eventBus, torSocketFactory, resourceProvider, eventBus, torSocketFactory, backoffFactory, resourceProvider,
circumventionProvider, batteryManager, clock, crypto, circumventionProvider, batteryManager, clock, crypto,
torDirectory, torSocksPort, torControlPort); torDirectory, torSocksPort, torControlPort);
this.app = app; this.app = app;
@@ -73,14 +76,14 @@ public class AndroidTorPluginFactory extends TorPluginFactory {
} }
@Override @Override
TorPlugin createPluginInstance(TorRendezvousCrypto torRendezvousCrypto, TorPlugin createPluginInstance(Backoff backoff,
PluginCallback callback, TorRendezvousCrypto torRendezvousCrypto, PluginCallback callback,
String architecture) { String architecture) {
return new AndroidTorPlugin(ioExecutor, return new AndroidTorPlugin(ioExecutor,
wakefulIoExecutor, app, networkManager, locationUtils, wakefulIoExecutor, app, networkManager, locationUtils,
torSocketFactory, clock, resourceProvider, torSocketFactory, clock, resourceProvider,
circumventionProvider, batteryManager, wakeLockManager, circumventionProvider, batteryManager, wakeLockManager,
torRendezvousCrypto, callback, architecture, backoff, torRendezvousCrypto, callback, architecture,
MAX_LATENCY, MAX_IDLE_TIME, torDirectory, torSocksPort, MAX_LATENCY, MAX_IDLE_TIME, torDirectory, torSocksPort,
torControlPort); torControlPort);
} }
@@ -1,6 +1,6 @@
package org.briarproject.bramble.system; package org.briarproject.bramble.system;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
interface AlarmConstants { interface AlarmConstants {
@@ -6,8 +6,8 @@ import android.content.Context;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.TextUtils; import android.text.TextUtils;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.system.LocationUtils; import org.briarproject.bramble.api.system.LocationUtils;
import org.briarproject.nullsafety.NotNullByDefault;
import java.util.Locale; import java.util.Locale;
import java.util.logging.Logger; import java.util.logging.Logger;
@@ -4,8 +4,8 @@ import android.app.Application;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.system.ResourceProvider; import org.briarproject.bramble.api.system.ResourceProvider;
import org.briarproject.nullsafety.NotNullByDefault;
import java.io.InputStream; import java.io.InputStream;
@@ -11,7 +11,7 @@ import android.os.Parcel;
import android.os.StrictMode; import android.os.StrictMode;
import android.provider.Settings; import android.provider.Settings;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
@@ -10,11 +10,11 @@ import android.os.SystemClock;
import org.briarproject.bramble.api.Cancellable; import org.briarproject.bramble.api.Cancellable;
import org.briarproject.bramble.api.lifecycle.Service; import org.briarproject.bramble.api.lifecycle.Service;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.system.AlarmListener; import org.briarproject.bramble.api.system.AlarmListener;
import org.briarproject.bramble.api.system.AndroidWakeLockManager; import org.briarproject.bramble.api.system.AndroidWakeLockManager;
import org.briarproject.bramble.api.system.TaskScheduler; import org.briarproject.bramble.api.system.TaskScheduler;
import org.briarproject.bramble.api.system.Wakeful; import org.briarproject.bramble.api.system.Wakeful;
import org.briarproject.nullsafety.NotNullByDefault;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -1,7 +1,7 @@
package org.briarproject.bramble.system; package org.briarproject.bramble.system;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.system.AndroidWakeLock; import org.briarproject.bramble.api.system.AndroidWakeLock;
import org.briarproject.nullsafety.NotNullByDefault;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Logger; import java.util.logging.Logger;
@@ -5,9 +5,9 @@ import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.PowerManager; import android.os.PowerManager;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.system.AndroidWakeLock; import org.briarproject.bramble.api.system.AndroidWakeLock;
import org.briarproject.bramble.api.system.AndroidWakeLockManager; import org.briarproject.bramble.api.system.AndroidWakeLockManager;
import org.briarproject.nullsafety.NotNullByDefault;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
@@ -18,7 +18,7 @@ import static android.content.Context.POWER_SERVICE;
import static android.os.PowerManager.PARTIAL_WAKE_LOCK; import static android.os.PowerManager.PARTIAL_WAKE_LOCK;
import static java.util.concurrent.TimeUnit.MINUTES; import static java.util.concurrent.TimeUnit.MINUTES;
import static java.util.concurrent.TimeUnit.SECONDS; import static java.util.concurrent.TimeUnit.SECONDS;
import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull; import static org.briarproject.nullsafety.NullSafety.requireNonNull;
@NotNullByDefault @NotNullByDefault
class AndroidWakeLockManagerImpl implements AndroidWakeLockManager { class AndroidWakeLockManagerImpl implements AndroidWakeLockManager {
@@ -3,7 +3,7 @@ package org.briarproject.bramble.system;
import android.os.PowerManager; import android.os.PowerManager;
import android.os.PowerManager.WakeLock; import android.os.PowerManager.WakeLock;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
@@ -18,7 +18,7 @@ import static java.util.logging.Level.FINE;
import static java.util.logging.Level.INFO; import static java.util.logging.Level.INFO;
import static java.util.logging.Level.WARNING; import static java.util.logging.Level.WARNING;
import static java.util.logging.Logger.getLogger; import static java.util.logging.Logger.getLogger;
import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull; import static org.briarproject.nullsafety.NullSafety.requireNonNull;
@ThreadSafe @ThreadSafe
@NotNullByDefault @NotNullByDefault
@@ -1,7 +1,7 @@
package org.briarproject.bramble.system; package org.briarproject.bramble.system;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.system.AndroidWakeLock; import org.briarproject.bramble.api.system.AndroidWakeLock;
import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
interface SharedWakeLock { interface SharedWakeLock {
@@ -8,7 +8,7 @@ import android.os.Looper;
import android.provider.Settings; import android.provider.Settings;
import org.briarproject.bramble.api.Pair; import org.briarproject.bramble.api.Pair;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@@ -26,7 +26,7 @@ import static android.content.Context.MODE_PRIVATE;
import static android.os.Build.VERSION.SDK_INT; import static android.os.Build.VERSION.SDK_INT;
import static java.lang.Runtime.getRuntime; import static java.lang.Runtime.getRuntime;
import static java.util.Arrays.asList; import static java.util.Arrays.asList;
import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull; import static org.briarproject.nullsafety.NullSafety.requireNonNull;
@NotNullByDefault @NotNullByDefault
public class AndroidUtils { public class AndroidUtils {
+6 -2
View File
@@ -1,5 +1,6 @@
dependencyVerification { dependencyVerification {
verify = [ verify = [
'androidx.annotation:annotation:1.5.0:annotation-1.5.0.jar:261fb7c0210858500bab66d34354972a75166ab4182add283780b05513d6ec4a',
'cglib:cglib:3.2.8:cglib-3.2.8.jar:3f64de999ecc5595dc84ca8ff0879d8a34c8623f9ef3c517a53ed59023fcb9db', 'cglib:cglib:3.2.8:cglib-3.2.8.jar:3f64de999ecc5595dc84ca8ff0879d8a34c8623f9ef3c517a53ed59023fcb9db',
'com.android.tools.analytics-library:protos:30.0.3:protos-30.0.3.jar:f62b89dcd9de719c6a7b7e15fb1dd20e45b57222e675cf633607bd0ed6bca7e7', 'com.android.tools.analytics-library:protos:30.0.3:protos-30.0.3.jar:f62b89dcd9de719c6a7b7e15fb1dd20e45b57222e675cf633607bd0ed6bca7e7',
'com.android.tools.analytics-library:shared:30.0.3:shared-30.0.3.jar:05aa9ba3cc890354108521fdf99802565aae5dd6ca44a6ac8bb8d594d1c1cd15', 'com.android.tools.analytics-library:shared:30.0.3:shared-30.0.3.jar:05aa9ba3cc890354108521fdf99802565aae5dd6ca44a6ac8bb8d594d1c1cd15',
@@ -87,8 +88,9 @@ dependencyVerification {
'org.apache.httpcomponents:httpmime:4.5.6:httpmime-4.5.6.jar:0b2b1102c18d3c7e05a77214b9b7501a6f6056174ae5604e0e256776eda7553e', 'org.apache.httpcomponents:httpmime:4.5.6:httpmime-4.5.6.jar:0b2b1102c18d3c7e05a77214b9b7501a6f6056174ae5604e0e256776eda7553e',
'org.bouncycastle:bcpkix-jdk15on:1.56:bcpkix-jdk15on-1.56.jar:7043dee4e9e7175e93e0b36f45b1ec1ecb893c5f755667e8b916eb8dd201c6ca', 'org.bouncycastle:bcpkix-jdk15on:1.56:bcpkix-jdk15on-1.56.jar:7043dee4e9e7175e93e0b36f45b1ec1ecb893c5f755667e8b916eb8dd201c6ca',
'org.bouncycastle:bcprov-jdk15on:1.56:bcprov-jdk15on-1.56.jar:963e1ee14f808ffb99897d848ddcdb28fa91ddda867eb18d303e82728f878349', 'org.bouncycastle:bcprov-jdk15on:1.56:bcprov-jdk15on-1.56.jar:963e1ee14f808ffb99897d848ddcdb28fa91ddda867eb18d303e82728f878349',
'org.briarproject:obfs4proxy-android:0.0.12:obfs4proxy-android-0.0.12.jar:84159d2a4668abc40e3fccaa1f6fa0c04892863f9eb80a866ac8928d9f9a7e89', 'org.briarproject:obfs4proxy-android:0.0.14:obfs4proxy-android-0.0.14.jar:ad9b1ee4757b05867a19e993147bbb018bddd1f26ce3da746d5f037d5991a8c8',
'org.briarproject:tor-android:0.4.5.12-2:tor-android-0.4.5.12-2.jar:8545dbcef2bb6aa89c32bb6f8ac51f7a64bce3ae85845b3578ffdeb9b206feb9', 'org.briarproject:snowflake-android:2.3.1:snowflake-android-2.3.1.jar:1f83c9a070f87b7074af13627709a8b5aced5460104be7166af736b1bb73c293',
'org.briarproject:tor-android:0.4.5.14:tor-android-0.4.5.14.jar:7cf1beaa6c1db51fc8fac263aba9624ef289c3db29772509efcbc59f7057330a',
'org.checkerframework:checker-compat-qual:2.5.3:checker-compat-qual-2.5.3.jar:d76b9afea61c7c082908023f0cbc1427fab9abd2df915c8b8a3e7a509bccbc6d', 'org.checkerframework:checker-compat-qual:2.5.3:checker-compat-qual-2.5.3.jar:d76b9afea61c7c082908023f0cbc1427fab9abd2df915c8b8a3e7a509bccbc6d',
'org.checkerframework:checker-qual:2.5.2:checker-qual-2.5.2.jar:64b02691c8b9d4e7700f8ee2e742dce7ea2c6e81e662b7522c9ee3bf568c040a', 'org.checkerframework:checker-qual:2.5.2:checker-qual-2.5.2.jar:64b02691c8b9d4e7700f8ee2e742dce7ea2c6e81e662b7522c9ee3bf568c040a',
'org.checkerframework:checker-qual:3.5.0:checker-qual-3.5.0.jar:729990b3f18a95606fc2573836b6958bcdb44cb52bfbd1b7aa9c339cff35a5a4', 'org.checkerframework:checker-qual:3.5.0:checker-qual-3.5.0.jar:729990b3f18a95606fc2573836b6958bcdb44cb52bfbd1b7aa9c339cff35a5a4',
@@ -129,10 +131,12 @@ dependencyVerification {
'org.jetbrains.kotlin:kotlin-reflect:1.4.32:kotlin-reflect-1.4.32.jar:dbf19e9cdaa9c3c170f3f6f6ce3922f38dfc1d7fa1cab5b7c23a19da8b5eec5b', 'org.jetbrains.kotlin:kotlin-reflect:1.4.32:kotlin-reflect-1.4.32.jar:dbf19e9cdaa9c3c170f3f6f6ce3922f38dfc1d7fa1cab5b7c23a19da8b5eec5b',
'org.jetbrains.kotlin:kotlin-stdlib-common:1.4.20:kotlin-stdlib-common-1.4.20.jar:a7112c9b3cefee418286c9c9372f7af992bd1e6e030691d52f60cb36dbec8320', 'org.jetbrains.kotlin:kotlin-stdlib-common:1.4.20:kotlin-stdlib-common-1.4.20.jar:a7112c9b3cefee418286c9c9372f7af992bd1e6e030691d52f60cb36dbec8320',
'org.jetbrains.kotlin:kotlin-stdlib-common:1.4.32:kotlin-stdlib-common-1.4.32.jar:e1ff6f55ee9e7591dcc633f7757bac25a7edb1cc7f738b37ec652f10f66a4145', 'org.jetbrains.kotlin:kotlin-stdlib-common:1.4.32:kotlin-stdlib-common-1.4.32.jar:e1ff6f55ee9e7591dcc633f7757bac25a7edb1cc7f738b37ec652f10f66a4145',
'org.jetbrains.kotlin:kotlin-stdlib-common:1.7.10:kotlin-stdlib-common-1.7.10.jar:19f102efe9629f8eabc63853ad15c533e47c47f91fca09285c5bde86e59f91d4',
'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.32:kotlin-stdlib-jdk7-1.4.32.jar:5f801e75ca27d8791c14b07943c608da27620d910a8093022af57f543d5d98b6', 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.32:kotlin-stdlib-jdk7-1.4.32.jar:5f801e75ca27d8791c14b07943c608da27620d910a8093022af57f543d5d98b6',
'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.32:kotlin-stdlib-jdk8-1.4.32.jar:adc43e54757b106e0cd7b3b7aa257dff471b61efdabe067fc02b2f57e2396262', 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.32:kotlin-stdlib-jdk8-1.4.32.jar:adc43e54757b106e0cd7b3b7aa257dff471b61efdabe067fc02b2f57e2396262',
'org.jetbrains.kotlin:kotlin-stdlib:1.4.20:kotlin-stdlib-1.4.20.jar:b8ab1da5cdc89cb084d41e1f28f20a42bd431538642a5741c52bbfae3fa3e656', 'org.jetbrains.kotlin:kotlin-stdlib:1.4.20:kotlin-stdlib-1.4.20.jar:b8ab1da5cdc89cb084d41e1f28f20a42bd431538642a5741c52bbfae3fa3e656',
'org.jetbrains.kotlin:kotlin-stdlib:1.4.32:kotlin-stdlib-1.4.32.jar:13e9fd3e69dc7230ce0fc873a92a4e5d521d179bcf1bef75a6705baac3bfecba', 'org.jetbrains.kotlin:kotlin-stdlib:1.4.32:kotlin-stdlib-1.4.32.jar:13e9fd3e69dc7230ce0fc873a92a4e5d521d179bcf1bef75a6705baac3bfecba',
'org.jetbrains.kotlin:kotlin-stdlib:1.7.10:kotlin-stdlib-1.7.10.jar:e771fe74250a943e8f6346713201ff1d8cb95c3a5d1a91a22b65a9e04f6a8901',
'org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.1.0:kotlinx-metadata-jvm-0.1.0.jar:9753bb39efef35957c5c15df9a3cb769aabf2cdfa74b47afcb7760e5146be3b5', 'org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.1.0:kotlinx-metadata-jvm-0.1.0.jar:9753bb39efef35957c5c15df9a3cb769aabf2cdfa74b47afcb7760e5146be3b5',
'org.jetbrains:annotations:13.0:annotations-13.0.jar:ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478', 'org.jetbrains:annotations:13.0:annotations-13.0.jar:ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478',
'org.jmock:jmock-imposters:2.12.0:jmock-imposters-2.12.0.jar:3b836269745a137c9b2347e8d7c2104845b126ef04f012d6bfd94f1a7dea7b09', 'org.jmock:jmock-imposters:2.12.0:jmock-imposters-2.12.0.jar:3b836269745a137c9b2347e8d7c2104845b126ef04f012d6bfd94f1a7dea7b09',
+2
View File
@@ -7,6 +7,8 @@ apply plugin: 'witness'
apply from: 'witness.gradle' apply from: 'witness.gradle'
dependencies { dependencies {
api 'org.briarproject:null-safety:0.1'
implementation "com.google.dagger:dagger:$dagger_version" implementation "com.google.dagger:dagger:$dagger_version"
implementation 'com.google.code.findbugs:jsr305:3.0.2' implementation 'com.google.code.findbugs:jsr305:3.0.2'
implementation "com.fasterxml.jackson.core:jackson-annotations:$jackson_version" implementation "com.fasterxml.jackson.core:jackson-annotations:$jackson_version"
@@ -1,7 +1,7 @@
package org.briarproject.bramble.api; package org.briarproject.bramble.api;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.util.StringUtils; import org.briarproject.bramble.util.StringUtils;
import org.briarproject.nullsafety.NotNullByDefault;
import java.util.Arrays; import java.util.Arrays;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api; package org.briarproject.bramble.api;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
public interface Consumer<T> { public interface Consumer<T> {
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api; package org.briarproject.bramble.api;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api; package org.briarproject.bramble.api;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
public interface Nameable { public interface Nameable {
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api; package org.briarproject.bramble.api;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api; package org.briarproject.bramble.api;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
public interface Predicate<T> { public interface Predicate<T> {
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api; package org.briarproject.bramble.api;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.ThreadSafe; import javax.annotation.concurrent.ThreadSafe;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api; package org.briarproject.bramble.api;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
@@ -3,7 +3,7 @@ package org.briarproject.bramble.api.account;
import org.briarproject.bramble.api.crypto.DecryptionException; import org.briarproject.bramble.api.crypto.DecryptionException;
import org.briarproject.bramble.api.crypto.SecretKey; import org.briarproject.bramble.api.crypto.SecretKey;
import org.briarproject.bramble.api.identity.IdentityManager; import org.briarproject.bramble.api.identity.IdentityManager;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@@ -3,9 +3,9 @@ package org.briarproject.bramble.api.cleanup;
import org.briarproject.bramble.api.db.DatabaseComponent; import org.briarproject.bramble.api.db.DatabaseComponent;
import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.nullsafety.NotNullByDefault;
import java.util.Collection; import java.util.Collection;
@@ -5,9 +5,9 @@ import org.briarproject.bramble.api.crypto.SecretKey;
import org.briarproject.bramble.api.db.DatabaseComponent; import org.briarproject.bramble.api.db.DatabaseComponent;
import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.ClientId; import org.briarproject.bramble.api.sync.ClientId;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.nullsafety.NotNullByDefault;
/** /**
* The CleanupManager is responsible for tracking the cleanup deadlines of * The CleanupManager is responsible for tracking the cleanup deadlines of
@@ -1,8 +1,8 @@
package org.briarproject.bramble.api.cleanup.event; package org.briarproject.bramble.api.cleanup.event;
import org.briarproject.bramble.api.event.Event; import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -8,10 +8,10 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.db.Metadata; import org.briarproject.bramble.api.db.Metadata;
import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.InvalidMessageException; import org.briarproject.bramble.api.sync.InvalidMessageException;
import org.briarproject.bramble.api.sync.Message; import org.briarproject.bramble.api.sync.Message;
import org.briarproject.bramble.api.sync.validation.IncomingMessageHook; import org.briarproject.bramble.api.sync.validation.IncomingMessageHook;
import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -1,8 +1,8 @@
package org.briarproject.bramble.api.client; package org.briarproject.bramble.api.client;
import org.briarproject.bramble.api.data.BdfDictionary; import org.briarproject.bramble.api.data.BdfDictionary;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.nullsafety.NotNullByDefault;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
@@ -4,13 +4,13 @@ import org.briarproject.bramble.api.FormatException;
import org.briarproject.bramble.api.data.BdfList; import org.briarproject.bramble.api.data.BdfList;
import org.briarproject.bramble.api.data.MetadataEncoder; import org.briarproject.bramble.api.data.MetadataEncoder;
import org.briarproject.bramble.api.db.Metadata; import org.briarproject.bramble.api.db.Metadata;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.Group; import org.briarproject.bramble.api.sync.Group;
import org.briarproject.bramble.api.sync.InvalidMessageException; import org.briarproject.bramble.api.sync.InvalidMessageException;
import org.briarproject.bramble.api.sync.Message; import org.briarproject.bramble.api.sync.Message;
import org.briarproject.bramble.api.sync.MessageContext; import org.briarproject.bramble.api.sync.MessageContext;
import org.briarproject.bramble.api.sync.validation.MessageValidator; import org.briarproject.bramble.api.sync.validation.MessageValidator;
import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.system.Clock;
import org.briarproject.nullsafety.NotNullByDefault;
import java.util.logging.Logger; import java.util.logging.Logger;
@@ -11,12 +11,12 @@ import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.identity.Author; import org.briarproject.bramble.api.identity.Author;
import org.briarproject.bramble.api.mailbox.MailboxUpdate; import org.briarproject.bramble.api.mailbox.MailboxUpdate;
import org.briarproject.bramble.api.mailbox.MailboxVersion; import org.briarproject.bramble.api.mailbox.MailboxVersion;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.plugin.TransportId; import org.briarproject.bramble.api.plugin.TransportId;
import org.briarproject.bramble.api.properties.TransportProperties; import org.briarproject.bramble.api.properties.TransportProperties;
import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.Message; import org.briarproject.bramble.api.sync.Message;
import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.nullsafety.NotNullByDefault;
import java.security.GeneralSecurityException; import java.security.GeneralSecurityException;
import java.util.Collection; import java.util.Collection;
@@ -2,9 +2,9 @@ package org.briarproject.bramble.api.client;
import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.contact.Contact;
import org.briarproject.bramble.api.identity.AuthorId; import org.briarproject.bramble.api.identity.AuthorId;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.ClientId; import org.briarproject.bramble.api.sync.ClientId;
import org.briarproject.bramble.api.sync.Group; import org.briarproject.bramble.api.sync.Group;
import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
public interface ContactGroupFactory { public interface ContactGroupFactory {
@@ -2,11 +2,12 @@ package org.briarproject.bramble.api.connection;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.contact.PendingContactId; import org.briarproject.bramble.api.contact.PendingContactId;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.plugin.TransportConnectionReader; import org.briarproject.bramble.api.plugin.TransportConnectionReader;
import org.briarproject.bramble.api.plugin.TransportConnectionWriter; import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
import org.briarproject.bramble.api.plugin.TransportId; import org.briarproject.bramble.api.plugin.TransportId;
import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection; import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
import org.briarproject.bramble.api.sync.OutgoingSessionRecord;
import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
public interface ConnectionManager { public interface ConnectionManager {
@@ -45,6 +46,14 @@ public interface ConnectionManager {
void manageOutgoingConnection(ContactId c, TransportId t, void manageOutgoingConnection(ContactId c, TransportId t,
TransportConnectionWriter w); TransportConnectionWriter w);
/**
* Manages an outgoing connection to a contact via a mailbox. The IDs of
* any messages sent or acked are added to the given
* {@link OutgoingSessionRecord}.
*/
void manageOutgoingConnection(ContactId c, TransportId t,
TransportConnectionWriter w, OutgoingSessionRecord sessionRecord);
/** /**
* Manages an outgoing connection to a contact over a duplex transport. * Manages an outgoing connection to a contact over a duplex transport.
*/ */
@@ -2,7 +2,6 @@ package org.briarproject.bramble.api.connection;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.contact.PendingContactId; import org.briarproject.bramble.api.contact.PendingContactId;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.plugin.PluginConfig; import org.briarproject.bramble.api.plugin.PluginConfig;
import org.briarproject.bramble.api.plugin.TransportId; import org.briarproject.bramble.api.plugin.TransportId;
import org.briarproject.bramble.api.plugin.event.ConnectionClosedEvent; import org.briarproject.bramble.api.plugin.event.ConnectionClosedEvent;
@@ -12,6 +11,7 @@ import org.briarproject.bramble.api.plugin.event.ContactDisconnectedEvent;
import org.briarproject.bramble.api.rendezvous.event.RendezvousConnectionClosedEvent; import org.briarproject.bramble.api.rendezvous.event.RendezvousConnectionClosedEvent;
import org.briarproject.bramble.api.rendezvous.event.RendezvousConnectionOpenedEvent; import org.briarproject.bramble.api.rendezvous.event.RendezvousConnectionOpenedEvent;
import org.briarproject.bramble.api.sync.Priority; import org.briarproject.bramble.api.sync.Priority;
import org.briarproject.nullsafety.NotNullByDefault;
import java.util.Collection; import java.util.Collection;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.connection; package org.briarproject.bramble.api.connection;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
/** /**
* A duplex sync connection that can be closed by interrupting its outgoing * A duplex sync connection that can be closed by interrupting its outgoing
@@ -3,7 +3,7 @@ package org.briarproject.bramble.api.contact;
import org.briarproject.bramble.api.crypto.PublicKey; import org.briarproject.bramble.api.crypto.PublicKey;
import org.briarproject.bramble.api.identity.Author; import org.briarproject.bramble.api.identity.Author;
import org.briarproject.bramble.api.identity.AuthorId; import org.briarproject.bramble.api.identity.AuthorId;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -3,8 +3,8 @@ package org.briarproject.bramble.api.contact;
import org.briarproject.bramble.api.crypto.SecretKey; import org.briarproject.bramble.api.crypto.SecretKey;
import org.briarproject.bramble.api.db.ContactExistsException; import org.briarproject.bramble.api.db.ContactExistsException;
import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection; import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
import org.briarproject.nullsafety.NotNullByDefault;
import java.io.IOException; import java.io.IOException;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.contact; package org.briarproject.bramble.api.contact;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -12,7 +12,7 @@ import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.identity.Author; import org.briarproject.bramble.api.identity.Author;
import org.briarproject.bramble.api.identity.AuthorId; import org.briarproject.bramble.api.identity.AuthorId;
import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.security.GeneralSecurityException; import java.security.GeneralSecurityException;
import java.util.Collection; import java.util.Collection;
@@ -2,8 +2,8 @@ package org.briarproject.bramble.api.contact;
import org.briarproject.bramble.api.crypto.SecretKey; import org.briarproject.bramble.api.crypto.SecretKey;
import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.transport.StreamWriter; import org.briarproject.bramble.api.transport.StreamWriter;
import org.briarproject.nullsafety.NotNullByDefault;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@@ -1,7 +1,7 @@
package org.briarproject.bramble.api.contact; package org.briarproject.bramble.api.contact;
import org.briarproject.bramble.api.crypto.PublicKey; import org.briarproject.bramble.api.crypto.PublicKey;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -1,7 +1,7 @@
package org.briarproject.bramble.api.contact; package org.briarproject.bramble.api.contact;
import org.briarproject.bramble.api.UniqueId; import org.briarproject.bramble.api.UniqueId;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.ThreadSafe; import javax.annotation.concurrent.ThreadSafe;
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.contact.event;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.event.Event; import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.contact.event;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.event.Event; import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.contact.event;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.event.Event; import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.contact.event;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.event.Event; import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.contact.event;
import org.briarproject.bramble.api.contact.PendingContact; import org.briarproject.bramble.api.contact.PendingContact;
import org.briarproject.bramble.api.event.Event; import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.contact.event;
import org.briarproject.bramble.api.contact.PendingContactId; import org.briarproject.bramble.api.contact.PendingContactId;
import org.briarproject.bramble.api.event.Event; import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -3,7 +3,7 @@ package org.briarproject.bramble.api.contact.event;
import org.briarproject.bramble.api.contact.PendingContactId; import org.briarproject.bramble.api.contact.PendingContactId;
import org.briarproject.bramble.api.contact.PendingContactState; import org.briarproject.bramble.api.contact.PendingContactState;
import org.briarproject.bramble.api.event.Event; import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -1,7 +1,7 @@
package org.briarproject.bramble.api.crypto; package org.briarproject.bramble.api.crypto;
import org.briarproject.bramble.api.Bytes; import org.briarproject.bramble.api.Bytes;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -1,7 +1,7 @@
package org.briarproject.bramble.api.crypto; package org.briarproject.bramble.api.crypto;
import org.briarproject.bramble.api.Bytes; import org.briarproject.bramble.api.Bytes;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -1,7 +1,7 @@
package org.briarproject.bramble.api.crypto; package org.briarproject.bramble.api.crypto;
import org.briarproject.bramble.api.UniqueId; import org.briarproject.bramble.api.UniqueId;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.security.GeneralSecurityException; import java.security.GeneralSecurityException;
import java.security.SecureRandom; import java.security.SecureRandom;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.crypto; package org.briarproject.bramble.api.crypto;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
public class DecryptionException extends Exception { public class DecryptionException extends Exception {
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.crypto; package org.briarproject.bramble.api.crypto;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.crypto; package org.briarproject.bramble.api.crypto;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.security.GeneralSecurityException; import java.security.GeneralSecurityException;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.crypto; package org.briarproject.bramble.api.crypto;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
/** /**
* Interface for strengthening a password-based key, for example by using a * Interface for strengthening a password-based key, for example by using a
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.crypto; package org.briarproject.bramble.api.crypto;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
public interface PasswordStrengthEstimator { public interface PasswordStrengthEstimator {
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.crypto; package org.briarproject.bramble.api.crypto;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
/** /**
* The private half of a public/private {@link KeyPair}. * The private half of a public/private {@link KeyPair}.
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.crypto; package org.briarproject.bramble.api.crypto;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
/** /**
* The public half of a public/private {@link KeyPair}. * The public half of a public/private {@link KeyPair}.
@@ -1,7 +1,7 @@
package org.briarproject.bramble.api.crypto; package org.briarproject.bramble.api.crypto;
import org.briarproject.bramble.api.Bytes; import org.briarproject.bramble.api.Bytes;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -1,7 +1,7 @@
package org.briarproject.bramble.api.crypto; package org.briarproject.bramble.api.crypto;
import org.briarproject.bramble.api.Bytes; import org.briarproject.bramble.api.Bytes;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.crypto; package org.briarproject.bramble.api.crypto;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.io.IOException; import java.io.IOException;
@@ -1,7 +1,7 @@
package org.briarproject.bramble.api.crypto; package org.briarproject.bramble.api.crypto;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.transport.StreamContext; import org.briarproject.bramble.api.transport.StreamContext;
import org.briarproject.nullsafety.NotNullByDefault;
import java.io.InputStream; import java.io.InputStream;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.crypto; package org.briarproject.bramble.api.crypto;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.io.IOException; import java.io.IOException;
@@ -1,7 +1,7 @@
package org.briarproject.bramble.api.crypto; package org.briarproject.bramble.api.crypto;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.transport.StreamContext; import org.briarproject.bramble.api.transport.StreamContext;
import org.briarproject.nullsafety.NotNullByDefault;
import java.io.OutputStream; import java.io.OutputStream;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.data; package org.briarproject.bramble.api.data;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.util.Map.Entry; import java.util.Map.Entry;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.data; package org.briarproject.bramble.api.data;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.io.IOException; import java.io.IOException;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.data; package org.briarproject.bramble.api.data;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.io.InputStream; import java.io.InputStream;
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.data;
import org.briarproject.bramble.api.Bytes; import org.briarproject.bramble.api.Bytes;
import org.briarproject.bramble.api.FormatException; import org.briarproject.bramble.api.FormatException;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.data; package org.briarproject.bramble.api.data;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.io.OutputStream; import java.io.OutputStream;
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.data;
import org.briarproject.bramble.api.FormatException; import org.briarproject.bramble.api.FormatException;
import org.briarproject.bramble.api.db.Metadata; import org.briarproject.bramble.api.db.Metadata;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
public interface MetadataEncoder { public interface MetadataEncoder {
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.data;
import org.briarproject.bramble.api.FormatException; import org.briarproject.bramble.api.FormatException;
import org.briarproject.bramble.api.db.Metadata; import org.briarproject.bramble.api.db.Metadata;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
public interface MetadataParser { public interface MetadataParser {
@@ -10,7 +10,6 @@ import org.briarproject.bramble.api.crypto.SecretKey;
import org.briarproject.bramble.api.identity.Author; import org.briarproject.bramble.api.identity.Author;
import org.briarproject.bramble.api.identity.AuthorId; import org.briarproject.bramble.api.identity.AuthorId;
import org.briarproject.bramble.api.identity.Identity; import org.briarproject.bramble.api.identity.Identity;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.plugin.TransportId; import org.briarproject.bramble.api.plugin.TransportId;
import org.briarproject.bramble.api.settings.Settings; import org.briarproject.bramble.api.settings.Settings;
import org.briarproject.bramble.api.sync.Ack; import org.briarproject.bramble.api.sync.Ack;
@@ -27,6 +26,7 @@ import org.briarproject.bramble.api.sync.validation.MessageState;
import org.briarproject.bramble.api.transport.KeySetId; import org.briarproject.bramble.api.transport.KeySetId;
import org.briarproject.bramble.api.transport.TransportKeySet; import org.briarproject.bramble.api.transport.TransportKeySet;
import org.briarproject.bramble.api.transport.TransportKeys; import org.briarproject.bramble.api.transport.TransportKeys;
import org.briarproject.nullsafety.NotNullByDefault;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@@ -126,16 +126,11 @@ public interface DatabaseComponent extends TransactionManager {
TransportKeys k) throws DbException; TransportKeys k) throws DbException;
/** /**
* Returns true if there are any acks or messages to send to the given * Returns true if there are any acks to send to the given contact.
* contact over a transport with the given maximum latency.
* <p/> * <p/>
* Read-only. * Read-only.
*
* @param eager True if messages that are not yet due for retransmission
* should be included
*/ */
boolean containsAnythingToSend(Transaction txn, ContactId c, boolean containsAcksToSend(Transaction txn, ContactId c) throws DbException;
long maxLatency, boolean eager) throws DbException;
/** /**
* Returns true if the database contains the given contact for the given * Returns true if the database contains the given contact for the given
@@ -161,6 +156,18 @@ public interface DatabaseComponent extends TransactionManager {
*/ */
boolean containsIdentity(Transaction txn, AuthorId a) throws DbException; boolean containsIdentity(Transaction txn, AuthorId a) throws DbException;
/**
* Returns true if there are any messages to send to the given contact
* over a transport with the given maximum latency.
* <p/>
* Read-only.
*
* @param eager True if messages that are not yet due for retransmission
* should be included
*/
boolean containsMessagesToSend(Transaction txn, ContactId c,
long maxLatency, boolean eager) throws DbException;
/** /**
* Returns true if the database contains the given pending contact. * Returns true if the database contains the given pending contact.
* <p/> * <p/>
@@ -276,6 +283,13 @@ public interface DatabaseComponent extends TransactionManager {
*/ */
Group getGroup(Transaction txn, GroupId g) throws DbException; Group getGroup(Transaction txn, GroupId g) throws DbException;
/**
* Returns the ID of the group containing the given message.
* <p/>
* Read-only.
*/
GroupId getGroupId(Transaction txn, MessageId m) throws DbException;
/** /**
* Returns the metadata for the given group. * Returns the metadata for the given group.
* <p/> * <p/>
@@ -342,13 +356,13 @@ public interface DatabaseComponent extends TransactionManager {
Metadata query) throws DbException; Metadata query) throws DbException;
/** /**
* Returns the IDs of some messages received from the given contact that * Returns the IDs of all messages received from the given contact that
* need to be acknowledged, up to the given number of messages. * need to be acknowledged.
* <p/> * <p/>
* Read-only. * Read-only.
*/ */
Collection<MessageId> getMessagesToAck(Transaction txn, ContactId c, Collection<MessageId> getMessagesToAck(Transaction txn, ContactId c)
int maxMessages) throws DbException; throws DbException;
/** /**
* Returns the IDs of some messages that are eligible to be sent to the * Returns the IDs of some messages that are eligible to be sent to the
@@ -485,6 +499,8 @@ public interface DatabaseComponent extends TransactionManager {
* Returns the message with the given ID for transmission to the given * Returns the message with the given ID for transmission to the given
* contact over a transport with the given maximum latency. Returns null * contact over a transport with the given maximum latency. Returns null
* if the message is no longer visible to the contact. * if the message is no longer visible to the contact.
* <p/>
* Read-only if {@code markAsSent} is false.
* *
* @param markAsSent True if the message should be marked as sent. * @param markAsSent True if the message should be marked as sent.
* If false it can be marked as sent by calling * If false it can be marked as sent by calling
@@ -534,15 +550,18 @@ public interface DatabaseComponent extends TransactionManager {
*/ */
long getNextCleanupDeadline(Transaction txn) throws DbException; long getNextCleanupDeadline(Transaction txn) throws DbException;
/* /**
* Returns the next time (in milliseconds since the Unix epoch) when a * Returns the next time (in milliseconds since the Unix epoch) when a
* message is due to be sent to the given contact. The returned value may * message is due to be sent to the given contact over a transport with
* be zero if a message is due to be sent immediately, or Long.MAX_VALUE if * the given latency.
* no messages are scheduled to be sent. * <p>
* The returned value may be zero if a message is due to be sent
* immediately, or Long.MAX_VALUE if no messages are scheduled to be sent.
* <p/> * <p/>
* Read-only. * Read-only.
*/ */
long getNextSendTime(Transaction txn, ContactId c) throws DbException; long getNextSendTime(Transaction txn, ContactId c, long maxLatency)
throws DbException;
/** /**
* Returns the pending contact with the given ID. * Returns the pending contact with the given ID.
@@ -1,7 +1,7 @@
package org.briarproject.bramble.api.db; package org.briarproject.bramble.api.db;
import org.briarproject.bramble.api.crypto.KeyStrengthener; import org.briarproject.bramble.api.crypto.KeyStrengthener;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import java.io.File; import java.io.File;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.db; package org.briarproject.bramble.api.db;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
public interface DbCallable<R, E extends Exception> { public interface DbCallable<R, E extends Exception> {
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.db; package org.briarproject.bramble.api.db;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
public interface DbRunnable<E extends Exception> { public interface DbRunnable<E extends Exception> {
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.db; package org.briarproject.bramble.api.db;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@@ -1,7 +1,7 @@
package org.briarproject.bramble.api.db; package org.briarproject.bramble.api.db;
import org.briarproject.bramble.api.event.EventExecutor; import org.briarproject.bramble.api.event.EventExecutor;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe; import javax.annotation.concurrent.ThreadSafe;
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.event; package org.briarproject.bramble.api.event;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
public interface EventBus { public interface EventBus {
@@ -1,6 +1,6 @@
package org.briarproject.bramble.api.event; package org.briarproject.bramble.api.event;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
/** /**
* An interface for receiving notifications when events occur. * An interface for receiving notifications when events occur.
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.identity;
import org.briarproject.bramble.api.Nameable; import org.briarproject.bramble.api.Nameable;
import org.briarproject.bramble.api.crypto.PublicKey; import org.briarproject.bramble.api.crypto.PublicKey;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
import javax.annotation.concurrent.Immutable; import javax.annotation.concurrent.Immutable;
@@ -1,7 +1,7 @@
package org.briarproject.bramble.api.identity; package org.briarproject.bramble.api.identity;
import org.briarproject.bramble.api.crypto.PublicKey; import org.briarproject.bramble.api.crypto.PublicKey;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
public interface AuthorFactory { public interface AuthorFactory {

Some files were not shown because too many files have changed in this diff Show More