Skip to content
  • David Faure's avatar
    Fix tag name/type/gid missing in notifications about tags. · d5ccee37
    David Faure authored
    Summary:
    The logic in AggregatedFetchScope was wrong, it led to fetchIdOnly()
    being always true.
    
    The mechanism in Aggregated* is all based on default_value || A || B || C
    where A, B, C are the boolean request from every subscriber.
    This works well for fetchRemoteId(), where the default_value is false.
    
    For fetchIdOnly(), what we really want is "(A && B && C)" ("everyone
    wants fetchIdOnly) which was implemented as "!(A || B || C)"
    (the '!' in front is the == 0 instead of > 0 in Aggregated*FetchScope::fetchIdOnly()).
    
    The flaw in this logic is the default value. With no subscribers,
    we want fetchIdOnly() == false, while it currently returns true.
    
    A default_value of true in the default_value || A || B || C logic,
    can't work: the result was always true.
    
    The solution I implemented is to compare the number of subscribers that
    called setFetchIdOnly(true) with the total number of subscribers.
    This directly implements A && B && C, with a default value of false.
    
    Test Plan: 1) extended tagstest. 2) this fixes the remaining failures in zanshin's akonadi tests.
    
    Reviewers: ervin, dvratil
    
    Reviewed By: dvratil
    
    Subscribers: kde-pim
    
    Tags: #kde_pim
    
    Differential Revision: https://phabricator.kde.org/D18556
    
    (cherry picked from commit 25087bb6,
    sorry about that, arc land messed up once more)
    d5ccee37