Commit 55979364 authored by Joe Mason's avatar Joe Mason Committed by Commit Bot

Add quarantine status to chrome_cleaner's shared_data.proto

Also add new ERROR_IN_ARCHIVER removal status value, and update the
override permissions map to handle it.

Full code and tests to deal with QuarantineStatus will come in a
followup.

R=csharp

Bug: 830892
Change-Id: Ib002f44b8aba6899f54b44148d8645c3c0c7178f
Reviewed-on: https://chromium-review.googlesource.com/1217148Reviewed-by: default avatarChris Sharp <csharp@chromium.org>
Commit-Queue: Chris Sharp <csharp@chromium.org>
Cr-Commit-Position: refs/heads/master@{#590330}
parent 87608ddf
......@@ -33,4 +33,19 @@ enum RemovalStatus {
// File deletion was requested, not performed due to non-executable file
// extension, but reported as success.
REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION = 9;
// There is an error in the archiver.
REMOVAL_STATUS_ERROR_IN_ARCHIVER = 10;
}
// Quarantine status for file.
enum QuarantineStatus {
QUARANTINE_STATUS_UNSPECIFIED = 0;
// The quarantine feature is disabled.
QUARANTINE_STATUS_DISABLED = 1;
// The file is quarantined.
QUARANTINE_STATUS_QUARANTINED = 2;
// Removal of the file is done without quarantining.
QUARANTINE_STATUS_SKIPPED = 3;
// There is an error and the quarantine operation failed.
QUARANTINE_STATUS_ERROR = 4;
}
......@@ -103,13 +103,16 @@ message ScheduledTask {
}
// Information related to a matched UwS file.
// Next tag: 3.
// Next tag: 4.
message MatchedFile {
optional FileInformation file_information = 1;
// Indication if the file was matched only, removed, scheduled for removal,
// etc.
optional RemovalStatus removal_status = 2;
// Indicates the quarantine status of the file.
optional QuarantineStatus quarantine_status = 3;
}
// Information related to a matched UwS folder.
......
......@@ -51,6 +51,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kOkToOverride},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kOkToOverride},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kOkToOverride},
};
(*overriding_decisions)[REMOVAL_STATUS_MATCHED_ONLY] = {
......@@ -64,6 +65,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kOkToOverride},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kOkToOverride},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kOkToOverride},
};
(*overriding_decisions)[REMOVAL_STATUS_BLACKLISTED_FOR_REMOVAL] = {
......@@ -77,6 +79,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kNotAllowed},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kNotAllowed},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kNotAllowed},
};
(*overriding_decisions)[REMOVAL_STATUS_REMOVED] = {
......@@ -90,6 +93,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kSkip},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kNotAllowed},
};
(*overriding_decisions)[REMOVAL_STATUS_FAILED_TO_REMOVE] = {
......@@ -103,6 +107,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kOkToOverride},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kOkToOverride},
};
(*overriding_decisions)[REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL] = {
......@@ -116,6 +121,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kOkToOverride},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kSkip},
};
(*overriding_decisions)[REMOVAL_STATUS_FAILED_TO_SCHEDULE_FOR_REMOVAL] = {
......@@ -129,6 +135,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kOkToOverride},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kOkToOverride},
};
(*overriding_decisions)[REMOVAL_STATUS_NOT_FOUND] = {
......@@ -142,6 +149,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kOkToOverride},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kOkToOverride},
};
(*overriding_decisions)[REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK] = {
......@@ -155,6 +163,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kOkToOverride},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kSkip},
};
(*overriding_decisions)[REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION] = {
......@@ -168,6 +177,21 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kNotAllowed},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kNotAllowed},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kNotAllowed},
};
(*overriding_decisions)[REMOVAL_STATUS_ERROR_IN_ARCHIVER] = {
{REMOVAL_STATUS_UNSPECIFIED, kNotAllowed},
{REMOVAL_STATUS_MATCHED_ONLY, kNotAllowed},
{REMOVAL_STATUS_BLACKLISTED_FOR_REMOVAL, kNotAllowed},
{REMOVAL_STATUS_REMOVED, kOkToOverride},
{REMOVAL_STATUS_FAILED_TO_REMOVE, kOkToOverride},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL, kOkToOverride},
{REMOVAL_STATUS_FAILED_TO_SCHEDULE_FOR_REMOVAL, kOkToOverride},
{REMOVAL_STATUS_NOT_FOUND, kOkToOverride},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kOkToOverride},
};
return overriding_decisions;
}();
......@@ -194,7 +218,7 @@ void FileRemovalStatusUpdater::UpdateRemovalStatus(const base::FilePath& path,
// Force update of RemovalStatusCanBeOverriddenBy() if RemovalStatus enum
// changes. REMOVAL_STATUS_UNSPECIFIED should never be set.
DCHECK(status > REMOVAL_STATUS_UNSPECIFIED &&
status <= REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION);
status <= REMOVAL_STATUS_ERROR_IN_ARCHIVER);
const base::string16 sanitized_path = SanitizePath(path);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment