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

Unified Diff: Source/core/dom/SimpleLifecycleNotifier.h

Issue 18777003: Extract simpler classes for observing context lifecycle and observe Page lifecycle inNavigatorVibra… (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Use SimpleLifecycleObserver in addObserver / removeObserver. Created 7 years, 5 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: Source/core/dom/SimpleLifecycleNotifier.h
diff --git a/Source/core/dom/ContextLifecycleObserver.h b/Source/core/dom/SimpleLifecycleNotifier.h
similarity index 51%
copy from Source/core/dom/ContextLifecycleObserver.h
copy to Source/core/dom/SimpleLifecycleNotifier.h
index 574455e861a357cf4f33514367aaf69b3657d5a9..2b7221da556a7c81cac545e5a1e69587565e6742 100644
--- a/Source/core/dom/ContextLifecycleObserver.h
+++ b/Source/core/dom/SimpleLifecycleNotifier.h
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2013 Google Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -23,34 +24,55 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
+#ifndef SimpleLifecycleNotifier_h
+#define SimpleLifecycleNotifier_h
-#ifndef ContextLifecycleObserver_h
-#define ContextLifecycleObserver_h
+#include "core/dom/SimpleLifecycleObserver.h"
+#include "wtf/HashSet.h"
+#include "wtf/PassOwnPtr.h"
namespace WebCore {
-class ScriptExecutionContext;
+class SimpleLifecycleContext;
+class SimpleLifecycleObserver;
-class ContextLifecycleObserver {
+class SimpleLifecycleNotifier {
public:
- enum Type {
- ActiveDOMObjectType,
- DocumentLifecycleObserverType,
- GenericType
- };
+ static PassOwnPtr<SimpleLifecycleNotifier> create(SimpleLifecycleContext*);
+
+ virtual ~SimpleLifecycleNotifier();
- explicit ContextLifecycleObserver(ScriptExecutionContext*, Type = GenericType);
- virtual void contextDestroyed();
+ typedef HashSet<SimpleLifecycleObserver*> SimpleObserverSet;
- ScriptExecutionContext* scriptExecutionContext() const { return m_scriptExecutionContext; }
+ virtual void addObserver(SimpleLifecycleObserver*, SimpleLifecycleObserver::Type);
+ virtual void removeObserver(SimpleLifecycleObserver*, SimpleLifecycleObserver::Type);
protected:
- virtual ~ContextLifecycleObserver();
- void observeContext(ScriptExecutionContext*, Type);
+ explicit SimpleLifecycleNotifier(SimpleLifecycleContext*);
- ScriptExecutionContext* m_scriptExecutionContext;
+ SimpleLifecycleContext* context();
+
+ enum IterationType {
+ IteratingNone,
+ IteratingOverActiveDOMObjects,
+ IteratingOverContextObservers,
+ IteratingOverDocumentObservers,
+ IteratingOverPageObservers
abarth-chromium 2013/07/08 21:25:24 I'm not sure it's worth abstracting the SimpleLife
Michael van Ouwerkerk 2013/07/09 17:09:12 The file branch detection may be confusing here -
+ };
+
+ IterationType m_iterating;
+
+private:
+ SimpleObserverSet m_observers;
+ SimpleLifecycleContext* m_context;
+ bool m_inDestructor;
};
+inline PassOwnPtr<SimpleLifecycleNotifier> SimpleLifecycleNotifier::create(SimpleLifecycleContext* context)
+{
+ return adoptPtr(new SimpleLifecycleNotifier(context));
+}
+
} // namespace WebCore
-#endif // ContextLifecycleObserver_h
+#endif // SimpleLifecycleNotifier_h

Powered by Google App Engine
This is Rietveld 408576698