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

Side by Side Diff: ui/aura/window_unittest.cc

Issue 2632543003: Refactor and push window properties up to class properties. (Closed)
Patch Set: More build fixes Created 3 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ui/aura/window.h" 5 #include "ui/aura/window.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 8
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 12 matching lines...) Expand all
23 #include "ui/aura/client/window_parenting_client.h" 23 #include "ui/aura/client/window_parenting_client.h"
24 #include "ui/aura/layout_manager.h" 24 #include "ui/aura/layout_manager.h"
25 #include "ui/aura/test/aura_test_base.h" 25 #include "ui/aura/test/aura_test_base.h"
26 #include "ui/aura/test/aura_test_utils.h" 26 #include "ui/aura/test/aura_test_utils.h"
27 #include "ui/aura/test/test_window_delegate.h" 27 #include "ui/aura/test/test_window_delegate.h"
28 #include "ui/aura/test/test_windows.h" 28 #include "ui/aura/test/test_windows.h"
29 #include "ui/aura/test/window_test_api.h" 29 #include "ui/aura/test/window_test_api.h"
30 #include "ui/aura/window_delegate.h" 30 #include "ui/aura/window_delegate.h"
31 #include "ui/aura/window_event_dispatcher.h" 31 #include "ui/aura/window_event_dispatcher.h"
32 #include "ui/aura/window_observer.h" 32 #include "ui/aura/window_observer.h"
33 #include "ui/aura/window_property.h"
34 #include "ui/aura/window_tree_host.h" 33 #include "ui/aura/window_tree_host.h"
34 #include "ui/base/class_property.h"
35 #include "ui/base/hit_test.h" 35 #include "ui/base/hit_test.h"
36 #include "ui/compositor/layer.h" 36 #include "ui/compositor/layer.h"
37 #include "ui/compositor/layer_animation_observer.h" 37 #include "ui/compositor/layer_animation_observer.h"
38 #include "ui/compositor/scoped_animation_duration_scale_mode.h" 38 #include "ui/compositor/scoped_animation_duration_scale_mode.h"
39 #include "ui/compositor/scoped_layer_animation_settings.h" 39 #include "ui/compositor/scoped_layer_animation_settings.h"
40 #include "ui/compositor/test/test_layers.h" 40 #include "ui/compositor/test/test_layers.h"
41 #include "ui/display/screen.h" 41 #include "ui/display/screen.h"
42 #include "ui/events/event.h" 42 #include "ui/events/event.h"
43 #include "ui/events/event_utils.h" 43 #include "ui/events/event_utils.h"
44 #include "ui/events/gesture_detection/gesture_configuration.h" 44 #include "ui/events/gesture_detection/gesture_configuration.h"
45 #include "ui/events/keycodes/keyboard_codes.h" 45 #include "ui/events/keycodes/keyboard_codes.h"
46 #include "ui/events/test/event_generator.h" 46 #include "ui/events/test/event_generator.h"
47 #include "ui/gfx/canvas.h" 47 #include "ui/gfx/canvas.h"
48 #include "ui/gfx/geometry/vector2d.h" 48 #include "ui/gfx/geometry/vector2d.h"
49 #include "ui/gfx/skia_util.h" 49 #include "ui/gfx/skia_util.h"
50 50
51 DECLARE_WINDOW_PROPERTY_TYPE(const char*) 51 DECLARE_UI_CLASS_PROPERTY_TYPE(const char*)
52 52
53 namespace { 53 namespace {
54 54
55 enum class DeletionOrder { 55 enum class DeletionOrder {
56 LAYOUT_MANAGER_FIRST, 56 LAYOUT_MANAGER_FIRST,
57 PROPERTY_FIRST, 57 PROPERTY_FIRST,
58 UNKNOWN, 58 UNKNOWN,
59 }; 59 };
60 60
61 class DeletionTracker { 61 class DeletionTracker {
(...skipping 29 matching lines...) Expand all
91 public: 91 public:
92 explicit DeletionTestProperty(DeletionTracker* tracker) : tracker_(tracker) {} 92 explicit DeletionTestProperty(DeletionTracker* tracker) : tracker_(tracker) {}
93 ~DeletionTestProperty() { tracker_->PropertyDeleted(); } 93 ~DeletionTestProperty() { tracker_->PropertyDeleted(); }
94 94
95 private: 95 private:
96 DeletionTracker* tracker_; 96 DeletionTracker* tracker_;
97 97
98 DISALLOW_COPY_AND_ASSIGN(DeletionTestProperty); 98 DISALLOW_COPY_AND_ASSIGN(DeletionTestProperty);
99 }; 99 };
100 100
101 class TestProperty { 101 DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(DeletionTestProperty,
102 public: 102 kDeletionTestPropertyKey,
103 TestProperty() {} 103 nullptr);
104 ~TestProperty() {
105 last_deleted_ = this;
106 }
107 static TestProperty* last_deleted() { return last_deleted_; }
108
109 private:
110 static TestProperty* last_deleted_;
111 DISALLOW_COPY_AND_ASSIGN(TestProperty);
112 };
113
114 TestProperty* TestProperty::last_deleted_ = nullptr;
115
116 DEFINE_OWNED_WINDOW_PROPERTY_KEY(TestProperty, kOwnedKey, NULL);
117 DEFINE_OWNED_WINDOW_PROPERTY_KEY(DeletionTestProperty,
118 kDeletionTestPropertyKey,
119 nullptr);
120 104
121 } // namespace 105 } // namespace
122 106
123 DECLARE_WINDOW_PROPERTY_TYPE(TestProperty*); 107 DECLARE_UI_CLASS_PROPERTY_TYPE(DeletionTestProperty*);
124
125 DECLARE_WINDOW_PROPERTY_TYPE(DeletionTestProperty*);
126 108
127 namespace aura { 109 namespace aura {
128 namespace test { 110 namespace test {
129 111
130 class WindowTest : public AuraTestBaseWithType { 112 class WindowTest : public AuraTestBaseWithType {
131 public: 113 public:
132 WindowTest() : max_separation_(0) { 114 WindowTest() : max_separation_(0) {
133 } 115 }
134 116
135 void SetUp() override { 117 void SetUp() override {
(...skipping 1512 matching lines...) Expand 10 before | Expand all | Expand 10 after
1648 transform.Translate(size.height(), 0.0); 1630 transform.Translate(size.height(), 0.0);
1649 transform.Rotate(90.0); 1631 transform.Rotate(90.0);
1650 host()->SetRootTransform(transform); 1632 host()->SetRootTransform(transform);
1651 1633
1652 ui::TouchEvent press( 1634 ui::TouchEvent press(
1653 ui::ET_TOUCH_PRESSED, gfx::Point(size.height() - 10, 10), 0, getTime()); 1635 ui::ET_TOUCH_PRESSED, gfx::Point(size.height() - 10, 10), 0, getTime());
1654 DispatchEventUsingWindowDispatcher(&press); 1636 DispatchEventUsingWindowDispatcher(&press);
1655 EXPECT_EQ(gfx::Point(10, 10).ToString(), delegate->position().ToString()); 1637 EXPECT_EQ(gfx::Point(10, 10).ToString(), delegate->position().ToString());
1656 } 1638 }
1657 1639
1658 namespace {
1659 DEFINE_WINDOW_PROPERTY_KEY(int, kIntKey, -2);
1660 DEFINE_WINDOW_PROPERTY_KEY(const char*, kStringKey, "squeamish");
1661 }
1662
1663 TEST_P(WindowTest, Property) { 1640 TEST_P(WindowTest, Property) {
1664 std::unique_ptr<Window> w(CreateTestWindowWithId(0, root_window())); 1641 std::unique_ptr<Window> w(CreateTestWindowWithId(0, root_window()));
1665 1642
1666 static const char native_prop_key[] = "fnord"; 1643 static const char native_prop_key[] = "fnord";
1667 1644
1668 // Non-existent properties should return the default values. 1645 // Non-existent properties should return the default values.
1669 EXPECT_EQ(-2, w->GetProperty(kIntKey)); 1646 EXPECT_EQ(nullptr, w->GetNativeWindowProperty(native_prop_key));
1670 EXPECT_EQ(std::string("squeamish"), w->GetProperty(kStringKey));
1671 EXPECT_EQ(NULL, w->GetNativeWindowProperty(native_prop_key));
1672
1673 // A set property value should be returned again (even if it's the default
1674 // value).
1675 w->SetProperty(kIntKey, INT_MAX);
1676 EXPECT_EQ(INT_MAX, w->GetProperty(kIntKey));
1677 w->SetProperty(kIntKey, -2);
1678 EXPECT_EQ(-2, w->GetProperty(kIntKey));
1679 w->SetProperty(kIntKey, INT_MIN);
1680 EXPECT_EQ(INT_MIN, w->GetProperty(kIntKey));
1681
1682 w->SetProperty(kStringKey, static_cast<const char*>(NULL));
1683 EXPECT_EQ(NULL, w->GetProperty(kStringKey));
1684 w->SetProperty(kStringKey, "squeamish");
1685 EXPECT_EQ(std::string("squeamish"), w->GetProperty(kStringKey));
1686 w->SetProperty(kStringKey, "ossifrage");
1687 EXPECT_EQ(std::string("ossifrage"), w->GetProperty(kStringKey));
1688 1647
1689 w->SetNativeWindowProperty(native_prop_key, &*w); 1648 w->SetNativeWindowProperty(native_prop_key, &*w);
1690 EXPECT_EQ(&*w, w->GetNativeWindowProperty(native_prop_key)); 1649 EXPECT_EQ(&*w, w->GetNativeWindowProperty(native_prop_key));
1691 w->SetNativeWindowProperty(native_prop_key, NULL); 1650 w->SetNativeWindowProperty(native_prop_key, nullptr);
1692 EXPECT_EQ(NULL, w->GetNativeWindowProperty(native_prop_key)); 1651 EXPECT_EQ(nullptr, w->GetNativeWindowProperty(native_prop_key));
1693
1694 // ClearProperty should restore the default value.
1695 w->ClearProperty(kIntKey);
1696 EXPECT_EQ(-2, w->GetProperty(kIntKey));
1697 w->ClearProperty(kStringKey);
1698 EXPECT_EQ(std::string("squeamish"), w->GetProperty(kStringKey));
1699 }
1700
1701 TEST_P(WindowTest, OwnedProperty) {
1702 std::unique_ptr<Window> w(CreateTestWindowWithId(0, root_window()));
1703 EXPECT_EQ(NULL, w->GetProperty(kOwnedKey));
1704 TestProperty* last_deleted = TestProperty::last_deleted();
1705 TestProperty* p1 = new TestProperty();
1706 w->SetProperty(kOwnedKey, p1);
1707 EXPECT_EQ(p1, w->GetProperty(kOwnedKey));
1708 EXPECT_EQ(last_deleted, TestProperty::last_deleted());
1709
1710 TestProperty* p2 = new TestProperty();
1711 w->SetProperty(kOwnedKey, p2);
1712 EXPECT_EQ(p2, w->GetProperty(kOwnedKey));
1713 EXPECT_EQ(p1, TestProperty::last_deleted());
1714
1715 w->ClearProperty(kOwnedKey);
1716 EXPECT_EQ(NULL, w->GetProperty(kOwnedKey));
1717 EXPECT_EQ(p2, TestProperty::last_deleted());
1718
1719 TestProperty* p3 = new TestProperty();
1720 w->SetProperty(kOwnedKey, p3);
1721 EXPECT_EQ(p3, w->GetProperty(kOwnedKey));
1722 EXPECT_EQ(p2, TestProperty::last_deleted());
1723 w.reset();
1724 EXPECT_EQ(p3, TestProperty::last_deleted());
1725 } 1652 }
1726 1653
1727 namespace { 1654 namespace {
1728 1655
1729 class DeletionTestLayoutManager : public LayoutManager { 1656 class DeletionTestLayoutManager : public LayoutManager {
1730 public: 1657 public:
1731 explicit DeletionTestLayoutManager(DeletionTracker* tracker) 1658 explicit DeletionTestLayoutManager(DeletionTracker* tracker)
1732 : tracker_(tracker) {} 1659 : tracker_(tracker) {}
1733 ~DeletionTestLayoutManager() override { tracker_->LayoutManagerDeleted(); } 1660 ~DeletionTestLayoutManager() override { tracker_->LayoutManagerDeleted(); }
1734 1661
(...skipping 1252 matching lines...) Expand 10 before | Expand all | Expand 10 after
2987 ::testing::Values(BackendType::CLASSIC, 2914 ::testing::Values(BackendType::CLASSIC,
2988 BackendType::MUS)); 2915 BackendType::MUS));
2989 2916
2990 INSTANTIATE_TEST_CASE_P(/* no prefix */, 2917 INSTANTIATE_TEST_CASE_P(/* no prefix */,
2991 WindowObserverTest, 2918 WindowObserverTest,
2992 ::testing::Values(BackendType::CLASSIC, 2919 ::testing::Values(BackendType::CLASSIC,
2993 BackendType::MUS)); 2920 BackendType::MUS));
2994 2921
2995 } // namespace test 2922 } // namespace test
2996 } // namespace aura 2923 } // namespace aura
OLDNEW
« no previous file with comments | « ui/aura/window_property.h ('k') | ui/base/BUILD.gn » ('j') | ui/base/class_property.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698