Commit Graph
100 Commits
Author SHA1 Message Date
akwizgran ee35110167 Merge branch '625-avoid-repeated-author-status-lookups' into 'master'
Avoid repeated author status lookups

Closes #625

See merge request !322
2016-09-22 13:18:45 +00:00
akwizgran 97937428bb Merge branch '329-btp-header' into 'master'
Include stream number in stream header nonce

See the corresponding change in the BTP spec for an explanation:
https://code.briarproject.org/akwizgran/briar-spec/commit/388e1d23c04c2f6954d13d36ffc231611a3c6fa9

Closes #329

See merge request !320
2016-09-21 08:58:36 +00:00
akwizgran cc439aa74f Merge branch '569-convert-html-to-plain-text-safely-and-readably' into 'master'
Clean HTML from RSS feeds with Jsoup and Show Link Warning

This adds HTML cleaning with the Jsoup library based on a whitelist. The resulting HTML is then used to create a `Spannable` in Android. This spannable is traversed and URLs are replaced by a custom dialog fragment that shows the following warning.

![device-2016-09-07-154936](/uploads/87a9800bde2676b0f2ddf5a894aa04eb/device-2016-09-07-154936.png)

Closes #569

See merge request !311
2016-09-15 10:29:39 +00:00
akwizgran fd4275733f Merge branch 'fix-master-ui-handlers' into 'master'
Introduce a DestroyableActivity for UI result handlers



See merge request !314
2016-09-08 14:52:07 +00:00
akwizgran 49e9ee2b6d Merge branch '637-effect-of-touching-a-post-is-inconsistent' into 'master'
Resolve Outstanding Blog Issues

This MR has several commits which fix individual small issues. The biggest commit is a refactoring of the `BlogActivity`, so its `ViewPager` can be used also for the Blog feed.

Closes #637

See merge request !309
2016-09-08 11:57:18 +00:00
akwizgran 1a611d55be Merge branch '610-result-handlers-can-return-results-to-destroyed-activities-fragments' into '637-effect-of-touching-a-post-is-inconsistent'
Check if activity is still alive before returning results to it

Closes #610

See merge request !312
2016-09-08 11:45:52 +00:00
akwizgran e0e46a726e Merge branch '641-rss-feed-entry-comparator-wrongly-assumes-existing-date' into 'master'
Don't crash if an RSS entry has no date

Closes #641

See merge request !310
2016-09-07 14:06:06 +00:00
akwizgran 668eaf45f6 Merge branch '636-blogpostfragment-should-use-the-same-layout-as-the-blog-feed' into 'master'
Show Blog Posts always in the same design

This also adds comments to the blog post detail screen that were previously missing.
It re-uses the existing `BlogPostViewHolder` and its `bind()` methods effectively reducing the amount of code necessary.

Closes #636

See merge request !307
2016-09-07 13:12:25 +00:00
akwizgran fb9d743d11 Merge branch '627-tests-for-introduction-security-properties' into 'master'
Add one introduction test for modified response message

This is only the first part of #627, but I am putting it up for review already, since the second part will be very similar and issues found here will likely apply to both.

See merge request !306
2016-09-07 13:08:34 +00:00
akwizgran fc2213c042 Merge branch '633-blog-posts-from-other-users-sometimes-have-bold-nicknames' into 'master'
Fix view recycling issue with author name typeface

Closes #633

See merge request !305
2016-09-07 12:43:08 +00:00
akwizgran 34f9311f43 Merge branch '638-illegalstateexception-when-navigating-out-of-combined-feed-and-back-in' into 'master'
Allow Blog Controller listener to re-attach

Closes #638

See merge request !304
2016-09-07 12:39:04 +00:00
akwizgran 28fd84b261 Merge branch '632-badtokenexception-if-rss-error-dialog-is-show-after-activity-is-destroyed' into 'master'
Only show RSS Feed Import Failed Dialog when Activity lives

Closes #632

See merge request !303
2016-09-07 12:36:12 +00:00
akwizgran 387e44d114 Merge branch '496-implement-ui-for-reblogging-and-blog-comments' into 'master'
UI for reblogging and blog comments

This MR wraps all blog posts inside a `CardView` and adds a reblog button to blog posts. When this button is pressed, a new activity opens that shows the blog post again and allows the user to reblog it into their own blog. An optional comment can be added.

Also a new compound view `AuthorView` is introduced to display authors and their trust level in a consistent way.

The `BlogController` has been refactored, so the `FeedController` can share most code through an abstract base class.

![reblog2](/uploads/ce4764851c4cbe39684c95a3b427e3a2/reblog2.gif)

Closes #496, #437 

See merge request !300
2016-09-02 11:16:28 +00:00
akwizgran 636b587b9c Merge branch '605-add-database-method-for-retrieving-a-contact-by-local-and-remote-author-ids' into 'master'
Add database method for retrieving a contact by local and remote author IDs

Closes #605

See merge request !302
2016-09-01 20:00:27 +00:00
akwizgran 0afab09fdf Merge branch '616-continue-button-is-off-screen-when-adding-a-contact' into 'master'
Scroll down Adding Contact screen

Normally, you would introduce a new layout only for small screens, but in this case it is easier and has less maintenance overhead to just scroll down the screen, so the button is always visible after loading.

While I was at it, I also replaced `getLocalAuthors()` by the new `getLocalAuthor()`.

