Chromium Code Reviews| Index: ui/aura/window_unittest.cc |
| diff --git a/ui/aura/window_unittest.cc b/ui/aura/window_unittest.cc |
| index b287aea9e13183cb23ba496b8be173248edf894a..dc9a2c0f7ff9b3cf93690206c7cabd884882cc43 100644 |
| --- a/ui/aura/window_unittest.cc |
| +++ b/ui/aura/window_unittest.cc |
| @@ -1707,6 +1707,18 @@ class WindowObserverTest : public WindowTest, |
| return result; |
| } |
| + std::string TransformNotificationsAndClear() { |
| + std::string result; |
| + for (std::vector<std::pair<int, int> >::iterator it = |
| + transform_notifications_.begin(); |
| + it != transform_notifications_.end(); |
| + ++it) { |
| + base::StringAppendF(&result, "(%d,%d)", it->first, it->second); |
| + } |
| + transform_notifications_.clear(); |
| + return result; |
| + } |
| + |
| private: |
| virtual void OnWindowAdded(Window* new_window) OVERRIDE { |
| added_count_++; |
| @@ -1735,12 +1747,19 @@ class WindowObserverTest : public WindowTest, |
| old_property_value_ = old; |
| } |
| + virtual void OnAncestorWindowTransformed(Window* source, |
| + Window* window) OVERRIDE { |
| + transform_notifications_.push_back( |
| + std::make_pair(source->id(), window->id())); |
| + } |
| + |
| int added_count_; |
| int removed_count_; |
| int destroyed_count_; |
| scoped_ptr<VisibilityInfo> visibility_info_; |
| const void* property_key_; |
| intptr_t old_property_value_; |
| + std::vector<std::pair<int, int> > transform_notifications_; |
| DISALLOW_COPY_AND_ASSIGN(WindowObserverTest); |
| }; |
| @@ -1857,6 +1876,33 @@ TEST_F(WindowObserverTest, PropertyChanged) { |
| reinterpret_cast<const void*>(NULL), -3), PropertyChangeInfoAndClear()); |
| } |
| +TEST_F(WindowObserverTest, AncestorTransformed) { |
| + // Create following window hierarchy: |
| + // root_window |
| + // +-- w1 |
| + // +-- w2 |
| + // +-- w3 |
| + // +-- w4 |
| + // Then, apply a transform to |w1| and ensure all its descendants are |
| + // notified. |
| + scoped_ptr<Window> w1(CreateTestWindowWithId(1, root_window())); |
| + w1->AddObserver(this); |
| + scoped_ptr<Window> w2(CreateTestWindowWithId(2, w1.get())); |
| + w2->AddObserver(this); |
| + scoped_ptr<Window> w3(CreateTestWindowWithId(3, w1.get())); |
| + w3->AddObserver(this); |
| + scoped_ptr<Window> w4(CreateTestWindowWithId(4, w3.get())); |
| + w4->AddObserver(this); |
| + |
| + EXPECT_EQ("", TransformNotificationsAndClear()); |
|
sky
2014/09/10 16:10:47
nit: either "" -> std::string() or EXPECT_TRUE(Tra
|
| + |
| + gfx::Transform transform; |
| + transform.Translate(10, 10); |
| + w1->SetTransform(transform); |
| + |
| + EXPECT_EQ("(1,1)(1,2)(1,3)(1,4)", TransformNotificationsAndClear()); |
| +} |
| + |
| TEST_F(WindowTest, AcquireLayer) { |
| scoped_ptr<Window> window1(CreateTestWindowWithId(1, root_window())); |
| scoped_ptr<Window> window2(CreateTestWindowWithId(2, root_window())); |