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

Side by Side Diff: third_party/WebKit/Source/core/frame/FrameView.h

Issue 2051333005: Let FrameView track object paint invalidations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@TrackInvalidation
Patch Set: - Created 4 years, 6 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) 1997 Martin Jones (mjones@kde.org) 2 Copyright (C) 1997 Martin Jones (mjones@kde.org)
3 (C) 1998 Waldo Bastian (bastian@kde.org) 3 (C) 1998 Waldo Bastian (bastian@kde.org)
4 (C) 1998, 1999 Torben Weis (weis@kde.org) 4 (C) 1998, 1999 Torben Weis (weis@kde.org)
5 (C) 1999 Lars Knoll (knoll@kde.org) 5 (C) 1999 Lars Knoll (knoll@kde.org)
6 (C) 1999 Antti Koivisto (koivisto@kde.org) 6 (C) 1999 Antti Koivisto (koivisto@kde.org)
7 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed. 7 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed.
8 8
9 This library is free software; you can redistribute it and/or 9 This library is free software; you can redistribute it and/or
10 modify it under the terms of the GNU Library General Public 10 modify it under the terms of the GNU Library General Public
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 namespace blink { 56 namespace blink {
57 57
58 class AXObjectCache; 58 class AXObjectCache;
59 class CancellableTaskFactory; 59 class CancellableTaskFactory;
60 class ComputedStyle; 60 class ComputedStyle;
61 class DocumentLifecycle; 61 class DocumentLifecycle;
62 class Cursor; 62 class Cursor;
63 class Element; 63 class Element;
64 class FloatSize; 64 class FloatSize;
65 class HTMLFrameOwnerElement; 65 class HTMLFrameOwnerElement;
66 class JSONArray;
66 class LayoutPart; 67 class LayoutPart;
67 class LocalFrame; 68 class LocalFrame;
68 class KURL; 69 class KURL;
69 class Node; 70 class Node;
70 class LayoutAnalyzer; 71 class LayoutAnalyzer;
71 class LayoutBox; 72 class LayoutBox;
72 class LayoutEmbeddedObject; 73 class LayoutEmbeddedObject;
73 class LayoutObject; 74 class LayoutObject;
74 class LayoutReplaced; 75 class LayoutReplaced;
75 class LayoutScrollbarPart; 76 class LayoutScrollbarPart;
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 void flushAnyPendingPostLayoutTasks(); 316 void flushAnyPendingPostLayoutTasks();
316 317
317 bool shouldSuspendScrollAnimations() const override; 318 bool shouldSuspendScrollAnimations() const override;
318 void scrollbarStyleChanged() override; 319 void scrollbarStyleChanged() override;
319 320
320 LayoutReplaced* embeddedReplacedContent() const; 321 LayoutReplaced* embeddedReplacedContent() const;
321 322
322 static void setInitialTracksPaintInvalidationsForTesting(bool); 323 static void setInitialTracksPaintInvalidationsForTesting(bool);
323 324
324 void setTracksPaintInvalidations(bool); 325 void setTracksPaintInvalidations(bool);
325 bool isTrackingPaintInvalidations() const { return m_isTrackingPaintInvalida tions; } 326 bool isTrackingPaintInvalidations() const { return m_trackedObjectPaintInval idations.get(); }
chrishtr 2016/06/17 07:06:49 Add a note that these methods are for testing only
Xianzhu 2016/06/17 18:39:31 Done.
327
328 void trackObjectPaintInvalidation(const DisplayItemClient&, PaintInvalidatio nReason);
329 PassRefPtr<JSONArray> trackedObjectPaintInvalidationsAsJSON() const;
326 330
327 using ScrollableAreaSet = HeapHashSet<Member<ScrollableArea>>; 331 using ScrollableAreaSet = HeapHashSet<Member<ScrollableArea>>;
328 void addScrollableArea(ScrollableArea*); 332 void addScrollableArea(ScrollableArea*);
329 void removeScrollableArea(ScrollableArea*); 333 void removeScrollableArea(ScrollableArea*);
330 const ScrollableAreaSet* scrollableAreas() const { return m_scrollableAreas. get(); } 334 const ScrollableAreaSet* scrollableAreas() const { return m_scrollableAreas. get(); }
331 335
332 void addAnimatingScrollableArea(ScrollableArea*); 336 void addAnimatingScrollableArea(ScrollableArea*);
333 void removeAnimatingScrollableArea(ScrollableArea*); 337 void removeAnimatingScrollableArea(ScrollableArea*);
334 const ScrollableAreaSet* animatingScrollableAreas() const { return m_animati ngScrollableAreas.get(); } 338 const ScrollableAreaSet* animatingScrollableAreas() const { return m_animati ngScrollableAreas.get(); }
335 339
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 bool m_isTransparent; 816 bool m_isTransparent;
813 Color m_baseBackgroundColor; 817 Color m_baseBackgroundColor;
814 IntSize m_lastViewportSize; 818 IntSize m_lastViewportSize;
815 float m_lastZoomFactor; 819 float m_lastZoomFactor;
816 820
817 AtomicString m_mediaType; 821 AtomicString m_mediaType;
818 AtomicString m_mediaTypeWhenNotPrinting; 822 AtomicString m_mediaTypeWhenNotPrinting;
819 823
820 bool m_safeToPropagateScrollToParent; 824 bool m_safeToPropagateScrollToParent;
821 825
822 bool m_isTrackingPaintInvalidations; // Used for testing.
823
824 unsigned m_visuallyNonEmptyCharacterCount; 826 unsigned m_visuallyNonEmptyCharacterCount;
825 unsigned m_visuallyNonEmptyPixelCount; 827 unsigned m_visuallyNonEmptyPixelCount;
826 bool m_isVisuallyNonEmpty; 828 bool m_isVisuallyNonEmpty;
827 829
828 Member<Node> m_fragmentAnchor; 830 Member<Node> m_fragmentAnchor;
829 831
830 // layoutObject to hold our custom scroll corner. 832 // layoutObject to hold our custom scroll corner.
831 LayoutScrollbarPart* m_scrollCorner; 833 LayoutScrollbarPart* m_scrollCorner;
832 834
833 Member<ScrollableAreaSet> m_scrollableAreas; 835 Member<ScrollableAreaSet> m_scrollableAreas;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 RefPtr<TransformPaintPropertyNode> m_scrollTranslation; 912 RefPtr<TransformPaintPropertyNode> m_scrollTranslation;
911 // The content clip clips the document (= LayoutView) but not the scrollbars . 913 // The content clip clips the document (= LayoutView) but not the scrollbars .
912 // TODO(trchen): This will not be needed once settings->rootLayerScrolls() i s enabled. 914 // TODO(trchen): This will not be needed once settings->rootLayerScrolls() i s enabled.
913 RefPtr<ClipPaintPropertyNode> m_contentClip; 915 RefPtr<ClipPaintPropertyNode> m_contentClip;
914 916
915 bool m_isUpdatingAllLifecyclePhases; 917 bool m_isUpdatingAllLifecyclePhases;
916 ScrollAnchor m_scrollAnchor; 918 ScrollAnchor m_scrollAnchor;
917 919
918 bool m_needsScrollbarsUpdate; 920 bool m_needsScrollbarsUpdate;
919 bool m_suppressAdjustViewSize; 921 bool m_suppressAdjustViewSize;
922
923 struct ObjectPaintInvalidation {
924 String name;
925 PaintInvalidationReason reason;
926 };
927 OwnPtr<Vector<ObjectPaintInvalidation>> m_trackedObjectPaintInvalidations;
920 }; 928 };
921 929
922 inline void FrameView::incrementVisuallyNonEmptyCharacterCount(unsigned count) 930 inline void FrameView::incrementVisuallyNonEmptyCharacterCount(unsigned count)
923 { 931 {
924 if (m_isVisuallyNonEmpty) 932 if (m_isVisuallyNonEmpty)
925 return; 933 return;
926 m_visuallyNonEmptyCharacterCount += count; 934 m_visuallyNonEmptyCharacterCount += count;
927 // Use a threshold value to prevent very small amounts of visible content fr om triggering didMeaningfulLayout. 935 // Use a threshold value to prevent very small amounts of visible content fr om triggering didMeaningfulLayout.
928 // The first few hundred characters rarely contain the interesting content o f the page. 936 // The first few hundred characters rarely contain the interesting content o f the page.
929 static const unsigned visualCharacterThreshold = 200; 937 static const unsigned visualCharacterThreshold = 200;
(...skipping 11 matching lines...) Expand all
941 if (m_visuallyNonEmptyPixelCount > visualPixelThreshold) 949 if (m_visuallyNonEmptyPixelCount > visualPixelThreshold)
942 setIsVisuallyNonEmpty(); 950 setIsVisuallyNonEmpty();
943 } 951 }
944 952
945 DEFINE_TYPE_CASTS(FrameView, Widget, widget, widget->isFrameView(), widget.isFra meView()); 953 DEFINE_TYPE_CASTS(FrameView, Widget, widget, widget->isFrameView(), widget.isFra meView());
946 DEFINE_TYPE_CASTS(FrameView, ScrollableArea, scrollableArea, scrollableArea->isF rameView(), scrollableArea.isFrameView()); 954 DEFINE_TYPE_CASTS(FrameView, ScrollableArea, scrollableArea, scrollableArea->isF rameView(), scrollableArea.isFrameView());
947 955
948 } // namespace blink 956 } // namespace blink
949 957
950 #endif // FrameView_h 958 #endif // FrameView_h
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/frame/FrameView.cpp » ('j') | third_party/WebKit/Source/core/frame/FrameView.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698