OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROMECAST_CRASH_LINUX_DUMMY_MINIDUMP_GENERATOR_H_ | 5 #ifndef CHROMECAST_CRASH_LINUX_DUMMY_MINIDUMP_GENERATOR_H_ |
6 #define CHROMECAST_CRASH_LINUX_DUMMY_MINIDUMP_GENERATOR_H_ | 6 #define CHROMECAST_CRASH_LINUX_DUMMY_MINIDUMP_GENERATOR_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
11 #include "chromecast/crash/linux/minidump_generator.h" | 11 #include "chromecast/crash/linux/minidump_generator.h" |
12 | 12 |
13 namespace chromecast { | 13 namespace chromecast { |
14 | 14 |
15 class DummyMinidumpGenerator : public MinidumpGenerator { | 15 class DummyMinidumpGenerator : public MinidumpGenerator { |
16 public: | 16 public: |
17 // A dummy minidump generator to move an existing minidump into | 17 // A dummy minidump generator to move an existing minidump into |
18 // crash_uploader's monitoring path ($HOME/minidumps). The path is monitored | 18 // crash_uploader's monitoring path ($HOME/minidumps). The path is monitored |
19 // with file lock-control, so that third process should not write to it | 19 // with file lock-control, so that third process should not write to it |
20 // directly. | 20 // directly. |
21 explicit DummyMinidumpGenerator(const std::string& existing_minidump_path); | 21 explicit DummyMinidumpGenerator(const std::string& existing_minidump_path); |
22 | 22 |
23 // MinidumpGenerator implementation: | 23 // MinidumpGenerator implementation: |
| 24 // Moves the minidump located at |existing_minidump_path_| to |minidump_path|. |
| 25 // Returns true if successful, false otherwise. Note that this function MUST |
| 26 // be called on a thread without IO restrictions, or it will fail fatally. |
24 bool Generate(const std::string& minidump_path) override; | 27 bool Generate(const std::string& minidump_path) override; |
25 | 28 |
26 // Provide access to internal utility for testing. | |
27 bool CopyAndDeleteForTest(const std::string& dest_path) { | |
28 return CopyAndDelete(dest_path); | |
29 } | |
30 | |
31 private: | 29 private: |
32 // Copies the contents of the file at |existing_minidump_path_| to the file at | |
33 // |dest_path|. If the copy operation succeeds, delete the file at | |
34 // |existing_minidump_path_|. Returns false if |existing_minidump_path_| can't | |
35 // be opened, or if the copy operation fails. Ideally, we would use Chrome | |
36 // utilities for a task like this, but we must ensure that this operation can | |
37 // occur on any thread (regardless of IO restrictions). | |
38 bool CopyAndDelete(const std::string& dest_path); | |
39 | |
40 const std::string existing_minidump_path_; | 30 const std::string existing_minidump_path_; |
41 | 31 |
42 DISALLOW_COPY_AND_ASSIGN(DummyMinidumpGenerator); | 32 DISALLOW_COPY_AND_ASSIGN(DummyMinidumpGenerator); |
43 }; | 33 }; |
44 | 34 |
45 } // namespace chromecast | 35 } // namespace chromecast |
46 | 36 |
47 #endif // CHROMECAST_CRASH_LINUX_DUMMY_MINIDUMP_GENERATOR_H_ | 37 #endif // CHROMECAST_CRASH_LINUX_DUMMY_MINIDUMP_GENERATOR_H_ |
OLD | NEW |