dgn | 3d351ad1 | 2016-02-26 17:36:45 | [diff] [blame] | 1 | // Copyright 2016 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 | |
Michael Giuffrida | 2dbce0d1 | 2017-09-02 03:30:59 | [diff] [blame] | 5 | #ifndef COMPONENTS_KEEP_ALIVE_REGISTRY_SCOPED_KEEP_ALIVE_H_ |
| 6 | #define COMPONENTS_KEEP_ALIVE_REGISTRY_SCOPED_KEEP_ALIVE_H_ |
dgn | 3d351ad1 | 2016-02-26 17:36:45 | [diff] [blame] | 7 | |
| 8 | #include "base/macros.h" |
| 9 | |
| 10 | enum class KeepAliveOrigin; |
dgn | 3563ecaf | 2016-03-09 19:28:26 | [diff] [blame] | 11 | enum class KeepAliveRestartOption; |
dgn | 3d351ad1 | 2016-02-26 17:36:45 | [diff] [blame] | 12 | |
| 13 | // Registers with KeepAliveRegistry on creation and unregisters them |
| 14 | // on destruction. Use these objects with a scoped_ptr for easy management. |
dgn | 43f25e4 | 2016-07-18 15:46:17 | [diff] [blame] | 15 | // Note: The registration will hit a CHECK if it happens while we are |
| 16 | // shutting down. Caller code should make sure that this can't happen. |
dgn | 3d351ad1 | 2016-02-26 17:36:45 | [diff] [blame] | 17 | class ScopedKeepAlive { |
| 18 | public: |
dgn | 3563ecaf | 2016-03-09 19:28:26 | [diff] [blame] | 19 | ScopedKeepAlive(KeepAliveOrigin origin, KeepAliveRestartOption restart); |
dgn | 3d351ad1 | 2016-02-26 17:36:45 | [diff] [blame] | 20 | ~ScopedKeepAlive(); |
| 21 | |
| 22 | private: |
| 23 | const KeepAliveOrigin origin_; |
dgn | 3563ecaf | 2016-03-09 19:28:26 | [diff] [blame] | 24 | const KeepAliveRestartOption restart_; |
dgn | 3d351ad1 | 2016-02-26 17:36:45 | [diff] [blame] | 25 | |
| 26 | DISALLOW_COPY_AND_ASSIGN(ScopedKeepAlive); |
| 27 | }; |
| 28 | |
Michael Giuffrida | 2dbce0d1 | 2017-09-02 03:30:59 | [diff] [blame] | 29 | #endif // COMPONENTS_KEEP_ALIVE_REGISTRY_SCOPED_KEEP_ALIVE_H_ |