| 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 "services/ui/ws/user_display_manager.h" | 5 #include "services/ui/ws/user_display_manager.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 std::string display_ids; | 63 std::string display_ids; |
| 64 for (const auto& wm_display : wm_displays) { | 64 for (const auto& wm_display : wm_displays) { |
| 65 if (!display_ids.empty()) | 65 if (!display_ids.empty()) |
| 66 display_ids += " "; | 66 display_ids += " "; |
| 67 display_ids += base::Int64ToString(wm_display->display.id()); | 67 display_ids += base::Int64ToString(wm_display->display.id()); |
| 68 } | 68 } |
| 69 return display_ids; | 69 return display_ids; |
| 70 } | 70 } |
| 71 | 71 |
| 72 // mojom::DisplayManagerObserver: | 72 // mojom::DisplayManagerObserver: |
| 73 void OnDisplays(std::vector<mojom::WsDisplayPtr> displays, | 73 void OnDisplaysChanged(std::vector<mojom::WsDisplayPtr> displays, |
| 74 int64_t primary_display_id, | 74 int64_t primary_display_id, |
| 75 int64_t internal_display_id) override { | 75 int64_t internal_display_id) override { |
| 76 AddCall("OnDisplays " + DisplayIdsToString(displays)); | |
| 77 } | |
| 78 void OnDisplaysChanged(std::vector<mojom::WsDisplayPtr> displays) override { | |
| 79 AddCall("OnDisplaysChanged " + DisplayIdsToString(displays)); | 76 AddCall("OnDisplaysChanged " + DisplayIdsToString(displays)); |
| 80 } | 77 } |
| 81 void OnDisplayRemoved(int64_t id) override { | |
| 82 AddCall("OnDisplayRemoved " + base::Int64ToString(id)); | |
| 83 } | |
| 84 void OnPrimaryDisplayChanged(int64_t id) override { | |
| 85 AddCall("OnPrimaryDisplayChanged " + base::Int64ToString(id)); | |
| 86 } | |
| 87 | 78 |
| 88 mojo::Binding<mojom::DisplayManagerObserver> binding_; | 79 mojo::Binding<mojom::DisplayManagerObserver> binding_; |
| 89 std::string observer_calls_; | 80 std::string observer_calls_; |
| 90 | 81 |
| 91 DISALLOW_COPY_AND_ASSIGN(TestDisplayManagerObserver); | 82 DISALLOW_COPY_AND_ASSIGN(TestDisplayManagerObserver); |
| 92 }; | 83 }; |
| 93 | 84 |
| 94 mojom::FrameDecorationValuesPtr CreateDefaultFrameDecorationValues() { | 85 mojom::FrameDecorationValuesPtr CreateDefaultFrameDecorationValues() { |
| 95 return mojom::FrameDecorationValues::New(); | 86 return mojom::FrameDecorationValues::New(); |
| 96 } | 87 } |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 display_manager_observer1.GetAndClearObserverCalls()); | 131 display_manager_observer1.GetAndClearObserverCalls()); |
| 141 | 132 |
| 142 // Set the frame decoration values, which should trigger sending immediately. | 133 // Set the frame decoration values, which should trigger sending immediately. |
| 143 ASSERT_EQ(1u, display_manager->displays().size()); | 134 ASSERT_EQ(1u, display_manager->displays().size()); |
| 144 window_server() | 135 window_server() |
| 145 ->window_manager_window_tree_factory_set() | 136 ->window_manager_window_tree_factory_set() |
| 146 ->GetWindowManagerStateForUser(kUserId1) | 137 ->GetWindowManagerStateForUser(kUserId1) |
| 147 ->SetFrameDecorationValues(CreateDefaultFrameDecorationValues()); | 138 ->SetFrameDecorationValues(CreateDefaultFrameDecorationValues()); |
| 148 RunUntilIdle(); | 139 RunUntilIdle(); |
| 149 | 140 |
| 150 EXPECT_EQ("OnDisplays 1", | 141 EXPECT_EQ("OnDisplaysChanged 1", |
| 151 display_manager_observer1.GetAndClearObserverCalls()); | 142 display_manager_observer1.GetAndClearObserverCalls()); |
| 152 } | 143 } |
| 153 | 144 |
| 154 TEST_F(UserDisplayManagerTest, AddObserverAfterFrameDecorationsSet) { | 145 TEST_F(UserDisplayManagerTest, AddObserverAfterFrameDecorationsSet) { |
| 155 screen_manager().AddDisplay(); | 146 screen_manager().AddDisplay(); |
| 156 | 147 |
| 157 TestDisplayManagerObserver display_manager_observer1; | 148 TestDisplayManagerObserver display_manager_observer1; |
| 158 DisplayManager* display_manager = window_server()->display_manager(); | 149 DisplayManager* display_manager = window_server()->display_manager(); |
| 159 AddWindowManager(window_server(), kUserId1); | 150 AddWindowManager(window_server(), kUserId1); |
| 160 UserDisplayManager* user_display_manager1 = | 151 UserDisplayManager* user_display_manager1 = |
| 161 display_manager->GetUserDisplayManager(kUserId1); | 152 display_manager->GetUserDisplayManager(kUserId1); |
| 162 ASSERT_TRUE(user_display_manager1); | 153 ASSERT_TRUE(user_display_manager1); |
| 163 ASSERT_EQ(1u, display_manager->displays().size()); | 154 ASSERT_EQ(1u, display_manager->displays().size()); |
| 164 window_server() | 155 window_server() |
| 165 ->window_manager_window_tree_factory_set() | 156 ->window_manager_window_tree_factory_set() |
| 166 ->GetWindowManagerStateForUser(kUserId1) | 157 ->GetWindowManagerStateForUser(kUserId1) |
| 167 ->SetFrameDecorationValues(CreateDefaultFrameDecorationValues()); | 158 ->SetFrameDecorationValues(CreateDefaultFrameDecorationValues()); |
| 168 | 159 |
| 169 user_display_manager1->AddObserver(display_manager_observer1.GetPtr()); | 160 user_display_manager1->AddObserver(display_manager_observer1.GetPtr()); |
| 170 RunUntilIdle(); | 161 RunUntilIdle(); |
| 171 | 162 |
| 172 EXPECT_EQ("OnDisplays 1", | 163 EXPECT_EQ("OnDisplaysChanged 1", |
| 173 display_manager_observer1.GetAndClearObserverCalls()); | 164 display_manager_observer1.GetAndClearObserverCalls()); |
| 174 } | 165 } |
| 175 | 166 |
| 176 TEST_F(UserDisplayManagerTest, AddRemoveDisplay) { | 167 TEST_F(UserDisplayManagerTest, AddRemoveDisplay) { |
| 177 screen_manager().AddDisplay(); | 168 screen_manager().AddDisplay(); |
| 178 | 169 |
| 179 TestDisplayManagerObserver display_manager_observer1; | 170 TestDisplayManagerObserver display_manager_observer1; |
| 180 DisplayManager* display_manager = window_server()->display_manager(); | 171 DisplayManager* display_manager = window_server()->display_manager(); |
| 181 AddWindowManager(window_server(), kUserId1); | 172 AddWindowManager(window_server(), kUserId1); |
| 182 UserDisplayManager* user_display_manager1 = | 173 UserDisplayManager* user_display_manager1 = |
| 183 display_manager->GetUserDisplayManager(kUserId1); | 174 display_manager->GetUserDisplayManager(kUserId1); |
| 184 ASSERT_TRUE(user_display_manager1); | 175 ASSERT_TRUE(user_display_manager1); |
| 185 ASSERT_EQ(1u, display_manager->displays().size()); | 176 ASSERT_EQ(1u, display_manager->displays().size()); |
| 186 window_server() | 177 window_server() |
| 187 ->window_manager_window_tree_factory_set() | 178 ->window_manager_window_tree_factory_set() |
| 188 ->GetWindowManagerStateForUser(kUserId1) | 179 ->GetWindowManagerStateForUser(kUserId1) |
| 189 ->SetFrameDecorationValues(CreateDefaultFrameDecorationValues()); | 180 ->SetFrameDecorationValues(CreateDefaultFrameDecorationValues()); |
| 190 user_display_manager1->AddObserver(display_manager_observer1.GetPtr()); | 181 user_display_manager1->AddObserver(display_manager_observer1.GetPtr()); |
| 191 RunUntilIdle(); | 182 RunUntilIdle(); |
| 192 | 183 |
| 193 EXPECT_EQ("OnDisplays 1", | 184 EXPECT_EQ("OnDisplaysChanged 1", |
| 194 display_manager_observer1.GetAndClearObserverCalls()); | 185 display_manager_observer1.GetAndClearObserverCalls()); |
| 195 | 186 |
| 196 // Add another display. | 187 // Add another display. |
| 197 const int64_t second_display_id = screen_manager().AddDisplay(); | 188 const int64_t second_display_id = screen_manager().AddDisplay(); |
| 198 RunUntilIdle(); | 189 RunUntilIdle(); |
| 199 | 190 |
| 200 // Observer should be notified immediately as frame decorations were set. | 191 // Observer should be notified immediately as frame decorations were set. |
| 201 EXPECT_EQ("OnDisplaysChanged 2", | 192 EXPECT_EQ("OnDisplaysChanged 1 2", |
| 202 display_manager_observer1.GetAndClearObserverCalls()); | 193 display_manager_observer1.GetAndClearObserverCalls()); |
| 203 | 194 |
| 204 // Remove the display and verify observer is notified. | 195 // Remove the display and verify observer is notified. |
| 205 screen_manager().RemoveDisplay(second_display_id); | 196 screen_manager().RemoveDisplay(second_display_id); |
| 206 RunUntilIdle(); | 197 RunUntilIdle(); |
| 207 | 198 |
| 208 EXPECT_EQ("OnDisplayRemoved 2", | 199 EXPECT_EQ("OnDisplaysChanged 1", |
| 209 display_manager_observer1.GetAndClearObserverCalls()); | 200 display_manager_observer1.GetAndClearObserverCalls()); |
| 210 } | 201 } |
| 211 | 202 |
| 212 } // namespace test | 203 } // namespace test |
| 213 } // namespace ws | 204 } // namespace ws |
| 214 } // namespace ui | 205 } // namespace ui |
| OLD | NEW |