platform/upstream/evolution-data-server.git
10 years agoBug 719307 - trust-prompt: Squash a compiler warning
Colin Walters [Wed, 4 Dec 2013 14:10:25 +0000 (09:10 -0500)]
Bug 719307 - trust-prompt: Squash a compiler warning

gcc tells us this could be uninitialized, which will only happen if we
fail to base64 decode.

10 years agoMoved all libecal/client tests to have a namespace
Tristan Van Berkom [Wed, 4 Dec 2013 08:01:37 +0000 (17:01 +0900)]
Moved all libecal/client tests to have a namespace

Avoid naming conflicts when installing tests into ${pkglibexecdir}/installed-tests

10 years agoMoved all libebook/client tests to have a namespace
Tristan Van Berkom [Wed, 4 Dec 2013 08:00:37 +0000 (17:00 +0900)]
Moved all libebook/client tests to have a namespace

Avoid naming conflicts when installing tests into ${pkglibexecdir}/installed-tests

10 years agotests: Fix potential g_object_unref(NULL) calls in libebook tests
Philip Withnall [Fri, 29 Nov 2013 08:58:40 +0000 (08:58 +0000)]
tests: Fix potential g_object_unref(NULL) calls in libebook tests

Found by scan-build.

https://bugzilla.gnome.org/719533

10 years agolibedata-cal: Fix a potential g_strstrip(NULL) call
Philip Withnall [Fri, 29 Nov 2013 08:56:57 +0000 (08:56 +0000)]
libedata-cal: Fix a potential g_strstrip(NULL) call

If the calendar contained any attendees _not_ prefixed with ‘mailto:’,
the text variable would be NULL, and would cause an assertion failure in
g_strstrip().

Found by scan-build.

https://bugzilla.gnome.org/719533

10 years agolibecal: Refactor system timezone key file parsing code
Philip Withnall [Fri, 29 Nov 2013 08:51:11 +0000 (08:51 +0000)]
libecal: Refactor system timezone key file parsing code

Previously, the code could call g_strstrip(NULL) if a line started with
a quotation mark but didn’t end with one, e.g.:
    MyKey="some-unbalanced-value

The code now ignores unbalanced quotation marks, returning the odd one
in the value rather than crashing (or stripping it).

Found by scan-build.

https://bugzilla.gnome.org/719533

10 years agoEBookBackendCache: Remove an unnecessary NULL check.
Philip Withnall [Tue, 3 Dec 2013 20:26:57 +0000 (15:26 -0500)]
EBookBackendCache: Remove an unnecessary NULL check.

A newly-created EContact is never NULL, so the check is redundant.
It was confusing the static analyser.

https://bugzilla.gnome.org/719533

10 years agoCamelPOP3Folder: Fix a potential g_object_unref(NULL) call
Philip Withnall [Tue, 3 Dec 2013 19:55:29 +0000 (14:55 -0500)]
CamelPOP3Folder: Fix a potential g_object_unref(NULL) call

If all the branch conditions in this function evaluate to FALSE, the
stream is never set, and hence g_object_unref(NULL) is called on exiting
the function.

Found by scan-build.

https://bugzilla.gnome.org/719533

10 years agoCamelTransport: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 13:32:16 +0000 (08:32 -0500)]
CamelTransport: Port to GTask.

10 years agoCamelSubscribable: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 13:45:32 +0000 (08:45 -0500)]
CamelSubscribable: Port to GTask.

10 years agoCamelStore: Port to GTask.
Matthew Barnes [Sun, 1 Dec 2013 17:05:05 +0000 (12:05 -0500)]
CamelStore: Port to GTask.

10 years agoCamelSession: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 20:40:41 +0000 (15:40 -0500)]
CamelSession: Port to GTask.

10 years agoCamelService: Port to GTask.
Matthew Barnes [Tue, 3 Dec 2013 16:05:24 +0000 (11:05 -0500)]
CamelService: Port to GTask.

10 years agoCamelSasl: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 19:56:38 +0000 (14:56 -0500)]
CamelSasl: Port to GTask.

10 years agoCamelOfflineFolder: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 17:00:45 +0000 (12:00 -0500)]
CamelOfflineFolder: Port to GTask.

10 years agoCamelNetworkService: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 20:01:42 +0000 (15:01 -0500)]
CamelNetworkService: Port to GTask.

10 years agoCamelMimePart: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 16:34:50 +0000 (11:34 -0500)]
CamelMimePart: Port to GTask.

10 years agoCamelFolder: Port to GTask.
Matthew Barnes [Tue, 3 Dec 2013 14:31:02 +0000 (09:31 -0500)]
CamelFolder: Port to GTask.

10 years agoCamelDataWrapper: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 15:38:59 +0000 (10:38 -0500)]
CamelDataWrapper: Port to GTask.

