blob: fca87280467f38d6e674cc710cb111b4553cccb9 [file] [log] [blame]
Torne (Richard Coles)58218062012-11-14 11:43:16 +00001// 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_CPP_DEV_TEXT_INPUT_DEV_H_
6#define PPAPI_CPP_DEV_TEXT_INPUT_DEV_H_
7
8#include <string>
9
10#include "ppapi/c/dev/ppb_text_input_dev.h"
11#include "ppapi/cpp/instance_handle.h"
12
13namespace pp {
14
15class Rect;
16class Instance;
17
18// This class allows you to associate the PPP_TextInput_Dev and
19// PPB_TextInput_Dev C-based interfaces with an object. It associates itself
20// with the given instance, and registers as the global handler for handling the
21// PPP_TextInput_Dev interface that the browser calls.
22//
23// You would typically use this either via inheritance on your instance:
24// class MyInstance : public pp::Instance, public pp::TextInput_Dev {
25// MyInstance() : pp::TextInput_Dev(this) {
26// }
27// ...
28// };
29//
30// or by composition:
31// class MyTextInput : public pp::TextInput_Dev {
32// ...
33// };
34//
35// class MyInstance : public pp::Instance {
36// MyInstance() : text_input_(this) {
37// }
38//
39// MyTextInput text_input_;
40// };
41class TextInput_Dev {
42 public:
43 explicit TextInput_Dev(Instance* instance);
44 virtual ~TextInput_Dev();
45
46 virtual void RequestSurroundingText(uint32_t desired_number_of_characters);
47
Ben Murdochbb1529c2013-08-08 10:24:53 +010048 void SetTextInputType(PP_TextInput_Type_Dev type);
Torne (Richard Coles)58218062012-11-14 11:43:16 +000049 void UpdateCaretPosition(const Rect& caret, const Rect& bounding_box);
50 void CancelCompositionText();
51 void SelectionChanged();
52 void UpdateSurroundingText(const std::string& text,
53 uint32_t caret, uint32_t anchor);
54
55 private:
56 InstanceHandle instance_;
57};
58
59} // namespace pp
60
61#endif // PPAPI_CPP_DEV_TEXT_INPUT_DEV_H_