History log of /packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
d0d961e19f19704f7967dadf5be61fe6273a1d32 01-Jun-2015 Zheng Fu <zhengfu@google.com> Performance tuning for contact aggregator2

1. Skip already aggregated raw contacts during aggregation algorithm upgrade.
2. Remove case conversion during email comparion for better performance.
3. Fix bugs in the ContactAggregatorHelper to fix the flaky unit test.

Bug:21466686
Bug:19908937
Change-Id: I6f59894a4fdc605fe1b92ac82e2ac9e90561a158
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
3a83f4c60fbe7eb2ee31186d0675dcfbac3ee6b5 27-May-2015 Makoto Onuki <omakoto@google.com> Fix invalidateAggregationExceptionCache().

Also clean up aggregator in preparation in preparation for b/19482664

Two tests in ContactAggregator2Test are failing, but it's irrelevant to this
change. (Bug filed for this.)

Change-Id: Id630812335fdaa2ab4955c240700b82fed84d1a8
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
aa18c233fdec3359c5231d4a5f61188446bf5d6f 16-Apr-2015 Zheng Fu <zhengfu@google.com> use new setting flag to switch between current and new aggregator.

In order for the switch, add AbstractContactAggregator for
ContactAggregator and ContactAggregator2.

Bug:20055573
Change-Id: I6f27d4df8017938b226f5c6371b15ba41fd18acd
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
6012b85f0eef8ebcfcb73b72216d17893804d4ea 02-Apr-2015 Zheng Fu <zhengfu@google.com> Add some new method implementations for new contact aggregator.

Also add a ContactAggregatorHelper class to hold some helper methods
to better falicitate unit testing

Bug:19908937
Change-Id: I2e2bcef2228e7a171e9c3259c27c3fa28bde646c
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
f256a7cf7f78d5ff2573358eb2eadd6f3a2ec9db 28-Jan-2015 Brian Attwell <brianattwell@google.com> Remove NAME_VERIFIED. Part3

Support use of IS_SUPER_PRIMARY instead of NAME_VERIFIED.
The contact aggregator now pays attention to
IS_SUPER_PRIMARY.

Remove all references to NAME_VERIFIED from CP2.

Bug: 18777272
Change-Id: I1579a3122b2d45b80de7106a2b9616e323855045
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
8ddd7038fb59c1b346ee8baa8fcef57cc3eebf0c 28-Jan-2015 Brian Attwell <brianattwell@google.com> Additional change to IS_SUPER_PRIMARY

UPDATE
-----------------
This is being committed a second time, with
two small changes from ag/619454:
1. This CL can be directly cherry-picked to MR1 because
of the simpler unit test
2. Don't run a pointless update() call

Original CL Comment
------------------

Noticed clearSuperPrimarySetting() sometimes clears all
mimetypes's is_super_primary flag values sometimes, even
mimetypes that aren't contained in both raw contacts.

This doesn't appear to have been the intended behavior.
Looks like a simple bug. Wrote a unit test and fixed
the bug. Added a new method to DataUtil used inside the
unit test. This method wasn't strictly necessary. But
it is very useful in later CLs.

(Part #2 or "Remove NAME_VERIFIED" series of CLs)

Bug: 5080996
Bug: 18777272
Change-Id: I7944aae2ad4acb4df6560c5cd086242b7582fbf5
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
2ffd05bbcf37129f2126b563e5185f429a9a9042 29-Jan-2015 Brian Attwell <brianattwell@google.com> Revert "Additional change to IS_SUPER_PRIMARY"

This reverts commit c44ee526c56d2f5e680cef24897cff3a922d6a2f.

Change-Id: I2d81fb028eb0672db9cc291ac187c2629435969d
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
c44ee526c56d2f5e680cef24897cff3a922d6a2f 28-Jan-2015 Brian Attwell <brianattwell@google.com> Additional change to IS_SUPER_PRIMARY

Noticed clearSuperPrimarySetting() sometimes clears all
mimetypes's is_super_primary flag values sometimes, even
mimetypes that aren't contained in both raw contacts.

This doesn't appear to have been the intended behavior.
Looks like a simple bug. Wrote a unit test and fixed
the bug. Added a new method to DataUtil used inside the
unit test. This method wasn't strictly necessary. But
it is very useful in later CLs.

(Part #2 or "Remove NAME_VERIFIED" series of CLs)

Bug: 5080996
Bug: 18777272
Change-Id: I354ffe51ea64cc532387d7ba79fbb6d2389d662e
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
75b452b88ad2841415a48e95706f538428ec200a 27-Jan-2015 Brian Attwell <brianattwell@google.com> Change IS_SUPER_PRIMARY reset logic

CHANGES
1) change is_super_primary reset as discussed in
go/proposed-change-to-resetting-super-primary-on-join
2) fix a bug in case #1 of testAggregation_clearSuperPrimary and
extended the case a bit. Previously, both data rows had
is_super_primary=false at setup instead of both true

