public AddPrivilegeAction(NeedsPrivilegeTask task) { m_task = task; List <string> reqPriv = task.GetRequiredPrivileges(); string message = string.Join(",", reqPriv.ToArray()); m_display = string.Format("Add '{0}' privilege to manifest file.", message); }
public void ReportMissingPrivileges(List <string> RequiredPrivileges, string apiname, int line, int column, string filename, string manifestFile) { string message = string.Join(",", RequiredPrivileges.ToArray()); string errorMsg = string.Format("The API {0} needs these additions privileges {1}", apiname, message); // Report missing privilege violations var errTask = new NeedsPrivilegeTask(RequiredPrivileges, manifestFile); errTask.CanDelete = true; errTask.Category = TaskCategory.BuildCompile; errTask.Document = filename; errTask.Line = line; errTask.Column = column; errTask.Navigate += new EventHandler(NavigateHandler); errTask.Text = errorMsg; errTask.Priority = TaskPriority.High; errTask.ApiName = apiname; errTask.FileName = filename; taskProvider.Tasks.Add(errTask); }
public void Invoke(CancellationToken cancellationToken) { xmlDoc.Save(m_task.GetManifestFilePath()); APICheckerWindowTaskProvider taskProvider = APICheckerWindowTaskProvider.GetTaskProvider(); List <NeedsPrivilegeTask> removedTasks = new List <NeedsPrivilegeTask>(); TaskCollection Tasks = APICheckerWindowTaskProvider.GetTaskProvider().Tasks; List <string> privileges = m_task.GetRequiredPrivileges().ToList(); foreach (var task in Tasks) { if (task is NeedsPrivilegeTask) { NeedsPrivilegeTask privTask = (NeedsPrivilegeTask)task; int initPrivilegeCount = privTask.GetRequiredPrivileges().Count; foreach (var privilge in privileges) { if (privTask.GetRequiredPrivileges().Contains(privilge)) { privTask.GetRequiredPrivileges().Remove(privilge); } } int finalCount = privTask.GetRequiredPrivileges().Count; if (initPrivilegeCount != finalCount) { if (finalCount != 0) { taskProvider.ReportMissingPrivileges(privTask.GetRequiredPrivileges(), privTask.ApiName, privTask.Line, privTask.Column, privTask.FileName, privTask.GetManifestFilePath()); } removedTasks.Add(privTask); } } } foreach (var task in removedTasks) { Tasks.Remove(task); } }