| // Copyright 2019 The Chromium 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 "remoting/host/ipc_keyboard_layout_monitor.h" |
| |
| #include <utility> |
| |
| #include "remoting/host/desktop_session_proxy.h" |
| |
| namespace remoting { |
| |
| IpcKeyboardLayoutMonitor::IpcKeyboardLayoutMonitor( |
| base::RepeatingCallback<void(const protocol::KeyboardLayout&)> callback, |
| scoped_refptr<DesktopSessionProxy> desktop_session_proxy) |
| : callback_(std::move(callback)), |
| desktop_session_proxy_(std::move(desktop_session_proxy)), |
| weak_ptr_factory_(this) {} |
| |
| IpcKeyboardLayoutMonitor::~IpcKeyboardLayoutMonitor() = default; |
| |
| void IpcKeyboardLayoutMonitor::Start() { |
| desktop_session_proxy_->SetKeyboardLayoutMonitor( |
| weak_ptr_factory_.GetWeakPtr()); |
| if (desktop_session_proxy_->GetKeyboardCurrentLayout()) { |
| callback_.Run(*desktop_session_proxy_->GetKeyboardCurrentLayout()); |
| } |
| } |
| |
| void remoting::IpcKeyboardLayoutMonitor::OnKeyboardChanged( |
| const protocol::KeyboardLayout& layout) { |
| callback_.Run(layout); |
| } |
| |
| } // namespace remoting |