Commit Graph

56 Commits

Author SHA1 Message Date
Jordan Rose
0cb46951fa Build (but don't run) the perf tests along with the regular tests 2021-03-22 16:18:30 -07:00
Jordan Rose
68a27a76e2 Move AxolotlKit model classes into SSK and remove the dependency
We still need the AxolotlKit model classes to migrate old sessions,
but we don't need any of the actual protocol support. This also
means we can drop HKDFKit.

Additionally, we do still use some utilities from AxolotlKit:

- AxolotlExceptions.h: NSException names, should eventually be
  replaced by NSErrors everywhere

- NSData+keyVersionByte.h: prepend/remove public key type byte,
  should eventually be replaced by strong types (ECPublicKey)

- SPKProtocolContext.h: defines the SPKProtocol{Read,Write}Context
  marker protocols, should be replaced by direct use of
  SDSAny{Read,Write}Transaction
2021-03-22 16:17:47 -07:00
Nora Trapp
36dcaad781 Add 'Profiling' scheme 2020-08-17 08:22:05 -07:00
Matthew Chen
c0547f33d2 Merge remote-tracking branch 'private/release/3.5.0' 2020-02-24 20:29:33 -03:00
Nora Trapp
88ac10de05 Notification Service Extension
The NSE should only run on iOS 13.3 or later where the "filtering" entitlement
is available since our notifications don't contain any content and will often
not trigger any user visible content. We control this by setting the deployment
target to iOS 13.3.

This does not handle calls as it's currently impossible to wake the main app or
launch CallKit from within the NSE. Should we reach a point where we need to use
this extension in production the service will need to be able to differentiate
between call and non-call messages and deliver them as VOIP or Vanilla pushes as
appropriate. Alternatively, Apple may introduce some way for us to signal the
main app that a call message has been received.

This does not currently address the potential for the NSE and the main app to be
running and trying to process messages at the same time. As long as the
websocket is connected and the main app is processing messages in a timely
fashion the NSE will never be called since the service will not send pushes for
these messages, but censorship circumvention users and users where the websocket
is disconnected for some reason will legitimately receive pushes and we will
want to process those messages. How we will handle these cases requires further
thought since just terminating the NSE when the app launches is not sufficient.
We could potentially do something like terminate the NSE everytime the main app
runs the message fetcher job which should only happen if either the user
pulls-to-refresh on the conversation list or the websocket is actively connected
and receiving messsages. I plan to address this in a follow-up pull request.

Currently this code will not ever be run since the service never sends vanilla
push notifications. Eventually we will need to add logic into the main app to:
a) detect we're on iOS 13.3 or later and b) update a flag on the service telling
it to stop using VOIP pushes for non-call messages. The API for requesting this
from the service does not yet exist.
2020-01-30 11:44:41 -08:00
Orta Therox
f1993e7c79 Convert to using cocoapods-binary for ZXing 2020-01-02 12:03:57 -08:00
Matthew Chen
fc023704c8 Revert accidental schema change. 2019-11-13 14:06:00 -03:00
Matthew Chen
010a8f70e9 Respond to CR. 2019-11-12 15:20:51 -03:00
Nora Trapp
6dd8d8b795 PR Feedback 2019-09-16 10:26:01 -07:00
Nora Trapp
a7b8060c53 Add appearance menu with system theme option 2019-09-16 10:26:00 -07:00
Nora Trapp
d72cd3b237 Initial support for building with Xcode 11 + iOS 13 SDK 2019-09-16 10:26:00 -07:00
Michael Kirk
1835c0d664 finish baselines for iphone 2019-09-04 18:21:40 -06:00
Michael Kirk
843339a150 perf test for message processing 2019-09-04 18:21:40 -06:00
Michael Kirk
967780b5e7 Run perf tests with real-world optimizations 2019-08-29 09:47:52 -06:00
Matthew Chen
e26a8e1bd4 Convert attachments to be any-only. 2019-06-24 15:34:02 -04:00
Michael Kirk
81b31f9640 update xcodeproj for xcode10.2 2019-04-04 13:44:42 -06:00
Matthew Chen
bf1f9e706a Exclude date/time and Xcode version info in debug builds to avoid churn. 2018-10-26 15:17:37 -04:00
Matthew Chen
7d727b7ac9 Modify proto wrapper builders to require required fields. 2018-10-01 09:08:23 -04:00
Matthew Chen
8ae200ac21 Fix build breakage around SignalCoreKit. 2018-10-01 09:07:40 -04:00
Matthew Chen
0125535d4d Pull out SignalCoreKit. 2018-10-01 09:06:40 -04:00
Matthew Chen
2ba642c9e9 Ensure fakes/mocks are debug-only. 2018-09-14 14:18:39 -04:00
Michael Kirk
6d92413931 WIP: Run SSK tests
This just configures them to run. They're very broken at the moment.
2018-08-31 12:35:32 -04:00
Michael Kirk
1658812102 TSan config 2018-07-30 12:31:21 -06:00
Michael Kirk
9e348f2a27 update ubsan 2018-07-19 13:41:15 -06:00
Michael Kirk
ef9a0880ae Fix analyzer warnings 2018-07-18 10:24:08 -06:00
Michael Kirk
77997639f5 Use CurrentAppContext instead of compiler flag to affect test behavior 2018-07-18 10:24:08 -06:00
Matthew Chen
6bc145ce3a Fix more build warnings. 2018-06-01 17:37:06 -04:00
Michael Kirk
00e5e1b0d6 Fixup some tests
// FREEBIE
2018-04-03 11:29:05 -04:00
Michael Kirk
468dedf581 Use debug configuration when building Signal for tests
allows proper step-through debugging of CocoaPods

