Index: third_party/WebKit/Source/web/WebViewImpl.cpp |
diff --git a/third_party/WebKit/Source/web/WebViewImpl.cpp b/third_party/WebKit/Source/web/WebViewImpl.cpp |
index 3ce96f9ad006087364986b5c9a1798856ca3bb94..72326e93daf0387e933ef84ec0a30ccde5f7c4fb 100644 |
--- a/third_party/WebKit/Source/web/WebViewImpl.cpp |
+++ b/third_party/WebKit/Source/web/WebViewImpl.cpp |
@@ -230,7 +230,8 @@ const double WebView::minTextSizeMultiplier = 0.5; |
const double WebView::maxTextSizeMultiplier = 3.0; |
// Used to defer all page activity in cases where the embedder wishes to run |
-// a nested event loop. Using a stack enables nesting of message loop invocations. |
+// a nested event loop. Using a stack enables nesting of message loop |
+// invocations. |
static Vector<std::unique_ptr<ScopedPageLoadDeferrer>>& |
pageLoadDeferrerStack() { |
DEFINE_STATIC_LOCAL(Vector<std::unique_ptr<ScopedPageLoadDeferrer>>, |
@@ -556,8 +557,8 @@ void WebViewImpl::handleMouseDown(LocalFrame& mainFrame, |
if (m_pagePopup && pagePopup && |
m_pagePopup->hasSamePopupClient(pagePopup.get())) { |
- // That click triggered a page popup that is the same as the one we just closed. |
- // It needs to be closed. |
+ // That click triggered a page popup that is the same as the one we just |
+ // closed. It needs to be closed. |
cancelPagePopup(); |
} |
@@ -682,7 +683,8 @@ bool WebViewImpl::scrollBy(const WebFloatSize& delta, |
WebInputEventResult::NotHandled) |
return true; |
- // TODO(dtapuska): Remove these GSB/GSE sequences when trackpad latching is implemented; see crbug.com/526463. |
+ // TODO(dtapuska): Remove these GSB/GSE sequences when trackpad latching is |
+ // implemented; see crbug.com/526463. |
WebGestureEvent syntheticScrollBegin = createGestureScrollEventFromFling( |
WebInputEvent::GestureScrollBegin, WebGestureDeviceTouchpad); |
syntheticScrollBegin.data.scrollBegin.deltaXHint = delta.width; |
@@ -793,8 +795,9 @@ WebInputEventResult WebViewImpl::handleGestureEvent( |
m_client->cancelScheduledContentIntents(); |
animateDoubleTapZoom(platformEvent.position()); |
} |
- // GestureDoubleTap is currently only used by Android for zooming. For WebCore, |
- // GestureTap with tap count = 2 is used instead. So we drop GestureDoubleTap here. |
+ // GestureDoubleTap is currently only used by Android for zooming. For |
+ // WebCore, GestureTap with tap count = 2 is used instead. So we drop |
+ // GestureDoubleTap here. |
eventResult = WebInputEventResult::HandledSystem; |
m_client->didHandleGestureEvent(event, eventCancelled); |
return eventResult; |
@@ -803,10 +806,11 @@ WebInputEventResult WebViewImpl::handleGestureEvent( |
case WebInputEvent::GestureScrollEnd: |
case WebInputEvent::GestureScrollUpdate: |
case WebInputEvent::GestureFlingStart: |
- // Scrolling-related gesture events invoke EventHandler recursively for each frame down |
- // the chain, doing a single-frame hit-test per frame. This matches handleWheelEvent. |
- // Perhaps we could simplify things by rewriting scroll handling to work inner frame |
- // out, and then unify with other gesture events. |
+ // Scrolling-related gesture events invoke EventHandler recursively for |
+ // each frame down the chain, doing a single-frame hit-test per frame. |
+ // This matches handleWheelEvent. Perhaps we could simplify things by |
+ // rewriting scroll handling to work inner frame out, and then unify with |
+ // other gesture events. |
eventResult = |
mainFrameImpl()->frame()->eventHandler().handleGestureScrollEvent( |
platformEvent); |
@@ -820,13 +824,14 @@ WebInputEventResult WebViewImpl::handleGestureEvent( |
break; |
} |
- // Hit test across all frames and do touch adjustment as necessary for the event type. |
+ // Hit test across all frames and do touch adjustment as necessary for the |
+ // event type. |
GestureEventWithHitTestResults targetedEvent = |
m_page->deprecatedLocalMainFrame()->eventHandler().targetGestureEvent( |
platformEvent); |
- // Handle link highlighting outside the main switch to avoid getting lost in the |
- // complicated set of cases handled below. |
+ // Handle link highlighting outside the main switch to avoid getting lost in |
+ // the complicated set of cases handled below. |
switch (event.type) { |
case WebInputEvent::GestureShowPress: |
// Queue a highlight animation, then hand off to regular handler. |
@@ -857,10 +862,12 @@ WebInputEventResult WebViewImpl::handleGestureEvent( |
break; |
} |
- // Don't trigger a disambiguation popup on sites designed for mobile devices. |
- // Instead, assume that the page has been designed with big enough buttons and links. |
- // Don't trigger a disambiguation popup when screencasting, since it's implemented outside of |
- // compositor pipeline and is not being screencasted itself. This leads to bad user experience. |
+ // Don't trigger a disambiguation popup on sites designed for mobile |
+ // devices. Instead, assume that the page has been designed with big |
+ // enough buttons and links. Don't trigger a disambiguation popup when |
+ // screencasting, since it's implemented outside of compositor pipeline |
+ // and is not being screencasted itself. This leads to bad user |
+ // experience. |
WebDevToolsAgentImpl* devTools = mainFrameDevToolsAgentImpl(); |
VisualViewport& visualViewport = page()->frameHost().visualViewport(); |
bool screencastEnabled = devTools && devTools->screencastEnabled(); |
@@ -872,8 +879,8 @@ WebInputEventResult WebViewImpl::handleGestureEvent( |
event.y - event.data.tap.height / 2, event.data.tap.width, |
event.data.tap.height))); |
- // TODO(bokan): We shouldn't pass details of the VisualViewport offset to render_view_impl. |
- // crbug.com/459591 |
+ // TODO(bokan): We shouldn't pass details of the VisualViewport offset |
+ // to render_view_impl. crbug.com/459591 |
WebSize visualViewportOffset = |
flooredIntSize(visualViewport.location()); |
@@ -883,7 +890,8 @@ WebInputEventResult WebViewImpl::handleGestureEvent( |
findGoodTouchTargets(boundingBox, mainFrameImpl()->frame(), |
goodTargets, highlightNodes); |
// FIXME: replace touch adjustment code when numberOfGoodTargets == 1? |
- // Single candidate case is currently handled by: https://bugs.webkit.org/show_bug.cgi?id=85101 |
+ // Single candidate case is currently handled by: |
+ // https://bugs.webkit.org/show_bug.cgi?id=85101 |
if (goodTargets.size() >= 2 && m_client && |
m_client->didTapMultipleTargets(visualViewportOffset, boundingBox, |
goodTargets)) { |
@@ -902,8 +910,8 @@ WebInputEventResult WebViewImpl::handleGestureEvent( |
if (m_pagePopup && pagePopup && |
m_pagePopup->hasSamePopupClient(pagePopup.get())) { |
- // The tap triggered a page popup that is the same as the one we just closed. |
- // It needs to be closed. |
+ // The tap triggered a page popup that is the same as the one we just |
+ // closed. It needs to be closed. |
cancelPagePopup(); |
} |
break; |
@@ -945,9 +953,10 @@ WebInputEventResult WebViewImpl::handleSyntheticWheelFromTouchpadPinchEvent( |
const WebGestureEvent& pinchEvent) { |
DCHECK_EQ(pinchEvent.type, WebInputEvent::GesturePinchUpdate); |
- // For pinch gesture events, match typical trackpad behavior on Windows by sending fake |
- // wheel events with the ctrl modifier set when we see trackpad pinch gestures. Ideally |
- // we'd someday get a platform 'pinch' event and send that instead. |
+ // For pinch gesture events, match typical trackpad behavior on Windows by |
+ // sending fake wheel events with the ctrl modifier set when we see trackpad |
+ // pinch gestures. Ideally we'd someday get a platform 'pinch' event and |
+ // send that instead. |
WebMouseWheelEvent wheelEvent; |
wheelEvent.type = WebInputEvent::MouseWheel; |
wheelEvent.timeStampSeconds = pinchEvent.timeStampSeconds; |
@@ -1135,13 +1144,14 @@ WebInputEventResult WebViewImpl::handleKeyEvent(const WebKeyboardEvent& event) { |
WebInputEventResult result = frame->eventHandler().keyEvent(event); |
if (result != WebInputEventResult::NotHandled) { |
if (WebInputEvent::RawKeyDown == event.type) { |
- // Suppress the next keypress event unless the focused node is a plugin node. |
- // (Flash needs these keypress events to handle non-US keyboards.) |
+ // Suppress the next keypress event unless the focused node is a plugin |
+ // node. (Flash needs these keypress events to handle non-US keyboards.) |
Element* element = focusedElement(); |
if (element && element->layoutObject() && |
element->layoutObject()->isEmbeddedObject()) { |
if (event.windowsKeyCode == VKEY_TAB) { |
- // If the plugin supports keyboard focus then we should not send a tab keypress event. |
+ // If the plugin supports keyboard focus then we should not send a tab |
+ // keypress event. |
Widget* widget = toLayoutPart(element->layoutObject())->widget(); |
if (widget && widget->isPluginContainer()) { |
WebPluginContainerImpl* plugin = toWebPluginContainerImpl(widget); |
@@ -1258,7 +1268,8 @@ WebRect WebViewImpl::computeBlockBound(const WebPoint& pointInRootFrame, |
return WebRect(); |
// Find the block type node based on the hit node. |
- // FIXME: This wants to walk flat tree with LayoutTreeBuilderTraversal::parent(). |
+ // FIXME: This wants to walk flat tree with |
+ // LayoutTreeBuilderTraversal::parent(). |
while (node && (!node->layoutObject() || node->layoutObject()->isInline())) |
node = LayoutTreeBuilderTraversal::parent(*node); |
@@ -1441,10 +1452,11 @@ Node* WebViewImpl::bestTapNode( |
return nullptr; |
} |
- // We should pick the largest enclosing node with hand cursor set. We do this by first jumping |
- // up to cursorDefiningAncestor (which is already known to have hand cursor set). Then we locate |
- // the next cursor-defining ancestor up in the the tree and repeat the jumps as long as the node |
- // has hand cursor set. |
+ // We should pick the largest enclosing node with hand cursor set. We do this |
+ // by first jumping up to cursorDefiningAncestor (which is already known to |
+ // have hand cursor set). Then we locate the next cursor-defining ancestor up |
+ // in the the tree and repeat the jumps as long as the node has hand cursor |
+ // set. |
do { |
bestTouchNode = cursorDefiningAncestor; |
cursorDefiningAncestor = findCursorDefiningAncestor( |
@@ -1483,8 +1495,8 @@ void WebViewImpl::enableTapHighlights( |
continue; |
Color highlightColor = node->layoutObject()->style()->tapHighlightColor(); |
- // Safari documentation for -webkit-tap-highlight-color says if the specified color has 0 alpha, |
- // then tap highlighting is disabled. |
+ // Safari documentation for -webkit-tap-highlight-color says if the |
+ // specified color has 0 alpha, then tap highlighting is disabled. |
// http://developer.apple.com/library/safari/#documentation/appleapplications/reference/safaricssref/articles/standardcssproperties.html |
if (!highlightColor.alpha()) |
continue; |
@@ -1530,9 +1542,10 @@ void WebViewImpl::animateDoubleTapZoom(const IntPoint& pointInRootFrame) { |
scroll, false, scale, doubleTapZoomAnimationDurationInSeconds); |
} |
- // TODO(dglazkov): The only reason why we're using isAnimating and not just checking for |
- // m_layerTreeView->hasPendingPageScaleAnimation() is because of fake page scale animation plumbing |
- // for testing, which doesn't actually initiate a page scale animation. |
+ // TODO(dglazkov): The only reason why we're using isAnimating and not just |
+ // checking for m_layerTreeView->hasPendingPageScaleAnimation() is because of |
+ // fake page scale animation plumbing for testing, which doesn't actually |
+ // initiate a page scale animation. |
if (isAnimating) { |
m_doubleTapZoomPageScaleFactor = scale; |
m_doubleTapZoomPending = true; |
@@ -1590,7 +1603,8 @@ void WebViewImpl::hasTouchEventHandlers(bool hasTouchHandlers) { |
} |
bool WebViewImpl::hasTouchEventHandlersAt(const WebPoint& point) { |
- // FIXME: Implement this. Note that the point must be divided by pageScaleFactor. |
+ // FIXME: Implement this. Note that the point must be divided by |
+ // pageScaleFactor. |
return true; |
} |
@@ -1611,7 +1625,8 @@ WebInputEventResult WebViewImpl::sendContextMenuEvent( |
Frame* focusedFrame = page()->focusController().focusedOrMainFrame(); |
if (!focusedFrame->isLocalFrame()) |
return WebInputEventResult::NotHandled; |
- // Firefox reveal focus based on "keydown" event but not "contextmenu" event, we match FF. |
+ // Firefox reveal focus based on "keydown" event but not "contextmenu" |
+ // event, we match FF. |
if (Element* focusedElement = |
toLocalFrame(focusedFrame)->document()->focusedElement()) |
focusedElement->scrollIntoViewIfNeeded(); |
@@ -1954,15 +1969,17 @@ void WebViewImpl::resizeViewWhileAnchored(FrameView* view, |
topControls().setHeight(topControlsHeight, topControlsShrinkLayout); |
{ |
- // Avoids unnecessary invalidations while various bits of state in TextAutosizer are updated. |
+ // Avoids unnecessary invalidations while various bits of state in |
+ // TextAutosizer are updated. |
TextAutosizer::DeferUpdatePageInfo deferUpdatePageInfo(page()); |
performResize(); |
} |
m_fullscreenController->updateSize(); |
- // Update lifecyle phases immediately to recalculate the minimum scale limit for rotation anchoring, |
- // and to make sure that no lifecycle states are stale if this WebView is embedded in another one. |
+ // Update lifecyle phases immediately to recalculate the minimum scale limit |
+ // for rotation anchoring, and to make sure that no lifecycle states are |
+ // stale if this WebView is embedded in another one. |
updateAllLifecyclePhases(); |
} |
@@ -2096,8 +2113,8 @@ void WebViewImpl::updateAllLifecyclePhases() { |
if (m_pageColorOverlay) |
m_pageColorOverlay->graphicsLayer()->paint(nullptr); |
- // TODO(chrishtr): link highlights don't currently paint themselves, it's still driven by cc. |
- // Fix this. |
+ // TODO(chrishtr): link highlights don't currently paint themselves, it's |
+ // still driven by cc. Fix this. |
for (size_t i = 0; i < m_linkHighlights.size(); ++i) |
m_linkHighlights[i]->updateGeometry(); |
@@ -2235,7 +2252,8 @@ WebInputEventResult WebViewImpl::handleInputEvent( |
return WebInputEventResult::HandledSuppressed; |
} |
- // Report the event to be NOT processed by WebKit, so that the browser can handle it appropriately. |
+ // Report the event to be NOT processed by WebKit, so that the browser can |
+ // handle it appropriately. |
if (m_ignoreInputEvents) |
return WebInputEventResult::NotHandled; |
@@ -2388,7 +2406,8 @@ void WebViewImpl::setFocus(bool enable) { |
if (autofillClient) |
autofillClient->setIgnoreTextChanges(true); |
- // TODO(xiaochengh): The use of updateStyleAndLayoutIgnorePendingStylesheets |
+ // TODO(xiaochengh): The use of |
+ // updateStyleAndLayoutIgnorePendingStylesheets |
// needs to be audited. See http://crbug.com/590369 for more details. |
focusedFrame->document() |
->updateStyleAndLayoutIgnorePendingStylesheets(); |
@@ -2547,8 +2566,8 @@ WebTextInputInfo WebViewImpl::textInputInfo() { |
if (!focused->editor().canEdit()) |
return info; |
- // TODO(dglazkov): The use of updateStyleAndLayoutIgnorePendingStylesheets needs to be audited. |
- // see http://crbug.com/590369 for more details. |
+ // TODO(dglazkov): The use of updateStyleAndLayoutIgnorePendingStylesheets |
+ // needs to be audited. see http://crbug.com/590369 for more details. |
focused->document()->updateStyleAndLayoutIgnorePendingStylesheets(); |
DocumentLifecycle::DisallowTransitionScope disallowTransition( |
@@ -2596,8 +2615,9 @@ WebTextInputType WebViewImpl::textInputType() { |
return WebTextInputTypeNone; |
} |
- // It's important to preserve the equivalence of textInputInfo().type and textInputType(), |
- // so perform the same rootEditableElement() existence check here for consistency. |
+ // It's important to preserve the equivalence of textInputInfo().type and |
+ // textInputType(), so perform the same rootEditableElement() existence check |
+ // here for consistency. |
if (!focusedFrame->selection().selection().rootEditableElement()) |
return WebTextInputTypeNone; |
@@ -2996,7 +3016,8 @@ WebFrame* WebViewImpl::mainFrame() { |
WebFrame* WebViewImpl::findFrameByName(const WebString& name, |
WebFrame* relativeToFrame) { |
- // FIXME: Either this should only deal with WebLocalFrames or it should move to WebFrame. |
+ // FIXME: Either this should only deal with WebLocalFrames or it should move |
+ // to WebFrame. |
if (!relativeToFrame) |
relativeToFrame = mainFrame(); |
Frame* frame = toWebLocalFrameImpl(relativeToFrame)->frame(); |
@@ -3117,9 +3138,9 @@ bool WebViewImpl::scrollFocusedEditableElementIntoRect( |
!page()->frameHost().visualViewport().shouldDisableDesktopWorkarounds(); |
if (zoomInToLegibleScale) { |
- // When deciding whether to zoom in on a focused text box, we should decide not to |
- // zoom in if the user won't be able to zoom out. e.g if the textbox is within a |
- // touch-action: none container the user can't zoom back out. |
+ // When deciding whether to zoom in on a focused text box, we should decide |
+ // not to zoom in if the user won't be able to zoom out. e.g if the textbox |
+ // is within a touch-action: none container the user can't zoom back out. |
TouchAction action = TouchActionUtil::computeEffectiveTouchAction(*element); |
if (!(action & TouchActionPinchZoom)) |
zoomInToLegibleScale = false; |
@@ -3153,7 +3174,8 @@ void WebViewImpl::computeScaleAndScrollForFocusedNode(Node* focusedNode, |
WebRect caretInViewport, unusedEnd; |
selectionBounds(caretInViewport, unusedEnd); |
- // 'caretInDocument' is rect encompassing the blinking cursor relative to the root document. |
+ // 'caretInDocument' is rect encompassing the blinking cursor relative to the |
+ // root document. |
IntRect caretInDocument = mainFrameImpl()->frameView()->frameToContents( |
visualViewport.viewportToRootFrame(caretInViewport)); |
IntRect textboxRectInDocument = mainFrameImpl()->frameView()->frameToContents( |
@@ -3280,7 +3302,8 @@ double WebViewImpl::setZoomLevel(double zoomLevel) { |
: static_cast<float>(zoomLevelToZoomFactor(m_zoomLevel)); |
if (m_zoomFactorForDeviceScaleFactor) { |
if (m_compositorDeviceScaleFactorOverride) { |
- // Adjust the page's DSF so that DevicePixelRatio becomes m_zoomFactorForDeviceScaleFactor. |
+ // Adjust the page's DSF so that DevicePixelRatio becomes |
+ // m_zoomFactorForDeviceScaleFactor. |
page()->setDeviceScaleFactor(m_zoomFactorForDeviceScaleFactor / |
m_compositorDeviceScaleFactorOverride); |
zoomFactor *= m_compositorDeviceScaleFactorOverride; |
@@ -3509,9 +3532,10 @@ void WebViewImpl::refreshPageScaleFactorAfterLayout() { |
updateLayerTreeViewport(); |
// Changes to page-scale during layout may require an additional frame. |
- // We can't update the lifecycle here because we may be in the middle of layout in the |
- // caller of this method. |
- // TODO(chrishtr): clean all this up. All layout should happen in one lifecycle run (crbug.com/578239). |
+ // We can't update the lifecycle here because we may be in the middle of |
+ // layout in the caller of this method. |
+ // TODO(chrishtr): clean all this up. All layout should happen in one |
+ // lifecycle run (crbug.com/578239). |
if (mainFrameImpl()->frameView()->needsLayout()) |
mainFrameImpl()->frameWidget()->scheduleAnimation(); |
} |
@@ -3899,7 +3923,8 @@ WebDragOperation WebViewImpl::dragTargetDragEnterOrOver( |
DragOperation dropEffect = dragSession.operation; |
- // Mask the drop effect operation against the drag source's allowed operations. |
+ // Mask the drop effect operation against the drag source's allowed |
+ // operations. |
if (!(dropEffect & dragData.draggingSourceOperationMask())) |
dropEffect = DragOperationNone; |
@@ -4477,8 +4502,9 @@ void WebViewImpl::initializeLayerTreeView() { |
if (m_layerTreeView) |
m_page->layerTreeViewInitialized(*m_layerTreeView); |
- // FIXME: only unittests, click to play, Android printing, and printing (for headers and footers) |
- // make this assert necessary. We should make them not hit this code and then delete allowsBrokenNullLayerTreeView. |
+ // FIXME: only unittests, click to play, Android printing, and printing (for |
+ // headers and footers) make this assert necessary. We should make them not |
+ // hit this code and then delete allowsBrokenNullLayerTreeView. |
DCHECK(m_layerTreeView || !m_client || |
m_client->widgetClient()->allowsBrokenNullLayerTreeView()); |
@@ -4560,7 +4586,8 @@ bool WebViewImpl::detectContentOnTouch( |
if (!m_page->mainFrame()->isLocalFrame()) |
return false; |
- // Need a local copy of the hit test as setToShadowHostIfInUserAgentShadowRoot() will modify it. |
+ // Need a local copy of the hit test as |
+ // setToShadowHostIfInUserAgentShadowRoot() will modify it. |
HitTestResult touchHit = targetedEvent.hitTestResult(); |
touchHit.setToShadowHostIfInUserAgentShadowRoot(); |
@@ -4571,8 +4598,9 @@ bool WebViewImpl::detectContentOnTouch( |
if (!node || !node->isTextNode()) |
return false; |
- // Ignore when tapping on links or nodes listening to click events, unless the click event is on the |
- // body element, in which case it's unlikely that the original node itself was intended to be clickable. |
+ // Ignore when tapping on links or nodes listening to click events, unless |
+ // the click event is on the body element, in which case it's unlikely that |
+ // the original node itself was intended to be clickable. |
for (; node && !isHTMLBodyElement(*node); |
node = LayoutTreeBuilderTraversal::parent(*node)) { |
if (node->isLink() || node->willRespondToTouchEvents() || |
@@ -4584,8 +4612,8 @@ bool WebViewImpl::detectContentOnTouch( |
if (!intent.isValid()) |
return false; |
- // This code is called directly after hit test code, with no user code running in between, |
- // thus it is assumed that the frame pointer is non-null. |
+ // This code is called directly after hit test code, with no user code |
+ // running in between, thus it is assumed that the frame pointer is non-null. |
bool isMainFrame = node ? node->document().frame()->isMainFrame() : true; |
m_client->scheduleContentIntent(intent, isMainFrame); |
return true; |
@@ -4680,8 +4708,9 @@ void WebViewImpl::updatePageOverlays() { |
} |
float WebViewImpl::deviceScaleFactor() const { |
- // TODO(oshima): Investigate if this should return the ScreenInfo's scale factor rather than |
- // page's scale factor, which can be 1 in use-zoom-for-dsf mode. |
+ // TODO(oshima): Investigate if this should return the ScreenInfo's scale |
+ // factor rather than page's scale factor, which can be 1 in use-zoom-for-dsf |
+ // mode. |
if (!page()) |
return 1; |