summaryrefslogtreecommitdiffstats
path: root/content/browser/renderer_host
diff options
context:
space:
mode:
authorhuangs@chromium.org <huangs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-05 14:38:07 +0000
committerhuangs@chromium.org <huangs@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-05 14:38:07 +0000
commitd3a7434387bc425eff47fb96f89b5c33cea5fa48 (patch)
tree8a3662b45b39917f57d0b7e734176ae35309c98c /content/browser/renderer_host
parent3fda54ad92524fe479eeb3515f3f6ac669e72618 (diff)
downloadchromium_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.cc19
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