| Index: webkit/plugins/ppapi/ppapi_plugin_instance.cc
|
| diff --git a/webkit/plugins/ppapi/ppapi_plugin_instance.cc b/webkit/plugins/ppapi/ppapi_plugin_instance.cc
|
| index 29f9a435a879060df356c105d4f48e3e9be354bd..a89c3e94ad356dff95fb55741dd656b00a5220f0 100644
|
| --- a/webkit/plugins/ppapi/ppapi_plugin_instance.cc
|
| +++ b/webkit/plugins/ppapi/ppapi_plugin_instance.cc
|
| @@ -151,6 +151,24 @@ void DrawEmptyRectangle(HDC dc) {
|
|
|
| namespace {
|
|
|
| +// Check PP_TextInput_Type and ui::TextInputType are kept in sync.
|
| +COMPILE_ASSERT(int(ui::TEXT_INPUT_TYPE_NONE) == \
|
| + int(PP_TEXTINPUT_TYPE_NONE), mismatching_enums);
|
| +COMPILE_ASSERT(int(ui::TEXT_INPUT_TYPE_TEXT) == \
|
| + int(PP_TEXTINPUT_TYPE_TEXT), mismatching_enums);
|
| +COMPILE_ASSERT(int(ui::TEXT_INPUT_TYPE_PASSWORD) == \
|
| + int(PP_TEXTINPUT_TYPE_PASSWORD), mismatching_enums);
|
| +COMPILE_ASSERT(int(ui::TEXT_INPUT_TYPE_SEARCH) == \
|
| + int(PP_TEXTINPUT_TYPE_SEARCH), mismatching_enums);
|
| +COMPILE_ASSERT(int(ui::TEXT_INPUT_TYPE_EMAIL) == \
|
| + int(PP_TEXTINPUT_TYPE_EMAIL), mismatching_enums);
|
| +COMPILE_ASSERT(int(ui::TEXT_INPUT_TYPE_NUMBER) == \
|
| + int(PP_TEXTINPUT_TYPE_NUMBER), mismatching_enums);
|
| +COMPILE_ASSERT(int(ui::TEXT_INPUT_TYPE_TELEPHONE) == \
|
| + int(PP_TEXTINPUT_TYPE_TELEPHONE), mismatching_enums);
|
| +COMPILE_ASSERT(int(ui::TEXT_INPUT_TYPE_URL) == \
|
| + int(PP_TEXTINPUT_TYPE_URL), mismatching_enums);
|
| +
|
| // The default text input type is to regard the plugin always accept text input.
|
| // This is for allowing users to use input methods even on completely-IME-
|
| // unaware plugins (e.g., PPAPI Flash or PDF plugin for M16).
|
| @@ -591,42 +609,6 @@ bool PluginInstance::HandleTextInput(const string16& text) {
|
| text);
|
| }
|
|
|
| -void PluginInstance::UpdateCaretPosition(const gfx::Rect& caret,
|
| - const gfx::Rect& bounding_box) {
|
| - text_input_caret_ = caret;
|
| - text_input_caret_bounds_ = bounding_box;
|
| - text_input_caret_set_ = true;
|
| - delegate()->PluginCaretPositionChanged(this);
|
| -}
|
| -
|
| -void PluginInstance::SetTextInputType(ui::TextInputType type) {
|
| - text_input_type_ = type;
|
| - delegate()->PluginTextInputTypeChanged(this);
|
| -}
|
| -
|
| -void PluginInstance::SelectionChanged() {
|
| - // TODO(kinaba): currently the browser always calls RequestSurroundingText.
|
| - // It can be optimized so that it won't call it back until the information
|
| - // is really needed.
|
| -
|
| - // Avoid calling in nested context or else this will reenter the plugin. This
|
| - // uses a weak pointer rather than exploiting the fact that this class is
|
| - // refcounted because we don't actually want this operation to affect the
|
| - // lifetime of the instance.
|
| - MessageLoop::current()->PostTask(FROM_HERE,
|
| - base::Bind(&PluginInstance::RequestSurroundingText,
|
| - AsWeakPtr(),
|
| - static_cast<size_t>(kExtraCharsForTextInput)));
|
| -}
|
| -
|
| -void PluginInstance::UpdateSurroundingText(const std::string& text,
|
| - size_t caret, size_t anchor) {
|
| - surrounding_text_ = text;
|
| - selection_caret_ = caret;
|
| - selection_anchor_ = anchor;
|
| - delegate()->PluginSelectionChanged(this);
|
| -}
|
| -
|
| void PluginInstance::GetSurroundingText(string16* text,
|
| ui::Range* range) const {
|
| std::vector<size_t> offsets;
|
| @@ -1912,6 +1894,53 @@ void PluginInstance::UnlockMouse(PP_Instance instance) {
|
| delegate()->UnlockMouse(this);
|
| }
|
|
|
| +void PluginInstance::SetTextInputType(PP_Instance instance,
|
| + PP_TextInput_Type type) {
|
| + int itype = type;
|
| + if (itype < 0 || itype > ui::TEXT_INPUT_TYPE_URL)
|
| + itype = ui::TEXT_INPUT_TYPE_NONE;
|
| + text_input_type_ = static_cast<ui::TextInputType>(itype);
|
| + delegate()->PluginTextInputTypeChanged(this);
|
| +}
|
| +
|
| +void PluginInstance::UpdateCaretPosition(PP_Instance instance,
|
| + const PP_Rect& caret,
|
| + const PP_Rect& bounding_box) {
|
| + text_input_caret_ = PP_ToGfxRect(caret);
|
| + text_input_caret_bounds_ = PP_ToGfxRect(bounding_box);
|
| + text_input_caret_set_ = true;
|
| + delegate()->PluginCaretPositionChanged(this);
|
| +}
|
| +
|
| +void PluginInstance::CancelCompositionText(PP_Instance instance) {
|
| + delegate()->PluginRequestedCancelComposition(this);
|
| +}
|
| +
|
| +void PluginInstance::SelectionChanged(PP_Instance instance) {
|
| + // TODO(kinaba): currently the browser always calls RequestSurroundingText.
|
| + // It can be optimized so that it won't call it back until the information
|
| + // is really needed.
|
| +
|
| + // Avoid calling in nested context or else this will reenter the plugin. This
|
| + // uses a weak pointer rather than exploiting the fact that this class is
|
| + // refcounted because we don't actually want this operation to affect the
|
| + // lifetime of the instance.
|
| + MessageLoop::current()->PostTask(FROM_HERE,
|
| + base::Bind(&PluginInstance::RequestSurroundingText,
|
| + AsWeakPtr(),
|
| + static_cast<size_t>(kExtraCharsForTextInput)));
|
| +}
|
| +
|
| +void PluginInstance::UpdateSurroundingText(PP_Instance instance,
|
| + const char* text,
|
| + uint32_t caret,
|
| + uint32_t anchor) {
|
| + surrounding_text_ = text;
|
| + selection_caret_ = caret;
|
| + selection_anchor_ = anchor;
|
| + delegate()->PluginSelectionChanged(this);
|
| +}
|
| +
|
| PP_Var PluginInstance::ResolveRelativeToDocument(
|
| PP_Instance instance,
|
| PP_Var relative,
|
|
|