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

Side by Side Diff: minidump/minidump_exception_writer.h

Issue 674153002: minidump: Change the ownership model (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Address review feedback Created 6 years, 1 month 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
« no previous file with comments | « minidump/minidump_crashpad_info_writer_test.cc ('k') | minidump/minidump_exception_writer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Crashpad Authors. All rights reserved. 1 // Copyright 2014 The Crashpad Authors. All rights reserved.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and 12 // See the License for the specific language governing permissions and
13 // limitations under the License. 13 // limitations under the License.
14 14
15 #ifndef CRASHPAD_MINIDUMP_MINIDUMP_EXCEPTION_WRITER_H_ 15 #ifndef CRASHPAD_MINIDUMP_MINIDUMP_EXCEPTION_WRITER_H_
16 #define CRASHPAD_MINIDUMP_MINIDUMP_EXCEPTION_WRITER_H_ 16 #define CRASHPAD_MINIDUMP_MINIDUMP_EXCEPTION_WRITER_H_
17 17
18 #include <dbghelp.h> 18 #include <dbghelp.h>
19 #include <stdint.h> 19 #include <stdint.h>
20 20
21 #include <vector> 21 #include <vector>
22 22
23 #include "base/basictypes.h" 23 #include "base/basictypes.h"
24 #include "base/memory/scoped_ptr.h"
24 #include "minidump/minidump_stream_writer.h" 25 #include "minidump/minidump_stream_writer.h"
25 26
26 namespace crashpad { 27 namespace crashpad {
27 28
28 class MinidumpContextWriter; 29 class MinidumpContextWriter;
29 30
30 //! \brief The writer for a MINIDUMP_EXCEPTION_STREAM stream in a minidump file. 31 //! \brief The writer for a MINIDUMP_EXCEPTION_STREAM stream in a minidump file.
31 class MinidumpExceptionWriter final : public internal::MinidumpStreamWriter { 32 class MinidumpExceptionWriter final : public internal::MinidumpStreamWriter {
32 public: 33 public:
33 MinidumpExceptionWriter(); 34 MinidumpExceptionWriter();
34 ~MinidumpExceptionWriter() {} 35 ~MinidumpExceptionWriter() override;
35 36
36 //! \brief Arranges for MINIDUMP_EXCEPTION_STREAM::ThreadContext to point to 37 //! \brief Arranges for MINIDUMP_EXCEPTION_STREAM::ThreadContext to point to
37 //! the CPU context to be written by \a context. 38 //! the CPU context to be written by \a context.
38 //! 39 //!
39 //! A context is required in all MINIDUMP_EXCEPTION_STREAM objects. 40 //! A context is required in all MINIDUMP_EXCEPTION_STREAM objects.
40 //! 41 //!
41 //! \a context will become a child of this object in the overall tree of 42 //! This object takes ownership of \a context and becomes its parent in the
42 //! internal::MinidumpWritable objects. 43 //! overall tree of internal::MinidumpWritable objects.
43 //! 44 //!
44 //! \note Valid in #kStateMutable. 45 //! \note Valid in #kStateMutable.
45 void SetContext(MinidumpContextWriter* context); 46 void SetContext(scoped_ptr<MinidumpContextWriter> context);
46 47
47 //! \brief Sets MINIDUMP_EXCEPTION_STREAM::ThreadId. 48 //! \brief Sets MINIDUMP_EXCEPTION_STREAM::ThreadId.
48 void SetThreadID(uint32_t thread_id) { exception_.ThreadId = thread_id; } 49 void SetThreadID(uint32_t thread_id) { exception_.ThreadId = thread_id; }
49 50
50 //! \brief Sets MINIDUMP_EXCEPTION::ExceptionCode. 51 //! \brief Sets MINIDUMP_EXCEPTION::ExceptionCode.
51 void SetExceptionCode(uint32_t exception_code) { 52 void SetExceptionCode(uint32_t exception_code) {
52 exception_.ExceptionRecord.ExceptionCode = exception_code; 53 exception_.ExceptionRecord.ExceptionCode = exception_code;
53 } 54 }
54 55
55 //! \brief Sets MINIDUMP_EXCEPTION::ExceptionFlags. 56 //! \brief Sets MINIDUMP_EXCEPTION::ExceptionFlags.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 bool Freeze() override; 89 bool Freeze() override;
89 size_t SizeOfObject() override; 90 size_t SizeOfObject() override;
90 std::vector<MinidumpWritable*> Children() override; 91 std::vector<MinidumpWritable*> Children() override;
91 bool WriteObject(FileWriterInterface* file_writer) override; 92 bool WriteObject(FileWriterInterface* file_writer) override;
92 93
93 // MinidumpStreamWriter: 94 // MinidumpStreamWriter:
94 MinidumpStreamType StreamType() const override; 95 MinidumpStreamType StreamType() const override;
95 96
96 private: 97 private:
97 MINIDUMP_EXCEPTION_STREAM exception_; 98 MINIDUMP_EXCEPTION_STREAM exception_;
98 MinidumpContextWriter* context_; // weak 99 scoped_ptr<MinidumpContextWriter> context_;
99 100
100 DISALLOW_COPY_AND_ASSIGN(MinidumpExceptionWriter); 101 DISALLOW_COPY_AND_ASSIGN(MinidumpExceptionWriter);
101 }; 102 };
102 103
103 } // namespace crashpad 104 } // namespace crashpad
104 105
105 #endif // CRASHPAD_MINIDUMP_MINIDUMP_EXCEPTION_WRITER_H_ 106 #endif // CRASHPAD_MINIDUMP_MINIDUMP_EXCEPTION_WRITER_H_
OLDNEW
« no previous file with comments | « minidump/minidump_crashpad_info_writer_test.cc ('k') | minidump/minidump_exception_writer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698