10 years agoCamelCipherContext: Port to GTask.
Matthew Barnes [Mon, 2 Dec 2013 15:03:25 +0000 (10:03 -0500)]
CamelCipherContext: Port to GTask.

10 years agoCamelSession: Remove all asynchronous class methods.
Matthew Barnes [Mon, 2 Dec 2013 20:27:56 +0000 (15:27 -0500)]
CamelSession: Remove all asynchronous class methods.

For consistency with CamelStore, CamelFolder, etc.

10 years agoCamelSasl: Remove all asynchronous class methods.
Matthew Barnes [Mon, 2 Dec 2013 18:03:03 +0000 (13:03 -0500)]
CamelSasl: Remove all asynchronous class methods.

For consistency with CamelStore, CamelFolder, etc.

10 years agoCamelOfflineFolder: Remove all asynchronous class methods.
Matthew Barnes [Mon, 2 Dec 2013 16:40:39 +0000 (11:40 -0500)]
CamelOfflineFolder: Remove all asynchronous class methods.

For consistency with CamelStore, CamelFolder, etc.

10 years agoCamelMimePart: Remove all asynchronous class methods.
Matthew Barnes [Mon, 2 Dec 2013 15:48:25 +0000 (10:48 -0500)]
CamelMimePart: Remove all asynchronous class methods.

For consistency with CamelStore, CamelFolder, etc.

10 years agoCamelDataWrapper: Remove all asynchronous class methods.
Matthew Barnes [Mon, 2 Dec 2013 15:12:28 +0000 (10:12 -0500)]
CamelDataWrapper: Remove all asynchronous class methods.

For consistency with CamelStore, CamelFolder, etc.

10 years agoCamelCipherContext: Remove all asynchronous class methods.
Matthew Barnes [Mon, 2 Dec 2013 14:29:03 +0000 (09:29 -0500)]
CamelCipherContext: Remove all asynchronous class methods.

For consistency with CamelStore, CamelFolder, etc.

10 years agoInstall test vcards if --enable-installed-tests is configured.
Tristan Van Berkom [Tue, 3 Dec 2013 10:10:44 +0000 (19:10 +0900)]
Install test vcards if --enable-installed-tests is configured.

Also, load the vcards from ${pkglibexecdir}/installed-tests/vcards
in the case that TEST_INSTALLED_SERVICES is specified

10 years agoBetter handling of the TEST_INSTALLED_SERVICES variable
Tristan Van Berkom [Tue, 3 Dec 2013 09:48:17 +0000 (18:48 +0900)]
Better handling of the TEST_INSTALLED_SERVICES variable

Don't set the encapsulated environment variables when running installed.

10 years agotest-server-utils: Only create the work directory when running with `make check'
Tristan Van Berkom [Mon, 2 Dec 2013 15:23:11 +0000 (00:23 +0900)]
test-server-utils: Only create the work directory when running with `make check'

10 years agoFinal fix for eds-installed-tests.m4
Tristan Van Berkom [Mon, 2 Dec 2013 14:02:03 +0000 (23:02 +0900)]
Final fix for eds-installed-tests.m4

  o Add echo "Installing test.meta" so we can see it in build output

  o Fix META_DIRECTORY to be ${datadir}/installed-tests
    instead of ${datadir}/share/installed-tests

10 years agoFixed eds-installed-tests.m4 to consider DESTDIR.
Tristan Van Berkom [Mon, 2 Dec 2013 12:59:41 +0000 (21:59 +0900)]
Fixed eds-installed-tests.m4 to consider DESTDIR.

10 years agoUse EDS_INSTALLED_TESTS macros to install tests
Tristan Van Berkom [Mon, 2 Dec 2013 09:03:55 +0000 (18:03 +0900)]
Use EDS_INSTALLED_TESTS macros to install tests

This commit adds the usage of EDS_INSTALLED_TESTS and a few lines
to all the test directories which can run installed.

10 years agoAdded m4/eds-installed-tests.m4 with the EDS_INSTALLED_TESTS macro
Tristan Van Berkom [Mon, 2 Dec 2013 09:03:18 +0000 (18:03 +0900)]
Added m4/eds-installed-tests.m4 with the EDS_INSTALLED_TESTS macro

The EDS_INSTALLED_TESTS macro prepares EDS for installed tests
and adds the --enable-installed-tests option (off by default).

Also it defines the EDS_INSTALLED_TESTS_RULE which can be used
in test makefiles.

10 years agoe-test-server-utils.c: Behave differently when running installed.
Tristan Van Berkom [Mon, 2 Dec 2013 10:54:39 +0000 (19:54 +0900)]
e-test-server-utils.c: Behave differently when running installed.

When running installed, use mkstemp to generate a unique addressbook
source uid.

