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

Side by Side Diff: trunk/src/chrome/browser/feedback/feedback_report.cc

Issue 149993002: Revert 247772 "Cache feedback reports to disk in case of send fa..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/feedback/feedback_report.h"
6
7 #include "base/file_util.h"
8 #include "base/files/file_enumerator.h"
9 #include "base/files/important_file_writer.h"
10 #include "base/guid.h"
11 #include "base/strings/string_number_conversions.h"
12 #include "content/public/browser/browser_context.h"
13 #include "content/public/browser/browser_thread.h"
14 #include "net/base/directory_lister.h"
15
16 using content::BrowserThread;
17
18 namespace {
19
20 const base::FilePath::CharType kFeedbackReportPath[] =
21 FILE_PATH_LITERAL("Feedback Reports");
22 const base::FilePath::CharType kFeedbackReportFilenameWildcard[] =
23 FILE_PATH_LITERAL("Feedback Report.*");
24
25 const char kFeedbackReportFilenamePrefix[] = "Feedback Report.";
26
27 base::FilePath GetFeedbackReportsPath(content::BrowserContext* context) {
28 return context->GetPath().Append(kFeedbackReportPath);
29 }
30
31 } // namespace
32
33 namespace feedback {
34
35 FeedbackReport::FeedbackReport(content::BrowserContext* context,
36 const base::Time& upload_at,
37 const std::string& data)
38 : context_(context),
39 upload_at_(upload_at),
40 data_(data) {
41 base::FilePath reports_path = GetFeedbackReportsPath(context);
42 if (reports_path.empty())
43 return;
44 file_ = reports_path.AppendASCII(
45 kFeedbackReportFilenamePrefix + base::GenerateGUID());
46 BrowserThread::PostBlockingPoolTask(FROM_HERE, base::Bind(
47 &FeedbackReport::WriteReportOnBlockingPool, this));
48 }
49
50 FeedbackReport::~FeedbackReport() {}
51
52 void FeedbackReport::DeleteReportOnDisk() {
53 BrowserThread::PostBlockingPoolTask(FROM_HERE, base::Bind(
54 base::IgnoreResult(&base::DeleteFile), file_, false));
55 file_.clear();
56 }
57
58 void FeedbackReport::WriteReportOnBlockingPool() {
59 base::FilePath reports_path = GetFeedbackReportsPath(context_);
60 if (!base::DirectoryExists(reports_path)) {
61 base::File::Error error;
62 if (!base::CreateDirectoryAndGetError(reports_path, &error))
63 return;
64 }
65 if (!file_.empty())
66 base::ImportantFileWriter::WriteFileAtomically(file_, data_);
67 }
68
69 // static
70 void FeedbackReport::LoadReportsAndQueue(
71 content::BrowserContext* context, QueueCallback callback) {
72 base::FilePath reports_path = GetFeedbackReportsPath(context);
73 if (reports_path.empty())
74 return;
75
76 base::FileEnumerator enumerator(reports_path,
77 false,
78 base::FileEnumerator::FILES,
79 kFeedbackReportFilenameWildcard);
80 for (base::FilePath name = enumerator.Next();
81 !name.empty();
82 name = enumerator.Next()) {
83 std::string data;
84 if (ReadFileToString(name, &data))
85 BrowserThread::PostTask(
86 BrowserThread::UI, FROM_HERE, base::Bind(callback, data));
87 base::DeleteFile(name, false);
88 }
89 }
90
91 } // namespace feedback
OLDNEW
« no previous file with comments | « trunk/src/chrome/browser/feedback/feedback_report.h ('k') | trunk/src/chrome/browser/feedback/feedback_uploader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698