Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Unified Diff: content/browser/download/quarantine_linux.cc

Issue 2123023002: [Downloads] Consolidate MOTW annotation APIs into a single API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@move-safe-util-to-downloads
Patch Set: . Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/download/quarantine_linux.cc
diff --git a/content/browser/download/file_metadata_linux.cc b/content/browser/download/quarantine_linux.cc
similarity index 24%
rename from content/browser/download/file_metadata_linux.cc
rename to content/browser/download/quarantine_linux.cc
index b6b1779c52ef3383735319c779a00ea5d66aa8d7..35e8a7184aa484c6f3940044ba0f41871b9afc04 100644
--- a/content/browser/download/file_metadata_linux.cc
+++ b/content/browser/download/quarantine_linux.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "content/browser/download/file_metadata_linux.h"
+#include "content/browser/download/quarantine.h"
#include <stddef.h>
#include <sys/types.h>
@@ -11,34 +11,54 @@
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/logging.h"
+#include "base/threading/thread_restrictions.h"
+#include "content/browser/download/quarantine_constants_linux.h"
#include "url/gurl.h"
namespace content {
-const char kSourceURLAttrName[] = "user.xdg.origin.url";
-const char kReferrerURLAttrName[] = "user.xdg.referrer.url";
+const char kSourceURLExtendedAttrName[] = "user.xdg.origin.url";
+const char kReferrerURLExtendedAttrName[] = "user.xdg.referrer.url";
-static void SetExtendedFileAttribute(const char* path, const char* name,
- const char* value, size_t value_size,
- int flags) {
+namespace {
+
+bool SetExtendedFileAttribute(const char* path,
+ const char* name,
+ const char* value,
+ size_t value_size,
+ int flags) {
+ base::ThreadRestrictions::AssertIOAllowed();
int result = setxattr(path, name, value, value_size, flags);
if (result) {
- DPLOG(ERROR)
- << "Could not set extended attribute " << name << " on file " << path;
+ DPLOG(ERROR) << "Could not set extended attribute " << name << " on file "
+ << path;
+ return false;
}
+ return true;
}
-void AddOriginMetadataToFile(const base::FilePath& file, const GURL& source,
- const GURL& referrer) {
+} // namespace
+
+QuarantineFileResult QuarantineFile(const base::FilePath& file,
+ const GURL& source_url,
+ const GURL& referrer_url,
+ const std::string& client_guid) {
DCHECK(base::PathIsWritable(file));
- if (source.is_valid()) {
- SetExtendedFileAttribute(file.value().c_str(), kSourceURLAttrName,
- source.spec().c_str(), source.spec().length(), 0);
+ bool succeeded = true;
+ if (source_url.is_valid()) {
svaldez 2016/07/11 14:55:45 Should you be early failing if setting the SourceU
asanka 2016/09/12 15:36:37 Currently it's possible for the referrer URL to be
+ succeeded = SetExtendedFileAttribute(
+ file.value().c_str(), kSourceURLExtendedAttrName,
+ source_url.spec().c_str(), source_url.spec().length(), 0);
}
- if (referrer.is_valid()) {
- SetExtendedFileAttribute(file.value().c_str(), kReferrerURLAttrName,
- referrer.spec().c_str(), referrer.spec().length(), 0);
+ if (referrer_url.is_valid()) {
+ succeeded = SetExtendedFileAttribute(file.value().c_str(),
+ kReferrerURLExtendedAttrName,
+ referrer_url.spec().c_str(),
+ referrer_url.spec().length(), 0) &&
+ succeeded;
}
+ return succeeded ? QuarantineFileResult::OK
+ : QuarantineFileResult::ANNOTATION_FAILED;
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698