10 years agoETestServerFixture: Fixed fixture futher for finalization.
Tristan Van Berkom [Mon, 2 Dec 2013 06:46:59 +0000 (15:46 +0900)]
ETestServerFixture: Fixed fixture futher for finalization.

Last related commit did not fix the problem correctly, now care
is taken to ensure there are no races while checking for client
and registry finalization, as the clients tend not only to finalize
asynchronously, but choose to do so in a different thread in which
they were created.

10 years agocamel_subscribable_folder_is_subscribed: Remove lock.
Matthew Barnes [Sun, 1 Dec 2013 14:54:22 +0000 (09:54 -0500)]
camel_subscribable_folder_is_subscribed: Remove lock.

Don't see any reason to lock here.  Providers ought to be able to handle
this concurrently with other methods.  Let any side-effects reveal them-
selves so we can fix them or document them.

10 years agocamel_store_get_inbox_folder_sync: Remove lock.
Matthew Barnes [Sun, 1 Dec 2013 14:43:25 +0000 (09:43 -0500)]
camel_store_get_inbox_folder_sync: Remove lock.

Don't see any reason to lock here.  Providers ought to be able to handle
this concurrently with other methods.  Let any side-effects reveal them-
selves so we can fix them or document them.

10 years agoCamelService: Use CamelAsyncClosure.
Matthew Barnes [Sun, 1 Dec 2013 14:04:57 +0000 (09:04 -0500)]
CamelService: Use CamelAsyncClosure.

Relinquish its internal 'AsyncClosure' struct, which is identical.

10 years agoAdd CamelAsyncClosure.
Matthew Barnes [Sun, 1 Dec 2013 14:01:43 +0000 (09:01 -0500)]
Add CamelAsyncClosure.

Identical to EAsyncClosure in libedataserver, for use in Camel.

10 years agoUpdate Chinese simplified translation
eternalhui [Sun, 1 Dec 2013 14:19:28 +0000 (22:19 +0800)]
Update Chinese simplified translation

10 years agotest-client-cursor-operations.c: Removed bogus test for invalid sexp
Tristan Van Berkom [Sun, 1 Dec 2013 06:43:45 +0000 (15:43 +0900)]
test-client-cursor-operations.c: Removed bogus test for invalid sexp

No search expression is invalid anymore.

10 years agotest-client-custom-summary: Added test for the 'x-evolution-any-field' NULL special...
Tristan Van Berkom [Sun, 1 Dec 2013 05:40:24 +0000 (14:40 +0900)]
test-client-custom-summary: Added test for the 'x-evolution-any-field' NULL special case

x-evolution-any-field with a NULL value (or byte) means 'get all contacts'.

10 years agoEBookSqlite: Improved performance and simplified code
Tristan Van Berkom [Sat, 30 Nov 2013 06:40:11 +0000 (15:40 +0900)]
EBookSqlite: Improved performance and simplified code

After much discussion on sqlite-users mailing list, I found
the real, correct technique for querying our multi attribute
values on the auxiliary tables.

  o Removed the crack query optimizer

  o Added the index to aux_table.uid (this is important
    to optimize contact inserts, as we have to delete
    all aux_table.uid entries in the case of a replace).

  o Drop the LEFT JOIN statements in favor of

    JOIN 'folder_id_email_list' AS 'email_list' ON +email_list.uid = summary.uid

    This does not create exponentially huge data sets because of the ON
    statement, the '+' ensures that email_list.uid is ineligable for
    indexing, since we want to use email_list.value indexes later on.

10 years agoBug #715057 - Weather calendar is using Fahrenheit units as default
Fabiano Fidêncio [Wed, 27 Nov 2013 21:37:35 +0000 (22:37 +0100)]
Bug #715057 - Weather calendar is using Fahrenheit units as default

10 years agoRemove unused camel_session_get_main_context().
Matthew Barnes [Sat, 30 Nov 2013 13:17:42 +0000 (08:17 -0500)]
Remove unused camel_session_get_main_context().

10 years agoRemove unused camel_service_get_session().
Matthew Barnes [Sat, 30 Nov 2013 13:07:58 +0000 (08:07 -0500)]
Remove unused camel_service_get_session().

10 years agoAvoid camel_service_get_session().
Matthew Barnes [Sat, 30 Nov 2013 13:07:35 +0000 (08:07 -0500)]
Avoid camel_service_get_session().

Use camel_service_ref_session() instead.

10 years agotest-server-utils: Fixed to wait for clients to finalize
Tristan Van Berkom [Sat, 30 Nov 2013 06:35:10 +0000 (15:35 +0900)]
test-server-utils: Fixed to wait for clients to finalize

Previously we would get sporadic errors from tests when clients
do not finalize synchronously in response to g_object_unref().

