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

Side by Side Diff: third_party/WebKit/Source/core/dom/IntersectionObserver.h

Issue 1740923004: IntersectionObserver: make exceptions match spec (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Get rid of IntersectionObserver::hasRootMargin Created 4 years, 9 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 // Copyright 2016 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef IntersectionObserver_h 5 #ifndef IntersectionObserver_h
6 #define IntersectionObserver_h 6 #define IntersectionObserver_h
7 7
8 #include "bindings/core/v8/ScriptWrappable.h" 8 #include "bindings/core/v8/ScriptWrappable.h"
9 #include "core/dom/Element.h" 9 #include "core/dom/Element.h"
10 #include "core/dom/IntersectionObservation.h" 10 #include "core/dom/IntersectionObservation.h"
(...skipping 11 matching lines...) Expand all
22 22
23 // TODO(oilpan): Switch to GarbageCollected<> after oilpan ships 23 // TODO(oilpan): Switch to GarbageCollected<> after oilpan ships
24 class IntersectionObserver final : public GarbageCollectedFinalized<Intersection Observer>, public ScriptWrappable { 24 class IntersectionObserver final : public GarbageCollectedFinalized<Intersection Observer>, public ScriptWrappable {
25 DEFINE_WRAPPERTYPEINFO(); 25 DEFINE_WRAPPERTYPEINFO();
26 26
27 public: 27 public:
28 static IntersectionObserver* create(const IntersectionObserverInit&, Interse ctionObserverCallback&, ExceptionState&); 28 static IntersectionObserver* create(const IntersectionObserverInit&, Interse ctionObserverCallback&, ExceptionState&);
29 static void resumeSuspendedObservers(); 29 static void resumeSuspendedObservers();
30 30
31 // API methods 31 // API methods
32 void observe(Element*, ExceptionState&); 32 void observe(Element*);
33 void unobserve(Element*, ExceptionState&); 33 void unobserve(Element*);
34 void disconnect();
34 HeapVector<Member<IntersectionObserverEntry>> takeRecords(); 35 HeapVector<Member<IntersectionObserverEntry>> takeRecords();
35 Element* root() const; 36 Element* root() const;
36 String rootMargin() const; 37 String rootMargin() const;
37 const Vector<float>& thresholds() const { return m_thresholds; } 38 const Vector<float>& thresholds() const { return m_thresholds; }
38 39
39 Node* rootNode() const { return m_root.get(); } 40 Node* rootNode() const { return m_root.get(); }
40 LayoutObject* rootLayoutObject() const; 41 LayoutObject* rootLayoutObject() const;
41 bool hasPercentMargin() const;
42 const Length& topMargin() const { return m_topMargin; } 42 const Length& topMargin() const { return m_topMargin; }
43 const Length& rightMargin() const { return m_rightMargin; } 43 const Length& rightMargin() const { return m_rightMargin; }
44 const Length& bottomMargin() const { return m_bottomMargin; } 44 const Length& bottomMargin() const { return m_bottomMargin; }
45 const Length& leftMargin() const { return m_leftMargin; } 45 const Length& leftMargin() const { return m_leftMargin; }
46 void computeIntersectionObservations(); 46 void computeIntersectionObservations();
47 void enqueueIntersectionObserverEntry(IntersectionObserverEntry&); 47 void enqueueIntersectionObserverEntry(IntersectionObserverEntry&);
48 void applyRootMargin(LayoutRect&) const; 48 void applyRootMargin(LayoutRect&) const;
49 unsigned firstThresholdGreaterThan(float ratio) const; 49 unsigned firstThresholdGreaterThan(float ratio) const;
50 void deliver(); 50 void deliver();
51 void disconnect();
52 void removeObservation(IntersectionObservation&); 51 void removeObservation(IntersectionObservation&);
53 bool hasEntries() const { return m_entries.size(); } 52 bool hasEntries() const { return m_entries.size(); }
54 const HeapHashSet<WeakMember<IntersectionObservation>>& observations() const { return m_observations; } 53 const HeapHashSet<WeakMember<IntersectionObservation>>& observations() const { return m_observations; }
55 54
56 DECLARE_TRACE(); 55 DECLARE_TRACE();
57 56
58 private: 57 private:
59 explicit IntersectionObserver(IntersectionObserverCallback&, Node&, const Ve ctor<Length>& rootMargin, const Vector<float>& thresholds); 58 explicit IntersectionObserver(IntersectionObserverCallback&, Node&, const Ve ctor<Length>& rootMargin, const Vector<float>& thresholds);
60 #if ENABLE(OILPAN) 59 #if ENABLE(OILPAN)
61 void clearWeakMembers(Visitor*); 60 void clearWeakMembers(Visitor*);
62 #endif 61 #endif
63 62
64 Member<IntersectionObserverCallback> m_callback; 63 Member<IntersectionObserverCallback> m_callback;
65 WeakPtrWillBeWeakMember<Node> m_root; 64 WeakPtrWillBeWeakMember<Node> m_root;
66 HeapHashSet<WeakMember<IntersectionObservation>> m_observations; 65 HeapHashSet<WeakMember<IntersectionObservation>> m_observations;
67 HeapVector<Member<IntersectionObserverEntry>> m_entries; 66 HeapVector<Member<IntersectionObserverEntry>> m_entries;
68 Vector<float> m_thresholds; 67 Vector<float> m_thresholds;
69 Length m_topMargin; 68 Length m_topMargin;
70 Length m_rightMargin; 69 Length m_rightMargin;
71 Length m_bottomMargin; 70 Length m_bottomMargin;
72 Length m_leftMargin; 71 Length m_leftMargin;
73 }; 72 };
74 73
75 } // namespace blink 74 } // namespace blink
76 75
77 #endif // IntersectionObserver_h 76 #endif // IntersectionObserver_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698