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

Unified Diff: content/browser/android/overscroll_refresh_unittest.cc

Issue 894193005: [Android] Use the platform SwipeRefreshLayout (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 8 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: content/browser/android/overscroll_refresh_unittest.cc
diff --git a/content/browser/android/overscroll_refresh_unittest.cc b/content/browser/android/overscroll_refresh_unittest.cc
index 45b1dea14b2240d6f097a5100cb9346ef8832fba..70ed0dbd510d1f15e8b2a04f91b0ee386b21a99f 100644
--- a/content/browser/android/overscroll_refresh_unittest.cc
+++ b/content/browser/android/overscroll_refresh_unittest.cc
@@ -5,310 +5,237 @@
#include "cc/layers/layer.h"
#include "content/browser/android/overscroll_refresh.h"
#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/android/resources/resource_manager.h"
namespace content {
-class OverscrollRefreshTest : public OverscrollRefreshClient,
- public ui::ResourceManager,
+class OverscrollRefreshTest : public OverscrollRefreshHandler,
public testing::Test {
public:
- OverscrollRefreshTest()
- : refresh_triggered_(false), still_refreshing_(false) {}
+ OverscrollRefreshTest() {}
- // OverscrollRefreshClient implementation.
- void TriggerRefresh() override {
- refresh_triggered_ = true;
- still_refreshing_ = true;
+ // OverscrollRefreshHandler implementation.
+ bool PullStart() override {
+ started_ = true;
+ return true;
}
- bool IsStillRefreshing() const override { return still_refreshing_; }
+ void PullUpdate(float delta) override { delta_ += delta; }
- // ResourceManager implementation.
- base::android::ScopedJavaLocalRef<jobject> GetJavaObject() override {
- return base::android::ScopedJavaLocalRef<jobject>();
+ void PullRelease(bool allow_refresh) override {
+ released_ = true;
+ refresh_allowed_ = allow_refresh;
}
- Resource* GetResource(ui::AndroidResourceType res_type, int res_id) override {
- return nullptr;
- }
-
- void PreloadResource(ui::AndroidResourceType res_type, int res_id) override {}
+ void PullReset() override { reset_ = true; }
- bool GetAndResetRefreshTriggered() {
- bool triggered = refresh_triggered_;
- refresh_triggered_ = false;
- return triggered;
+ bool GetAndResetPullStarted() {
+ bool result = started_;
+ started_ = false;
+ return result;
}
- void PullBeyondActivationThreshold(OverscrollRefresh* effect) {
- for (int i = 0; i < OverscrollRefresh::kMinPullsToActivate; ++i)
- EXPECT_TRUE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 100)));
+ float GetAndResetPullDelta() {
+ float result = delta_;
+ delta_ = 0;
+ return result;
}
- protected:
-
- scoped_ptr<OverscrollRefresh> CreateEffect() {
- const float kDragTargetPixels = 100;
- const bool kMirror = false;
- scoped_ptr<OverscrollRefresh> effect(
- new OverscrollRefresh(this, this, kDragTargetPixels, kMirror));
-
- const gfx::SizeF kViewportSize(512, 512);
- const gfx::Vector2dF kScrollOffset;
- const bool kOverflowYHidden = false;
- effect->UpdateDisplay(kViewportSize, kScrollOffset, kOverflowYHidden);
+ bool GetAndResetPullReleased() {
+ bool result = released_;
+ released_ = false;
+ return result;
+ }
- return effect.Pass();
+ bool GetAndResetRefreshAllowed() {
+ bool result = refresh_allowed_;
+ refresh_allowed_ = false;
+ return result;
}
- void SignalRefreshCompleted() { still_refreshing_ = false; }
+ bool GetAndResetPullReset() {
+ bool result = reset_;
+ reset_ = false;
+ return result;
+ }
private:
- bool refresh_triggered_;
- bool still_refreshing_;
+ float delta_ = 0;
+ bool started_ = false;
+ bool released_ = false;
+ bool reset_ = false;
+ bool refresh_allowed_ = false;
};
TEST_F(OverscrollRefreshTest, Basic) {
- scoped_ptr<OverscrollRefresh> effect = CreateEffect();
+ OverscrollRefresh effect(this);
- EXPECT_FALSE(effect->IsActive());
- EXPECT_FALSE(effect->IsAwaitingScrollUpdateAck());
+ EXPECT_FALSE(effect.IsActive());
+ EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck());
- effect->OnScrollBegin();
- EXPECT_FALSE(effect->IsActive());
- EXPECT_TRUE(effect->IsAwaitingScrollUpdateAck());
+ effect.OnScrollBegin();
+ EXPECT_FALSE(effect.IsActive());
+ EXPECT_TRUE(effect.IsAwaitingScrollUpdateAck());
// The initial scroll should not be consumed, as it should first be offered
// to content.
gfx::Vector2dF scroll_up(0, 10);
- EXPECT_FALSE(effect->WillHandleScrollUpdate(scroll_up));
- EXPECT_FALSE(effect->IsActive());
- EXPECT_TRUE(effect->IsAwaitingScrollUpdateAck());
+ EXPECT_FALSE(effect.WillHandleScrollUpdate(scroll_up));
+ EXPECT_FALSE(effect.IsActive());
+ EXPECT_TRUE(effect.IsAwaitingScrollUpdateAck());
- // The unconsumed, overscrolling scroll will trigger the effect->
- effect->OnScrollUpdateAck(false);
- EXPECT_TRUE(effect->IsActive());
- EXPECT_FALSE(effect->IsAwaitingScrollUpdateAck());
+ // The unconsumed, overscrolling scroll will trigger the effect.
+ effect.OnScrollUpdateAck(false);
+ EXPECT_TRUE(effect.IsActive());
+ EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck());
+ EXPECT_TRUE(GetAndResetPullStarted());
// Further scrolls will be consumed.
- EXPECT_TRUE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 50)));
- EXPECT_TRUE(effect->IsActive());
+ EXPECT_TRUE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 50)));
+ EXPECT_EQ(50.f, GetAndResetPullDelta());
+ EXPECT_TRUE(effect.IsActive());
// Even scrolls in the down direction should be consumed.
- EXPECT_TRUE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, -50)));
- EXPECT_TRUE(effect->IsActive());
-
- // Feed enough scrolls to the effect to exceeds the threshold.
- PullBeyondActivationThreshold(effect.get());
- EXPECT_TRUE(effect->IsActive());
+ EXPECT_TRUE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, -50)));
+ EXPECT_EQ(-50.f, GetAndResetPullDelta());
+ EXPECT_TRUE(effect.IsActive());
// Ending the scroll while beyond the threshold should trigger a refresh.
gfx::Vector2dF zero_velocity;
- EXPECT_FALSE(GetAndResetRefreshTriggered());
- effect->OnScrollEnd(zero_velocity);
- EXPECT_TRUE(effect->IsActive());
- EXPECT_TRUE(GetAndResetRefreshTriggered());
- SignalRefreshCompleted();
-
- // Ensure animation doesn't explode.
- base::TimeTicks initial_time = base::TimeTicks::Now();
- base::TimeTicks current_time = initial_time;
- scoped_refptr<cc::Layer> layer = cc::Layer::Create();
- while (effect->Animate(current_time, layer.get()))
- current_time += base::TimeDelta::FromMilliseconds(16);
-
- // The effect should terminate in a timely fashion.
- EXPECT_GT(current_time.ToInternalValue(), initial_time.ToInternalValue());
- EXPECT_LE(
- current_time.ToInternalValue(),
- (initial_time + base::TimeDelta::FromSeconds(10)).ToInternalValue());
- EXPECT_FALSE(effect->IsActive());
-}
-
-TEST_F(OverscrollRefreshTest, AnimationTerminatesEvenIfRefreshNeverTerminates) {
- scoped_ptr<OverscrollRefresh> effect = CreateEffect();
- effect->OnScrollBegin();
- ASSERT_FALSE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 10)));
- ASSERT_TRUE(effect->IsAwaitingScrollUpdateAck());
- effect->OnScrollUpdateAck(false);
- ASSERT_TRUE(effect->IsActive());
- PullBeyondActivationThreshold(effect.get());
- ASSERT_TRUE(effect->IsActive());
- effect->OnScrollEnd(gfx::Vector2dF(0, 0));
- ASSERT_TRUE(GetAndResetRefreshTriggered());
-
- // Verify that the animation terminates even if the triggered refresh
- // action never terminates (i.e., |still_refreshing_| is always true).
- base::TimeTicks initial_time = base::TimeTicks::Now();
- base::TimeTicks current_time = initial_time;
- scoped_refptr<cc::Layer> layer = cc::Layer::Create();
- while (effect->Animate(current_time, layer.get()))
- current_time += base::TimeDelta::FromMilliseconds(16);
-
- EXPECT_GT(current_time.ToInternalValue(), initial_time.ToInternalValue());
- EXPECT_LE(
- current_time.ToInternalValue(),
- (initial_time + base::TimeDelta::FromSeconds(10)).ToInternalValue());
- EXPECT_FALSE(effect->IsActive());
-}
-
-TEST_F(OverscrollRefreshTest, NotTriggeredIfBelowThreshold) {
- scoped_ptr<OverscrollRefresh> effect = CreateEffect();
- effect->OnScrollBegin();
- ASSERT_FALSE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 10)));
- ASSERT_TRUE(effect->IsAwaitingScrollUpdateAck());
- effect->OnScrollUpdateAck(false);
- ASSERT_TRUE(effect->IsActive());
-
- // Terminating the pull before it exceeds the threshold will prevent refresh.
- EXPECT_TRUE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 10)));
- effect->OnScrollEnd(gfx::Vector2dF());
- EXPECT_FALSE(GetAndResetRefreshTriggered());
+ EXPECT_FALSE(GetAndResetPullReleased());
+ effect.OnScrollEnd(zero_velocity);
+ EXPECT_FALSE(effect.IsActive());
+ EXPECT_TRUE(GetAndResetPullReleased());
+ EXPECT_TRUE(GetAndResetRefreshAllowed());
}
TEST_F(OverscrollRefreshTest, NotTriggeredIfInitialYOffsetIsNotZero) {
- scoped_ptr<OverscrollRefresh> effect = CreateEffect();
+ OverscrollRefresh effect(this);
// A positive y scroll offset at the start of scroll will prevent activation,
// even if the subsequent scroll overscrolls upward.
- gfx::SizeF viewport_size(512, 512);
gfx::Vector2dF nonzero_offset(0, 10);
bool overflow_y_hidden = false;
- effect->UpdateDisplay(viewport_size, nonzero_offset, overflow_y_hidden);
- effect->OnScrollBegin();
-
- ASSERT_FALSE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 10)));
- EXPECT_FALSE(effect->IsActive());
- EXPECT_FALSE(effect->IsAwaitingScrollUpdateAck());
- effect->OnScrollUpdateAck(false);
- EXPECT_FALSE(effect->IsActive());
- EXPECT_FALSE(effect->IsAwaitingScrollUpdateAck());
- EXPECT_FALSE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 500)));
- effect->OnScrollEnd(gfx::Vector2dF());
- EXPECT_FALSE(GetAndResetRefreshTriggered());
+ effect.OnFrameUpdated(nonzero_offset, overflow_y_hidden);
+ effect.OnScrollBegin();
+
+ effect.OnFrameUpdated(gfx::Vector2dF(), overflow_y_hidden);
+ ASSERT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 10)));
+ EXPECT_FALSE(effect.IsActive());
+ EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck());
+ effect.OnScrollUpdateAck(false);
+ EXPECT_FALSE(effect.IsActive());
+ EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck());
+ EXPECT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 500)));
+ effect.OnScrollEnd(gfx::Vector2dF());
+ EXPECT_FALSE(GetAndResetPullStarted());
+ EXPECT_FALSE(GetAndResetPullReleased());
}
TEST_F(OverscrollRefreshTest, NotTriggeredIfOverflowYHidden) {
- scoped_ptr<OverscrollRefresh> effect = CreateEffect();
+ OverscrollRefresh effect(this);
- // "overflow-y: hidden" on the root layer will prevent activation,
- // even if the subsequent scroll overscrolls upward.
- gfx::SizeF viewport_size(512, 512);
+ // overflow-y:hidden at the start of scroll will prevent activation.
gfx::Vector2dF zero_offset;
bool overflow_y_hidden = true;
- effect->UpdateDisplay(viewport_size, zero_offset, overflow_y_hidden);
- effect->OnScrollBegin();
- ASSERT_FALSE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 10)));
- EXPECT_FALSE(effect->IsActive());
- EXPECT_FALSE(effect->IsAwaitingScrollUpdateAck());
- effect->OnScrollUpdateAck(false);
- EXPECT_FALSE(effect->IsActive());
- EXPECT_FALSE(effect->IsAwaitingScrollUpdateAck());
- EXPECT_FALSE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 500)));
- effect->OnScrollEnd(gfx::Vector2dF());
- EXPECT_FALSE(GetAndResetRefreshTriggered());
+ effect.OnFrameUpdated(zero_offset, overflow_y_hidden);
+ effect.OnScrollBegin();
+
+ ASSERT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 10)));
+ EXPECT_FALSE(effect.IsActive());
+ EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck());
+ effect.OnScrollUpdateAck(false);
+ EXPECT_FALSE(effect.IsActive());
+ EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck());
+ EXPECT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 500)));
+ effect.OnScrollEnd(gfx::Vector2dF());
+ EXPECT_FALSE(GetAndResetPullStarted());
+ EXPECT_FALSE(GetAndResetPullReleased());
}
TEST_F(OverscrollRefreshTest, NotTriggeredIfInitialScrollDownward) {
- scoped_ptr<OverscrollRefresh> effect = CreateEffect();
- effect->OnScrollBegin();
+ OverscrollRefresh effect(this);
+ effect.OnScrollBegin();
// A downward initial scroll will prevent activation, even if the subsequent
// scroll overscrolls upward.
- ASSERT_FALSE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, -10)));
- EXPECT_FALSE(effect->IsActive());
- EXPECT_FALSE(effect->IsAwaitingScrollUpdateAck());
-
- effect->OnScrollUpdateAck(false);
- EXPECT_FALSE(effect->IsActive());
- EXPECT_FALSE(effect->IsAwaitingScrollUpdateAck());
- EXPECT_FALSE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 500)));
- effect->OnScrollEnd(gfx::Vector2dF());
- EXPECT_FALSE(GetAndResetRefreshTriggered());
+ ASSERT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, -10)));
+ EXPECT_FALSE(effect.IsActive());
+ EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck());
+
+ effect.OnScrollUpdateAck(false);
+ EXPECT_FALSE(effect.IsActive());
+ EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck());
+ EXPECT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 500)));
+ effect.OnScrollEnd(gfx::Vector2dF());
+ EXPECT_FALSE(GetAndResetPullReleased());
}
TEST_F(OverscrollRefreshTest, NotTriggeredIfInitialScrollOrTouchConsumed) {
- scoped_ptr<OverscrollRefresh> effect = CreateEffect();
- effect->OnScrollBegin();
- ASSERT_FALSE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 10)));
- ASSERT_TRUE(effect->IsAwaitingScrollUpdateAck());
+ OverscrollRefresh effect(this);
+ effect.OnScrollBegin();
+ ASSERT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 10)));
+ ASSERT_TRUE(effect.IsAwaitingScrollUpdateAck());
// Consumption of the initial touchmove or scroll should prevent future
// activation.
- effect->OnScrollUpdateAck(true);
- EXPECT_FALSE(effect->IsActive());
- EXPECT_FALSE(effect->IsAwaitingScrollUpdateAck());
- EXPECT_FALSE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 500)));
- effect->OnScrollUpdateAck(false);
- EXPECT_FALSE(effect->IsActive());
- EXPECT_FALSE(effect->IsAwaitingScrollUpdateAck());
- EXPECT_FALSE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 500)));
- effect->OnScrollEnd(gfx::Vector2dF());
- EXPECT_FALSE(GetAndResetRefreshTriggered());
-}
-
-TEST_F(OverscrollRefreshTest, NotTriggeredIfInitialScrollsJanked) {
- scoped_ptr<OverscrollRefresh> effect = CreateEffect();
- effect->OnScrollBegin();
- ASSERT_FALSE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 10)));
- ASSERT_TRUE(effect->IsAwaitingScrollUpdateAck());
- effect->OnScrollUpdateAck(false);
- ASSERT_TRUE(effect->IsActive());
-
- // It should take more than just one or two large scrolls to trigger,
- // mitigating likelihood of jank triggering the effect->
- EXPECT_TRUE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 500)));
- EXPECT_TRUE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 500)));
- effect->OnScrollEnd(gfx::Vector2dF());
- EXPECT_FALSE(GetAndResetRefreshTriggered());
+ effect.OnScrollUpdateAck(true);
+ EXPECT_FALSE(effect.IsActive());
+ EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck());
+ EXPECT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 500)));
+ effect.OnScrollUpdateAck(false);
+ EXPECT_FALSE(effect.IsActive());
+ EXPECT_FALSE(effect.IsAwaitingScrollUpdateAck());
+ EXPECT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 500)));
+ effect.OnScrollEnd(gfx::Vector2dF());
+ EXPECT_FALSE(GetAndResetPullStarted());
+ EXPECT_FALSE(GetAndResetPullReleased());
}
TEST_F(OverscrollRefreshTest, NotTriggeredIfFlungDownward) {
- scoped_ptr<OverscrollRefresh> effect = CreateEffect();
- effect->OnScrollBegin();
- ASSERT_FALSE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 10)));
- ASSERT_TRUE(effect->IsAwaitingScrollUpdateAck());
- effect->OnScrollUpdateAck(false);
- ASSERT_TRUE(effect->IsActive());
-
- // Ensure the pull exceeds the necessary threshold.
- PullBeyondActivationThreshold(effect.get());
- ASSERT_TRUE(effect->IsActive());
+ OverscrollRefresh effect(this);
+ effect.OnScrollBegin();
+ ASSERT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 10)));
+ ASSERT_TRUE(effect.IsAwaitingScrollUpdateAck());
+ effect.OnScrollUpdateAck(false);
+ ASSERT_TRUE(effect.IsActive());
+ EXPECT_TRUE(GetAndResetPullStarted());
// Terminating the pull with a down-directed fling should prevent triggering.
- effect->OnScrollEnd(gfx::Vector2dF(0, -1000));
- EXPECT_FALSE(GetAndResetRefreshTriggered());
+ effect.OnScrollEnd(gfx::Vector2dF(0, -1000));
+ EXPECT_TRUE(GetAndResetPullReleased());
+ EXPECT_FALSE(GetAndResetRefreshAllowed());
}
TEST_F(OverscrollRefreshTest, NotTriggeredIfReleasedWithoutActivation) {
- scoped_ptr<OverscrollRefresh> effect = CreateEffect();
- effect->OnScrollBegin();
- ASSERT_FALSE(effect->WillHandleScrollUpdate(gfx::Vector2dF(0, 10)));
- ASSERT_TRUE(effect->IsAwaitingScrollUpdateAck());
- effect->OnScrollUpdateAck(false);
- ASSERT_TRUE(effect->IsActive());
-
- // Ensure the pull exceeds the necessary threshold.
- PullBeyondActivationThreshold(effect.get());
- ASSERT_TRUE(effect->IsActive());
+ OverscrollRefresh effect(this);
+ effect.OnScrollBegin();
+ ASSERT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 10)));
+ ASSERT_TRUE(effect.IsAwaitingScrollUpdateAck());
+ effect.OnScrollUpdateAck(false);
+ ASSERT_TRUE(effect.IsActive());
+ EXPECT_TRUE(GetAndResetPullStarted());
// An early release should prevent the refresh action from firing.
- effect->ReleaseWithoutActivation();
- effect->OnScrollEnd(gfx::Vector2dF());
- EXPECT_FALSE(GetAndResetRefreshTriggered());
-
- // The early release should trigger a dismissal animation.
- EXPECT_TRUE(effect->IsActive());
- base::TimeTicks initial_time = base::TimeTicks::Now();
- base::TimeTicks current_time = initial_time;
- scoped_refptr<cc::Layer> layer = cc::Layer::Create();
- while (effect->Animate(current_time, layer.get()))
- current_time += base::TimeDelta::FromMilliseconds(16);
-
- EXPECT_GT(current_time.ToInternalValue(), initial_time.ToInternalValue());
- EXPECT_FALSE(effect->IsActive());
- EXPECT_FALSE(GetAndResetRefreshTriggered());
+ effect.ReleaseWithoutActivation();
+ effect.OnScrollEnd(gfx::Vector2dF());
+ EXPECT_TRUE(GetAndResetPullReleased());
+ EXPECT_FALSE(GetAndResetRefreshAllowed());
+}
+
+TEST_F(OverscrollRefreshTest, NotTriggeredIfReset) {
+ OverscrollRefresh effect(this);
+ effect.OnScrollBegin();
+ ASSERT_FALSE(effect.WillHandleScrollUpdate(gfx::Vector2dF(0, 10)));
+ ASSERT_TRUE(effect.IsAwaitingScrollUpdateAck());
+ effect.OnScrollUpdateAck(false);
+ ASSERT_TRUE(effect.IsActive());
+ EXPECT_TRUE(GetAndResetPullStarted());
+
+ // An early reset should prevent the refresh action from firing.
+ effect.Reset();
+ EXPECT_TRUE(GetAndResetPullReset());
+ effect.OnScrollEnd(gfx::Vector2dF());
+ EXPECT_FALSE(GetAndResetPullReleased());
}
} // namespace content
« no previous file with comments | « content/browser/android/overscroll_refresh.cc ('k') | content/browser/renderer_host/render_widget_host_view_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698