However this syncrhonous finalization is not really mandated by
the API, so instead we give them a grace period to finalize and
error out if they fail to finalize eventually.

10 years agoFix build break in e-data-book-factory.c.
Matthew Barnes [Fri, 29 Nov 2013 20:22:23 +0000 (15:22 -0500)]
Fix build break in e-data-book-factory.c.

Missing #include <locale.h>

10 years agoCamelIMAPXSettings: Remove unused "mobile-mode" property.
Matthew Barnes [Thu, 28 Nov 2013 17:23:13 +0000 (12:23 -0500)]
CamelIMAPXSettings: Remove unused "mobile-mode" property.

Not used by Evolution and not clear what this mode even means.

Removing it makes a bunch of confusing complexity drop out, which is
justication enough for me.

10 years agoCamelPOP3Settings: Remove unused "batch-fetch-count" property.
Matthew Barnes [Thu, 28 Nov 2013 17:08:01 +0000 (12:08 -0500)]
CamelPOP3Settings: Remove unused "batch-fetch-count" property.

Was tied to "mobile mode", no longer used.

10 years agoCamelPOP3Settings: Remove unused "mobile-mode" property.
Matthew Barnes [Thu, 28 Nov 2013 17:05:19 +0000 (12:05 -0500)]
CamelPOP3Settings: Remove unused "mobile-mode" property.

Not used by Evolution and not clear what this mode even means.

Removing it makes a bunch of confusing complexity drop out, which is
justification enough for me.

10 years agoCamelFolder: Remove unused fetch_messages_sync() method.
Matthew Barnes [Thu, 28 Nov 2013 16:10:33 +0000 (11:10 -0500)]
CamelFolder: Remove unused fetch_messages_sync() method.

The method is not used by Evolution and was partially broken anyway.
The boolean return value was overloaded to mean both whether an error
occurred AND whether there were more messages to fetch.  That's more
than two possible states and would have required an additional "out"
parameter to clarify, but I'm not going to bother with it.

10 years agoCamelFolder: Remove all asynchronous class methods.
Matthew Barnes [Thu, 28 Nov 2013 14:31:07 +0000 (09:31 -0500)]
CamelFolder: Remove all asynchronous class methods.

Rationale:

When I originally added Camel's asynchronous API, I thought providers
could choose to override the synchronous or asynchronous class methods.

Years later, turns out the asynchronous methods were never overridden,
and it wouldn't have worked anyway.  The asynchronous methods by default
invoke an associated synchronous function from a worker thread, but many
of Camel's synchronous functions do extra processing around invoking the
synchronous class method.  camel_store_get_folder_sync() is an example.

If a provider tried to implement synchronous methods in terms of the
asynchronous methods, then that extra processing in the synchronous
functions could potentially get skipped.

Removing the asynchronous class methods should help clarify how Camel
providers are intended to be written.

The removal should have no impact on existing Camel providers, all of
which implement only the synchronous class methods.  I've even padded
the CamelFolderClass struct to keep the binary interface intact.

10 years agoCamelSubscribable: Remove all asynchronous class methods.
Matthew Barnes [Thu, 28 Nov 2013 13:49:38 +0000 (08:49 -0500)]
CamelSubscribable: Remove all asynchronous class methods.

Rationale:

When I originally added Camel's asynchronous API, I thought providers
could choose to override the synchronous or asynchronous class methods.

Years later, turns out the asynchronous methods were never overridden,
and it wouldn't have worked anyway.  The asynchronous methods by default
invoke an associated synchronous function from a worker thread, but many
of Camel's synchronous functions do extra processing around invoking the
synchronous class method.  camel_store_get_folder_sync() is an example.

If a provider tried to implement synchronous methods in terms of the
asynchronous methods, then that extra processing in the synchronous
functions could potentially get skipped.

Removing the asynchronous class methods should help clarify how Camel
providers are intended to be written.

The removal should have no impact on existing Camel providers, all of
which implement only the synchronous class methods.  I've even padded
the CamelSubscribableInterface struct to keep the binary interface
intact.

10 years agoCamelTransport: Remove all asynchronous class methods.
Matthew Barnes [Thu, 28 Nov 2013 13:35:00 +0000 (08:35 -0500)]
CamelTransport: Remove all asynchronous class methods.

Rationale:

When I originally added Camel's asynchronous API, I thought providers
could choose to override the synchronous or asynchronous class methods.

Years later, turns out the asynchronous methods were never overridden,
and it wouldn't have worked anyway.  The asynchronous methods by default
invoke an associated synchronous function from a worker thread, but many
of Camel's synchronous functions do extra processing around invoking the
synchronous class method.  camel_store_get_folder_sync() is an example.

If a provider tried to implement synchronous methods in terms of the
asynchronous methods, then that extra processing in the synchronous
functions could potentially get skipped.

