// Copyright 2021 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/desktop_and_cursor_composer_notifier.h"

#include "remoting/proto/event.pb.h"

namespace remoting {
DesktopAndCursorComposerNotifier::DesktopAndCursorComposerNotifier(
    InputStub* input_stub,
    EventHandler* event_handler)
    : InputFilter(input_stub), event_handler_(event_handler) {}

DesktopAndCursorComposerNotifier::~DesktopAndCursorComposerNotifier() = default;

void DesktopAndCursorComposerNotifier::InjectMouseEvent(
    const protocol::MouseEvent& event) {
  NotifyEventHandler(event.has_delta_x() || event.has_delta_y());

  InputFilter::InjectMouseEvent(event);
}

void DesktopAndCursorComposerNotifier::OnLocalInput() {
  NotifyEventHandler(true);
}

void DesktopAndCursorComposerNotifier::NotifyEventHandler(bool enabled) {
  if (enabled != is_enabled_ || !has_triggered_) {
    event_handler_->SetComposeEnabled(enabled);
    is_enabled_ = enabled;
    has_triggered_ = true;
  }
}

}  // namespace remoting
