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 { ...@@ -33,4 +33,19 @@ enum RemovalStatus {
// File deletion was requested, not performed due to non-executable file // File deletion was requested, not performed due to non-executable file
// extension, but reported as success. // extension, but reported as success.
REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION = 9; 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 { ...@@ -103,13 +103,16 @@ message ScheduledTask {
} }
// Information related to a matched UwS file. // Information related to a matched UwS file.
// Next tag: 3. // Next tag: 4.
message MatchedFile { message MatchedFile {
optional FileInformation file_information = 1; optional FileInformation file_information = 1;
// Indication if the file was matched only, removed, scheduled for removal, // Indication if the file was matched only, removed, scheduled for removal,
// etc. // etc.
optional RemovalStatus removal_status = 2; optional RemovalStatus removal_status = 2;
// Indicates the quarantine status of the file.
optional QuarantineStatus quarantine_status = 3;
} }
// Information related to a matched UwS folder. // Information related to a matched UwS folder.
......
...@@ -51,6 +51,7 @@ GetRemovalStatusOverridePermissionMap() { ...@@ -51,6 +51,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kOkToOverride}, {REMOVAL_STATUS_NOT_FOUND, kOkToOverride},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride}, {REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kOkToOverride}, {REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kOkToOverride},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kOkToOverride},
}; };
(*overriding_decisions)[REMOVAL_STATUS_MATCHED_ONLY] = { (*overriding_decisions)[REMOVAL_STATUS_MATCHED_ONLY] = {
...@@ -64,6 +65,7 @@ GetRemovalStatusOverridePermissionMap() { ...@@ -64,6 +65,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kOkToOverride}, {REMOVAL_STATUS_NOT_FOUND, kOkToOverride},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride}, {REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kOkToOverride}, {REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kOkToOverride},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kOkToOverride},
}; };
(*overriding_decisions)[REMOVAL_STATUS_BLACKLISTED_FOR_REMOVAL] = { (*overriding_decisions)[REMOVAL_STATUS_BLACKLISTED_FOR_REMOVAL] = {
...@@ -77,6 +79,7 @@ GetRemovalStatusOverridePermissionMap() { ...@@ -77,6 +79,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kNotAllowed}, {REMOVAL_STATUS_NOT_FOUND, kNotAllowed},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kNotAllowed}, {REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kNotAllowed},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed}, {REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kNotAllowed},
}; };
(*overriding_decisions)[REMOVAL_STATUS_REMOVED] = { (*overriding_decisions)[REMOVAL_STATUS_REMOVED] = {
...@@ -90,6 +93,7 @@ GetRemovalStatusOverridePermissionMap() { ...@@ -90,6 +93,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kSkip}, {REMOVAL_STATUS_NOT_FOUND, kSkip},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride}, {REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed}, {REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kNotAllowed},
}; };
(*overriding_decisions)[REMOVAL_STATUS_FAILED_TO_REMOVE] = { (*overriding_decisions)[REMOVAL_STATUS_FAILED_TO_REMOVE] = {
...@@ -103,6 +107,7 @@ GetRemovalStatusOverridePermissionMap() { ...@@ -103,6 +107,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kOkToOverride}, {REMOVAL_STATUS_NOT_FOUND, kOkToOverride},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride}, {REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed}, {REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kOkToOverride},
}; };
(*overriding_decisions)[REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL] = { (*overriding_decisions)[REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL] = {
...@@ -116,6 +121,7 @@ GetRemovalStatusOverridePermissionMap() { ...@@ -116,6 +121,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kOkToOverride}, {REMOVAL_STATUS_NOT_FOUND, kOkToOverride},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride}, {REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed}, {REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kSkip},
}; };
(*overriding_decisions)[REMOVAL_STATUS_FAILED_TO_SCHEDULE_FOR_REMOVAL] = { (*overriding_decisions)[REMOVAL_STATUS_FAILED_TO_SCHEDULE_FOR_REMOVAL] = {
...@@ -129,6 +135,7 @@ GetRemovalStatusOverridePermissionMap() { ...@@ -129,6 +135,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kOkToOverride}, {REMOVAL_STATUS_NOT_FOUND, kOkToOverride},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride}, {REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed}, {REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kOkToOverride},
}; };
(*overriding_decisions)[REMOVAL_STATUS_NOT_FOUND] = { (*overriding_decisions)[REMOVAL_STATUS_NOT_FOUND] = {
...@@ -142,6 +149,7 @@ GetRemovalStatusOverridePermissionMap() { ...@@ -142,6 +149,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kOkToOverride}, {REMOVAL_STATUS_NOT_FOUND, kOkToOverride},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride}, {REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed}, {REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kOkToOverride},
}; };
(*overriding_decisions)[REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK] = { (*overriding_decisions)[REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK] = {
...@@ -155,6 +163,7 @@ GetRemovalStatusOverridePermissionMap() { ...@@ -155,6 +163,7 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kOkToOverride}, {REMOVAL_STATUS_NOT_FOUND, kOkToOverride},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride}, {REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kOkToOverride},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed}, {REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, kNotAllowed},
{REMOVAL_STATUS_ERROR_IN_ARCHIVER, kSkip},
}; };
(*overriding_decisions)[REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION] = { (*overriding_decisions)[REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION] = {
...@@ -168,6 +177,21 @@ GetRemovalStatusOverridePermissionMap() { ...@@ -168,6 +177,21 @@ GetRemovalStatusOverridePermissionMap() {
{REMOVAL_STATUS_NOT_FOUND, kNotAllowed}, {REMOVAL_STATUS_NOT_FOUND, kNotAllowed},
{REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kNotAllowed}, {REMOVAL_STATUS_SCHEDULED_FOR_REMOVAL_FALLBACK, kNotAllowed},
{REMOVAL_STATUS_NOT_REMOVED_INACTIVE_EXTENSION, 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; return overriding_decisions;
}(); }();
...@@ -194,7 +218,7 @@ void FileRemovalStatusUpdater::UpdateRemovalStatus(const base::FilePath& path, ...@@ -194,7 +218,7 @@ void FileRemovalStatusUpdater::UpdateRemovalStatus(const base::FilePath& path,
// Force update of RemovalStatusCanBeOverriddenBy() if RemovalStatus enum // Force update of RemovalStatusCanBeOverriddenBy() if RemovalStatus enum
// changes. REMOVAL_STATUS_UNSPECIFIED should never be set. // changes. REMOVAL_STATUS_UNSPECIFIED should never be set.
DCHECK(status > REMOVAL_STATUS_UNSPECIFIED && 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); 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