Removing the asynchronous class methods should help clarify how Camel
providers are intended to be written.

The removal should have no impact on existing Camel providers, all of
which implement only the synchronous class methods.  I've even padded
the CamelTransportClass struct to keep the binary interface intact.

10 years agoCamelStore: Remove all asynchronous class methods.
Matthew Barnes [Thu, 28 Nov 2013 01:48:47 +0000 (20:48 -0500)]
CamelStore: Remove all asynchronous class methods.

Rationale:

When I originally added Camel's asynchronous API, I thought providers
could choose to override the synchronous or asynchronous class methods.

Years later, turns out the asynchronous methods were never overridden,
and it wouldn't have worked anyway.  The asynchronous methods by default
invoke an associated synchronous function from a worker thread, but many
of Camel's synchronous functions do extra processing around invoking the
synchronous class method.  camel_store_get_folder_sync() is an example.

If a provider tried to implement synchronous methods in terms of the
asynchronous methods, then that extra processing in the synchronous
functions could potentially get skipped.

Removing the asynchronous class methods should help clarify how Camel
providers are intended to be written.

The removal should have no impact on existing Camel providers, all of
which implement only the synchronous class methods.  I've even padded
the CamelStoreClass struct to keep the binary interface intact.

10 years agoCamelService: Remove all asynchronous class methods.
Matthew Barnes [Wed, 27 Nov 2013 21:49:11 +0000 (16:49 -0500)]
CamelService: Remove all asynchronous class methods.

Rationale:

When I originally added Camel's asynchronous API, I thought providers
could choose to override the synchronous or asynchronous class methods.

Years later, turns out the asynchronous methods were never overridden,
and it wouldn't have worked anyway.  The asynchronous methods by default
invoke an associated synchronous function from a worker thread, but many
of Camel's synchronous functions do extra processing around invoking the
synchronous class method.  camel_store_get_folder_sync() is an example.

If a provider tried to implement synchronous methods in terms of the
asynchronous methods, then that extra processing in the synchronous
functions could potentially get skipped.

Removing the asynchronous class methods should help clarify how Camel
providers are intended to be written.

The removal should have no impact on existing Camel providers, all of
which implement only the synchronous class methods.  I've even padded
the CamelServiceClass struct to keep the binary interface intact.

10 years agoEBookSqlite: Fixed a transaction which wanted to read, but asked to write.
Tristan Van Berkom [Fri, 29 Nov 2013 18:33:14 +0000 (03:33 +0900)]
EBookSqlite: Fixed a transaction which wanted to read, but asked to write.

10 years agoEBookClientCursor: Keep a strong reference to the client
Tristan Van Berkom [Fri, 29 Nov 2013 18:12:44 +0000 (03:12 +0900)]
EBookClientCursor: Keep a strong reference to the client

When finalizing a cursor, it is important to have access
to the direct backend available so that it can be asked
to delete the direct access cursor instance.

For this reason EBookClientCursor must keep the EBookClient alive,
EBookClient now exposes a hidden API (not in the header file)
to allow the EBookClientCursor to ask the EBookClient to delete
the cursor on the EBookClientCursor's behalf.

Ugly, but works.

10 years agoEBookBackend: Fixed ref-counting bug in e_book_backend_set_locale()
Tristan Van Berkom [Fri, 29 Nov 2013 18:11:19 +0000 (03:11 +0900)]
EBookBackend: Fixed ref-counting bug in e_book_backend_set_locale()

10 years agoEDataBookFactor / EDataBook: Migrated locale handling to EDataBookFactory
Tristan Van Berkom [Fri, 29 Nov 2013 16:19:04 +0000 (01:19 +0900)]
EDataBookFactor / EDataBook: Migrated locale handling to EDataBookFactory

The EDataBookFactory is the server side singleton, this is the right
place to handle locale changes, now each EDataBook is set into the
correct locale by the factory, when books are created, and when the
locale change notification arrives.

10 years agoRevert "test-server-utils: Disable the cache-reaper in the test environment"
Tristan Van Berkom [Fri, 29 Nov 2013 16:19:30 +0000 (01:19 +0900)]
Revert "test-server-utils: Disable the cache-reaper in the test environment"

This reverts commit fcdad7cc7779692d6a63d194c55ed3ac1bca0f3c.

10 years agoUpdated Spanish translation
Daniel Mustieles [Fri, 29 Nov 2013 17:16:17 +0000 (18:16 +0100)]
Updated Spanish translation

10 years agoFixed test-client-cursor-create
Tristan Van Berkom [Fri, 29 Nov 2013 14:50:13 +0000 (23:50 +0900)]
Fixed test-client-cursor-create

There is no such thing anymore as an invalid query for the cursor.