REASON
This is mostly for the benefit of Lychee and future contact editor
changes.

This CL was also needed to make removing use of NAME_VERIFIED
from GoogleContacts possible. At the very least, IS_SUPER_PRIMARY's
behavior is now more consistent with NAME_VERIFIED.

Bug: 5080996
Bug: 18777272
Change-Id: Ic3c17fcb1757f5966a7c6a52cf489083d5b8e51a
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
085a7471448168069dac091eeb8a1c5e76138ffb 08-Dec-2014 Zheng Fu <zhengfu@google.com> Skip aggregation if candidate contact contains too many raw contacts

This is likely an error or a shared corporate data element
Bug:18641722

Change-Id: Icab78bcf621363a5b887095c043e2e1e3a2e1ca4
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
098215569d35a130c883933ec76773e85356387e 21-Oct-2014 Zheng Fu <zhengfu@google.com> Modify the contact split logic to avoid over-split issue.

Details

If the best matching contact doesn't contain any raw contacts from the same
account as the given raw contact, join them together if no identity mismatch
between them on the same namespace, otherwise, keep them separate.

If the best matching contact contains raw contacts from the same account as
the given raw contact, join them together if they share at least one email
address, phone number, or identity; otherwise, re-aggregate raw contact and all
the raw contacts of best matching contact.

When re-aggregation is needed, re-aggregate all the raw contacts (given raw
contacts plus all the raw contacts of the best matching contact) based on the
pair-wise connectivity. Two raw contacts are considered connected if they share
at least one email address, phone number or identity.

Bug:18304324
Change-Id: Ic5a27a23c2f64f534f7a7eaf5f3fb474e877c207
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
df1e589415a68f4427219459ced28638d382132b 13-Nov-2014 Zheng Fu <zhengfu@google.com> Make the email comparison case-insensitive for contact aggregation.

Bug:18304324
Change-Id: If9e11022e392323b770c7560eba69617769ca080
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
84e66f5469168132e0ef8efc5e6f08f21608b383 05-Sep-2014 Zheng Fu <zhengfu@google.com> DO NOT MERGE Remove default settings during contacts aggregation.

Set is_super_primary to 0 for all the shared mime-types's data
between aggregated contacts.

Bug:5080996
Change-Id: Ie65259c11d719b343f234e5fccf883491e7992a7
(cherry picked from commit 96ddeddc52c85710a10cd8266c054ff1b1c5a52b)
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
4a47775ab4008165328ddab97f5151ddd94d9ab8 30-Jul-2014 Yorke Lee <yorkelee@google.com> Fix broken aggregation behavior for pinned contacts and tests

Update the value of some pre-defined constants in tests
Make sure that aggregation correctly sets pinned positions for
aggregated contacts - the lowest pinned position of all constituent
raw contacts, and 0 if none of them are pinned.

Bug: 16628573
Change-Id: I3e072baf7ff933a6eef861ed394f3fc817aee48b
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
45b023e89d87b66e44c1b79c6e1444ec9db70a82 06-Aug-2013 Yorke Lee <yorkelee@google.com> Handle DEMOTE and UNDEMOTE in CP2

* If a contact is UNDEMOTED, if it was previously DEMOTED, it will
become UNPINNED. Otherwise, it will remain unchanged.

* When two raw contacts are aggregated, the parent contact should
inherit the lower pinned position of the two, not including negative
integers.

Change-Id: I74f41dfa327b8e5a79688b1e99eafbef7d9d58a0
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
81fea08280784b319b936a3506788d595c6ce2ad 18-Jul-2013 Yorke Lee <yorkelee@google.com> Add pinning support in ContactsProvider

