OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/render_frame_impl.h" | 5 #include "content/renderer/render_frame_impl.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 // And then the mouse event is forwarded to WebKit, which dispatches it to the | 328 // And then the mouse event is forwarded to WebKit, which dispatches it to the |
329 // event target. Potentially a Pepper plugin will receive the event. | 329 // event target. Potentially a Pepper plugin will receive the event. |
330 // In order to tell whether a plugin gets the last mouse event and which it | 330 // In order to tell whether a plugin gets the last mouse event and which it |
331 // is, we set |pepper_last_mouse_event_target_| to NULL here. If a plugin gets | 331 // is, we set |pepper_last_mouse_event_target_| to NULL here. If a plugin gets |
332 // the event, it will notify us via DidReceiveMouseEvent() and set itself as | 332 // the event, it will notify us via DidReceiveMouseEvent() and set itself as |
333 // |pepper_last_mouse_event_target_|. | 333 // |pepper_last_mouse_event_target_|. |
334 pepper_last_mouse_event_target_ = NULL; | 334 pepper_last_mouse_event_target_ = NULL; |
335 } | 335 } |
336 | 336 |
337 void RenderFrameImpl::SimulateImeSetComposition( | 337 void RenderFrameImpl::SimulateImeSetComposition( |
338 const string16& text, | 338 const base::string16& text, |
339 const std::vector<blink::WebCompositionUnderline>& underlines, | 339 const std::vector<blink::WebCompositionUnderline>& underlines, |
340 int selection_start, | 340 int selection_start, |
341 int selection_end) { | 341 int selection_end) { |
342 render_view_->OnImeSetComposition( | 342 render_view_->OnImeSetComposition( |
343 text, underlines, selection_start, selection_end); | 343 text, underlines, selection_start, selection_end); |
344 } | 344 } |
345 | 345 |
346 void RenderFrameImpl::SimulateImeConfirmComposition( | 346 void RenderFrameImpl::SimulateImeConfirmComposition( |
347 const string16& text, | 347 const base::string16& text, |
348 const gfx::Range& replacement_range) { | 348 const gfx::Range& replacement_range) { |
349 render_view_->OnImeConfirmComposition(text, replacement_range, false); | 349 render_view_->OnImeConfirmComposition(text, replacement_range, false); |
350 } | 350 } |
351 | 351 |
352 | 352 |
353 void RenderFrameImpl::OnImeSetComposition( | 353 void RenderFrameImpl::OnImeSetComposition( |
354 const string16& text, | 354 const base::string16& text, |
355 const std::vector<blink::WebCompositionUnderline>& underlines, | 355 const std::vector<blink::WebCompositionUnderline>& underlines, |
356 int selection_start, | 356 int selection_start, |
357 int selection_end) { | 357 int selection_end) { |
358 // When a PPAPI plugin has focus, we bypass WebKit. | 358 // When a PPAPI plugin has focus, we bypass WebKit. |
359 if (!IsPepperAcceptingCompositionEvents()) { | 359 if (!IsPepperAcceptingCompositionEvents()) { |
360 pepper_composition_text_ = text; | 360 pepper_composition_text_ = text; |
361 } else { | 361 } else { |
362 // TODO(kinaba) currently all composition events are sent directly to | 362 // TODO(kinaba) currently all composition events are sent directly to |
363 // plugins. Use DOM event mechanism after WebKit is made aware about | 363 // plugins. Use DOM event mechanism after WebKit is made aware about |
364 // plugins that support composition. | 364 // plugins that support composition. |
365 // The code below mimics the behavior of WebCore::Editor::setComposition. | 365 // The code below mimics the behavior of WebCore::Editor::setComposition. |
366 | 366 |
367 // Empty -> nonempty: composition started. | 367 // Empty -> nonempty: composition started. |
368 if (pepper_composition_text_.empty() && !text.empty()) | 368 if (pepper_composition_text_.empty() && !text.empty()) |
369 focused_pepper_plugin_->HandleCompositionStart(string16()); | 369 focused_pepper_plugin_->HandleCompositionStart(base::string16()); |
370 // Nonempty -> empty: composition canceled. | 370 // Nonempty -> empty: composition canceled. |
371 if (!pepper_composition_text_.empty() && text.empty()) | 371 if (!pepper_composition_text_.empty() && text.empty()) |
372 focused_pepper_plugin_->HandleCompositionEnd(string16()); | 372 focused_pepper_plugin_->HandleCompositionEnd(base::string16()); |
373 pepper_composition_text_ = text; | 373 pepper_composition_text_ = text; |
374 // Nonempty: composition is ongoing. | 374 // Nonempty: composition is ongoing. |
375 if (!pepper_composition_text_.empty()) { | 375 if (!pepper_composition_text_.empty()) { |
376 focused_pepper_plugin_->HandleCompositionUpdate( | 376 focused_pepper_plugin_->HandleCompositionUpdate( |
377 pepper_composition_text_, underlines, selection_start, | 377 pepper_composition_text_, underlines, selection_start, |
378 selection_end); | 378 selection_end); |
379 } | 379 } |
380 } | 380 } |
381 } | 381 } |
382 | 382 |
383 void RenderFrameImpl::OnImeConfirmComposition( | 383 void RenderFrameImpl::OnImeConfirmComposition( |
384 const string16& text, | 384 const base::string16& text, |
385 const gfx::Range& replacement_range, | 385 const gfx::Range& replacement_range, |
386 bool keep_selection) { | 386 bool keep_selection) { |
387 // When a PPAPI plugin has focus, we bypass WebKit. | 387 // When a PPAPI plugin has focus, we bypass WebKit. |
388 // Here, text.empty() has a special meaning. It means to commit the last | 388 // Here, text.empty() has a special meaning. It means to commit the last |
389 // update of composition text (see | 389 // update of composition text (see |
390 // RenderWidgetHost::ImeConfirmComposition()). | 390 // RenderWidgetHost::ImeConfirmComposition()). |
391 const string16& last_text = text.empty() ? pepper_composition_text_ : text; | 391 const base::string16& last_text = text.empty() ? pepper_composition_text_ |
| 392 : text; |
392 | 393 |
393 // last_text is empty only when both text and pepper_composition_text_ is. | 394 // last_text is empty only when both text and pepper_composition_text_ is. |
394 // Ignore it. | 395 // Ignore it. |
395 if (last_text.empty()) | 396 if (last_text.empty()) |
396 return; | 397 return; |
397 | 398 |
398 if (!IsPepperAcceptingCompositionEvents()) { | 399 if (!IsPepperAcceptingCompositionEvents()) { |
399 base::i18n::UTF16CharIterator iterator(&last_text); | 400 base::i18n::UTF16CharIterator iterator(&last_text); |
400 int32 i = 0; | 401 int32 i = 0; |
401 while (iterator.Advance()) { | 402 while (iterator.Advance()) { |
(...skipping 893 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1295 void RenderFrameImpl::AddObserver(RenderFrameObserver* observer) { | 1296 void RenderFrameImpl::AddObserver(RenderFrameObserver* observer) { |
1296 observers_.AddObserver(observer); | 1297 observers_.AddObserver(observer); |
1297 } | 1298 } |
1298 | 1299 |
1299 void RenderFrameImpl::RemoveObserver(RenderFrameObserver* observer) { | 1300 void RenderFrameImpl::RemoveObserver(RenderFrameObserver* observer) { |
1300 observer->RenderFrameGone(); | 1301 observer->RenderFrameGone(); |
1301 observers_.RemoveObserver(observer); | 1302 observers_.RemoveObserver(observer); |
1302 } | 1303 } |
1303 | 1304 |
1304 } // namespace content | 1305 } // namespace content |
OLD | NEW |