10 years agoEBookClient: Fixed e_book_client_cursor_get_contact_alphabetic_index()
Tristan Van Berkom [Fri, 29 Nov 2013 13:02:50 +0000 (22:02 +0900)]
EBookClient: Fixed e_book_client_cursor_get_contact_alphabetic_index()

Fixed the above function to not pass NULL to e_collator_get_index()

10 years agotest-client-uid-only-view: Fixed test
Tristan Van Berkom [Fri, 29 Nov 2013 12:48:58 +0000 (21:48 +0900)]
test-client-uid-only-view: Fixed test

Now we aren't filtering by fields of interest for contact changes,
so disabled the part of the test which adds a contact.

This can be reverted if we so decide to filter it manually
in EDataBookView

10 years agotest-client-revision-view: Disabled part of the test.
Tristan Van Berkom [Fri, 29 Nov 2013 12:25:24 +0000 (21:25 +0900)]
test-client-revision-view: Disabled part of the test.

Initial changes are filtered by fields-of-interest, however
change notifications are not filtered, this is because it's actually
faster to just send the vcard as is.

10 years agotest-client-custom-summary: Added various tests
Tristan Van Berkom [Sat, 23 Nov 2013 13:36:18 +0000 (22:36 +0900)]
test-client-custom-summary: Added various tests

  o Added test for the underscore

    Before we used to only escape the '%' character in LIKE statements,
    but SQLite also recognizes the '_' as a single char wildcard and
    needs escaping.

    This test ensures that the underscore is properly handled.

  o Added query test which ORs the same field

    This helps to test the query optimizer in EBookBackendSqlite, which
    will optimize a query which ORs two multi attribute fields (like
    E_CONTACT_EMAIL).

  o Added tests for the NOT queries

  o Added tests for NOT, AND and OR and as well as some nested AND / OR
    tests which trigger the query optimizer in EBookBackendSqlite

  o Fix expectations for phone number matches, now that the phone number
    comparisons are fixed

  o Added --filter option.

    Pass a regular expression to filter which test cases should run

  o Added test which searches by UID (can trigger bugs if normalization
    is mistakenly done on the UIDs).

10 years agotest-client-cursor-operations.c: Test cursor in fallback mode
Tristan Van Berkom [Tue, 26 Nov 2013 11:43:36 +0000 (20:43 +0900)]
test-client-cursor-operations.c: Test cursor in fallback mode

Now test the cursor functionality in cases where the cursor
is using sort fields not in the summary (and search expressions
not in the summary).

Also added --filter option, pass a regular expression to filter
which test cases should run

Also increased TIMEOUT tollerance. This needs fixing, backends are not
shutting down properly, locale changes get backed up and take more and
more time as the test keeps running.

10 years agotest-server-utils: Disable the cache-reaper in the test environment
Tristan Van Berkom [Fri, 29 Nov 2013 12:24:01 +0000 (21:24 +0900)]
test-server-utils: Disable the cache-reaper in the test environment

This causes races, when changing the locale, the previous/complete
test (which is not shut down properly) is getting I/O errors because
the cache-reaper comes to screw up the day.

10 years agoAdded case to the book-migration test for basic cursor operation.
Tristan Van Berkom [Wed, 20 Nov 2013 07:09:00 +0000 (16:09 +0900)]
Added case to the book-migration test for basic cursor operation.

10 years agoPorted the lower level cursor tests to use EBookSqlite.
Tristan Van Berkom [Mon, 18 Nov 2013 10:41:53 +0000 (19:41 +0900)]
Ported the lower level cursor tests to use EBookSqlite.

Refactored the whole test suite so that it's isolated to
libedata-book, use the EBookSqlite directly.

Now for the majority of test cases, we test with and without
fields in the summary (with an empty summary configuration)
and we also test the EBookSqlite with a callback to fetch
vcards and without a callback.

We also now test for e164 number change notifications in locale changes.

10 years agoEBookClientCursor: Changed for EDataBookCursor API change (cancellables)
Tristan Van Berkom [Fri, 29 Nov 2013 12:30:13 +0000 (21:30 +0900)]
EBookClientCursor: Changed for EDataBookCursor API change (cancellables)

10 years agoEBookClient: Changed for EDataBookCursor API change.
Tristan Van Berkom [Fri, 29 Nov 2013 12:29:55 +0000 (21:29 +0900)]
EBookClient: Changed for EDataBookCursor API change.

10 years agoEDataBookCursorSqlite: Ported to EBookSqlite
Tristan Van Berkom [Tue, 19 Nov 2013 14:55:29 +0000 (23:55 +0900)]
EDataBookCursorSqlite: Ported to EBookSqlite

10 years agoEBookBackendFile: Ported to new EBookSqlite API
Tristan Van Berkom [Tue, 19 Nov 2013 14:55:01 +0000 (23:55 +0900)]
EBookBackendFile: Ported to new EBookSqlite API

