Don't report DeltaResult.KEEP_CONTINUE results as invalidated.

R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org/2204623004 .
This commit is contained in:
Konstantin Shcheglov 2016-08-02 12:59:49 -07:00
parent 757b7d094c
commit a708585164
2 changed files with 15 additions and 3 deletions

View file

@ -673,7 +673,7 @@ class CacheEntry {
deltaResult == DeltaResult.INVALIDATE_NO_DELTA) {
_resultMap.remove(descriptor);
// Stop depending on other results.
if (deltaResult != DeltaResult.KEEP_CONTINUE) {
{
TargetedResult thisResult = new TargetedResult(target, descriptor);
List<AnalysisCache> caches = _partition.containingCaches;
int cacheLength = caches.length;
@ -714,8 +714,10 @@ class CacheEntry {
_partition._removeIfSource(target);
}
// Notify controller.
_partition.onResultInvalidated
.add(new InvalidatedResult(this, descriptor, thisData.value));
if (deltaResult != DeltaResult.KEEP_CONTINUE) {
_partition.onResultInvalidated
.add(new InvalidatedResult(this, descriptor, thisData.value));
}
}
/**

View file

@ -701,6 +701,12 @@ class CacheEntryTest extends AbstractCacheTest {
unorderedEquals([new TargetedResult(target, result2)]));
expect(entry.getResultData(result2).dependedOnResults,
unorderedEquals([new TargetedResult(target, result1)]));
// record invalidated results
Set<TargetedResult> reportedInvalidatedResults = new Set<TargetedResult>();
cache.onResultInvalidated.listen((InvalidatedResult invalidatedResult) {
reportedInvalidatedResults.add(new TargetedResult(
invalidatedResult.entry.target, invalidatedResult.descriptor));
});
// invalidate result2 with Delta: keep result2, invalidate result3
entry.setState(result2, CacheState.INVALID,
delta: new _KeepContinueDelta(target, result2));
@ -712,6 +718,10 @@ class CacheEntryTest extends AbstractCacheTest {
unorderedEquals([new TargetedResult(target, result2)]));
expect(entry.getResultData(result2).dependedOnResults,
unorderedEquals([new TargetedResult(target, result1)]));
// (target, result3) was reported as invalidated
// (target, result2) was NOT reported
expect(reportedInvalidatedResults,
unorderedEquals([new TargetedResult(target, result3)]));
}
test_setState_valid() {