Index: content/browser/web_contents/aura/window_slider_unittest.cc |
diff --git a/content/browser/web_contents/aura/window_slider_unittest.cc b/content/browser/web_contents/aura/window_slider_unittest.cc |
index 369d951e254233decc3ff8e0f2677ccaf3945204..cd64ffb2fd274563374cd0f696f8ebd81e156898 100644 |
--- a/content/browser/web_contents/aura/window_slider_unittest.cc |
+++ b/content/browser/web_contents/aura/window_slider_unittest.cc |
@@ -60,7 +60,8 @@ class NoEventWindowDelegate : public aura::test::TestWindowDelegate { |
class WindowSliderDelegateTest : public WindowSlider::Delegate { |
public: |
WindowSliderDelegateTest() |
- : created_back_layer_(false), |
+ : can_create_layer_(true), |
+ created_back_layer_(false), |
created_front_layer_(false), |
slide_completed_(false), |
slide_aborted_(false), |
@@ -69,6 +70,7 @@ class WindowSliderDelegateTest : public WindowSlider::Delegate { |
virtual ~WindowSliderDelegateTest() {} |
void Reset() { |
+ can_create_layer_ = true; |
created_back_layer_ = false; |
created_front_layer_ = false; |
slide_completed_ = false; |
@@ -76,6 +78,10 @@ class WindowSliderDelegateTest : public WindowSlider::Delegate { |
slider_destroyed_ = false; |
} |
+ void SetCanCreateLayer(bool can_create_layer) { |
+ can_create_layer_ = can_create_layer; |
+ } |
+ |
bool created_back_layer() const { return created_back_layer_; } |
bool created_front_layer() const { return created_front_layer_; } |
bool slide_completed() const { return slide_completed_; } |
@@ -84,6 +90,7 @@ class WindowSliderDelegateTest : public WindowSlider::Delegate { |
private: |
ui::Layer* CreateLayerForTest() { |
+ CHECK(can_create_layer_); |
ui::Layer* layer = new ui::Layer(ui::LAYER_SOLID_COLOR); |
layer->SetColor(SK_ColorRED); |
return layer; |
@@ -91,11 +98,15 @@ class WindowSliderDelegateTest : public WindowSlider::Delegate { |
// Overridden from WindowSlider::Delegate: |
virtual ui::Layer* CreateBackLayer() OVERRIDE { |
+ if (!can_create_layer_) |
+ return NULL; |
created_back_layer_ = true; |
return CreateLayerForTest(); |
} |
virtual ui::Layer* CreateFrontLayer() OVERRIDE { |
+ if (!can_create_layer_) |
+ return NULL; |
created_front_layer_ = true; |
return CreateLayerForTest(); |
} |
@@ -112,6 +123,7 @@ class WindowSliderDelegateTest : public WindowSlider::Delegate { |
slider_destroyed_ = true; |
} |
+ bool can_create_layer_; |
bool created_back_layer_; |
bool created_front_layer_; |
bool slide_completed_; |
@@ -268,4 +280,26 @@ TEST_F(WindowSliderTest, OwnerWindowChangesDuringWindowSlide) { |
EXPECT_TRUE(slider_delegate.slider_destroyed()); |
} |
+TEST_F(WindowSliderTest, NoSlideWhenLayerCantBeCreated) { |
+ scoped_ptr<aura::Window> window(CreateNormalWindow(0, root_window(), NULL)); |
+ window->SetBounds(gfx::Rect(0, 0, 400, 400)); |
+ WindowSliderDelegateTest slider_delegate; |
+ slider_delegate.SetCanCreateLayer(false); |
+ |
+ aura::test::EventGenerator generator(root_window()); |
+ |
+ // Generate a horizontal overscroll. |
+ new WindowSlider(&slider_delegate, root_window(), window.get()); |
+ generator.GestureScrollSequence(gfx::Point(10, 10), |
+ gfx::Point(160, 10), |
+ base::TimeDelta::FromMilliseconds(10), |
+ 10); |
+ EXPECT_FALSE(slider_delegate.created_back_layer()); |
+ EXPECT_TRUE(slider_delegate.slide_completed()); |
+ EXPECT_FALSE(slider_delegate.created_front_layer()); |
+ EXPECT_FALSE(slider_delegate.slide_aborted()); |
+ EXPECT_TRUE(slider_delegate.slider_destroyed()); |
+ window->SetTransform(gfx::Transform()); |
+} |
+ |
} // namespace content |