1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef PPAPI_TESTS_TEST_IME_INPUT_EVENT_H_ 6#define PPAPI_TESTS_TEST_IME_INPUT_EVENT_H_ 7 8#include <string> 9#include <utility> 10#include <vector> 11 12#include "ppapi/c/ppb_input_event.h" 13#include "ppapi/cpp/input_event.h" 14#include "ppapi/tests/test_case.h" 15 16class TestImeInputEvent : public TestCase { 17 public: 18 explicit TestImeInputEvent(TestingInstance* instance); 19 ~TestImeInputEvent(); 20 21 // TestCase implementation. 22 virtual void RunTests(const std::string& test_filter); 23 virtual bool Init(); 24 virtual bool HandleInputEvent(const pp::InputEvent& input_event); 25 virtual void HandleMessage(const pp::Var& message_data); 26 virtual void DidChangeView(const pp::View& view); 27 28 private: 29 pp::InputEvent CreateImeCompositionStartEvent(); 30 pp::InputEvent CreateImeCompositionUpdateEvent( 31 const std::string& text, 32 const std::vector<uint32_t>& segments, 33 int32_t target_segment, 34 const std::pair<uint32_t, uint32_t>& selection); 35 pp::InputEvent CreateImeCompositionEndEvent(const std::string& text); 36 pp::InputEvent CreateImeTextEvent(const std::string& text); 37 pp::InputEvent CreateCharEvent(const std::string& text); 38 39 void GetFocusBySimulatingMouseClick(); 40 bool SimulateInputEvent(const pp::InputEvent& input_event); 41 bool AreEquivalentEvents(PP_Resource first, PP_Resource second); 42 43 // The test cases. 44 std::string TestImeCommit(); 45 std::string TestImeCancel(); 46 std::string TestImeUnawareCommit(); 47 std::string TestImeUnawareCancel(); 48 49 const PPB_InputEvent* input_event_interface_; 50 const PPB_KeyboardInputEvent* keyboard_input_event_interface_; 51 const PPB_IMEInputEvent* ime_input_event_interface_; 52 53 pp::Rect view_rect_; 54 bool received_unexpected_event_; 55 bool received_finish_message_; 56 std::vector<pp::InputEvent> expected_events_; 57}; 58 59#endif // PPAPI_TESTS_TEST_IME_INPUT_EVENT_H_ 60