Make use of the new callback in e_book_sqlite_set_locale()
and notify views if contacts have changed as a result of a locale
change.

Rely on EBookBackend implementation for ->notify_update() now.

10 years agoEBookBackend: e_book_backend_set_locale() now has GCancellable
Tristan Van Berkom [Fri, 29 Nov 2013 12:23:34 +0000 (21:23 +0900)]
EBookBackend: e_book_backend_set_locale() now has GCancellable

10 years agoEDataBookCursor: Changed APIs to permit GCancellable for long running operations.
Tristan Van Berkom [Fri, 29 Nov 2013 12:28:00 +0000 (21:28 +0900)]
EDataBookCursor: Changed APIs to permit GCancellable for long running operations.

10 years agoEDataBook: Changed for EBookBackend set_locale() API change
Tristan Van Berkom [Fri, 29 Nov 2013 12:27:15 +0000 (21:27 +0900)]
EDataBook: Changed for EBookBackend set_locale() API change

10 years agoAdding new EBookSqlite
Tristan Van Berkom [Tue, 19 Nov 2013 12:56:38 +0000 (21:56 +0900)]
Adding new EBookSqlite

This is a complete rewrite for the EBookBackendSqliteDB API,
some improvements here include:

  o Support for e_book_query_exists() and e_book_query_not()

  o ESexp parsing only happens once, least possible processing
    while generating a query

  o Query preflighting stage checks for the validity of a query,
    and also optimizes it, so that the generated statement will
    be as fast as possible

  o Implementation of queries are now much more straigh forward,
    we have a single array of constraint generator functions, one
    for each type of EBookQueryTest

  o General interactions with SQLite is improved, functions like
    ebsql_string_append_printf() and book_backend_sqlite_exec_printf()
    reduce the amount of redundant code

  o Inserts are done with prepared SQLite statements, which should
    buy us optimization on batch inserts

  o Phone number queries no longer require the E_BOOK_INDEX_PHONE
    to work, however they are quicker with the index

  o Auxiliary tables are now created for each multi attribute contact
    field in the summary separately, reducing the amount of rows
    needed to traverse for a match (also adding more flexibility to
    how we handle these multi-attribute fields)

  o Special care has been taken to ensure that we begin write transactions
    with BEGIN IMMEDIATE, allowing us to fail gracefully if and when
    SQLITE_BUSY is returned

  o Schema upgrades are more failsafe, Just add columns needed in the
    summary if they are not already declared, even though SQLite does
    not support "ADD COLUMN IF NOT EXISTS".

  o When searching contacts with a search expression that cannot
    be satisfied by the summary columns, use a fallback built into
    the SQLite instead of loading everything into memory

  o Allow usage of the cursor with fields that are not in the summary,
    both for cursor ordering and filtering.

  o While relocalizing the whole database, care is taken to perform
    the operation in batches, this way EBookBackendSqlite does not
    ever try to load the whole database in memory at once.

  o Region code for phone number parsing is now tied into the locale
    setting and will change as a result of locale changes.

  o While relocalizing and reformatting the e164 phone number attributes
    in vcards, we send notifications for vcards which changed as a
    result of relocalization via a EbSqlVCardCallback which can
    be passed to e_book_backend_sqlite_set_locale()

  o Error codes are refined to be more meaningful in general than the
    traditional E_BOOK_SQLITE_ERROR_OTHER

10 years agoAdded E_BOOK_INDEX_SORT_KEY to EBookIndexType
Tristan Van Berkom [Wed, 20 Nov 2013 07:15:55 +0000 (16:15 +0900)]
Added E_BOOK_INDEX_SORT_KEY to EBookIndexType

10 years agoEBookQuery: Added end marker for the EBookQueryTest enum
Tristan Van Berkom [Thu, 21 Nov 2013 11:31:46 +0000 (20:31 +0900)]
EBookQuery: Added end marker for the EBookQueryTest enum

Also declare the first member with "= 0", just because we now
use it to index an array, and I'm paranoid/unsure about the C spec
in this case.

10 years agoEPhoneNumber: Fixed phone number matching semantics.
Tristan Van Berkom [Sat, 23 Nov 2013 13:08:58 +0000 (22:08 +0900)]
EPhoneNumber: Fixed phone number matching semantics.

Only use the default region code for the purpose of parsing
phone numbers, but disregard the default country code in comparisons.

Also, work around a bug in libphonenumber's C++ implementation
and make sure to properly promote SHORT number matches to NATIONAL
number match strength.

Based on a patch by Patrick Ohly

10 years agoECollator: Added e_collator_new_interpret_country()
Tristan Van Berkom [Tue, 26 Nov 2013 16:03:17 +0000 (01:03 +0900)]
ECollator: Added e_collator_new_interpret_country()

