public void AddUsageSource(IUsageDataSource source) { lock (_sync) { _sources.Add(source); _ruleUsages.UnionWith(source.GetRuleUsages()); } }
public static void ShowWarningsFor(Uri uri, Project project, IUsageDataSource browserSource) { using (ErrorList.UpdateSuspensionContext) { if (_currentDisplayData != null) { foreach (var item in _currentDisplayData) { ErrorList.RemoveItem(item); } } _lastSource = browserSource ?? _lastSource; _lastProject = project ?? _lastProject; _lastUri = uri ?? _lastUri; if (_lastSource == null || _lastProject == null) { _currentDisplayData = null; return; } _dontRefresh = true; try { switch (DisplaySource) { case MessageDisplaySource.Project: _currentDisplayData = UsageRegistry.GetWarnings(_lastProject).ToList(); break; case MessageDisplaySource.Url: _currentDisplayData = UsageRegistry.GetWarnings(_lastUri).ToList(); break; case MessageDisplaySource.Browser: _currentDisplayData = _lastSource.GetWarnings().ToList(); break; default: _currentDisplayData = null; return; } foreach (var item in _currentDisplayData) { ErrorList.AddItem(item); } } finally { _dontRefresh = false; } } }
public static void Merge(UnusedCssExtension extension, IUsageDataSource source) { var url = extension.Connection.Url.ToString().ToLowerInvariant(); var crossBrowserPageBucket = UsageDataByLocation.GetOrAdd(url, location => new CompositeUsageData(extension)); var connectionSiteBucket = UsageDataByConnectionAndLocation.GetOrAdd(extension.Connection, conn => new ConcurrentDictionary<string, CompositeUsageData>()); var connectionPageBucket = connectionSiteBucket.GetOrAdd(url, location => new CompositeUsageData(extension)); var projectBucket = UsageDataByProject.GetOrAdd(extension.Connection.Project.UniqueName, proj => new CompositeUsageData(extension)); crossBrowserPageBucket.AddUsageSource(source); connectionPageBucket.AddUsageSource(source); projectBucket.AddUsageSource(source); OnUsageDataUpdated(); }