Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(56)

Side by Side Diff: content/renderer/render_widget.cc

Issue 2288313002: Return the WebViewFrameWidget in RenderWidget::webwidget() if there (Closed)
Patch Set: fix one more test Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_widget.h" 5 #include "content/renderer/render_widget.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 1053 matching lines...) Expand 10 before | Expand all | Expand 10 after
1064 WebSize visual_viewport_size; 1064 WebSize visual_viewport_size;
1065 1065
1066 if (IsUseZoomForDSFEnabled()) { 1066 if (IsUseZoomForDSFEnabled()) {
1067 visual_viewport_size = gfx::ScaleToCeiledSize( 1067 visual_viewport_size = gfx::ScaleToCeiledSize(
1068 params.visible_viewport_size, 1068 params.visible_viewport_size,
1069 GetOriginalDeviceScaleFactor()); 1069 GetOriginalDeviceScaleFactor());
1070 } else { 1070 } else {
1071 visual_viewport_size = visible_viewport_size_; 1071 visual_viewport_size = visible_viewport_size_;
1072 } 1072 }
1073 1073
1074 webwidget()->resizeVisualViewport(visual_viewport_size); 1074 GetWebWidget()->resizeVisualViewport(visual_viewport_size);
1075 1075
1076 // When resizing, we want to wait to paint before ACK'ing the resize. This 1076 // When resizing, we want to wait to paint before ACK'ing the resize. This
1077 // ensures that we only resize as fast as we can paint. We only need to 1077 // ensures that we only resize as fast as we can paint. We only need to
1078 // send an ACK if we are resized to a non-empty rect. 1078 // send an ACK if we are resized to a non-empty rect.
1079 if (params.new_size.IsEmpty() || params.physical_backing_size.IsEmpty()) { 1079 if (params.new_size.IsEmpty() || params.physical_backing_size.IsEmpty()) {
1080 // In this case there is no paint/composite and therefore no 1080 // In this case there is no paint/composite and therefore no
1081 // ViewHostMsg_UpdateRect to send the resize ack with. We'd need to send the 1081 // ViewHostMsg_UpdateRect to send the resize ack with. We'd need to send the
1082 // ack through a fake ViewHostMsg_UpdateRect or a different message. 1082 // ack through a fake ViewHostMsg_UpdateRect or a different message.
1083 DCHECK(!params.needs_resize_ack); 1083 DCHECK(!params.needs_resize_ack);
1084 } 1084 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1137 1137
1138 void RenderWidget::WillCloseLayerTreeView() { 1138 void RenderWidget::WillCloseLayerTreeView() {
1139 if (host_closing_) 1139 if (host_closing_)
1140 return; 1140 return;
1141 1141
1142 // Prevent new compositors or output surfaces from being created. 1142 // Prevent new compositors or output surfaces from being created.
1143 host_closing_ = true; 1143 host_closing_ = true;
1144 1144
1145 // Always send this notification to prevent new layer tree views from 1145 // Always send this notification to prevent new layer tree views from
1146 // being created, even if one hasn't been created yet. 1146 // being created, even if one hasn't been created yet.
1147 if (webwidget_) 1147 if (GetWebWidget())
1148 webwidget_->willCloseLayerTreeView(); 1148 GetWebWidget()->willCloseLayerTreeView();
1149 } 1149 }
1150 1150
1151 blink::WebLayerTreeView* RenderWidget::layerTreeView() { 1151 blink::WebLayerTreeView* RenderWidget::layerTreeView() {
1152 return compositor_.get(); 1152 return compositor_.get();
1153 } 1153 }
1154 1154
1155 void RenderWidget::didMeaningfulLayout(blink::WebMeaningfulLayout layout_type) { 1155 void RenderWidget::didMeaningfulLayout(blink::WebMeaningfulLayout layout_type) {
1156 if (layout_type == blink::WebMeaningfulLayout::VisuallyNonEmpty) { 1156 if (layout_type == blink::WebMeaningfulLayout::VisuallyNonEmpty) {
1157 QueueMessage(new ViewHostMsg_DidFirstVisuallyNonEmptyPaint(routing_id_), 1157 QueueMessage(new ViewHostMsg_DidFirstVisuallyNonEmptyPaint(routing_id_),
1158 MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE); 1158 MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE);
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
1374 const gfx::Range& replacement_range, 1374 const gfx::Range& replacement_range,
1375 int selection_start, int selection_end) { 1375 int selection_start, int selection_end) {
1376 #if defined(ENABLE_PLUGINS) 1376 #if defined(ENABLE_PLUGINS)
1377 if (focused_pepper_plugin_) { 1377 if (focused_pepper_plugin_) {
1378 focused_pepper_plugin_->render_frame()->OnImeSetComposition( 1378 focused_pepper_plugin_->render_frame()->OnImeSetComposition(
1379 text, underlines, selection_start, selection_end); 1379 text, underlines, selection_start, selection_end);
1380 return; 1380 return;
1381 } 1381 }
1382 #endif 1382 #endif
1383 if (replacement_range.IsValid()) { 1383 if (replacement_range.IsValid()) {
1384 webwidget_->applyReplacementRange(replacement_range.start(), 1384 GetWebWidget()->applyReplacementRange(replacement_range.start(),
1385 replacement_range.length()); 1385 replacement_range.length());
1386 } 1386 }
1387 1387
1388 if (!ShouldHandleImeEvent()) 1388 if (!ShouldHandleImeEvent())
1389 return; 1389 return;
1390 ImeEventGuard guard(this); 1390 ImeEventGuard guard(this);
1391 if (!webwidget_->setComposition( 1391 if (!GetWebWidget()->setComposition(
1392 text, WebVector<WebCompositionUnderline>(underlines), 1392 text, WebVector<WebCompositionUnderline>(underlines), selection_start,
1393 selection_start, selection_end)) { 1393 selection_end)) {
1394 // If we failed to set the composition text, then we need to let the browser 1394 // If we failed to set the composition text, then we need to let the browser
1395 // process to cancel the input method's ongoing composition session, to make 1395 // process to cancel the input method's ongoing composition session, to make
1396 // sure we are in a consistent state. 1396 // sure we are in a consistent state.
1397 Send(new InputHostMsg_ImeCancelComposition(routing_id())); 1397 Send(new InputHostMsg_ImeCancelComposition(routing_id()));
1398 } 1398 }
1399 UpdateCompositionInfo(false /* not an immediate request */); 1399 UpdateCompositionInfo(false /* not an immediate request */);
1400 } 1400 }
1401 1401
1402 void RenderWidget::OnImeConfirmComposition(const base::string16& text, 1402 void RenderWidget::OnImeConfirmComposition(const base::string16& text,
1403 const gfx::Range& replacement_range, 1403 const gfx::Range& replacement_range,
1404 bool keep_selection) { 1404 bool keep_selection) {
1405 #if defined(ENABLE_PLUGINS) 1405 #if defined(ENABLE_PLUGINS)
1406 if (focused_pepper_plugin_) { 1406 if (focused_pepper_plugin_) {
1407 focused_pepper_plugin_->render_frame()->OnImeConfirmComposition( 1407 focused_pepper_plugin_->render_frame()->OnImeConfirmComposition(
1408 text, replacement_range, keep_selection); 1408 text, replacement_range, keep_selection);
1409 return; 1409 return;
1410 } 1410 }
1411 #endif 1411 #endif
1412 if (replacement_range.IsValid()) { 1412 if (replacement_range.IsValid()) {
1413 webwidget_->applyReplacementRange(replacement_range.start(), 1413 GetWebWidget()->applyReplacementRange(replacement_range.start(),
1414 replacement_range.length()); 1414 replacement_range.length());
1415 } 1415 }
1416 1416
1417 if (!ShouldHandleImeEvent()) 1417 if (!ShouldHandleImeEvent())
1418 return; 1418 return;
1419 ImeEventGuard guard(this); 1419 ImeEventGuard guard(this);
1420 input_handler_->set_handling_input_event(true); 1420 input_handler_->set_handling_input_event(true);
1421 if (text.length()) 1421 if (text.length())
1422 webwidget_->confirmComposition(text); 1422 GetWebWidget()->confirmComposition(text);
1423 else if (keep_selection) 1423 else if (keep_selection)
1424 webwidget_->confirmComposition(WebWidget::KeepSelection); 1424 GetWebWidget()->confirmComposition(WebWidget::KeepSelection);
1425 else 1425 else
1426 webwidget_->confirmComposition(WebWidget::DoNotKeepSelection); 1426 GetWebWidget()->confirmComposition(WebWidget::DoNotKeepSelection);
1427 input_handler_->set_handling_input_event(false); 1427 input_handler_->set_handling_input_event(false);
1428 UpdateCompositionInfo(false /* not an immediate request */); 1428 UpdateCompositionInfo(false /* not an immediate request */);
1429 } 1429 }
1430 1430
1431 void RenderWidget::OnDeviceScaleFactorChanged() { 1431 void RenderWidget::OnDeviceScaleFactorChanged() {
1432 if (!compositor_) 1432 if (!compositor_)
1433 return; 1433 return;
1434 if (IsUseZoomForDSFEnabled()) 1434 if (IsUseZoomForDSFEnabled())
1435 compositor_->SetPaintedDeviceScaleFactor(GetOriginalDeviceScaleFactor()); 1435 compositor_->SetPaintedDeviceScaleFactor(GetOriginalDeviceScaleFactor());
1436 else 1436 else
1437 compositor_->setDeviceScaleFactor(device_scale_factor_); 1437 compositor_->setDeviceScaleFactor(device_scale_factor_);
1438 } 1438 }
1439 1439
1440 void RenderWidget::OnRepaint(gfx::Size size_to_paint) { 1440 void RenderWidget::OnRepaint(gfx::Size size_to_paint) {
1441 // During shutdown we can just ignore this message. 1441 // During shutdown we can just ignore this message.
1442 if (!webwidget_) 1442 if (!GetWebWidget())
1443 return; 1443 return;
1444 1444
1445 // Even if the browser provides an empty damage rect, it's still expecting to 1445 // Even if the browser provides an empty damage rect, it's still expecting to
1446 // receive a repaint ack so just damage the entire widget bounds. 1446 // receive a repaint ack so just damage the entire widget bounds.
1447 if (size_to_paint.IsEmpty()) { 1447 if (size_to_paint.IsEmpty()) {
1448 size_to_paint = size_; 1448 size_to_paint = size_;
1449 } 1449 }
1450 1450
1451 set_next_paint_is_repaint_ack(); 1451 set_next_paint_is_repaint_ack();
1452 if (compositor_) 1452 if (compositor_)
1453 compositor_->SetNeedsRedrawRect(gfx::Rect(size_to_paint)); 1453 compositor_->SetNeedsRedrawRect(gfx::Rect(size_to_paint));
1454 } 1454 }
1455 1455
1456 void RenderWidget::OnSyntheticGestureCompleted() { 1456 void RenderWidget::OnSyntheticGestureCompleted() {
1457 DCHECK(!pending_synthetic_gesture_callbacks_.empty()); 1457 DCHECK(!pending_synthetic_gesture_callbacks_.empty());
1458 1458
1459 pending_synthetic_gesture_callbacks_.front().Run(); 1459 pending_synthetic_gesture_callbacks_.front().Run();
1460 pending_synthetic_gesture_callbacks_.pop(); 1460 pending_synthetic_gesture_callbacks_.pop();
1461 } 1461 }
1462 1462
1463 void RenderWidget::OnSetTextDirection(WebTextDirection direction) { 1463 void RenderWidget::OnSetTextDirection(WebTextDirection direction) {
1464 if (!webwidget_) 1464 if (!GetWebWidget())
1465 return; 1465 return;
1466 webwidget_->setTextDirection(direction); 1466 GetWebWidget()->setTextDirection(direction);
1467 } 1467 }
1468 1468
1469 void RenderWidget::OnUpdateScreenRects(const gfx::Rect& view_screen_rect, 1469 void RenderWidget::OnUpdateScreenRects(const gfx::Rect& view_screen_rect,
1470 const gfx::Rect& window_screen_rect) { 1470 const gfx::Rect& window_screen_rect) {
1471 if (screen_metrics_emulator_) { 1471 if (screen_metrics_emulator_) {
1472 screen_metrics_emulator_->OnUpdateScreenRects(view_screen_rect, 1472 screen_metrics_emulator_->OnUpdateScreenRects(view_screen_rect,
1473 window_screen_rect); 1473 window_screen_rect);
1474 } else { 1474 } else {
1475 SetScreenRects(view_screen_rect, window_screen_rect); 1475 SetScreenRects(view_screen_rect, window_screen_rect);
1476 } 1476 }
(...skipping 21 matching lines...) Expand all
1498 1498
1499 void RenderWidget::showImeIfNeeded() { 1499 void RenderWidget::showImeIfNeeded() {
1500 OnShowImeIfNeeded(); 1500 OnShowImeIfNeeded();
1501 } 1501 }
1502 1502
1503 ui::TextInputType RenderWidget::GetTextInputType() { 1503 ui::TextInputType RenderWidget::GetTextInputType() {
1504 #if defined(ENABLE_PLUGINS) 1504 #if defined(ENABLE_PLUGINS)
1505 if (focused_pepper_plugin_) 1505 if (focused_pepper_plugin_)
1506 return focused_pepper_plugin_->text_input_type(); 1506 return focused_pepper_plugin_->text_input_type();
1507 #endif 1507 #endif
1508 if (webwidget_) 1508 if (GetWebWidget())
1509 return WebKitToUiTextInputType(webwidget_->textInputType()); 1509 return WebKitToUiTextInputType(GetWebWidget()->textInputType());
1510 return ui::TEXT_INPUT_TYPE_NONE; 1510 return ui::TEXT_INPUT_TYPE_NONE;
1511 } 1511 }
1512 1512
1513 void RenderWidget::UpdateCompositionInfo(bool immediate_request) { 1513 void RenderWidget::UpdateCompositionInfo(bool immediate_request) {
1514 if (!monitor_composition_info_ && !immediate_request) 1514 if (!monitor_composition_info_ && !immediate_request)
1515 return; // Do not calculate composition info if not requested. 1515 return; // Do not calculate composition info if not requested.
1516 1516
1517 TRACE_EVENT0("renderer", "RenderWidget::UpdateCompositionInfo"); 1517 TRACE_EVENT0("renderer", "RenderWidget::UpdateCompositionInfo");
1518 gfx::Range range; 1518 gfx::Range range;
1519 std::vector<gfx::Rect> character_bounds; 1519 std::vector<gfx::Rect> character_bounds;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1591 void RenderWidget::OnRequestCompositionUpdate(bool immediate_request, 1591 void RenderWidget::OnRequestCompositionUpdate(bool immediate_request,
1592 bool monitor_request) { 1592 bool monitor_request) {
1593 monitor_composition_info_ = monitor_request; 1593 monitor_composition_info_ = monitor_request;
1594 if (!immediate_request) 1594 if (!immediate_request)
1595 return; 1595 return;
1596 UpdateCompositionInfo(true /* immediate request */); 1596 UpdateCompositionInfo(true /* immediate request */);
1597 } 1597 }
1598 1598
1599 bool RenderWidget::ShouldHandleImeEvent() { 1599 bool RenderWidget::ShouldHandleImeEvent() {
1600 #if defined(OS_ANDROID) 1600 #if defined(OS_ANDROID)
1601 if (!webwidget_) 1601 if (!GetWebWidget())
1602 return false; 1602 return false;
1603 if (IsUsingImeThread()) 1603 if (IsUsingImeThread())
1604 return true; 1604 return true;
1605 1605
1606 // We cannot handle IME events if there is any chance that the event we are 1606 // We cannot handle IME events if there is any chance that the event we are
1607 // receiving here from the browser is based on the state that is different 1607 // receiving here from the browser is based on the state that is different
1608 // from our current one as indicated by |text_input_info_|. 1608 // from our current one as indicated by |text_input_info_|.
1609 // The states the browser might be in are: 1609 // The states the browser might be in are:
1610 // text_input_info_history_[0] - current state ack'd by browser 1610 // text_input_info_history_[0] - current state ack'd by browser
1611 // text_input_info_history_[1...N] - pending state changes 1611 // text_input_info_history_[1...N] - pending state changes
1612 for (size_t i = 0u; i < text_input_info_history_.size() - 1u; ++i) { 1612 for (size_t i = 0u; i < text_input_info_history_.size() - 1u; ++i) {
1613 if (text_input_info_history_[i] != text_input_info_) 1613 if (text_input_info_history_[i] != text_input_info_)
1614 return false; 1614 return false;
1615 } 1615 }
1616 return true; 1616 return true;
1617 #else 1617 #else
1618 return !!webwidget_; 1618 return !!GetWebWidget();
1619 #endif 1619 #endif
1620 } 1620 }
1621 1621
1622 void RenderWidget::OnSetDeviceScaleFactor(float device_scale_factor) { 1622 void RenderWidget::OnSetDeviceScaleFactor(float device_scale_factor) {
1623 if (device_scale_factor_ == device_scale_factor) 1623 if (device_scale_factor_ == device_scale_factor)
1624 return; 1624 return;
1625 1625
1626 device_scale_factor_ = device_scale_factor; 1626 device_scale_factor_ = device_scale_factor;
1627 1627
1628 OnDeviceScaleFactorChanged(); 1628 OnDeviceScaleFactorChanged();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1664 if (is_hidden_) 1664 if (is_hidden_)
1665 RenderThreadImpl::current()->WidgetHidden(); 1665 RenderThreadImpl::current()->WidgetHidden();
1666 else 1666 else
1667 RenderThreadImpl::current()->WidgetRestored(); 1667 RenderThreadImpl::current()->WidgetRestored();
1668 1668
1669 if (render_widget_scheduling_state_) 1669 if (render_widget_scheduling_state_)
1670 render_widget_scheduling_state_->SetHidden(hidden); 1670 render_widget_scheduling_state_->SetHidden(hidden);
1671 } 1671 }
1672 1672
1673 void RenderWidget::DidToggleFullscreen() { 1673 void RenderWidget::DidToggleFullscreen() {
1674 if (!webwidget_) 1674 if (!GetWebWidget())
1675 return; 1675 return;
1676 1676
1677 if (is_fullscreen_granted_) { 1677 if (is_fullscreen_granted_) {
1678 webwidget_->didEnterFullscreen(); 1678 GetWebWidget()->didEnterFullscreen();
1679 } else { 1679 } else {
1680 webwidget_->didExitFullscreen(); 1680 GetWebWidget()->didExitFullscreen();
1681 } 1681 }
1682 } 1682 }
1683 1683
1684 bool RenderWidget::next_paint_is_resize_ack() const { 1684 bool RenderWidget::next_paint_is_resize_ack() const {
1685 return ViewHostMsg_UpdateRect_Flags::is_resize_ack(next_paint_flags_); 1685 return ViewHostMsg_UpdateRect_Flags::is_resize_ack(next_paint_flags_);
1686 } 1686 }
1687 1687
1688 void RenderWidget::set_next_paint_is_resize_ack() { 1688 void RenderWidget::set_next_paint_is_resize_ack() {
1689 next_paint_flags_ |= ViewHostMsg_UpdateRect_Flags::IS_RESIZE_ACK; 1689 next_paint_flags_ |= ViewHostMsg_UpdateRect_Flags::IS_RESIZE_ACK;
1690 } 1690 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1741 // after Pepper API equips features related to surrounding text retrieval. 1741 // after Pepper API equips features related to surrounding text retrieval.
1742 blink::WebRect caret(focused_pepper_plugin_->GetCaretBounds()); 1742 blink::WebRect caret(focused_pepper_plugin_->GetCaretBounds());
1743 convertViewportToWindow(&caret); 1743 convertViewportToWindow(&caret);
1744 *focus = caret; 1744 *focus = caret;
1745 *anchor = caret; 1745 *anchor = caret;
1746 return; 1746 return;
1747 } 1747 }
1748 #endif 1748 #endif
1749 WebRect focus_webrect; 1749 WebRect focus_webrect;
1750 WebRect anchor_webrect; 1750 WebRect anchor_webrect;
1751 webwidget_->selectionBounds(focus_webrect, anchor_webrect); 1751 GetWebWidget()->selectionBounds(focus_webrect, anchor_webrect);
1752 convertViewportToWindow(&focus_webrect); 1752 convertViewportToWindow(&focus_webrect);
1753 convertViewportToWindow(&anchor_webrect); 1753 convertViewportToWindow(&anchor_webrect);
1754 *focus = focus_webrect; 1754 *focus = focus_webrect;
1755 *anchor = anchor_webrect; 1755 *anchor = anchor_webrect;
1756 } 1756 }
1757 1757
1758 void RenderWidget::UpdateSelectionBounds() { 1758 void RenderWidget::UpdateSelectionBounds() {
1759 TRACE_EVENT0("renderer", "RenderWidget::UpdateSelectionBounds"); 1759 TRACE_EVENT0("renderer", "RenderWidget::UpdateSelectionBounds");
1760 if (!webwidget_) 1760 if (!GetWebWidget())
1761 return; 1761 return;
1762 if (ime_event_guard_) 1762 if (ime_event_guard_)
1763 return; 1763 return;
1764 1764
1765 #if defined(USE_AURA) 1765 #if defined(USE_AURA)
1766 // TODO(mohsen): For now, always send explicit selection IPC notifications for 1766 // TODO(mohsen): For now, always send explicit selection IPC notifications for
1767 // Aura beucause composited selection updates are not working for webview tags 1767 // Aura beucause composited selection updates are not working for webview tags
1768 // which regresses IME inside webview. Remove this when composited selection 1768 // which regresses IME inside webview. Remove this when composited selection
1769 // updates are fixed for webviews. See, http://crbug.com/510568. 1769 // updates are fixed for webviews. See, http://crbug.com/510568.
1770 bool send_ipc = true; 1770 bool send_ipc = true;
1771 #else 1771 #else
1772 // With composited selection updates, the selection bounds will be reported 1772 // With composited selection updates, the selection bounds will be reported
1773 // directly by the compositor, in which case explicit IPC selection 1773 // directly by the compositor, in which case explicit IPC selection
1774 // notifications should be suppressed. 1774 // notifications should be suppressed.
1775 bool send_ipc = 1775 bool send_ipc =
1776 !blink::WebRuntimeFeatures::isCompositedSelectionUpdateEnabled(); 1776 !blink::WebRuntimeFeatures::isCompositedSelectionUpdateEnabled();
1777 #endif 1777 #endif
1778 if (send_ipc) { 1778 if (send_ipc) {
1779 ViewHostMsg_SelectionBounds_Params params; 1779 ViewHostMsg_SelectionBounds_Params params;
1780 GetSelectionBounds(&params.anchor_rect, &params.focus_rect); 1780 GetSelectionBounds(&params.anchor_rect, &params.focus_rect);
1781 if (selection_anchor_rect_ != params.anchor_rect || 1781 if (selection_anchor_rect_ != params.anchor_rect ||
1782 selection_focus_rect_ != params.focus_rect) { 1782 selection_focus_rect_ != params.focus_rect) {
1783 selection_anchor_rect_ = params.anchor_rect; 1783 selection_anchor_rect_ = params.anchor_rect;
1784 selection_focus_rect_ = params.focus_rect; 1784 selection_focus_rect_ = params.focus_rect;
1785 webwidget_->selectionTextDirection(params.focus_dir, params.anchor_dir); 1785 GetWebWidget()->selectionTextDirection(params.focus_dir,
1786 params.is_anchor_first = webwidget_->isSelectionAnchorFirst(); 1786 params.anchor_dir);
1787 params.is_anchor_first = GetWebWidget()->isSelectionAnchorFirst();
1787 Send(new ViewHostMsg_SelectionBoundsChanged(routing_id_, params)); 1788 Send(new ViewHostMsg_SelectionBoundsChanged(routing_id_, params));
1788 } 1789 }
1789 } 1790 }
1790 1791
1791 UpdateCompositionInfo(false /* not an immediate request */); 1792 UpdateCompositionInfo(false /* not an immediate request */);
1792 } 1793 }
1793 1794
1794 void RenderWidget::SetDeviceColorProfileForTesting( 1795 void RenderWidget::SetDeviceColorProfileForTesting(
1795 const std::vector<char>& color_profile) { 1796 const std::vector<char>& color_profile) {
1796 SetDeviceColorProfile(color_profile); 1797 SetDeviceColorProfile(color_profile);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1854 void RenderWidget::GetCompositionCharacterBounds( 1855 void RenderWidget::GetCompositionCharacterBounds(
1855 std::vector<gfx::Rect>* bounds) { 1856 std::vector<gfx::Rect>* bounds) {
1856 DCHECK(bounds); 1857 DCHECK(bounds);
1857 bounds->clear(); 1858 bounds->clear();
1858 1859
1859 #if defined(ENABLE_PLUGINS) 1860 #if defined(ENABLE_PLUGINS)
1860 if (focused_pepper_plugin_) 1861 if (focused_pepper_plugin_)
1861 return; 1862 return;
1862 #endif 1863 #endif
1863 1864
1864 if (!webwidget_) 1865 if (!GetWebWidget())
1865 return; 1866 return;
1866 blink::WebVector<blink::WebRect> bounds_from_blink; 1867 blink::WebVector<blink::WebRect> bounds_from_blink;
1867 if (!webwidget_->getCompositionCharacterBounds(bounds_from_blink)) 1868 if (!GetWebWidget()->getCompositionCharacterBounds(bounds_from_blink))
1868 return; 1869 return;
1869 1870
1870 for (size_t i = 0; i < bounds_from_blink.size(); ++i) { 1871 for (size_t i = 0; i < bounds_from_blink.size(); ++i) {
1871 convertViewportToWindow(&bounds_from_blink[i]); 1872 convertViewportToWindow(&bounds_from_blink[i]);
1872 bounds->push_back(bounds_from_blink[i]); 1873 bounds->push_back(bounds_from_blink[i]);
1873 } 1874 }
1874 } 1875 }
1875 1876
1876 void RenderWidget::GetCompositionRange(gfx::Range* range) { 1877 void RenderWidget::GetCompositionRange(gfx::Range* range) {
1877 #if defined(ENABLE_PLUGINS) 1878 #if defined(ENABLE_PLUGINS)
1878 if (focused_pepper_plugin_) 1879 if (focused_pepper_plugin_)
1879 return; 1880 return;
1880 #endif 1881 #endif
1881 size_t location, length; 1882 size_t location, length;
1882 if (webwidget_->compositionRange(&location, &length)) { 1883 if (GetWebWidget()->compositionRange(&location, &length)) {
1883 range->set_start(location); 1884 range->set_start(location);
1884 range->set_end(location + length); 1885 range->set_end(location + length);
1885 } else { 1886 } else {
1886 WebRange web_range = webwidget_->caretOrSelectionRange(); 1887 WebRange web_range = webwidget_->caretOrSelectionRange();
1887 range->set_start(web_range.startOffset()); 1888 range->set_start(web_range.startOffset());
1888 range->set_end(web_range.endOffset()); 1889 range->set_end(web_range.endOffset());
1889 } 1890 }
1890 } 1891 }
1891 1892
1892 bool RenderWidget::ShouldUpdateCompositionInfo( 1893 bool RenderWidget::ShouldUpdateCompositionInfo(
(...skipping 22 matching lines...) Expand all
1915 return screen_info_; 1916 return screen_info_;
1916 } 1917 }
1917 1918
1918 void RenderWidget::resetInputMethod() { 1919 void RenderWidget::resetInputMethod() {
1919 ImeEventGuard guard(this); 1920 ImeEventGuard guard(this);
1920 // If the last text input type is not None, then we should finish any 1921 // If the last text input type is not None, then we should finish any
1921 // ongoing composition regardless of the new text input type. 1922 // ongoing composition regardless of the new text input type.
1922 if (text_input_info_.type != blink::WebTextInputTypeNone) { 1923 if (text_input_info_.type != blink::WebTextInputTypeNone) {
1923 // If a composition text exists, then we need to let the browser process 1924 // If a composition text exists, then we need to let the browser process
1924 // to cancel the input method's ongoing composition session. 1925 // to cancel the input method's ongoing composition session.
1925 if (webwidget_->confirmComposition()) 1926 if (GetWebWidget()->confirmComposition())
1926 Send(new InputHostMsg_ImeCancelComposition(routing_id())); 1927 Send(new InputHostMsg_ImeCancelComposition(routing_id()));
1927 } 1928 }
1928 1929
1929 UpdateCompositionInfo(false /* not an immediate request */); 1930 UpdateCompositionInfo(false /* not an immediate request */);
1930 } 1931 }
1931 1932
1932 #if defined(OS_ANDROID) 1933 #if defined(OS_ANDROID)
1933 void RenderWidget::showUnhandledTapUIIfNeeded( 1934 void RenderWidget::showUnhandledTapUIIfNeeded(
1934 const WebPoint& tapped_position, 1935 const WebPoint& tapped_position,
1935 const WebNode& tapped_node, 1936 const WebNode& tapped_node,
(...skipping 11 matching lines...) Expand all
1947 1948
1948 void RenderWidget::didHandleGestureEvent( 1949 void RenderWidget::didHandleGestureEvent(
1949 const WebGestureEvent& event, 1950 const WebGestureEvent& event,
1950 bool event_cancelled) { 1951 bool event_cancelled) {
1951 #if defined(OS_ANDROID) || defined(USE_AURA) 1952 #if defined(OS_ANDROID) || defined(USE_AURA)
1952 if (event_cancelled) 1953 if (event_cancelled)
1953 return; 1954 return;
1954 if (event.type == WebInputEvent::GestureTap) { 1955 if (event.type == WebInputEvent::GestureTap) {
1955 UpdateTextInputState(ShowIme::IF_NEEDED, ChangeSource::FROM_NON_IME); 1956 UpdateTextInputState(ShowIme::IF_NEEDED, ChangeSource::FROM_NON_IME);
1956 } else if (event.type == WebInputEvent::GestureLongPress) { 1957 } else if (event.type == WebInputEvent::GestureLongPress) {
1957 DCHECK(webwidget_); 1958 DCHECK(GetWebWidget());
1958 if (webwidget_->textInputInfo().value.isEmpty()) 1959 if (GetWebWidget()->textInputInfo().value.isEmpty())
1959 UpdateTextInputState(ShowIme::HIDE_IME, ChangeSource::FROM_NON_IME); 1960 UpdateTextInputState(ShowIme::HIDE_IME, ChangeSource::FROM_NON_IME);
1960 else 1961 else
1961 UpdateTextInputState(ShowIme::IF_NEEDED, ChangeSource::FROM_NON_IME); 1962 UpdateTextInputState(ShowIme::IF_NEEDED, ChangeSource::FROM_NON_IME);
1962 } 1963 }
1963 #endif 1964 #endif
1964 } 1965 }
1965 1966
1966 void RenderWidget::didOverscroll( 1967 void RenderWidget::didOverscroll(
1967 const blink::WebFloatSize& overscrollDelta, 1968 const blink::WebFloatSize& overscrollDelta,
1968 const blink::WebFloatSize& accumulatedOverscroll, 1969 const blink::WebFloatSize& accumulatedOverscroll,
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
2086 2087
2087 void RenderWidget::requestPointerUnlock() { 2088 void RenderWidget::requestPointerUnlock() {
2088 mouse_lock_dispatcher_->UnlockMouse(webwidget_mouse_lock_target_.get()); 2089 mouse_lock_dispatcher_->UnlockMouse(webwidget_mouse_lock_target_.get());
2089 } 2090 }
2090 2091
2091 bool RenderWidget::isPointerLocked() { 2092 bool RenderWidget::isPointerLocked() {
2092 return mouse_lock_dispatcher_->IsMouseLockedTo( 2093 return mouse_lock_dispatcher_->IsMouseLockedTo(
2093 webwidget_mouse_lock_target_.get()); 2094 webwidget_mouse_lock_target_.get());
2094 } 2095 }
2095 2096
2097 blink::WebWidget* RenderWidget::GetWebWidget() const {
2098 return webwidget_;
2099 }
2100
2096 } // namespace content 2101 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698