OLD | NEW |
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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 #include "core/editing/FrameSelection.h" | 42 #include "core/editing/FrameSelection.h" |
43 #include "core/editing/InputMethodController.h" | 43 #include "core/editing/InputMethodController.h" |
44 #include "core/editing/TextIterator.h" | 44 #include "core/editing/TextIterator.h" |
45 #include "core/events/KeyboardEvent.h" | 45 #include "core/events/KeyboardEvent.h" |
46 #include "core/events/WheelEvent.h" | 46 #include "core/events/WheelEvent.h" |
47 #include "core/frame/EventHandlerRegistry.h" | 47 #include "core/frame/EventHandlerRegistry.h" |
48 #include "core/frame/FrameHost.h" | 48 #include "core/frame/FrameHost.h" |
49 #include "core/frame/FrameView.h" | 49 #include "core/frame/FrameView.h" |
50 #include "core/frame/LocalFrame.h" | 50 #include "core/frame/LocalFrame.h" |
51 #include "core/frame/PinchViewport.h" | 51 #include "core/frame/PinchViewport.h" |
| 52 #include "core/frame/RemoteFrame.h" |
52 #include "core/frame/Settings.h" | 53 #include "core/frame/Settings.h" |
53 #include "core/frame/SmartClip.h" | 54 #include "core/frame/SmartClip.h" |
54 #include "core/html/HTMLInputElement.h" | 55 #include "core/html/HTMLInputElement.h" |
55 #include "core/html/HTMLMediaElement.h" | 56 #include "core/html/HTMLMediaElement.h" |
56 #include "core/html/HTMLPlugInElement.h" | 57 #include "core/html/HTMLPlugInElement.h" |
57 #include "core/html/HTMLTextAreaElement.h" | 58 #include "core/html/HTMLTextAreaElement.h" |
58 #include "core/html/ime/InputMethodContext.h" | 59 #include "core/html/ime/InputMethodContext.h" |
59 #include "core/inspector/InspectorController.h" | 60 #include "core/inspector/InspectorController.h" |
60 #include "core/loader/DocumentLoader.h" | 61 #include "core/loader/DocumentLoader.h" |
61 #include "core/loader/FrameLoader.h" | 62 #include "core/loader/FrameLoader.h" |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
309 { | 310 { |
310 ASSERT(pageLoadDeferrerStack().size()); | 311 ASSERT(pageLoadDeferrerStack().size()); |
311 | 312 |
312 delete pageLoadDeferrerStack().last(); | 313 delete pageLoadDeferrerStack().last(); |
313 pageLoadDeferrerStack().removeLast(); | 314 pageLoadDeferrerStack().removeLast(); |
314 } | 315 } |
315 | 316 |
316 void WebViewImpl::setMainFrame(WebFrame* frame) | 317 void WebViewImpl::setMainFrame(WebFrame* frame) |
317 { | 318 { |
318 if (frame->isWebLocalFrame()) | 319 if (frame->isWebLocalFrame()) |
319 toWebLocalFrameImpl(frame)->initializeAsMainFrame(page()); | 320 toWebLocalFrameImpl(frame)->initializeWebCoreFrame(&page()->frameHost(),
0, nullAtom, nullAtom); |
320 else | 321 else { |
321 toWebRemoteFrameImpl(frame)->initializeAsMainFrame(page()); | 322 m_baseBackgroundColor = Color::darkGray; |
| 323 toWebRemoteFrameImpl(frame)->initializeWebCoreFrame(&page()->frameHost()
, 0, nullAtom); |
| 324 } |
322 } | 325 } |
323 | 326 |
324 void WebViewImpl::setAutofillClient(WebAutofillClient* autofillClient) | 327 void WebViewImpl::setAutofillClient(WebAutofillClient* autofillClient) |
325 { | 328 { |
326 m_autofillClient = autofillClient; | 329 m_autofillClient = autofillClient; |
327 } | 330 } |
328 | 331 |
329 void WebViewImpl::setDevToolsAgentClient(WebDevToolsAgentClient* devToolsClient) | 332 void WebViewImpl::setDevToolsAgentClient(WebDevToolsAgentClient* devToolsClient) |
330 { | 333 { |
331 if (devToolsClient) | 334 if (devToolsClient) |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 WebViewImpl::~WebViewImpl() | 442 WebViewImpl::~WebViewImpl() |
440 { | 443 { |
441 ASSERT(!m_page); | 444 ASSERT(!m_page); |
442 } | 445 } |
443 | 446 |
444 WebLocalFrameImpl* WebViewImpl::mainFrameImpl() | 447 WebLocalFrameImpl* WebViewImpl::mainFrameImpl() |
445 { | 448 { |
446 return m_page && m_page->mainFrame() && m_page->mainFrame()->isLocalFrame()
? WebLocalFrameImpl::fromFrame(m_page->deprecatedLocalMainFrame()) : 0; | 449 return m_page && m_page->mainFrame() && m_page->mainFrame()->isLocalFrame()
? WebLocalFrameImpl::fromFrame(m_page->deprecatedLocalMainFrame()) : 0; |
447 } | 450 } |
448 | 451 |
| 452 WebLocalFrameImpl* WebViewImpl::localRootFrame() |
| 453 { |
| 454 for (WebCore::Frame* frame = page()->mainFrame()->tree().top(); frame; frame =
frame->tree().traverseNext()) { |
| 455 if (frame->isLocalRoot()) { |
| 456 return WebLocalFrameImpl::fromFrame(toLocalFrame(frame)); |
| 457 } |
| 458 } |
| 459 return 0; |
| 460 } |
| 461 |
449 bool WebViewImpl::tabKeyCyclesThroughElements() const | 462 bool WebViewImpl::tabKeyCyclesThroughElements() const |
450 { | 463 { |
451 ASSERT(m_page); | 464 ASSERT(m_page); |
452 return m_page->tabKeyCyclesThroughElements(); | 465 return m_page->tabKeyCyclesThroughElements(); |
453 } | 466 } |
454 | 467 |
455 void WebViewImpl::setTabKeyCyclesThroughElements(bool value) | 468 void WebViewImpl::setTabKeyCyclesThroughElements(bool value) |
456 { | 469 { |
457 if (m_page) | 470 if (m_page) |
458 m_page->setTabKeyCyclesThroughElements(value); | 471 m_page->setTabKeyCyclesThroughElements(value); |
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1023 return false; | 1036 return false; |
1024 | 1037 |
1025 if (!suppress && !handler.keyEvent(evt)) | 1038 if (!suppress && !handler.keyEvent(evt)) |
1026 return keyEventDefault(event); | 1039 return keyEventDefault(event); |
1027 | 1040 |
1028 return true; | 1041 return true; |
1029 } | 1042 } |
1030 | 1043 |
1031 WebRect WebViewImpl::computeBlockBounds(const WebRect& rect, bool ignoreClipping
) | 1044 WebRect WebViewImpl::computeBlockBounds(const WebRect& rect, bool ignoreClipping
) |
1032 { | 1045 { |
1033 if (!mainFrameImpl()) | 1046 if (!mainFrameImpl()) { |
| 1047 printf("WVI::computeBlockBounds: null mainFrameImpl\n"); |
1034 return WebRect(); | 1048 return WebRect(); |
| 1049 } |
1035 | 1050 |
1036 // Use the rect-based hit test to find the node. | 1051 // Use the rect-based hit test to find the node. |
1037 IntPoint point = mainFrameImpl()->frameView()->windowToContents(IntPoint(rec
t.x, rect.y)); | 1052 IntPoint point = mainFrameImpl()->frameView()->windowToContents(IntPoint(rec
t.x, rect.y)); |
1038 HitTestRequest::HitTestRequestType hitType = HitTestRequest::ReadOnly | HitT
estRequest::Active | (ignoreClipping ? HitTestRequest::IgnoreClipping : 0); | 1053 HitTestRequest::HitTestRequestType hitType = HitTestRequest::ReadOnly | HitT
estRequest::Active | (ignoreClipping ? HitTestRequest::IgnoreClipping : 0); |
1039 HitTestResult result = mainFrameImpl()->frame()->eventHandler().hitTestResul
tAtPoint(point, hitType, IntSize(rect.width, rect.height)); | 1054 HitTestResult result = mainFrameImpl()->frame()->eventHandler().hitTestResul
tAtPoint(point, hitType, IntSize(rect.width, rect.height)); |
1040 | 1055 |
1041 Node* node = result.innerNonSharedNode(); | 1056 Node* node = result.innerNonSharedNode(); |
1042 if (!node) | 1057 if (!node) |
1043 return WebRect(); | 1058 return WebRect(); |
1044 | 1059 |
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1574 void WebViewImpl::resizePinchViewport(const WebSize& newSize) | 1589 void WebViewImpl::resizePinchViewport(const WebSize& newSize) |
1575 { | 1590 { |
1576 if (!pinchVirtualViewportEnabled()) | 1591 if (!pinchVirtualViewportEnabled()) |
1577 return; | 1592 return; |
1578 | 1593 |
1579 page()->frameHost().pinchViewport().setSize(newSize); | 1594 page()->frameHost().pinchViewport().setSize(newSize); |
1580 } | 1595 } |
1581 | 1596 |
1582 void WebViewImpl::resize(const WebSize& newSize) | 1597 void WebViewImpl::resize(const WebSize& newSize) |
1583 { | 1598 { |
1584 if (m_shouldAutoResize || m_size == newSize) | 1599 printf("WebViewImpl::resize: %dx%d\n", newSize.width, newSize.height); |
| 1600 if (m_shouldAutoResize || m_size == newSize) { |
| 1601 printf("WebViewImpl::resize: auto or same\n"); |
1585 return; | 1602 return; |
| 1603 } |
1586 | 1604 |
1587 FrameView* view = mainFrameImpl()->frameView(); | 1605 /* |
1588 if (!view) | 1606 if (!mainFrameImpl()) { |
| 1607 printf("WCI::resize: null mainFrameImpl\n"); |
1589 return; | 1608 return; |
| 1609 } |
| 1610 */ |
| 1611 WebLocalFrameImpl* mainFrameImpl = localRootFrame(); |
| 1612 |
| 1613 FrameView* view = mainFrameImpl->frameView(); |
| 1614 if (!view) { |
| 1615 printf("WebViewImpl::resize: no view\n"); |
| 1616 return; |
| 1617 } |
1590 | 1618 |
1591 WebSize oldSize = m_size; | 1619 WebSize oldSize = m_size; |
1592 float oldPageScaleFactor = pageScaleFactor(); | 1620 float oldPageScaleFactor = pageScaleFactor(); |
1593 int oldContentsWidth = contentsSize().width(); | 1621 int oldContentsWidth = contentsSize().width(); |
1594 | 1622 |
1595 m_size = newSize; | 1623 m_size = newSize; |
1596 | 1624 |
1597 bool shouldAnchorAndRescaleViewport = settings()->mainFrameResizesAreOrienta
tionChanges() | 1625 bool shouldAnchorAndRescaleViewport = settings()->mainFrameResizesAreOrienta
tionChanges() |
1598 && oldSize.width && oldContentsWidth && newSize.width != oldSize.width &
& !m_fullscreenController->isFullscreen(); | 1626 && oldSize.width && oldContentsWidth && newSize.width != oldSize.width &
& !m_fullscreenController->isFullscreen(); |
1599 | 1627 |
1600 ViewportAnchor viewportAnchor(&mainFrameImpl()->frame()->eventHandler()); | 1628 ViewportAnchor viewportAnchor(&mainFrameImpl->frame()->eventHandler()); |
1601 if (shouldAnchorAndRescaleViewport) { | 1629 if (shouldAnchorAndRescaleViewport) { |
1602 viewportAnchor.setAnchor(view->visibleContentRect(), | 1630 viewportAnchor.setAnchor(view->visibleContentRect(), |
1603 FloatSize(viewportAnchorXCoord, viewportAnchorY
Coord)); | 1631 FloatSize(viewportAnchorXCoord, viewportAnchorY
Coord)); |
1604 } | 1632 } |
1605 | 1633 |
1606 { | 1634 { |
1607 // Avoids unnecessary invalidations while various bits of state in FastT
extAutosizer are updated. | 1635 // Avoids unnecessary invalidations while various bits of state in FastT
extAutosizer are updated. |
1608 FastTextAutosizer::DeferUpdatePageInfo deferUpdatePageInfo(page()); | 1636 //FastTextAutosizer::DeferUpdatePageInfo deferUpdatePageInfo(page()); |
1609 | 1637 |
1610 m_pageScaleConstraintsSet.didChangeViewSize(m_size); | 1638 m_pageScaleConstraintsSet.didChangeViewSize(m_size); |
1611 | 1639 |
1612 updatePageDefinedViewportConstraints(mainFrameImpl()->frame()->document(
)->viewportDescription()); | 1640 updatePageDefinedViewportConstraints(mainFrameImpl->frame()->document()-
>viewportDescription()); |
1613 updateMainFrameLayoutSize(); | 1641 updateMainFrameLayoutSize(); |
1614 | 1642 |
1615 // If the virtual viewport pinch mode is enabled, the main frame will be
resized | 1643 // If the virtual viewport pinch mode is enabled, the main frame will be
resized |
1616 // after layout so it can be sized to the contentsSize. | 1644 // after layout so it can be sized to the contentsSize. |
1617 if (!pinchVirtualViewportEnabled() && mainFrameImpl()->frameView()) | 1645 if (!pinchVirtualViewportEnabled() && mainFrameImpl->frameView()) |
1618 mainFrameImpl()->frameView()->resize(m_size); | 1646 mainFrameImpl->frameView()->resize(m_size); |
1619 | 1647 |
1620 if (pinchVirtualViewportEnabled()) | 1648 if (pinchVirtualViewportEnabled()) |
1621 page()->frameHost().pinchViewport().setSize(m_size); | 1649 page()->frameHost().pinchViewport().setSize(m_size); |
1622 | 1650 |
1623 // When device emulation is enabled, device size values may change - the
y are | 1651 // When device emulation is enabled, device size values may change - the
y are |
1624 // usually set equal to the view size. These values are not considered v
iewport-dependent | 1652 // usually set equal to the view size. These values are not considered v
iewport-dependent |
1625 // (see MediaQueryExp::isViewportDependent), since they are only viewpor
t-dependent in emulation mode, | 1653 // (see MediaQueryExp::isViewportDependent), since they are only viewpor
t-dependent in emulation mode, |
1626 // and thus will not be invalidated in |FrameView::performPreLayoutTasks
|. | 1654 // and thus will not be invalidated in |FrameView::performPreLayoutTasks
|. |
1627 // Therefore we should force explicit media queries invalidation here. | 1655 // Therefore we should force explicit media queries invalidation here. |
1628 if (page()->inspectorController().deviceEmulationEnabled()) { | 1656 if (page()->inspectorController().deviceEmulationEnabled()) { |
1629 if (Document* document = mainFrameImpl()->frame()->document()) | 1657 if (Document* document = mainFrameImpl->frame()->document()) |
1630 document->mediaQueryAffectingValueChanged(); | 1658 document->mediaQueryAffectingValueChanged(); |
1631 } | 1659 } |
1632 } | 1660 } |
1633 | 1661 |
1634 if (settings()->viewportEnabled() && !m_fixedLayoutSizeLock) { | 1662 if (settings()->viewportEnabled() && !m_fixedLayoutSizeLock) { |
1635 // Relayout immediately to recalculate the minimum scale limit. | 1663 // Relayout immediately to recalculate the minimum scale limit. |
1636 if (view->needsLayout()) | 1664 if (view->needsLayout()) |
1637 view->layout(); | 1665 view->layout(); |
1638 | 1666 |
1639 if (shouldAnchorAndRescaleViewport) { | 1667 if (shouldAnchorAndRescaleViewport) { |
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2099 return false; | 2127 return false; |
2100 *location = plainTextRange.start(); | 2128 *location = plainTextRange.start(); |
2101 *length = plainTextRange.length(); | 2129 *length = plainTextRange.length(); |
2102 return true; | 2130 return true; |
2103 } | 2131 } |
2104 | 2132 |
2105 WebTextInputInfo WebViewImpl::textInputInfo() | 2133 WebTextInputInfo WebViewImpl::textInputInfo() |
2106 { | 2134 { |
2107 WebTextInputInfo info; | 2135 WebTextInputInfo info; |
2108 | 2136 |
2109 LocalFrame* focused = toLocalFrame(focusedWebCoreFrame()); | 2137 Frame* focusedFrame = focusedWebCoreFrame(); |
| 2138 if (focusedFrame->isRemoteFrame()) |
| 2139 return info; |
| 2140 |
| 2141 LocalFrame* focused = toLocalFrame(focusedFrame); |
2110 if (!focused) | 2142 if (!focused) |
2111 return info; | 2143 return info; |
2112 | 2144 |
2113 FrameSelection& selection = focused->selection(); | 2145 FrameSelection& selection = focused->selection(); |
2114 Node* node = selection.selection().rootEditableElement(); | 2146 Node* node = selection.selection().rootEditableElement(); |
2115 if (!node) | 2147 if (!node) |
2116 return info; | 2148 return info; |
2117 | 2149 |
2118 info.inputMode = inputModeOfFocusedElement(); | 2150 info.inputMode = inputModeOfFocusedElement(); |
2119 | 2151 |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2225 if (isHTMLTextAreaElement(*element)) { | 2257 if (isHTMLTextAreaElement(*element)) { |
2226 const HTMLTextAreaElement& textarea = toHTMLTextAreaElement(*element); | 2258 const HTMLTextAreaElement& textarea = toHTMLTextAreaElement(*element); |
2227 return textarea.fastGetAttribute(HTMLNames::inputmodeAttr).lower(); | 2259 return textarea.fastGetAttribute(HTMLNames::inputmodeAttr).lower(); |
2228 } | 2260 } |
2229 | 2261 |
2230 return WebString(); | 2262 return WebString(); |
2231 } | 2263 } |
2232 | 2264 |
2233 bool WebViewImpl::selectionBounds(WebRect& anchor, WebRect& focus) const | 2265 bool WebViewImpl::selectionBounds(WebRect& anchor, WebRect& focus) const |
2234 { | 2266 { |
2235 const LocalFrame* frame = toLocalFrame(focusedWebCoreFrame()); | 2267 const Frame* local_frame = focusedWebCoreFrame(); |
| 2268 if (local_frame && local_frame->isRemoteFrame()) |
| 2269 return false; |
| 2270 |
| 2271 const LocalFrame* frame = toLocalFrame(local_frame); |
2236 if (!frame) | 2272 if (!frame) |
2237 return false; | 2273 return false; |
2238 FrameSelection& selection = frame->selection(); | 2274 FrameSelection& selection = frame->selection(); |
2239 | 2275 |
2240 if (selection.isCaret()) { | 2276 if (selection.isCaret()) { |
2241 anchor = focus = selection.absoluteCaretBounds(); | 2277 anchor = focus = selection.absoluteCaretBounds(); |
2242 } else { | 2278 } else { |
2243 RefPtrWillBeRawPtr<Range> selectedRange = selection.toNormalizedRange(); | 2279 RefPtrWillBeRawPtr<Range> selectedRange = selection.toNormalizedRange(); |
2244 if (!selectedRange) | 2280 if (!selectedRange) |
2245 return false; | 2281 return false; |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2514 relativeToFrame = mainFrame(); | 2550 relativeToFrame = mainFrame(); |
2515 Frame* frame = toWebLocalFrameImpl(relativeToFrame)->frame(); | 2551 Frame* frame = toWebLocalFrameImpl(relativeToFrame)->frame(); |
2516 frame = frame->tree().find(name); | 2552 frame = frame->tree().find(name); |
2517 if (!frame || !frame->isLocalFrame()) | 2553 if (!frame || !frame->isLocalFrame()) |
2518 return 0; | 2554 return 0; |
2519 return WebLocalFrameImpl::fromFrame(toLocalFrame(frame)); | 2555 return WebLocalFrameImpl::fromFrame(toLocalFrame(frame)); |
2520 } | 2556 } |
2521 | 2557 |
2522 WebFrame* WebViewImpl::focusedFrame() | 2558 WebFrame* WebViewImpl::focusedFrame() |
2523 { | 2559 { |
2524 return WebLocalFrameImpl::fromFrame(toLocalFrame(focusedWebCoreFrame())); | 2560 Frame* frame = focusedWebCoreFrame(); |
| 2561 if (frame->isRemoteFrame()) |
| 2562 return WebRemoteFrameImpl::fromFrame(toRemoteFrame(*frame)); |
| 2563 return WebLocalFrameImpl::fromFrame(toLocalFrame(frame)); |
2525 } | 2564 } |
2526 | 2565 |
2527 void WebViewImpl::setFocusedFrame(WebFrame* frame) | 2566 void WebViewImpl::setFocusedFrame(WebFrame* frame) |
2528 { | 2567 { |
2529 if (!frame) { | 2568 if (!frame) { |
2530 // Clears the focused frame if any. | 2569 // Clears the focused frame if any. |
2531 Frame* focusedFrame = focusedWebCoreFrame(); | 2570 Frame* focusedFrame = focusedWebCoreFrame(); |
2532 if (focusedFrame && focusedFrame->isLocalFrame()) | 2571 if (focusedFrame && focusedFrame->isLocalFrame()) |
2533 toLocalFrame(focusedFrame)->selection().setFocused(false); | 2572 toLocalFrame(focusedFrame)->selection().setFocused(false); |
2534 return; | 2573 return; |
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2862 configureAutoResizeMode(); | 2901 configureAutoResizeMode(); |
2863 } | 2902 } |
2864 | 2903 |
2865 void WebViewImpl::setUserAgentPageScaleConstraints(PageScaleConstraints newConst
raints) | 2904 void WebViewImpl::setUserAgentPageScaleConstraints(PageScaleConstraints newConst
raints) |
2866 { | 2905 { |
2867 if (newConstraints == m_pageScaleConstraintsSet.userAgentConstraints()) | 2906 if (newConstraints == m_pageScaleConstraintsSet.userAgentConstraints()) |
2868 return; | 2907 return; |
2869 | 2908 |
2870 m_pageScaleConstraintsSet.setUserAgentConstraints(newConstraints); | 2909 m_pageScaleConstraintsSet.setUserAgentConstraints(newConstraints); |
2871 | 2910 |
2872 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) | 2911 WebLocalFrameImpl* mainFrameImpl = localRootFrame(); |
| 2912 if (!mainFrameImpl || !mainFrameImpl->frameView()) { |
| 2913 printf("WCI::setUserAgentPageScaleConstraints: %p\n", mainFrameImpl); |
2873 return; | 2914 return; |
| 2915 } |
2874 | 2916 |
2875 mainFrameImpl()->frameView()->setNeedsLayout(); | 2917 mainFrameImpl->frameView()->setNeedsLayout(); |
2876 } | 2918 } |
2877 | 2919 |
2878 void WebViewImpl::setInitialPageScaleOverride(float initialPageScaleFactorOverri
de) | 2920 void WebViewImpl::setInitialPageScaleOverride(float initialPageScaleFactorOverri
de) |
2879 { | 2921 { |
2880 PageScaleConstraints constraints = m_pageScaleConstraintsSet.userAgentConstr
aints(); | 2922 PageScaleConstraints constraints = m_pageScaleConstraintsSet.userAgentConstr
aints(); |
2881 constraints.initialScale = initialPageScaleFactorOverride; | 2923 constraints.initialScale = initialPageScaleFactorOverride; |
2882 | 2924 |
2883 if (constraints == m_pageScaleConstraintsSet.userAgentConstraints()) | 2925 if (constraints == m_pageScaleConstraintsSet.userAgentConstraints()) |
2884 return; | 2926 return; |
2885 | 2927 |
(...skipping 17 matching lines...) Expand all Loading... |
2903 constraints.maximumScale = m_pageScaleConstraintsSet.defaultConstraints(
).maximumScale; | 2945 constraints.maximumScale = m_pageScaleConstraintsSet.defaultConstraints(
).maximumScale; |
2904 } else { | 2946 } else { |
2905 constraints.minimumScale = -1; | 2947 constraints.minimumScale = -1; |
2906 constraints.maximumScale = -1; | 2948 constraints.maximumScale = -1; |
2907 } | 2949 } |
2908 setUserAgentPageScaleConstraints(constraints); | 2950 setUserAgentPageScaleConstraints(constraints); |
2909 } | 2951 } |
2910 | 2952 |
2911 void WebViewImpl::refreshPageScaleFactorAfterLayout() | 2953 void WebViewImpl::refreshPageScaleFactorAfterLayout() |
2912 { | 2954 { |
2913 if (!mainFrame() || !page() || !page()->mainFrame() || !page()->mainFrame()-
>isLocalFrame() || !page()->deprecatedLocalMainFrame()->view()) | 2955 /* |
| 2956 if (!mainFrame() || !page() || !page()->mainFrame() || !page()->mainFrame()-
>isLocalFrame() || !page()->deprecatedLocalMainFrame()->view()) { |
| 2957 printf("WebViewImpl::refreshPageScaleFactorAfterLayout: returning due to
framing\n"); |
2914 return; | 2958 return; |
2915 FrameView* view = page()->deprecatedLocalMainFrame()->view(); | 2959 } |
| 2960 */ |
| 2961 WebLocalFrameImpl* mainFrameImpl = localRootFrame(); |
| 2962 if (!mainFrameImpl->frameView()) { |
| 2963 printf("WebViewImpl::refreshPageScaleFactorAfterLayout: returning no vie
w\n"); |
| 2964 return; |
| 2965 } |
| 2966 FrameView* view = mainFrameImpl->frameView(); |
2916 | 2967 |
2917 updatePageDefinedViewportConstraints(mainFrameImpl()->frame()->document()->v
iewportDescription()); | 2968 updatePageDefinedViewportConstraints(mainFrameImpl->frame()->document()->vie
wportDescription()); |
2918 m_pageScaleConstraintsSet.computeFinalConstraints(); | 2969 m_pageScaleConstraintsSet.computeFinalConstraints(); |
2919 | 2970 |
2920 if (settings()->shrinksViewportContentToFit() && !m_fixedLayoutSizeLock) { | 2971 if (settings()->shrinksViewportContentToFit() && !m_fixedLayoutSizeLock) { |
2921 int verticalScrollbarWidth = 0; | 2972 int verticalScrollbarWidth = 0; |
2922 if (view->verticalScrollbar() && !view->verticalScrollbar()->isOverlaySc
rollbar()) | 2973 if (view->verticalScrollbar() && !view->verticalScrollbar()->isOverlaySc
rollbar()) |
2923 verticalScrollbarWidth = view->verticalScrollbar()->width(); | 2974 verticalScrollbarWidth = view->verticalScrollbar()->width(); |
2924 m_pageScaleConstraintsSet.adjustFinalConstraintsToContentsSize(contentsS
ize(), verticalScrollbarWidth); | 2975 m_pageScaleConstraintsSet.adjustFinalConstraintsToContentsSize(contentsS
ize(), verticalScrollbarWidth); |
2925 } | 2976 } |
2926 | 2977 |
2927 if (pinchVirtualViewportEnabled()) | 2978 if (pinchVirtualViewportEnabled()) |
2928 mainFrameImpl()->frameView()->resize(m_pageScaleConstraintsSet.mainFrame
Size(contentsSize())); | 2979 mainFrameImpl->frameView()->resize(m_pageScaleConstraintsSet.mainFrameSi
ze(contentsSize())); |
2929 | 2980 |
2930 float newPageScaleFactor = pageScaleFactor(); | 2981 float newPageScaleFactor = pageScaleFactor(); |
2931 if (m_pageScaleConstraintsSet.needsReset() && m_pageScaleConstraintsSet.fina
lConstraints().initialScale != -1) { | 2982 if (m_pageScaleConstraintsSet.needsReset() && m_pageScaleConstraintsSet.fina
lConstraints().initialScale != -1) { |
2932 newPageScaleFactor = m_pageScaleConstraintsSet.finalConstraints().initia
lScale; | 2983 newPageScaleFactor = m_pageScaleConstraintsSet.finalConstraints().initia
lScale; |
2933 m_pageScaleConstraintsSet.setNeedsReset(false); | 2984 m_pageScaleConstraintsSet.setNeedsReset(false); |
2934 } | 2985 } |
2935 setPageScaleFactor(newPageScaleFactor); | 2986 setPageScaleFactor(newPageScaleFactor); |
2936 | 2987 |
2937 updateLayerTreeViewport(); | 2988 updateLayerTreeViewport(); |
2938 | 2989 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3002 updateMainFrameLayoutSize(); | 3053 updateMainFrameLayoutSize(); |
3003 | 3054 |
3004 if (LocalFrame* frame = page()->deprecatedLocalMainFrame()) { | 3055 if (LocalFrame* frame = page()->deprecatedLocalMainFrame()) { |
3005 if (FastTextAutosizer* textAutosizer = frame->document()->fastTextAutosi
zer()) | 3056 if (FastTextAutosizer* textAutosizer = frame->document()->fastTextAutosi
zer()) |
3006 textAutosizer->updatePageInfoInAllFrames(); | 3057 textAutosizer->updatePageInfoInAllFrames(); |
3007 } | 3058 } |
3008 } | 3059 } |
3009 | 3060 |
3010 void WebViewImpl::updateMainFrameLayoutSize() | 3061 void WebViewImpl::updateMainFrameLayoutSize() |
3011 { | 3062 { |
3012 if (m_fixedLayoutSizeLock || m_shouldAutoResize || !mainFrameImpl()) | 3063 WebLocalFrameImpl* mainFrameImpl = localRootFrame(); |
| 3064 |
| 3065 if (m_fixedLayoutSizeLock || m_shouldAutoResize || !mainFrameImpl) { |
| 3066 printf("WCI::updateMainFrameLayoutSize: null mainFrameImpl\n"); |
3013 return; | 3067 return; |
| 3068 } |
3014 | 3069 |
3015 RefPtr<FrameView> view = mainFrameImpl()->frameView(); | 3070 RefPtr<FrameView> view = mainFrameImpl->frameView(); |
3016 if (!view) | 3071 if (!view) |
3017 return; | 3072 return; |
3018 | 3073 |
3019 WebSize layoutSize = m_size; | 3074 WebSize layoutSize = m_size; |
3020 | 3075 |
3021 if (settings()->viewportEnabled()) { | 3076 if (settings()->viewportEnabled()) { |
3022 layoutSize = flooredIntSize(m_pageScaleConstraintsSet.pageDefinedConstra
ints().layoutSize); | 3077 layoutSize = flooredIntSize(m_pageScaleConstraintsSet.pageDefinedConstra
ints().layoutSize); |
3023 | 3078 |
3024 bool textAutosizingEnabled = page()->settings().textAutosizingEnabled(); | 3079 bool textAutosizingEnabled = page()->settings().textAutosizingEnabled(); |
3025 if (textAutosizingEnabled && layoutSize.width != view->layoutSize().widt
h()) { | 3080 if (textAutosizingEnabled && layoutSize.width != view->layoutSize().widt
h()) { |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3348 if (!(dropEffect & dragData.draggingSourceOperationMask())) | 3403 if (!(dropEffect & dragData.draggingSourceOperationMask())) |
3349 dropEffect = DragOperationNone; | 3404 dropEffect = DragOperationNone; |
3350 | 3405 |
3351 m_dragOperation = static_cast<WebDragOperation>(dropEffect); | 3406 m_dragOperation = static_cast<WebDragOperation>(dropEffect); |
3352 | 3407 |
3353 return m_dragOperation; | 3408 return m_dragOperation; |
3354 } | 3409 } |
3355 | 3410 |
3356 void WebViewImpl::sendResizeEventAndRepaint() | 3411 void WebViewImpl::sendResizeEventAndRepaint() |
3357 { | 3412 { |
| 3413 WebLocalFrameImpl* mainFrameImpl = localRootFrame(); |
3358 // FIXME: This is wrong. The FrameView is responsible sending a resizeEvent | 3414 // FIXME: This is wrong. The FrameView is responsible sending a resizeEvent |
3359 // as part of layout. Layout is also responsible for sending invalidations | 3415 // as part of layout. Layout is also responsible for sending invalidations |
3360 // to the embedder. This method and all callers may be wrong. -- eseidel. | 3416 // to the embedder. This method and all callers may be wrong. -- eseidel. |
3361 if (mainFrameImpl()->frameView()) { | 3417 if (mainFrameImpl->frameView()) { |
3362 // Enqueues the resize event. | 3418 // Enqueues the resize event. |
3363 mainFrameImpl()->frame()->document()->enqueueResizeEvent(); | 3419 mainFrameImpl->frame()->document()->enqueueResizeEvent(); |
3364 } | 3420 } |
3365 | 3421 |
3366 if (m_client) { | 3422 if (m_client) { |
3367 if (isAcceleratedCompositingActive()) { | 3423 if (isAcceleratedCompositingActive()) { |
3368 updateLayerTreeViewport(); | 3424 updateLayerTreeViewport(); |
3369 } else { | 3425 } else { |
3370 WebRect damagedRect(0, 0, m_size.width, m_size.height); | 3426 WebRect damagedRect(0, 0, m_size.width, m_size.height); |
3371 m_client->didInvalidateRect(damagedRect); | 3427 m_client->didInvalidateRect(damagedRect); |
3372 } | 3428 } |
3373 } | 3429 } |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3605 m_pageScaleConstraintsSet.setNeedsReset(true); | 3661 m_pageScaleConstraintsSet.setNeedsReset(true); |
3606 | 3662 |
3607 // Make sure link highlight from previous page is cleared. | 3663 // Make sure link highlight from previous page is cleared. |
3608 m_linkHighlights.clear(); | 3664 m_linkHighlights.clear(); |
3609 endActiveFlingAnimation(); | 3665 endActiveFlingAnimation(); |
3610 m_userGestureObserved = false; | 3666 m_userGestureObserved = false; |
3611 } | 3667 } |
3612 | 3668 |
3613 void WebViewImpl::willInsertBody(WebLocalFrameImpl* webframe) | 3669 void WebViewImpl::willInsertBody(WebLocalFrameImpl* webframe) |
3614 { | 3670 { |
3615 if (webframe != mainFrameImpl()) | 3671 /* |
| 3672 if (webframe != mainFrameImpl()) { |
| 3673 printf("WCI::willInsertBody: frame != mainFrameImpl\n"); |
3616 return; | 3674 return; |
| 3675 } |
3617 | 3676 |
3618 if (!m_page->mainFrame()->isLocalFrame()) | 3677 if (!m_page->mainFrame()->isLocalFrame()) { |
| 3678 printf("WCI::willInsertBody: mainFrame not local\n"); |
3619 return; | 3679 return; |
| 3680 } |
| 3681 */ |
3620 | 3682 |
3621 // If we get to the <body> tag and we have no pending stylesheet and import
load, we | 3683 // If we get to the <body> tag and we have no pending stylesheet and import
load, we |
3622 // can be fairly confident we'll have something sensible to paint soon and | 3684 // can be fairly confident we'll have something sensible to paint soon and |
3623 // can turn off deferred commits. | 3685 // can turn off deferred commits. |
3624 if (m_page->deprecatedLocalMainFrame()->document()->isRenderingReady()) | 3686 if (webframe->frame()->document()->isRenderingReady()) |
3625 resumeTreeViewCommits(); | 3687 resumeTreeViewCommits(); |
3626 } | 3688 } |
3627 | 3689 |
3628 void WebViewImpl::resumeTreeViewCommits() | 3690 void WebViewImpl::resumeTreeViewCommits() |
3629 { | 3691 { |
3630 if (m_layerTreeViewCommitsDeferred) { | 3692 if (m_layerTreeViewCommitsDeferred) { |
3631 if (m_layerTreeView) | 3693 if (m_layerTreeView) |
3632 m_layerTreeView->setDeferCommits(false); | 3694 m_layerTreeView->setDeferCommits(false); |
3633 m_layerTreeViewCommitsDeferred = false; | 3695 m_layerTreeViewCommitsDeferred = false; |
3634 } | 3696 } |
3635 } | 3697 } |
3636 | 3698 |
3637 void WebViewImpl::layoutUpdated(WebLocalFrameImpl* webframe) | 3699 void WebViewImpl::layoutUpdated(WebLocalFrameImpl* webframe) |
3638 { | 3700 { |
3639 if (!m_client || webframe != mainFrameImpl()) | 3701 if (!m_client || !webframe->frame()->isLocalRoot()) |
3640 return; | 3702 return; |
3641 | 3703 |
3642 // If we finished a layout while in deferred commit mode, | 3704 // If we finished a layout while in deferred commit mode, |
3643 // that means it's time to start producing frames again so un-defer. | 3705 // that means it's time to start producing frames again so un-defer. |
3644 resumeTreeViewCommits(); | 3706 resumeTreeViewCommits(); |
3645 | 3707 |
3646 if (m_shouldAutoResize && mainFrameImpl()->frame() && mainFrameImpl()->frame
()->view()) { | 3708 if (m_shouldAutoResize && webframe->frame() && webframe->frame()->view()) { |
3647 WebSize frameSize = mainFrameImpl()->frame()->view()->frameRect().size()
; | 3709 WebSize frameSize = webframe->frame()->view()->frameRect().size(); |
3648 if (frameSize != m_size) { | 3710 if (frameSize != m_size) { |
3649 m_size = frameSize; | 3711 m_size = frameSize; |
3650 | 3712 |
3651 page()->frameHost().pinchViewport().setSize(m_size); | 3713 page()->frameHost().pinchViewport().setSize(m_size); |
3652 m_pageScaleConstraintsSet.didChangeViewSize(m_size); | 3714 m_pageScaleConstraintsSet.didChangeViewSize(m_size); |
3653 | 3715 |
3654 m_client->didAutoResize(m_size); | 3716 m_client->didAutoResize(m_size); |
3655 sendResizeEventAndRepaint(); | 3717 sendResizeEventAndRepaint(); |
3656 } | 3718 } |
3657 } | 3719 } |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3853 m_client->didInvalidateRect(rect); | 3915 m_client->didInvalidateRect(rect); |
3854 } | 3916 } |
3855 | 3917 |
3856 WebCore::GraphicsLayerFactory* WebViewImpl::graphicsLayerFactory() const | 3918 WebCore::GraphicsLayerFactory* WebViewImpl::graphicsLayerFactory() const |
3857 { | 3919 { |
3858 return m_graphicsLayerFactory.get(); | 3920 return m_graphicsLayerFactory.get(); |
3859 } | 3921 } |
3860 | 3922 |
3861 WebCore::RenderLayerCompositor* WebViewImpl::compositor() const | 3923 WebCore::RenderLayerCompositor* WebViewImpl::compositor() const |
3862 { | 3924 { |
| 3925 for (Frame* frame = page()->mainFrame()->tree().top(); frame; frame = frame-
>tree().traverseNext()) { |
| 3926 if (frame->isLocalRoot()) |
| 3927 return toLocalFrame(frame)->document()->renderView()->compositor(); |
| 3928 } |
| 3929 |
3863 if (!page() | 3930 if (!page() |
3864 || !page()->mainFrame() | 3931 || !page()->mainFrame() |
3865 || !page()->mainFrame()->isLocalFrame() | 3932 || !page()->mainFrame()->isLocalFrame() |
3866 || !page()->deprecatedLocalMainFrame()->document() | 3933 || !page()->deprecatedLocalMainFrame()->document() |
3867 || !page()->deprecatedLocalMainFrame()->document()->renderView()) | 3934 || !page()->deprecatedLocalMainFrame()->document()->renderView()) |
3868 return 0; | 3935 return 0; |
3869 return page()->deprecatedLocalMainFrame()->document()->renderView()->composi
tor(); | 3936 return page()->deprecatedLocalMainFrame()->document()->renderView()->composi
tor(); |
3870 } | 3937 } |
3871 | 3938 |
3872 void WebViewImpl::registerForAnimations(WebLayer* layer) | 3939 void WebViewImpl::registerForAnimations(WebLayer* layer) |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3974 return; | 4041 return; |
3975 | 4042 |
3976 bool oldProgrammaticScroll = frameView->inProgrammaticScroll(); | 4043 bool oldProgrammaticScroll = frameView->inProgrammaticScroll(); |
3977 frameView->setInProgrammaticScroll(programmaticScroll); | 4044 frameView->setInProgrammaticScroll(programmaticScroll); |
3978 frameView->notifyScrollPositionChanged(scrollPosition); | 4045 frameView->notifyScrollPositionChanged(scrollPosition); |
3979 frameView->setInProgrammaticScroll(oldProgrammaticScroll); | 4046 frameView->setInProgrammaticScroll(oldProgrammaticScroll); |
3980 } | 4047 } |
3981 | 4048 |
3982 void WebViewImpl::applyScrollAndScale(const WebSize& scrollDelta, float pageScal
eDelta) | 4049 void WebViewImpl::applyScrollAndScale(const WebSize& scrollDelta, float pageScal
eDelta) |
3983 { | 4050 { |
3984 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) | 4051 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) { |
| 4052 printf("WCI::applyScrollAndScale: null mainFrameImpl\n"); |
3985 return; | 4053 return; |
| 4054 } |
3986 | 4055 |
3987 if (pinchVirtualViewportEnabled()) { | 4056 if (pinchVirtualViewportEnabled()) { |
3988 if (pageScaleDelta != 1) { | 4057 if (pageScaleDelta != 1) { |
3989 // When the virtual viewport is enabled, offsets are already set for
us. | 4058 // When the virtual viewport is enabled, offsets are already set for
us. |
3990 setPageScaleFactor(pageScaleFactor() * pageScaleDelta); | 4059 setPageScaleFactor(pageScaleFactor() * pageScaleDelta); |
3991 m_doubleTapZoomPending = false; | 4060 m_doubleTapZoomPending = false; |
3992 } | 4061 } |
3993 | 4062 |
3994 return; | 4063 return; |
3995 } | 4064 } |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4153 const PageScaleConstraints& constraints = m_pageScaleConstraintsSet.pageDefi
nedConstraints(); | 4222 const PageScaleConstraints& constraints = m_pageScaleConstraintsSet.pageDefi
nedConstraints(); |
4154 | 4223 |
4155 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) | 4224 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) |
4156 return false; | 4225 return false; |
4157 | 4226 |
4158 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width | 4227 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width |
4159 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); | 4228 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); |
4160 } | 4229 } |
4161 | 4230 |
4162 } // namespace blink | 4231 } // namespace blink |
OLD | NEW |