// FREEBIE
2018-01-25 11:00:38 -05:00
Matthew Chen
6b51be75a5 Revert "Set preprocessor symbols for internal builds."
This reverts commit a91056c5e1.
2018-01-24 09:35:28 -05:00
Matthew Chen
a91056c5e1 Set preprocessor symbols for internal builds. 2018-01-24 09:34:23 -05:00
Michael Kirk
baa312f449 Timer button with duration label
// FREEBIE
2018-01-22 10:28:51 -05:00
Matthew Chen
4e15e9bf2c Add Signal "internal" scheme with DEBUG and INTERNAL flags set for signal project. 2018-01-18 13:19:01 -05:00
Matthew Chen
a21bc4f4b4 Convert SAE scheme to a shared scheme. 2018-01-18 13:19:01 -05:00
Michael Kirk
ddd2004824 track dyload time 2017-12-08 13:35:19 -05:00
Michael Kirk
a11d83187b WIP: Framework-friendly - compiles but crashes on launch
// FREEBIE
2017-11-29 13:58:27 -08:00
Matthew Chen
2d21e2ae2c Fix build warnings from XCode 9. 2017-11-09 02:52:44 -05:00
Michael Kirk
2e196e21c6 update third party dependencies
// FREEBIE
2017-10-06 17:56:29 -04:00
Michael Kirk
3eb90ba383 Disable singleton assert for tests
introduce a new build configuration, used by tests, which disables
singleton asserts

// FREEBIE
2017-07-11 16:36:50 -04:00
Michael Kirk
bb25d2beb6 IdentityKeyStore changes
1) Always accept keys from incoming messages

2) Block sending only if it's a recent change, or if always
   block is enabled

// FREEBIE

// FREEBIE
2017-05-24 18:01:24 -07:00
Michael Kirk
ce2ee759f8 Update to latest recommended xcode.proj settings
// FREEBIE
2017-05-05 14:26:29 -04:00
Matthew Chen
4a65a88512 Rework new call view.
// FREEBIE
2017-01-12 15:55:14 -05:00
Michael Kirk
647b2b37e9 WIP: WebRTC calling
* Ensure NotificationsManager has dependencies
    Otherwise it's easy to mess up the order of the required dependencies.
* move AccountManager into Environment, it's heavy to construct