Closes #616

See merge request !294
2016-09-01 19:54:31 +00:00
akwizgran 8b7304f4cb Merge branch '599-fetch-rss-feeds-via-tor' into 'master'
Factor out Tor Socks Port

This MR factors out the local Tor port, so other clients can listen to an `TransportEnabledEvent` for Tor and start tasks as soon as Tor becomes available. This would also enable client to pass traffic through Tor's local SOCKS proxy.

See merge request !301
2016-09-01 11:57:13 +00:00
akwizgran 042050453a Merge branch '359-introduction-message-can-be-overlooked' into 'master'
Attach optional messages to invitations in Conversation view

![device-2016-08-29-115823](/uploads/e819324046b8a37ff06da7300046369c/device-2016-08-29-115823.png)![device-2016-08-29-115834](/uploads/051b4b64938bfa6f3ed610db28909865/device-2016-08-29-115834.png)

Closes #359

See merge request !299
2016-09-01 11:43:18 +00:00
akwizgran 1c15e690e1 Merge branch '352-conversation-screen-has-too-much-padding' into 'master'
Improve conversation screen graphics with less padding

This is how the conversation screen looks with this MR:

![1](https://code.briarproject.org/akwizgran/briar/uploads/3078636c93f7edc6b07034ad808ffc7c/device-2016-08-26-105325.png)
![2](https://code.briarproject.org/akwizgran/briar/uploads/fe0dcd3b1cbc6593aabed6faab1801d7/device-2016-08-26-105425.png)

This MR also replaces more raster graphics with vector graphics.

Closes #352

See merge request !298
2016-09-01 11:37:10 +00:00
akwizgran d8a9d83caf Merge branch '494-implement-backend-for-reblogging-and-blog-comments' into 'master'
Add support for comments and reblogging to Blog Client

Comments and reblogs need to depend on the post they refer to.
Since message dependencies are limited to one group,
the post and also the comments need to be wrapped
when commented on or reblogged to another blog (and group).

For this reason, in addition to comments, two new wrapping message types
are introduced. They retain all data of the original messages and allow
for reconstruction and signature verification.

This MR breaks backwards compatibility with old blog posts.
It removes the content type, title and parent ID from the post.

Furthermore, it includes one commit that replaces the `Message` in `MessageSharedEvent` with a `MessageId`.

Closes #494

See merge request !285
2016-08-30 23:09:31 +00:00
akwizgran 70a44e8a27 Merge branch '364-introduction-responses-should-be-signed' into 'master'
Sign Introduction Information to be able to discover MITM attack

The local introducee doesn't know whether each piece of information received from the introducer originates from the remote introducee or has been replaced by the introducer, i.e. whether the introducer is carrying out a man-in-the-middle attack.

The introduction protocol doesn't aim to detect or prevent man-in-the-middle attacks. We only aim to establish that if the remote identity public key is not replaced then the remote ephemeral public key, transport properties and timestamp are not replaced either. This MR adds a MAC and a signature to the introduction protocol's ACK message to fulfill that aim. See #364 for the detailed security argument.

Later, when the local introducee verifies that the remote identity public key belongs to a particular person (#513), she can also be sure that the remote ephemeral public key, transport properties and timestamp originated from that person.

Closes #364

See merge request !297
2016-08-30 23:05:25 +00:00
akwizgran eb3da2aac9 Merge branch '539-564-568-notification-overhaul' into 'master'
Fix various notification bugs

Fixes #539, #564, #568.

Depends on !276.

See merge request !286
2016-08-29 16:27:47 +00:00
akwizgran c5f0272621 Merge branch '597-gradle-connectedcheck-fails-due-to-method-limit' into 'master'
Cleanup Gradle and Proguard to fix connectedCheck

Closes #597

See merge request !284
2016-08-24 17:22:30 +00:00
akwizgran 419aa2e97e Merge branch '311-audit-crash-report-and-feedback-fields-for-sensitive-or-identifying-information' into 'master'
Remove sensitive information from crash and feedback reports

This depends on MR !290 and removes also the crash report settings.

Closes #311

See merge request !291
2016-08-24 17:20:49 +00:00
akwizgran 015e45752e Merge branch '592-scrub-addresses-before-logging-them' into 'master'
Scrub addresses before logging them

MAC, IP and onion addresses are now scrubbed before logging to ensure we don't leave any sensitive information in plaintext on the device or send it in crash reports or feedback.

* Bluetooth MAC addresses keep the first and last octets
* IPv4 addresses keep the first and last octets
* IPv6 addresses should be scrubbed completely (couldn't test)
* Onion addresses keep the first three characters

If an address is invalid it will not be scrubbed to enable debugging, because it is most likely not sensitive.

Closes #592

See merge request !290
2016-08-24 17:18:48 +00:00
akwizgran b4889fe293 Merge branch '483-design-ux-for-importing-an-rss-feed' into 'master'
Add feed title to imported entries

Also fixes one bug where a new feed was not saved and improved HTML stripping a bit.

Closes #483

See merge request !287
2016-08-24 16:15:14 +00:00
akwizgran 17f9972a56 Merge branch '573-hidden-service-for-crash-reports-and-feedback' into 'master'
Server-side code for accepting crash reports and feedback

* Moved some shared code for copying InputStreams to OutputStreams into a utility class
* Modified the  dev report sender to send one report per connection
  * Easier to handle on the server side
  * If the connection fails after sending any reports, they don't need to be resent
  * Tor will reuse the circuit, so it's cheap
* Added server-side code for accepting dev reports
  * We need to protect the server's resources from DoS attacks
  * Reports can't be larger than 1 MB
  * Connections are limited to an average rate of one per minute
  * The rate limiter uses a token bucket to allow bursts of up to 1,000 connections
  * If the rate limit is exceeded, connection attempts will fail - clients will retry next time they sign in
  * The limits can be raised when we move to a bigger server (and when we have some users)


See merge request !288
2016-08-22 20:09:46 +00:00
akwizgran d34afa5f30 Merge branch '583-npe-org-briarproject-android-util-qrcodeutils-createqrcode' into 'master'
Fix two crashes when scanning QR codes

One crash was two due the `Context` being `null` and the other due to the camera being opened within an `AsyncTask`.

Closes #583

See merge request !282
2016-08-19 19:32:24 +00:00
akwizgran 746fce1b95 Merge branch '580-introduced-contacts-have-status-verified' into 'master'
Add introduced contacts as UNVERIFIED

This MR **breaks** the database schema requiring you to create a new account.

Closes #580

See merge request !280
2016-08-19 16:18:35 +00:00
akwizgran 70b311db13 Merge branch '591-add-new-message-types-to-blogvalidator' into 'master'
Validate New Messages for Reblogging and Comments of Blog Posts

Closes #591

See merge request !279
2016-08-19 14:50:27 +00:00
akwizgran 84d4bf2205 Merge branch '595-clients-should-decide-whether-to-share-messages' into 'master'
Let clients decide whether to share messages or not

Before this MR, the `ValidationManager` was sharing all messages after they had been delivered. Now, it is within the client's responsibility whether to share messages or not. So far, only the Blog and the Forum client are sharing incoming messages.

Closes #595

See merge request !283
2016-08-15 15:03:59 +00:00
akwizgran cb9a85eb88 Merge branch '447-lan-ports' into 'master'
Don't try to reuse already bound ports for key agreement

This is one cause of #447, but probably not the only one.

See merge request !281
2016-08-10 21:12:02 +00:00
akwizgran dccc2e6ded Merge branch '587-java-lang-illegalstateexception-no-group-in-intent' into 'master'
Don't crash when pressing Up button in WriteBlogPostActivity

Closes #587

See merge request !275
2016-08-10 10:13:04 +00:00
akwizgran 44d13ef28e Merge branch '579-unsubscribe-from-shared-blogs' into 'master'
Allow unsubscribing from shared blogs

Only personal blogs from non-contacts can be removed.
This also adds integration tests that check the conditions under which blogs can actually be removed.

Closes #579

See merge request !268
2016-08-05 17:36:36 +00:00
akwizgran fce104487a Merge branch '470-second-invitation-doesn-t-disappear-from-available-forums' into 'master'
Return proper Invitation objects in SharingManager

Fixes #470

See merge request !265
2016-08-05 16:46:27 +00:00
akwizgran 3bbc8dcc4e Merge branch '429-explain-that-qr-codes-can-not-be-scanned-remotely' into 'master'
Show Explanatory Graphic Before Scanning QR Codes

![device-2016-08-04-182045](/uploads/9d6a5fea975d55e86dfe6d9bdbacb51c/device-2016-08-04-182045.png)
![device-2016-08-04-182058](/uploads/3ce86635f37ce2b903144a842d814d15/device-2016-08-04-182058.png)

Closes #429

See merge request !270
2016-08-05 15:55:46 +00:00
akwizgran 930194accf Merge branch '514-npe-crash-when-adding-contacts-in-emulator' into 'master'
Fix crashes when no Bluetooth or no Camera is available

Briar crashed when run in a device without bluetooth or without camera
such as an emulator.

Closes #514

See merge request !269
2016-08-05 15:51:32 +00:00
akwizgran 054a0d467c Merge branch '576-empty-state-messages-are-briefly-shown-when-they-shouldn-t' into 'master'
Prevent empty state messages from showing briefly

When we clear a list in `onPause()`, the proper behavior is that the empty state
message is shown, because the list is indeed empty.

However, we will reload the list content again in `onResume()`,
so the fix chosen in this MR is to force showing the progress bar
right after clearing the list.

Closes #576

See merge request !267
2016-08-05 15:02:52 +00:00
akwizgran adc85dab7e Merge branch '575-fix-sharerleavesbeforeresponse-test' into 'master'
Fix SharerLeavesBeforeResponse Integration Test

Closes #575

See merge request !266
2016-08-05 15:01:10 +00:00
akwizgran d15d82ccec Merge branch '565-forums-sometimes-appear-empty' into 'master'
Fix regression where forum entries were not shown

Closes #565

See merge request !271
2016-08-05 09:12:49 +00:00
akwizgran 9a32a13767 Merge branch '571-npe-in-feedfragment' into 'master'
Fix two Blog NPEs

Closes #571

See merge request !264
2016-08-03 13:44:21 +00:00
akwizgran 747ed023e4 Merge branch '517-simple-ui-for-managing-rss-feeds' into 'master'
Simple UI for Managing and Importing RSS Feeds

Please note that this does not yet include the reblogging style for displaying imported RSS entries.

![device-2016-07-26-170732](/uploads/e7f53f72e955d0c37518e0d552121105/device-2016-07-26-170732.png)
![device-2016-07-26-170755](/uploads/b8e0c91ed496b618d330364e840458dc/device-2016-07-26-170755.png)
![device-2016-07-26-171519](/uploads/fae5c16255d5a67673a4bd9be73c165f/device-2016-07-26-171519.png)

Closes #517

See merge request !251
2016-08-03 09:42:51 +00:00
akwizgran e8c398e996 Merge branch '486-convert-rss-feed-entries-into-briar-blog-posts' into 'master'
Post new RSS entries into the user's personal blog

Closes #486

See merge request !250
2016-08-03 09:36:55 +00:00
akwizgran 85c9b48196 Merge branch '485-extract-new-entries-from-rss-feed' into 'master'
Keep track of which RSS entries have been seen

This is done by remembering the time of the latest entry.
All entries newer than that are considered new and will be posted.

Closes #485

See merge request !249
2016-08-03 09:25:45 +00:00
akwizgran 2a2966bd6c Merge branch '484-implement-background-task-for-fetching-rss-feeds' into 'master'
Implement background task for fetching RSS feeds

* Implemented in briar-core as a `ScheduledExecutorService`
  that gets started when the app starts
* The briar-api has a `FeedManager` interface
  that the UI can use to register and unregister feeds
* In this first iteration, feeds are fetched via HTTP(S), not Tor

Closes #484

See merge request !247
2016-08-03 09:23:07 +00:00
akwizgran 4af5dbb45b Merge branch '562-npe-in-contactlistfragment' into 'master'
Fix NPE in ContactListFragment

Closes #562

See merge request !261
2016-08-02 09:32:59 +00:00
akwizgran 7132c88644 Merge branch '335-report-ui-improvements' into 'master'
UX improvements for crash reports and feedback

(The background color of the first screenshot is white, but I now changed it to use the same background color like everywhere)
![device-2016-08-01-174433](/uploads/a457489f61a7f0af48d4ebf8e3a10bf0/device-2016-08-01-174433.png)![device-2016-08-01-174500](/uploads/5275bff37db5a35e9ac9ad5038c06142/device-2016-08-01-174500.png)![device-2016-08-01-174532](/uploads/d0281156feff94262789102bd420ffeb/device-2016-08-01-174532.png)![device-2016-08-01-180330](/uploads/ed2d2d35b465df22b717cb84567a555f/device-2016-08-01-180330.png)

Closes #335

See merge request !246
2016-08-02 09:26:42 +00:00
akwizgran 0d9cbb2793 Merge branch '543-flicker-when-forum-invitation-is-removed-from-list' into 'master'
Remove forum invitations from list instead of reloading

Closes #543

See merge request !255
2016-08-01 17:16:25 +00:00
akwizgran ff28ae296e Merge branch '559-show-elapsed-time-in-blog-feeds-and-individual-blog-posts' into 'master'
Show Blog Post times with new timestamp and update it periodically

Closes #559

See merge request !260
2016-08-01 15:44:04 +00:00
akwizgran d096c1fead Merge branch '472-forum-no-message-for-the-inviter-if-an-invitee-accepts-or-declines' into 'master'
Show Responses to Forum Invitations in Private Conversation

Closes #472

See merge request !257
2016-08-01 13:46:30 +00:00
akwizgran 36dd9c30f8 Merge branch '553-pause-periodic-list-refresh-when-view-is-not-visible' into 'master'
Pause Periodic List Refresh when View is not Visible

This MR also sneaks in a second commit which stops the cevron in the forum list to sometimes lose its blue color. I noticed this when testing this MR with short refresh intervals. This is not as nice of specifying the color as a tint, but unfortunately tints are not yet ready for primetime on Android.

Closes #553

See merge request !259
2016-08-01 13:45:00 +00:00
akwizgran 2577b2ab2a Merge branch '488-show-notifications-for-new-blog-posts' into 'master'
Show notifications for new blog posts

This also adds a setting allowing people to turn blog post notifications off.

As instructed, this does not yet improve upon the current notification mechanism, but rather follows it, leaving the improvements for  #289.

Closes #488

See merge request !258
2016-08-01 12:36:16 +00:00
akwizgran 8bbb2184ff Merge branch '415-blog-activity-for-viewing-list-of-blog-posts' into 'master'
Show Personal Blog When Clicking On Post in Combined Blog Feed

This is your own personal blog when clicking on your own posts. Note how you can also write posts from that screen and no trust indicator is shown for the posts:
![device-2016-07-28-164921](/uploads/92993d579e26307ee0c6172cfd67bcd8/device-2016-07-28-164921.png)

This is somebody else's blog on a dedicated screen after clicking on a blog post:
![device-2016-07-28-164949](/uploads/d6c18d5b2ea81fd16b0300ae7b76aac5/device-2016-07-28-164949.png)

Closes #415

See merge request !256
2016-08-01 11:10:08 +00:00
akwizgran 32578e2cab Merge branch '535-formatexception-when-loading-contact-list-after-receiving-invitation' into 'master'
Use Client Layer Events in ContactListFragment

This prevents trying to access the same group metadata in different groups.
Also, the conversation does not need to be reloaded once introduction messages arrive.

Closes #535

See merge request !254
2016-08-01 10:21:31 +00:00
akwizgran 6511c13752 Merge branch '544-persistentdata-classes-aren-t-thread-safe' into 'master'
Remove PersistentData classes as they aren't thread-safe

This MR depends on !244 and does not claim to resolve *all* issues with the ForumActivity.

Closes #544

See merge request !253
2016-07-30 15:52:19 +00:00
akwizgran f3d0ffa09f Merge branch '310-client-layer-events-for-forums' into 'master'
Introduce client layer events for forums

The forum UI depended on sync layer events such as `MessageStateChangedEvent`.
Now, the forum client broadcasts its own high-level event (`ForumPostReceivedEvent`)
with the information the UI needs (`ForumPostHeader`).

Closes #310

See merge request !244
2016-07-30 14:34:17 +00:00
akwizgran 9ff4758683 Merge branch '533-explain-why-forum-can-t-be-shared-with-contact' into 'master'
Explain why forum can't be shared with contact

Closes #533

See merge request !252
2016-07-29 17:33:17 +00:00
akwizgran e0b0187157 Merge branch '222-simple-metadata-queries' into 'master'
Simple metadata queries

Adds support for retrieving metadata that matches all key/value pairs in a query object. This is a minimal version of #222 that can be extended if we need other query capabilities.

See merge request !187
2016-05-12 17:31:43 +00:00
akwizgran 0903a3e12d Merge branch '386-rotate-crash' into 'master'
Rotate crash fix

The problem was that two controllers were trying to unbind the Briar service where of course only one was needed.

I did the following

* Restructured the relevant Controllers
* Made a more permanent solution so that the last fragment will always be reloaded on config changes and Activity restarts.

Closes #386

See merge request !183
2016-05-12 17:30:55 +00:00
akwizgran af1f267d4b Merge branch '385-bqp-lan' into 'master'
Add BQP support to LanTcpPlugin

Closes #385

See merge request !185
2016-05-12 11:55:56 +00:00
akwizgran 5db584bd0a Merge branch '374-avatars-for-available-forums' into 'master'
Add forum avatars to list of available forums

![device-2016-05-11-152154](/uploads/864b4f42f35afe4a1dadc6cd42fa730d/device-2016-05-11-152154.png)

Closes #374

See merge request !182
2016-05-12 10:47:55 +00:00
akwizgran 926fdd85a8 Merge branch '337-forum-avatars' into 'master'
Forum Avatars

These new forum avatars are using the first letter of the forum and calculate the background color from forum's group ID.

Closes #337

![device-2016-05-11-124106](/uploads/afe926066f4306500c6ee23bb93b5b5b/device-2016-05-11-124106.png)

See merge request !178
2016-05-11 16:01:56 +00:00
akwizgran 3193b73687 Merge branch 'start-plugins-async' into 'master'
Start plugins asynchronously

This prevents other services from getting stuck behind the plugin manager while the Tor plugin is starting, which takes several seconds. The plugin manager waits for each plugin to start before stopping it.

I've also added some canaries to plugins and services to ensure instances aren't started more than once.

See merge request !181
2016-05-11 14:46:55 +00:00
akwizgran 3680cad9b8 Merge branch 'poller-refactoring' into 'master'
Poller refactoring, replace Timer with ScheduledExecutorService

* Replace Timer with ScheduledExecutorService (closes #258)
* Move automatic connection logic from PluginManager to Poller
* Reschedule polling when connections are opened or closed, making the poller more responsive to reductions in the polling interval


See merge request !180
2016-05-11 14:45:50 +00:00
akwizgran 3d8dd899a0 Merge branch '328-report-primer' into 'master'
Collect dev report data on a thread with a looper

Closes #328.

See merge request !166
2016-05-11 14:42:12 +00:00
akwizgran 41e282f19a Merge branch '274-code-encapsulation' into 'master'
274 code encapsulation

The goal of this branch is to better compartmentalize, structure and simplify the code in the Android module. It does this via the following techniques:

* Extended use of Dagger by introducing a component for Activities that injects, among other things, SharedPreferences and Fragments. The latter makes it possible to mock fragments more easily and letting Dagger automatically handle its injections.
* Decouple Briar API code, from the activities and Fragments, and encapsulate in re-usable Controller classes
* Introduce a UI-thread App event bus that the Helper classes use to communicate with Activities & Fragments.
* Define the testing methods in the briar-android module per Robolectric and Mockito

NOTE! Don't be alarmed if you see the contact introduction message one more time, one of the changes was to purify UI shared preferences from the Briar shared preferences, which now only contain preferences related to the API and it's usage.

closes #274 



See merge request !130
2016-05-11 10:54:07 +00:00
akwizgran 1724fbe5a9 Merge branch '121-new-forum-sharing-ui' into 'master'
Forum Sharing Client UI

This changes `ShareForumActivity` to use two fragments to facilitate
forum sharing with the new Forum Sharing Client backend.

The `ContactSelectorFragment` allows the user to select a
number of contacts. If there is an ongoing sharing session or the forum
is already shared with the contact, it is disabled in the list. If there
is at least one contact selected, a button appears in the toolbar that
brings the user to the `ShareForumMessageFragment` where the user can
write an optional message to be send along with the invitation.

After sending an invitation, the user is brought back to the forum that
she shared and there is a snackbar showing up briefly to indicate the
successful invitation.

The invitation is shown along with the message within the private
conversation of each contact. The person who shares the forum also sees
the invitation and the message as outgoing messages that also display
the current status of the messages.

A notification is shown like for other private messages as well.

Please note that this commit does not include a way for users to respond
to invitations. This is in MR !172. Both MRs are based on the new backend in !170.

![device-2016-05-03-182928](/uploads/48499ca4c149a8e7f13f8b28a24537ad/device-2016-05-03-182928.png)
![device-2016-05-03-182855](/uploads/5f49c43bf8f39780862247848a5b9c27/device-2016-05-03-182855.png)

See merge request !171
2016-05-11 09:13:07 +00:00
akwizgran 5aa44f4c9f Merge branch '121-new-available-forums-ui' into 'master'
Modernize AvailableForumsActivity

Turn list of available forums into a `BriarRecyclerView` with XML layout.
Allow to respond to forum invitations from the list of available forums.
The user can either accept or decline an invitation.

![device-2016-05-03-141150](/uploads/0998877d47fb7a3eafe3a90f917d8716/device-2016-05-03-141150.png)

See merge request !172
2016-05-11 08:57:56 +00:00
akwizgran 0b3486536e Merge branch '305-new-forum-list' into 'master'
New List of Forums

The adapter of the `ForumListFragment` has been changed into a
`BriarRecyclerView` and all its code has been adapted and simplified
accordingly.

All UI of the forum list is now defined in XML layouts. This enabled me to move the snackbar into onCreate().

Before:

![device-2016-05-03-165331](/uploads/961cc2c043464f446584de4ae0ad527b/device-2016-05-03-165331.png)

After:

![device-2016-05-03-165117](/uploads/e22ede3e9a3330762b3ae84f86ca6ec5/device-2016-05-03-165117.png)


See merge request !175
2016-05-10 14:55:47 +00:00
akwizgran 1bd5c0b195 Merge branch 'aggressive-polling' into 'master'
Try harder to connect to contacts

* When an outgoing connection is lost, try to reconnect to the contact straight away
* Use periodic polling for Tor, regardless of whether our hidden service descriptor has been published
* Reduce polling intervals for all plugins (this can be reverted if we solve the connectivity issues)

Closes #262, #314. Hopefully helps with #361.

See merge request !177
2016-05-10 14:47:04 +00:00
akwizgran d4abfe77a1 Merge branch '339-forum-sharing-integration-tests' into 'master'
Forum Sharing Integration Tests

This adds integration tests for these cases:
* normal invitation session where invitee accepts
* normal invitation session where invitee declines
* session where invitee leaves again after she joined
* session where sharer leaves after invitee has joined
* session where sharer leaves before invitee can respond
* sharer reuses the session ID of the previous session
* after accepting the invitation, the invitee invites the sharer to the same forum
* after session contacts delete each other and session states get cleaned up

Closes #339

See merge request !173
2016-05-10 14:46:02 +00:00
akwizgran f22ea85222 Merge branch '322-forum-sharing-client' into 'master'
Forum Sharing Client Backend

This MR replaces the old `ForumSharingManagerImpl` with a new one
which is based on state machines and the `ProtocolEngine`.

There is a `SharerEngine` and a `InviteeEngine` that take care of state
transitions, messages, events and trigger actions to be carried out by
the `ForumSharingManagerImpl`. This is all very similar to the
Introduction Client.

The general sharing paradigm has been changed from sharing as a state to
sharing as an action. Now the UI can allow users to invite contacts to
forums. The contacts can accept or decline the invitation. Also, the
Forum Sharing Manager is notified when users leave a forum.

Please note that you will need the UI to actually test this. It is coming up soon in another MR.

Closes #322

See merge request !170
2016-05-09 16:30:21 +00:00
akwizgran 2b64d2328a Merge branch '302-lan-plugin-privacy' into 'master'
Store a fixed number of recent IP addresses, padded with fakes

Closes #302

See merge request !159
2016-05-06 16:00:36 +00:00
akwizgran 5f5ceedc29 Merge branch '149-add-onion' into 'master'
Use control port to create and set up Tor hidden service

Closes #149

See merge request !160
2016-05-06 11:05:56 +00:00
akwizgran 33c1f16356 Merge branch '370-nav-drawer-remember-fragment' into 'master'
Remember the selected fragment from the NavDrawer

and stay in it when configuration changes

Closes #370

See merge request !176
2016-05-06 09:20:06 +00:00
akwizgran 7a87d41715 Merge branch '371-no-introduction-session-reuse' into 'master'
Do not allow session ID reuse and clean up sessions for introducee

It was possible that a malicious introducer sends new request with the
same session ID that was used previously and thus causing introducees to
have multiple states for the same session ID.
This commits prevents that from happening and adds an integration test
for that scenario.

Also if an introducee removes an introducer, all past session states
will be deleted from the database. For this, a test was added as well.

Closes #371
Closes #372

See merge request !179
2016-05-05 08:32:31 +00:00
akwizgran da60e567e0 Merge branch '305-remove-forum' into 'master'
Move forum removal action from long press menu to action bar

This is part of the UI changes for #305 

See merge request !164
2016-05-03 15:02:01 +00:00
akwizgran 3b65144ff6 Merge branch '154-ongoing-notification' into 'master'
Set ongoing notification to minimum priority

Setting the priority of the ongoing notification to PRIORITY_MIN prevents it from being shown in the status bar on Android 4.1 and later. The service still runs in the foreground.

Thanks to @str4d for finding the solution. Closes #154.

See merge request !169
2016-05-03 14:59:19 +00:00
akwizgran a655df7317 Merge branch '322-prepare-new-forum-sharing' into 'master'
Prepare for new Forum Sharing Client

Methods for creating, adding and removing forums have been moved to the
`ForumManager`. In order to still handle removing forums properly, a
`RemoveForumHook` has been introduced.

Methods for sharing forums with all current and future contacts have
been removed along with the localGroup where this information was saved.

The `ShareForumActivity` now has the proper label.

The `SessionId` and the `ProtocolEngine` have been moved to the
`clients` package.

This addresses part of #322 and part of what has been discussed in #320.

See merge request !156
2016-05-03 14:54:43 +00:00
akwizgran bba999478f Merge branch '314-tor-sleep' into 'master'
Hold a wake lock while Tor is connected to the internet

This is a partial fix for #314. As noted on that ticket, if a Tor connection is lost for any reason other than the device sleeping, the plugin won't try to replace the lost connection. I'm leaving the ticket open until that more general issue is solved.

The Tor plugin uses several variables to keep track of its connectivity status. This patch refactors those variables into an inner class to improve readability and ensure they're accessed atomically. However, it's still possible for the plugin's state to become inconsistent with the state of the Tor process. For example, calls to updateConnectionStatus() may run concurrently on the IO executor, so their calls to enableNetwork() may be interleaved. As usual, locking would solve this problem but create the potential for deadlock, so I won't try to solve it in this patch.

See merge request !168
2016-05-03 14:45:42 +00:00
akwizgran 189efe8d97 Merge branch '316-mobile-data-setting' into 'master'
Fix name of Tor mobile data setting

Closes #316.

See merge request !167
2016-05-03 14:39:22 +00:00
akwizgran b57b65e803 Merge branch '331-viewfinder' into 'master'
Reinitialise viewfinder when camera view is shown

Thanks to @str4d for finding the cause of the bug. Closes #331.

See merge request !165
2016-05-03 14:38:37 +00:00
akwizgran 160adca198 Merge branch 'use-android-executor' into 'master'
Use Android executor for background API calls

Some Android API calls need to be made from a thread with a message queue, but to keep the UI responsive they shouldn't be made from the UI thread.

This patch gives AndroidExecutor a captive thread with a message queue to execute tasks, and converts various background tasks from creating their own threads to using AndroidExecutor and IoExecutor.

This allows us to upgrade the support library to 23.2.1. Fixes #332.

See merge request !161
2016-05-03 14:34:49 +00:00
akwizgran 3d4abee1a4 Merge branch '305-forum-list-snackbar' into 'master'
Add Snackbar and Toolbar Button to Forum List

This MR is a small change that replaces the custom UI elements in
the forum list with a Snackbar and a Toolbar menu.

It also fixes a background color that was still present with fragment from the NavDrawer.

Before:

![before](/uploads/6dcc545827c035dcffcdf7863893753e/before.png)

After:

![after](/uploads/427de01d8bec779ee81e6ebded3fcd2b/after.png)

It addresses one part (2b) of #305 and is part of #121.


See merge request !163
2016-05-03 13:51:44 +00:00
akwizgran 29071fcc79 Merge branch '325-briar-recycler-view' into 'master'
Don't allow 'this' to escape the constructor

Fixes #325.

See merge request !155
2016-04-29 21:20:02 +00:00
akwizgran 1777ab51fb Merge branch '124-encrypted-feedback' into 'master'
Implement encrypted feedback

Closes #124.

See merge request !138
2016-04-29 18:22:53 +00:00
akwizgran 11a4ca6b9c Merge branch '271-port-splash-and-create-forum' into 'master'
Converts the splash screen to XML format

Removes all programatic calls that modify the layout and uses the XML
resource instead.

See merge request !123
2016-04-26 08:13:29 +00:00
akwizgran 5a13739ca8 Merge branch '292-reuse-contact-selector' into 'master'
Refactor `ContactListAdapter` to be used for Introductions and Forum Sharing

This MR introduces an abstract `BaseContactListAdapter` which provides
most of the adapter logic. The original `ContactListAdapter` extends it to
show date and online status of the contacts.

The new `ContactChooserAdapter` which is used for introductions extends
the `ContactListAdapter` and adds logic for graying out contacts from
different identities than the currently used one.

A new `ContactSelectorAdapter` extends the `BaseContactListAdapter` and
allows to select multiple contacts. It offers a method to return a
collection of all selected `ContactId`s.

Closes #292

See merge request !151
2016-04-25 16:55:12 +00:00
akwizgran b17575bfa4 Merge branch 'inactive-contacts' into 'master'
Don't connect to inactive contacts

Two changes:

1. Don't use remote transport properties for contacts that are in the process of being introduced - this avoids wasted connection attempts, as we can't create stream contexts for such contacts.

2. Don't activate contacts when receiving incoming streams - doing so was meant as a workaround for newly introduced contacts having inconsistent views of their introduction status if the introducer was offline. But it just shifted the inconsistency elsewhee, so this change removes the workaround.


See merge request !153
2016-04-25 15:22:51 +00:00
akwizgran 9918e93cc4 Merge branch '296-dialog-styling' into 'master'
Use consistent styling for dialogs. #296

Converted all dialogs to use the support library and the Briar theme, so they have a consistent Material Design appearance across all Android versions.

See merge request !152
2016-04-25 15:20:28 +00:00
akwizgran 3200a9f8f8 Merge branch '313-move-forum-buttons-to-toolbar' into 'master'
Move create forum post and share forum buttons in action bar

According to the designs in #305, the 'create forum post' and 'share forum' buttons will go into the in action bar.

In the spirit of keeping MRs small and to avoid conflicts with #306, I did this first and independently of future work.

This also introduces constants for the `GROUP_ID`, `FORUM_NAME` and `MIN_TIMESTAMP` as they were used for the two buttons.

Closes #313

See merge request !150
2016-04-25 13:57:14 +00:00
akwizgran 41c9916e8e Merge branch '293-remove-avatar-from-conversation' into 'master'
Remove avatar code and layout from ConversationActivity and ConversationAdapter

Please note that I have not been able to test this MR on an actual device as I have none at the moment :(

Closes #293

See merge request !148
2016-04-25 12:40:42 +00:00
akwizgran 7779319f9a Merge branch '295-show-declined-introductions' into 'master'
Show relevant introduction decline responses in the conversation

* If the user has already declined, we don't show that the other
  introducee has declined as well. The backend doesn't have that information, so
  this is compatible with the principle of showing what we know.
* If the user has already accepted or hasn't yet responded, we now show the
  decline response in the private conversation with the introducer. If
  the user hasn't yet responded, we hide the accept/decline buttons
  in the introduction request message.

Please note that I do not have three devices at the moment to test this MR in its entirety in practice. I created another test which is hopefully sufficient to ensure that the modifications are correct.

Closes #295 

See merge request !149
2016-04-25 12:07:13 +00:00
akwizgran 1b08720200 Merge branch '123-encrypted-crash-reports' into 'master'
Encrypted crash reports

Part of #123.

See merge request !128
2016-04-25 10:17:53 +00:00
akwizgran 24987336fd Merge branch '203-remove-tor-binaries' into 'master'
Remove Tor binaries from repo. #203

This patch removes the Tor binaries from the repo - the binaries will be downloaded at build time and verified using SHA-256 hashes included in the repo.

After this branch has been merged I plan to reduce the size of the repo by rewriting the commit history to delete the Tor binaries (and various other cruft that used to live in the repo, such as fonts).

After the history has been rewritten, everyone will need to delete their local repo and clone a fresh copy. I'll send out some warnings beforehand.

See merge request !147
2016-04-21 09:53:41 +00:00
akwizgran 698f3470f4 Merge branch '276-introduction-integration-tests' into 'master'
Introduction Integration Tests

This introduces these integration tests for the introduction client:
* normal session where both introducees accept
* normal session where the first introducee declines
* normal session where the second introducee declines
* one session where a contact is introduced to herself
* one session where two identities of the same contact are introduced to each other

I managed to get rid of the non-determinism missing validator problem by properly injecting the eager singletons.

Attention: This is based on !143 which addresses a corner case that is already tested here.

See merge request !139
2016-04-20 15:59:02 +00:00
akwizgran 2d23ecea8c Merge branch '284-force-introduction-decline-when-identities' into 'master'
Addresses two Introduction Corner Cases

* force decline when two of our own identities are introduced to each
  other
* throw away introduction requests to the same identity
  (impossible to trigger from UI)

Closes #284
Closes #294

See merge request !143
2016-04-20 15:29:55 +00:00
akwizgran 9f4cacd81c Merge branch '286-progress-wheels' into 'master'
Don't use inverse style for progress bars. #286

Fixes the appearance of progress bars on Gingerbread, no difference on other platforms. Thanks to @str4d for finding the source of the problem.

See merge request !145
2016-04-19 10:17:05 +00:00
akwizgran 076f7d411e Merge branch '276-introduction-tests' into 'master'
Unit Tests for the Introduction Client

Please note that I based this MR is on top of the introduction UI in !122, because I needed to do some more refactoring on top of the other refactoring ;) The refactoring and the tests are in two separate commits.

An integration test will be added as a separate MR.

This addresses part of #276.

See merge request !136
2016-04-14 16:24:50 +00:00
akwizgran 20c8cacda2 Merge branch '253-introduction-ui' into 'master'
Introduction UI

This is the user interface for the new introduction feature as specified by @Megalox in #253.

This will close #253 

See merge request !122
2016-04-13 16:54:04 +00:00
akwizgran a15dc951c5 Merge branch 'connect-to-new-contacts' into 'master'
Connect to new contacts

The motivation for this change was realising that when we add a new contact, if the Tor plugin has finished publishing its descriptor and stopped polling, we'll never try to connect to that contact via Tor. I decided that instead of making a special case for Tor, we should try to connect to new contacts via all transports.

Changes:
* Don't register outgoing connections until we've read the incoming tag - this prevents the connection indicator from blinking when connecting to a contact who's removed us
* Connect to newly activated contacts using all available transports, without waiting for the poller
* Removed device IDs from transport properties, we don't know how we're going to handle multi-device support yet


See merge request !135
2016-04-06 16:13:59 +00:00