diff options
author | kinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-29 04:23:09 +0000 |
---|---|---|
committer | kinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-29 04:23:09 +0000 |
commit | 2daba2f3623744b78f1880d8ebb0a673d03f52d3 (patch) | |
tree | 5bdad577cacfe4147ffceddcb1b1d0e1b6955232 /webkit | |
parent | 47d09f6e03e6d8ee179e479095c5afd9564921e0 (diff) | |
download | chromium_src-2daba2f3623744b78f1880d8ebb0a673d03f52d3.zip chromium_src-2daba2f3623744b78f1880d8ebb0a673d03f52d3.tar.gz chromium_src-2daba2f3623744b78f1880d8ebb0a673d03f52d3.tar.bz2 |
Additional update on Pepper IME API and boilerplate thunk/proxy implementation.
BUG=59425
TEST=Check that ppapi_tests compile (with GYP_DEFINES=shared_library, too).
This CL is the second (out of three) part for adding IME support for PPAPI.
It reflects comments from James Su to the previous CL:
http://codereview.chromium.org/7882004.
- Renamed ..._COMPOSTION_START to _IME_COMPOSITON_START.
- Changed to assure GetSegment to return a strictly increasing sequence of
segmentation points from 0 to the length.
and,
- Added the mostly boilerplate code for interfacing with
in-process & out-of-process plugins.
The actual implementation of the IME support will come as
the next and the last part of this series of patches.
Review URL: http://codereview.chromium.org/8059006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103234 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r-- | webkit/glue/webkit_glue.gypi | 2 | ||||
-rw-r--r-- | webkit/plugins/ppapi/event_conversion.cc | 6 | ||||
-rw-r--r-- | webkit/plugins/ppapi/plugin_module.cc | 1 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppb_text_input_impl.cc | 59 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppb_text_input_impl.h | 44 | ||||
-rw-r--r-- | webkit/plugins/ppapi/resource_tracker.cc | 5 |
6 files changed, 113 insertions, 4 deletions
diff --git a/webkit/glue/webkit_glue.gypi b/webkit/glue/webkit_glue.gypi index a6adf2b..e6ba8fd 100644 --- a/webkit/glue/webkit_glue.gypi +++ b/webkit/glue/webkit_glue.gypi @@ -274,6 +274,8 @@ '../plugins/ppapi/ppb_scrollbar_impl.h', '../plugins/ppapi/ppb_surface_3d_impl.cc', '../plugins/ppapi/ppb_surface_3d_impl.h', + '../plugins/ppapi/ppb_text_input_impl.cc', + '../plugins/ppapi/ppb_text_input_impl.h', '../plugins/ppapi/ppb_uma_private_impl.cc', '../plugins/ppapi/ppb_uma_private_impl.h', '../plugins/ppapi/ppb_url_loader_impl.cc', diff --git a/webkit/plugins/ppapi/event_conversion.cc b/webkit/plugins/ppapi/event_conversion.cc index 80df1f6..cec3a64 100644 --- a/webkit/plugins/ppapi/event_conversion.cc +++ b/webkit/plugins/ppapi/event_conversion.cc @@ -302,9 +302,9 @@ WebInputEvent* CreateWebInputEvent(const InputEventData& event) { case PP_INPUTEVENT_TYPE_CHAR: web_input_event.reset(BuildCharEvent(event)); break; - case PP_INPUTEVENT_TYPE_COMPOSITION_START: - case PP_INPUTEVENT_TYPE_COMPOSITION_UPDATE: - case PP_INPUTEVENT_TYPE_COMPOSITION_END: + case PP_INPUTEVENT_TYPE_IME_COMPOSITION_START: + case PP_INPUTEVENT_TYPE_IME_COMPOSITION_UPDATE: + case PP_INPUTEVENT_TYPE_IME_COMPOSITION_END: case PP_INPUTEVENT_TYPE_IME_TEXT: // TODO(kinaba) implement in WebKit an event structure to handle // composition events. diff --git a/webkit/plugins/ppapi/plugin_module.cc b/webkit/plugins/ppapi/plugin_module.cc index a1f0c8c..43fbd6f 100644 --- a/webkit/plugins/ppapi/plugin_module.cc +++ b/webkit/plugins/ppapi/plugin_module.cc @@ -32,6 +32,7 @@ #include "ppapi/c/dev/ppb_scrollbar_dev.h" #include "ppapi/c/dev/ppb_surface_3d_dev.h" #include "ppapi/c/dev/ppb_testing_dev.h" +#include "ppapi/c/dev/ppb_text_input_dev.h" #include "ppapi/c/dev/ppb_transport_dev.h" #include "ppapi/c/dev/ppb_url_util_dev.h" #include "ppapi/c/dev/ppb_var_deprecated.h" diff --git a/webkit/plugins/ppapi/ppb_text_input_impl.cc b/webkit/plugins/ppapi/ppb_text_input_impl.cc new file mode 100644 index 0000000..fc02925 --- /dev/null +++ b/webkit/plugins/ppapi/ppb_text_input_impl.cc @@ -0,0 +1,59 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "webkit/plugins/ppapi/ppb_text_input_impl.h" + +#include "base/logging.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebTextInputType.h" +#include "webkit/plugins/ppapi/ppapi_plugin_instance.h" + +namespace webkit { +namespace ppapi { + +PPB_TextInput_Impl::PPB_TextInput_Impl(PluginInstance* instance) + : instance_(instance) { +} + +::ppapi::thunk::PPB_TextInput_FunctionAPI* +PPB_TextInput_Impl::AsPPB_TextInput_FunctionAPI() { + return this; +} + +COMPILE_ASSERT(int(WebKit::WebTextInputTypeNone) == \ + int(PP_TEXTINPUT_TYPE_NONE), mismatching_enums); +COMPILE_ASSERT(int(WebKit::WebTextInputTypeText) == \ + int(PP_TEXTINPUT_TYPE_TEXT), mismatching_enums); +COMPILE_ASSERT(int(WebKit::WebTextInputTypePassword) == \ + int(PP_TEXTINPUT_TYPE_PASSWORD), mismatching_enums); +COMPILE_ASSERT(int(WebKit::WebTextInputTypeSearch) == \ + int(PP_TEXTINPUT_TYPE_SEARCH), mismatching_enums); +COMPILE_ASSERT(int(WebKit::WebTextInputTypeEmail) == \ + int(PP_TEXTINPUT_TYPE_EMAIL), mismatching_enums); +COMPILE_ASSERT(int(WebKit::WebTextInputTypeNumber) == \ + int(PP_TEXTINPUT_TYPE_NUMBER), mismatching_enums); +COMPILE_ASSERT(int(WebKit::WebTextInputTypeTelephone) == \ + int(PP_TEXTINPUT_TYPE_TELEPHONE), mismatching_enums); +COMPILE_ASSERT(int(WebKit::WebTextInputTypeURL) == \ + int(PP_TEXTINPUT_TYPE_URL), mismatching_enums); + +void PPB_TextInput_Impl::SetTextInputType(PP_Instance instance, + PP_TextInput_Type type) { + // TODO(kinaba) the implementation is split to another CL for reviewing. + NOTIMPLEMENTED(); +} + +void PPB_TextInput_Impl::UpdateCaretPosition(PP_Instance instance, + const PP_Rect& caret, + const PP_Rect& bounding_box) { + // TODO(kinaba) the implementation is split to another CL for reviewing. + NOTIMPLEMENTED(); +} + +void PPB_TextInput_Impl::CancelCompositionText(PP_Instance instance) { + // TODO(kinaba) the implementation is split to another CL for reviewing. + NOTIMPLEMENTED(); +} + +} // namespace ppapi +} // namespace webkit diff --git a/webkit/plugins/ppapi/ppb_text_input_impl.h b/webkit/plugins/ppapi/ppb_text_input_impl.h new file mode 100644 index 0000000..b6d25e1 --- /dev/null +++ b/webkit/plugins/ppapi/ppb_text_input_impl.h @@ -0,0 +1,44 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef WEBKIT_PLUGINS_PPAPI_PPB_TEXT_INPUT_IMPL_H_ +#define WEBKIT_PLUGINS_PPAPI_PPB_TEXT_INPUT_IMPL_H_ + +#include "base/basictypes.h" +#include "base/compiler_specific.h" +#include "ppapi/shared_impl/function_group_base.h" +#include "ppapi/thunk/ppb_text_input_api.h" + +namespace webkit { +namespace ppapi { + +class PluginInstance; + +class PPB_TextInput_Impl + : public ::ppapi::FunctionGroupBase, + public ::ppapi::thunk::PPB_TextInput_FunctionAPI { + public: + PPB_TextInput_Impl(PluginInstance* instance); + + // FunctionGroupBase overrides. + virtual ::ppapi::thunk::PPB_TextInput_FunctionAPI* + AsPPB_TextInput_FunctionAPI() OVERRIDE; + + // PPB_TextInput_FunctionAPI implementation. + virtual void SetTextInputType(PP_Instance instance, + PP_TextInput_Type type) OVERRIDE; + virtual void UpdateCaretPosition(PP_Instance instance, + const PP_Rect& caret, + const PP_Rect& bounding_box) OVERRIDE; + virtual void CancelCompositionText(PP_Instance instance) OVERRIDE; + + private: + PluginInstance* instance_; + DISALLOW_COPY_AND_ASSIGN(PPB_TextInput_Impl); +}; + +} // namespace ppapi +} // namespace webkit + +#endif // WEBKIT_PLUGINS_PPAPI_PPB_TEXT_INPUT_IMPL_H_ diff --git a/webkit/plugins/ppapi/resource_tracker.cc b/webkit/plugins/ppapi/resource_tracker.cc index c69fb5f..770384b 100644 --- a/webkit/plugins/ppapi/resource_tracker.cc +++ b/webkit/plugins/ppapi/resource_tracker.cc @@ -21,6 +21,7 @@ #include "webkit/plugins/ppapi/ppb_char_set_impl.h" #include "webkit/plugins/ppapi/ppb_cursor_control_impl.h" #include "webkit/plugins/ppapi/ppb_font_impl.h" +#include "webkit/plugins/ppapi/ppb_text_input_impl.h" #include "webkit/plugins/ppapi/resource_creation_impl.h" #include "webkit/plugins/ppapi/resource_helper.h" @@ -144,6 +145,9 @@ void ResourceTracker::CleanupInstanceData(PP_Instance instance, case ::ppapi::proxy::INTERFACE_ID_PPB_FONT: proxy.reset(new PPB_Font_FunctionImpl(instance)); break; + case ::ppapi::proxy::INTERFACE_ID_PPB_TEXT_INPUT: + proxy.reset(new PPB_TextInput_Impl(instance)); + break; case ::ppapi::proxy::INTERFACE_ID_RESOURCE_CREATION: proxy.reset(new ResourceCreationImpl(instance)); break; @@ -323,4 +327,3 @@ void ResourceTracker::ClearSingletonOverride() { } // namespace ppapi } // namespace webkit - |