コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
            }
        }