ICU is our best source for parsing locale strings, this
is just a convenience for EBookBackendSqlite to get the active
country code for phone number parsing.

10 years agoECollator: fixed e_collator_collate() to allow NULL strings.
Tristan Van Berkom [Tue, 26 Nov 2013 08:12:42 +0000 (17:12 +0900)]
ECollator: fixed e_collator_collate() to allow NULL strings.

NULL strings sort below other strings.

10 years agoAdded e_vcard_construct_full()
Tristan Van Berkom [Tue, 26 Nov 2013 08:11:52 +0000 (17:11 +0900)]
Added e_vcard_construct_full()

This new variant allows construction of a vcard from a string
which is not terminated.

10 years agoUpdated Galician translations
Fran Diéguez [Thu, 28 Nov 2013 23:47:36 +0000 (00:47 +0100)]
Updated Galician translations

10 years agoEDataBookCursor: fixed memory leak.
Tristan Van Berkom [Thu, 28 Nov 2013 12:49:11 +0000 (21:49 +0900)]
EDataBookCursor: fixed memory leak.

This was forgetting to free the result list after transforming it
for the D-Bus return.

10 years agoBug #719382 - Build break, missing NSPR CFLAGS/LIBS in Camel
Milan Crha [Thu, 28 Nov 2013 08:26:53 +0000 (09:26 +0100)]
Bug #719382 - Build break, missing NSPR CFLAGS/LIBS in Camel

10 years agoCamelSession: Add a "user-alert" signal.
Matthew Barnes [Wed, 27 Nov 2013 02:14:44 +0000 (21:14 -0500)]
CamelSession: Add a "user-alert" signal.

This replaces the interactive "alert_user()" method since the
interactive aspect is no longer used and proved difficult for
applications to handle correctly.

New functions:

  camel_session_user_alert()

Removed functions:

  camel_session_alert_user()

10 years agoBug #712578 - MH folder refresh can cause summary rebuild
Milan Crha [Wed, 27 Nov 2013 14:50:03 +0000 (15:50 +0100)]
Bug #712578 - MH folder refresh can cause summary rebuild

10 years agoUpdated Polish translation
Piotr Drąg [Tue, 26 Nov 2013 19:00:10 +0000 (20:00 +0100)]
Updated Polish translation

10 years agoCamelSession: Remove leftover "check_junk" function declarations.
Matthew Barnes [Mon, 25 Nov 2013 22:57:06 +0000 (17:57 -0500)]
CamelSession: Remove leftover "check_junk" function declarations.

10 years agoBug #680961 - Broken dispatching of EAuthenticationSession
Milan Crha [Mon, 25 Nov 2013 21:29:23 +0000 (22:29 +0100)]
Bug #680961 - Broken dispatching of EAuthenticationSession

There was basically no error reporting from the server to the client
when any such occurred during authentication on the server side, thus
the client was left waiting for a response which never happened. Even
the 'dismiss' signal has a comment that it can be used for such cases,
it's not the right thing to do, because it hides the errors from a user,
thus he/she doesn't know that something went wrong. For that a new
ServerError signal was added and the error is properly propagated to
the client. Note the GOA errors don't strip the GDBus error from
the message, which looks odd in the UI, thus I added a workaround
for that too.

10 years agoUpdated Lithuanian translation
Aurimas Černius [Mon, 25 Nov 2013 21:20:46 +0000 (23:20 +0200)]
Updated Lithuanian translation

10 years agoBug 709838 - CamelDataCache: Empty cache file leads to deadlock
Matthew Barnes [Mon, 25 Nov 2013 16:46:09 +0000 (11:46 -0500)]
Bug 709838 - CamelDataCache: Empty cache file leads to deadlock

camel_data_cache_get() forgot to abort the key reservation from its
object bag when an empty cache file is detected.  This would eventually
lead to a deadlock when attempting to add the same key later.

This bug was mainly affecting HTML mails, when a remote image download
got interrupted and left behind an empty file in the HTTP cache.

10 years agotest-client-custom-summary.c: Report specific error from add_contacts()
Tristan Van Berkom [Tue, 19 Nov 2013 03:41:04 +0000 (12:41 +0900)]
test-client-custom-summary.c: Report specific error from add_contacts()

10 years agoUpdated Spanish translation
Daniel Mustieles [Mon, 25 Nov 2013 11:35:42 +0000 (12:35 +0100)]
Updated Spanish translation

10 years agoCamelSession: Remove "check-junk" property.
Matthew Barnes [Sun, 24 Nov 2013 21:02:07 +0000 (16:02 -0500)]
CamelSession: Remove "check-junk" property.

Evolution uses it but Camel doesn't.  Move it to Evolution.