Change-Id: I3c835c2fd0faf99f8fb176752cfcb12e011095a2
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
8ed367fdc0b086d54c489f68d555e2f0a4035f63 12-Mar-2013 Chiao Cheng <chiaocheng@google.com> Adding contacts delta api.

Updates and inserts can be detected through the use of a new timestamp
field in the contacts table.

Deletes can be detected by querying the new deleted_contacts table.

Bug: 8182147
Change-Id: I5c1e596f4e1aa58528afc29396f79cb4051e229c
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
38210445730ee04c351c7cc1b3800cfe23e34325 27-Jun-2012 Makoto Onuki <omakoto@google.com> Reorganize import in contacts provider

Change-Id: If3afb134ea36bd93859efcd114885526e1592b91
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
64ee95a3e48d6f83e338764650c53a915b778cdf 13-Jun-2012 Makoto Onuki <omakoto@google.com> am a499a2ad: Merge "Fix aggregation exception problem"

* commit 'a499a2adb856223de65d298cd93d70c85afe3d4d':
Fix aggregation exception problem
89f033e186043aeacaf16f73df44f2e0e6a106fa 26-Apr-2012 Makoto Onuki <omakoto@google.com> Don't suggest invisible for aggregation

Bug 6400450

Change-Id: I4b5ed4a331f6740c3954b232633076e60e1de140
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
9d9994ea8f6b02d2c1afb48a9d776c4c26d6c989 23-Apr-2012 Makoto Onuki <omakoto@google.com> Merge "New aggregation logic"
0992b9d4969ed0eee6e879db94292b635229e2b7 11-Apr-2012 Makoto Onuki <omakoto@google.com> New aggregation logic

Now a raw contact can be merged into a contact containing raw contacts from
the same account if there's at least one raw contact in those raw contacts
that shares at least one email address, phone number, or identity.

Now the aggregation logic version is 3.

Also:
- Make sure changes to the identity triggers aggregation.

- Stop re-using some HashMaps/HashSets, as they don't shirink the internal
table when clear()ed. During the aggregation update we may put a bunch of
stuff into those, and we want to make sure that we don't keep unnecessarily
bit internal tables after the upgrade. This should be okay with the modern
dalvik GC.

Change-Id: I855085d334679363cf9bffb918ca2ceb0cfe77f5
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
c23a30e0510cf56d1dafddc79d1ab99ae9297a3f 12-Apr-2012 Makoto Onuki <omakoto@google.com> Fix most of photo tests

Adjusting existing unit tests for higher res photos turned out to be tricky,
because the size of the test images were selected for 256x256.
(e.g. cropping tests)

Also we don't want the display photo size to change depending on the running
device.

So let's just keep using 256x256 for all unit tests.

Added new asserts to EvenMoreAssert to compare image raw data, which prints
actual/expected dimensions when it fails.

Even with this CL, ContactsProvider2Test.testInputStreamForPhoto() still fails
with the following assert message. The image size seems to be correct, so I'm
not sure why. This may be because we've changed the compression rate, but
I didn't dig into it.

"Different data lengths: expected=1088 actual=1578,
expected dimentions=[96 x 96] actual dimentions=[96 x 96]"

Anyway, with this CL at least PhotoStoreTest will no longer crash, so let's
merge it now and take care of the failing test later.

Change-Id: I935f76acee3c2de99030c62e14f43de07074fb8a
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
81567f4a0f7c9c338506bd82f4d33e83c2ccf159 23-Mar-2012 Makoto Onuki <omakoto@google.com> Add new package aggregation.util

Move aggregator related classes into it.

Change-Id: I712fe07ad2bab1e532e3822e3e2797a199329865
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java
49ed71913609193a00059df944f6259e9397b0bd 05-Mar-2012 Makoto Onuki <omakoto@google.com> Move aggregator to its own package

... so that methods used only by ProfileAggregator don't have to be public.

And fix some method visibilities that don't make sense.

Needed to change the bogus ID in PhotoStoreTest; otherwise moving the
aggregator test will make this test fail for some unclear reason.

Bug 6118852

Change-Id: Ic0c022cbf50128f40c70559c1a7cf8e2a6c06fc8
/packages/providers/ContactsProvider/src/com/android/providers/contacts/aggregation/ContactAggregator.java