OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/web_contents/aura/window_slider.h" | 5 #include "content/browser/web_contents/aura/window_slider.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 #include "ui/aura/root_window.h" | 9 #include "ui/aura/root_window.h" |
10 #include "ui/aura/test/aura_test_base.h" | 10 #include "ui/aura/test/aura_test_base.h" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 private: | 53 private: |
54 // Overridden from aura::WindowDelegate: | 54 // Overridden from aura::WindowDelegate: |
55 virtual bool HasHitTestMask() const OVERRIDE { return true; } | 55 virtual bool HasHitTestMask() const OVERRIDE { return true; } |
56 | 56 |
57 DISALLOW_COPY_AND_ASSIGN(NoEventWindowDelegate); | 57 DISALLOW_COPY_AND_ASSIGN(NoEventWindowDelegate); |
58 }; | 58 }; |
59 | 59 |
60 class WindowSliderDelegateTest : public WindowSlider::Delegate { | 60 class WindowSliderDelegateTest : public WindowSlider::Delegate { |
61 public: | 61 public: |
62 WindowSliderDelegateTest() | 62 WindowSliderDelegateTest() |
63 : created_back_layer_(false), | 63 : can_create_layer_(true), |
| 64 created_back_layer_(false), |
64 created_front_layer_(false), | 65 created_front_layer_(false), |
65 slide_completed_(false), | 66 slide_completed_(false), |
66 slide_aborted_(false), | 67 slide_aborted_(false), |
67 slider_destroyed_(false) { | 68 slider_destroyed_(false) { |
68 } | 69 } |
69 virtual ~WindowSliderDelegateTest() {} | 70 virtual ~WindowSliderDelegateTest() {} |
70 | 71 |
71 void Reset() { | 72 void Reset() { |
| 73 can_create_layer_ = true; |
72 created_back_layer_ = false; | 74 created_back_layer_ = false; |
73 created_front_layer_ = false; | 75 created_front_layer_ = false; |
74 slide_completed_ = false; | 76 slide_completed_ = false; |
75 slide_aborted_ = false; | 77 slide_aborted_ = false; |
76 slider_destroyed_ = false; | 78 slider_destroyed_ = false; |
77 } | 79 } |
78 | 80 |
| 81 void SetCanCreateLayer(bool can_create_layer) { |
| 82 can_create_layer_ = can_create_layer; |
| 83 } |
| 84 |
79 bool created_back_layer() const { return created_back_layer_; } | 85 bool created_back_layer() const { return created_back_layer_; } |
80 bool created_front_layer() const { return created_front_layer_; } | 86 bool created_front_layer() const { return created_front_layer_; } |
81 bool slide_completed() const { return slide_completed_; } | 87 bool slide_completed() const { return slide_completed_; } |
82 bool slide_aborted() const { return slide_aborted_; } | 88 bool slide_aborted() const { return slide_aborted_; } |
83 bool slider_destroyed() const { return slider_destroyed_; } | 89 bool slider_destroyed() const { return slider_destroyed_; } |
84 | 90 |
85 private: | 91 private: |
86 ui::Layer* CreateLayerForTest() { | 92 ui::Layer* CreateLayerForTest() { |
| 93 CHECK(can_create_layer_); |
87 ui::Layer* layer = new ui::Layer(ui::LAYER_SOLID_COLOR); | 94 ui::Layer* layer = new ui::Layer(ui::LAYER_SOLID_COLOR); |
88 layer->SetColor(SK_ColorRED); | 95 layer->SetColor(SK_ColorRED); |
89 return layer; | 96 return layer; |
90 } | 97 } |
91 | 98 |
92 // Overridden from WindowSlider::Delegate: | 99 // Overridden from WindowSlider::Delegate: |
93 virtual ui::Layer* CreateBackLayer() OVERRIDE { | 100 virtual ui::Layer* CreateBackLayer() OVERRIDE { |
| 101 if (!can_create_layer_) |
| 102 return NULL; |
94 created_back_layer_ = true; | 103 created_back_layer_ = true; |
95 return CreateLayerForTest(); | 104 return CreateLayerForTest(); |
96 } | 105 } |
97 | 106 |
98 virtual ui::Layer* CreateFrontLayer() OVERRIDE { | 107 virtual ui::Layer* CreateFrontLayer() OVERRIDE { |
| 108 if (!can_create_layer_) |
| 109 return NULL; |
99 created_front_layer_ = true; | 110 created_front_layer_ = true; |
100 return CreateLayerForTest(); | 111 return CreateLayerForTest(); |
101 } | 112 } |
102 | 113 |
103 virtual void OnWindowSlideComplete() OVERRIDE { | 114 virtual void OnWindowSlideComplete() OVERRIDE { |
104 slide_completed_ = true; | 115 slide_completed_ = true; |
105 } | 116 } |
106 | 117 |
107 virtual void OnWindowSlideAborted() OVERRIDE { | 118 virtual void OnWindowSlideAborted() OVERRIDE { |
108 slide_aborted_ = true; | 119 slide_aborted_ = true; |
109 } | 120 } |
110 | 121 |
111 virtual void OnWindowSliderDestroyed() OVERRIDE { | 122 virtual void OnWindowSliderDestroyed() OVERRIDE { |
112 slider_destroyed_ = true; | 123 slider_destroyed_ = true; |
113 } | 124 } |
114 | 125 |
| 126 bool can_create_layer_; |
115 bool created_back_layer_; | 127 bool created_back_layer_; |
116 bool created_front_layer_; | 128 bool created_front_layer_; |
117 bool slide_completed_; | 129 bool slide_completed_; |
118 bool slide_aborted_; | 130 bool slide_aborted_; |
119 bool slider_destroyed_; | 131 bool slider_destroyed_; |
120 | 132 |
121 DISALLOW_COPY_AND_ASSIGN(WindowSliderDelegateTest); | 133 DISALLOW_COPY_AND_ASSIGN(WindowSliderDelegateTest); |
122 }; | 134 }; |
123 | 135 |
124 typedef aura::test::AuraTestBase WindowSliderTest; | 136 typedef aura::test::AuraTestBase WindowSliderTest; |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 aura::Window* new_window = window.get(); | 273 aura::Window* new_window = window.get(); |
262 EXPECT_NE(old_window, new_window); | 274 EXPECT_NE(old_window, new_window); |
263 | 275 |
264 EXPECT_TRUE(slider_delegate.created_back_layer()); | 276 EXPECT_TRUE(slider_delegate.created_back_layer()); |
265 EXPECT_TRUE(slider_delegate.slide_completed()); | 277 EXPECT_TRUE(slider_delegate.slide_completed()); |
266 EXPECT_FALSE(slider_delegate.created_front_layer()); | 278 EXPECT_FALSE(slider_delegate.created_front_layer()); |
267 EXPECT_FALSE(slider_delegate.slide_aborted()); | 279 EXPECT_FALSE(slider_delegate.slide_aborted()); |
268 EXPECT_TRUE(slider_delegate.slider_destroyed()); | 280 EXPECT_TRUE(slider_delegate.slider_destroyed()); |
269 } | 281 } |
270 | 282 |
| 283 TEST_F(WindowSliderTest, NoSlideWhenLayerCantBeCreated) { |
| 284 scoped_ptr<aura::Window> window(CreateNormalWindow(0, root_window(), NULL)); |
| 285 window->SetBounds(gfx::Rect(0, 0, 400, 400)); |
| 286 WindowSliderDelegateTest slider_delegate; |
| 287 slider_delegate.SetCanCreateLayer(false); |
| 288 |
| 289 aura::test::EventGenerator generator(root_window()); |
| 290 |
| 291 // Generate a horizontal overscroll. |
| 292 new WindowSlider(&slider_delegate, root_window(), window.get()); |
| 293 generator.GestureScrollSequence(gfx::Point(10, 10), |
| 294 gfx::Point(160, 10), |
| 295 base::TimeDelta::FromMilliseconds(10), |
| 296 10); |
| 297 EXPECT_FALSE(slider_delegate.created_back_layer()); |
| 298 EXPECT_TRUE(slider_delegate.slide_completed()); |
| 299 EXPECT_FALSE(slider_delegate.created_front_layer()); |
| 300 EXPECT_FALSE(slider_delegate.slide_aborted()); |
| 301 EXPECT_TRUE(slider_delegate.slider_destroyed()); |
| 302 window->SetTransform(gfx::Transform()); |
| 303 } |
| 304 |
271 } // namespace content | 305 } // namespace content |
OLD | NEW |