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

Unified Diff: client/crash_report_database_mac.mm

Issue 988063003: Define the Settings interface for a CrashReportDatabase and provide a Mac implementation. (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: For landing Created 5 years, 9 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
« no previous file with comments | « client/crash_report_database.h ('k') | client/crash_report_database_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/crash_report_database_mac.mm
diff --git a/client/crash_report_database_mac.mm b/client/crash_report_database_mac.mm
index e4c904aff1a75221894047c6a03762e777a8694d..75f63f47e573fb075563e68eccf2ca4db546335d 100644
--- a/client/crash_report_database_mac.mm
+++ b/client/crash_report_database_mac.mm
@@ -24,11 +24,13 @@
#include <uuid/uuid.h>
#include "base/logging.h"
+#include "base/mac/scoped_nsautorelease_pool.h"
#include "base/posix/eintr_wrapper.h"
#include "base/scoped_generic.h"
#include "base/strings/string_piece.h"
#include "base/strings/stringprintf.h"
#include "base/strings/sys_string_conversions.h"
+#include "client/settings.h"
#include "util/file/file_io.h"
#include "util/mac/xattr.h"
@@ -42,6 +44,8 @@ const char kWriteDirectory[] = "new";
const char kUploadPendingDirectory[] = "pending";
const char kCompletedDirectory[] = "completed";
+const char kSettings[] = "settings.dat";
+
const char* const kReportDirectories[] = {
kWriteDirectory,
kUploadPendingDirectory,
@@ -106,6 +110,7 @@ class CrashReportDatabaseMac : public CrashReportDatabase {
bool Initialize();
// CrashReportDatabase:
+ Settings* GetSettings() override;
OperationStatus PrepareNewCrashReport(NewReport** report) override;
OperationStatus FinishedWritingCrashReport(NewReport* report,
UUID* uuid) override;
@@ -184,12 +189,15 @@ class CrashReportDatabaseMac : public CrashReportDatabase {
static std::string XattrName(const base::StringPiece& name);
base::FilePath base_dir_;
+ Settings settings_;
DISALLOW_COPY_AND_ASSIGN(CrashReportDatabaseMac);
};
CrashReportDatabaseMac::CrashReportDatabaseMac(const base::FilePath& path)
- : CrashReportDatabase(), base_dir_(path) {
+ : CrashReportDatabase(),
+ base_dir_(path),
+ settings_(base_dir_.Append(kSettings)) {
}
CrashReportDatabaseMac::~CrashReportDatabaseMac() {}
@@ -205,11 +213,18 @@ bool CrashReportDatabaseMac::Initialize() {
return false;
}
+ if (!settings_.Initialize())
+ return false;
+
// Write an xattr as the last step, to ensure the filesystem has support for
// them. This attribute will never be read.
return WriteXattrBool(base_dir_, XattrName(kXattrDatabaseInitialized), true);
}
+Settings* CrashReportDatabaseMac::GetSettings() {
+ return &settings_;
+}
+
CrashReportDatabase::OperationStatus
CrashReportDatabaseMac::PrepareNewCrashReport(NewReport** out_report) {
uuid_t uuid_gen;
@@ -505,6 +520,8 @@ bool CrashReportDatabaseMac::ReadReportMetadataLocked(
CrashReportDatabase::OperationStatus CrashReportDatabaseMac::ReportsInDirectory(
const base::FilePath& path,
std::vector<CrashReportDatabase::Report>* reports) {
+ base::mac::ScopedNSAutoreleasePool pool;
+
DCHECK(reports->empty());
NSError* error = nil;
« no previous file with comments | « client/crash_report_database.h ('k') | client/crash_report_database_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698