~chrisccoulson/oxide/lp1504853

« back to all changes in this revision

Viewing changes to shared/browser/input/oxide_ime_bridge.h

  • Committer: Chris Coulson
  • Date: 2015-10-21 19:06:54 UTC
  • mfrom: (1215.1.13 oxide)
  • Revision ID: chris.coulson@canonical.com-20151021190654-cfcbueitgzojv7jc
MergeĀ fromĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// vim:expandtab:shiftwidth=2:tabstop=2:
 
2
// Copyright (C) 2015 Canonical Ltd.
 
3
 
 
4
// This library is free software; you can redistribute it and/or
 
5
// modify it under the terms of the GNU Lesser General Public
 
6
// License as published by the Free Software Foundation; either
 
7
// version 2.1 of the License, or (at your option) any later version.
 
8
 
 
9
// This library is distributed in the hope that it will be useful,
 
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
12
// Lesser General Public License for more details.
 
13
 
 
14
// You should have received a copy of the GNU Lesser General Public
 
15
// License along with this library; if not, write to the Free Software
 
16
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
17
 
 
18
#ifndef _OXIDE_SHARED_BROWSER_INPUT_IME_BRIDGE_H_
 
19
#define _OXIDE_SHARED_BROWSER_INPUT_IME_BRIDGE_H_
 
20
 
 
21
#include <vector>
 
22
 
 
23
#include "base/macros.h"
 
24
#include "base/strings/string16.h"
 
25
#include "third_party/WebKit/public/web/WebCompositionUnderline.h"
 
26
#include "ui/base/ime/text_input_type.h"
 
27
#include "ui/gfx/geometry/rect.h"
 
28
 
 
29
namespace gfx {
 
30
class Range;
 
31
}
 
32
 
 
33
namespace oxide {
 
34
 
 
35
// This class contains state for a particular RWHV. InputMethodContext is
 
36
// connected to one ImeBridge
 
37
class ImeBridge {
 
38
 public:
 
39
  ImeBridge();
 
40
  virtual ~ImeBridge();
 
41
 
 
42
  ui::TextInputType text_input_type() const { return text_input_type_; }
 
43
 
 
44
  bool show_ime_if_needed() const { return show_ime_if_needed_; }
 
45
 
 
46
  gfx::Rect caret_rect() const { return caret_rect_; }
 
47
 
 
48
  size_t selection_cursor_position() const {
 
49
    return selection_cursor_position_;
 
50
  }
 
51
 
 
52
  size_t selection_anchor_position() const {
 
53
    return selection_anchor_position_;
 
54
  }
 
55
 
 
56
  bool focused_node_is_editable() const {
 
57
    return focused_node_is_editable_;
 
58
  }
 
59
 
 
60
  virtual base::string16 GetSelectionText() const = 0;
 
61
  virtual base::string16 GetSelectedText() const = 0;
 
62
 
 
63
  virtual void CommitText(const base::string16& text,
 
64
                          const gfx::Range& replacement_range) = 0;
 
65
  virtual void SetComposingText(
 
66
      const base::string16& text,
 
67
      const std::vector<blink::WebCompositionUnderline>& underlines,
 
68
      const gfx::Range& selection_range) = 0;
 
69
 
 
70
 protected:
 
71
  ui::TextInputType text_input_type_;
 
72
  bool show_ime_if_needed_;
 
73
  gfx::Rect caret_rect_;
 
74
  size_t selection_cursor_position_;
 
75
  size_t selection_anchor_position_;
 
76
  bool focused_node_is_editable_;
 
77
 
 
78
 private:
 
79
  DISALLOW_COPY_AND_ASSIGN(ImeBridge);
 
80
};
 
81
 
 
82
} // namespace oxide
 
83
 
 
84
#endif // _OXIDE_SHARED_BROWSER_INPUT_IME_BRIDGE_H_