briar issueshttps://code.briarproject.org/groups/briar/-/issues2020-11-15T16:53:27Zhttps://code.briarproject.org/briar/briar/-/issues/1680Bug when turning the screen horizontally2020-11-15T16:53:27ZjomocuBug when turning the screen horizontallyThe chat should go down at all when I put the screen horizontally, currently turning the screen shows some messages above, and I have to manually go down to the last message.The chat should go down at all when I put the screen horizontally, currently turning the screen shows some messages above, and I have to manually go down to the last message.https://code.briarproject.org/briar/briar/-/issues/1674NPE in ContactListFragment2021-11-04T11:03:44ZakwizgranNPE in ContactListFragment* Android version: 10
* Phone model: Google Pixel 2 XL (taimen)
* Briar version: 1.2.4 (75dfa80)
* User feedback: "Opened the app after many messages were sent."
Stacktrace:
```
java.lang.NullPointerException: Attempt to read from field...* Android version: 10
* Phone model: Google Pixel 2 XL (taimen)
* Briar version: 1.2.4 (75dfa80)
* User feedback: "Opened the app after many messages were sent."
Stacktrace:
```
java.lang.NullPointerException: Attempt to read from field 'android.widget.ImageView org.briarproject.briar.android.contact.ContactItemViewHolder.avatar' on a null object reference
at org.briarproject.briar.android.contact.ContactListFragment.lambda$onCreateView$0$ContactListFragment(ContactListFragment.java:140)
at org.briarproject.briar.android.contact.-$$Lambda$ContactListFragment$DvpyzIeg2gO44NHGy22U4l_irhw.onItemClick(Unknown Source:4)
at org.briarproject.briar.android.contact.ContactItemViewHolder.lambda$bind$0$ContactItemViewHolder(ContactItemViewHolder.java:58)
at org.briarproject.briar.android.contact.-$$Lambda$ContactItemViewHolder$M1B1WNtK1OEXOZpZndUVONB779k.onClick(Unknown Source:6)
at android.view.View.performClick(View.java:7140)
at android.view.View.performClickInternal(View.java:7117)
at android.view.View.access$3500(View.java:801)
at android.view.View$PerformClick.run(View.java:27351)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
```
Edited log:
```
11-26 19:32:16.943 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_OFF
11-26 19:32:25.628 I/BaseActivity: Starting ConversationActivity
11-26 19:32:25.674 I/BaseActivity: Starting UnlockActivity
11-26 19:32:25.697 I/BaseActivity: Stopping UnlockActivity
11-26 19:32:25.698 I/BaseActivity: Stopping ConversationActivity
11-26 19:32:25.751 I/BaseActivity: Starting UnlockActivity
11-26 19:32:25.776 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_ON
11-26 19:32:25.997 I/BaseActivity: Starting NavDrawerActivity
11-26 19:32:26.025 I/BaseActivity: Starting UnlockActivity
11-26 19:32:26.103 I/BaseActivity: Stopping NavDrawerActivity
11-26 19:32:26.207 I/BaseActivity: Stopping UnlockActivity
11-26 19:32:26.830 I/BaseActivity: Starting NavDrawerActivity
11-26 19:32:27.387 I/BaseActivity: Stopping UnlockActivity
11-26 19:32:29.054 I/ConversationActivity: Eagerly loading text for latest message
11-26 19:32:29.108 I/ContactListFragment: Concurrent update, reloading
11-26 19:32:30.076 I/ContactListFragment: Conversation message received, updating item
```
There are some odd things about this log:
1. ConversationActivity and UnlockActivity seem to be started while the screen is off. I'm guessing this isn't really the case, it's just that the SCREEN_ON broadcast was received a while after the screen was actually turned on.
2. ConversationActivity is stopped at 19:32:25 and not subsequently started. But at 19:32:29 it eagerly loads the text for a new message.
* It shouldn't be doing any work while stopped.
* If we show the contact list after unlocking then we should clear the stack down to the existing instance of NavDrawerActivity, if any, which should destroy any existing instance of ConversationActivity.
3. A message arrives while ContactListFragment is loading the contact list, which presumably started at 19:32:26 when NavDrawerActivity was started. This causes ContactListFragment to reload the contact list. It's not clear whether the reload has completed before we try to update the item, triggering the crash.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1673NPE when scrolling in ConversationActivity2020-11-15T17:02:04ZakwizgranNPE when scrolling in ConversationActivity* Android version: 6.0
* Phone model: Huawei DIG-L21HN
* Briar version: 1.1.6 (4d26628)
Stacktrace:
```
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object refe...* Android version: 6.0
* Phone model: Huawei DIG-L21HN
* Briar version: 1.1.6 (4d26628)
Stacktrace:
```
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
at org.briarproject.briar.android.view.BriarRecyclerViewScrollListener.onItemVisible(BriarRecyclerViewScrollListener.java:55)
at org.briarproject.briar.android.view.BriarRecyclerViewScrollListener.onItemsVisible(BriarRecyclerViewScrollListener.java:50)
at org.briarproject.briar.android.view.BriarRecyclerViewScrollListener.onScrolled(BriarRecyclerViewScrollListener.java:39)
at android.support.v7.widget.RecyclerView.dispatchOnScrolled(RecyclerView.java:4961)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:4021)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3652)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:4194)
at android.view.View.layout(View.java:16772)
at android.view.ViewGroup.layout(ViewGroup.java:5462)
at android.support.constraint.ConstraintLayout.onLayout(ConstraintLayout.java:1915)
at android.view.View.layout(View.java:16772)
at android.view.ViewGroup.layout(ViewGroup.java:5462)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:338)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16772)
at android.view.ViewGroup.layout(ViewGroup.java:5462)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1764)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1607)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1516)
at android.view.View.layout(View.java:16772)
at android.view.ViewGroup.layout(ViewGroup.java:5462)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:338)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16772)
at android.view.ViewGroup.layout(ViewGroup.java:5462)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:338)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16772)
at android.view.ViewGroup.layout(ViewGroup.java:5462)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1764)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1607)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1516)
at android.view.View.layout(View.java:16772)
at android.view.ViewGroup.layout(ViewGroup.java:5462)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:338)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16772)
at android.view.ViewGroup.layout(ViewGroup.java:5462)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1764)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1607)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1516)
at android.view.View.layout(View.java:16772)
at android.view.ViewGroup.layout(ViewGroup.java:5462)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:338)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2757)
at android.view.View.layout(View.java:16772)
at android.view.ViewGroup.layout(ViewGroup.java:5462)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2234)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1991)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1147)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6262)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:886)
at android.view.Choreographer.doCallbacks(Choreographer.java:698)
at android.view.Choreographer.doFrame(Choreographer.java:633)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:872)
at android.os.Handler.handleCallback(Handler.java:743)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:5659)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:822)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712)
```
Edited log:
```
11-24 10:18:33.863 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_ON
11-24 10:18:42.475 I/BaseActivity: Starting ConversationActivity
11-24 10:18:42.513 I/ConversationActivity: Eagerly loading text for latest message
11-24 10:18:47.418 I/KeyboardAwareLinearLayout: onKeyboardOpen(438)
11-24 10:19:29.081 I/BaseActivity: Stopping ConversationActivity
11-24 10:19:29.274 I/BaseActivity: Starting ConversationActivity
11-24 10:19:29.292 I/ConversationActivity: Eagerly loading text for latest message
11-24 10:19:33.838 I/BaseActivity: Stopping ConversationActivity
11-24 10:19:33.983 I/BaseActivity: Starting ConversationActivity
11-24 10:19:34.003 I/ConversationActivity: Eagerly loading text for latest message
11-24 10:19:35.200 I/KeyboardAwareLinearLayout: onKeyboardOpen(926)
```
Notes:
* Object#getClass() is the desugared implementation of Objects.requireNonNull()
* Possible interaction between automatically scrolling to the bottom of the conversation and opening the keyboard?
* Old Briar version - KeyboardAwareLinearLayout has been removed, we've moved to the AndroidX implementation of ConstraintLayout
* Considering the old Briar version I'm not adding this to the current milestone unless we get another reporthttps://code.briarproject.org/briar/briar/-/issues/1672IllegalStateException animating FabSpeedDial2023-05-30T16:09:33ZakwizgranIllegalStateException animating FabSpeedDial* Android version: 6.0
* Phone model: Huawei CRO-L22
* Briar version: 1.2.4 (75dfa80)
Stacktrace:
```
java.lang.IllegalStateException: Cannot start this animator on a detached view!
at android.view.RenderNode.addAnimator(RenderN...* Android version: 6.0
* Phone model: Huawei CRO-L22
* Briar version: 1.2.4 (75dfa80)
Stacktrace:
```
java.lang.IllegalStateException: Cannot start this animator on a detached view!
at android.view.RenderNode.addAnimator(RenderNode.java:812)
at android.view.RenderNodeAnimator.setTarget(RenderNodeAnimator.java:300)
at android.view.RenderNodeAnimator.setTarget(RenderNodeAnimator.java:282)
at android.animation.RevealAnimator.<init>(RevealAnimator.java:37)
at android.view.ViewAnimationUtils.createCircularReveal(ViewAnimationUtils.java:55)
at io.github.kobakei.materialfabspeeddial.FabSpeedDial$6.run(FabSpeedDial.java:491)
at android.os.Handler.handleCallback(Handler.java:820)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5811)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:802)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:692)
```
Edited log:
```
11-24 04:48:14.450 I/AndroidAccountManager: No database key in preferences
11-24 04:48:14.452 I/AccountManagerImpl: Found database key in primary file
11-24 04:48:14.456 I/BaseActivity: Starting StartupActivity
11-24 04:48:16.369 I/IdentityManagerImpl: Identity stored
11-24 04:48:16.413 I/LifecycleManagerImpl: Starting services
11-24 04:48:16.425 I/AndroidNetworkManager: Received broadcast android.net.conn.CONNECTIVITY_CHANGE
11-24 04:48:16.428 I/AndroidNetworkManager: Received broadcast android.net.wifi.WIFI_AP_STATE_CHANGED
11-24 04:48:16.471 I/PluginManagerImpl: Starting simplex plugins
11-24 04:48:16.471 I/PluginManagerImpl: Starting duplex plugins
11-24 04:48:16.618 I/BriarActivity: Recreating NavDrawerActivity after signing in
11-24 04:48:16.864 I/BaseActivity: Stopping NavDrawerActivity
11-24 04:48:17.022 I/BaseActivity: Starting NavDrawerActivity
11-24 04:48:17.339 I/BaseActivity: Stopping SetupActivity
11-24 04:48:17.507 I/BaseActivity: Stopping StartupActivity
11-24 04:48:56.433 I/BaseActivity: Stopping NavDrawerActivity
11-24 04:48:56.653 I/BaseActivity: Starting NavDrawerActivity
11-24 04:48:56.843 I/BaseActivity: Stopping NavDrawerActivity
11-24 04:48:56.982 I/BaseActivity: Starting NavDrawerActivity
```Android 1.2https://code.briarproject.org/briar/briar/-/issues/1649Messages at bottom of group scroll offscreen after being marked as read2020-11-15T17:24:43ZakwizgranMessages at bottom of group scroll offscreen after being marked as readUser feedback: "At the instant when new messages at the bottom of the group chat finish fading from black to blue (I'm using the dark theme) to indicate they've been read, the window jumps back up so that the new messages are now just of...User feedback: "At the instant when new messages at the bottom of the group chat finish fading from black to blue (I'm using the dark theme) to indicate they've been read, the window jumps back up so that the new messages are now just off the bottom of the screen."https://code.briarproject.org/briar/briar/-/issues/1637Wrong orientation of (exotic) rotated images2022-04-26T10:45:03ZTorsten GroteWrong orientation of (exotic) rotated imagesWhen sending a photo with an EXIF orientation of 90, it is shown rotated 90 degrees to the left in the preview of the sender, the conversation and image view of the receiver. However, it is shown correctly in Android's Gallery app.When sending a photo with an EXIF orientation of 90, it is shown rotated 90 degrees to the left in the preview of the sender, the conversation and image view of the receiver. However, it is shown correctly in Android's Gallery app.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1620SuperNotCalledException when sharing link2020-11-15T18:04:01ZakwizgranSuperNotCalledException when sharing link* Android version: 4.0.4
* Briar version 1.1.9 (b1dfd86)
* Phone model: x86 emulator
Steps to reproduce:
* Open remote contact screen
* Tap share button
* Close the app chooser by tapping outside of the chooser or pressing back
Stackt...* Android version: 4.0.4
* Briar version 1.1.9 (b1dfd86)
* Phone model: x86 emulator
Steps to reproduce:
* Open remote contact screen
* Tap share button
* Close the app chooser by tapping outside of the chooser or pressing back
Stacktrace:
```
android.app.SuperNotCalledException: Activity {android/com.android.internal.app.ChooserActivity} did not call through to super.onStop()
at android.app.Activity.performStop(Activity.java:4606)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3071)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3130)
at android.app.ActivityThread.access$1200(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1180)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
```
This looks like a bug in the platform's ChooserActivity so I'm not adding it to the milestone.https://code.briarproject.org/briar/briar/-/issues/1613Briar dependency error (Android studio)2020-11-15T18:07:51ZjomocuBriar dependency error (Android studio)Hi, I'm trying to edit and compile briar.
I have imported the project, but it shows the following error.
**ERROR: No dependency for integrity assertion 'cglib:cglib:3.2.0:cglib-3.2.0.jar:adb13bab79712ad6bdf1bd59f2a3918018a8016e722e8a357...Hi, I'm trying to edit and compile briar.
I have imported the project, but it shows the following error.
**ERROR: No dependency for integrity assertion 'cglib:cglib:3.2.0:cglib-3.2.0.jar:adb13bab79712ad6bdf1bd59f2a3918018a8016e722e8a357065afb9e6690861'**
What am I doing wrong?
Thanks greetingshttps://code.briarproject.org/briar/briar/-/issues/1608Can't scan QR code in low light2020-11-15T18:09:33ZakwizgranCan't scan QR code in low lightSome phones can't scan QR codes from screens in low light because the camera automatically adjusts the exposure, making the other phone's screen a white blur. I've seen this before on older phones but assumed it was a dying problem. But ...Some phones can't scan QR codes from screens in low light because the camera automatically adjusts the exposure, making the other phone's screen a white blur. I've seen this before on older phones but assumed it was a dying problem. But the problem also exists on the Honor 8A (Android 9), making it impossible to add contacts between the Honor 8A and the Ascend Y330 in low light. (The Y330's low res screen contributes to the problem; the Honor 8A can scan the Nexus 5's screen in the same lighting conditions, for example.)
We should see whether auto exposure can be disabled, and whether this helps.https://code.briarproject.org/briar/briar/-/issues/1600AttachmentRetrieverIntegrationTest fails on emulator2020-11-15T18:13:33ZakwizgranAttachmentRetrieverIntegrationTest fails on emulatorSeveral tests in AttachmentRetrieverIntegrationTest fail on the API 21 emulator. It looks like some of them failed in the original commit of the test (it was called AttachmentControllerTest at the time) and others have been broken by sub...Several tests in AttachmentRetrieverIntegrationTest fail on the API 21 emulator. It looks like some of them failed in the original commit of the test (it was called AttachmentControllerTest at the time) and others have been broken by subsequent changes.
The failures from the original commit all seem to involve the same issue: the file extension being `jpeg` rather than `jpg`. I guess the platform's behaviour probably changed some time between API 21 and now, and it doesn't seem likely to cause problems beyond the test failure.
```
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.conversation.AttachmentControllerTest.testSmallJpegImageHealsWrongMimeType(AttachmentControllerTest.java:125)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.conversation.AttachmentControllerTest.testHighError(AttachmentControllerTest.java:317)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.conversation.AttachmentControllerTest.testWideError(AttachmentControllerTest.java:332)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.conversation.AttachmentControllerTest.testNoSizeJpeg(AttachmentControllerTest.java:71)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.conversation.AttachmentControllerTest.testSmallJpegImage(AttachmentControllerTest.java:109)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.conversation.AttachmentControllerTest.testBigJpegImage(AttachmentControllerTest.java:141)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.conversation.AttachmentControllerTest.testLottaPixels(AttachmentControllerTest.java:203)
```
The failures on current master involve content types as well as file extensions.
```
org.junit.ComparisonFailure: expected:<image/[gif]> but was:<image/[jpeg]>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testGimpCrash(AttachmentRetrieverIntegrationTest.java:156)
...
org.junit.ComparisonFailure: expected:<image/[gif]> but was:<image/[jpeg]>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testUberGif(AttachmentRetrieverIntegrationTest.java:111)
...
org.junit.ComparisonFailure: expected:<image/[pn]g> but was:<image/[jpe]g>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testImageIoCrash(AttachmentRetrieverIntegrationTest.java:141)
...
org.junit.ComparisonFailure: expected:<image/[gif]> but was:<image/[jpeg]>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testOptiPngAfl(AttachmentRetrieverIntegrationTest.java:171)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testHighError(AttachmentRetrieverIntegrationTest.java:241)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testWideError(AttachmentRetrieverIntegrationTest.java:256)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testSmallJpegImage(AttachmentRetrieverIntegrationTest.java:65)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testBigJpegImage(AttachmentRetrieverIntegrationTest.java:81)
...
org.junit.ComparisonFailure: expected:<jp[]g> but was:<jp[e]g>
at org.briarproject.briar.android.attachment.AttachmentRetrieverIntegrationTest.testLottaPixels(AttachmentRetrieverIntegrationTest.java:127)
```https://code.briarproject.org/briar/briar/-/issues/1582Pending contact snackbar and add contact FAB are sometimes displaced2022-04-19T11:29:51ZakwizgranPending contact snackbar and add contact FAB are sometimes displacedThe pending contact snackbar sometimes appears in the wrong place, with a blank space below it and overlapping the FAB. After the snackbar is hidden, the FAB doesn't always return to the right position.
![device-2019-06-07-162517](/uplo...The pending contact snackbar sometimes appears in the wrong place, with a blank space below it and overlapping the FAB. After the snackbar is hidden, the FAB doesn't always return to the right position.
![device-2019-06-07-162517](/uploads/9109a6a1d3e0fbeccdb1e25d1c5796b7/device-2019-06-07-162517.png)
![device-2019-06-07-162537](/uploads/01cc37afca368254ff312281f3f8d992/device-2019-06-07-162537.png)
I've seen the first problem on the Huawei Ascend Y330 (Android 4.2.2) and the Vivo Y11 (Android 4.4.4). I've seen the second problem on those phones and also the Honor 8A (Android 9).https://code.briarproject.org/briar/briar/-/issues/1569Connection manager could fail to close connection2020-11-15T18:24:37ZakwizgranConnection manager could fail to close connectionWhen the connection manager disposes of the incoming side of a duplex connection, it interrupts the outgoing sync session (if any) so the outgoing session can finish cleanly. If this happens before the outgoing session is created, it won...When the connection manager disposes of the incoming side of a duplex connection, it interrupts the outgoing sync session (if any) so the outgoing session can finish cleanly. If this happens before the outgoing session is created, it won't be interrupted.
If the incoming side of the connection is being disposed of because of an exception then the transport connection will be closed, so the outgoing session should eventually catch an exception when it tries to write to the connection. But if the incoming side of the connection is being disposed of because the end of the stream was reached then the transport connection will be left half-open, so the outgoing session could keep running indefinitely. This might also happen in the case of an exception if there's nothing to send and the transport doesn't require keepalives, which is the case for Bluetooth.
This could result in a dangling connection that's only usable in one direction. As far as I can tell it won't prevent a new connection from being made, or cause issues like !921, because the registration and unregistration of duplex connections is based on the lifetime of the incoming session, not the outgoing session.
The opposite can also happen: if the connection manager disposes of the outgoing side of the connection before the incoming session is created, the incoming session won't be interrupted. This can only happen if an exception has been thrown (in which case the transport connection will be closed, which *should* cause the incoming session to catch an exception eventually), or if the outgoing session has finished cleanly, which only happens if it's interrupted due to the incoming side of the connection being disposed of. So the only possible cause of a bug like !921 in this case would be if closing the connection didn't cause the incoming session to catch an exception (flaky Bluetooth stacks, I'm looking at you).
Labelling this as a bug because it's unintended behaviour, although it's not clear if we need to fix it.https://code.briarproject.org/briar/briar/-/issues/1563DozeView disappears when rotating screen after whitelisting Briar2020-11-15T18:27:59ZakwizgranDozeView disappears when rotating screen after whitelisting BriarSteps to reproduce:
* Use a device with Android 6+
* Ensure Briar isn't whitelisted for doze
* Create a new account
* In the power management setup screen, tap "Allow Connections" and accept the dialog
* Rotate the screen
* Expected: The...Steps to reproduce:
* Use a device with Android 6+
* Ensure Briar isn't whitelisted for doze
* Create a new account
* In the power management setup screen, tap "Allow Connections" and accept the dialog
* Rotate the screen
* Expected: The layout stays the same
* Actual: The "Allow Connections" button (with its check mark and help button) disappears
* Use the back button to return to the password setup screen
* Expected: The layout is the same as before
* Actual: The "Next" button changes to "Create Account"
The unexpected layout changes happen because we re-check whether we're whitelisted.
If the fragment instances are retained across rotations, perhaps the password and doze fragments could remember the whitelisting state when they were first created, and use that to control the text of the password fragment's "Next" / "Create Account" button and the visibilty of DozeView, so that they stay the same after we're whitelisted, while using the current whitelisting state to show/hide the "Allow Connections" button's check mark and enable/disable the power management fragment's "Create Account" button, which are the bits that are supposed to change when we're whitelisted.https://code.briarproject.org/briar/briar/-/issues/1525IllegalThreadStateException when starting contact exchange task2021-11-04T11:03:43ZakwizgranIllegalThreadStateException when starting contact exchange task* Android version: 8.1.0
* Briar version: 1.1.5 (8f4c3c4)
* Phone model: OnePlus A0001 (bacon)
* User feedback: "Tried to connect @ 35C3 during the event."
Stacktrace:
```
java.lang.IllegalThreadStateException
at java.lang.Threa...* Android version: 8.1.0
* Briar version: 1.1.5 (8f4c3c4)
* Phone model: OnePlus A0001 (bacon)
* User feedback: "Tried to connect @ 35C3 during the event."
Stacktrace:
```
java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:724)
at org.briarproject.bramble.contact.ContactExchangeTaskImpl.startExchange(ContactExchangeTaskImpl.java:113)
at org.briarproject.briar.android.keyagreement.ContactExchangeActivity.lambda$startContactExchange$0(ContactExchangeActivity.java:66)
at org.briarproject.briar.android.keyagreement.-$$Lambda$ContactExchangeActivity$fyog59L3yYwzJYBvp0hzYrpHYRo.run(Unknown Source:4)
at org.briarproject.briar.android.controller.DbControllerImpl.lambda$runOnDbThread$0(DbControllerImpl.java:35)
at org.briarproject.briar.android.controller.-$$Lambda$DbControllerImpl$SwC9ndeQwlnMM-VN8yvqCJG1ESc.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
```
This exception is thrown if start() is called when the thread isn't in the initial state. A couple of guesses about how this could have happened:
* A ContactExchangeTask instance was reused across multiple contacts
* A ContactExchangeActivity instance received multiple KeyAgreementFinishedEvents, possibly relating to different contacts, each of which cause it to start its ContactExchangeTask
Assigning to myself as I'm refactoring this code for remote contacts.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1523RuntimeException: Camera is being used after Camera.release() was called2021-03-24T16:26:51ZakwizgranRuntimeException: Camera is being used after Camera.release() was called* Android version: 6.0.1
* Briar version: 1.1.5 (8f4c3c4)
* Phone models: Samsung GT-I9100 and GT-I9300 (m0xx)
* User feedback: "I could not scan other device. They could scan me. I have Replicant 6.003."
Stacktrace:
```
java.lang.Runti...* Android version: 6.0.1
* Briar version: 1.1.5 (8f4c3c4)
* Phone models: Samsung GT-I9100 and GT-I9300 (m0xx)
* User feedback: "I could not scan other device. They could scan me. I have Replicant 6.003."
Stacktrace:
```
java.lang.RuntimeException: Camera is being used after Camera.release() was called
at android.hardware.Camera.native_getParameters(Native Method)
at android.hardware.Camera.getParameters(Camera.java:1999)
at android.hardware.Camera$EventHandler.handleMessage(Camera.java:1152)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
```
We have four reports of this crash, one on the GT-I9100 (running Replicant) and three on the GT-I9300 (probably also running Replicant, as it's the same Android version as the GT-I9100, and the version's too high to be a factory ROM).
This looks like a Replicant bug: camera calls are being made asynchronously. I'll report it upstream. I'm not adding it to the current milestone as there doesn't seem to be anything we can do.https://code.briarproject.org/briar/briar/-/issues/1520Stale scroll position is restored after opening blog post2020-11-15T19:08:03ZakwizgranStale scroll position is restored after opening blog postSteps to reproduce:
* Ensure the blog feed has at least a screenful of posts
* Scroll down a few posts
* Rotate the screen to landscape and back to portrait
* The scroll position is remembered, as expected
* Scroll down a few more posts
...Steps to reproduce:
* Ensure the blog feed has at least a screenful of posts
* Scroll down a few posts
* Rotate the screen to landscape and back to portrait
* The scroll position is remembered, as expected
* Scroll down a few more posts
* Tap on a post to open it
* Use the back button to return to the feed
* The scroll position jumps back to where it was when the screen was rotatedhttps://code.briarproject.org/briar/briar/-/issues/1519Password entry and confirmation fields should have descriptions2020-11-15T19:09:36ZakwizgranPassword entry and confirmation fields should have descriptionsGoogle Play's pre-launch report warns that the password entry and confirmation fields should have descriptions for screen reader accessibility.
https://support.google.com/accessibility/android/answer/7158690
This may apply to other fie...Google Play's pre-launch report warns that the password entry and confirmation fields should have descriptions for screen reader accessibility.
https://support.google.com/accessibility/android/answer/7158690
This may apply to other fields in the app, but the automated tests don't yet get past the setup screen.https://code.briarproject.org/briar/briar/-/issues/1518Touch target for screen filter checkbox is too small2020-11-15T19:10:24ZakwizgranTouch target for screen filter checkbox is too smallGoogle Play's pre-launch report warns that the screen filter checkbox should be at least 48dp high for accessibility. The current size varies from 32 to 36dp depending on the device.
The same may be true of other checkboxes, but the aut...Google Play's pre-launch report warns that the screen filter checkbox should be at least 48dp high for accessibility. The current size varies from 32 to 36dp depending on the device.
The same may be true of other checkboxes, but the automated testing doesn't go past the setup screen yet (I'm working on a script to allow it to do so).https://code.briarproject.org/briar/briar/-/issues/1499Tor process crashes2023-09-15T16:50:20ZTorsten GroteTor process crashesWhen enabling/disabling the Tor plugin in quick succession one sometimes can get the Tor process to exit.
There's two ways that have been observed so far:
The first one prints an exception whenever trying to make control commands:
```r...When enabling/disabling the Tor plugin in quick succession one sometimes can get the Tor process to exit.
There's two ways that have been observed so far:
The first one prints an exception whenever trying to make control commands:
```ruby
W/TorPlugin: java.io.IOException: Tor is no longer running
java.io.IOException: Tor is no longer running
at net.freehaven.tor.control.TorControlConnection.react(TorControlConnection.java:325)
```
The second one doesn't print anything to the log. The TorPlugin seems to hang (only prints on the event thread) and signing out of Briar isn't possible anymore. It just hangs at the sign out fragment.Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1493Latest message isn't always fully visible after loading conversation2021-11-04T11:03:44ZakwizgranLatest message isn't always fully visible after loading conversationWhen opening a private conversation where the latest message contains multiple images, the bottom of the latest message is sometimes below the viewport, making it necessary to scroll down manually to see the whole message. This can happe...When opening a private conversation where the latest message contains multiple images, the bottom of the latest message is sometimes below the viewport, making it necessary to scroll down manually to see the whole message. This can happen regardless of whether the latest message has any text.
Logging shows that we're eagerly loading the text of the latest message, if it has any, and automatically scrolling to the bottom after adding the text and images to each message, as expected. But for some reason this scrolling doesn't make the whole of the latest message visible.
Steps to reproduce:
* Check out the 1242-display-image-attachments-fake-data branch (commit 54082209)
* Create a test contact with no messages
* Repeatedly send a message to the contact, close and reopen the conversation (fake attachments will be added to the message when the conversation's reopened)
* Once there's more than a screenful of messages and the latest message has multiple images, repeatedly close and reopen the conversation without sending any more messages
* It may take a lot of tries to reproduce the bug
The bug seems to be a race condition. I was able to reproduce it on the Nexus 5X and the Moto G 4G.
Subtask of #1237.Android 1.4