12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CHROME_TEST_CHROMEDRIVER_KEY_CONVERTER_H_
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROME_TEST_CHROMEDRIVER_KEY_CONVERTER_H_
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <list>
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string>
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
11868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h"
12d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ui/events/keycodes/keyboard_codes.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct KeyEvent;
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Status;
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Convenience functions for creating |KeyEvent|s. Used by unittests.
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)KeyEvent CreateKeyDownEvent(ui::KeyboardCode key_code, int modifiers);
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)KeyEvent CreateKeyUpEvent(ui::KeyboardCode key_code, int modifiers);
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)KeyEvent CreateCharEvent(const std::string& unmodified_text,
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         const std::string& modified_text,
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         int modifiers);
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Converts keys into appropriate |KeyEvent|s. This will do a best effort
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// conversion. However, if the input is invalid it will return a status with
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// an error message. If |release_modifiers| is true, all modifiers would be
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// depressed. |modifiers| acts both an input and an output, however, only when
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// the conversion process is successful will |modifiers| be changed.
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)Status ConvertKeysToKeyEvents(const base::string16& keys,
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              bool release_modifiers,
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              int* modifiers,
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                              std::list<KeyEvent>* key_events);
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // CHROME_TEST_CHROMEDRIVER_KEY_CONVERTER_H_
35