blob: 4efa9a3aa32c772755331efdf63ebee988119095 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/ui/scenic/lib/display/tests/mock_display_coordinator.h"
#include <fuchsia/hardware/display/cpp/fidl.h>
namespace scenic_impl {
namespace display {
namespace test {
DisplayCoordinatorObjects CreateMockDisplayCoordinator(fuchsia::hardware::display::Info info) {
DisplayCoordinatorObjects coordinator_objs;
zx::channel coordinator_channel_server;
zx::channel coordinator_channel_client;
FX_CHECK(ZX_OK ==
zx::channel::create(0, &coordinator_channel_server, &coordinator_channel_client));
coordinator_objs.mock = std::make_unique<MockDisplayCoordinator>(std::move(info));
coordinator_objs.mock->Bind(std::move(coordinator_channel_server));
coordinator_objs.interface_ptr =
std::make_shared<fuchsia::hardware::display::CoordinatorSyncPtr>();
coordinator_objs.interface_ptr->Bind(std::move(coordinator_channel_client));
coordinator_objs.listener =
std::make_unique<DisplayCoordinatorListener>(coordinator_objs.interface_ptr);
return coordinator_objs;
}
void MockDisplayCoordinator::SetDisplayMode(fuchsia::hardware::display::types::DisplayId display_id,
fuchsia::hardware::display::Mode mode) {
FX_CHECK(std::find_if(display_info_.modes.begin(), display_info_.modes.end(),
[mode](const fuchsia::hardware::display::Mode& current_mode) {
return fidl::Equals(current_mode, mode);
}) != display_info_.modes.end());
}
void MockDisplayCoordinator::SendOnDisplayChangedEvent() {
FX_CHECK(binding_.is_bound());
events().OnDisplaysChanged(/*added=*/
{
display_info_,
},
/*removed=*/{});
}
} // namespace test
} // namespace display
} // namespace scenic_impl