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

Unified Diff: chrome/browser/lifetime/keep_alive_registry.h

Issue 1725883002: Add KeepAliveStateObserver, add the Restart option (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@KeepAlive
Patch Set: Created 4 years, 10 months 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/lifetime/keep_alive_registry.h
diff --git a/chrome/browser/lifetime/keep_alive_registry.h b/chrome/browser/lifetime/keep_alive_registry.h
index 51e90bff06bf99a9d7536b783996ed9466150f2a..8597e18366a8a7c08a95f3241c4bdad1e0fe8ac6 100644
--- a/chrome/browser/lifetime/keep_alive_registry.h
+++ b/chrome/browser/lifetime/keep_alive_registry.h
@@ -9,16 +9,28 @@
#include "base/macros.h"
#include "base/memory/singleton.h"
+#include "base/observer_list.h"
+#include "chrome/browser/lifetime/keep_alive_types.h"
namespace keep_alive {
enum class Origin;
+enum class RestartOption;
}
+class KeepAliveStateObserver;
class KeepAliveRegistry {
public:
static KeepAliveRegistry* GetInstance();
+ void AddObserver(KeepAliveStateObserver* observer);
+ void RemoveObserver(KeepAliveStateObserver* observer);
+
private:
+ struct KeepAliveState {
Bernhard Bauer 2016/02/24 16:54:34 Do you need this as a struct? It seems a bit easie
dgn 2016/02/24 19:08:32 Makes it easier to use compute/compare state
+ bool is_keeping_alive;
+ keep_alive::RestartOption restart;
Bernhard Bauer 2016/02/24 16:54:34 I'd be okay with keeping this as a boolean; I only
dgn 2016/02/24 19:08:32 Thanks, I did it initially because I was comparing
+ };
+
friend struct base::DefaultSingletonTraits<KeepAliveRegistry>;
// Friend to be able to use Register/Unregister
friend class ScopedKeepAlive;
@@ -27,10 +39,20 @@ class KeepAliveRegistry {
~KeepAliveRegistry();
// Add/Remove entries. Do not use directly, use ScopedKeepAlive instead.
- void Register(keep_alive::Origin origin);
- void Unregister(keep_alive::Origin origin);
+ void Register(keep_alive::Origin origin, keep_alive::RestartOption restart);
+ void Unregister(keep_alive::Origin origin, keep_alive::RestartOption restart);
+
+ KeepAliveState ComputeCurrentState() const;
+ void NotifyOfStateDifferences(const KeepAliveState& previous_state);
+
+ void DumpRegistryIfDebug() const;
std::multiset<keep_alive::Origin> registered_keep_alives_;
+ std::multiset<keep_alive::Origin> restart_allowed_keep_alives_;
+
+ KeepAliveState state_;
Bernhard Bauer 2016/02/24 16:54:34 Hm... so, this is really defined by the two sets a
dgn 2016/02/24 19:08:32 Ok, I did that way in PS1 and ended up storing it
+
+ base::ObserverList<KeepAliveStateObserver> observers_;
DISALLOW_COPY_AND_ASSIGN(KeepAliveRegistry);
};

Powered by Google App Engine
This is Rietveld 408576698