OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
dglazkov
2017/05/11 21:09:05
Ideally, FormElementObserver shouldn't live in cor
| |
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 FormElementObserver_h | |
6 #define FormElementObserver_h | |
7 | |
8 #include "core/CoreExport.h" | |
9 #include "platform/heap/HeapAllocator.h" | |
10 #include "platform/heap/Member.h" | |
11 | |
12 namespace blink { | |
13 | |
14 class Document; | |
15 class HTMLElement; | |
16 class HTMLFormElement; | |
17 class HTMLInputElement; | |
18 class MutationObserver; | |
19 class WebFormElementObserverCallback; | |
20 | |
21 class CORE_EXPORT FormElementObserver final | |
22 : public GarbageCollectedFinalized<FormElementObserver> { | |
23 WTF_MAKE_NONCOPYABLE(FormElementObserver); | |
24 | |
25 public: | |
26 explicit FormElementObserver(Document&); | |
27 ~FormElementObserver(); | |
28 | |
29 void Observe(HTMLFormElement&, | |
30 std::unique_ptr<WebFormElementObserverCallback>); | |
31 void Observe(HTMLInputElement&, | |
32 std::unique_ptr<WebFormElementObserverCallback>); | |
33 | |
34 DECLARE_VIRTUAL_TRACE(); | |
35 | |
36 private: | |
37 class ObserverCallback; | |
38 | |
39 void EnsureObserver(); | |
40 void ClearObserver(); | |
41 void ObserveInternal(HTMLElement&, | |
42 std::unique_ptr<WebFormElementObserverCallback>); | |
43 void NotifyMutation(HTMLElement&); | |
44 | |
45 Member<Document> document_; | |
46 Member<ObserverCallback> callback_; | |
47 Member<MutationObserver> mutation_observer_; | |
48 HeapHashMap<Member<HTMLElement>, | |
49 std::unique_ptr<WebFormElementObserverCallback>> | |
50 callbacks_; | |
51 }; | |
52 | |
53 } // namespace blink | |
54 | |
55 #endif // FormElementObserver_h | |
OLD | NEW |