Commit f09cc4a9 authored by Yukawa@chromium.org's avatar Yukawa@chromium.org

Make NativeWindow accessible from TextInputClient.

On some platforms such as Windows, IME APIs require
native window handle. With this patch set, IME API
wrappers are now able to obtain NativeWindow from
TextInputClient.

BUG=246516,246534

Review URL: https://chromiumcodereview.appspot.com/16154016

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@204060 0039d316-1c4b-4281-b951-d872f2087c98
parent b9d481fb
...@@ -1951,6 +1951,10 @@ void RenderWidgetHostViewAura::InsertChar(char16 ch, int flags) { ...@@ -1951,6 +1951,10 @@ void RenderWidgetHostViewAura::InsertChar(char16 ch, int flags) {
} }
} }
gfx::NativeWindow RenderWidgetHostViewAura::GetAttachedWindow() const {
return window_;
}
ui::TextInputType RenderWidgetHostViewAura::GetTextInputType() const { ui::TextInputType RenderWidgetHostViewAura::GetTextInputType() const {
return text_input_type_; return text_input_type_;
} }
......
...@@ -250,6 +250,7 @@ class RenderWidgetHostViewAura ...@@ -250,6 +250,7 @@ class RenderWidgetHostViewAura
virtual void ClearCompositionText() OVERRIDE; virtual void ClearCompositionText() OVERRIDE;
virtual void InsertText(const string16& text) OVERRIDE; virtual void InsertText(const string16& text) OVERRIDE;
virtual void InsertChar(char16 ch, int flags) OVERRIDE; virtual void InsertChar(char16 ch, int flags) OVERRIDE;
virtual gfx::NativeWindow GetAttachedWindow() const OVERRIDE;
virtual ui::TextInputType GetTextInputType() const OVERRIDE; virtual ui::TextInputType GetTextInputType() const OVERRIDE;
virtual bool CanComposeInline() const OVERRIDE; virtual bool CanComposeInline() const OVERRIDE;
virtual gfx::Rect GetCaretBounds() OVERRIDE; virtual gfx::Rect GetCaretBounds() OVERRIDE;
......
...@@ -1037,6 +1037,10 @@ void RenderWidgetHostViewWin::InsertChar(char16 ch, int flags) { ...@@ -1037,6 +1037,10 @@ void RenderWidgetHostViewWin::InsertChar(char16 ch, int flags) {
NOTIMPLEMENTED(); NOTIMPLEMENTED();
} }
gfx::NativeWindow RenderWidgetHostViewWin::GetAttachedWindow() const {
return m_hWnd;
}
ui::TextInputType RenderWidgetHostViewWin::GetTextInputType() const { ui::TextInputType RenderWidgetHostViewWin::GetTextInputType() const {
if (!base::win::IsTSFAwareRequired()) { if (!base::win::IsTSFAwareRequired()) {
NOTREACHED(); NOTREACHED();
......
...@@ -266,6 +266,7 @@ class RenderWidgetHostViewWin ...@@ -266,6 +266,7 @@ class RenderWidgetHostViewWin
virtual void ClearCompositionText() OVERRIDE; virtual void ClearCompositionText() OVERRIDE;
virtual void InsertText(const string16& text) OVERRIDE; virtual void InsertText(const string16& text) OVERRIDE;
virtual void InsertChar(char16 ch, int flags) OVERRIDE; virtual void InsertChar(char16 ch, int flags) OVERRIDE;
virtual gfx::NativeWindow GetAttachedWindow() const OVERRIDE;
virtual ui::TextInputType GetTextInputType() const OVERRIDE; virtual ui::TextInputType GetTextInputType() const OVERRIDE;
virtual bool CanComposeInline() const OVERRIDE; virtual bool CanComposeInline() const OVERRIDE;
virtual gfx::Rect GetCaretBounds() OVERRIDE; virtual gfx::Rect GetCaretBounds() OVERRIDE;
......
...@@ -400,6 +400,9 @@ class InputMethodIBusTest : public internal::InputMethodDelegate, ...@@ -400,6 +400,9 @@ class InputMethodIBusTest : public internal::InputMethodDelegate,
inserted_char_ = ch; inserted_char_ = ch;
inserted_char_flags_ = flags; inserted_char_flags_ = flags;
} }
virtual gfx::NativeWindow GetAttachedWindow() const OVERRIDE {
return static_cast<gfx::NativeWindow>(NULL);
}
virtual TextInputType GetTextInputType() const OVERRIDE { virtual TextInputType GetTextInputType() const OVERRIDE {
return input_type_; return input_type_;
} }
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "ui/base/ime/text_input_type.h" #include "ui/base/ime/text_input_type.h"
#include "ui/base/range/range.h" #include "ui/base/range/range.h"
#include "ui/base/ui_export.h" #include "ui/base/ui_export.h"
#include "ui/gfx/native_widget_types.h"
namespace gfx { namespace gfx {
class Rect; class Rect;
...@@ -55,6 +56,9 @@ class UI_EXPORT TextInputClient { ...@@ -55,6 +56,9 @@ class UI_EXPORT TextInputClient {
// Input context information ------------------------------------------------- // Input context information -------------------------------------------------
// Returns native window to which input context is bound.
virtual gfx::NativeWindow GetAttachedWindow() const = 0;
// Returns current text input type. It could be changed and even becomes // Returns current text input type. It could be changed and even becomes
// TEXT_INPUT_TYPE_NONE at runtime. // TEXT_INPUT_TYPE_NONE at runtime.
virtual ui::TextInputType GetTextInputType() const = 0; virtual ui::TextInputType GetTextInputType() const = 0;
......
...@@ -26,6 +26,7 @@ class MockTextInputClient : public TextInputClient { ...@@ -26,6 +26,7 @@ class MockTextInputClient : public TextInputClient {
MOCK_METHOD0(ClearCompositionText, void()); MOCK_METHOD0(ClearCompositionText, void());
MOCK_METHOD1(InsertText, void(const string16&)); MOCK_METHOD1(InsertText, void(const string16&));
MOCK_METHOD2(InsertChar, void(char16, int)); MOCK_METHOD2(InsertChar, void(char16, int));
MOCK_CONST_METHOD0(GetAttachedWindow, gfx::NativeWindow());
MOCK_CONST_METHOD0(GetTextInputType, ui::TextInputType()); MOCK_CONST_METHOD0(GetTextInputType, ui::TextInputType());
MOCK_CONST_METHOD0(CanComposeInline, bool()); MOCK_CONST_METHOD0(CanComposeInline, bool());
MOCK_METHOD0(GetCaretBounds, gfx::Rect()); MOCK_METHOD0(GetCaretBounds, gfx::Rect());
......
...@@ -117,6 +117,9 @@ class TestTextInputClient : public ui::TextInputClient { ...@@ -117,6 +117,9 @@ class TestTextInputClient : public ui::TextInputClient {
virtual void ClearCompositionText() OVERRIDE {} virtual void ClearCompositionText() OVERRIDE {}
virtual void InsertText(const string16& text) OVERRIDE {} virtual void InsertText(const string16& text) OVERRIDE {}
virtual void InsertChar(char16 ch, int flags) OVERRIDE {} virtual void InsertChar(char16 ch, int flags) OVERRIDE {}
virtual gfx::NativeWindow GetAttachedWindow() const OVERRIDE {
return static_cast<gfx::NativeWindow>(NULL);
}
virtual ui::TextInputType GetTextInputType() const OVERRIDE { virtual ui::TextInputType GetTextInputType() const OVERRIDE {
return type_; return type_;
} }
......
...@@ -954,6 +954,10 @@ void NativeTextfieldViews::InsertChar(char16 ch, int flags) { ...@@ -954,6 +954,10 @@ void NativeTextfieldViews::InsertChar(char16 ch, int flags) {
OnAfterUserAction(); OnAfterUserAction();
} }
gfx::NativeWindow NativeTextfieldViews::GetAttachedWindow() const {
return GetWidget()->GetNativeWindow();
}
ui::TextInputType NativeTextfieldViews::GetTextInputType() const { ui::TextInputType NativeTextfieldViews::GetTextInputType() const {
return textfield_->GetTextInputType(); return textfield_->GetTextInputType();
} }
......
...@@ -182,6 +182,7 @@ class VIEWS_EXPORT NativeTextfieldViews : public View, ...@@ -182,6 +182,7 @@ class VIEWS_EXPORT NativeTextfieldViews : public View,
virtual void ClearCompositionText() OVERRIDE; virtual void ClearCompositionText() OVERRIDE;
virtual void InsertText(const string16& text) OVERRIDE; virtual void InsertText(const string16& text) OVERRIDE;
virtual void InsertChar(char16 ch, int flags) OVERRIDE; virtual void InsertChar(char16 ch, int flags) OVERRIDE;
virtual gfx::NativeWindow GetAttachedWindow() const OVERRIDE;
virtual ui::TextInputType GetTextInputType() const OVERRIDE; virtual ui::TextInputType GetTextInputType() const OVERRIDE;
virtual bool CanComposeInline() const OVERRIDE; virtual bool CanComposeInline() const OVERRIDE;
virtual gfx::Rect GetCaretBounds() OVERRIDE; virtual gfx::Rect GetCaretBounds() OVERRIDE;
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "ui/base/ime/text_input_type.h" #include "ui/base/ime/text_input_type.h"
#include "ui/base/range/range.h" #include "ui/base/range/range.h"
#include "ui/views/controls/tree/tree_view.h" #include "ui/views/controls/tree/tree_view.h"
#include "ui/views/widget/widget.h"
namespace views { namespace views {
...@@ -54,6 +55,10 @@ void TreeViewSelector::InsertChar(char16 ch, int flags) { ...@@ -54,6 +55,10 @@ void TreeViewSelector::InsertChar(char16 ch, int flags) {
OnTextInput(string16(1, ch)); OnTextInput(string16(1, ch));
} }
gfx::NativeWindow TreeViewSelector::GetAttachedWindow() const {
return tree_->GetWidget()->GetNativeWindow();
}
ui::TextInputType TreeViewSelector::GetTextInputType() const { ui::TextInputType TreeViewSelector::GetTextInputType() const {
return ui::TEXT_INPUT_TYPE_TEXT; return ui::TEXT_INPUT_TYPE_TEXT;
} }
......
...@@ -31,6 +31,7 @@ class VIEWS_EXPORT TreeViewSelector : public ui::TextInputClient { ...@@ -31,6 +31,7 @@ class VIEWS_EXPORT TreeViewSelector : public ui::TextInputClient {
virtual void ClearCompositionText() OVERRIDE; virtual void ClearCompositionText() OVERRIDE;
virtual void InsertText(const string16& text) OVERRIDE; virtual void InsertText(const string16& text) OVERRIDE;
virtual void InsertChar(char16 ch, int flags) OVERRIDE; virtual void InsertChar(char16 ch, int flags) OVERRIDE;
virtual gfx::NativeWindow GetAttachedWindow() const OVERRIDE;
virtual ui::TextInputType GetTextInputType() const OVERRIDE; virtual ui::TextInputType GetTextInputType() const OVERRIDE;
virtual bool CanComposeInline() const OVERRIDE; virtual bool CanComposeInline() const OVERRIDE;
virtual gfx::Rect GetCaretBounds() OVERRIDE; virtual gfx::Rect GetCaretBounds() OVERRIDE;
......
...@@ -117,6 +117,12 @@ void InputMethodBridge::InsertChar(char16 ch, int flags) { ...@@ -117,6 +117,12 @@ void InputMethodBridge::InsertChar(char16 ch, int flags) {
client->InsertChar(ch, flags); client->InsertChar(ch, flags);
} }
gfx::NativeWindow InputMethodBridge::GetAttachedWindow() const {
TextInputClient* client = GetTextInputClient();
return client ?
client->GetAttachedWindow() : static_cast<gfx::NativeWindow>(NULL);
}
ui::TextInputType InputMethodBridge::GetTextInputType() const { ui::TextInputType InputMethodBridge::GetTextInputType() const {
TextInputClient* client = GetTextInputClient(); TextInputClient* client = GetTextInputClient();
return client ? client->GetTextInputType() : ui::TEXT_INPUT_TYPE_NONE; return client ? client->GetTextInputType() : ui::TEXT_INPUT_TYPE_NONE;
......
...@@ -53,6 +53,7 @@ class InputMethodBridge : public InputMethodBase, ...@@ -53,6 +53,7 @@ class InputMethodBridge : public InputMethodBase,
virtual void ClearCompositionText() OVERRIDE; virtual void ClearCompositionText() OVERRIDE;
virtual void InsertText(const string16& text) OVERRIDE; virtual void InsertText(const string16& text) OVERRIDE;
virtual void InsertChar(char16 ch, int flags) OVERRIDE; virtual void InsertChar(char16 ch, int flags) OVERRIDE;
virtual gfx::NativeWindow GetAttachedWindow() const OVERRIDE;
virtual ui::TextInputType GetTextInputType() const OVERRIDE; virtual ui::TextInputType GetTextInputType() const OVERRIDE;
virtual bool CanComposeInline() const OVERRIDE; virtual bool CanComposeInline() const OVERRIDE;
virtual gfx::Rect GetCaretBounds() OVERRIDE; virtual gfx::Rect GetCaretBounds() OVERRIDE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment