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