Age | Commit message (Collapse) | Author |
|
This commit adds explicit code to stop timers which are
connected to objects that are about to be deleted from
memory.
Test-Information:
./scons test=system passes on OS X 10.11.3.
Change-Id: I139314f3a223e3dc63b78b96be17d3ae53cd3de3
|
|
Test-Information:
Added unit test verifying the expected behavior. It passes
on OS X 10.11.2.
Change-Id: I7531e313bf03dbea276f133db042ce26e6da4a53
|
|
Test-Information:
Added unit test verifying the behavior.
Verified with multiple Swift instances in a MUC room that for
MUC PMs only the same full JID presence counts.
Change-Id: I08148221be34c3548f18da634586c828fd60feff
|
|
Test-Information:
Tested by transferring a file between two Swift instances.
Tested in WebKit chat views and in plain chat views.
Change-Id: Ie46cbd7bac8a36478f64b4557cf55926e6d4af37
|
|
Added missing signal disconnects in UserSearchController.
Test-Information:
All unit tests pass.
Change-Id: I13fba64d40f7999c3d2196ad2917ff22392f72b3
|
|
Test-Information:
Added test@example.com contact and removed it afterwards.
Without this patch Swift crashed. With the patch it does not
anymore.
Change-Id: I09e93340cb0a23291ab094a4cdb7c79ef719645a
|
|
Test-Information:
Tested going offline and signing out on OS X 10.10.5.
Change-Id: I307c318e8b22a62473df142e94d6895490ea2e2d
|
|
Virtual calls in ctors/dtors are tricky as it is not clear
what method is going to be called. By changing the code to
call the explicit method it is obvious.
This issue was raised by Clang Analyzer.
This commit also adds missing SWIFTEN_OVERRIDE annotations.
Test-Information:
Still compiles, tests pass and Clang Analyzer warning so gone.
Change-Id: I8096994277ad32933f992b9a11079c761d3ec619
|
|
These cases have been uncovered by Clang Analyzer as they
were called during some constructor. However, there is no
reason for them being virtual. They are never overridden in
a derived class.
Test-Information:
Unit tests still pass on OS X 10.10.5.
Change-Id: I90b5396a0dba971d9150c35f9107733f7f4637cd
|
|
This patch prevents SWIFTEN from logging in if provided with a missing PKCS12 file.
Before this patch, swiften would attempt a password based login using operator JID
and pwd of the P12 file when the P12 file was missing.
This patch fixes it by checking the certificate and not initialising session stream
and connection if the certificate is empty. It emits a disconnect with client
certificate load error. The string for certificate load error has been modified to
indicate a file or password invalid.
Test-information:
Tested by doing a certificate based bind to an XMPP server. Removed the PKCS#12
file and checked that swift gave a certificate error instead of doing pwd connect
Change-Id: I1869a13f1f7135b6606f7383cd4a0356ffd6931b
|
|
This commit has the default rule set the default color and
changes HighlightAction::highlightText_ symbol to
HighlightAction::highlightWholeMessage_ as it is more
descriptive of its use.
Test-Information:
Tested highlighting with the default rule set, and one with
a highlight color set for the chat rule.
Change-Id: Ic638e6347bdf6623ab5959341486233494f005f0
|
|
Swift allows dropping contacts from group chats or the roster
on a chat window to invite them or start an impromptu chat.
With this commit Swift will ignore drops which only contain
JIDs that are already part of the conversation.
Test-Information:
Tested the described behavior with roster and room contact
drags in anonymous and non-anonymous rooms.
Change-Id: I2f06082ea4bc1140210f9f1a165bdf276a130273
|
|
Test-Information:
Build and tests pass successfully on OS X 10.10.5.
Change-Id: I614586660796f9ef043156d09d998d39934a6eca
|
|
Ran ./scons doc=1 with Doxygen 1.8.10 and fix all mentioned
errors.
Test-Information:
Tested building of documentation on OS X 10.10.1 with
Doxygen 1.8.10.
Change-Id: I136054f457f9b3ff6b269f5ac32bf435450c017c
|
|
Before presence handling code was handled by both, the
ContactRosterItem in Swift and the PresenceOracle in Swiften.
The ContactRosterItem also considered the presence priority
for deciding what presence to show for a bare JID.
With this code all full or bare JID presence requests are
finally handled by the PresenceOracle. For bare JIDs it is
looked up to a presence of one of the available resources of
that JID regardless of the priorities.
Test-Information:
Adjusted tests according to above description and documentation
in PresenceOracle.
Change-Id: I972a4574f476cdf4d4b5593a035eb1c25ef2f8ba
|
|
When removing a contact, a XMPP client will not receive an explicit
unavailable presence stanza for the contact from the server. Because
of that Swift used to show removed contacts still with their old
presence in the Chats tab or the chat view.
With this patch, the PresenceOracle will flush all known presence
of a contact as soon as the JID is removed from the roster. An
unavailable presence will stored under the removed bare JID and
is emitted via the PresenceOracle::onPresenceChange signal.
Test-Information:
Added a unit test verifying this behavior. Tested the behavior with
two scenarios:
a) Account A and B adding each other and accepting the subscription
request. Starting a chat between A and B. After removing B in A's
account, B used to be shown as available in the chat view and the
Chats tab. With this patch B is shown as unavailable.
b) Account A and B adding each other and accepting the subscription
request. A removing B, and B removing A. After A adds B again,
B used to be shown with the old presence even before B accepted
the subscription request. This behavior is also fixed with this
patch, not showing B as online until B accepted the subscription
request.
Change-Id: Iba97d3bedd0ac962ea00b25a0d2ed6106ed55a55
|
|
While it is possible to add domain only JIDs to a user's roster
this is rarely the intention of a user. This patch adds the
requirement of a node-part for the address entered in the dialog
and presents a warning if the node-part is missing.
Test-Information:
Verified that a warning triangle is shown if there is no node-part
in the user entered address.
Change-Id: I38dd0b34ca7cb19b38bb7e1c457f7a8a9ef84028
|
|
The recent commit 582ca91 changed the behavior the binding
between chat sessions and the full JID of a chat contact.
This commit adds additional unit tests verifying the behavior
of implemented in 582ca91. This means a chat session binds to
the full JID of an incoming message only if the message has
a non-empty body text or is a 'typing' chat state notification.
It also tests the rebind to another resource if a 'typing'-CSN
or a body message is received from that resource.
Test-Information:
All unit tests pass on OS X 10.10.5.
Change-Id: Id3f25d8a3ff78c407ed4b2a97bd421dc4aa58688
|
|
With this commit a ChatController is only bound to a full JID
of a contact, if the incoming message of the contact has a
non-empty body or is a 'typing' chat state notification.
This avoids random binding to an arbitrary resource of a contact,
that has multiple online resources and responds with delivery
receipts.
Test-Information:
Tested with a conversation of a one resource account (A) to a
two resource account (B). Sending two messages to B, the first
used to go to both resources, then A would bind to the full
JID and the second message would only go to one resource.
With this fix all messages go to both resources, i.e. are
send to the bare JID, until one resource of B replies. This
binds the controller at A to the full JID of the reply of B.
Change-Id: I8d9321a4226ab798e1196351ad087990d5dff8c3
|
|
Test-Information:
Still builds and unit tests pass.
Change-Id: I472491184ba10ec3bdbd4cb94613768639ac6f57
|
|
The moving of our sound playing to our message highlighting code
resulted in non-message events not having sound notifications played
anymore. This commit fixes this issue for incoming file-transfers,
by playing the default message received sound as long as sounds are
not globally disabled in Swift.
Test-Information:
Tested on OS X 10.9.5 with Qt 5.4.2, by exchanging files and
messages between two Swift instances.
Change-Id: Ie09473efeef8366b76f6f7b59cc941fe6a0ad8f0
|
|
Test-Information:
Still compiles, the menitoned warnings in Swift are gone and unit
tests pass.
Change-Id: I8e113e7faf2e9273b4741f18c19e35e1b7bc7661
|
|
The MUC bookmark editor window opened from the chat window would
always show a new bookmark. With this commit it will show the
existing bookmark if it exists. Otherwise it will show a new
bookmark.
Test-Information:
Tested this behavior by creating a bookmark, changing name and
nickname to different values and verified that the bookmark dialog
for this room, opened from its chat view, would show the existing
bookmark.
Change-Id: I6766253ce11be271016473dff1105369482e73df
|
|
Test-Information:
Tested that the bookmarks context menu still works after an
offline/online cycle.
Change-Id: I9248b7405a6a09bc813c6590e0f2f9a4ed92acb3
|
|
Test-Information:
Tested by searching at some services and checked that they
are present in the combo box after a Swift restart.
Change-Id: Ia30d932f20447f44e458af3b32a38665872da025
|
|
The 'Clear all' button in the file transfer overview window
was only present in the UI, without any logic behind. That's fixed now.
Test-Information:
Send a file in between two Swift instances. Verified that the button is
enabled/disabled at appropriate times and works as expected if pressed.
Change-Id: Ib92621cba479683ade8d815ce5ace9768449a499
|
|
Test-Information:
Send a file from one Swift instance to another. The UX is similar to
that of a MUC invite, clicking the notice will bring the relevant chat
in front.
Change-Id: Ief3cd7371ae01b2b38b6d1af36189df961eacef4
|
|
Show the user the collection of possible file transfer candidates
after pressing the 'Start' button for a file transfer. Previously the
buttons remained in the UI giving no feedback to the user at all. If
no UPnP/NAT-PMP device is present, it this stage can take a couple
seconds to timeout and move on to the next stage.
Furthermore this commit adds documentation for the different states
in the ChatWindow::FileTransferState enum.
Test-Information:
Tested this in a network environment with no UPnP/NAT-PMP device
between two Swift instances.
Change-Id: I76ec6e641a2acd683938fe2d8f542d023a244145
|
|
Add a hidden option to enable single sign on. When that is enabled, ensure that
the user only enters the domain name and that the JID is constructed from the
Windows log-on credentials.
Test-information:
Tested on Windows.
Unit tests pass.
Change-Id: Ia5592a3893f0807a3801b515c8fcddb580c9ef8d
|
|
Connect FileTransfer::onStateChanged signal earler to slot in
FileTransferController, so the slot will be called for state changes
that occur before a transfer started.
Test-Information:
Tested with two Swift instances and cancelling the sender side and
receiver side. Without this patch the receiver side UI does not change
if the receiver side cancels the transfer.
Change-Id: I1d4d3e1ac78689a16120bfa9ccdec30ab1191ee3
|
|
Test-Information:
Not applicable.
Change-Id: I1620be8361c1b70b365011ac7f0ec6ac11dbe76f
|
|
Rooms in the recent chats list and bookmarks can be entered by double
click if the user is offline. They are joined when the user goes
online again.
Test-Information:
Tested by going offline via the presence menu and then entering rooms
via recent chats and bookmarks.
Change-Id: I8c3eadd29c3353c2cf5f04f53b71ef7ad67a5c05
|
|
Previously QtVCardWidget would work on a shared copy of a VCard and
modify the shared version. Now when setting the vCard on the widget
it creates its own copy and works on that.
The ProfileController holds a reference to the VCard it sets on the UI.
If the server rejects an update it can reset the UI to this VCard.
Test-Information:
Tested against a XMPP server that rejects all vCard updates
(mod_readonly).
Change-Id: Iaa8eed6406f2dc6cc7ac5434194a7dae4f879b33
|
|
This patch adds an option 'disconnectOnCardRemoval' to system-settings.xml which
when set to false allows the user's session to stay connected if the smartcard
is removed. The default value of this option is true if it is not specified.
Test-information:
Tested on Windows using NIST smartcards.
Tested true and false values set for this option in the file and also when
option is not specified (true).
Unit tests pass.
Change-Id: I7e421b4153ff7d3000f41999add20d339076c96e
|
|
This patch creates and passes on an optional boost::system::error_code variable
which contains more error info which can be displayed in case of an error.
Test-information:
Tested using WIP code on Windows.
Change-Id: I285b8aec5e9c00d3a8e0d8cc0d5e7b4c5d94c099
|
|
HighlightRule did not consider keywords in its isMatch() routine.
MUCController only triggered possible HighlightActions if it was a
direct 1-to-1 MUC message or an impromptu chat message.
Both issues are fixed.
Additionally fixed the HighlightRuleTest. It had some wrong assertions
related to rules being case insensitive by default and keywords match
inside longer words by default.
Test-Information:
Tested with a highlight rule that highlights text and tested that
sound actions are executed if the text is highlighted. Additionaly
verified that other behaviour (own nick mentions, direct 1-to-1 messages)
have their potential sound actions still executed.
Change-Id: Ia922a1ff38c66f6458d28a18a8cdde10e821f83d
|
|
Some servers have very restrictive TLS stacks that respond badly
to a bug in the SChannel TLS implementation, meaning that TLS
has to be limited to 1.0.
Add ClientOptions.tlsOptions. This is a method of passing options into
the TLS stack. It's currently
only used for the TLS 1.0 workaround in SChannel, but we might reasonably
expose other options in the future, such as limiting cypher suites.
Disables use of SSLv3 for SChannel
Also updates the coding style in SchannelContext a bit.
Test-Information:
Compiles on both OS X and Windows(SChannel). OS X doesn't show the new
option. Windows shows it, and remembers it between logins. Not tested
against a server requiring 1.0 only, but a previous hack with the
same approach was tested.
Change-Id: I1e7854d43811fd173f21f98d4dc3915fc7a4b322
|
|
This modifies the feature detection in the ChatController to try to use
the common features of all available resources feature detection if no
full JID has been bound to the chat yet.
Test-Information:
Tested with two Swift instances. Tested
a) the initial chat start case and,
b) the offline/online.
In case a) Swift used to initally show a yellow warning about no support
for message receipts. This warning is gone now.
In case b), after a user gone offline and online again in a running chat,
Swift used to show a warning about missing support for message receipts.
This warning is gone now.
Change-Id: I7a769fde8d14847b180503aeaa58280c572d81b3
|
|
Label the window for adding bookmarks as "Add Bookmark Details".
Allow modification of bookmarks from the cog menu in the chat window
and adjust the context menu item accordingly.
Test-Information:
Tested the bookmarks section of the "Chats" tab in the contact list
and the UX scenario using the cog menu that it works as expected.
Tested it on OS X 10.9.5 with Qt 5.4.1.
Change-Id: I80daf339fc86506db3d863decae4bcd892e3ea88
|
|
Test-Information:
None.
Change-Id: If02bc8bf250b129522bbeb841f699ccea9721422
|
|
Change-Id: I9c8692e0c4f36877591385a7580cb8a2107bd68f
|
|
Test-Information:
None.
Change-Id: I022a65c64e73e1ae70ee21673fa5cce7afbe51a6
|
|
When the user tries to enter a blocked room, we now show a warning
notice and describing how the room can be unblocked. Swift will not
send the joining presence when trying to enter a blocked room.
Test-Information:
Tested on Mac OS X 10.9.5 against a popular open source server and its
MUC and Blocking Command implementation.
Change-Id: I875db056f21f97845c5a9a43167b0f2a16bdaa36
|
|
The tests have been adjusted so a colour is set in their highlight
actions.
Test-Information:
Tested with a "own nick" highlight rule with a "No highlight" action
and one with highlights colours set. The cases now work as expected.
Added a unit test that checks that no highlighting happens when no
colour is specified.
Change-Id: Ied48d8c2e033531c1b0532348b9380e1bd884b44
|
|
Test-Information:
Warnings went away in another project using these headers
Change-Id: I336925153a4a549bb33cc977c6a483ec81cd1ff6
|
|
Old behavior:
MUC group messages are matched against the nickname as sender.
MUC 1-to-1 messages and classic 1-to-1 messages are matched against the
display name as sender.
New behavior:
MUC group messages are matched against the nickname as sender.
MUC 1-to-1 messages are matched against the nickname as sender.
Classic 1-to-1 messages are matched against the bare JID as sender.
Test-Information:
Tested on Mac OS X 10.9.5 that a chat rule matching a nickname string
and a rule matching a full JID are highlighted correctly.
Change-Id: Icaee2c946e34fceb6b1d40561674030740555de1
|
|
Qt models are not owned by their widgets. They must be deleted manually
or a parent has to be specified for them which will take care of deletion.
The same goes for delegates and their views.
Test-Information:
Tested with Clang's leak sanitizer (part of address sanitizer). The
leak reports for the respective lines are gone with this fix.
Change-Id: Ia7407cb20ae9e4ccc2e1cf48c88877c2f87352e1
|
|
Test-Information:
None required.
Change-Id: If267201ea28e894a9f79335972b71611b0058912
|
|
The class connects to SettingsProvider::onSettingChanged in its c-tor
but never disconnects from the signal. When an instance is deleted and
the signal is called afterwards it will call the method which will try
to access class members which have already been deleted.
Test-Information:
Tested on OS X 10.9.5. ASAN reported it sometimes on exit. Have not
been able to reproduc it anymore with this fix.
Change-Id: I7f1d815dca87f84a4ae93a5455307e261a1ee329
|
|
Messages received from a MUC bare JID in a MUC have been rendered as
user messages in the past. They are now rendered as system messages.
Test-Information:
Tested with a MUC component that sends a bare message on login.
Change-Id: I9a548ec9b81db8ba329182e08446d72c3518c7cb
|