// FREEBIE
2017-01-12 09:56:05 -05:00
Michael Kirk
1dd06a5e6c Fix registration flow / Keep push tokens in sync
* Separate registering an account from registering for push notifications
  * Allows us to complete registration without prompting user for
    notification settings.

UX Changes
----------
* Automatically keep push tokens in sync on startup.
  Push tokens *can* change, though they rarely do. It happens more often
  for people switching between appstore/beta builds.

  fixes #1174

* Show alert with registration failure
  * add secret 8-tap debug log gesture to registration flow

* Move registration to separate flow
  * don't see flash of inbox when first launching

* show useful error messages when given wrong code / no code

* remove background fetch
  We werent using it, but only relying on a side effect of it which is
  no longer necessary.

Code Changes
------------

* More registration logging.

* Install PromiseKit with carthage

  Our dependencies are not yet framework compatible, so we can't use
  cocoapods.

* Merge preferences util "category" into superclass.

  The immediate reason for this is Swift interop was assuming optional
  types were not optional, and exploding when a value was nil.

  This is clearer anyway, since we were treating it like a subclass, and
  it was the only thing using the class anyway.

* auto-genstrings now searches *.swift (and *.h, which was previously
  broken) for translateable strings.

// FREEBIE
2016-11-03 16:13:49 -04:00
Michael Kirk
cc2d47fbd3 Update protocol (#1315)
* Update to latest SignalServiceProtocol
* Show SignalServiceKit compiler warnings

// FREEBIE

* Update to latest signal protocol

// FREEBIE
2016-08-22 16:54:31 -04:00
Frederic Jacobs
c6d44e59e2 TextSecureKit Refactoring
- Using same clang format file for old and new files.
- Moving out all TextSecure code to allow other clients (OS X, iOS) to
  integrate easily TextSecure functionality.
- Use TextSecure API to signup.
2015-12-22 23:41:10 +01:00
Frederic Jacobs
bbde7cd2a8 iOS 9 Support
- Fixing size classes rendering bugs.
- Supporting native iOS San Francisco font.
- Quick Reply
- Settings now slide to the left as suggested in original designed
  opposed to modal.
- Simplification of restraints on many screens.
- Full-API compatiblity with iOS 9 and iOS 8 legacy support.
- Customized AddressBook Permission prompt when restrictions are
  enabled. If user installed Signal previously and already approved
  access to Contacts, don't bugg him again.
- Fixes crash in migration for users who installed Signal <2.1.3 but hadn't signed up
  yet.

- Xcode 7 / iOS 9 Travis Support
- Bitcode Support is disabled until it is better understood how exactly
  optimizations are performed. In a first time, we will split out the
  crypto code into a separate binary to make it easier to optimize the
  non-sensitive code. Blog post with more details coming.
- Partial ATS support. We are running our own Certificate Authority at
  Open Whisper Systems. Signal is doing certificate pinning to verify
  that certificates were signed by our own CA. Unfortunately Apple's App
  Transport Security requires to hand over chain verification to their
  framework with no control over the trust store. We have filed a radar
  to get ATS features with pinned certificates. In the meanwhile, ATS is
  disabled on our domain. We also followed Amazon's recommendations for
  our S3 domain we use to upload/download attachments. (#891)
- Implement a unified `AFSecurityOWSPolicy` pinning strategy accross
  libraries (AFNetworking RedPhone/TextSecure & SocketRocket).
2015-10-31 04:45:55 +01:00
Frederic Jacobs
57f86008d1 UX and Notifications fixes
- Removes large confusing UX bar and related assets. Replaced with UISwitch.
- Enhanced user experience for missed calls.
- Fixes issue where missed call would appear as incoming call in call log.
- Fixing issues where PushKit handler not called on launch.
2015-06-07 22:38:28 +02:00
Frederic Jacobs
cbdbcb2a1c Fixing build & signing settings for contributors
//FREEBIE
2014-10-07 01:05:18 +02:00
Frederic Jacobs
d05791e699 Moving away from custom HTTP stack 2014-10-06 01:28:45 +02:00