Home | History | Annotate | Download | only in dev
      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_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 
     13 namespace pp {
     14 
     15 class Rect;
     16 class 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 //   };
     41 class 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 
     48   void SetTextInputType(PP_TextInput_Type_Dev type);
     49   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_
     62