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 
5 #ifndef COMPONENTS_KEEP_ALIVE_REGISTRY_SCOPED_KEEP_ALIVE_H_
6 #define COMPONENTS_KEEP_ALIVE_REGISTRY_SCOPED_KEEP_ALIVE_H_
7 
8 #include "base/macros.h"
9 
10 enum class KeepAliveOrigin;
11 enum class KeepAliveRestartOption;
12 
13 // Registers with KeepAliveRegistry on creation and unregisters them
14 // on destruction. Use these objects with a scoped_ptr for easy management.
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.
17 class ScopedKeepAlive {
18  public:
19   ScopedKeepAlive(KeepAliveOrigin origin, KeepAliveRestartOption restart);
20   ~ScopedKeepAlive();
21 
22  private:
23   const KeepAliveOrigin origin_;
24   const KeepAliveRestartOption restart_;
25 
26   DISALLOW_COPY_AND_ASSIGN(ScopedKeepAlive);
27 };
28 
29 #endif  // COMPONENTS_KEEP_ALIVE_REGISTRY_SCOPED_KEEP_ALIVE_H_
30