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

Side by Side Diff: third_party/WebKit/Source/web/WebViewImpl.cpp

Issue 2936423003: Move Get/SetScrollOffset methods from WebFrame to WebLocalFrame. (Closed)
Patch Set: Use WebViewHelper::LocalMainFrame() where possible. Created 3 years, 6 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 /* 1 /*
2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 1276 matching lines...) Expand 10 before | Expand all | Expand 10 after
1287 return WebRect(); 1287 return WebRect();
1288 } 1288 }
1289 1289
1290 WebRect WebViewImpl::WidenRectWithinPageBounds(const WebRect& source, 1290 WebRect WebViewImpl::WidenRectWithinPageBounds(const WebRect& source,
1291 int target_margin, 1291 int target_margin,
1292 int minimum_margin) { 1292 int minimum_margin) {
1293 WebSize max_size; 1293 WebSize max_size;
1294 if (MainFrame()) 1294 if (MainFrame())
1295 max_size = MainFrame()->ContentsSize(); 1295 max_size = MainFrame()->ContentsSize();
1296 IntSize scroll_offset; 1296 IntSize scroll_offset;
1297 if (MainFrame()) 1297 if (MainFrame()) {
1298 scroll_offset = MainFrame()->GetScrollOffset(); 1298 // TODO(lukasza): https://crbug.com/734209: The DCHECK below holds now, but
1299 // only because all of the callers don't support OOPIFs and exit early if
1300 // the main frame is not local.
1301 DCHECK(MainFrame()->IsWebLocalFrame());
1302 scroll_offset = MainFrame()->ToWebLocalFrame()->GetScrollOffset();
1303 }
1299 int left_margin = target_margin; 1304 int left_margin = target_margin;
1300 int right_margin = target_margin; 1305 int right_margin = target_margin;
1301 1306
1302 const int absolute_source_x = source.x + scroll_offset.Width(); 1307 const int absolute_source_x = source.x + scroll_offset.Width();
1303 if (left_margin > absolute_source_x) { 1308 if (left_margin > absolute_source_x) {
1304 left_margin = absolute_source_x; 1309 left_margin = absolute_source_x;
1305 right_margin = std::max(left_margin, minimum_margin); 1310 right_margin = std::max(left_margin, minimum_margin);
1306 } 1311 }
1307 1312
1308 const int maximum_right_margin = 1313 const int maximum_right_margin =
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
1508 if (!highlight_color.Alpha()) 1513 if (!highlight_color.Alpha())
1509 continue; 1514 continue;
1510 1515
1511 link_highlights_.push_back(LinkHighlightImpl::Create(node, this)); 1516 link_highlights_.push_back(LinkHighlightImpl::Create(node, this));
1512 } 1517 }
1513 1518
1514 UpdateAllLifecyclePhases(); 1519 UpdateAllLifecyclePhases();
1515 } 1520 }
1516 1521
1517 void WebViewImpl::AnimateDoubleTapZoom(const IntPoint& point_in_root_frame) { 1522 void WebViewImpl::AnimateDoubleTapZoom(const IntPoint& point_in_root_frame) {
1523 // TODO(lukasza): https://crbug.com/734209: Add OOPIF support.
1518 if (!MainFrameImpl()) 1524 if (!MainFrameImpl())
1519 return; 1525 return;
1520 1526
1521 WebRect block_bounds = ComputeBlockBound(point_in_root_frame, false); 1527 WebRect block_bounds = ComputeBlockBound(point_in_root_frame, false);
1522 float scale; 1528 float scale;
1523 WebPoint scroll; 1529 WebPoint scroll;
1524 1530
1525 ComputeScaleAndScrollForBlockRect( 1531 ComputeScaleAndScrollForBlockRect(
1526 point_in_root_frame, block_bounds, touchPointPadding, 1532 point_in_root_frame, block_bounds, touchPointPadding,
1527 MinimumPageScaleFactor() * doubleTapZoomAlreadyLegibleRatio, scale, 1533 MinimumPageScaleFactor() * doubleTapZoomAlreadyLegibleRatio, scale,
(...skipping 26 matching lines...) Expand all
1554 // checking for m_layerTreeView->hasPendingPageScaleAnimation() is because of 1560 // checking for m_layerTreeView->hasPendingPageScaleAnimation() is because of
1555 // fake page scale animation plumbing for testing, which doesn't actually 1561 // fake page scale animation plumbing for testing, which doesn't actually
1556 // initiate a page scale animation. 1562 // initiate a page scale animation.
1557 if (is_animating) { 1563 if (is_animating) {
1558 double_tap_zoom_page_scale_factor_ = scale; 1564 double_tap_zoom_page_scale_factor_ = scale;
1559 double_tap_zoom_pending_ = true; 1565 double_tap_zoom_pending_ = true;
1560 } 1566 }
1561 } 1567 }
1562 1568
1563 void WebViewImpl::ZoomToFindInPageRect(const WebRect& rect_in_root_frame) { 1569 void WebViewImpl::ZoomToFindInPageRect(const WebRect& rect_in_root_frame) {
1570 // TODO(lukasza): https://crbug.com/734209: Add OOPIF support.
1564 if (!MainFrameImpl()) 1571 if (!MainFrameImpl())
1565 return; 1572 return;
1566 1573
1567 WebRect block_bounds = ComputeBlockBound( 1574 WebRect block_bounds = ComputeBlockBound(
1568 WebPoint(rect_in_root_frame.x + rect_in_root_frame.width / 2, 1575 WebPoint(rect_in_root_frame.x + rect_in_root_frame.width / 2,
1569 rect_in_root_frame.y + rect_in_root_frame.height / 2), 1576 rect_in_root_frame.y + rect_in_root_frame.height / 2),
1570 true); 1577 true);
1571 1578
1572 if (block_bounds.IsEmpty()) { 1579 if (block_bounds.IsEmpty()) {
1573 // Keep current scale (no need to scroll as x,y will normally already 1580 // Keep current scale (no need to scroll as x,y will normally already
1574 // be visible). FIXME: Revisit this if it isn't always true. 1581 // be visible). FIXME: Revisit this if it isn't always true.
1575 return; 1582 return;
1576 } 1583 }
1577 1584
1578 float scale; 1585 float scale;
1579 WebPoint scroll; 1586 WebPoint scroll;
1580 1587
1581 ComputeScaleAndScrollForBlockRect( 1588 ComputeScaleAndScrollForBlockRect(
1582 WebPoint(rect_in_root_frame.x, rect_in_root_frame.y), block_bounds, 1589 WebPoint(rect_in_root_frame.x, rect_in_root_frame.y), block_bounds,
1583 nonUserInitiatedPointPadding, MinimumPageScaleFactor(), scale, scroll); 1590 nonUserInitiatedPointPadding, MinimumPageScaleFactor(), scale, scroll);
1584 1591
1585 StartPageScaleAnimation(scroll, false, scale, 1592 StartPageScaleAnimation(scroll, false, scale,
1586 findInPageAnimationDurationInSeconds); 1593 findInPageAnimationDurationInSeconds);
1587 } 1594 }
1588 1595
1589 bool WebViewImpl::ZoomToMultipleTargetsRect(const WebRect& rect_in_root_frame) { 1596 bool WebViewImpl::ZoomToMultipleTargetsRect(const WebRect& rect_in_root_frame) {
1597 // TODO(lukasza): https://crbug.com/734209: Add OOPIF support.
1590 if (!MainFrameImpl()) 1598 if (!MainFrameImpl())
1591 return false; 1599 return false;
1592 1600
1593 float scale; 1601 float scale;
1594 WebPoint scroll; 1602 WebPoint scroll;
1595 1603
1596 ComputeScaleAndScrollForBlockRect( 1604 ComputeScaleAndScrollForBlockRect(
1597 WebPoint(rect_in_root_frame.x, rect_in_root_frame.y), rect_in_root_frame, 1605 WebPoint(rect_in_root_frame.x, rect_in_root_frame.y), rect_in_root_frame,
1598 nonUserInitiatedPointPadding, MinimumPageScaleFactor(), scale, scroll); 1606 nonUserInitiatedPointPadding, MinimumPageScaleFactor(), scale, scroll);
1599 1607
(...skipping 2520 matching lines...) Expand 10 before | Expand all | Expand 10 after
4120 if (focused_frame->LocalFrameRoot() != MainFrameImpl()->GetFrame()) 4128 if (focused_frame->LocalFrameRoot() != MainFrameImpl()->GetFrame())
4121 return nullptr; 4129 return nullptr;
4122 return focused_frame; 4130 return focused_frame;
4123 } 4131 }
4124 4132
4125 LocalFrame* WebViewImpl::FocusedLocalFrameAvailableForIme() const { 4133 LocalFrame* WebViewImpl::FocusedLocalFrameAvailableForIme() const {
4126 return ime_accept_events_ ? FocusedLocalFrameInWidget() : nullptr; 4134 return ime_accept_events_ ? FocusedLocalFrameInWidget() : nullptr;
4127 } 4135 }
4128 4136
4129 } // namespace blink 4137 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698