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

Side by Side Diff: Source/core/dom/custom/CustomElementObserver.h

Issue 296703009: Oilpan: move custom element objects to the heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix compilation issue pointed out by clang Created 6 years, 7 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 13 matching lines...) Expand all
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #ifndef CustomElementObserver_h 31 #ifndef CustomElementObserver_h
32 #define CustomElementObserver_h 32 #define CustomElementObserver_h
33 33
34 #include "platform/heap/Handle.h"
34 #include "wtf/HashMap.h" 35 #include "wtf/HashMap.h"
35 36
36 namespace WebCore { 37 namespace WebCore {
37 38
38 class Element; 39 class Element;
39 40
40 class CustomElementObserver { 41 class CustomElementObserver : public NoBaseWillBeGarbageCollectedFinalized<Custo mElementObserver> {
41 public: 42 public:
42 CustomElementObserver() { }
43 virtual ~CustomElementObserver() { } 43 virtual ~CustomElementObserver() { }
44 44
45 // API for CustomElement to kick off notifications 45 // API for CustomElement to kick off notifications
46 46
47 static void notifyElementDidFinishParsingChildren(Element*); 47 static void notifyElementDidFinishParsingChildren(Element*);
48 static void notifyElementWasDestroyed(Element*); 48 static void notifyElementWasDestroyed(Element*);
49 49
50 virtual void trace(Visitor*) { }
51
50 protected: 52 protected:
53 CustomElementObserver() { }
54
51 void observe(Element*); 55 void observe(Element*);
52 void unobserve(Element*); 56 void unobserve(Element*);
53 57
54 virtual void elementDidFinishParsingChildren(Element*) = 0; 58 virtual void elementDidFinishParsingChildren(Element*) = 0;
55 virtual void elementWasDestroyed(Element* element) { unobserve(element); } 59 virtual void elementWasDestroyed(Element* element) { unobserve(element); }
56
57 private:
58 // Maps elements to the observer watching them. At most one per
59 // element at a time.
60 typedef HashMap<Element*, CustomElementObserver*> ElementObserverMap;
61 static ElementObserverMap& elementObservers();
62 }; 60 };
63 61
64 } 62 }
65 63
66 #endif // CustomElementObserver_h 64 #endif // CustomElementObserver_h
OLDNEW
« no previous file with comments | « Source/core/dom/custom/CustomElementMicrotaskStep.h ('k') | Source/core/dom/custom/CustomElementObserver.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698