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

Unified Diff: chrome/browser/ui/views/frame/contents_container.h

Issue 22265009: Implement initial version of scroll end effect Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed another compile issue :-/ Created 7 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/frame/contents_container.h
diff --git a/chrome/browser/ui/views/frame/contents_container.h b/chrome/browser/ui/views/frame/contents_container.h
index cfd6d9a2e16d0d2eff3ab310045e7815bc269174..f7e1742e1056f58e42c98a87494895575bdee143 100644
--- a/chrome/browser/ui/views/frame/contents_container.h
+++ b/chrome/browser/ui/views/frame/contents_container.h
@@ -9,13 +9,20 @@
#include "base/basictypes.h"
#include "base/compiler_specific.h"
+#include "base/memory/scoped_ptr.h"
+#include "ui/compositor/layer.h"
+#include "ui/gfx/rect.h"
#include "ui/views/view.h"
+namespace views {
+class WebView;
+}
+
// ContentsContainer is responsible for managing the active WebContents view.
// ContentsContainer has one child: the currently active WebContents.
class ContentsContainer : public views::View {
public:
- explicit ContentsContainer(views::View* active_web_view);
+ explicit ContentsContainer(views::WebView* active_web_view);
virtual ~ContentsContainer();
// Sets the active top margin; the active WebView's y origin would be
@@ -24,17 +31,37 @@ class ContentsContainer : public views::View {
// if the margin changed and this view needs Layout().
bool SetActiveTopMargin(int margin);
+ // When the scroll end effect is active the clipping layer is inserted into
+ // the layer hierarchy above the web contents and used to prevent it from
+ // occluding other elements of the browser. It also prevents the bounds of the
+ // contents from being updated by layouts of this class.
sadrul 2013/10/25 18:28:25 Don't mention the clipping layer here. Make a note
rharrison 2013/11/18 21:52:26 Done.
+ virtual void ActivateScrollEndEffect();
+ virtual void DeactivateScrollEndEffect();
+
+ // Adjusts the location of the contents and the clipping layer relative to
+ // each other in response to an update from the effect controller.
+ virtual void UpdateScrollEndEffectHeightDelta(int height_delta,
sadrul 2013/10/25 18:28:25 Don't really need the comment here. (the clipping
rharrison 2013/11/18 21:52:26 Done.
+ bool scrolling_down);
+
// Overridden from views::View:
virtual void Layout() OVERRIDE;
virtual const char* GetClassName() const OVERRIDE;
private:
- views::View* active_web_view_;
+ views::WebView* active_web_view_;
// The margin between the top and the active view. This is used to make the
// find bar overlap the detached bookmark bar on the new tab page.
int active_top_margin_;
+ // When the effect is active the web contents will not have its bounds
+ // adjusted on layout and instead will just be clipped.
+ bool scroll_effect_active_;
+
+ // Stores the bounds of the web_view before the scroll end effect starts. This
+ // allows for restoring the bounds of the view at the end of the effect.
+ gfx::Rect web_view_bounds_;
+
DISALLOW_COPY_AND_ASSIGN(ContentsContainer);
};

Powered by Google App Engine
This is Rietveld 408576698