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

Side by Side Diff: Source/core/frame/LocalFrame.cpp

Issue 988823003: Use scroll customization primitives for touch scrolling (behind REF). (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix nullptr dereference. Created 5 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 /* 1 /*
2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
3 * 1999 Lars Knoll <knoll@kde.org> 3 * 1999 Lars Knoll <knoll@kde.org>
4 * 1999 Antti Koivisto <koivisto@kde.org> 4 * 1999 Antti Koivisto <koivisto@kde.org>
5 * 2000 Simon Hausmann <hausmann@kde.org> 5 * 2000 Simon Hausmann <hausmann@kde.org>
6 * 2000 Stefan Schimanski <1Stein@gmx.de> 6 * 2000 Stefan Schimanski <1Stein@gmx.de>
7 * 2001 George Staikos <staikos@kde.org> 7 * 2001 George Staikos <staikos@kde.org>
8 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved. 8 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved.
9 * Copyright (C) 2005 Alexey Proskuryakov <ap@nypop.com> 9 * Copyright (C) 2005 Alexey Proskuryakov <ap@nypop.com>
10 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 10 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
(...skipping 747 matching lines...) Expand 10 before | Expand all | Expand 10 after
758 bool LocalFrame::shouldReuseDefaultView(const KURL& url) const 758 bool LocalFrame::shouldReuseDefaultView(const KURL& url) const
759 { 759 {
760 return loader().stateMachine()->isDisplayingInitialEmptyDocument() && docume nt()->isSecureTransitionTo(url); 760 return loader().stateMachine()->isDisplayingInitialEmptyDocument() && docume nt()->isSecureTransitionTo(url);
761 } 761 }
762 762
763 void LocalFrame::removeSpellingMarkersUnderWords(const Vector<String>& words) 763 void LocalFrame::removeSpellingMarkersUnderWords(const Vector<String>& words)
764 { 764 {
765 spellChecker().removeSpellingMarkersUnderWords(words); 765 spellChecker().removeSpellingMarkersUnderWords(words);
766 } 766 }
767 767
768 static bool scrollAreaOnBothAxes(const FloatSize& delta, ScrollableArea& view)
769 {
770 bool scrolledHorizontal = view.scroll(ScrollLeft, ScrollByPrecisePixel, delt a.width());
771 bool scrolledVertical = view.scroll(ScrollUp, ScrollByPrecisePixel, delta.he ight());
772 return scrolledHorizontal || scrolledVertical;
Rick Byers 2015/03/11 02:22:18 again, don't you need to handle these two cases se
tdresser 2015/03/20 18:00:36 This doesn't change any behavior, see https://cod
Rick Byers 2015/03/26 21:22:49 Ok, SGTM - thanks.
773 }
774
775 // Returns true if a scroll occurred.
776 bool LocalFrame::applyScrollDelta(const FloatSize& delta, bool isScrollBegin)
777 {
778 if (isScrollBegin)
779 host()->topControls().scrollBegin();
780
781 if (!view() || delta.isZero())
782 return false;
783
784 FloatSize remainingDelta = delta;
785
786 // If this is main frame, allow top controls to scroll first and update
787 // |remainingDelta| accordingly
788 bool giveToTopControls = false;
789 if (isMainFrame()) {
790 // Always give the delta to the top controls if the scroll is in
791 // the direction to show the top controls. If it's in the
792 // direction to hide the top controls, only give the delta to the
793 // top controls when the frame can scroll.
794 giveToTopControls = remainingDelta.height() > 0
795 || view()->scrollPosition().y() < view()->maximumScrollPosition().y( );
796 }
797
798 if (giveToTopControls)
799 remainingDelta = host()->topControls().scrollBy(remainingDelta);
800
801 if (remainingDelta.isZero())
802 return true;
803
804 if (scrollAreaOnBothAxes(remainingDelta, *view()))
805 return true;
806
807 // If this is the main frame and it didn't scroll, propagate up to the pinch viewport.
808 if (!settings()->pinchVirtualViewportEnabled() || !isMainFrame())
809 return false;
810
811 if (scrollAreaOnBothAxes(remainingDelta, page()->frameHost().pinchViewport() ))
812 return true;
813
814 return false;
815 }
816
768 #if ENABLE(OILPAN) 817 #if ENABLE(OILPAN)
769 void LocalFrame::registerPluginElement(HTMLPlugInElement* plugin) 818 void LocalFrame::registerPluginElement(HTMLPlugInElement* plugin)
770 { 819 {
771 m_pluginElements.add(plugin); 820 m_pluginElements.add(plugin);
772 } 821 }
773 822
774 void LocalFrame::unregisterPluginElement(HTMLPlugInElement* plugin) 823 void LocalFrame::unregisterPluginElement(HTMLPlugInElement* plugin)
775 { 824 {
776 ASSERT(m_pluginElements.contains(plugin)); 825 ASSERT(m_pluginElements.contains(plugin));
777 m_pluginElements.remove(plugin); 826 m_pluginElements.remove(plugin);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 // We detach the FrameView's custom scroll bars as early as 873 // We detach the FrameView's custom scroll bars as early as
825 // possible to prevent m_doc->detach() from messing with the view 874 // possible to prevent m_doc->detach() from messing with the view
826 // such that its scroll bars won't be torn down. 875 // such that its scroll bars won't be torn down.
827 // 876 //
828 // FIXME: We should revisit this. 877 // FIXME: We should revisit this.
829 if (m_view) 878 if (m_view)
830 m_view->prepareForDetach(); 879 m_view->prepareForDetach();
831 } 880 }
832 881
833 } // namespace blink 882 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698