// Copyright (c) 2011 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 CHROME_TEST_WEBDRIVER_KEYCODE_TEXT_CONVERSION_H_
#define CHROME_TEST_WEBDRIVER_KEYCODE_TEXT_CONVERSION_H_

#include <string>

#include "base/strings/string16.h"
#include "ui/base/keycodes/keyboard_codes.h"

namespace webdriver {

// These functions only support conversion of characters in the BMP
// (Basic Multilingual Plane).

// Returns the text in UTF8 that would be produced from the given key code and
// modifiers with the current keyboard layout, or "" if no character would
// be produced. This will return "" if the produced text contains characters
// outside the BMP.
std::string ConvertKeyCodeToText(ui::KeyboardCode key_code, int modifiers);

// Converts a character to the key code and modifiers that would produce
// the character using the current keyboard layout. Returns true on success.
bool ConvertCharToKeyCode(
    char16 key, ui::KeyboardCode* key_code, int *necessary_modifiers);

}  // namespace webdriver

#endif  // CHROME_TEST_WEBDRIVER_KEYCODE_TEXT_CONVERSION_H_
