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 16 class 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