| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 <stdint.h> | 5 #include <stdint.h> |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/atomicops.h" | 9 #include "base/atomicops.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 scoped_refptr<SurfacesState>())); | 102 scoped_refptr<SurfacesState>())); |
| 103 window_server_delegate_.set_window_server(window_server_.get()); | 103 window_server_delegate_.set_window_server(window_server_.get()); |
| 104 } | 104 } |
| 105 | 105 |
| 106 protected: | 106 protected: |
| 107 int32_t cursor_id_; | 107 int32_t cursor_id_; |
| 108 TestPlatformDisplayFactory platform_display_factory_; | 108 TestPlatformDisplayFactory platform_display_factory_; |
| 109 TestWindowServerDelegate window_server_delegate_; | 109 TestWindowServerDelegate window_server_delegate_; |
| 110 std::unique_ptr<WindowServer> window_server_; | 110 std::unique_ptr<WindowServer> window_server_; |
| 111 base::MessageLoop message_loop_; | 111 base::MessageLoop message_loop_; |
| 112 TestWindowManagerFactory test_window_manager_factory_; | |
| 113 | 112 |
| 114 private: | 113 private: |
| 115 DISALLOW_COPY_AND_ASSIGN(UserDisplayManagerTest); | 114 DISALLOW_COPY_AND_ASSIGN(UserDisplayManagerTest); |
| 116 }; | 115 }; |
| 117 | 116 |
| 118 TEST_F(UserDisplayManagerTest, OnlyNotifyWhenFrameDecorationsSet) { | 117 TEST_F(UserDisplayManagerTest, OnlyNotifyWhenFrameDecorationsSet) { |
| 119 window_server_delegate_.set_num_displays_to_create(1); | 118 window_server_delegate_.set_num_displays_to_create(1); |
| 120 | 119 |
| 121 const UserId kUserId1 = "2"; | 120 const UserId kUserId1 = "2"; |
| 122 TestDisplayManagerObserver display_manager_observer1; | 121 TestDisplayManagerObserver display_manager_observer1; |
| 123 DisplayManager* display_manager = window_server_->display_manager(); | 122 DisplayManager* display_manager = window_server_->display_manager(); |
| 124 WindowManagerFactoryRegistryTestApi( | 123 WindowManagerWindowTreeFactorySetTestApi( |
| 125 window_server_->window_manager_factory_registry()) | 124 window_server_->window_manager_window_tree_factory_set()) |
| 126 .AddService(kUserId1, &test_window_manager_factory_); | 125 .Add(kUserId1); |
| 127 UserDisplayManager* user_display_manager1 = | 126 UserDisplayManager* user_display_manager1 = |
| 128 display_manager->GetUserDisplayManager(kUserId1); | 127 display_manager->GetUserDisplayManager(kUserId1); |
| 129 ASSERT_TRUE(user_display_manager1); | 128 ASSERT_TRUE(user_display_manager1); |
| 130 UserDisplayManagerTestApi(user_display_manager1) | 129 UserDisplayManagerTestApi(user_display_manager1) |
| 131 .SetTestObserver(&display_manager_observer1); | 130 .SetTestObserver(&display_manager_observer1); |
| 132 // Observer should not have been notified yet. | 131 // Observer should not have been notified yet. |
| 133 EXPECT_EQ(std::string(), | 132 EXPECT_EQ(std::string(), |
| 134 display_manager_observer1.GetAndClearObserverCalls()); | 133 display_manager_observer1.GetAndClearObserverCalls()); |
| 135 | 134 |
| 136 // Set the frame decoration values, which should trigger sending immediately. | 135 // Set the frame decoration values, which should trigger sending immediately. |
| 137 ASSERT_EQ(1u, display_manager->displays().size()); | 136 ASSERT_EQ(1u, display_manager->displays().size()); |
| 138 Display* display1 = *display_manager->displays().begin(); | 137 Display* display1 = *display_manager->displays().begin(); |
| 139 display1->GetWindowManagerStateForUser(kUserId1)->SetFrameDecorationValues( | 138 display1->GetWindowManagerStateForUser(kUserId1)->SetFrameDecorationValues( |
| 140 CreateDefaultFrameDecorationValues()); | 139 CreateDefaultFrameDecorationValues()); |
| 141 EXPECT_EQ("OnDisplays 1", | 140 EXPECT_EQ("OnDisplays 1", |
| 142 display_manager_observer1.GetAndClearObserverCalls()); | 141 display_manager_observer1.GetAndClearObserverCalls()); |
| 143 | 142 |
| 144 UserDisplayManagerTestApi(user_display_manager1).SetTestObserver(nullptr); | 143 UserDisplayManagerTestApi(user_display_manager1).SetTestObserver(nullptr); |
| 145 } | 144 } |
| 146 | 145 |
| 147 TEST_F(UserDisplayManagerTest, AddObserverAfterFrameDecorationsSet) { | 146 TEST_F(UserDisplayManagerTest, AddObserverAfterFrameDecorationsSet) { |
| 148 window_server_delegate_.set_num_displays_to_create(1); | 147 window_server_delegate_.set_num_displays_to_create(1); |
| 149 | 148 |
| 150 const UserId kUserId1 = "2"; | 149 const UserId kUserId1 = "2"; |
| 151 TestDisplayManagerObserver display_manager_observer1; | 150 TestDisplayManagerObserver display_manager_observer1; |
| 152 DisplayManager* display_manager = window_server_->display_manager(); | 151 DisplayManager* display_manager = window_server_->display_manager(); |
| 153 WindowManagerFactoryRegistryTestApi( | 152 WindowManagerWindowTreeFactorySetTestApi( |
| 154 window_server_->window_manager_factory_registry()) | 153 window_server_->window_manager_window_tree_factory_set()) |
| 155 .AddService(kUserId1, &test_window_manager_factory_); | 154 .Add(kUserId1); |
| 156 UserDisplayManager* user_display_manager1 = | 155 UserDisplayManager* user_display_manager1 = |
| 157 display_manager->GetUserDisplayManager(kUserId1); | 156 display_manager->GetUserDisplayManager(kUserId1); |
| 158 ASSERT_TRUE(user_display_manager1); | 157 ASSERT_TRUE(user_display_manager1); |
| 159 ASSERT_EQ(1u, display_manager->displays().size()); | 158 ASSERT_EQ(1u, display_manager->displays().size()); |
| 160 Display* display1 = *display_manager->displays().begin(); | 159 Display* display1 = *display_manager->displays().begin(); |
| 161 display1->GetWindowManagerStateForUser(kUserId1)->SetFrameDecorationValues( | 160 display1->GetWindowManagerStateForUser(kUserId1)->SetFrameDecorationValues( |
| 162 CreateDefaultFrameDecorationValues()); | 161 CreateDefaultFrameDecorationValues()); |
| 163 | 162 |
| 164 UserDisplayManagerTestApi(user_display_manager1) | 163 UserDisplayManagerTestApi(user_display_manager1) |
| 165 .SetTestObserver(&display_manager_observer1); | 164 .SetTestObserver(&display_manager_observer1); |
| 166 EXPECT_EQ("OnDisplays 1", | 165 EXPECT_EQ("OnDisplays 1", |
| 167 display_manager_observer1.GetAndClearObserverCalls()); | 166 display_manager_observer1.GetAndClearObserverCalls()); |
| 168 | 167 |
| 169 UserDisplayManagerTestApi(user_display_manager1).SetTestObserver(nullptr); | 168 UserDisplayManagerTestApi(user_display_manager1).SetTestObserver(nullptr); |
| 170 } | 169 } |
| 171 | 170 |
| 172 TEST_F(UserDisplayManagerTest, AddRemoveDisplay) { | 171 TEST_F(UserDisplayManagerTest, AddRemoveDisplay) { |
| 173 window_server_delegate_.set_num_displays_to_create(1); | 172 window_server_delegate_.set_num_displays_to_create(1); |
| 174 | 173 |
| 175 const UserId kUserId1 = "2"; | 174 const UserId kUserId1 = "2"; |
| 176 TestDisplayManagerObserver display_manager_observer1; | 175 TestDisplayManagerObserver display_manager_observer1; |
| 177 DisplayManager* display_manager = window_server_->display_manager(); | 176 DisplayManager* display_manager = window_server_->display_manager(); |
| 178 WindowManagerFactoryRegistryTestApi( | 177 WindowManagerWindowTreeFactorySetTestApi( |
| 179 window_server_->window_manager_factory_registry()) | 178 window_server_->window_manager_window_tree_factory_set()) |
| 180 .AddService(kUserId1, &test_window_manager_factory_); | 179 .Add(kUserId1); |
| 181 UserDisplayManager* user_display_manager1 = | 180 UserDisplayManager* user_display_manager1 = |
| 182 display_manager->GetUserDisplayManager(kUserId1); | 181 display_manager->GetUserDisplayManager(kUserId1); |
| 183 ASSERT_TRUE(user_display_manager1); | 182 ASSERT_TRUE(user_display_manager1); |
| 184 ASSERT_EQ(1u, display_manager->displays().size()); | 183 ASSERT_EQ(1u, display_manager->displays().size()); |
| 185 Display* display1 = *display_manager->displays().begin(); | 184 Display* display1 = *display_manager->displays().begin(); |
| 186 display1->GetWindowManagerStateForUser(kUserId1)->SetFrameDecorationValues( | 185 display1->GetWindowManagerStateForUser(kUserId1)->SetFrameDecorationValues( |
| 187 CreateDefaultFrameDecorationValues()); | 186 CreateDefaultFrameDecorationValues()); |
| 188 UserDisplayManagerTestApi(user_display_manager1) | 187 UserDisplayManagerTestApi(user_display_manager1) |
| 189 .SetTestObserver(&display_manager_observer1); | 188 .SetTestObserver(&display_manager_observer1); |
| 190 EXPECT_EQ("OnDisplays 1", | 189 EXPECT_EQ("OnDisplays 1", |
| (...skipping 19 matching lines...) Expand all Loading... |
| 210 | 209 |
| 211 UserDisplayManagerTestApi(user_display_manager1).SetTestObserver(nullptr); | 210 UserDisplayManagerTestApi(user_display_manager1).SetTestObserver(nullptr); |
| 212 } | 211 } |
| 213 | 212 |
| 214 TEST_F(UserDisplayManagerTest, NegativeCoordinates) { | 213 TEST_F(UserDisplayManagerTest, NegativeCoordinates) { |
| 215 window_server_delegate_.set_num_displays_to_create(1); | 214 window_server_delegate_.set_num_displays_to_create(1); |
| 216 | 215 |
| 217 const UserId kUserId1 = "2"; | 216 const UserId kUserId1 = "2"; |
| 218 TestDisplayManagerObserver display_manager_observer1; | 217 TestDisplayManagerObserver display_manager_observer1; |
| 219 DisplayManager* display_manager = window_server_->display_manager(); | 218 DisplayManager* display_manager = window_server_->display_manager(); |
| 220 WindowManagerFactoryRegistryTestApi( | 219 WindowManagerWindowTreeFactorySetTestApi( |
| 221 window_server_->window_manager_factory_registry()) | 220 window_server_->window_manager_window_tree_factory_set()) |
| 222 .AddService(kUserId1, &test_window_manager_factory_); | 221 .Add(kUserId1); |
| 223 UserDisplayManager* user_display_manager1 = | 222 UserDisplayManager* user_display_manager1 = |
| 224 display_manager->GetUserDisplayManager(kUserId1); | 223 display_manager->GetUserDisplayManager(kUserId1); |
| 225 ASSERT_TRUE(user_display_manager1); | 224 ASSERT_TRUE(user_display_manager1); |
| 226 | 225 |
| 227 user_display_manager1->OnMouseCursorLocationChanged(gfx::Point(-10, -11)); | 226 user_display_manager1->OnMouseCursorLocationChanged(gfx::Point(-10, -11)); |
| 228 | 227 |
| 229 base::subtle::Atomic32* cursor_location_memory = nullptr; | 228 base::subtle::Atomic32* cursor_location_memory = nullptr; |
| 230 mojo::ScopedSharedBufferHandle handle = | 229 mojo::ScopedSharedBufferHandle handle = |
| 231 user_display_manager1->GetCursorLocationMemory(); | 230 user_display_manager1->GetCursorLocationMemory(); |
| 232 MojoResult result = mojo::MapBuffer( | 231 MojoResult result = mojo::MapBuffer( |
| 233 handle.get(), 0, | 232 handle.get(), 0, |
| 234 sizeof(base::subtle::Atomic32), | 233 sizeof(base::subtle::Atomic32), |
| 235 reinterpret_cast<void**>(&cursor_location_memory), | 234 reinterpret_cast<void**>(&cursor_location_memory), |
| 236 MOJO_MAP_BUFFER_FLAG_NONE); | 235 MOJO_MAP_BUFFER_FLAG_NONE); |
| 237 ASSERT_EQ(MOJO_RESULT_OK, result); | 236 ASSERT_EQ(MOJO_RESULT_OK, result); |
| 238 | 237 |
| 239 base::subtle::Atomic32 location = | 238 base::subtle::Atomic32 location = |
| 240 base::subtle::NoBarrier_Load(cursor_location_memory); | 239 base::subtle::NoBarrier_Load(cursor_location_memory); |
| 241 EXPECT_EQ(gfx::Point(static_cast<int16_t>(location >> 16), | 240 EXPECT_EQ(gfx::Point(static_cast<int16_t>(location >> 16), |
| 242 static_cast<int16_t>(location & 0xFFFF)), | 241 static_cast<int16_t>(location & 0xFFFF)), |
| 243 gfx::Point(-10, -11)); | 242 gfx::Point(-10, -11)); |
| 244 } | 243 } |
| 245 | 244 |
| 246 } // namespace test | 245 } // namespace test |
| 247 } // namespace ws | 246 } // namespace ws |
| 248 } // namespace mus | 247 } // namespace mus |
| OLD | NEW |