diff options
author | huangs@chromium.org <huangs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-05 14:38:07 +0000 |
---|---|---|
committer | huangs@chromium.org <huangs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-05 14:38:07 +0000 |
commit | d3a7434387bc425eff47fb96f89b5c33cea5fa48 (patch) | |
tree | 8a3662b45b39917f57d0b7e734176ae35309c98c /content/browser/renderer_host | |
parent | 3fda54ad92524fe479eeb3515f3f6ac669e72618 (diff) | |
download | chromium_src-d3a7434387bc425eff47fb96f89b5c33cea5fa48.zip chromium_src-d3a7434387bc425eff47fb96f89b5c33cea5fa48.tar.gz chromium_src-d3a7434387bc425eff47fb96f89b5c33cea5fa48.tar.bz2 |
Removing reinterpret_cast<std::vector<...> > in RenderWidgetHostViewAura::SetCompositionText().
RenderWidgetHostViewAura::SetCompositionText() used reinterpret_cast<> to convert
std::vector<ui::CompositionText> ==> std::vector<blink::WebCompositionUnderline>
This requires ui::CompositionText (in Chrome) and blink::WebCompositionUnderline
(in Blink) to be identical. This is problematic when we want to change
blink::WebCompositionUnderline and blink::WebCompositionUnderline
(and WebCore::CompositionUnderline), since Chrome & Blink CLs have to be separate.
This CL implements manual copy to allow CL decoupling.
BUG=135900
Review URL: https://codereview.chromium.org/319553002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@275103 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/renderer_host')
-rw-r--r-- | content/browser/renderer_host/render_widget_host_view_aura.cc | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc index d9a18c7..e2819c6 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc @@ -1347,17 +1347,18 @@ void RenderWidgetHostViewAura::SetCompositionText( if (!host_) return; - // ui::CompositionUnderline should be identical to - // blink::WebCompositionUnderline, so that we can do reinterpret_cast safely. - COMPILE_ASSERT(sizeof(ui::CompositionUnderline) == - sizeof(blink::WebCompositionUnderline), - ui_CompositionUnderline__WebKit_WebCompositionUnderline_diff); - // TODO(suzhe): convert both renderer_host and renderer to use // ui::CompositionText. - const std::vector<blink::WebCompositionUnderline>& underlines = - reinterpret_cast<const std::vector<blink::WebCompositionUnderline>&>( - composition.underlines); + std::vector<blink::WebCompositionUnderline> underlines; + underlines.reserve(composition.underlines.size()); + for (std::vector<ui::CompositionUnderline>::const_iterator it = + composition.underlines.begin(); + it != composition.underlines.end(); ++it) { + underlines.push_back(blink::WebCompositionUnderline(it->start_offset, + it->end_offset, + it->color, + it->thick)); + } // TODO(suzhe): due to a bug of webkit, we can't use selection range with // composition string. See: https://bugs.webkit.org/show_bug.cgi?id=37788 |