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

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

Issue 2288313002: Return the WebViewFrameWidget in RenderWidget::webwidget() if there (Closed)
Patch Set: avoid virtual call 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
« no previous file with comments | « content/renderer/render_widget.h ('k') | content/renderer/render_widget_browsertest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 1051 matching lines...) Expand 10 before | Expand all | Expand 10 after
1062 WebSize visual_viewport_size; 1062 WebSize visual_viewport_size;
1063 1063
1064 if (IsUseZoomForDSFEnabled()) { 1064 if (IsUseZoomForDSFEnabled()) {
1065 visual_viewport_size = gfx::ScaleToCeiledSize( 1065 visual_viewport_size = gfx::ScaleToCeiledSize(
1066 params.visible_viewport_size, 1066 params.visible_viewport_size,
1067 GetOriginalDeviceScaleFactor()); 1067 GetOriginalDeviceScaleFactor());
1068 } else { 1068 } else {
1069 visual_viewport_size = visible_viewport_size_; 1069 visual_viewport_size = visible_viewport_size_;
1070 } 1070 }
1071 1071
1072 webwidget()->resizeVisualViewport(visual_viewport_size); 1072 GetWebWidget()->resizeVisualViewport(visual_viewport_size);
piman 2016/09/13 00:27:05 Soo... why do we use GetWebWidget() sometimes, and
lfg 2016/09/13 19:37:57 Basically we should always prefer GetWebWidget() o
1073 1073
1074 // When resizing, we want to wait to paint before ACK'ing the resize. This 1074 // When resizing, we want to wait to paint before ACK'ing the resize. This
1075 // ensures that we only resize as fast as we can paint. We only need to 1075 // ensures that we only resize as fast as we can paint. We only need to
1076 // send an ACK if we are resized to a non-empty rect. 1076 // send an ACK if we are resized to a non-empty rect.
1077 if (params.new_size.IsEmpty() || params.physical_backing_size.IsEmpty()) { 1077 if (params.new_size.IsEmpty() || params.physical_backing_size.IsEmpty()) {
1078 // In this case there is no paint/composite and therefore no 1078 // In this case there is no paint/composite and therefore no
1079 // ViewHostMsg_UpdateRect to send the resize ack with. We'd need to send the 1079 // ViewHostMsg_UpdateRect to send the resize ack with. We'd need to send the
1080 // ack through a fake ViewHostMsg_UpdateRect or a different message. 1080 // ack through a fake ViewHostMsg_UpdateRect or a different message.
1081 DCHECK(!params.needs_resize_ack); 1081 DCHECK(!params.needs_resize_ack);
1082 } 1082 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1135 1135
1136 void RenderWidget::WillCloseLayerTreeView() { 1136 void RenderWidget::WillCloseLayerTreeView() {
1137 if (host_closing_) 1137 if (host_closing_)
1138 return; 1138 return;
1139 1139
1140 // Prevent new compositors or output surfaces from being created. 1140 // Prevent new compositors or output surfaces from being created.
1141 host_closing_ = true; 1141 host_closing_ = true;
1142 1142
1143 // Always send this notification to prevent new layer tree views from 1143 // Always send this notification to prevent new layer tree views from
1144 // being created, even if one hasn't been created yet. 1144 // being created, even if one hasn't been created yet.
1145 if (webwidget_) 1145 if (blink::WebWidget* widget = GetWebWidget())
1146 webwidget_->willCloseLayerTreeView(); 1146 widget->willCloseLayerTreeView();
1147 } 1147 }
1148 1148
1149 blink::WebLayerTreeView* RenderWidget::layerTreeView() { 1149 blink::WebLayerTreeView* RenderWidget::layerTreeView() {
1150 return compositor_.get(); 1150 return compositor_.get();
1151 } 1151 }
1152 1152
1153 void RenderWidget::didMeaningfulLayout(blink::WebMeaningfulLayout layout_type) { 1153 void RenderWidget::didMeaningfulLayout(blink::WebMeaningfulLayout layout_type) {
1154 if (layout_type == blink::WebMeaningfulLayout::VisuallyNonEmpty) { 1154 if (layout_type == blink::WebMeaningfulLayout::VisuallyNonEmpty) {
1155 QueueMessage(new ViewHostMsg_DidFirstVisuallyNonEmptyPaint(routing_id_), 1155 QueueMessage(new ViewHostMsg_DidFirstVisuallyNonEmptyPaint(routing_id_),
1156 MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE); 1156 MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE);
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
1372 const gfx::Range& replacement_range, 1372 const gfx::Range& replacement_range,
1373 int selection_start, int selection_end) { 1373 int selection_start, int selection_end) {
1374 #if defined(ENABLE_PLUGINS) 1374 #if defined(ENABLE_PLUGINS)
1375 if (focused_pepper_plugin_) { 1375 if (focused_pepper_plugin_) {
1376 focused_pepper_plugin_->render_frame()->OnImeSetComposition( 1376 focused_pepper_plugin_->render_frame()->OnImeSetComposition(
1377 text, underlines, selection_start, selection_end); 1377 text, underlines, selection_start, selection_end);
1378 return; 1378 return;
1379 } 1379 }
1380 #endif 1380 #endif
1381 if (replacement_range.IsValid()) { 1381 if (replacement_range.IsValid()) {
1382 webwidget_->applyReplacementRange( 1382 GetWebWidget()->applyReplacementRange(
1383 WebRange(replacement_range.start(), replacement_range.length())); 1383 WebRange(replacement_range.start(), replacement_range.length()));
1384 } 1384 }
1385 1385
1386 if (!ShouldHandleImeEvent()) 1386 if (!ShouldHandleImeEvent())
1387 return; 1387 return;
1388 ImeEventGuard guard(this); 1388 ImeEventGuard guard(this);
1389 if (!webwidget_->setComposition( 1389 if (!GetWebWidget()->setComposition(
1390 text, WebVector<WebCompositionUnderline>(underlines), 1390 text, WebVector<WebCompositionUnderline>(underlines), selection_start,
1391 selection_start, selection_end)) { 1391 selection_end)) {
1392 // If we failed to set the composition text, then we need to let the browser 1392 // If we failed to set the composition text, then we need to let the browser
1393 // process to cancel the input method's ongoing composition session, to make 1393 // process to cancel the input method's ongoing composition session, to make
1394 // sure we are in a consistent state. 1394 // sure we are in a consistent state.
1395 Send(new InputHostMsg_ImeCancelComposition(routing_id())); 1395 Send(new InputHostMsg_ImeCancelComposition(routing_id()));
1396 } 1396 }
1397 UpdateCompositionInfo(false /* not an immediate request */); 1397 UpdateCompositionInfo(false /* not an immediate request */);
1398 } 1398 }
1399 1399
1400 void RenderWidget::OnImeConfirmComposition(const base::string16& text, 1400 void RenderWidget::OnImeConfirmComposition(const base::string16& text,
1401 const gfx::Range& replacement_range, 1401 const gfx::Range& replacement_range,
1402 bool keep_selection) { 1402 bool keep_selection) {
1403 #if defined(ENABLE_PLUGINS) 1403 #if defined(ENABLE_PLUGINS)
1404 if (focused_pepper_plugin_) { 1404 if (focused_pepper_plugin_) {
1405 focused_pepper_plugin_->render_frame()->OnImeConfirmComposition( 1405 focused_pepper_plugin_->render_frame()->OnImeConfirmComposition(
1406 text, replacement_range, keep_selection); 1406 text, replacement_range, keep_selection);
1407 return; 1407 return;
1408 } 1408 }
1409 #endif 1409 #endif
1410 if (replacement_range.IsValid()) { 1410 if (replacement_range.IsValid()) {
1411 webwidget_->applyReplacementRange( 1411 GetWebWidget()->applyReplacementRange(
1412 WebRange(replacement_range.start(), replacement_range.length())); 1412 WebRange(replacement_range.start(), replacement_range.length()));
1413 } 1413 }
1414 1414
1415 if (!ShouldHandleImeEvent()) 1415 if (!ShouldHandleImeEvent())
1416 return; 1416 return;
1417 ImeEventGuard guard(this); 1417 ImeEventGuard guard(this);
1418 input_handler_->set_handling_input_event(true); 1418 input_handler_->set_handling_input_event(true);
1419 if (text.length()) 1419 if (text.length())
1420 webwidget_->confirmComposition(text); 1420 GetWebWidget()->confirmComposition(text);
1421 else if (keep_selection) 1421 else if (keep_selection)
1422 webwidget_->confirmComposition(WebWidget::KeepSelection); 1422 GetWebWidget()->confirmComposition(WebWidget::KeepSelection);
1423 else 1423 else
1424 webwidget_->confirmComposition(WebWidget::DoNotKeepSelection); 1424 GetWebWidget()->confirmComposition(WebWidget::DoNotKeepSelection);
1425 input_handler_->set_handling_input_event(false); 1425 input_handler_->set_handling_input_event(false);
1426 UpdateCompositionInfo(false /* not an immediate request */); 1426 UpdateCompositionInfo(false /* not an immediate request */);
1427 } 1427 }
1428 1428
1429 void RenderWidget::OnDeviceScaleFactorChanged() { 1429 void RenderWidget::OnDeviceScaleFactorChanged() {
1430 if (!compositor_) 1430 if (!compositor_)
1431 return; 1431 return;
1432 if (IsUseZoomForDSFEnabled()) 1432 if (IsUseZoomForDSFEnabled())
1433 compositor_->SetPaintedDeviceScaleFactor(GetOriginalDeviceScaleFactor()); 1433 compositor_->SetPaintedDeviceScaleFactor(GetOriginalDeviceScaleFactor());
1434 else 1434 else
1435 compositor_->setDeviceScaleFactor(device_scale_factor_); 1435 compositor_->setDeviceScaleFactor(device_scale_factor_);
1436 } 1436 }
1437 1437
1438 void RenderWidget::OnRepaint(gfx::Size size_to_paint) { 1438 void RenderWidget::OnRepaint(gfx::Size size_to_paint) {
1439 // During shutdown we can just ignore this message. 1439 // During shutdown we can just ignore this message.
1440 if (!webwidget_) 1440 if (!GetWebWidget())
1441 return; 1441 return;
1442 1442
1443 // Even if the browser provides an empty damage rect, it's still expecting to 1443 // Even if the browser provides an empty damage rect, it's still expecting to
1444 // receive a repaint ack so just damage the entire widget bounds. 1444 // receive a repaint ack so just damage the entire widget bounds.
1445 if (size_to_paint.IsEmpty()) { 1445 if (size_to_paint.IsEmpty()) {
1446 size_to_paint = size_; 1446 size_to_paint = size_;
1447 } 1447 }
1448 1448
1449 set_next_paint_is_repaint_ack(); 1449 set_next_paint_is_repaint_ack();
1450 if (compositor_) 1450 if (compositor_)
1451 compositor_->SetNeedsRedrawRect(gfx::Rect(size_to_paint)); 1451 compositor_->SetNeedsRedrawRect(gfx::Rect(size_to_paint));
1452 } 1452 }
1453 1453
1454 void RenderWidget::OnSyntheticGestureCompleted() { 1454 void RenderWidget::OnSyntheticGestureCompleted() {
1455 DCHECK(!pending_synthetic_gesture_callbacks_.empty()); 1455 DCHECK(!pending_synthetic_gesture_callbacks_.empty());
1456 1456
1457 pending_synthetic_gesture_callbacks_.front().Run(); 1457 pending_synthetic_gesture_callbacks_.front().Run();
1458 pending_synthetic_gesture_callbacks_.pop(); 1458 pending_synthetic_gesture_callbacks_.pop();
1459 } 1459 }
1460 1460
1461 void RenderWidget::OnSetTextDirection(WebTextDirection direction) { 1461 void RenderWidget::OnSetTextDirection(WebTextDirection direction) {
1462 if (!webwidget_) 1462 if (!GetWebWidget())
1463 return; 1463 return;
1464 webwidget_->setTextDirection(direction); 1464 GetWebWidget()->setTextDirection(direction);
1465 } 1465 }
1466 1466
1467 void RenderWidget::OnUpdateScreenRects(const gfx::Rect& view_screen_rect, 1467 void RenderWidget::OnUpdateScreenRects(const gfx::Rect& view_screen_rect,
1468 const gfx::Rect& window_screen_rect) { 1468 const gfx::Rect& window_screen_rect) {
1469 if (screen_metrics_emulator_) { 1469 if (screen_metrics_emulator_) {
1470 screen_metrics_emulator_->OnUpdateScreenRects(view_screen_rect, 1470 screen_metrics_emulator_->OnUpdateScreenRects(view_screen_rect,
1471 window_screen_rect); 1471 window_screen_rect);
1472 } else { 1472 } else {
1473 SetScreenRects(view_screen_rect, window_screen_rect); 1473 SetScreenRects(view_screen_rect, window_screen_rect);
1474 } 1474 }
(...skipping 21 matching lines...) Expand all
1496 1496
1497 void RenderWidget::showImeIfNeeded() { 1497 void RenderWidget::showImeIfNeeded() {
1498 OnShowImeIfNeeded(); 1498 OnShowImeIfNeeded();
1499 } 1499 }
1500 1500
1501 ui::TextInputType RenderWidget::GetTextInputType() { 1501 ui::TextInputType RenderWidget::GetTextInputType() {
1502 #if defined(ENABLE_PLUGINS) 1502 #if defined(ENABLE_PLUGINS)
1503 if (focused_pepper_plugin_) 1503 if (focused_pepper_plugin_)
1504 return focused_pepper_plugin_->text_input_type(); 1504 return focused_pepper_plugin_->text_input_type();
1505 #endif 1505 #endif
1506 if (webwidget_) 1506 if (GetWebWidget())
1507 return WebKitToUiTextInputType(webwidget_->textInputType()); 1507 return WebKitToUiTextInputType(GetWebWidget()->textInputType());
1508 return ui::TEXT_INPUT_TYPE_NONE; 1508 return ui::TEXT_INPUT_TYPE_NONE;
1509 } 1509 }
1510 1510
1511 void RenderWidget::UpdateCompositionInfo(bool immediate_request) { 1511 void RenderWidget::UpdateCompositionInfo(bool immediate_request) {
1512 if (!monitor_composition_info_ && !immediate_request) 1512 if (!monitor_composition_info_ && !immediate_request)
1513 return; // Do not calculate composition info if not requested. 1513 return; // Do not calculate composition info if not requested.
1514 1514
1515 TRACE_EVENT0("renderer", "RenderWidget::UpdateCompositionInfo"); 1515 TRACE_EVENT0("renderer", "RenderWidget::UpdateCompositionInfo");
1516 gfx::Range range; 1516 gfx::Range range;
1517 std::vector<gfx::Rect> character_bounds; 1517 std::vector<gfx::Rect> character_bounds;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1589 void RenderWidget::OnRequestCompositionUpdate(bool immediate_request, 1589 void RenderWidget::OnRequestCompositionUpdate(bool immediate_request,
1590 bool monitor_request) { 1590 bool monitor_request) {
1591 monitor_composition_info_ = monitor_request; 1591 monitor_composition_info_ = monitor_request;
1592 if (!immediate_request) 1592 if (!immediate_request)
1593 return; 1593 return;
1594 UpdateCompositionInfo(true /* immediate request */); 1594 UpdateCompositionInfo(true /* immediate request */);
1595 } 1595 }
1596 1596
1597 bool RenderWidget::ShouldHandleImeEvent() { 1597 bool RenderWidget::ShouldHandleImeEvent() {
1598 #if defined(OS_ANDROID) 1598 #if defined(OS_ANDROID)
1599 if (!webwidget_) 1599 if (!GetWebWidget())
1600 return false; 1600 return false;
1601 if (IsUsingImeThread()) 1601 if (IsUsingImeThread())
1602 return true; 1602 return true;
1603 1603
1604 // We cannot handle IME events if there is any chance that the event we are 1604 // We cannot handle IME events if there is any chance that the event we are
1605 // receiving here from the browser is based on the state that is different 1605 // receiving here from the browser is based on the state that is different
1606 // from our current one as indicated by |text_input_info_|. 1606 // from our current one as indicated by |text_input_info_|.
1607 // The states the browser might be in are: 1607 // The states the browser might be in are:
1608 // text_input_info_history_[0] - current state ack'd by browser 1608 // text_input_info_history_[0] - current state ack'd by browser
1609 // text_input_info_history_[1...N] - pending state changes 1609 // text_input_info_history_[1...N] - pending state changes
1610 for (size_t i = 0u; i < text_input_info_history_.size() - 1u; ++i) { 1610 for (size_t i = 0u; i < text_input_info_history_.size() - 1u; ++i) {
1611 if (text_input_info_history_[i] != text_input_info_) 1611 if (text_input_info_history_[i] != text_input_info_)
1612 return false; 1612 return false;
1613 } 1613 }
1614 return true; 1614 return true;
1615 #else 1615 #else
1616 return !!webwidget_; 1616 return !!GetWebWidget();
1617 #endif 1617 #endif
1618 } 1618 }
1619 1619
1620 void RenderWidget::OnSetDeviceScaleFactor(float device_scale_factor) { 1620 void RenderWidget::OnSetDeviceScaleFactor(float device_scale_factor) {
1621 if (device_scale_factor_ == device_scale_factor) 1621 if (device_scale_factor_ == device_scale_factor)
1622 return; 1622 return;
1623 1623
1624 device_scale_factor_ = device_scale_factor; 1624 device_scale_factor_ = device_scale_factor;
1625 1625
1626 OnDeviceScaleFactorChanged(); 1626 OnDeviceScaleFactorChanged();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1662 if (is_hidden_) 1662 if (is_hidden_)
1663 RenderThreadImpl::current()->WidgetHidden(); 1663 RenderThreadImpl::current()->WidgetHidden();
1664 else 1664 else
1665 RenderThreadImpl::current()->WidgetRestored(); 1665 RenderThreadImpl::current()->WidgetRestored();
1666 1666
1667 if (render_widget_scheduling_state_) 1667 if (render_widget_scheduling_state_)
1668 render_widget_scheduling_state_->SetHidden(hidden); 1668 render_widget_scheduling_state_->SetHidden(hidden);
1669 } 1669 }
1670 1670
1671 void RenderWidget::DidToggleFullscreen() { 1671 void RenderWidget::DidToggleFullscreen() {
1672 if (!webwidget_) 1672 if (!GetWebWidget())
1673 return; 1673 return;
1674 1674
1675 if (is_fullscreen_granted_) { 1675 if (is_fullscreen_granted_) {
1676 webwidget_->didEnterFullscreen(); 1676 GetWebWidget()->didEnterFullscreen();
1677 } else { 1677 } else {
1678 webwidget_->didExitFullscreen(); 1678 GetWebWidget()->didExitFullscreen();
1679 } 1679 }
1680 } 1680 }
1681 1681
1682 bool RenderWidget::next_paint_is_resize_ack() const { 1682 bool RenderWidget::next_paint_is_resize_ack() const {
1683 return ViewHostMsg_UpdateRect_Flags::is_resize_ack(next_paint_flags_); 1683 return ViewHostMsg_UpdateRect_Flags::is_resize_ack(next_paint_flags_);
1684 } 1684 }
1685 1685
1686 void RenderWidget::set_next_paint_is_resize_ack() { 1686 void RenderWidget::set_next_paint_is_resize_ack() {
1687 next_paint_flags_ |= ViewHostMsg_UpdateRect_Flags::IS_RESIZE_ACK; 1687 next_paint_flags_ |= ViewHostMsg_UpdateRect_Flags::IS_RESIZE_ACK;
1688 } 1688 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1739 // after Pepper API equips features related to surrounding text retrieval. 1739 // after Pepper API equips features related to surrounding text retrieval.
1740 blink::WebRect caret(focused_pepper_plugin_->GetCaretBounds()); 1740 blink::WebRect caret(focused_pepper_plugin_->GetCaretBounds());
1741 convertViewportToWindow(&caret); 1741 convertViewportToWindow(&caret);
1742 *focus = caret; 1742 *focus = caret;
1743 *anchor = caret; 1743 *anchor = caret;
1744 return; 1744 return;
1745 } 1745 }
1746 #endif 1746 #endif
1747 WebRect focus_webrect; 1747 WebRect focus_webrect;
1748 WebRect anchor_webrect; 1748 WebRect anchor_webrect;
1749 webwidget_->selectionBounds(focus_webrect, anchor_webrect); 1749 GetWebWidget()->selectionBounds(focus_webrect, anchor_webrect);
1750 convertViewportToWindow(&focus_webrect); 1750 convertViewportToWindow(&focus_webrect);
1751 convertViewportToWindow(&anchor_webrect); 1751 convertViewportToWindow(&anchor_webrect);
1752 *focus = focus_webrect; 1752 *focus = focus_webrect;
1753 *anchor = anchor_webrect; 1753 *anchor = anchor_webrect;
1754 } 1754 }
1755 1755
1756 void RenderWidget::UpdateSelectionBounds() { 1756 void RenderWidget::UpdateSelectionBounds() {
1757 TRACE_EVENT0("renderer", "RenderWidget::UpdateSelectionBounds"); 1757 TRACE_EVENT0("renderer", "RenderWidget::UpdateSelectionBounds");
1758 if (!webwidget_) 1758 if (!GetWebWidget())
1759 return; 1759 return;
1760 if (ime_event_guard_) 1760 if (ime_event_guard_)
1761 return; 1761 return;
1762 1762
1763 #if defined(USE_AURA) 1763 #if defined(USE_AURA)
1764 // TODO(mohsen): For now, always send explicit selection IPC notifications for 1764 // TODO(mohsen): For now, always send explicit selection IPC notifications for
1765 // Aura beucause composited selection updates are not working for webview tags 1765 // Aura beucause composited selection updates are not working for webview tags
1766 // which regresses IME inside webview. Remove this when composited selection 1766 // which regresses IME inside webview. Remove this when composited selection
1767 // updates are fixed for webviews. See, http://crbug.com/510568. 1767 // updates are fixed for webviews. See, http://crbug.com/510568.
1768 bool send_ipc = true; 1768 bool send_ipc = true;
1769 #else 1769 #else
1770 // With composited selection updates, the selection bounds will be reported 1770 // With composited selection updates, the selection bounds will be reported
1771 // directly by the compositor, in which case explicit IPC selection 1771 // directly by the compositor, in which case explicit IPC selection
1772 // notifications should be suppressed. 1772 // notifications should be suppressed.
1773 bool send_ipc = 1773 bool send_ipc =
1774 !blink::WebRuntimeFeatures::isCompositedSelectionUpdateEnabled(); 1774 !blink::WebRuntimeFeatures::isCompositedSelectionUpdateEnabled();
1775 #endif 1775 #endif
1776 if (send_ipc) { 1776 if (send_ipc) {
1777 ViewHostMsg_SelectionBounds_Params params; 1777 ViewHostMsg_SelectionBounds_Params params;
1778 GetSelectionBounds(&params.anchor_rect, &params.focus_rect); 1778 GetSelectionBounds(&params.anchor_rect, &params.focus_rect);
1779 if (selection_anchor_rect_ != params.anchor_rect || 1779 if (selection_anchor_rect_ != params.anchor_rect ||
1780 selection_focus_rect_ != params.focus_rect) { 1780 selection_focus_rect_ != params.focus_rect) {
1781 selection_anchor_rect_ = params.anchor_rect; 1781 selection_anchor_rect_ = params.anchor_rect;
1782 selection_focus_rect_ = params.focus_rect; 1782 selection_focus_rect_ = params.focus_rect;
1783 webwidget_->selectionTextDirection(params.focus_dir, params.anchor_dir); 1783 GetWebWidget()->selectionTextDirection(params.focus_dir,
1784 params.is_anchor_first = webwidget_->isSelectionAnchorFirst(); 1784 params.anchor_dir);
1785 params.is_anchor_first = GetWebWidget()->isSelectionAnchorFirst();
1785 Send(new ViewHostMsg_SelectionBoundsChanged(routing_id_, params)); 1786 Send(new ViewHostMsg_SelectionBoundsChanged(routing_id_, params));
1786 } 1787 }
1787 } 1788 }
1788 1789
1789 UpdateCompositionInfo(false /* not an immediate request */); 1790 UpdateCompositionInfo(false /* not an immediate request */);
1790 } 1791 }
1791 1792
1792 void RenderWidget::SetDeviceColorProfileForTesting( 1793 void RenderWidget::SetDeviceColorProfileForTesting(
1793 const std::vector<char>& color_profile) { 1794 const std::vector<char>& color_profile) {
1794 SetDeviceColorProfile(color_profile); 1795 SetDeviceColorProfile(color_profile);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1852 void RenderWidget::GetCompositionCharacterBounds( 1853 void RenderWidget::GetCompositionCharacterBounds(
1853 std::vector<gfx::Rect>* bounds) { 1854 std::vector<gfx::Rect>* bounds) {
1854 DCHECK(bounds); 1855 DCHECK(bounds);
1855 bounds->clear(); 1856 bounds->clear();
1856 1857
1857 #if defined(ENABLE_PLUGINS) 1858 #if defined(ENABLE_PLUGINS)
1858 if (focused_pepper_plugin_) 1859 if (focused_pepper_plugin_)
1859 return; 1860 return;
1860 #endif 1861 #endif
1861 1862
1862 if (!webwidget_) 1863 if (!GetWebWidget())
1863 return; 1864 return;
1864 blink::WebVector<blink::WebRect> bounds_from_blink; 1865 blink::WebVector<blink::WebRect> bounds_from_blink;
1865 if (!webwidget_->getCompositionCharacterBounds(bounds_from_blink)) 1866 if (!GetWebWidget()->getCompositionCharacterBounds(bounds_from_blink))
1866 return; 1867 return;
1867 1868
1868 for (size_t i = 0; i < bounds_from_blink.size(); ++i) { 1869 for (size_t i = 0; i < bounds_from_blink.size(); ++i) {
1869 convertViewportToWindow(&bounds_from_blink[i]); 1870 convertViewportToWindow(&bounds_from_blink[i]);
1870 bounds->push_back(bounds_from_blink[i]); 1871 bounds->push_back(bounds_from_blink[i]);
1871 } 1872 }
1872 } 1873 }
1873 1874
1874 void RenderWidget::GetCompositionRange(gfx::Range* range) { 1875 void RenderWidget::GetCompositionRange(gfx::Range* range) {
1875 #if defined(ENABLE_PLUGINS) 1876 #if defined(ENABLE_PLUGINS)
1876 if (focused_pepper_plugin_) 1877 if (focused_pepper_plugin_)
1877 return; 1878 return;
1878 #endif 1879 #endif
1879 WebRange web_range = webwidget_->compositionRange(); 1880 WebRange web_range = GetWebWidget()->compositionRange();
1880 if (!web_range.isNull()) { 1881 if (!web_range.isNull()) {
1881 range->set_start(web_range.startOffset()); 1882 range->set_start(web_range.startOffset());
1882 range->set_end(web_range.endOffset()); 1883 range->set_end(web_range.endOffset());
1883 } else { 1884 } else {
1884 web_range = webwidget_->caretOrSelectionRange(); 1885 web_range = webwidget_->caretOrSelectionRange();
1885 range->set_start(web_range.startOffset()); 1886 range->set_start(web_range.startOffset());
1886 range->set_end(web_range.endOffset()); 1887 range->set_end(web_range.endOffset());
1887 } 1888 }
1888 } 1889 }
1889 1890
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1943 return web_screen_info; 1944 return web_screen_info;
1944 } 1945 }
1945 1946
1946 void RenderWidget::resetInputMethod() { 1947 void RenderWidget::resetInputMethod() {
1947 ImeEventGuard guard(this); 1948 ImeEventGuard guard(this);
1948 // If the last text input type is not None, then we should finish any 1949 // If the last text input type is not None, then we should finish any
1949 // ongoing composition regardless of the new text input type. 1950 // ongoing composition regardless of the new text input type.
1950 if (text_input_info_.type != blink::WebTextInputTypeNone) { 1951 if (text_input_info_.type != blink::WebTextInputTypeNone) {
1951 // If a composition text exists, then we need to let the browser process 1952 // If a composition text exists, then we need to let the browser process
1952 // to cancel the input method's ongoing composition session. 1953 // to cancel the input method's ongoing composition session.
1953 if (webwidget_->confirmComposition()) 1954 if (GetWebWidget()->confirmComposition())
1954 Send(new InputHostMsg_ImeCancelComposition(routing_id())); 1955 Send(new InputHostMsg_ImeCancelComposition(routing_id()));
1955 } 1956 }
1956 1957
1957 UpdateCompositionInfo(false /* not an immediate request */); 1958 UpdateCompositionInfo(false /* not an immediate request */);
1958 } 1959 }
1959 1960
1960 #if defined(OS_ANDROID) 1961 #if defined(OS_ANDROID)
1961 void RenderWidget::showUnhandledTapUIIfNeeded( 1962 void RenderWidget::showUnhandledTapUIIfNeeded(
1962 const WebPoint& tapped_position, 1963 const WebPoint& tapped_position,
1963 const WebNode& tapped_node, 1964 const WebNode& tapped_node,
(...skipping 11 matching lines...) Expand all
1975 1976
1976 void RenderWidget::didHandleGestureEvent( 1977 void RenderWidget::didHandleGestureEvent(
1977 const WebGestureEvent& event, 1978 const WebGestureEvent& event,
1978 bool event_cancelled) { 1979 bool event_cancelled) {
1979 #if defined(OS_ANDROID) || defined(USE_AURA) 1980 #if defined(OS_ANDROID) || defined(USE_AURA)
1980 if (event_cancelled) 1981 if (event_cancelled)
1981 return; 1982 return;
1982 if (event.type == WebInputEvent::GestureTap) { 1983 if (event.type == WebInputEvent::GestureTap) {
1983 UpdateTextInputState(ShowIme::IF_NEEDED, ChangeSource::FROM_NON_IME); 1984 UpdateTextInputState(ShowIme::IF_NEEDED, ChangeSource::FROM_NON_IME);
1984 } else if (event.type == WebInputEvent::GestureLongPress) { 1985 } else if (event.type == WebInputEvent::GestureLongPress) {
1985 DCHECK(webwidget_); 1986 DCHECK(GetWebWidget());
1986 if (webwidget_->textInputInfo().value.isEmpty()) 1987 if (GetWebWidget()->textInputInfo().value.isEmpty())
1987 UpdateTextInputState(ShowIme::HIDE_IME, ChangeSource::FROM_NON_IME); 1988 UpdateTextInputState(ShowIme::HIDE_IME, ChangeSource::FROM_NON_IME);
1988 else 1989 else
1989 UpdateTextInputState(ShowIme::IF_NEEDED, ChangeSource::FROM_NON_IME); 1990 UpdateTextInputState(ShowIme::IF_NEEDED, ChangeSource::FROM_NON_IME);
1990 } 1991 }
1991 #endif 1992 #endif
1992 } 1993 }
1993 1994
1994 void RenderWidget::didOverscroll( 1995 void RenderWidget::didOverscroll(
1995 const blink::WebFloatSize& overscrollDelta, 1996 const blink::WebFloatSize& overscrollDelta,
1996 const blink::WebFloatSize& accumulatedOverscroll, 1997 const blink::WebFloatSize& accumulatedOverscroll,
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
2114 2115
2115 void RenderWidget::requestPointerUnlock() { 2116 void RenderWidget::requestPointerUnlock() {
2116 mouse_lock_dispatcher_->UnlockMouse(webwidget_mouse_lock_target_.get()); 2117 mouse_lock_dispatcher_->UnlockMouse(webwidget_mouse_lock_target_.get());
2117 } 2118 }
2118 2119
2119 bool RenderWidget::isPointerLocked() { 2120 bool RenderWidget::isPointerLocked() {
2120 return mouse_lock_dispatcher_->IsMouseLockedTo( 2121 return mouse_lock_dispatcher_->IsMouseLockedTo(
2121 webwidget_mouse_lock_target_.get()); 2122 webwidget_mouse_lock_target_.get());
2122 } 2123 }
2123 2124
2125 blink::WebWidget* RenderWidget::GetWebWidget() const {
2126 return webwidget_;
2127 }
2128
2124 } // namespace content 2129 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_widget.h ('k') | content/renderer/render_widget_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698