text: // Copyright 2017 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.
  
  #ifndef REMOTING_CLIENT_INPUT_TEXT_KEYBOARD_INPUT_STRATEGY_H_
  #define REMOTING_CLIENT_INPUT_TEXT_KEYBOARD_INPUT_STRATEGY_H_
  
  #include <queue>
  
  #include "base/memory/raw_ptr.h"
  #include "remoting/client/input/keyboard_input_strategy.h"
  
  namespace remoting {
  
  class ClientInputInjector;
  
  class TextKeyboardInputStrategy : public KeyboardInputStrategy {
   public:
    explicit TextKeyboardInputStrategy(ClientInputInjector* input_injector);
  
    TextKeyboardInputStrategy(const TextKeyboardInputStrategy&) = delete;
    TextKeyboardInputStrategy& operator=(const TextKeyboardInputStrategy&) =
        delete;
  
    ~TextKeyboardInputStrategy() override;
  
    // KeyboardInputStrategy overrides.
    void HandleTextEvent(const std::string& text, uint8_t modifiers) override;
    void HandleKeysEvent(base::queue<KeyEvent> keys) override;
  
   private:
    base::queue<KeyEvent> ConvertDeleteEvent(uint8_t modifiers);
  
    raw_ptr<ClientInputInjector> input_injector_;
  };
  
  }  // namespace remoting
  #endif  // REMOTING_CLIENT_INPUT_TEXT_KEYBOARD_INPUT_STRATEGY_H_
  